@selvajs/selva 4.8.0 → 4.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (871) hide show
  1. package/build/client/_app/immutable/chunks/BL10Up5F.js +3 -0
  2. package/build/client/_app/immutable/chunks/BL10Up5F.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/BL10Up5F.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/BM_fE9b_2.js +1 -0
  5. package/build/client/_app/immutable/chunks/BM_fE9b_2.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BM_fE9b_2.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/B_Ic9tyC.js +1 -0
  8. package/build/client/_app/immutable/chunks/B_Ic9tyC.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/B_Ic9tyC.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/BnLKBtkg.js +2 -0
  11. package/build/client/_app/immutable/chunks/BnLKBtkg.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BnLKBtkg.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/C9Qx-PLA2.js +1 -0
  14. package/build/client/_app/immutable/chunks/C9Qx-PLA2.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/C9Qx-PLA2.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/CMX7mw6H2.js +1 -0
  17. package/build/client/_app/immutable/chunks/CMX7mw6H2.js.br +2 -0
  18. package/build/client/_app/immutable/chunks/CMX7mw6H2.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/CxzgSrIW.js +1 -0
  20. package/build/client/_app/immutable/chunks/CxzgSrIW.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/CxzgSrIW.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/uIFqYJM5.js +1 -0
  23. package/build/client/_app/immutable/chunks/uIFqYJM5.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/uIFqYJM5.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/app.BUpLH-DW.js +2 -0
  26. package/build/client/_app/immutable/entry/app.BUpLH-DW.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.BUpLH-DW.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.6GgCs433.js +1 -0
  29. package/build/client/_app/immutable/entry/start.6GgCs433.js.br +1 -0
  30. package/build/client/_app/immutable/entry/start.6GgCs433.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/1.CKGVXxg5.js +1 -0
  32. package/build/client/_app/immutable/nodes/1.CKGVXxg5.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.CKGVXxg5.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/11.BL0D8OHs.js +3 -0
  35. package/build/client/_app/immutable/nodes/11.BL0D8OHs.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/11.BL0D8OHs.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/13.BGB6620d.js +2 -0
  38. package/build/client/_app/immutable/nodes/13.BGB6620d.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/13.BGB6620d.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/14.CD4EJEs6.js +2 -0
  41. package/build/client/_app/immutable/nodes/14.CD4EJEs6.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/14.CD4EJEs6.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/15.ChpyZKAp.js +26 -0
  44. package/build/client/_app/immutable/nodes/15.ChpyZKAp.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/15.ChpyZKAp.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/16.BZ-zpUV6.js +6 -0
  47. package/build/client/_app/immutable/nodes/16.BZ-zpUV6.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/16.BZ-zpUV6.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/17.BJUMirXd.js +2 -0
  50. package/build/client/_app/immutable/nodes/17.BJUMirXd.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/17.BJUMirXd.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/19.DtQB3nKq.js +7 -0
  53. package/build/client/_app/immutable/nodes/19.DtQB3nKq.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/19.DtQB3nKq.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/2.DCswSm0G.js +1 -0
  56. package/build/client/_app/immutable/nodes/2.DCswSm0G.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/2.DCswSm0G.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/20.C9lBjCpj.js +2 -0
  59. package/build/client/_app/immutable/nodes/20.C9lBjCpj.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/20.C9lBjCpj.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/21.eqz8Wusz.js +5495 -0
  62. package/build/client/_app/immutable/nodes/21.eqz8Wusz.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/21.eqz8Wusz.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/22.DpWMS_fm.js +6 -0
  65. package/build/client/_app/immutable/nodes/22.DpWMS_fm.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/22.DpWMS_fm.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/24.Di6h13mH.js +16 -0
  68. package/build/client/_app/immutable/nodes/24.Di6h13mH.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/24.Di6h13mH.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/25.CQ00aGsk.js +6 -0
  71. package/build/client/_app/immutable/nodes/25.CQ00aGsk.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/25.CQ00aGsk.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/28.CyDthG9d.js +4 -0
  74. package/build/client/_app/immutable/nodes/28.CyDthG9d.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/28.CyDthG9d.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/29.BLJmVi5C.js +4 -0
  77. package/build/client/_app/immutable/nodes/29.BLJmVi5C.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/29.BLJmVi5C.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/3.9QlnqXGx.js +1 -0
  80. package/build/client/_app/immutable/nodes/3.9QlnqXGx.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/3.9QlnqXGx.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/30.CR1ABmHy.js +2 -0
  83. package/build/client/_app/immutable/nodes/30.CR1ABmHy.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/30.CR1ABmHy.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/31.48A1SOod.js +2 -0
  86. package/build/client/_app/immutable/nodes/31.48A1SOod.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/31.48A1SOod.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/5.B_w9CrPf.js +1 -0
  89. package/build/client/_app/immutable/nodes/5.B_w9CrPf.js.br +2 -0
  90. package/build/client/_app/immutable/nodes/5.B_w9CrPf.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/6.Cralqz4M.js +1 -0
  92. package/build/client/_app/immutable/nodes/6.Cralqz4M.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/6.Cralqz4M.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/7.V-zhVTSW.js +1 -0
  95. package/build/client/_app/immutable/nodes/7.V-zhVTSW.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/7.V-zhVTSW.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/8.aBrl8q3S.js +2 -0
  98. package/build/client/_app/immutable/nodes/8.aBrl8q3S.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/8.aBrl8q3S.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/9.BtzkuV9Y.js +1 -0
  101. package/build/client/_app/immutable/nodes/9.BtzkuV9Y.js.br +0 -0
  102. package/build/client/_app/immutable/nodes/9.BtzkuV9Y.js.gz +0 -0
  103. package/build/client/_app/version.json +1 -1
  104. package/build/client/_app/version.json.br +0 -0
  105. package/build/client/_app/version.json.gz +0 -0
  106. package/build/handler.js +4 -4
  107. package/build/index.js +4 -4
  108. package/build/server/chunks/chunks/AppHeader.js-CQTccUfs.js +281 -0
  109. package/build/server/chunks/chunks/AppHeader.js-CQTccUfs.js.map +1 -0
  110. package/build/server/chunks/chunks/SideNav.js-Hm0UnWsp.js +67 -0
  111. package/build/server/chunks/chunks/SideNav.js-Hm0UnWsp.js.map +1 -0
  112. package/build/server/chunks/chunks/UserChip.js-YaYwH7ie.js +1162 -0
  113. package/build/server/chunks/chunks/UserChip.js-YaYwH7ie.js.map +1 -0
  114. package/build/server/chunks/chunks/access.server.js-C6gDIb-c.js +459 -0
  115. package/build/server/chunks/chunks/access.server.js-C6gDIb-c.js.map +1 -0
  116. package/build/server/chunks/chunks/access2.server.js-D-nfNY1U.js +22 -0
  117. package/build/server/chunks/chunks/access2.server.js-D-nfNY1U.js.map +1 -0
  118. package/build/server/chunks/chunks/admin-config.js-c54REGei.js +3 -0
  119. package/build/server/chunks/chunks/admin-config.js-c54REGei.js.map +1 -0
  120. package/build/server/chunks/chunks/api-errors.js-BUVbivwy.js +139 -0
  121. package/build/server/chunks/chunks/api-errors.js-BUVbivwy.js.map +1 -0
  122. package/build/server/chunks/chunks/auth-bootstrap.server.js-DtQ_5hFU.js +152 -0
  123. package/build/server/chunks/chunks/auth-bootstrap.server.js-DtQ_5hFU.js.map +1 -0
  124. package/build/server/chunks/chunks/auth.server.js-f59WkAh8.js +2 -0
  125. package/build/server/chunks/chunks/auth.server.js-f59WkAh8.js.map +1 -0
  126. package/build/server/chunks/chunks/bootHealth.server.js-BbEMyT53.js +89 -0
  127. package/build/server/chunks/chunks/bootHealth.server.js-BbEMyT53.js.map +1 -0
  128. package/build/server/chunks/chunks/client.js-DxUBomyW.js +59 -0
  129. package/build/server/chunks/chunks/client.js-DxUBomyW.js.map +1 -0
  130. package/build/server/chunks/chunks/computeLimits.js-BvTv6qAx.js +44 -0
  131. package/build/server/chunks/chunks/computeLimits.js-BvTv6qAx.js.map +1 -0
  132. package/build/server/chunks/chunks/engine.server.js-BJfNYd9p.js +569 -0
  133. package/build/server/chunks/chunks/engine.server.js-BJfNYd9p.js.map +1 -0
  134. package/build/server/chunks/chunks/forms.js-VJbnfZ3f.js +2 -0
  135. package/build/server/chunks/chunks/forms.js-VJbnfZ3f.js.map +1 -0
  136. package/build/server/chunks/chunks/internal.js-CD7xpYXS.js.map +1 -1
  137. package/build/server/chunks/chunks/internal2.js-DcyJ01LA.js +224 -0
  138. package/build/server/chunks/chunks/internal2.js-DcyJ01LA.js.map +1 -0
  139. package/build/server/chunks/chunks/navigation.js-VJbnfZ3f.js +2 -0
  140. package/build/server/chunks/chunks/navigation.js-VJbnfZ3f.js.map +1 -0
  141. package/build/server/chunks/chunks/org-members.server.js-DaIrHne3.js +35 -0
  142. package/build/server/chunks/chunks/org-members.server.js-DaIrHne3.js.map +1 -0
  143. package/build/server/chunks/chunks/package.js-B8P_gc71.js +78 -0
  144. package/build/server/chunks/chunks/package.js-B8P_gc71.js.map +1 -0
  145. package/build/server/chunks/chunks/paths.js-CD_lRipr.js +19 -0
  146. package/build/server/chunks/chunks/paths.js-CD_lRipr.js.map +1 -0
  147. package/build/server/chunks/chunks/permissions.server.js-Bu0SNuw7.js +15 -0
  148. package/build/server/chunks/chunks/permissions.server.js-Bu0SNuw7.js.map +1 -0
  149. package/build/server/chunks/chunks/providers.server.js-v-TYZFyt.js +6137 -0
  150. package/build/server/chunks/chunks/providers.server.js-v-TYZFyt.js.map +1 -0
  151. package/build/server/chunks/chunks/resolve.server.js-CPqTZ31S.js +62 -0
  152. package/build/server/chunks/chunks/resolve.server.js-CPqTZ31S.js.map +1 -0
  153. package/build/server/chunks/chunks/route.js-PnwlkIz_.js +166 -0
  154. package/build/server/chunks/chunks/route.js-PnwlkIz_.js.map +1 -0
  155. package/build/server/chunks/chunks/schema.js-BeFDxIuz.js +1783 -0
  156. package/build/server/chunks/chunks/schema.js-BeFDxIuz.js.map +1 -0
  157. package/build/server/chunks/chunks/selfUpdate.server.js-vivDaiyu.js +149 -0
  158. package/build/server/chunks/chunks/selfUpdate.server.js-vivDaiyu.js.map +1 -0
  159. package/build/server/chunks/chunks/serverConfigWrite.js-BrfifT2y.js +80 -0
  160. package/build/server/chunks/chunks/serverConfigWrite.js-BrfifT2y.js.map +1 -0
  161. package/build/server/chunks/chunks/solve.server.js-DgzyagxZ.js +300 -0
  162. package/build/server/chunks/chunks/solve.server.js-DgzyagxZ.js.map +1 -0
  163. package/build/server/chunks/chunks/state.js-BPHoG9oF.js +76 -0
  164. package/build/server/chunks/chunks/state.js-BPHoG9oF.js.map +1 -0
  165. package/build/server/chunks/chunks/stores.js-6aOb4-EC.js +35 -0
  166. package/build/server/chunks/chunks/stores.js-6aOb4-EC.js.map +1 -0
  167. package/build/server/chunks/chunks/utils2.js-C-XHDwgu.js +56 -0
  168. package/build/server/chunks/chunks/utils2.js-C-XHDwgu.js.map +1 -0
  169. package/build/server/chunks/chunks/visibility.server.js-CmcZoY4n.js +107 -0
  170. package/build/server/chunks/chunks/visibility.server.js-CmcZoY4n.js.map +1 -0
  171. package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-C1Pvjlt9.js +84 -0
  172. package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-C1Pvjlt9.js.map +1 -0
  173. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-BfBVrbei.js +54 -0
  174. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-BfBVrbei.js.map +1 -0
  175. package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-CF_gGYrb.js +80 -0
  176. package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-CF_gGYrb.js.map +1 -0
  177. package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-JqumOQHs.js +51 -0
  178. package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-JqumOQHs.js.map +1 -0
  179. package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-C9xpl7lt.js +72 -0
  180. package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-C9xpl7lt.js.map +1 -0
  181. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-D3Jmy5C6.js +75 -0
  182. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-D3Jmy5C6.js.map +1 -0
  183. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-CPIUKCzv.js +34 -0
  184. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-CPIUKCzv.js.map +1 -0
  185. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-Kl-aOl9j.js +72 -0
  186. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-Kl-aOl9j.js.map +1 -0
  187. package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-DqpeCJO4.js +103 -0
  188. package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-DqpeCJO4.js.map +1 -0
  189. package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-DcEXp4xV.js +194 -0
  190. package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-DcEXp4xV.js.map +1 -0
  191. package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-C9xzM17v.js +90 -0
  192. package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-C9xzM17v.js.map +1 -0
  193. package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-D_-mhIQb.js +564 -0
  194. package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-D_-mhIQb.js.map +1 -0
  195. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-BSC76CAT.js +76 -0
  196. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-BSC76CAT.js.map +1 -0
  197. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-CaVpBuBQ.js +46 -0
  198. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-CaVpBuBQ.js.map +1 -0
  199. package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-BJE3gKju.js +87 -0
  200. package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-BJE3gKju.js.map +1 -0
  201. package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-ChOyF2kf.js +60 -0
  202. package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-ChOyF2kf.js.map +1 -0
  203. package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-eDEmxXyr.js +89 -0
  204. package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-eDEmxXyr.js.map +1 -0
  205. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-CYMO1cHZ.js +57 -0
  206. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-CYMO1cHZ.js.map +1 -0
  207. package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-CFYHCy0S.js +60 -0
  208. package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-CFYHCy0S.js.map +1 -0
  209. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BTpn8IpL.js +83 -0
  210. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BTpn8IpL.js.map +1 -0
  211. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-CUe8YZCc.js +61 -0
  212. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-CUe8YZCc.js.map +1 -0
  213. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-EG7LZXqu.js +63 -0
  214. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-EG7LZXqu.js.map +1 -0
  215. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-CNCcfcuy.js +37 -0
  216. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-CNCcfcuy.js.map +1 -0
  217. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-CUpO1gVq.js +33 -0
  218. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-CUpO1gVq.js.map +1 -0
  219. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-BWpaBjgH.js +39 -0
  220. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-BWpaBjgH.js.map +1 -0
  221. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-BGhYyrqf.js +39 -0
  222. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-BGhYyrqf.js.map +1 -0
  223. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-C-iUSnp1.js +81 -0
  224. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-C-iUSnp1.js.map +1 -0
  225. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-q9DwlOjR.js +0 -0
  226. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-q9DwlOjR.js.map +1 -0
  227. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-CabpXWRd.js +54 -0
  228. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-CabpXWRd.js.map +1 -0
  229. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-bMyPZPmz.js +48 -0
  230. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-bMyPZPmz.js.map +1 -0
  231. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-CYkYoA6m.js +40 -0
  232. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-CYkYoA6m.js.map +1 -0
  233. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Dsvb3Sl-.js +113 -0
  234. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Dsvb3Sl-.js.map +1 -0
  235. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-BPISNsBR.js +39 -0
  236. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-BPISNsBR.js.map +1 -0
  237. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-l7NlwI44.js +36 -0
  238. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-l7NlwI44.js.map +1 -0
  239. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-CyyUelje.js +30 -0
  240. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-CyyUelje.js.map +1 -0
  241. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-DkGevyA9.js +74 -0
  242. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-DkGevyA9.js.map +1 -0
  243. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DIRLfaTE.js +101 -0
  244. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DIRLfaTE.js.map +1 -0
  245. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-Begm_uHp.js +46 -0
  246. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-Begm_uHp.js.map +1 -0
  247. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-C9vUBp62.js +62 -0
  248. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-C9vUBp62.js.map +1 -0
  249. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-6oAdKzMg.js +33 -0
  250. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-6oAdKzMg.js.map +1 -0
  251. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-ZOX5o9KB.js +90 -0
  252. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-ZOX5o9KB.js.map +1 -0
  253. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-C113eSFX.js +84 -0
  254. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-C113eSFX.js.map +1 -0
  255. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-DzexdlJZ.js +51 -0
  256. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-DzexdlJZ.js.map +1 -0
  257. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BAEl_8uD.js +51 -0
  258. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BAEl_8uD.js.map +1 -0
  259. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-svuTrSwq.js +44 -0
  260. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-svuTrSwq.js.map +1 -0
  261. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DdJGUE5Y.js +83 -0
  262. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DdJGUE5Y.js.map +1 -0
  263. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-Dysdcwi1.js +45 -0
  264. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-Dysdcwi1.js.map +1 -0
  265. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-_vOS1wci.js +49 -0
  266. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-_vOS1wci.js.map +1 -0
  267. package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DGWVaWpQ.js +52 -0
  268. package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DGWVaWpQ.js.map +1 -0
  269. package/build/server/chunks/entries/hooks.server.js-_E6MbI_c.js +314 -0
  270. package/build/server/chunks/entries/hooks.server.js-_E6MbI_c.js.map +1 -0
  271. package/build/server/chunks/entries/pages/_error.svelte.js-DEhtcChG.js +36 -0
  272. package/build/server/chunks/entries/pages/_error.svelte.js-DEhtcChG.js.map +1 -0
  273. package/build/server/chunks/entries/pages/_layout.server.ts.js-Dp07XNA0.js +34 -0
  274. package/build/server/chunks/entries/pages/_layout.server.ts.js-Dp07XNA0.js.map +1 -0
  275. package/build/server/chunks/entries/pages/_page.svelte.js-DNEtQUHE.js +77 -0
  276. package/build/server/chunks/entries/pages/_page.svelte.js-DNEtQUHE.js.map +1 -0
  277. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-DwIHKeN8.js +110 -0
  278. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-DwIHKeN8.js.map +1 -0
  279. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CyCGGsyT.js +149 -0
  280. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CyCGGsyT.js.map +1 -0
  281. package/build/server/chunks/entries/pages/admin/_error.svelte.js-BGqojMrr.js +37 -0
  282. package/build/server/chunks/entries/pages/admin/_error.svelte.js-BGqojMrr.js.map +1 -0
  283. package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CRTzbc7x.js +31 -0
  284. package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CRTzbc7x.js.map +1 -0
  285. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DhEScsDH.js +122 -0
  286. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DhEScsDH.js.map +1 -0
  287. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BROrkAZP.js +75 -0
  288. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BROrkAZP.js.map +1 -0
  289. package/build/server/chunks/entries/pages/admin/_page.svelte.js-BekgcB0l.js +360 -0
  290. package/build/server/chunks/entries/pages/admin/_page.svelte.js-BekgcB0l.js.map +1 -0
  291. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-89kv1_nW.js +245 -0
  292. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-89kv1_nW.js.map +1 -0
  293. package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-DkG91TlC.js +74 -0
  294. package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-DkG91TlC.js.map +1 -0
  295. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-CR-Ld9Ug.js +673 -0
  296. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-CR-Ld9Ug.js.map +1 -0
  297. package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-DceOoHGQ.js +35 -0
  298. package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-DceOoHGQ.js.map +1 -0
  299. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-jGdNUGnF.js +86 -0
  300. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-jGdNUGnF.js.map +1 -0
  301. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-QUNOLvhC.js +617 -0
  302. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-QUNOLvhC.js.map +1 -0
  303. package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DdS0D3QU.js +42 -0
  304. package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DdS0D3QU.js.map +1 -0
  305. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-D80ndEut.js +283 -0
  306. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-D80ndEut.js.map +1 -0
  307. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-BOp5kgXX.js +86 -0
  308. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-BOp5kgXX.js.map +1 -0
  309. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-BjQ5dmgK.js +1477 -0
  310. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-BjQ5dmgK.js.map +1 -0
  311. package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-BIPYeSVT.js +70 -0
  312. package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-BIPYeSVT.js.map +1 -0
  313. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-CZZxedF5.js +683 -0
  314. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-CZZxedF5.js.map +1 -0
  315. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-CFMiA9J8.js +63 -0
  316. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-CFMiA9J8.js.map +1 -0
  317. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DjzgfGXo.js +62 -0
  318. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DjzgfGXo.js.map +1 -0
  319. package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-DFbT8kHI.js +527 -0
  320. package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-DFbT8kHI.js.map +1 -0
  321. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-CtFyOfZ1.js +90 -0
  322. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-CtFyOfZ1.js.map +1 -0
  323. package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-OnvaEYF6.js +118 -0
  324. package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-OnvaEYF6.js.map +1 -0
  325. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DCL8o58s.js +12881 -0
  326. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DCL8o58s.js.map +1 -0
  327. package/build/server/chunks/entries/pages/library/_page.server.ts.js-DnIUpNS9.js +48 -0
  328. package/build/server/chunks/entries/pages/library/_page.server.ts.js-DnIUpNS9.js.map +1 -0
  329. package/build/server/chunks/entries/pages/library/_page.svelte.js-_vfDar8o.js +322 -0
  330. package/build/server/chunks/entries/pages/library/_page.svelte.js-_vfDar8o.js.map +1 -0
  331. package/build/server/chunks/entries/pages/login/_page.server.ts.js-vzmoQCxM.js +80 -0
  332. package/build/server/chunks/entries/pages/login/_page.server.ts.js-vzmoQCxM.js.map +1 -0
  333. package/build/server/chunks/entries/pages/login/_page.svelte.js-BFIxgGvy.js +257 -0
  334. package/build/server/chunks/entries/pages/login/_page.svelte.js-BFIxgGvy.js.map +1 -0
  335. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-BsMR3_eR.js +50 -0
  336. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-BsMR3_eR.js.map +1 -0
  337. package/build/server/chunks/entries/pages/projects/_page.server.ts.js-CIf4sejr.js +92 -0
  338. package/build/server/chunks/entries/pages/projects/_page.server.ts.js-CIf4sejr.js.map +1 -0
  339. package/build/server/chunks/entries/pages/projects/_page.svelte.js-MA4UiLLV.js +3744 -0
  340. package/build/server/chunks/entries/pages/projects/_page.svelte.js-MA4UiLLV.js.map +1 -0
  341. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DtBehII7.js +114 -0
  342. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DtBehII7.js.map +1 -0
  343. package/build/server/chunks/entries/pages/setup/_page.svelte.js-DFQQzIjx.js +322 -0
  344. package/build/server/chunks/entries/pages/setup/_page.svelte.js-DFQQzIjx.js.map +1 -0
  345. package/build/server/chunks/entries/pages/team/_layout.server.ts.js-BWBPWQVM.js +28 -0
  346. package/build/server/chunks/entries/pages/team/_layout.server.ts.js-BWBPWQVM.js.map +1 -0
  347. package/build/server/chunks/entries/pages/team/_layout.svelte.js-DCQ9zyGE.js +163 -0
  348. package/build/server/chunks/entries/pages/team/_layout.svelte.js-DCQ9zyGE.js.map +1 -0
  349. package/build/server/chunks/entries/pages/team/_page.server.ts.js-DISUWmex.js +35 -0
  350. package/build/server/chunks/entries/pages/team/_page.server.ts.js-DISUWmex.js.map +1 -0
  351. package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-5JtGAl-H.js +42 -0
  352. package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-5JtGAl-H.js.map +1 -0
  353. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-_vgiG37I.js +594 -0
  354. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-_vgiG37I.js.map +1 -0
  355. package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-kxDzRw93.js +58 -0
  356. package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-kxDzRw93.js.map +1 -0
  357. package/build/server/chunks/entries/pages/team/members/_page.svelte.js--om0iNPO.js +540 -0
  358. package/build/server/chunks/entries/pages/team/members/_page.svelte.js--om0iNPO.js.map +1 -0
  359. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CfW0yM5E.js +42 -0
  360. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CfW0yM5E.js.map +1 -0
  361. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-B6CunpGp.js +437 -0
  362. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-B6CunpGp.js.map +1 -0
  363. package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-0rQeRhCJ.js +50 -0
  364. package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-0rQeRhCJ.js.map +1 -0
  365. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-CjUQIxJm.js +263 -0
  366. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-CjUQIxJm.js.map +1 -0
  367. package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-Bd7KjrWs.js +32 -0
  368. package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-Bd7KjrWs.js.map +1 -0
  369. package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-Q45uZGW_.js +16 -0
  370. package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-Q45uZGW_.js.map +1 -0
  371. package/build/server/chunks/handler-CoSA8thX.js +1206 -0
  372. package/build/server/chunks/handler-CoSA8thX.js.map +1 -0
  373. package/build/server/chunks/index.js-BqJMcjqI.js +3757 -0
  374. package/build/server/chunks/index.js-BqJMcjqI.js.map +1 -0
  375. package/build/server/chunks/manifest.js-CE5qqcI_.js +605 -0
  376. package/build/server/chunks/manifest.js-CE5qqcI_.js.map +1 -0
  377. package/build/server/chunks/nodes/0.js-CYJoUIei.js +25 -0
  378. package/build/server/chunks/nodes/0.js-CYJoUIei.js.map +1 -0
  379. package/build/server/chunks/nodes/1.js-D2VLaCem.js +9 -0
  380. package/build/server/chunks/nodes/1.js-D2VLaCem.js.map +1 -0
  381. package/build/server/chunks/nodes/10.js-Dvgn_jvH.js +29 -0
  382. package/build/server/chunks/nodes/10.js-Dvgn_jvH.js.map +1 -0
  383. package/build/server/chunks/nodes/11.js-CbbbTqSK.js +35 -0
  384. package/build/server/chunks/nodes/11.js-CbbbTqSK.js.map +1 -0
  385. package/build/server/chunks/nodes/12.js-Bn7DPopH.js +26 -0
  386. package/build/server/chunks/nodes/12.js-Bn7DPopH.js.map +1 -0
  387. package/build/server/chunks/nodes/13.js-5OBA3Kme.js +26 -0
  388. package/build/server/chunks/nodes/13.js-5OBA3Kme.js.map +1 -0
  389. package/build/server/chunks/nodes/14.js-Qlw_8PAX.js +26 -0
  390. package/build/server/chunks/nodes/14.js-Qlw_8PAX.js.map +1 -0
  391. package/build/server/chunks/nodes/15.js-DaoqcVFW.js +36 -0
  392. package/build/server/chunks/nodes/15.js-DaoqcVFW.js.map +1 -0
  393. package/build/server/chunks/nodes/16.js-CdmV1UbW.js +31 -0
  394. package/build/server/chunks/nodes/16.js-CdmV1UbW.js.map +1 -0
  395. package/build/server/chunks/nodes/17.js-CZ9jBSa2.js +9 -0
  396. package/build/server/chunks/nodes/17.js-CZ9jBSa2.js.map +1 -0
  397. package/build/server/chunks/nodes/18.js-D_-kjHJF.js +30 -0
  398. package/build/server/chunks/nodes/18.js-D_-kjHJF.js.map +1 -0
  399. package/build/server/chunks/nodes/19.js-CX2GlGsw.js +29 -0
  400. package/build/server/chunks/nodes/19.js-CX2GlGsw.js.map +1 -0
  401. package/build/server/chunks/nodes/2.js-l4ZioSXs.js +29 -0
  402. package/build/server/chunks/nodes/2.js-l4ZioSXs.js.map +1 -0
  403. package/build/server/chunks/nodes/20.js-DB-FeTDs.js +30 -0
  404. package/build/server/chunks/nodes/20.js-DB-FeTDs.js.map +1 -0
  405. package/build/server/chunks/nodes/21.js-2DTUfQUm.js +38 -0
  406. package/build/server/chunks/nodes/21.js-2DTUfQUm.js.map +1 -0
  407. package/build/server/chunks/nodes/22.js-DRC_Ay0A.js +30 -0
  408. package/build/server/chunks/nodes/22.js-DRC_Ay0A.js.map +1 -0
  409. package/build/server/chunks/nodes/24.js-DET-LrOj.js +29 -0
  410. package/build/server/chunks/nodes/24.js-DET-LrOj.js.map +1 -0
  411. package/build/server/chunks/nodes/25.js-Bk_aGxzo.js +30 -0
  412. package/build/server/chunks/nodes/25.js-Bk_aGxzo.js.map +1 -0
  413. package/build/server/chunks/nodes/26.js-DVINNLZf.js +26 -0
  414. package/build/server/chunks/nodes/26.js-DVINNLZf.js.map +1 -0
  415. package/build/server/chunks/nodes/28.js-Dlli8CtK.js +27 -0
  416. package/build/server/chunks/nodes/28.js-Dlli8CtK.js.map +1 -0
  417. package/build/server/chunks/nodes/29.js-set3QuoL.js +26 -0
  418. package/build/server/chunks/nodes/29.js-set3QuoL.js.map +1 -0
  419. package/build/server/chunks/nodes/3.js-DKKuVApp.js +9 -0
  420. package/build/server/chunks/nodes/3.js-DKKuVApp.js.map +1 -0
  421. package/build/server/chunks/nodes/30.js-Bas3kB3S.js +26 -0
  422. package/build/server/chunks/nodes/30.js-Bas3kB3S.js.map +1 -0
  423. package/build/server/chunks/nodes/31.js-LTjM9UYE.js +26 -0
  424. package/build/server/chunks/nodes/31.js-LTjM9UYE.js.map +1 -0
  425. package/build/server/chunks/nodes/32.js-DmCfd9qv.js +26 -0
  426. package/build/server/chunks/nodes/32.js-DmCfd9qv.js.map +1 -0
  427. package/build/server/chunks/nodes/33.js-D5HyMH65.js +26 -0
  428. package/build/server/chunks/nodes/33.js-D5HyMH65.js.map +1 -0
  429. package/build/server/chunks/nodes/5.js-DBnqyXT6.js +15 -0
  430. package/build/server/chunks/nodes/5.js-DBnqyXT6.js.map +1 -0
  431. package/build/server/chunks/nodes/6.js-B-jXlYZe.js +26 -0
  432. package/build/server/chunks/nodes/6.js-B-jXlYZe.js.map +1 -0
  433. package/build/server/chunks/nodes/7.js-B8uqopEM.js +12 -0
  434. package/build/server/chunks/nodes/7.js-B8uqopEM.js.map +1 -0
  435. package/build/server/chunks/nodes/8.js-BLHuhP3i.js +31 -0
  436. package/build/server/chunks/nodes/8.js-BLHuhP3i.js.map +1 -0
  437. package/build/server/chunks/nodes/9.js-cg4mHZXe.js +26 -0
  438. package/build/server/chunks/nodes/9.js-cg4mHZXe.js.map +1 -0
  439. package/package.json +3 -3
  440. package/build/client/_app/immutable/chunks/3tkRwrJ52.js +0 -1
  441. package/build/client/_app/immutable/chunks/3tkRwrJ52.js.br +0 -0
  442. package/build/client/_app/immutable/chunks/3tkRwrJ52.js.gz +0 -0
  443. package/build/client/_app/immutable/chunks/B7JNNC8z2.js +0 -1
  444. package/build/client/_app/immutable/chunks/B7JNNC8z2.js.br +0 -0
  445. package/build/client/_app/immutable/chunks/B7JNNC8z2.js.gz +0 -0
  446. package/build/client/_app/immutable/chunks/B89Z4IcG.js +0 -3
  447. package/build/client/_app/immutable/chunks/B89Z4IcG.js.br +0 -0
  448. package/build/client/_app/immutable/chunks/B89Z4IcG.js.gz +0 -0
  449. package/build/client/_app/immutable/chunks/BPKJrgth2.js +0 -1
  450. package/build/client/_app/immutable/chunks/BPKJrgth2.js.br +0 -2
  451. package/build/client/_app/immutable/chunks/BPKJrgth2.js.gz +0 -0
  452. package/build/client/_app/immutable/chunks/BSOEltYl.js +0 -1
  453. package/build/client/_app/immutable/chunks/BSOEltYl.js.br +0 -0
  454. package/build/client/_app/immutable/chunks/BSOEltYl.js.gz +0 -0
  455. package/build/client/_app/immutable/chunks/CXxUey52.js +0 -1
  456. package/build/client/_app/immutable/chunks/CXxUey52.js.br +0 -0
  457. package/build/client/_app/immutable/chunks/CXxUey52.js.gz +0 -0
  458. package/build/client/_app/immutable/chunks/Cp_nJDhZ.js +0 -1
  459. package/build/client/_app/immutable/chunks/Cp_nJDhZ.js.br +0 -0
  460. package/build/client/_app/immutable/chunks/Cp_nJDhZ.js.gz +0 -0
  461. package/build/client/_app/immutable/chunks/CtNkwgYI.js +0 -2
  462. package/build/client/_app/immutable/chunks/CtNkwgYI.js.br +0 -0
  463. package/build/client/_app/immutable/chunks/CtNkwgYI.js.gz +0 -0
  464. package/build/client/_app/immutable/entry/app.CJzCKocU.js +0 -2
  465. package/build/client/_app/immutable/entry/app.CJzCKocU.js.br +0 -0
  466. package/build/client/_app/immutable/entry/app.CJzCKocU.js.gz +0 -0
  467. package/build/client/_app/immutable/entry/start.CyrMWhtd.js +0 -1
  468. package/build/client/_app/immutable/entry/start.CyrMWhtd.js.br +0 -0
  469. package/build/client/_app/immutable/entry/start.CyrMWhtd.js.gz +0 -0
  470. package/build/client/_app/immutable/nodes/1.Cyj7yBIi.js +0 -1
  471. package/build/client/_app/immutable/nodes/1.Cyj7yBIi.js.br +0 -0
  472. package/build/client/_app/immutable/nodes/1.Cyj7yBIi.js.gz +0 -0
  473. package/build/client/_app/immutable/nodes/11.BIR1YJ--.js +0 -3
  474. package/build/client/_app/immutable/nodes/11.BIR1YJ--.js.br +0 -0
  475. package/build/client/_app/immutable/nodes/11.BIR1YJ--.js.gz +0 -0
  476. package/build/client/_app/immutable/nodes/13.N1Ynyxcp.js +0 -2
  477. package/build/client/_app/immutable/nodes/13.N1Ynyxcp.js.br +0 -0
  478. package/build/client/_app/immutable/nodes/13.N1Ynyxcp.js.gz +0 -0
  479. package/build/client/_app/immutable/nodes/14.DU6YhOCE.js +0 -2
  480. package/build/client/_app/immutable/nodes/14.DU6YhOCE.js.br +0 -0
  481. package/build/client/_app/immutable/nodes/14.DU6YhOCE.js.gz +0 -0
  482. package/build/client/_app/immutable/nodes/15.Cz7D52Vp.js +0 -26
  483. package/build/client/_app/immutable/nodes/15.Cz7D52Vp.js.br +0 -0
  484. package/build/client/_app/immutable/nodes/15.Cz7D52Vp.js.gz +0 -0
  485. package/build/client/_app/immutable/nodes/16.CfQiA2zS.js +0 -6
  486. package/build/client/_app/immutable/nodes/16.CfQiA2zS.js.br +0 -0
  487. package/build/client/_app/immutable/nodes/16.CfQiA2zS.js.gz +0 -0
  488. package/build/client/_app/immutable/nodes/17.CZwN61b3.js +0 -2
  489. package/build/client/_app/immutable/nodes/17.CZwN61b3.js.br +0 -0
  490. package/build/client/_app/immutable/nodes/17.CZwN61b3.js.gz +0 -0
  491. package/build/client/_app/immutable/nodes/19.CDfiTAZ1.js +0 -7
  492. package/build/client/_app/immutable/nodes/19.CDfiTAZ1.js.br +0 -0
  493. package/build/client/_app/immutable/nodes/19.CDfiTAZ1.js.gz +0 -0
  494. package/build/client/_app/immutable/nodes/2.BpK9LqEm.js +0 -1
  495. package/build/client/_app/immutable/nodes/2.BpK9LqEm.js.br +0 -0
  496. package/build/client/_app/immutable/nodes/2.BpK9LqEm.js.gz +0 -0
  497. package/build/client/_app/immutable/nodes/20.BioLc-e0.js +0 -2
  498. package/build/client/_app/immutable/nodes/20.BioLc-e0.js.br +0 -0
  499. package/build/client/_app/immutable/nodes/20.BioLc-e0.js.gz +0 -0
  500. package/build/client/_app/immutable/nodes/21.CEOBKk-i.js +0 -5495
  501. package/build/client/_app/immutable/nodes/21.CEOBKk-i.js.br +0 -0
  502. package/build/client/_app/immutable/nodes/21.CEOBKk-i.js.gz +0 -0
  503. package/build/client/_app/immutable/nodes/22.Bx_vY1jV.js +0 -6
  504. package/build/client/_app/immutable/nodes/22.Bx_vY1jV.js.br +0 -0
  505. package/build/client/_app/immutable/nodes/22.Bx_vY1jV.js.gz +0 -0
  506. package/build/client/_app/immutable/nodes/24.DZGkwtV9.js +0 -16
  507. package/build/client/_app/immutable/nodes/24.DZGkwtV9.js.br +0 -0
  508. package/build/client/_app/immutable/nodes/24.DZGkwtV9.js.gz +0 -0
  509. package/build/client/_app/immutable/nodes/25.CZKzg4GO.js +0 -6
  510. package/build/client/_app/immutable/nodes/25.CZKzg4GO.js.br +0 -0
  511. package/build/client/_app/immutable/nodes/25.CZKzg4GO.js.gz +0 -0
  512. package/build/client/_app/immutable/nodes/28.BuCUwYHk.js +0 -4
  513. package/build/client/_app/immutable/nodes/28.BuCUwYHk.js.br +0 -0
  514. package/build/client/_app/immutable/nodes/28.BuCUwYHk.js.gz +0 -0
  515. package/build/client/_app/immutable/nodes/29.DkJ_50bM.js +0 -4
  516. package/build/client/_app/immutable/nodes/29.DkJ_50bM.js.br +0 -0
  517. package/build/client/_app/immutable/nodes/29.DkJ_50bM.js.gz +0 -0
  518. package/build/client/_app/immutable/nodes/3.4qfstvub.js +0 -1
  519. package/build/client/_app/immutable/nodes/3.4qfstvub.js.br +0 -0
  520. package/build/client/_app/immutable/nodes/3.4qfstvub.js.gz +0 -0
  521. package/build/client/_app/immutable/nodes/30.BTlYYhJS.js +0 -2
  522. package/build/client/_app/immutable/nodes/30.BTlYYhJS.js.br +0 -0
  523. package/build/client/_app/immutable/nodes/30.BTlYYhJS.js.gz +0 -0
  524. package/build/client/_app/immutable/nodes/31.DZ7E0bGB.js +0 -2
  525. package/build/client/_app/immutable/nodes/31.DZ7E0bGB.js.br +0 -0
  526. package/build/client/_app/immutable/nodes/31.DZ7E0bGB.js.gz +0 -0
  527. package/build/client/_app/immutable/nodes/5.DKKcKxGj.js +0 -1
  528. package/build/client/_app/immutable/nodes/5.DKKcKxGj.js.br +0 -1
  529. package/build/client/_app/immutable/nodes/5.DKKcKxGj.js.gz +0 -0
  530. package/build/client/_app/immutable/nodes/6.Dre1kFx6.js +0 -1
  531. package/build/client/_app/immutable/nodes/6.Dre1kFx6.js.br +0 -0
  532. package/build/client/_app/immutable/nodes/6.Dre1kFx6.js.gz +0 -0
  533. package/build/client/_app/immutable/nodes/7.CSgxu4w1.js +0 -1
  534. package/build/client/_app/immutable/nodes/7.CSgxu4w1.js.br +0 -0
  535. package/build/client/_app/immutable/nodes/7.CSgxu4w1.js.gz +0 -0
  536. package/build/client/_app/immutable/nodes/8.D4r9Kn88.js +0 -2
  537. package/build/client/_app/immutable/nodes/8.D4r9Kn88.js.br +0 -0
  538. package/build/client/_app/immutable/nodes/8.D4r9Kn88.js.gz +0 -0
  539. package/build/client/_app/immutable/nodes/9.DzR-U0jZ.js +0 -1
  540. package/build/client/_app/immutable/nodes/9.DzR-U0jZ.js.br +0 -0
  541. package/build/client/_app/immutable/nodes/9.DzR-U0jZ.js.gz +0 -0
  542. package/build/server/chunks/chunks/AppHeader.js-PBVQjISh.js +0 -281
  543. package/build/server/chunks/chunks/AppHeader.js-PBVQjISh.js.map +0 -1
  544. package/build/server/chunks/chunks/SideNav.js-CcRtomnP.js +0 -67
  545. package/build/server/chunks/chunks/SideNav.js-CcRtomnP.js.map +0 -1
  546. package/build/server/chunks/chunks/UserChip.js-R6iuIfmI.js +0 -1162
  547. package/build/server/chunks/chunks/UserChip.js-R6iuIfmI.js.map +0 -1
  548. package/build/server/chunks/chunks/access.server.js-BIqHLNTG.js +0 -459
  549. package/build/server/chunks/chunks/access.server.js-BIqHLNTG.js.map +0 -1
  550. package/build/server/chunks/chunks/access2.server.js-DKoqwYbV.js +0 -22
  551. package/build/server/chunks/chunks/access2.server.js-DKoqwYbV.js.map +0 -1
  552. package/build/server/chunks/chunks/admin-config.js-ZOZ_4Sxt.js +0 -3
  553. package/build/server/chunks/chunks/admin-config.js-ZOZ_4Sxt.js.map +0 -1
  554. package/build/server/chunks/chunks/api-errors.js-lGrRv5Z5.js +0 -139
  555. package/build/server/chunks/chunks/api-errors.js-lGrRv5Z5.js.map +0 -1
  556. package/build/server/chunks/chunks/auth-bootstrap.server.js-BQuPhqXI.js +0 -152
  557. package/build/server/chunks/chunks/auth-bootstrap.server.js-BQuPhqXI.js.map +0 -1
  558. package/build/server/chunks/chunks/auth.server.js-hBh71kl8.js +0 -2
  559. package/build/server/chunks/chunks/auth.server.js-hBh71kl8.js.map +0 -1
  560. package/build/server/chunks/chunks/bootHealth.server.js-CQDTWIeG.js +0 -89
  561. package/build/server/chunks/chunks/bootHealth.server.js-CQDTWIeG.js.map +0 -1
  562. package/build/server/chunks/chunks/client.js-D7Ozo_ue.js +0 -59
  563. package/build/server/chunks/chunks/client.js-D7Ozo_ue.js.map +0 -1
  564. package/build/server/chunks/chunks/computeLimits.js-CjyfrWgI.js +0 -44
  565. package/build/server/chunks/chunks/computeLimits.js-CjyfrWgI.js.map +0 -1
  566. package/build/server/chunks/chunks/engine.server.js-DwKS379_.js +0 -569
  567. package/build/server/chunks/chunks/engine.server.js-DwKS379_.js.map +0 -1
  568. package/build/server/chunks/chunks/forms.js-CwY1eWR9.js +0 -2
  569. package/build/server/chunks/chunks/forms.js-CwY1eWR9.js.map +0 -1
  570. package/build/server/chunks/chunks/internal2.js-ZqYvyFbB.js +0 -224
  571. package/build/server/chunks/chunks/internal2.js-ZqYvyFbB.js.map +0 -1
  572. package/build/server/chunks/chunks/navigation.js-CwY1eWR9.js +0 -2
  573. package/build/server/chunks/chunks/navigation.js-CwY1eWR9.js.map +0 -1
  574. package/build/server/chunks/chunks/org-members.server.js-Zs5Zg-iO.js +0 -35
  575. package/build/server/chunks/chunks/org-members.server.js-Zs5Zg-iO.js.map +0 -1
  576. package/build/server/chunks/chunks/package.js-CNwVr7o6.js +0 -78
  577. package/build/server/chunks/chunks/package.js-CNwVr7o6.js.map +0 -1
  578. package/build/server/chunks/chunks/paths.js-Cvn_YdTk.js +0 -19
  579. package/build/server/chunks/chunks/paths.js-Cvn_YdTk.js.map +0 -1
  580. package/build/server/chunks/chunks/permissions.server.js-gy9Leepk.js +0 -15
  581. package/build/server/chunks/chunks/permissions.server.js-gy9Leepk.js.map +0 -1
  582. package/build/server/chunks/chunks/providers.server.js-CzELnNVS.js +0 -6087
  583. package/build/server/chunks/chunks/providers.server.js-CzELnNVS.js.map +0 -1
  584. package/build/server/chunks/chunks/resolve.server.js-Cjq6xWw3.js +0 -62
  585. package/build/server/chunks/chunks/resolve.server.js-Cjq6xWw3.js.map +0 -1
  586. package/build/server/chunks/chunks/route.js-DO7Xfn78.js +0 -166
  587. package/build/server/chunks/chunks/route.js-DO7Xfn78.js.map +0 -1
  588. package/build/server/chunks/chunks/schema.js-CUwAGh_h.js +0 -1758
  589. package/build/server/chunks/chunks/schema.js-CUwAGh_h.js.map +0 -1
  590. package/build/server/chunks/chunks/selfUpdate.server.js-BtsrSeY2.js +0 -149
  591. package/build/server/chunks/chunks/selfUpdate.server.js-BtsrSeY2.js.map +0 -1
  592. package/build/server/chunks/chunks/serverConfigWrite.js-8IFKC2tO.js +0 -80
  593. package/build/server/chunks/chunks/serverConfigWrite.js-8IFKC2tO.js.map +0 -1
  594. package/build/server/chunks/chunks/solve.server.js-Dt-r2KOk.js +0 -300
  595. package/build/server/chunks/chunks/solve.server.js-Dt-r2KOk.js.map +0 -1
  596. package/build/server/chunks/chunks/state.js-Dn49hjcL.js +0 -76
  597. package/build/server/chunks/chunks/state.js-Dn49hjcL.js.map +0 -1
  598. package/build/server/chunks/chunks/stores.js-BYUxI6vh.js +0 -35
  599. package/build/server/chunks/chunks/stores.js-BYUxI6vh.js.map +0 -1
  600. package/build/server/chunks/chunks/utils2.js-DsxvyW9R.js +0 -56
  601. package/build/server/chunks/chunks/utils2.js-DsxvyW9R.js.map +0 -1
  602. package/build/server/chunks/chunks/visibility.server.js-CrrA9vNX.js +0 -107
  603. package/build/server/chunks/chunks/visibility.server.js-CrrA9vNX.js.map +0 -1
  604. package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-UlGDNOLf.js +0 -84
  605. package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-UlGDNOLf.js.map +0 -1
  606. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-Bax0NcHg.js +0 -54
  607. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-Bax0NcHg.js.map +0 -1
  608. package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-CqiAdi_L.js +0 -80
  609. package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-CqiAdi_L.js.map +0 -1
  610. package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-CPZY-lgU.js +0 -51
  611. package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-CPZY-lgU.js.map +0 -1
  612. package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-DlS7j13Z.js +0 -72
  613. package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-DlS7j13Z.js.map +0 -1
  614. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-Ozx432d-.js +0 -75
  615. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-Ozx432d-.js.map +0 -1
  616. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-CC-BOBX6.js +0 -34
  617. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-CC-BOBX6.js.map +0 -1
  618. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-BVKz7YxH.js +0 -72
  619. package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-BVKz7YxH.js.map +0 -1
  620. package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-CL75fPB-.js +0 -103
  621. package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-CL75fPB-.js.map +0 -1
  622. package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-BfJeOVUi.js +0 -194
  623. package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-BfJeOVUi.js.map +0 -1
  624. package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-JSz3FP4Q.js +0 -90
  625. package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-JSz3FP4Q.js.map +0 -1
  626. package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-z4lzIm4M.js +0 -494
  627. package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-z4lzIm4M.js.map +0 -1
  628. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-BtVBlCMI.js +0 -76
  629. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-BtVBlCMI.js.map +0 -1
  630. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-hn8i_Rr8.js +0 -46
  631. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-hn8i_Rr8.js.map +0 -1
  632. package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-gKsv-3Vs.js +0 -87
  633. package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-gKsv-3Vs.js.map +0 -1
  634. package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-DNCMEU94.js +0 -60
  635. package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-DNCMEU94.js.map +0 -1
  636. package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-QWkYEfR7.js +0 -89
  637. package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-QWkYEfR7.js.map +0 -1
  638. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-CzEqghZb.js +0 -57
  639. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-CzEqghZb.js.map +0 -1
  640. package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-Db_rjAKv.js +0 -60
  641. package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-Db_rjAKv.js.map +0 -1
  642. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BNOFaLAz.js +0 -83
  643. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BNOFaLAz.js.map +0 -1
  644. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-iesinxnx.js +0 -55
  645. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-iesinxnx.js.map +0 -1
  646. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-Jh629e0z.js +0 -63
  647. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-Jh629e0z.js.map +0 -1
  648. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-aFEhcUqZ.js +0 -37
  649. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-aFEhcUqZ.js.map +0 -1
  650. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-Jz2UiXs8.js +0 -33
  651. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-Jz2UiXs8.js.map +0 -1
  652. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C-lQ9Hl6.js +0 -39
  653. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C-lQ9Hl6.js.map +0 -1
  654. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-BJs64l0S.js +0 -39
  655. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-BJs64l0S.js.map +0 -1
  656. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DZUoQtzf.js +0 -81
  657. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DZUoQtzf.js.map +0 -1
  658. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-CKU9yJft.js +0 -0
  659. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-CKU9yJft.js.map +0 -1
  660. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-BfjHfefE.js +0 -54
  661. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-BfjHfefE.js.map +0 -1
  662. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-CaHwUIH9.js +0 -48
  663. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-CaHwUIH9.js.map +0 -1
  664. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-BJtDvXuV.js +0 -40
  665. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-BJtDvXuV.js.map +0 -1
  666. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Cz8-djZT.js +0 -113
  667. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Cz8-djZT.js.map +0 -1
  668. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-CdHCYyXm.js +0 -39
  669. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-CdHCYyXm.js.map +0 -1
  670. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-CEFj-R6W.js +0 -36
  671. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-CEFj-R6W.js.map +0 -1
  672. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-CtIedZTn.js +0 -30
  673. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-CtIedZTn.js.map +0 -1
  674. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-CA2Vcptb.js +0 -74
  675. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-CA2Vcptb.js.map +0 -1
  676. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-Dd40kBK-.js +0 -101
  677. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-Dd40kBK-.js.map +0 -1
  678. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-BOvJCbd6.js +0 -46
  679. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-BOvJCbd6.js.map +0 -1
  680. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CuVOF0RI.js +0 -62
  681. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CuVOF0RI.js.map +0 -1
  682. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-Dh0cyF55.js +0 -33
  683. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-Dh0cyF55.js.map +0 -1
  684. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-hviBVpmY.js +0 -90
  685. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-hviBVpmY.js.map +0 -1
  686. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-BS1SDjkj.js +0 -84
  687. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-BS1SDjkj.js.map +0 -1
  688. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-CaqQX6rs.js +0 -51
  689. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-CaqQX6rs.js.map +0 -1
  690. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-Ca2upxO7.js +0 -51
  691. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-Ca2upxO7.js.map +0 -1
  692. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-WtMyL5bb.js +0 -44
  693. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-WtMyL5bb.js.map +0 -1
  694. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DXG9q3Ix.js +0 -83
  695. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DXG9q3Ix.js.map +0 -1
  696. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-DsgTCBOv.js +0 -45
  697. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-DsgTCBOv.js.map +0 -1
  698. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-D-yo48ig.js +0 -49
  699. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-D-yo48ig.js.map +0 -1
  700. package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DR-BHNkD.js +0 -52
  701. package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DR-BHNkD.js.map +0 -1
  702. package/build/server/chunks/entries/hooks.server.js-D9jPD6U6.js +0 -314
  703. package/build/server/chunks/entries/hooks.server.js-D9jPD6U6.js.map +0 -1
  704. package/build/server/chunks/entries/pages/_error.svelte.js-CcEXLTGe.js +0 -36
  705. package/build/server/chunks/entries/pages/_error.svelte.js-CcEXLTGe.js.map +0 -1
  706. package/build/server/chunks/entries/pages/_layout.server.ts.js-PdSOzWlA.js +0 -34
  707. package/build/server/chunks/entries/pages/_layout.server.ts.js-PdSOzWlA.js.map +0 -1
  708. package/build/server/chunks/entries/pages/_page.svelte.js-yukoMSQ5.js +0 -77
  709. package/build/server/chunks/entries/pages/_page.svelte.js-yukoMSQ5.js.map +0 -1
  710. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-Bi2qFFs3.js +0 -110
  711. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-Bi2qFFs3.js.map +0 -1
  712. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CVblClg6.js +0 -149
  713. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CVblClg6.js.map +0 -1
  714. package/build/server/chunks/entries/pages/admin/_error.svelte.js-CZruLQ3X.js +0 -37
  715. package/build/server/chunks/entries/pages/admin/_error.svelte.js-CZruLQ3X.js.map +0 -1
  716. package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-BVwZSvlT.js +0 -31
  717. package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-BVwZSvlT.js.map +0 -1
  718. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DhIk9mqo.js +0 -122
  719. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DhIk9mqo.js.map +0 -1
  720. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-CfbWMs6E.js +0 -75
  721. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-CfbWMs6E.js.map +0 -1
  722. package/build/server/chunks/entries/pages/admin/_page.svelte.js-CW7jAuXZ.js +0 -360
  723. package/build/server/chunks/entries/pages/admin/_page.svelte.js-CW7jAuXZ.js.map +0 -1
  724. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-skUM7hwl.js +0 -245
  725. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-skUM7hwl.js.map +0 -1
  726. package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-7UkHHcGq.js +0 -74
  727. package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-7UkHHcGq.js.map +0 -1
  728. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-Dyv3AH1H.js +0 -673
  729. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-Dyv3AH1H.js.map +0 -1
  730. package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-C2SF5IxL.js +0 -35
  731. package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-C2SF5IxL.js.map +0 -1
  732. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CZWOatqo.js +0 -86
  733. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CZWOatqo.js.map +0 -1
  734. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-CLZRG84U.js +0 -617
  735. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-CLZRG84U.js.map +0 -1
  736. package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-BWMIrkEl.js +0 -42
  737. package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-BWMIrkEl.js.map +0 -1
  738. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DQhpZiC5.js +0 -283
  739. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DQhpZiC5.js.map +0 -1
  740. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-CEQAQWBr.js +0 -86
  741. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-CEQAQWBr.js.map +0 -1
  742. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-BRdZZ2BZ.js +0 -1477
  743. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-BRdZZ2BZ.js.map +0 -1
  744. package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-UFisfOHB.js +0 -70
  745. package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-UFisfOHB.js.map +0 -1
  746. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-D6zajTTy.js +0 -683
  747. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-D6zajTTy.js.map +0 -1
  748. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-BGksk8u3.js +0 -63
  749. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-BGksk8u3.js.map +0 -1
  750. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-pJ1SY8Q-.js +0 -62
  751. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-pJ1SY8Q-.js.map +0 -1
  752. package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-BjenuS3W.js +0 -527
  753. package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-BjenuS3W.js.map +0 -1
  754. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-B-bOvPn4.js +0 -90
  755. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-B-bOvPn4.js.map +0 -1
  756. package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-Agbw_aKj.js +0 -118
  757. package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-Agbw_aKj.js.map +0 -1
  758. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-B2EvYnh8.js +0 -12881
  759. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-B2EvYnh8.js.map +0 -1
  760. package/build/server/chunks/entries/pages/library/_page.server.ts.js-D-CYvvZA.js +0 -48
  761. package/build/server/chunks/entries/pages/library/_page.server.ts.js-D-CYvvZA.js.map +0 -1
  762. package/build/server/chunks/entries/pages/library/_page.svelte.js-cMRXPcS8.js +0 -322
  763. package/build/server/chunks/entries/pages/library/_page.svelte.js-cMRXPcS8.js.map +0 -1
  764. package/build/server/chunks/entries/pages/login/_page.server.ts.js-DsvG2c6W.js +0 -80
  765. package/build/server/chunks/entries/pages/login/_page.server.ts.js-DsvG2c6W.js.map +0 -1
  766. package/build/server/chunks/entries/pages/login/_page.svelte.js-BcOk2r9k.js +0 -257
  767. package/build/server/chunks/entries/pages/login/_page.svelte.js-BcOk2r9k.js.map +0 -1
  768. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Ccgq0W13.js +0 -50
  769. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Ccgq0W13.js.map +0 -1
  770. package/build/server/chunks/entries/pages/projects/_page.server.ts.js-FZ1YJUlN.js +0 -92
  771. package/build/server/chunks/entries/pages/projects/_page.server.ts.js-FZ1YJUlN.js.map +0 -1
  772. package/build/server/chunks/entries/pages/projects/_page.svelte.js-lEWwRKUn.js +0 -3742
  773. package/build/server/chunks/entries/pages/projects/_page.svelte.js-lEWwRKUn.js.map +0 -1
  774. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-LpVVa0Wf.js +0 -114
  775. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-LpVVa0Wf.js.map +0 -1
  776. package/build/server/chunks/entries/pages/setup/_page.svelte.js-DVkEhidY.js +0 -322
  777. package/build/server/chunks/entries/pages/setup/_page.svelte.js-DVkEhidY.js.map +0 -1
  778. package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CDB0g9ce.js +0 -28
  779. package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CDB0g9ce.js.map +0 -1
  780. package/build/server/chunks/entries/pages/team/_layout.svelte.js-gUtXDxz7.js +0 -163
  781. package/build/server/chunks/entries/pages/team/_layout.svelte.js-gUtXDxz7.js.map +0 -1
  782. package/build/server/chunks/entries/pages/team/_page.server.ts.js-DRnbTz4I.js +0 -35
  783. package/build/server/chunks/entries/pages/team/_page.server.ts.js-DRnbTz4I.js.map +0 -1
  784. package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-C1P8ISLj.js +0 -42
  785. package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-C1P8ISLj.js.map +0 -1
  786. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-BodMogk0.js +0 -594
  787. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-BodMogk0.js.map +0 -1
  788. package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B34cranJ.js +0 -58
  789. package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B34cranJ.js.map +0 -1
  790. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-DJbqC59F.js +0 -540
  791. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-DJbqC59F.js.map +0 -1
  792. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-C4VBUsS4.js +0 -42
  793. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-C4VBUsS4.js.map +0 -1
  794. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-4ZR6R1_G.js +0 -437
  795. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-4ZR6R1_G.js.map +0 -1
  796. package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-r39AGYwQ.js +0 -50
  797. package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-r39AGYwQ.js.map +0 -1
  798. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-ntnD-Weh.js +0 -263
  799. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-ntnD-Weh.js.map +0 -1
  800. package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-Cdaz39h0.js +0 -32
  801. package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-Cdaz39h0.js.map +0 -1
  802. package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-aPI_LAnF.js +0 -16
  803. package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-aPI_LAnF.js.map +0 -1
  804. package/build/server/chunks/handler-kbTHjCpk.js +0 -1206
  805. package/build/server/chunks/handler-kbTHjCpk.js.map +0 -1
  806. package/build/server/chunks/index.js-C4Cv5-dt.js +0 -3757
  807. package/build/server/chunks/index.js-C4Cv5-dt.js.map +0 -1
  808. package/build/server/chunks/manifest.js-1QUlfMe3.js +0 -605
  809. package/build/server/chunks/manifest.js-1QUlfMe3.js.map +0 -1
  810. package/build/server/chunks/nodes/0.js-dxDhrjZo.js +0 -25
  811. package/build/server/chunks/nodes/0.js-dxDhrjZo.js.map +0 -1
  812. package/build/server/chunks/nodes/1.js-BoJ1oIDT.js +0 -9
  813. package/build/server/chunks/nodes/1.js-BoJ1oIDT.js.map +0 -1
  814. package/build/server/chunks/nodes/10.js-JosvHMNE.js +0 -29
  815. package/build/server/chunks/nodes/10.js-JosvHMNE.js.map +0 -1
  816. package/build/server/chunks/nodes/11.js-DjYOqtiK.js +0 -35
  817. package/build/server/chunks/nodes/11.js-DjYOqtiK.js.map +0 -1
  818. package/build/server/chunks/nodes/12.js-BxY9Yxld.js +0 -26
  819. package/build/server/chunks/nodes/12.js-BxY9Yxld.js.map +0 -1
  820. package/build/server/chunks/nodes/13.js-BMzoQ3I_.js +0 -26
  821. package/build/server/chunks/nodes/13.js-BMzoQ3I_.js.map +0 -1
  822. package/build/server/chunks/nodes/14.js-W18H-6tz.js +0 -26
  823. package/build/server/chunks/nodes/14.js-W18H-6tz.js.map +0 -1
  824. package/build/server/chunks/nodes/15.js-CDq8j73I.js +0 -36
  825. package/build/server/chunks/nodes/15.js-CDq8j73I.js.map +0 -1
  826. package/build/server/chunks/nodes/16.js-BIAmrH2B.js +0 -31
  827. package/build/server/chunks/nodes/16.js-BIAmrH2B.js.map +0 -1
  828. package/build/server/chunks/nodes/17.js-aV14P117.js +0 -9
  829. package/build/server/chunks/nodes/17.js-aV14P117.js.map +0 -1
  830. package/build/server/chunks/nodes/18.js-Bwuvo7N3.js +0 -30
  831. package/build/server/chunks/nodes/18.js-Bwuvo7N3.js.map +0 -1
  832. package/build/server/chunks/nodes/19.js-Dah1NCaT.js +0 -29
  833. package/build/server/chunks/nodes/19.js-Dah1NCaT.js.map +0 -1
  834. package/build/server/chunks/nodes/2.js-CRvLHPZN.js +0 -29
  835. package/build/server/chunks/nodes/2.js-CRvLHPZN.js.map +0 -1
  836. package/build/server/chunks/nodes/20.js-jjA_r5wN.js +0 -30
  837. package/build/server/chunks/nodes/20.js-jjA_r5wN.js.map +0 -1
  838. package/build/server/chunks/nodes/21.js-Bmcz9pou.js +0 -38
  839. package/build/server/chunks/nodes/21.js-Bmcz9pou.js.map +0 -1
  840. package/build/server/chunks/nodes/22.js-qe_oX2Zb.js +0 -30
  841. package/build/server/chunks/nodes/22.js-qe_oX2Zb.js.map +0 -1
  842. package/build/server/chunks/nodes/24.js-Dtbbahz1.js +0 -29
  843. package/build/server/chunks/nodes/24.js-Dtbbahz1.js.map +0 -1
  844. package/build/server/chunks/nodes/25.js-C3UH2znM.js +0 -30
  845. package/build/server/chunks/nodes/25.js-C3UH2znM.js.map +0 -1
  846. package/build/server/chunks/nodes/26.js-KkzBg6gV.js +0 -26
  847. package/build/server/chunks/nodes/26.js-KkzBg6gV.js.map +0 -1
  848. package/build/server/chunks/nodes/28.js-C1U6M_iI.js +0 -27
  849. package/build/server/chunks/nodes/28.js-C1U6M_iI.js.map +0 -1
  850. package/build/server/chunks/nodes/29.js-Bjcl-iAP.js +0 -26
  851. package/build/server/chunks/nodes/29.js-Bjcl-iAP.js.map +0 -1
  852. package/build/server/chunks/nodes/3.js-fUPPQvdr.js +0 -9
  853. package/build/server/chunks/nodes/3.js-fUPPQvdr.js.map +0 -1
  854. package/build/server/chunks/nodes/30.js-2aHbJ9yA.js +0 -26
  855. package/build/server/chunks/nodes/30.js-2aHbJ9yA.js.map +0 -1
  856. package/build/server/chunks/nodes/31.js-BY_vDdBk.js +0 -26
  857. package/build/server/chunks/nodes/31.js-BY_vDdBk.js.map +0 -1
  858. package/build/server/chunks/nodes/32.js-B3stPGo6.js +0 -26
  859. package/build/server/chunks/nodes/32.js-B3stPGo6.js.map +0 -1
  860. package/build/server/chunks/nodes/33.js-BgQ6WYhs.js +0 -26
  861. package/build/server/chunks/nodes/33.js-BgQ6WYhs.js.map +0 -1
  862. package/build/server/chunks/nodes/5.js-ADjQMHZk.js +0 -15
  863. package/build/server/chunks/nodes/5.js-ADjQMHZk.js.map +0 -1
  864. package/build/server/chunks/nodes/6.js-DhQBKwc9.js +0 -26
  865. package/build/server/chunks/nodes/6.js-DhQBKwc9.js.map +0 -1
  866. package/build/server/chunks/nodes/7.js-CNjSHQGV.js +0 -12
  867. package/build/server/chunks/nodes/7.js-CNjSHQGV.js.map +0 -1
  868. package/build/server/chunks/nodes/8.js-Dlc1pDlR.js +0 -31
  869. package/build/server/chunks/nodes/8.js-Dlc1pDlR.js.map +0 -1
  870. package/build/server/chunks/nodes/9.js-Do95ILPz.js +0 -26
  871. package/build/server/chunks/nodes/9.js-Do95ILPz.js.map +0 -1
@@ -1,3742 +0,0 @@
1
- import { X as head, a4 as escape_html, $ as ensure_array_like, T as derived, a9 as store_get, W as attr, a2 as attr_class, _ as stringify, aa as unsubscribe_stores, a6 as bind_props, Z as spread_props, a8 as props_id, a0 as attributes, a3 as attr_style } from '../../../chunks/server.js-BBls-Hb5.js';
2
- import '../../../chunks/src.js-BT_hYA9R.js';
3
- import { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from '../../../chunks/types.js-B_zdqlv_.js';
4
- import { f as createBitsAttrs, q as createId, a as boxWith, k as attachRef, v as boolToStrTrueOrUndef, p as mergeProps } from '../../../chunks/create-id.js-DIH9pJJX.js';
5
- import { I as Icon, c as cn } from '../../../chunks/utils3.js-AVgqWIzH.js';
6
- import { B as Button } from '../../../chunks/button.js-DnBIG_KP.js';
7
- import { A as Arrow_left } from '../../../chunks/arrow-left.js-CPYywNA_.js';
8
- import { C as Check } from '../../../chunks/check.js-DvgnbFrm.js';
9
- import { C as Circle } from '../../../chunks/circle.js-DWTV3XEV.js';
10
- import { C as Copy } from '../../../chunks/copy.js-NEXtqPba.js';
11
- import { D as Dialog_footer, U as Upload, F as File_up, P as Play } from '../../../chunks/dialog-footer.js-Bx_47qNK.js';
12
- import { F as Folder_open } from '../../../chunks/folder-open.js-CABtmima.js';
13
- import { S as Search, V as ViewToggle, D as DefinitionCard, a as Search$1, h as huesFor, m as monogram, f as formatUpdated, s as statusRing, b as statusDot } from '../../../chunks/DefinitionCard.js-DfFQHn2b.js';
14
- import { L as Link_2 } from '../../../chunks/link-2.js-Cnwn-RND.js';
15
- import { P as Plus } from '../../../chunks/plus.js-BhIdNyVx.js';
16
- import { S as Settings } from '../../../chunks/settings.js-CGr02WS8.js';
17
- import { T as Trash_2 } from '../../../chunks/trash-2.js-C7ZQNvja.js';
18
- import { T as Triangle_alert } from '../../../chunks/triangle-alert.js-DpFmhAmt.js';
19
- import { U as User_plus } from '../../../chunks/user-plus.js-nHq1U-k8.js';
20
- import { U as Users } from '../../../chunks/users.js-CuxrhRp_.js';
21
- import { X } from '../../../chunks/x.js-DdSw7Ync.js';
22
- import { R as Root, A as Alert_dialog_content, a as Alert_dialog_header, c as Alert_dialog_title, d as Alert_dialog_description, b as Alert_dialog_footer, e as Alert_dialog_cancel, f as Alert_dialog_action } from '../../../chunks/alert-dialog.js-s40OvooZ.js';
23
- import { R as Root$1, D as Dialog_content, a as Dialog_header, b as Dialog_title, c as Dialog_description } from '../../../chunks/dialog.js-DnpmoSI0.js';
24
- import { L as Label } from '../../../chunks/label.js-B7axeDWn.js';
25
- import { d as Textarea, T as Tabs, a as Tabs_list, c as Tabs_trigger, b as Tabs_content } from '../../../chunks/textarea.js-CdhkKhyv.js';
26
- import { i as invalidateAll, g as goto } from '../../../chunks/client.js-D7Ozo_ue.js';
27
- import { S as SectionHeader } from '../../../chunks/SectionHeader.js-ieB5RHqj.js';
28
- import { E as EmptyState } from '../../../chunks/EmptyState.js-BaEePE-_.js';
29
- import { I as Input } from '../../../chunks/input.js-Cthc3x18.js';
30
- import { B as Badge } from '../../../chunks/badge.js-Dcv6enEI.js';
31
- import { a as toast } from '../../../chunks/toast-state.svelte.js-Cc8lQ5R4.js';
32
- import { F as FilterableDropdown } from '../../../chunks/FilterableDropdown.js-B5HX8_Rc.js';
33
- import { p as page } from '../../../chunks/stores.js-BYUxI6vh.js';
34
- import { U as UserAvatar } from '../../../chunks/UserAvatar.js-NHTDeQUH.js';
35
- import '../../../chunks/uneval.js-sOjdN_Ot.js';
36
- import 'clsx';
37
- import 'zod';
38
- import 'tailwind-merge';
39
- import 'tailwind-variants';
40
- import '../../../chunks/arrow-right.js-Dh-0ZDhg.js';
41
- import '../../../chunks/server2.js-DB90hivZ.js';
42
- import '../../../chunks/star.js-BnAXo_AN.js';
43
- import '../../../chunks/noop.js-DB2aMVt8.js';
44
- import '../../../chunks/index-server2.js-UaiofxX-.js';
45
- import '../../../chunks/scroll-lock.js-Bda6N-Zt.js';
46
- import '../../../chunks/index-server.js-Dvtc4kCu.js';
47
- import '../../../chunks/events.js-B5CKX0i1.js';
48
- import '../../../chunks/dialog-description.js-CiTs-0vn.js';
49
- import '../../../chunks/shared.js-MtYdMgrs.js';
50
- import '@sveltejs/kit/internal';
51
- import '../../../chunks/exports.js-DBV1-Vnt.js';
52
- import '../../../chunks/routing.js-CKykGzgx.js';
53
- import '../../../chunks/internal2.js-ZqYvyFbB.js';
54
- import '../../../chunks/legacy-client.js-GIteUEz7.js';
55
- import '@sveltejs/kit/internal/server';
56
- import '../../../chunks/chevron-down.js-9Ga-rYOv.js';
57
-
58
- //#region ../../node_modules/.pnpm/@lucide+svelte@1.31.0_svelte@5.56.8_@typescript-eslint+types@8.67.0_/node_modules/@lucide/svelte/dist/icons/cloud-upload.svelte
59
- function Cloud_upload($$renderer, $$props) {
60
- let { $$slots, $$events, ...props } = $$props;
61
- Icon($$renderer, spread_props([
62
- { name: "cloud-upload" },
63
- props,
64
- { iconNode: [
65
- ["path", { "d": "M12 13v8" }],
66
- ["path", { "d": "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242" }],
67
- ["path", { "d": "m8 17 4-4 4 4" }]
68
- ] }
69
- ]));
70
- }
71
- //#endregion
72
- //#region ../../node_modules/.pnpm/@lucide+svelte@1.31.0_svelte@5.56.8_@typescript-eslint+types@8.67.0_/node_modules/@lucide/svelte/dist/icons/ellipsis.svelte
73
- function Ellipsis($$renderer, $$props) {
74
- let { $$slots, $$events, ...props } = $$props;
75
- Icon($$renderer, spread_props([
76
- { name: "ellipsis" },
77
- props,
78
- { iconNode: [
79
- ["circle", {
80
- "cx": "12",
81
- "cy": "12",
82
- "r": "1"
83
- }],
84
- ["circle", {
85
- "cx": "19",
86
- "cy": "12",
87
- "r": "1"
88
- }],
89
- ["circle", {
90
- "cx": "5",
91
- "cy": "12",
92
- "r": "1"
93
- }]
94
- ] }
95
- ]));
96
- }
97
- //#endregion
98
- //#region ../../node_modules/.pnpm/@lucide+svelte@1.31.0_svelte@5.56.8_@typescript-eslint+types@8.67.0_/node_modules/@lucide/svelte/dist/icons/image.svelte
99
- function Image($$renderer, $$props) {
100
- let { $$slots, $$events, ...props } = $$props;
101
- Icon($$renderer, spread_props([
102
- { name: "image" },
103
- props,
104
- { iconNode: [
105
- ["rect", {
106
- "width": "18",
107
- "height": "18",
108
- "x": "3",
109
- "y": "3",
110
- "rx": "2",
111
- "ry": "2"
112
- }],
113
- ["circle", {
114
- "cx": "9",
115
- "cy": "9",
116
- "r": "2"
117
- }],
118
- ["path", { "d": "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" }]
119
- ] }
120
- ]));
121
- }
122
- //#endregion
123
- //#region ../../node_modules/.pnpm/@lucide+svelte@1.31.0_svelte@5.56.8_@typescript-eslint+types@8.67.0_/node_modules/@lucide/svelte/dist/icons/share-2.svelte
124
- function Share_2($$renderer, $$props) {
125
- let { $$slots, $$events, ...props } = $$props;
126
- Icon($$renderer, spread_props([
127
- { name: "share-2" },
128
- props,
129
- { iconNode: [
130
- ["circle", {
131
- "cx": "18",
132
- "cy": "5",
133
- "r": "3"
134
- }],
135
- ["circle", {
136
- "cx": "6",
137
- "cy": "12",
138
- "r": "3"
139
- }],
140
- ["circle", {
141
- "cx": "18",
142
- "cy": "19",
143
- "r": "3"
144
- }],
145
- ["line", {
146
- "x1": "8.59",
147
- "x2": "15.42",
148
- "y1": "13.51",
149
- "y2": "17.49"
150
- }],
151
- ["line", {
152
- "x1": "15.41",
153
- "x2": "8.59",
154
- "y1": "6.51",
155
- "y2": "10.49"
156
- }]
157
- ] }
158
- ]));
159
- }
160
- //#endregion
161
- //#region ../../node_modules/.pnpm/bits-ui@2.18.1_@internationalized+date@3.12.3_@sveltejs+kit@2.70.2_@opentelemetry+api@1_a26f54c3d8574da67bd9c1d729376849/node_modules/bits-ui/dist/bits/separator/separator.svelte.js
162
- var separatorAttrs = createBitsAttrs({
163
- component: "separator",
164
- parts: ["root"]
165
- });
166
- var SeparatorRootState = class SeparatorRootState {
167
- static create(opts) {
168
- return new SeparatorRootState(opts);
169
- }
170
- opts;
171
- attachment;
172
- constructor(opts) {
173
- this.opts = opts;
174
- this.attachment = attachRef(opts.ref);
175
- }
176
- #props = derived(() => ({
177
- id: this.opts.id.current,
178
- role: this.opts.decorative.current ? "none" : "separator",
179
- "aria-orientation": this.opts.orientation.current,
180
- "aria-hidden": boolToStrTrueOrUndef(this.opts.decorative.current),
181
- "data-orientation": this.opts.orientation.current,
182
- [separatorAttrs.root]: "",
183
- ...this.attachment
184
- }));
185
- get props() {
186
- return this.#props();
187
- }
188
- set props($$value) {
189
- return this.#props($$value);
190
- }
191
- };
192
- //#endregion
193
- //#region ../../node_modules/.pnpm/bits-ui@2.18.1_@internationalized+date@3.12.3_@sveltejs+kit@2.70.2_@opentelemetry+api@1_a26f54c3d8574da67bd9c1d729376849/node_modules/bits-ui/dist/bits/separator/components/separator.svelte
194
- function Separator$1($$renderer, $$props) {
195
- $$renderer.component(($$renderer) => {
196
- const uid = props_id($$renderer);
197
- let { id = createId(uid), ref = null, child, children, decorative = false, orientation = "horizontal", $$slots, $$events, ...restProps } = $$props;
198
- const rootState = SeparatorRootState.create({
199
- ref: boxWith(() => ref, (v) => ref = v),
200
- id: boxWith(() => id),
201
- decorative: boxWith(() => decorative),
202
- orientation: boxWith(() => orientation)
203
- });
204
- const mergedProps = derived(() => mergeProps(restProps, rootState.props));
205
- if (child) {
206
- $$renderer.push("<!--[0-->");
207
- child($$renderer, { props: mergedProps() });
208
- $$renderer.push(`<!---->`);
209
- } else {
210
- $$renderer.push("<!--[-1-->");
211
- $$renderer.push(`<div${attributes({ ...mergedProps() })}>`);
212
- children?.($$renderer);
213
- $$renderer.push(`<!----></div>`);
214
- }
215
- $$renderer.push(`<!--]-->`);
216
- bind_props($$props, { ref });
217
- });
218
- }
219
- //#endregion
220
- //#region ../ui/dist/components/primitives/separator/separator.svelte
221
- function Separator($$renderer, $$props) {
222
- $$renderer.component(($$renderer) => {
223
- let { ref = null, class: className, "data-slot": dataSlot = "separator", $$slots, $$events, ...restProps } = $$props;
224
- let $$settled = true;
225
- let $$inner_renderer;
226
- function $$render_inner($$renderer) {
227
- if (Separator$1) {
228
- $$renderer.push("<!--[-->");
229
- Separator$1($$renderer, spread_props([
230
- {
231
- "data-slot": dataSlot,
232
- class: cn("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:min-h-full data-[orientation=vertical]:w-px", className)
233
- },
234
- restProps,
235
- {
236
- get ref() {
237
- return ref;
238
- },
239
- set ref($$value) {
240
- ref = $$value;
241
- $$settled = false;
242
- }
243
- }
244
- ]));
245
- $$renderer.push("<!--]-->");
246
- } else {
247
- $$renderer.push("<!--[!-->");
248
- $$renderer.push("<!--]-->");
249
- }
250
- }
251
- do {
252
- $$settled = true;
253
- $$inner_renderer = $$renderer.copy();
254
- $$render_inner($$inner_renderer);
255
- } while (!$$settled);
256
- $$renderer.subsume($$inner_renderer);
257
- bind_props($$props, { ref });
258
- });
259
- }
260
- //#endregion
261
- //#region ../ui/dist/components/primitives/drawer/Drawer.svelte
262
- function Drawer($$renderer, $$props) {
263
- $$renderer.component(($$renderer) => {
264
- let { onClose, width = "w-125", ariaLabel = "Close drawer", children } = $$props;
265
- $$renderer.push(`<div role="button" tabindex="-1"${attr("aria-label", ariaLabel)} class="inset-0 bg-black/30 fixed z-50"></div> <div${attr_class(`animate-in slide-in-from-right-4 top-0 right-0 fixed z-50 flex h-full border-border bg-background ${stringify(width)} flex-col overflow-y-auto border-l duration-150`)}>`);
266
- children($$renderer);
267
- $$renderer.push(`<!----></div>`);
268
- });
269
- }
270
- //#endregion
271
- //#region ../ui/dist/components/primitives/ImageUploadField.svelte
272
- function ImageUploadField($$renderer, $$props) {
273
- $$renderer.component(($$renderer) => {
274
- let { mode = "url", value = "", disabled = false, isUploading = false, hasFile = false, onModeChange, onUpload, onUrlChange, onFileSelected, inputRef = void 0 } = $$props;
275
- $$renderer.push(`<div class="space-y-2"><div class="gap-1 p-0.5 flex rounded-md border">`);
276
- Button($$renderer, {
277
- size: "sm",
278
- variant: mode !== "upload" ? "default" : "ghost",
279
- onclick: () => onModeChange?.("url"),
280
- class: "h-7 text-xs flex-1",
281
- children: ($$renderer) => {
282
- $$renderer.push(`<!---->URL`);
283
- },
284
- $$slots: { default: true }
285
- });
286
- $$renderer.push(`<!----> `);
287
- Button($$renderer, {
288
- size: "sm",
289
- variant: mode === "upload" ? "default" : "ghost",
290
- onclick: () => onModeChange?.("upload"),
291
- class: "h-7 text-xs flex-1",
292
- children: ($$renderer) => {
293
- $$renderer.push(`<!---->Upload File`);
294
- },
295
- $$slots: { default: true }
296
- });
297
- $$renderer.push(`<!----></div> `);
298
- if (mode === "upload") {
299
- $$renderer.push("<!--[0-->");
300
- $$renderer.push(`<div class="gap-2 sm:flex-row sm:items-center flex flex-col"><input type="file" accept="image/*"${attr("disabled", disabled, true)} class="h-10 px-3 py-2 text-sm file:text-sm file:font-medium flex flex-1 rounded-md border border-input bg-background file:border-0 file:bg-transparent focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:opacity-50"/> `);
301
- Button($$renderer, {
302
- size: "sm",
303
- disabled: disabled || !hasFile || isUploading,
304
- onclick: onUpload,
305
- class: "shrink-0",
306
- children: ($$renderer) => {
307
- Upload($$renderer, { class: "mr-2 h-4 w-4" });
308
- $$renderer.push(`<!----> <span class="sm:inline hidden">${escape_html(isUploading ? "Uploading…" : "Upload")}</span>`);
309
- },
310
- $$slots: { default: true }
311
- });
312
- $$renderer.push(`<!----></div>`);
313
- } else {
314
- $$renderer.push("<!--[-1-->");
315
- Input($$renderer, {
316
- type: "text",
317
- value,
318
- disabled,
319
- oninput: (e) => onUrlChange?.(e.target.value),
320
- placeholder: "https://..."
321
- });
322
- }
323
- $$renderer.push(`<!--]--></div>`);
324
- bind_props($$props, { inputRef });
325
- });
326
- }
327
- //#endregion
328
- //#region src/lib/components/definitions/ProjectPicker.svelte
329
- function ProjectPicker($$renderer, $$props) {
330
- $$renderer.component(($$renderer) => {
331
- let { projects, value, onChange, id, placeholder = "Select a project" } = $$props;
332
- const items = derived(() => projects.map((p) => ({
333
- id: p.id,
334
- label: p.name
335
- })));
336
- FilterableDropdown($$renderer, {
337
- items: items(),
338
- value,
339
- onChange,
340
- id,
341
- placeholder,
342
- triggerIcon: Folder_open,
343
- searchPlaceholder: "Filter projects"
344
- });
345
- });
346
- }
347
- //#endregion
348
- //#region src/lib/components/definitions/AddDefinitionDialog.svelte
349
- function AddDefinitionDialog($$renderer, $$props) {
350
- $$renderer.component(($$renderer) => {
351
- let { open = false, isAdding = false, projects = [], defaultProjectId, computeServers = [], defaultComputeServerId = null, showProjectDropdown = false, onOpenChange} = $$props;
352
- let displayName = "";
353
- let description = "";
354
- let category = "";
355
- let tags = [];
356
- let coverImage = "";
357
- let imageMode = "url";
358
- let selectedProjectId = "";
359
- let selectedComputeServerId = "";
360
- let imageInput = void 0;
361
- let imageHasFile = false;
362
- let validating = false;
363
- let validationError = null;
364
- let validationSchema = null;
365
- async function handleSubmit() {
366
- if (!displayName.trim()) {
367
- toast.error("Display name is required");
368
- return;
369
- }
370
- toast.error("A Grasshopper file is required");
371
- }
372
- function resetForm() {
373
- displayName = "";
374
- description = "";
375
- category = "";
376
- tags = [];
377
- coverImage = "";
378
- imageMode = "url";
379
- selectedProjectId = defaultProjectId ?? "";
380
- selectedComputeServerId = "";
381
- validating = false;
382
- validationError = null;
383
- validationSchema = null;
384
- if (imageInput) imageInput.value = "";
385
- imageHasFile = false;
386
- }
387
- function handleOpenChange(newOpen) {
388
- if (!newOpen) resetForm();
389
- onOpenChange?.(newOpen);
390
- }
391
- let $$settled = true;
392
- let $$inner_renderer;
393
- function $$render_inner($$renderer) {
394
- if (Root$1) {
395
- $$renderer.push("<!--[-->");
396
- Root$1($$renderer, {
397
- open,
398
- onOpenChange: handleOpenChange,
399
- children: ($$renderer) => {
400
- if (Dialog_content) {
401
- $$renderer.push("<!--[-->");
402
- Dialog_content($$renderer, {
403
- class: "max-w-xl",
404
- children: ($$renderer) => {
405
- if (Dialog_header) {
406
- $$renderer.push("<!--[-->");
407
- Dialog_header($$renderer, {
408
- children: ($$renderer) => {
409
- if (Dialog_title) {
410
- $$renderer.push("<!--[-->");
411
- Dialog_title($$renderer, {
412
- children: ($$renderer) => {
413
- $$renderer.push(`<!---->Add New Definition`);
414
- },
415
- $$slots: { default: true }
416
- });
417
- $$renderer.push("<!--]-->");
418
- } else {
419
- $$renderer.push("<!--[!-->");
420
- $$renderer.push("<!--]-->");
421
- }
422
- $$renderer.push(` `);
423
- if (Dialog_description) {
424
- $$renderer.push("<!--[-->");
425
- Dialog_description($$renderer, {
426
- children: ($$renderer) => {
427
- $$renderer.push(`<!---->Upload a Grasshopper file and fill in the metadata.`);
428
- },
429
- $$slots: { default: true }
430
- });
431
- $$renderer.push("<!--]-->");
432
- } else {
433
- $$renderer.push("<!--[!-->");
434
- $$renderer.push("<!--]-->");
435
- }
436
- },
437
- $$slots: { default: true }
438
- });
439
- $$renderer.push("<!--]-->");
440
- } else {
441
- $$renderer.push("<!--[!-->");
442
- $$renderer.push("<!--]-->");
443
- }
444
- $$renderer.push(` <div class="space-y-4">`);
445
- if (showProjectDropdown || computeServers.length > 0) {
446
- $$renderer.push("<!--[0-->");
447
- $$renderer.push(`<div${attr_class(`grid gap-3 ${showProjectDropdown && computeServers.length > 0 ? "sm:grid-cols-2" : ""}`)}>`);
448
- if (showProjectDropdown) {
449
- $$renderer.push("<!--[0-->");
450
- $$renderer.push(`<div class="space-y-1">`);
451
- Label($$renderer, {
452
- for: "new-project",
453
- children: ($$renderer) => {
454
- $$renderer.push(`<!---->Project`);
455
- },
456
- $$slots: { default: true }
457
- });
458
- $$renderer.push(`<!----> `);
459
- ProjectPicker($$renderer, {
460
- id: "new-project",
461
- projects,
462
- value: selectedProjectId,
463
- onChange: (id) => selectedProjectId = id
464
- });
465
- $$renderer.push(`<!----></div>`);
466
- } else if (defaultProjectId) {
467
- $$renderer.push("<!--[1-->");
468
- const selectedProject = projects.find((p) => p.id === defaultProjectId);
469
- $$renderer.push(`<div class="space-y-1">`);
470
- Label($$renderer, {
471
- children: ($$renderer) => {
472
- $$renderer.push(`<!---->Project`);
473
- },
474
- $$slots: { default: true }
475
- });
476
- $$renderer.push(`<!----> <div class="bg-muted rounded-md px-3 py-2"><p class="text-sm font-medium">${escape_html(selectedProject?.name ?? "Unknown")}</p></div></div>`);
477
- } else $$renderer.push("<!--[-1-->");
478
- $$renderer.push(`<!--]--> `);
479
- if (computeServers.length > 0) {
480
- $$renderer.push("<!--[0-->");
481
- $$renderer.push(`<div class="space-y-1">`);
482
- Label($$renderer, {
483
- for: "new-server",
484
- children: ($$renderer) => {
485
- $$renderer.push(`<!---->Compute Server`);
486
- },
487
- $$slots: { default: true }
488
- });
489
- $$renderer.push(`<!----> `);
490
- $$renderer.select({
491
- id: "new-server",
492
- value: selectedComputeServerId || (defaultComputeServerId ?? ""),
493
- onchange: (e) => {
494
- const picked = e.currentTarget.value;
495
- selectedComputeServerId = picked === defaultComputeServerId ? "" : picked;
496
- },
497
- class: "border-input bg-background focus-visible:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none"
498
- }, ($$renderer) => {
499
- $$renderer.push(`<!--[-->`);
500
- const each_array = ensure_array_like(computeServers);
501
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
502
- let s = each_array[$$index];
503
- $$renderer.option({ value: s.id }, ($$renderer) => {
504
- $$renderer.push(`${escape_html(s.label)}${escape_html(s.id === defaultComputeServerId ? " (Default)" : "")}`);
505
- });
506
- }
507
- $$renderer.push(`<!--]-->`);
508
- });
509
- $$renderer.push(`</div>`);
510
- } else $$renderer.push("<!--[-1-->");
511
- $$renderer.push(`<!--]--></div>`);
512
- } else $$renderer.push("<!--[-1-->");
513
- $$renderer.push(`<!--]--> <div class="space-y-2">`);
514
- Label($$renderer, {
515
- for: "new-file",
516
- children: ($$renderer) => {
517
- $$renderer.push(`<!---->Grasshopper File <span class="text-destructive">*</span>`);
518
- },
519
- $$slots: { default: true }
520
- });
521
- $$renderer.push(`<!----> <input id="new-file" type="file" accept=".gh,.ghx" class="border-input bg-background focus-visible:ring-ring flex h-10 w-full rounded-md border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-2 focus-visible:outline-none disabled:opacity-50"/> `);
522
- if (validating) {
523
- $$renderer.push("<!--[0-->");
524
- $$renderer.push(`<p class="text-muted-foreground flex items-center gap-2 text-xs"><svg class="h-3 w-3 animate-spin" viewBox="0 0 24 24" fill="none"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v8z"></path></svg> Validating definition…</p>`);
525
- } else if (validationError) {
526
- $$renderer.push("<!--[1-->");
527
- $$renderer.push(`<div class="border-destructive/40 bg-destructive/5 rounded-md border p-3"><p class="text-destructive text-xs font-medium">Validation failed</p> <p class="text-destructive/80 mt-0.5 text-xs">${escape_html(validationError)}</p> <p class="text-destructive/60 mt-1 text-xs">This definition can't be uploaded until it validates against an online compute server.</p></div>`);
528
- } else if (validationSchema) {
529
- $$renderer.push("<!--[2-->");
530
- $$renderer.push(`<div class="border-success/30 bg-success/5 flex items-center gap-3 rounded-md border p-3"><div class="min-w-0 flex-1"><p class="text-success text-xs font-medium">Valid Selva definition</p> <p class="text-muted-foreground mt-0.5 text-xs">${escape_html(validationSchema.inputs.length)} input${escape_html(validationSchema.inputs.length === 1 ? "" : "s")},
531
- ${escape_html(validationSchema.outputs.length)} output${escape_html(validationSchema.outputs.length === 1 ? "" : "s")}</p></div></div>`);
532
- } else $$renderer.push("<!--[-1-->");
533
- $$renderer.push(`<!--]--></div> <div class="space-y-2">`);
534
- Label($$renderer, {
535
- for: "new-dn",
536
- children: ($$renderer) => {
537
- $$renderer.push(`<!---->Display Name <span class="text-destructive">*</span>`);
538
- },
539
- $$slots: { default: true }
540
- });
541
- $$renderer.push(`<!----> `);
542
- Input($$renderer, {
543
- id: "new-dn",
544
- type: "text",
545
- placeholder: "e.g., Parametric Tower",
546
- get value() {
547
- return displayName;
548
- },
549
- set value($$value) {
550
- displayName = $$value;
551
- $$settled = false;
552
- }
553
- });
554
- $$renderer.push(`<!----></div> <div class="space-y-2">`);
555
- Label($$renderer, {
556
- for: "new-desc",
557
- children: ($$renderer) => {
558
- $$renderer.push(`<!---->Description`);
559
- },
560
- $$slots: { default: true }
561
- });
562
- $$renderer.push(`<!----> `);
563
- Textarea($$renderer, {
564
- id: "new-desc",
565
- rows: 3,
566
- placeholder: "Describe what this definition does…",
567
- get value() {
568
- return description;
569
- },
570
- set value($$value) {
571
- description = $$value;
572
- $$settled = false;
573
- }
574
- });
575
- $$renderer.push(`<!----></div> <div class="grid grid-cols-1 gap-3 md:grid-cols-2"><div class="space-y-1"><div class="flex items-center justify-between">`);
576
- Label($$renderer, {
577
- for: "new-cat",
578
- children: ($$renderer) => {
579
- $$renderer.push(`<!---->Category`);
580
- },
581
- $$slots: { default: true }
582
- });
583
- $$renderer.push(`<!----> <p class="text-muted-foreground text-xs">${escape_html(category?.length ?? 0)}/40</p></div> `);
584
- Input($$renderer, {
585
- id: "new-cat",
586
- type: "text",
587
- maxlength: 40,
588
- placeholder: "e.g., Architecture",
589
- get value() {
590
- return category;
591
- },
592
- set value($$value) {
593
- category = $$value;
594
- $$settled = false;
595
- }
596
- });
597
- $$renderer.push(`<!----></div> <div class="space-y-1"><div class="flex items-center justify-between">`);
598
- Label($$renderer, {
599
- for: "new-tags",
600
- children: ($$renderer) => {
601
- $$renderer.push(`<!---->Tags`);
602
- },
603
- $$slots: { default: true }
604
- });
605
- $$renderer.push(`<!----> <p class="text-muted-foreground text-xs">${escape_html(tags.length)}/5</p></div> `);
606
- if (tags.length > 0) {
607
- $$renderer.push("<!--[0-->");
608
- $$renderer.push(`<div class="mb-2 flex flex-wrap gap-2"><!--[-->`);
609
- const each_array_1 = ensure_array_like(tags);
610
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
611
- let tag = each_array_1[$$index_1];
612
- Badge($$renderer, {
613
- variant: "outline",
614
- class: "cursor-pointer gap-1",
615
- children: ($$renderer) => {
616
- $$renderer.push(`<!---->${escape_html(tag)} <button type="button" class="ml-0.5 inline-flex items-center justify-center transition-opacity hover:opacity-70" title="Remove tag">`);
617
- X($$renderer, { class: "h-3 w-3" });
618
- $$renderer.push(`<!----></button>`);
619
- },
620
- $$slots: { default: true }
621
- });
622
- }
623
- $$renderer.push(`<!--]--></div>`);
624
- } else $$renderer.push("<!--[-1-->");
625
- $$renderer.push(`<!--]--> `);
626
- Input($$renderer, {
627
- id: "new-tags",
628
- type: "text",
629
- placeholder: "Add tag and press Enter",
630
- disabled: tags.length >= 5,
631
- onkeydown: (e) => {
632
- if (e.key === "Enter") {
633
- e.preventDefault();
634
- const input = e.currentTarget;
635
- const tag = input.value.trim();
636
- if (tag && !tags.includes(tag) && tags.length < 5) {
637
- tags = [...tags, tag];
638
- input.value = "";
639
- }
640
- }
641
- }
642
- });
643
- $$renderer.push(`<!----></div></div> <div class="space-y-2">`);
644
- Label($$renderer, {
645
- children: ($$renderer) => {
646
- $$renderer.push(`<!---->Cover Image`);
647
- },
648
- $$slots: { default: true }
649
- });
650
- $$renderer.push(`<!----> `);
651
- ImageUploadField($$renderer, {
652
- mode: imageMode,
653
- value: coverImage,
654
- hasFile: imageHasFile,
655
- onModeChange: (m) => imageMode = m,
656
- onUpload: () => {},
657
- onFileSelected: () => imageHasFile = !!imageInput?.files?.length,
658
- onUrlChange: (url) => coverImage = url,
659
- get inputRef() {
660
- return imageInput;
661
- },
662
- set inputRef($$value) {
663
- imageInput = $$value;
664
- $$settled = false;
665
- }
666
- });
667
- $$renderer.push(`<!----></div></div> `);
668
- if (Dialog_footer) {
669
- $$renderer.push("<!--[-->");
670
- Dialog_footer($$renderer, {
671
- class: "gap-2 sm:justify-end",
672
- children: ($$renderer) => {
673
- Button($$renderer, {
674
- variant: "outline",
675
- onclick: () => onOpenChange?.(false),
676
- children: ($$renderer) => {
677
- $$renderer.push(`<!---->Cancel`);
678
- },
679
- $$slots: { default: true }
680
- });
681
- $$renderer.push(`<!----> `);
682
- Button($$renderer, {
683
- onclick: handleSubmit,
684
- disabled: isAdding || validating || !validationSchema,
685
- children: ($$renderer) => {
686
- $$renderer.push(`<!---->${escape_html(isAdding ? "Creating…" : validating ? "Validating…" : "Create Definition")}`);
687
- },
688
- $$slots: { default: true }
689
- });
690
- $$renderer.push(`<!---->`);
691
- },
692
- $$slots: { default: true }
693
- });
694
- $$renderer.push("<!--]-->");
695
- } else {
696
- $$renderer.push("<!--[!-->");
697
- $$renderer.push("<!--]-->");
698
- }
699
- },
700
- $$slots: { default: true }
701
- });
702
- $$renderer.push("<!--]-->");
703
- } else {
704
- $$renderer.push("<!--[!-->");
705
- $$renderer.push("<!--]-->");
706
- }
707
- },
708
- $$slots: { default: true }
709
- });
710
- $$renderer.push("<!--]-->");
711
- } else {
712
- $$renderer.push("<!--[!-->");
713
- $$renderer.push("<!--]-->");
714
- }
715
- }
716
- do {
717
- $$settled = true;
718
- $$inner_renderer = $$renderer.copy();
719
- $$render_inner($$inner_renderer);
720
- } while (!$$settled);
721
- $$renderer.subsume($$inner_renderer);
722
- });
723
- }
724
- //#endregion
725
- //#region src/routes/projects/_components/ProjectSidebar.svelte
726
- function ProjectSidebar($$renderer, $$props) {
727
- $$renderer.component(($$renderer) => {
728
- let { projects, records, activeProjectId, canManageProjects} = $$props;
729
- let filterQuery = "";
730
- const filteredProjects = derived(() => {
731
- const q = filterQuery.trim().toLowerCase();
732
- if (!q) return projects;
733
- return projects.filter((p) => p.name.toLowerCase().includes(q));
734
- });
735
- let $$settled = true;
736
- let $$inner_renderer;
737
- function $$render_inner($$renderer) {
738
- $$renderer.push(`<aside class="border-border bg-background flex w-60 shrink-0 flex-col overflow-y-auto border-r"><div class="flex items-center justify-between px-4 pt-5 pb-3"><span class="text-muted-foreground text-xs font-medium tracking-wider uppercase">Projects</span> `);
739
- if (canManageProjects) {
740
- $$renderer.push("<!--[0-->");
741
- $$renderer.push(`<button class="text-muted-foreground hover:text-foreground rounded p-0.5 transition-colors" title="New project" aria-label="New project">`);
742
- Plus($$renderer, { class: "h-3.5 w-3.5" });
743
- $$renderer.push(`<!----></button>`);
744
- } else $$renderer.push("<!--[-1-->");
745
- $$renderer.push(`<!--]--></div> `);
746
- $$renderer.push("<!--[-1-->");
747
- $$renderer.push(`<!--]--> `);
748
- if (projects.length > 4) {
749
- $$renderer.push("<!--[0-->");
750
- $$renderer.push(`<div class="relative mx-3 mb-2">`);
751
- Search$1($$renderer, { class: "text-muted-foreground pointer-events-none absolute top-1/2 left-2 h-3.5 w-3.5 -translate-y-1/2" });
752
- $$renderer.push(`<!----> <input${attr("value", filterQuery)} placeholder="Filter projects" class="border-input bg-background placeholder:text-muted-foreground focus:border-ring h-7 w-full rounded-md border pr-2 pl-7 text-xs transition-colors outline-none"/></div>`);
753
- } else $$renderer.push("<!--[-1-->");
754
- $$renderer.push(`<!--]--> <nav class="flex-1 space-y-px pr-2 pb-4"><button${attr_class(`group relative flex w-full items-center gap-2 py-1.5 pr-2.5 text-left transition-colors ${activeProjectId === null ? "bg-accent text-accent-foreground rounded-r-md pl-4" : "text-muted-foreground hover:bg-muted/60 hover:text-foreground mx-2 rounded-md pl-2.5"}`)}>`);
755
- if (activeProjectId === null) {
756
- $$renderer.push("<!--[0-->");
757
- $$renderer.push(`<span class="bg-primary absolute top-0 bottom-0 left-0 w-0.75" aria-hidden="true"></span>`);
758
- } else $$renderer.push("<!--[-1-->");
759
- $$renderer.push(`<!--]--> `);
760
- Folder_open($$renderer, { class: "h-3.5 w-3.5 shrink-0 opacity-70" });
761
- $$renderer.push(`<!----> <span class="flex-1 truncate text-sm font-medium">All projects</span></button> `);
762
- if (filteredProjects().length > 0) {
763
- $$renderer.push("<!--[0-->");
764
- $$renderer.push(`<div class="border-border/60 my-2 border-t"></div>`);
765
- } else $$renderer.push("<!--[-1-->");
766
- $$renderer.push(`<!--]--> <!--[-->`);
767
- const each_array = ensure_array_like(filteredProjects());
768
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
769
- let project = each_array[$$index];
770
- const isActive = activeProjectId === project.id;
771
- const defCount = records.filter((r) => r.projectId === project.id).length;
772
- $$renderer.push(`<button${attr_class(`group relative flex w-full items-center gap-2 py-1.5 pr-2.5 text-left transition-colors ${isActive ? "bg-accent text-accent-foreground rounded-r-md pl-4" : "text-muted-foreground hover:bg-muted/60 hover:text-foreground mx-2 rounded-md pl-2.5"}`)}>`);
773
- if (isActive) {
774
- $$renderer.push("<!--[0-->");
775
- $$renderer.push(`<span class="bg-primary absolute top-0 bottom-0 left-0 w-0.75" aria-hidden="true"></span>`);
776
- } else $$renderer.push("<!--[-1-->");
777
- $$renderer.push(`<!--]--> <span class="flex-1 truncate text-sm font-medium">${escape_html(project.name)}</span> <span class="shrink-0 font-mono text-[11px] tabular-nums opacity-60">${escape_html(defCount)}</span></button>`);
778
- }
779
- $$renderer.push(`<!--]--> `);
780
- if (projects.length === 0) {
781
- $$renderer.push("<!--[0-->");
782
- $$renderer.push(`<p class="text-muted-foreground px-2 py-4 text-center text-xs">No projects yet</p>`);
783
- } else if (filteredProjects().length === 0 && filterQuery);
784
- else $$renderer.push("<!--[-1-->");
785
- $$renderer.push(`<!--]--></nav></aside>`);
786
- }
787
- do {
788
- $$settled = true;
789
- $$inner_renderer = $$renderer.copy();
790
- $$render_inner($$inner_renderer);
791
- } while (!$$settled);
792
- $$renderer.subsume($$inner_renderer);
793
- });
794
- }
795
- //#endregion
796
- //#region src/routes/projects/_components/AddMemberPicker.svelte
797
- function AddMemberPicker($$renderer, $$props) {
798
- $$renderer.component(($$renderer) => {
799
- let { availableUsers} = $$props;
800
- let query = "";
801
- let highlighted = 0;
802
- const matches = derived(() => {
803
- const q = query.trim().toLowerCase();
804
- if (!q) return availableUsers.slice(0, 50);
805
- return availableUsers.filter((u) => {
806
- const name = (u.displayName ?? "").toLowerCase();
807
- const email = (u.email ?? "").toLowerCase();
808
- return name.includes(q) || email.includes(q);
809
- }).slice(0, 50);
810
- });
811
- function userLabel(u) {
812
- return u.displayName ?? u.email ?? u.id.slice(0, 8);
813
- }
814
- $$renderer.push(`<div class="border-border bg-card rounded-md border">`);
815
- {
816
- $$renderer.push("<!--[0-->");
817
- $$renderer.push(`<div class="border-border relative border-b">`);
818
- Search$1($$renderer, { class: "text-muted-foreground pointer-events-none absolute top-1/2 left-3 h-3.5 w-3.5 -translate-y-1/2" });
819
- $$renderer.push(`<!----> <input${attr("value", query)} autofocus="" placeholder="Search by name or email" class="placeholder:text-muted-foreground h-9 w-full rounded-t-md bg-transparent pr-9 pl-9 text-sm outline-none"/> <button type="button" class="text-muted-foreground hover:text-foreground absolute top-1/2 right-2 -translate-y-1/2 rounded p-1" aria-label="Cancel">`);
820
- X($$renderer, { class: "h-3.5 w-3.5" });
821
- $$renderer.push(`<!----></button></div> <div class="max-h-60 overflow-y-auto py-1">`);
822
- if (matches().length === 0) {
823
- $$renderer.push("<!--[0-->");
824
- $$renderer.push(`<p class="text-muted-foreground px-3 py-6 text-center text-xs">${escape_html(availableUsers.length === 0 ? "Everyone in this org is already on the project." : `No matches for "${query}"`)}</p>`);
825
- } else {
826
- $$renderer.push("<!--[-1-->");
827
- $$renderer.push(`<!--[-->`);
828
- const each_array = ensure_array_like(matches());
829
- for (let i = 0, $$length = each_array.length; i < $$length; i++) {
830
- let user = each_array[i];
831
- $$renderer.push(`<button type="button"${attr("data-idx", i)}${attr_class(`flex w-full items-center gap-3 px-3 py-2 text-left transition-colors ${highlighted === i ? "bg-accent text-accent-foreground" : "hover:bg-muted/60"}`)}>`);
832
- UserAvatar($$renderer, {
833
- name: userLabel(user),
834
- size: "sm"
835
- });
836
- $$renderer.push(`<!----> <div class="min-w-0 flex-1"><p class="truncate text-sm font-medium">${escape_html(userLabel(user))}</p> `);
837
- if (user.displayName && user.email) {
838
- $$renderer.push("<!--[0-->");
839
- $$renderer.push(`<p class="text-muted-foreground truncate font-mono text-xs">${escape_html(user.email)}</p>`);
840
- } else $$renderer.push("<!--[-1-->");
841
- $$renderer.push(`<!--]--></div></button>`);
842
- }
843
- $$renderer.push(`<!--]-->`);
844
- }
845
- $$renderer.push(`<!--]--></div>`);
846
- }
847
- $$renderer.push(`<!--]--></div>`);
848
- });
849
- }
850
- //#endregion
851
- //#region src/routes/projects/_components/ProjectSettingsDialog.svelte
852
- function ProjectSettingsDialog($$renderer, $$props) {
853
- $$renderer.component(($$renderer) => {
854
- let { project, users, open, onOpenChange, onSave, onDelete, onUpdateMemberRole, onRemoveMember } = $$props;
855
- let name = project.name;
856
- let description = project.description ?? "";
857
- let visibility = project.visibility;
858
- let saving = false;
859
- let tab = "general";
860
- let showAddForm = false;
861
- let removing = null;
862
- function userLabel(userId) {
863
- const u = users.find((u) => u.id === userId);
864
- return u?.displayName ?? u?.email ?? userId.slice(0, 8);
865
- }
866
- function userEmail(userId) {
867
- return users.find((u) => u.id === userId)?.email;
868
- }
869
- const visibilityHint = derived(() => ({
870
- public: "Any authenticated user can solve this project.",
871
- org: "Any member of the organization can solve this project.",
872
- private: "Only the project members listed under Members can solve this project.",
873
- platform: "Managed by platform admins — access is granted per org or user."
874
- })[visibility]);
875
- const availableUsers = derived(() => {
876
- const ids = new Set(project.members.map((m) => m.userId));
877
- return users.filter((u) => !ids.has(u.id));
878
- });
879
- async function save() {
880
- saving = true;
881
- try {
882
- await onSave(project.id, {
883
- name,
884
- description,
885
- visibility
886
- });
887
- } finally {
888
- saving = false;
889
- }
890
- }
891
- async function remove(userId) {
892
- removing = userId;
893
- try {
894
- await onRemoveMember(project.id, userId);
895
- } finally {
896
- removing = null;
897
- }
898
- }
899
- let $$settled = true;
900
- let $$inner_renderer;
901
- function $$render_inner($$renderer) {
902
- if (Root$1) {
903
- $$renderer.push("<!--[-->");
904
- Root$1($$renderer, {
905
- open,
906
- onOpenChange,
907
- children: ($$renderer) => {
908
- if (Dialog_content) {
909
- $$renderer.push("<!--[-->");
910
- Dialog_content($$renderer, {
911
- class: "flex max-h-[calc(100dvh-2rem)] max-w-lg flex-col overflow-hidden",
912
- children: ($$renderer) => {
913
- if (Dialog_header) {
914
- $$renderer.push("<!--[-->");
915
- Dialog_header($$renderer, {
916
- class: "shrink-0",
917
- children: ($$renderer) => {
918
- if (Dialog_title) {
919
- $$renderer.push("<!--[-->");
920
- Dialog_title($$renderer, {
921
- children: ($$renderer) => {
922
- $$renderer.push(`<!---->Project settings`);
923
- },
924
- $$slots: { default: true }
925
- });
926
- $$renderer.push("<!--]-->");
927
- } else {
928
- $$renderer.push("<!--[!-->");
929
- $$renderer.push("<!--]-->");
930
- }
931
- $$renderer.push(` `);
932
- if (Dialog_description) {
933
- $$renderer.push("<!--[-->");
934
- Dialog_description($$renderer, {
935
- children: ($$renderer) => {
936
- $$renderer.push(`<!---->Manage this project's details and members.`);
937
- },
938
- $$slots: { default: true }
939
- });
940
- $$renderer.push("<!--]-->");
941
- } else {
942
- $$renderer.push("<!--[!-->");
943
- $$renderer.push("<!--]-->");
944
- }
945
- },
946
- $$slots: { default: true }
947
- });
948
- $$renderer.push("<!--]-->");
949
- } else {
950
- $$renderer.push("<!--[!-->");
951
- $$renderer.push("<!--]-->");
952
- }
953
- $$renderer.push(` `);
954
- if (Tabs) {
955
- $$renderer.push("<!--[-->");
956
- Tabs($$renderer, {
957
- class: "mt-2 flex h-120 min-h-0 flex-col",
958
- get value() {
959
- return tab;
960
- },
961
- set value($$value) {
962
- tab = $$value;
963
- $$settled = false;
964
- },
965
- children: ($$renderer) => {
966
- if (Tabs_list) {
967
- $$renderer.push("<!--[-->");
968
- Tabs_list($$renderer, {
969
- class: "grid w-full shrink-0 grid-cols-2",
970
- children: ($$renderer) => {
971
- if (Tabs_trigger) {
972
- $$renderer.push("<!--[-->");
973
- Tabs_trigger($$renderer, {
974
- value: "general",
975
- children: ($$renderer) => {
976
- $$renderer.push(`<!---->General`);
977
- },
978
- $$slots: { default: true }
979
- });
980
- $$renderer.push("<!--]-->");
981
- } else {
982
- $$renderer.push("<!--[!-->");
983
- $$renderer.push("<!--]-->");
984
- }
985
- $$renderer.push(` `);
986
- if (Tabs_trigger) {
987
- $$renderer.push("<!--[-->");
988
- Tabs_trigger($$renderer, {
989
- value: "members",
990
- class: "gap-1.5",
991
- children: ($$renderer) => {
992
- Users($$renderer, { class: "h-3.5 w-3.5" });
993
- $$renderer.push(`<!----> Members <span class="text-muted-foreground ml-1 font-mono text-[11px]">${escape_html(project.members.length)}</span>`);
994
- },
995
- $$slots: { default: true }
996
- });
997
- $$renderer.push("<!--]-->");
998
- } else {
999
- $$renderer.push("<!--[!-->");
1000
- $$renderer.push("<!--]-->");
1001
- }
1002
- },
1003
- $$slots: { default: true }
1004
- });
1005
- $$renderer.push("<!--]-->");
1006
- } else {
1007
- $$renderer.push("<!--[!-->");
1008
- $$renderer.push("<!--]-->");
1009
- }
1010
- $$renderer.push(` `);
1011
- if (Tabs_content) {
1012
- $$renderer.push("<!--[-->");
1013
- Tabs_content($$renderer, {
1014
- value: "general",
1015
- class: "mt-4 min-h-0 flex-1 space-y-5 overflow-y-auto pr-1 data-[state=inactive]:hidden",
1016
- children: ($$renderer) => {
1017
- $$renderer.push(`<div class="space-y-1.5">`);
1018
- Label($$renderer, {
1019
- for: "proj-name",
1020
- children: ($$renderer) => {
1021
- $$renderer.push(`<!---->Name`);
1022
- },
1023
- $$slots: { default: true }
1024
- });
1025
- $$renderer.push(`<!----> `);
1026
- Input($$renderer, {
1027
- id: "proj-name",
1028
- get value() {
1029
- return name;
1030
- },
1031
- set value($$value) {
1032
- name = $$value;
1033
- $$settled = false;
1034
- }
1035
- });
1036
- $$renderer.push(`<!----></div> <div class="space-y-1.5">`);
1037
- Label($$renderer, {
1038
- for: "proj-desc",
1039
- children: ($$renderer) => {
1040
- $$renderer.push(`<!---->Description`);
1041
- },
1042
- $$slots: { default: true }
1043
- });
1044
- $$renderer.push(`<!----> `);
1045
- Textarea($$renderer, {
1046
- id: "proj-desc",
1047
- rows: 5,
1048
- get value() {
1049
- return description;
1050
- },
1051
- set value($$value) {
1052
- description = $$value;
1053
- $$settled = false;
1054
- }
1055
- });
1056
- $$renderer.push(`<!----></div> <div class="space-y-1.5">`);
1057
- Label($$renderer, {
1058
- for: "proj-vis",
1059
- children: ($$renderer) => {
1060
- $$renderer.push(`<!---->Visibility`);
1061
- },
1062
- $$slots: { default: true }
1063
- });
1064
- $$renderer.push(`<!----> `);
1065
- $$renderer.select({
1066
- id: "proj-vis",
1067
- value: visibility,
1068
- class: "border-input bg-background h-10 w-full rounded-md border px-3 text-sm"
1069
- }, ($$renderer) => {
1070
- $$renderer.option({ value: "public" }, ($$renderer) => {
1071
- $$renderer.push(`Public`);
1072
- });
1073
- $$renderer.option({ value: "org" }, ($$renderer) => {
1074
- $$renderer.push(`Org`);
1075
- });
1076
- $$renderer.option({ value: "private" }, ($$renderer) => {
1077
- $$renderer.push(`Private`);
1078
- });
1079
- if (visibility === "platform") {
1080
- $$renderer.push("<!--[0-->");
1081
- $$renderer.option({ value: "platform" }, ($$renderer) => {
1082
- $$renderer.push(`Platform`);
1083
- });
1084
- } else $$renderer.push("<!--[-1-->");
1085
- $$renderer.push(`<!--]-->`);
1086
- });
1087
- $$renderer.push(` <p class="text-muted-foreground text-xs">${escape_html(visibilityHint())}</p></div>`);
1088
- },
1089
- $$slots: { default: true }
1090
- });
1091
- $$renderer.push("<!--]-->");
1092
- } else {
1093
- $$renderer.push("<!--[!-->");
1094
- $$renderer.push("<!--]-->");
1095
- }
1096
- $$renderer.push(` `);
1097
- if (Tabs_content) {
1098
- $$renderer.push("<!--[-->");
1099
- Tabs_content($$renderer, {
1100
- value: "members",
1101
- class: "mt-4 flex min-h-0 flex-1 flex-col gap-3 overflow-hidden data-[state=inactive]:hidden",
1102
- children: ($$renderer) => {
1103
- if (project.members.length === 0 && !showAddForm) {
1104
- $$renderer.push("<!--[0-->");
1105
- EmptyState($$renderer, {
1106
- size: "sm",
1107
- icon: Users,
1108
- title: "No members yet",
1109
- description: "Add members to control who can edit this project."
1110
- });
1111
- } else if (project.members.length > 0) {
1112
- $$renderer.push("<!--[1-->");
1113
- $$renderer.push(`<div class="border-border bg-card min-h-0 flex-1 overflow-y-auto rounded-md border"><!--[-->`);
1114
- const each_array = ensure_array_like(project.members);
1115
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1116
- let member = each_array[$$index];
1117
- $$renderer.push(`<div class="border-border flex items-center gap-3 border-b px-3 py-2.5 last:border-0"><div class="shrink-0">`);
1118
- UserAvatar($$renderer, {
1119
- name: userLabel(member.userId),
1120
- size: "sm"
1121
- });
1122
- $$renderer.push(`<!----></div> <div class="min-w-0 flex-1"><p class="truncate text-sm font-medium">${escape_html(userLabel(member.userId))}</p> `);
1123
- if (userEmail(member.userId) && userEmail(member.userId) !== userLabel(member.userId)) {
1124
- $$renderer.push("<!--[0-->");
1125
- $$renderer.push(`<p class="text-muted-foreground truncate font-mono text-xs">${escape_html(userEmail(member.userId))}</p>`);
1126
- } else $$renderer.push("<!--[-1-->");
1127
- $$renderer.push(`<!--]--></div> `);
1128
- $$renderer.select({
1129
- value: member.role,
1130
- onchange: (e) => onUpdateMemberRole(project.id, member.userId, e.target.value),
1131
- class: "border-input bg-background h-8 shrink-0 rounded-md border px-2 text-xs outline-none"
1132
- }, ($$renderer) => {
1133
- $$renderer.option({ value: "owner" }, ($$renderer) => {
1134
- $$renderer.push(`Owner`);
1135
- });
1136
- $$renderer.option({ value: "editor" }, ($$renderer) => {
1137
- $$renderer.push(`Editor`);
1138
- });
1139
- $$renderer.option({ value: "viewer" }, ($$renderer) => {
1140
- $$renderer.push(`Viewer`);
1141
- });
1142
- });
1143
- $$renderer.push(` `);
1144
- Button($$renderer, {
1145
- onclick: () => remove(member.userId),
1146
- disabled: removing === member.userId,
1147
- variant: "ghost",
1148
- size: "icon",
1149
- class: "text-muted-foreground hover:text-destructive h-7 w-7 shrink-0",
1150
- children: ($$renderer) => {
1151
- X($$renderer, { class: "h-3.5 w-3.5" });
1152
- },
1153
- $$slots: { default: true }
1154
- });
1155
- $$renderer.push(`<!----></div>`);
1156
- }
1157
- $$renderer.push(`<!--]--></div>`);
1158
- } else $$renderer.push("<!--[-1-->");
1159
- $$renderer.push(`<!--]--> <div class="shrink-0">`);
1160
- if (showAddForm) {
1161
- $$renderer.push("<!--[0-->");
1162
- AddMemberPicker($$renderer, {
1163
- availableUsers: availableUsers()});
1164
- } else {
1165
- $$renderer.push("<!--[-1-->");
1166
- Button($$renderer, {
1167
- onclick: () => showAddForm = true,
1168
- variant: "outline",
1169
- size: "sm",
1170
- class: "gap-1.5",
1171
- children: ($$renderer) => {
1172
- User_plus($$renderer, { class: "h-3.5 w-3.5" });
1173
- $$renderer.push(`<!----> Add member`);
1174
- },
1175
- $$slots: { default: true }
1176
- });
1177
- }
1178
- $$renderer.push(`<!--]--></div>`);
1179
- },
1180
- $$slots: { default: true }
1181
- });
1182
- $$renderer.push("<!--]-->");
1183
- } else {
1184
- $$renderer.push("<!--[!-->");
1185
- $$renderer.push("<!--]-->");
1186
- }
1187
- },
1188
- $$slots: { default: true }
1189
- });
1190
- $$renderer.push("<!--]-->");
1191
- } else {
1192
- $$renderer.push("<!--[!-->");
1193
- $$renderer.push("<!--]-->");
1194
- }
1195
- $$renderer.push(` <div class="border-border mt-4 flex shrink-0 items-center justify-between border-t pt-4">`);
1196
- Button($$renderer, {
1197
- onclick: () => onDelete(project.id),
1198
- variant: "ghost",
1199
- size: "sm",
1200
- class: "text-destructive hover:text-destructive gap-1.5 px-2",
1201
- children: ($$renderer) => {
1202
- Trash_2($$renderer, { class: "h-3.5 w-3.5" });
1203
- $$renderer.push(`<!----> Delete project`);
1204
- },
1205
- $$slots: { default: true }
1206
- });
1207
- $$renderer.push(`<!----> <div class="flex gap-2">`);
1208
- Button($$renderer, {
1209
- onclick: () => onOpenChange(false),
1210
- variant: "outline",
1211
- size: "sm",
1212
- children: ($$renderer) => {
1213
- $$renderer.push(`<!---->${escape_html(tab === "general" ? "Cancel" : "Close")}`);
1214
- },
1215
- $$slots: { default: true }
1216
- });
1217
- $$renderer.push(`<!----> `);
1218
- if (tab === "general") {
1219
- $$renderer.push("<!--[0-->");
1220
- Button($$renderer, {
1221
- onclick: save,
1222
- disabled: saving,
1223
- size: "sm",
1224
- children: ($$renderer) => {
1225
- $$renderer.push(`<!---->${escape_html(saving ? "Saving…" : "Save")}`);
1226
- },
1227
- $$slots: { default: true }
1228
- });
1229
- } else $$renderer.push("<!--[-1-->");
1230
- $$renderer.push(`<!--]--></div></div>`);
1231
- },
1232
- $$slots: { default: true }
1233
- });
1234
- $$renderer.push("<!--]-->");
1235
- } else {
1236
- $$renderer.push("<!--[!-->");
1237
- $$renderer.push("<!--]-->");
1238
- }
1239
- },
1240
- $$slots: { default: true }
1241
- });
1242
- $$renderer.push("<!--]-->");
1243
- } else {
1244
- $$renderer.push("<!--[!-->");
1245
- $$renderer.push("<!--]-->");
1246
- }
1247
- }
1248
- do {
1249
- $$settled = true;
1250
- $$inner_renderer = $$renderer.copy();
1251
- $$render_inner($$inner_renderer);
1252
- } while (!$$settled);
1253
- $$renderer.subsume($$inner_renderer);
1254
- });
1255
- }
1256
- //#endregion
1257
- //#region src/routes/projects/_components/StatusBadge.svelte
1258
- function StatusBadge($$renderer, $$props) {
1259
- $$renderer.component(($$renderer) => {
1260
- let { status, class: className = "" } = $$props;
1261
- $$renderer.push(`<span${attr_class(`inline-flex items-center gap-1.5 rounded-full border px-2 py-0.5 font-mono text-[11px] tracking-wide ${stringify(statusRing(status))} ${stringify(className)}`)}><span${attr_class(`h-1.5 w-1.5 rounded-full ${stringify(statusDot(status))}`)}></span> ${escape_html(status)}</span>`);
1262
- });
1263
- }
1264
- //#endregion
1265
- //#region src/routes/projects/_components/DefinitionListView.svelte
1266
- function DefinitionListView($$renderer, $$props) {
1267
- $$renderer.component(($$renderer) => {
1268
- let { records, projects} = $$props;
1269
- const gridTemplate = "grid-template-columns: 40px 1.6fr 0.9fr 0.8fr 0.7fr 0.6fr 36px";
1270
- function projectName(id) {
1271
- return projects.find((p) => p.id === id)?.name ?? "";
1272
- }
1273
- $$renderer.push(`<div class="border-border bg-card overflow-hidden rounded-xl border"><div class="border-border bg-muted/50 text-muted-foreground grid border-b px-4 py-2.5 font-mono text-[10.5px] tracking-widest uppercase"${attr_style(gridTemplate)}><span></span><span>Definition</span><span>Project</span><span>Status</span><span>Updated</span> <span class="text-right">Runs</span><span></span></div> <!--[-->`);
1274
- const each_array = ensure_array_like(records);
1275
- for (let i = 0, $$length = each_array.length; i < $$length; i++) {
1276
- let record = each_array[i];
1277
- $$renderer.push(`<div${attr_class(`grid items-center gap-4 px-4 py-3 text-[13px] ${i < records.length - 1 ? "border-border border-b" : ""}`)}${attr_style(gridTemplate)}>`);
1278
- if (record.coverImage) {
1279
- $$renderer.push("<!--[0-->");
1280
- $$renderer.push(`<div class="flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"><img${attr("src", record.coverImage)} alt="" class="h-full w-full object-cover"/></div>`);
1281
- } else {
1282
- $$renderer.push("<!--[-1-->");
1283
- const hues = huesFor(record.guid);
1284
- $$renderer.push(`<div class="tool-cover-fallback flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"${attr_style("", {
1285
- "--tool-h1": hues.h1,
1286
- "--tool-h2": hues.h2
1287
- })}><span class="text-foreground/40 text-base font-semibold">${escape_html(monogram(record.displayName))}</span></div>`);
1288
- }
1289
- $$renderer.push(`<!--]--> <span class="min-w-0"><span class="font-semibold">${escape_html(record.displayName)}</span> `);
1290
- if (record.description) {
1291
- $$renderer.push("<!--[0-->");
1292
- $$renderer.push(`<span class="text-muted-foreground ml-2 text-[12px]">${escape_html(record.description.slice(0, 60))}${escape_html(record.description.length > 60 ? "…" : "")}</span>`);
1293
- } else $$renderer.push("<!--[-1-->");
1294
- $$renderer.push(`<!--]--></span> <span class="text-muted-foreground">${escape_html(projectName(record.projectId))}</span> <span>`);
1295
- StatusBadge($$renderer, { status: record.status });
1296
- $$renderer.push(`<!----></span> <span class="text-muted-foreground font-mono text-[12px]">${escape_html(formatUpdated(record.updatedAt))}</span> <span class="text-right font-mono text-[12px]">${escape_html(record.solveCount.toLocaleString())}</span> <span class="flex justify-end"><button type="button" class="text-muted-foreground hover:bg-muted hover:text-foreground rounded p-1 transition-colors"${attr("aria-label", `Open ${stringify(record.displayName)}`)}>`);
1297
- Ellipsis($$renderer, { class: "h-4 w-4" });
1298
- $$renderer.push(`<!----></button></span></div>`);
1299
- }
1300
- $$renderer.push(`<!--]--></div>`);
1301
- });
1302
- }
1303
- //#endregion
1304
- //#region src/routes/projects/_components/DefinitionDetailDrawer.svelte
1305
- function DefinitionDetailDrawer($$renderer, $$props) {
1306
- $$renderer.component(($$renderer) => {
1307
- let { record, projectName, canEdit, showShare, onClose, onEdit, onOpenRunner, onShare } = $$props;
1308
- Drawer($$renderer, {
1309
- onClose,
1310
- children: ($$renderer) => {
1311
- $$renderer.push(`<div class="border-border flex items-start justify-between gap-4 border-b p-6"><div class="min-w-0"><div class="flex items-center gap-2">`);
1312
- StatusBadge($$renderer, { status: record.status });
1313
- $$renderer.push(`<!----> <span class="text-muted-foreground font-mono text-[11px] tracking-wide uppercase">${escape_html(projectName)}</span></div> <h2 class="mt-2.5 text-xl font-semibold tracking-tight">${escape_html(record.displayName)}</h2> `);
1314
- if (record.description) {
1315
- $$renderer.push("<!--[0-->");
1316
- $$renderer.push(`<p class="text-muted-foreground mt-1 text-sm">${escape_html(record.description)}</p>`);
1317
- } else $$renderer.push("<!--[-1-->");
1318
- $$renderer.push(`<!--]--></div> `);
1319
- Button($$renderer, {
1320
- variant: "ghost",
1321
- size: "icon",
1322
- onclick: onClose,
1323
- class: "mt-0.5 h-8 w-8 shrink-0",
1324
- children: ($$renderer) => {
1325
- X($$renderer, { class: "h-4 w-4" });
1326
- },
1327
- $$slots: { default: true }
1328
- });
1329
- $$renderer.push(`<!----></div> <div class="flex-1 space-y-5 overflow-y-auto p-6">`);
1330
- if (record.coverImage) {
1331
- $$renderer.push("<!--[0-->");
1332
- $$renderer.push(`<img${attr("src", record.coverImage)}${attr("alt", record.displayName)} class="border-border aspect-4/3 w-full rounded-lg border object-cover"/>`);
1333
- } else {
1334
- $$renderer.push("<!--[-1-->");
1335
- $$renderer.push(`<div class="border-border bg-muted flex aspect-4/3 w-full items-center justify-center rounded-lg border"><span class="text-muted-foreground font-mono text-[11px] tracking-widest uppercase">No preview</span></div>`);
1336
- }
1337
- $$renderer.push(`<!--]--> <div class="flex gap-2">`);
1338
- Button($$renderer, {
1339
- class: "flex-1",
1340
- onclick: () => onOpenRunner(record.guid, "live"),
1341
- children: ($$renderer) => {
1342
- Play($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
1343
- $$renderer.push(`<!----> Run`);
1344
- },
1345
- $$slots: { default: true }
1346
- });
1347
- $$renderer.push(`<!----> `);
1348
- if (canEdit) {
1349
- $$renderer.push("<!--[0-->");
1350
- if (showShare) {
1351
- $$renderer.push("<!--[0-->");
1352
- Button($$renderer, {
1353
- variant: "outline",
1354
- size: "icon",
1355
- onclick: () => onShare(record),
1356
- title: "Share links",
1357
- children: ($$renderer) => {
1358
- Share_2($$renderer, { class: "h-4 w-4" });
1359
- },
1360
- $$slots: { default: true }
1361
- });
1362
- } else $$renderer.push("<!--[-1-->");
1363
- $$renderer.push(`<!--]--> `);
1364
- Button($$renderer, {
1365
- variant: "outline",
1366
- onclick: () => onEdit(record),
1367
- children: ($$renderer) => {
1368
- $$renderer.push(`<!---->Edit`);
1369
- },
1370
- $$slots: { default: true }
1371
- });
1372
- $$renderer.push(`<!---->`);
1373
- } else $$renderer.push("<!--[-1-->");
1374
- $$renderer.push(`<!--]--></div> `);
1375
- Separator($$renderer, {});
1376
- $$renderer.push(`<!----> <div class="grid grid-cols-2 gap-x-4 gap-y-3"><div><p class="text-muted-foreground font-mono text-[10.5px] tracking-widest uppercase">Updated</p> <p class="mt-1 text-sm">${escape_html(formatUpdated(record.updatedAt))} ago</p></div> <div><p class="text-muted-foreground font-mono text-[10.5px] tracking-widest uppercase">Runs</p> <p class="mt-1 text-sm">${escape_html(record.solveCount.toLocaleString())}</p></div> `);
1377
- if (record.category) {
1378
- $$renderer.push("<!--[0-->");
1379
- $$renderer.push(`<div><p class="text-muted-foreground font-mono text-[10.5px] tracking-widest uppercase">Category</p> <p class="mt-1 text-sm">${escape_html(record.category)}</p></div>`);
1380
- } else $$renderer.push("<!--[-1-->");
1381
- $$renderer.push(`<!--]--></div> `);
1382
- if (record.tags?.length) {
1383
- $$renderer.push("<!--[0-->");
1384
- $$renderer.push(`<div>`);
1385
- Separator($$renderer, { class: "mb-4" });
1386
- $$renderer.push(`<!----> <div class="flex flex-wrap gap-1.5"><!--[-->`);
1387
- const each_array = ensure_array_like(record.tags);
1388
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1389
- let tag = each_array[$$index];
1390
- $$renderer.push(`<span class="bg-muted text-muted-foreground rounded px-2 py-0.5 font-mono text-[11px]">#${escape_html(tag)}</span>`);
1391
- }
1392
- $$renderer.push(`<!--]--></div></div>`);
1393
- } else $$renderer.push("<!--[-1-->");
1394
- $$renderer.push(`<!--]--></div>`);
1395
- }});
1396
- });
1397
- }
1398
- //#endregion
1399
- //#region src/routes/projects/_components/UploadVersionDialog.svelte
1400
- function UploadVersionDialog($$renderer, $$props) {
1401
- $$renderer.component(($$renderer) => {
1402
- let { nextVersionNumber, open, onOpenChange} = $$props;
1403
- let changeNote = "";
1404
- async function submit() {}
1405
- let $$settled = true;
1406
- let $$inner_renderer;
1407
- function $$render_inner($$renderer) {
1408
- if (Root$1) {
1409
- $$renderer.push("<!--[-->");
1410
- Root$1($$renderer, {
1411
- open,
1412
- onOpenChange,
1413
- children: ($$renderer) => {
1414
- if (Dialog_content) {
1415
- $$renderer.push("<!--[-->");
1416
- Dialog_content($$renderer, {
1417
- class: "max-w-md",
1418
- children: ($$renderer) => {
1419
- if (Dialog_header) {
1420
- $$renderer.push("<!--[-->");
1421
- Dialog_header($$renderer, {
1422
- children: ($$renderer) => {
1423
- if (Dialog_title) {
1424
- $$renderer.push("<!--[-->");
1425
- Dialog_title($$renderer, {
1426
- children: ($$renderer) => {
1427
- $$renderer.push(`<!---->Upload new version`);
1428
- },
1429
- $$slots: { default: true }
1430
- });
1431
- $$renderer.push("<!--]-->");
1432
- } else {
1433
- $$renderer.push("<!--[!-->");
1434
- $$renderer.push("<!--]-->");
1435
- }
1436
- $$renderer.push(` `);
1437
- if (Dialog_description) {
1438
- $$renderer.push("<!--[-->");
1439
- Dialog_description($$renderer, {
1440
- children: ($$renderer) => {
1441
- $$renderer.push(`<!---->The upload becomes <strong>v${escape_html(nextVersionNumber)}</strong> as a draft. The live channel stays unchanged
1442
- until you publish.`);
1443
- },
1444
- $$slots: { default: true }
1445
- });
1446
- $$renderer.push("<!--]-->");
1447
- } else {
1448
- $$renderer.push("<!--[!-->");
1449
- $$renderer.push("<!--]-->");
1450
- }
1451
- },
1452
- $$slots: { default: true }
1453
- });
1454
- $$renderer.push("<!--]-->");
1455
- } else {
1456
- $$renderer.push("<!--[!-->");
1457
- $$renderer.push("<!--]-->");
1458
- }
1459
- $$renderer.push(` <div class="mt-4 space-y-4"><div class="space-y-1.5">`);
1460
- Label($$renderer, {
1461
- for: "upload-file",
1462
- children: ($$renderer) => {
1463
- $$renderer.push(`<!---->Grasshopper file`);
1464
- },
1465
- $$slots: { default: true }
1466
- });
1467
- $$renderer.push(`<!----> <label for="upload-file" class="border-border hover:bg-accent/30 flex cursor-pointer items-center gap-3 rounded-md border-2 border-dashed px-4 py-5 transition-colors">`);
1468
- File_up($$renderer, { class: "text-muted-foreground h-5 w-5 shrink-0" });
1469
- $$renderer.push(`<!----> <div class="min-w-0 flex-1">`);
1470
- $$renderer.push("<!--[-1-->");
1471
- $$renderer.push(`<p class="text-sm font-medium">Pick a .gh or .ghx file</p> <p class="text-muted-foreground text-xs">Becomes v${escape_html(nextVersionNumber)} draft</p>`);
1472
- $$renderer.push(`<!--]--></div></label> <input id="upload-file" type="file" accept=".gh,.ghx" class="hidden"/></div> <div class="space-y-1.5">`);
1473
- Label($$renderer, {
1474
- for: "upload-note",
1475
- children: ($$renderer) => {
1476
- $$renderer.push(`<!---->What changed? <span class="text-muted-foreground font-normal">(optional)</span>`);
1477
- },
1478
- $$slots: { default: true }
1479
- });
1480
- $$renderer.push(`<!----> `);
1481
- Textarea($$renderer, {
1482
- id: "upload-note",
1483
- rows: 2,
1484
- maxlength: 1e3,
1485
- placeholder: "e.g. Fixed wall thickness calculation",
1486
- get value() {
1487
- return changeNote;
1488
- },
1489
- set value($$value) {
1490
- changeNote = $$value;
1491
- $$settled = false;
1492
- }
1493
- });
1494
- $$renderer.push(`<!----></div></div> `);
1495
- if (Dialog_footer) {
1496
- $$renderer.push("<!--[-->");
1497
- Dialog_footer($$renderer, {
1498
- class: "mt-4",
1499
- children: ($$renderer) => {
1500
- Button($$renderer, {
1501
- variant: "outline",
1502
- onclick: () => onOpenChange(false),
1503
- children: ($$renderer) => {
1504
- $$renderer.push(`<!---->Cancel`);
1505
- },
1506
- $$slots: { default: true }
1507
- });
1508
- $$renderer.push(`<!----> `);
1509
- Button($$renderer, {
1510
- onclick: submit,
1511
- disabled: true,
1512
- children: ($$renderer) => {
1513
- $$renderer.push("<!--[-1-->");
1514
- Upload($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
1515
- $$renderer.push(`<!----> Upload v${escape_html(nextVersionNumber)}`);
1516
- $$renderer.push(`<!--]-->`);
1517
- },
1518
- $$slots: { default: true }
1519
- });
1520
- $$renderer.push(`<!---->`);
1521
- },
1522
- $$slots: { default: true }
1523
- });
1524
- $$renderer.push("<!--]-->");
1525
- } else {
1526
- $$renderer.push("<!--[!-->");
1527
- $$renderer.push("<!--]-->");
1528
- }
1529
- },
1530
- $$slots: { default: true }
1531
- });
1532
- $$renderer.push("<!--]-->");
1533
- } else {
1534
- $$renderer.push("<!--[!-->");
1535
- $$renderer.push("<!--]-->");
1536
- }
1537
- },
1538
- $$slots: { default: true }
1539
- });
1540
- $$renderer.push("<!--]-->");
1541
- } else {
1542
- $$renderer.push("<!--[!-->");
1543
- $$renderer.push("<!--]-->");
1544
- }
1545
- }
1546
- do {
1547
- $$settled = true;
1548
- $$inner_renderer = $$renderer.copy();
1549
- $$render_inner($$inner_renderer);
1550
- } while (!$$settled);
1551
- $$renderer.subsume($$inner_renderer);
1552
- });
1553
- }
1554
- //#endregion
1555
- //#region src/routes/projects/_components/VersionsSection.svelte
1556
- function VersionsSection($$renderer, $$props) {
1557
- $$renderer.component(($$renderer) => {
1558
- let { definitionGuid, liveVersionId, draftVersionId, onOpenRunner } = $$props;
1559
- let versions = [];
1560
- let loading = true;
1561
- let showUploadDialog = false;
1562
- let publishingTarget = null;
1563
- let publishingTargetSet = false;
1564
- let publishing = false;
1565
- let confirmingDelete = null;
1566
- let deletingId = null;
1567
- async function loadVersions() {
1568
- loading = true;
1569
- try {
1570
- const res = await fetch(`/api/v1/definitions/${definitionGuid}/versions`);
1571
- if (!res.ok) throw new Error(`${res.status}`);
1572
- versions = (await res.json()).items;
1573
- } catch {
1574
- toast.error("Failed to load versions");
1575
- } finally {
1576
- loading = false;
1577
- }
1578
- }
1579
- const liveVersion = derived(() => versions.find((v) => v.id === liveVersionId) ?? null);
1580
- const draftVersion = derived(() => versions.find((v) => v.id === draftVersionId) ?? null);
1581
- const draftIsAhead = derived(() => draftVersion() !== null && liveVersion() !== null && draftVersion().id !== liveVersion().id);
1582
- const nextVersionNumber = derived(() => (versions[0]?.versionNumber ?? 0) + 1);
1583
- function formatRelative(iso) {
1584
- const ms = Date.now() - new Date(iso).getTime();
1585
- const minutes = Math.floor(ms / 6e4);
1586
- if (minutes < 1) return "Just now";
1587
- if (minutes < 60) return `${minutes}m ago`;
1588
- const hours = Math.floor(minutes / 60);
1589
- if (hours < 24) return `${hours}h ago`;
1590
- const days = Math.floor(hours / 24);
1591
- if (days === 1) return "Yesterday";
1592
- if (days < 30) return `${days}d ago`;
1593
- return new Date(iso).toLocaleDateString();
1594
- }
1595
- async function publish(target) {
1596
- publishing = true;
1597
- try {
1598
- const body = target ? { versionId: target.id } : {};
1599
- const res = await fetch(`/api/v1/definitions/${definitionGuid}/publish`, {
1600
- method: "POST",
1601
- headers: { "Content-Type": "application/json" },
1602
- body: JSON.stringify(body)
1603
- });
1604
- if (!res.ok) {
1605
- const err = await res.json().catch(() => ({}));
1606
- toast.error(err.message || err.error || "Failed to publish");
1607
- return;
1608
- }
1609
- const result = await res.json();
1610
- toast.success(`v${result.version?.versionNumber ?? "?"} is now live`);
1611
- await loadVersions();
1612
- await invalidateAll();
1613
- } catch {
1614
- toast.error("Failed to publish");
1615
- } finally {
1616
- publishing = false;
1617
- publishingTarget = null;
1618
- publishingTargetSet = false;
1619
- }
1620
- }
1621
- async function deleteVersion(version) {
1622
- deletingId = version.id;
1623
- try {
1624
- const res = await fetch(`/api/v1/definitions/${definitionGuid}/versions/${version.id}`, { method: "DELETE" });
1625
- if (!res.ok) {
1626
- const err = await res.json().catch(() => ({}));
1627
- toast.error(err.message || err.error || "Failed to delete version. Live or draft versions cannot be deleted.");
1628
- return;
1629
- }
1630
- toast.success(`v${version.versionNumber} deleted`);
1631
- await loadVersions();
1632
- await invalidateAll();
1633
- } catch {
1634
- toast.error("Failed to delete version");
1635
- } finally {
1636
- deletingId = null;
1637
- confirmingDelete = null;
1638
- }
1639
- }
1640
- $$renderer.push(`<div class="space-y-4">`);
1641
- if (loading) {
1642
- $$renderer.push("<!--[0-->");
1643
- $$renderer.push(`<div class="border-border bg-muted/30 rounded-md border px-4 py-3"><p class="text-muted-foreground text-xs">Loading versions…</p></div>`);
1644
- } else if (versions.length === 0) {
1645
- $$renderer.push("<!--[1-->");
1646
- $$renderer.push(`<div class="border-border bg-muted/30 text-muted-foreground rounded-md border px-4 py-3 text-sm">No versions yet. Upload one to get started.</div>`);
1647
- } else {
1648
- $$renderer.push("<!--[-1-->");
1649
- $$renderer.push(`<div class="border-border bg-muted/30 flex items-center justify-between gap-3 rounded-md border px-4 py-3"><div class="flex min-w-0 items-center gap-2 text-sm"><span class="bg-success h-2 w-2 shrink-0 rounded-full"></span> `);
1650
- if (liveVersion()) {
1651
- $$renderer.push("<!--[0-->");
1652
- $$renderer.push(`<span><strong>Live now</strong> — v${escape_html(liveVersion().versionNumber)}</span> `);
1653
- if (draftIsAhead() && draftVersion()) {
1654
- $$renderer.push("<!--[0-->");
1655
- $$renderer.push(`<span class="text-muted-foreground">· newer version uploaded</span>`);
1656
- } else {
1657
- $$renderer.push("<!--[-1-->");
1658
- $$renderer.push(`<span class="text-muted-foreground">· up to date</span>`);
1659
- }
1660
- $$renderer.push(`<!--]-->`);
1661
- } else {
1662
- $$renderer.push("<!--[-1-->");
1663
- $$renderer.push(`<span class="text-muted-foreground">Not yet published — promote a draft to go live</span>`);
1664
- }
1665
- $$renderer.push(`<!--]--></div> `);
1666
- if (draftIsAhead() && draftVersion()) {
1667
- $$renderer.push("<!--[0-->");
1668
- Button($$renderer, {
1669
- size: "sm",
1670
- onclick: () => publish(null),
1671
- disabled: publishing,
1672
- class: "shrink-0",
1673
- children: ($$renderer) => {
1674
- Cloud_upload($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
1675
- $$renderer.push(`<!----> Publish v${escape_html(draftVersion().versionNumber)}`);
1676
- },
1677
- $$slots: { default: true }
1678
- });
1679
- } else $$renderer.push("<!--[-1-->");
1680
- $$renderer.push(`<!--]--></div>`);
1681
- }
1682
- $$renderer.push(`<!--]--> <div class="flex items-center justify-between gap-3"><div><h3 class="text-base font-semibold tracking-tight">Versions</h3> <p class="text-muted-foreground mt-1 text-xs">Each upload becomes a version. The live version is what runs when someone uses this
1683
- definition.</p></div> `);
1684
- Button($$renderer, {
1685
- variant: "outline",
1686
- size: "sm",
1687
- onclick: () => showUploadDialog = true,
1688
- class: "shrink-0",
1689
- children: ($$renderer) => {
1690
- Upload($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
1691
- $$renderer.push(`<!----> Upload new version`);
1692
- },
1693
- $$slots: { default: true }
1694
- });
1695
- $$renderer.push(`<!----></div> `);
1696
- if (!loading && versions.length > 0) {
1697
- $$renderer.push("<!--[0-->");
1698
- $$renderer.push(`<div class="space-y-2"><!--[-->`);
1699
- const each_array = ensure_array_like(versions);
1700
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1701
- let version = each_array[$$index];
1702
- const isLive = version.id === liveVersionId;
1703
- const isDraft = version.id === draftVersionId && !isLive;
1704
- $$renderer.push(`<div${attr_class(`rounded-md border p-3 transition-colors ${isLive ? "border-primary/40 bg-accent/40" : "border-border bg-card hover:bg-muted/30"}`)}><div class="flex items-start justify-between gap-3"><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><span class="font-mono text-sm font-semibold">v${escape_html(version.versionNumber)}</span> `);
1705
- if (isLive) {
1706
- $$renderer.push("<!--[0-->");
1707
- $$renderer.push(`<span class="bg-success/10 text-success rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase">live</span>`);
1708
- } else $$renderer.push("<!--[-1-->");
1709
- $$renderer.push(`<!--]--> `);
1710
- if (isDraft) {
1711
- $$renderer.push("<!--[0-->");
1712
- $$renderer.push(`<span class="bg-warning/10 text-warning rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase">draft</span>`);
1713
- } else $$renderer.push("<!--[-1-->");
1714
- $$renderer.push(`<!--]--></div> `);
1715
- if (version.changeNote) {
1716
- $$renderer.push("<!--[0-->");
1717
- $$renderer.push(`<p class="mt-1 truncate text-sm">${escape_html(version.changeNote)}</p>`);
1718
- } else if (version.originalFilename) {
1719
- $$renderer.push("<!--[1-->");
1720
- $$renderer.push(`<p class="text-muted-foreground mt-1 truncate font-mono text-xs">${escape_html(version.originalFilename)}</p>`);
1721
- } else $$renderer.push("<!--[-1-->");
1722
- $$renderer.push(`<!--]--> <p class="text-muted-foreground mt-1 text-xs">Uploaded ${escape_html(formatRelative(version.uploadedAt))}</p></div> <div class="flex shrink-0 items-center gap-1">`);
1723
- Button($$renderer, {
1724
- size: "sm",
1725
- variant: isLive ? "outline" : "ghost",
1726
- onclick: () => isLive ? onOpenRunner(definitionGuid, "live") : isDraft ? onOpenRunner(definitionGuid, "draft") : onOpenRunner(definitionGuid, void 0, version.id),
1727
- children: ($$renderer) => {
1728
- Play($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
1729
- $$renderer.push(`<!----> Run`);
1730
- },
1731
- $$slots: { default: true }
1732
- });
1733
- $$renderer.push(`<!----> `);
1734
- if (!isLive) {
1735
- $$renderer.push("<!--[0-->");
1736
- Button($$renderer, {
1737
- size: "sm",
1738
- variant: "outline",
1739
- disabled: publishing,
1740
- onclick: () => {
1741
- publishingTarget = version;
1742
- publishingTargetSet = true;
1743
- },
1744
- children: ($$renderer) => {
1745
- $$renderer.push(`<!---->Make live`);
1746
- },
1747
- $$slots: { default: true }
1748
- });
1749
- } else $$renderer.push("<!--[-1-->");
1750
- $$renderer.push(`<!--]--> `);
1751
- if (!isLive && !isDraft) {
1752
- $$renderer.push("<!--[0-->");
1753
- Button($$renderer, {
1754
- size: "sm",
1755
- variant: "ghost",
1756
- onclick: () => confirmingDelete = version,
1757
- disabled: deletingId === version.id,
1758
- class: "text-muted-foreground hover:text-destructive h-8 w-8 p-0",
1759
- "aria-label": "Delete version",
1760
- children: ($$renderer) => {
1761
- Trash_2($$renderer, { class: "h-3.5 w-3.5" });
1762
- },
1763
- $$slots: { default: true }
1764
- });
1765
- } else $$renderer.push("<!--[-1-->");
1766
- $$renderer.push(`<!--]--></div></div></div>`);
1767
- }
1768
- $$renderer.push(`<!--]--></div>`);
1769
- } else $$renderer.push("<!--[-1-->");
1770
- $$renderer.push(`<!--]--></div> `);
1771
- UploadVersionDialog($$renderer, {
1772
- nextVersionNumber: nextVersionNumber(),
1773
- open: showUploadDialog,
1774
- onOpenChange: (o) => showUploadDialog = o});
1775
- $$renderer.push(`<!----> `);
1776
- if (Root) {
1777
- $$renderer.push("<!--[-->");
1778
- Root($$renderer, {
1779
- open: publishingTargetSet,
1780
- onOpenChange: (o) => {
1781
- if (!o) {
1782
- publishingTarget = null;
1783
- publishingTargetSet = false;
1784
- }
1785
- },
1786
- children: ($$renderer) => {
1787
- if (Alert_dialog_content) {
1788
- $$renderer.push("<!--[-->");
1789
- Alert_dialog_content($$renderer, {
1790
- children: ($$renderer) => {
1791
- if (Alert_dialog_header) {
1792
- $$renderer.push("<!--[-->");
1793
- Alert_dialog_header($$renderer, {
1794
- children: ($$renderer) => {
1795
- if (Alert_dialog_title) {
1796
- $$renderer.push("<!--[-->");
1797
- Alert_dialog_title($$renderer, {
1798
- children: ($$renderer) => {
1799
- if (publishingTarget) {
1800
- $$renderer.push("<!--[0-->");
1801
- $$renderer.push(`Make v${escape_html(publishingTarget.versionNumber)} live?`);
1802
- } else {
1803
- $$renderer.push("<!--[-1-->");
1804
- $$renderer.push(`Publish current draft?`);
1805
- }
1806
- $$renderer.push(`<!--]-->`);
1807
- },
1808
- $$slots: { default: true }
1809
- });
1810
- $$renderer.push("<!--]-->");
1811
- } else {
1812
- $$renderer.push("<!--[!-->");
1813
- $$renderer.push("<!--]-->");
1814
- }
1815
- $$renderer.push(` `);
1816
- if (Alert_dialog_description) {
1817
- $$renderer.push("<!--[-->");
1818
- Alert_dialog_description($$renderer, {
1819
- children: ($$renderer) => {
1820
- if (publishingTarget && liveVersion() && publishingTarget.versionNumber < liveVersion().versionNumber) {
1821
- $$renderer.push("<!--[0-->");
1822
- $$renderer.push(`Rolling back to an older version. Anyone running this definition will immediately get v${escape_html(publishingTarget.versionNumber)}
1823
- instead of v${escape_html(liveVersion().versionNumber)}.`);
1824
- } else if (publishingTarget) {
1825
- $$renderer.push("<!--[1-->");
1826
- $$renderer.push(`Anyone running this definition will immediately get v${escape_html(publishingTarget.versionNumber)}
1827
- instead of v${escape_html(liveVersion()?.versionNumber ?? "—")}.`);
1828
- } else {
1829
- $$renderer.push("<!--[-1-->");
1830
- $$renderer.push(`Promotes the current draft to live. Everyone running this definition gets the new version
1831
- immediately.`);
1832
- }
1833
- $$renderer.push(`<!--]-->`);
1834
- },
1835
- $$slots: { default: true }
1836
- });
1837
- $$renderer.push("<!--]-->");
1838
- } else {
1839
- $$renderer.push("<!--[!-->");
1840
- $$renderer.push("<!--]-->");
1841
- }
1842
- },
1843
- $$slots: { default: true }
1844
- });
1845
- $$renderer.push("<!--]-->");
1846
- } else {
1847
- $$renderer.push("<!--[!-->");
1848
- $$renderer.push("<!--]-->");
1849
- }
1850
- $$renderer.push(` `);
1851
- if (Alert_dialog_footer) {
1852
- $$renderer.push("<!--[-->");
1853
- Alert_dialog_footer($$renderer, {
1854
- children: ($$renderer) => {
1855
- if (Alert_dialog_cancel) {
1856
- $$renderer.push("<!--[-->");
1857
- Alert_dialog_cancel($$renderer, {
1858
- children: ($$renderer) => {
1859
- $$renderer.push(`<!---->Cancel`);
1860
- },
1861
- $$slots: { default: true }
1862
- });
1863
- $$renderer.push("<!--]-->");
1864
- } else {
1865
- $$renderer.push("<!--[!-->");
1866
- $$renderer.push("<!--]-->");
1867
- }
1868
- $$renderer.push(` `);
1869
- if (Alert_dialog_action) {
1870
- $$renderer.push("<!--[-->");
1871
- Alert_dialog_action($$renderer, {
1872
- onclick: () => publish(publishingTarget),
1873
- disabled: publishing,
1874
- children: ($$renderer) => {
1875
- $$renderer.push(`<!---->${escape_html(publishing ? "Publishing…" : "Publish")}`);
1876
- },
1877
- $$slots: { default: true }
1878
- });
1879
- $$renderer.push("<!--]-->");
1880
- } else {
1881
- $$renderer.push("<!--[!-->");
1882
- $$renderer.push("<!--]-->");
1883
- }
1884
- },
1885
- $$slots: { default: true }
1886
- });
1887
- $$renderer.push("<!--]-->");
1888
- } else {
1889
- $$renderer.push("<!--[!-->");
1890
- $$renderer.push("<!--]-->");
1891
- }
1892
- },
1893
- $$slots: { default: true }
1894
- });
1895
- $$renderer.push("<!--]-->");
1896
- } else {
1897
- $$renderer.push("<!--[!-->");
1898
- $$renderer.push("<!--]-->");
1899
- }
1900
- },
1901
- $$slots: { default: true }
1902
- });
1903
- $$renderer.push("<!--]-->");
1904
- } else {
1905
- $$renderer.push("<!--[!-->");
1906
- $$renderer.push("<!--]-->");
1907
- }
1908
- $$renderer.push(` `);
1909
- if (Root) {
1910
- $$renderer.push("<!--[-->");
1911
- Root($$renderer, {
1912
- open: !!confirmingDelete,
1913
- onOpenChange: (o) => !o && (confirmingDelete = null),
1914
- children: ($$renderer) => {
1915
- if (Alert_dialog_content) {
1916
- $$renderer.push("<!--[-->");
1917
- Alert_dialog_content($$renderer, {
1918
- children: ($$renderer) => {
1919
- if (Alert_dialog_header) {
1920
- $$renderer.push("<!--[-->");
1921
- Alert_dialog_header($$renderer, {
1922
- children: ($$renderer) => {
1923
- if (Alert_dialog_title) {
1924
- $$renderer.push("<!--[-->");
1925
- Alert_dialog_title($$renderer, {
1926
- children: ($$renderer) => {
1927
- $$renderer.push(`<!---->Delete v${escape_html(confirmingDelete?.versionNumber)}?`);
1928
- },
1929
- $$slots: { default: true }
1930
- });
1931
- $$renderer.push("<!--]-->");
1932
- } else {
1933
- $$renderer.push("<!--[!-->");
1934
- $$renderer.push("<!--]-->");
1935
- }
1936
- $$renderer.push(` `);
1937
- if (Alert_dialog_description) {
1938
- $$renderer.push("<!--[-->");
1939
- Alert_dialog_description($$renderer, {
1940
- children: ($$renderer) => {
1941
- $$renderer.push(`<!---->This permanently removes the version's file. The live and draft versions cannot be deleted —
1942
- repoint first.`);
1943
- },
1944
- $$slots: { default: true }
1945
- });
1946
- $$renderer.push("<!--]-->");
1947
- } else {
1948
- $$renderer.push("<!--[!-->");
1949
- $$renderer.push("<!--]-->");
1950
- }
1951
- },
1952
- $$slots: { default: true }
1953
- });
1954
- $$renderer.push("<!--]-->");
1955
- } else {
1956
- $$renderer.push("<!--[!-->");
1957
- $$renderer.push("<!--]-->");
1958
- }
1959
- $$renderer.push(` `);
1960
- if (Alert_dialog_footer) {
1961
- $$renderer.push("<!--[-->");
1962
- Alert_dialog_footer($$renderer, {
1963
- children: ($$renderer) => {
1964
- if (Alert_dialog_cancel) {
1965
- $$renderer.push("<!--[-->");
1966
- Alert_dialog_cancel($$renderer, {
1967
- children: ($$renderer) => {
1968
- $$renderer.push(`<!---->Cancel`);
1969
- },
1970
- $$slots: { default: true }
1971
- });
1972
- $$renderer.push("<!--]-->");
1973
- } else {
1974
- $$renderer.push("<!--[!-->");
1975
- $$renderer.push("<!--]-->");
1976
- }
1977
- $$renderer.push(` `);
1978
- if (Alert_dialog_action) {
1979
- $$renderer.push("<!--[-->");
1980
- Alert_dialog_action($$renderer, {
1981
- onclick: () => confirmingDelete && deleteVersion(confirmingDelete),
1982
- disabled: !!deletingId,
1983
- children: ($$renderer) => {
1984
- $$renderer.push(`<!---->${escape_html(deletingId ? "Deleting…" : "Delete")}`);
1985
- },
1986
- $$slots: { default: true }
1987
- });
1988
- $$renderer.push("<!--]-->");
1989
- } else {
1990
- $$renderer.push("<!--[!-->");
1991
- $$renderer.push("<!--]-->");
1992
- }
1993
- },
1994
- $$slots: { default: true }
1995
- });
1996
- $$renderer.push("<!--]-->");
1997
- } else {
1998
- $$renderer.push("<!--[!-->");
1999
- $$renderer.push("<!--]-->");
2000
- }
2001
- },
2002
- $$slots: { default: true }
2003
- });
2004
- $$renderer.push("<!--]-->");
2005
- } else {
2006
- $$renderer.push("<!--[!-->");
2007
- $$renderer.push("<!--]-->");
2008
- }
2009
- },
2010
- $$slots: { default: true }
2011
- });
2012
- $$renderer.push("<!--]-->");
2013
- } else {
2014
- $$renderer.push("<!--[!-->");
2015
- $$renderer.push("<!--]-->");
2016
- }
2017
- });
2018
- }
2019
- //#endregion
2020
- //#region src/routes/projects/_components/MintShareLinkDialog.svelte
2021
- function MintShareLinkDialog($$renderer, $$props) {
2022
- $$renderer.component(($$renderer) => {
2023
- let { definitionGuid, open, onOpenChange, onMinted } = $$props;
2024
- let channel = "live";
2025
- let allowSolve = true;
2026
- let label = "";
2027
- let expiresEnabled = false;
2028
- let capEnabled = true;
2029
- let cap = DEFAULT_SHARE_LINK_MAX_SOLVES;
2030
- let creating = false;
2031
- let mintedToken = null;
2032
- let mintedShareUrl = null;
2033
- let copied = false;
2034
- async function submit() {
2035
- if (cap > 1e3) {
2036
- if (!confirm(`You're raising the cap above the default of 1000. An uncapped or high-cap link is a denial-of-wallet vector if leaked. Continue?`)) return;
2037
- }
2038
- creating = true;
2039
- try {
2040
- const body = {
2041
- channel,
2042
- allowSolve,
2043
- ...label.trim() ? { name: label.trim() } : {},
2044
- maxSolves: cap
2045
- };
2046
- const res = await fetch(`/api/v1/definitions/${definitionGuid}/share-links`, {
2047
- method: "POST",
2048
- headers: { "Content-Type": "application/json" },
2049
- body: JSON.stringify(body)
2050
- });
2051
- if (!res.ok) {
2052
- const err = await res.json().catch(() => ({}));
2053
- toast.error(err.message || err.error || "Failed to mint share link");
2054
- return;
2055
- }
2056
- const data = await res.json();
2057
- mintedToken = data.token;
2058
- mintedShareUrl = `${window.location.origin}/library/${definitionGuid}?token=${data.token}`;
2059
- onMinted();
2060
- } catch {
2061
- toast.error("Failed to mint share link");
2062
- } finally {
2063
- creating = false;
2064
- }
2065
- }
2066
- async function copyUrl() {
2067
- if (!mintedShareUrl) return;
2068
- try {
2069
- await navigator.clipboard.writeText(mintedShareUrl);
2070
- copied = true;
2071
- setTimeout(() => copied = false, 2e3);
2072
- } catch {
2073
- toast.error("Could not copy to clipboard");
2074
- }
2075
- }
2076
- let $$settled = true;
2077
- let $$inner_renderer;
2078
- function $$render_inner($$renderer) {
2079
- if (Root$1) {
2080
- $$renderer.push("<!--[-->");
2081
- Root$1($$renderer, {
2082
- open,
2083
- onOpenChange,
2084
- children: ($$renderer) => {
2085
- if (Dialog_content) {
2086
- $$renderer.push("<!--[-->");
2087
- Dialog_content($$renderer, {
2088
- class: "max-w-lg",
2089
- children: ($$renderer) => {
2090
- if (!mintedToken) {
2091
- $$renderer.push("<!--[0-->");
2092
- if (Dialog_header) {
2093
- $$renderer.push("<!--[-->");
2094
- Dialog_header($$renderer, {
2095
- children: ($$renderer) => {
2096
- if (Dialog_title) {
2097
- $$renderer.push("<!--[-->");
2098
- Dialog_title($$renderer, {
2099
- children: ($$renderer) => {
2100
- $$renderer.push(`<!---->New share link`);
2101
- },
2102
- $$slots: { default: true }
2103
- });
2104
- $$renderer.push("<!--]-->");
2105
- } else {
2106
- $$renderer.push("<!--[!-->");
2107
- $$renderer.push("<!--]-->");
2108
- }
2109
- $$renderer.push(` `);
2110
- if (Dialog_description) {
2111
- $$renderer.push("<!--[-->");
2112
- Dialog_description($$renderer, {
2113
- children: ($$renderer) => {
2114
- $$renderer.push(`<!---->Anyone with the link gets the access you configure here. Caps and expiry are the
2115
- load-bearing protection — they assume the URL will eventually leak.`);
2116
- },
2117
- $$slots: { default: true }
2118
- });
2119
- $$renderer.push("<!--]-->");
2120
- } else {
2121
- $$renderer.push("<!--[!-->");
2122
- $$renderer.push("<!--]-->");
2123
- }
2124
- },
2125
- $$slots: { default: true }
2126
- });
2127
- $$renderer.push("<!--]-->");
2128
- } else {
2129
- $$renderer.push("<!--[!-->");
2130
- $$renderer.push("<!--]-->");
2131
- }
2132
- $$renderer.push(` <div class="mt-4 space-y-4"><div class="space-y-1.5">`);
2133
- Label($$renderer, {
2134
- for: "sl-channel",
2135
- children: ($$renderer) => {
2136
- $$renderer.push(`<!---->Channel`);
2137
- },
2138
- $$slots: { default: true }
2139
- });
2140
- $$renderer.push(`<!----> `);
2141
- $$renderer.select({
2142
- id: "sl-channel",
2143
- value: channel,
2144
- class: "border-input bg-background h-9 w-full rounded-md border px-3 text-sm"
2145
- }, ($$renderer) => {
2146
- $$renderer.option({ value: "live" }, ($$renderer) => {
2147
- $$renderer.push(`Live — recipients see the published version`);
2148
- });
2149
- $$renderer.option({ value: "draft" }, ($$renderer) => {
2150
- $$renderer.push(`Draft — recipients see the unpublished version`);
2151
- });
2152
- });
2153
- $$renderer.push(` `);
2154
- $$renderer.push("<!--[-1-->");
2155
- $$renderer.push(`<!--]--></div> <div class="space-y-1.5">`);
2156
- Label($$renderer, {
2157
- for: "sl-label",
2158
- children: ($$renderer) => {
2159
- $$renderer.push(`<!---->Label (optional)`);
2160
- },
2161
- $$slots: { default: true }
2162
- });
2163
- $$renderer.push(`<!----> `);
2164
- Input($$renderer, {
2165
- id: "sl-label",
2166
- placeholder: "e.g. Demo for Acme",
2167
- get value() {
2168
- return label;
2169
- },
2170
- set value($$value) {
2171
- label = $$value;
2172
- $$settled = false;
2173
- }
2174
- });
2175
- $$renderer.push(`<!----></div> <div class="border-border rounded-md border p-3"><label class="flex cursor-pointer items-start gap-3"><input type="checkbox"${attr("checked", allowSolve, true)} class="mt-0.5 shrink-0"/> <div class="min-w-0"><p class="text-sm font-medium">Allow solve</p> <p class="text-muted-foreground mt-0.5 text-xs">When off, recipients can view the schema and parameters but can't run solves. When
2176
- on, every solve counts against the cap.</p></div></label></div> <div class="border-border rounded-md border p-3"><label class="flex cursor-pointer items-start gap-3"><input type="checkbox"${attr("checked", capEnabled, true)} class="mt-0.5 shrink-0"/> <div class="min-w-0 flex-1"><p class="text-sm font-medium">Cap total solves</p> <p class="text-muted-foreground mt-0.5 text-xs">Default ${escape_html(DEFAULT_SHARE_LINK_MAX_SOLVES.toLocaleString())}. Recommended. Uncapped
2177
- links are a denial-of-wallet risk if leaked.</p></div></label> `);
2178
- $$renderer.push("<!--[0-->");
2179
- $$renderer.push(`<div class="mt-2 ml-6">`);
2180
- Input($$renderer, {
2181
- type: "number",
2182
- min: 1,
2183
- class: "h-8 w-32 text-sm",
2184
- get value() {
2185
- return cap;
2186
- },
2187
- set value($$value) {
2188
- cap = $$value;
2189
- $$settled = false;
2190
- }
2191
- });
2192
- $$renderer.push(`<!----></div>`);
2193
- $$renderer.push(`<!--]--></div> <div class="border-border rounded-md border p-3"><label class="flex cursor-pointer items-start gap-3"><input type="checkbox"${attr("checked", expiresEnabled, true)} class="mt-0.5 shrink-0"/> <div class="min-w-0 flex-1"><p class="text-sm font-medium">Set expiry</p> <p class="text-muted-foreground mt-0.5 text-xs">The link stops working after this date. Off = never expires.</p></div></label> `);
2194
- $$renderer.push("<!--[-1-->");
2195
- $$renderer.push(`<!--]--></div></div> `);
2196
- if (Dialog_footer) {
2197
- $$renderer.push("<!--[-->");
2198
- Dialog_footer($$renderer, {
2199
- class: "mt-4",
2200
- children: ($$renderer) => {
2201
- Button($$renderer, {
2202
- variant: "outline",
2203
- onclick: () => onOpenChange(false),
2204
- children: ($$renderer) => {
2205
- $$renderer.push(`<!---->Cancel`);
2206
- },
2207
- $$slots: { default: true }
2208
- });
2209
- $$renderer.push(`<!----> `);
2210
- Button($$renderer, {
2211
- onclick: submit,
2212
- disabled: creating || cap < 1,
2213
- children: ($$renderer) => {
2214
- $$renderer.push(`<!---->${escape_html(creating ? "Creating…" : "Create link")}`);
2215
- },
2216
- $$slots: { default: true }
2217
- });
2218
- $$renderer.push(`<!---->`);
2219
- },
2220
- $$slots: { default: true }
2221
- });
2222
- $$renderer.push("<!--]-->");
2223
- } else {
2224
- $$renderer.push("<!--[!-->");
2225
- $$renderer.push("<!--]-->");
2226
- }
2227
- } else {
2228
- $$renderer.push("<!--[-1-->");
2229
- if (Dialog_header) {
2230
- $$renderer.push("<!--[-->");
2231
- Dialog_header($$renderer, {
2232
- children: ($$renderer) => {
2233
- if (Dialog_title) {
2234
- $$renderer.push("<!--[-->");
2235
- Dialog_title($$renderer, {
2236
- children: ($$renderer) => {
2237
- $$renderer.push(`<!---->Share link ready`);
2238
- },
2239
- $$slots: { default: true }
2240
- });
2241
- $$renderer.push("<!--]-->");
2242
- } else {
2243
- $$renderer.push("<!--[!-->");
2244
- $$renderer.push("<!--]-->");
2245
- }
2246
- $$renderer.push(` `);
2247
- if (Dialog_description) {
2248
- $$renderer.push("<!--[-->");
2249
- Dialog_description($$renderer, {
2250
- children: ($$renderer) => {
2251
- $$renderer.push(`<!---->Copy the link now — this is the only time you'll see it. The server stores only a hash; we
2252
- cannot show it again.`);
2253
- },
2254
- $$slots: { default: true }
2255
- });
2256
- $$renderer.push("<!--]-->");
2257
- } else {
2258
- $$renderer.push("<!--[!-->");
2259
- $$renderer.push("<!--]-->");
2260
- }
2261
- },
2262
- $$slots: { default: true }
2263
- });
2264
- $$renderer.push("<!--]-->");
2265
- } else {
2266
- $$renderer.push("<!--[!-->");
2267
- $$renderer.push("<!--]-->");
2268
- }
2269
- $$renderer.push(` <div class="mt-4 space-y-3"><div class="border-warning/40 bg-warning/5 rounded-md border p-3"><p class="text-warning flex items-start gap-2 text-xs">`);
2270
- Triangle_alert($$renderer, { class: "mt-0.5 h-3.5 w-3.5 shrink-0" });
2271
- $$renderer.push(`<!----> <span>This URL grants the configured access to anyone who receives it. Treat it like a
2272
- password — revoke it immediately if it's compromised.</span></p></div> <div class="border-border bg-muted/40 rounded-md border p-3"><p class="text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase">Share URL</p> <div class="flex items-start gap-2"><code class="bg-background min-w-0 flex-1 rounded p-2 font-mono text-xs break-all">${escape_html(mintedShareUrl)}</code> `);
2273
- Button($$renderer, {
2274
- size: "sm",
2275
- variant: copied ? "default" : "outline",
2276
- onclick: copyUrl,
2277
- class: "shrink-0",
2278
- children: ($$renderer) => {
2279
- if (copied) {
2280
- $$renderer.push("<!--[0-->");
2281
- Check($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
2282
- $$renderer.push(`<!----> Copied`);
2283
- } else {
2284
- $$renderer.push("<!--[-1-->");
2285
- Copy($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
2286
- $$renderer.push(`<!----> Copy`);
2287
- }
2288
- $$renderer.push(`<!--]-->`);
2289
- },
2290
- $$slots: { default: true }
2291
- });
2292
- $$renderer.push(`<!----></div></div></div> `);
2293
- if (Dialog_footer) {
2294
- $$renderer.push("<!--[-->");
2295
- Dialog_footer($$renderer, {
2296
- class: "mt-4",
2297
- children: ($$renderer) => {
2298
- Button($$renderer, {
2299
- onclick: () => onOpenChange(false),
2300
- children: ($$renderer) => {
2301
- $$renderer.push(`<!---->Done`);
2302
- },
2303
- $$slots: { default: true }
2304
- });
2305
- },
2306
- $$slots: { default: true }
2307
- });
2308
- $$renderer.push("<!--]-->");
2309
- } else {
2310
- $$renderer.push("<!--[!-->");
2311
- $$renderer.push("<!--]-->");
2312
- }
2313
- }
2314
- $$renderer.push(`<!--]-->`);
2315
- },
2316
- $$slots: { default: true }
2317
- });
2318
- $$renderer.push("<!--]-->");
2319
- } else {
2320
- $$renderer.push("<!--[!-->");
2321
- $$renderer.push("<!--]-->");
2322
- }
2323
- },
2324
- $$slots: { default: true }
2325
- });
2326
- $$renderer.push("<!--]-->");
2327
- } else {
2328
- $$renderer.push("<!--[!-->");
2329
- $$renderer.push("<!--]-->");
2330
- }
2331
- }
2332
- do {
2333
- $$settled = true;
2334
- $$inner_renderer = $$renderer.copy();
2335
- $$render_inner($$inner_renderer);
2336
- } while (!$$settled);
2337
- $$renderer.subsume($$inner_renderer);
2338
- });
2339
- }
2340
- //#endregion
2341
- //#region src/routes/projects/_components/ShareLinkSection.svelte
2342
- function ShareLinkSection($$renderer, $$props) {
2343
- $$renderer.component(($$renderer) => {
2344
- let { definitionGuid } = $$props;
2345
- let links = [];
2346
- let loading = true;
2347
- let showMintDialog = false;
2348
- let confirmingRevoke = null;
2349
- let revokingId = null;
2350
- async function loadLinks() {
2351
- loading = true;
2352
- try {
2353
- const res = await fetch(`/api/v1/definitions/${definitionGuid}/share-links`);
2354
- if (!res.ok) throw new Error(`${res.status}`);
2355
- links = (await res.json()).items;
2356
- } catch {
2357
- toast.error("Failed to load share links");
2358
- } finally {
2359
- loading = false;
2360
- }
2361
- }
2362
- async function revoke(link) {
2363
- revokingId = link.id;
2364
- try {
2365
- if (!(await fetch(`/api/v1/definitions/${definitionGuid}/share-links/${link.id}`, { method: "DELETE" })).ok) {
2366
- toast.error("Failed to revoke link");
2367
- return;
2368
- }
2369
- toast.success("Link revoked");
2370
- await loadLinks();
2371
- } catch {
2372
- toast.error("Failed to revoke link");
2373
- } finally {
2374
- revokingId = null;
2375
- confirmingRevoke = null;
2376
- }
2377
- }
2378
- function formatExpiry(iso = null) {
2379
- if (!iso) return "Never";
2380
- const date = new Date(iso);
2381
- const now = /* @__PURE__ */ new Date();
2382
- const expired = date.getTime() < now.getTime();
2383
- return {
2384
- text: date.toLocaleDateString(),
2385
- expired
2386
- };
2387
- }
2388
- function formatRelative(iso) {
2389
- const ms = Date.now() - new Date(iso).getTime();
2390
- const minutes = Math.floor(ms / 6e4);
2391
- if (minutes < 1) return "just now";
2392
- if (minutes < 60) return `${minutes}m ago`;
2393
- const hours = Math.floor(minutes / 60);
2394
- if (hours < 24) return `${hours}h ago`;
2395
- const days = Math.floor(hours / 24);
2396
- if (days < 30) return `${days}d ago`;
2397
- return new Date(iso).toLocaleDateString();
2398
- }
2399
- const activeLinks = derived(() => links.filter((l) => !l.revokedAt));
2400
- $$renderer.push(`<div class="space-y-4"><div><h3 class="text-base font-semibold tracking-tight">Share links</h3> <p class="text-muted-foreground mt-1 text-xs">Per-definition tokens that grant access without an account. Use for client demos, embeds, and
2401
- review links.</p></div> `);
2402
- if (loading) {
2403
- $$renderer.push("<!--[0-->");
2404
- $$renderer.push(`<div class="border-border rounded-md border p-6 text-center"><p class="text-muted-foreground text-xs">Loading…</p></div>`);
2405
- } else if (activeLinks().length === 0) {
2406
- $$renderer.push("<!--[1-->");
2407
- {
2408
- function actions($$renderer) {
2409
- Button($$renderer, {
2410
- size: "sm",
2411
- onclick: () => showMintDialog = true,
2412
- children: ($$renderer) => {
2413
- Plus($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
2414
- $$renderer.push(`<!----> New link`);
2415
- },
2416
- $$slots: { default: true }
2417
- });
2418
- }
2419
- EmptyState($$renderer, {
2420
- size: "sm",
2421
- icon: Link_2,
2422
- title: "No share links yet",
2423
- description: "Mint a link to share this definition without requiring the recipient to have an account.",
2424
- actions});
2425
- }
2426
- } else {
2427
- $$renderer.push("<!--[-1-->");
2428
- $$renderer.push(`<div class="border-border bg-card overflow-hidden rounded-md border"><div class="border-border bg-muted/40 flex items-center justify-between gap-3 border-b px-4 py-2"><span class="text-muted-foreground text-xs font-medium tracking-wider uppercase">${escape_html(activeLinks().length)} active link${escape_html(activeLinks().length === 1 ? "" : "s")}</span> `);
2429
- Button($$renderer, {
2430
- size: "sm",
2431
- variant: "outline",
2432
- onclick: () => showMintDialog = true,
2433
- children: ($$renderer) => {
2434
- Plus($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
2435
- $$renderer.push(`<!----> New link`);
2436
- },
2437
- $$slots: { default: true }
2438
- });
2439
- $$renderer.push(`<!----></div> <!--[-->`);
2440
- const each_array = ensure_array_like(activeLinks());
2441
- for (let i = 0, $$length = each_array.length; i < $$length; i++) {
2442
- let link = each_array[i];
2443
- const expiry = formatExpiry(link.expiresAt);
2444
- const expired = typeof expiry === "object" && expiry.expired;
2445
- const capValue = link.maxSolves;
2446
- const hasCap = capValue !== null && capValue !== void 0;
2447
- const capReached = hasCap && link.solveCount >= capValue;
2448
- $$renderer.push(`<div${attr_class(`flex items-start gap-3 px-4 py-3 ${i < activeLinks().length - 1 ? "border-border border-b" : ""}`)}><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-1.5"><p class="truncate text-sm font-medium">${escape_html(link.name ?? "Untitled link")}</p> <span${attr_class(`rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase ${link.channel === "live" ? "bg-success/10 text-success" : "bg-warning/10 text-warning"}`)}>${escape_html(link.channel)}</span> `);
2449
- if (!link.allowSolve) {
2450
- $$renderer.push("<!--[0-->");
2451
- $$renderer.push(`<span class="bg-muted text-muted-foreground rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase">view-only</span>`);
2452
- } else $$renderer.push("<!--[-1-->");
2453
- $$renderer.push(`<!--]--> `);
2454
- if (expired) {
2455
- $$renderer.push("<!--[0-->");
2456
- $$renderer.push(`<span class="bg-destructive/10 text-destructive flex items-center gap-1 rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase">`);
2457
- Triangle_alert($$renderer, { class: "h-2.5 w-2.5" });
2458
- $$renderer.push(`<!----> expired</span>`);
2459
- } else $$renderer.push("<!--[-1-->");
2460
- $$renderer.push(`<!--]--> `);
2461
- if (capReached) {
2462
- $$renderer.push("<!--[0-->");
2463
- $$renderer.push(`<span class="bg-destructive/10 text-destructive rounded-full px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase">cap reached</span>`);
2464
- } else $$renderer.push("<!--[-1-->");
2465
- $$renderer.push(`<!--]--></div> <div class="text-muted-foreground mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-xs"><span class="font-mono tabular-nums">${escape_html(link.solveCount.toLocaleString())}${escape_html(hasCap ? ` / ${capValue.toLocaleString()}` : "")} solves</span> <span>·</span> <span>Expires: ${escape_html(typeof expiry === "object" ? expiry.text : expiry)}</span> <span>·</span> <span>Minted ${escape_html(formatRelative(link.createdAt))}</span></div></div> `);
2466
- Button($$renderer, {
2467
- variant: "ghost",
2468
- size: "icon",
2469
- onclick: () => confirmingRevoke = link,
2470
- disabled: revokingId === link.id,
2471
- class: "text-muted-foreground hover:text-destructive h-7 w-7 shrink-0",
2472
- "aria-label": "Revoke link",
2473
- children: ($$renderer) => {
2474
- Trash_2($$renderer, { class: "h-3.5 w-3.5" });
2475
- },
2476
- $$slots: { default: true }
2477
- });
2478
- $$renderer.push(`<!----></div>`);
2479
- }
2480
- $$renderer.push(`<!--]--></div>`);
2481
- }
2482
- $$renderer.push(`<!--]--></div> `);
2483
- MintShareLinkDialog($$renderer, {
2484
- definitionGuid,
2485
- open: showMintDialog,
2486
- onOpenChange: (o) => showMintDialog = o,
2487
- onMinted: loadLinks
2488
- });
2489
- $$renderer.push(`<!----> `);
2490
- if (Root) {
2491
- $$renderer.push("<!--[-->");
2492
- Root($$renderer, {
2493
- open: !!confirmingRevoke,
2494
- onOpenChange: (o) => !o && (confirmingRevoke = null),
2495
- children: ($$renderer) => {
2496
- if (Alert_dialog_content) {
2497
- $$renderer.push("<!--[-->");
2498
- Alert_dialog_content($$renderer, {
2499
- children: ($$renderer) => {
2500
- if (Alert_dialog_header) {
2501
- $$renderer.push("<!--[-->");
2502
- Alert_dialog_header($$renderer, {
2503
- children: ($$renderer) => {
2504
- if (Alert_dialog_title) {
2505
- $$renderer.push("<!--[-->");
2506
- Alert_dialog_title($$renderer, {
2507
- children: ($$renderer) => {
2508
- $$renderer.push(`<!---->Revoke this link?`);
2509
- },
2510
- $$slots: { default: true }
2511
- });
2512
- $$renderer.push("<!--]-->");
2513
- } else {
2514
- $$renderer.push("<!--[!-->");
2515
- $$renderer.push("<!--]-->");
2516
- }
2517
- $$renderer.push(` `);
2518
- if (Alert_dialog_description) {
2519
- $$renderer.push("<!--[-->");
2520
- Alert_dialog_description($$renderer, {
2521
- children: ($$renderer) => {
2522
- if (confirmingRevoke) {
2523
- $$renderer.push("<!--[0-->");
2524
- $$renderer.push(`<strong>${escape_html(confirmingRevoke.name ?? "This link")}</strong> will stop working immediately. Anyone
2525
- using it will see a "no longer active" page. This cannot be undone.`);
2526
- } else $$renderer.push("<!--[-1-->");
2527
- $$renderer.push(`<!--]-->`);
2528
- },
2529
- $$slots: { default: true }
2530
- });
2531
- $$renderer.push("<!--]-->");
2532
- } else {
2533
- $$renderer.push("<!--[!-->");
2534
- $$renderer.push("<!--]-->");
2535
- }
2536
- },
2537
- $$slots: { default: true }
2538
- });
2539
- $$renderer.push("<!--]-->");
2540
- } else {
2541
- $$renderer.push("<!--[!-->");
2542
- $$renderer.push("<!--]-->");
2543
- }
2544
- $$renderer.push(` `);
2545
- if (Alert_dialog_footer) {
2546
- $$renderer.push("<!--[-->");
2547
- Alert_dialog_footer($$renderer, {
2548
- children: ($$renderer) => {
2549
- if (Alert_dialog_cancel) {
2550
- $$renderer.push("<!--[-->");
2551
- Alert_dialog_cancel($$renderer, {
2552
- children: ($$renderer) => {
2553
- $$renderer.push(`<!---->Cancel`);
2554
- },
2555
- $$slots: { default: true }
2556
- });
2557
- $$renderer.push("<!--]-->");
2558
- } else {
2559
- $$renderer.push("<!--[!-->");
2560
- $$renderer.push("<!--]-->");
2561
- }
2562
- $$renderer.push(` `);
2563
- if (Alert_dialog_action) {
2564
- $$renderer.push("<!--[-->");
2565
- Alert_dialog_action($$renderer, {
2566
- onclick: () => confirmingRevoke && revoke(confirmingRevoke),
2567
- disabled: !!revokingId,
2568
- children: ($$renderer) => {
2569
- $$renderer.push(`<!---->${escape_html(revokingId ? "Revoking…" : "Revoke")}`);
2570
- },
2571
- $$slots: { default: true }
2572
- });
2573
- $$renderer.push("<!--]-->");
2574
- } else {
2575
- $$renderer.push("<!--[!-->");
2576
- $$renderer.push("<!--]-->");
2577
- }
2578
- },
2579
- $$slots: { default: true }
2580
- });
2581
- $$renderer.push("<!--]-->");
2582
- } else {
2583
- $$renderer.push("<!--[!-->");
2584
- $$renderer.push("<!--]-->");
2585
- }
2586
- },
2587
- $$slots: { default: true }
2588
- });
2589
- $$renderer.push("<!--]-->");
2590
- } else {
2591
- $$renderer.push("<!--[!-->");
2592
- $$renderer.push("<!--]-->");
2593
- }
2594
- },
2595
- $$slots: { default: true }
2596
- });
2597
- $$renderer.push("<!--]-->");
2598
- } else {
2599
- $$renderer.push("<!--[!-->");
2600
- $$renderer.push("<!--]-->");
2601
- }
2602
- });
2603
- }
2604
- //#endregion
2605
- //#region src/routes/projects/_components/DefinitionEditDrawer.svelte
2606
- function DefinitionEditDrawer($$renderer, $$props) {
2607
- $$renderer.component(($$renderer) => {
2608
- /** Optional — when set, surfaces a Back link to return to the detail view. */
2609
- let { record, projects, computeServers, defaultComputeServerId = null, isSaving, initialTab = "versions", enableSharing, onClose, onSave, onDelete, onOpenRunner, onBack } = $$props;
2610
- let activeTab = initialTab === "shares" && !enableSharing ? "versions" : initialTab;
2611
- let displayName = record.displayName;
2612
- let description = record.description ?? "";
2613
- let category = record.category ?? "";
2614
- let tags = [...record.tags ?? []];
2615
- let projectId = record.projectId;
2616
- let computeServerId = record.computeServerId ?? null;
2617
- let status = record.status;
2618
- let userImageMode = void 0;
2619
- let coverImageUrl = record.coverImage ?? "";
2620
- let imageInput = void 0;
2621
- let imageHasFile = false;
2622
- let showDeleteConfirm = false;
2623
- let uploadingImage = false;
2624
- let pendingProjectId = null;
2625
- const pendingProject = derived(() => pendingProjectId ? projects.find((p) => p.id === pendingProjectId) ?? null : null);
2626
- const currentProject = derived(() => projects.find((p) => p.id === projectId) ?? null);
2627
- function handleProjectChange(nextId) {
2628
- if (nextId === projectId) return;
2629
- pendingProjectId = nextId;
2630
- }
2631
- function confirmProjectChange() {
2632
- if (pendingProjectId) projectId = pendingProjectId;
2633
- pendingProjectId = null;
2634
- }
2635
- function cancelProjectChange() {
2636
- pendingProjectId = null;
2637
- }
2638
- const imageMode = derived(() => userImageMode ?? (record.coverImage?.startsWith("/api/files/") ? "upload" : "url"));
2639
- const statusItems = [{
2640
- id: "draft",
2641
- label: "Draft — work in progress",
2642
- icon: Circle,
2643
- iconStyle: "color: var(--muted-foreground); fill: var(--muted-foreground);"
2644
- }, {
2645
- id: "published",
2646
- label: "Published — live and visible to runners",
2647
- icon: Circle,
2648
- iconStyle: "color: #22c55e; fill: #22c55e;"
2649
- }];
2650
- const computeServerItems = derived(() => computeServers.map((s) => ({
2651
- id: s.id,
2652
- label: s.id === defaultComputeServerId ? `${s.label} (Default)` : s.label
2653
- })));
2654
- async function handleImageUpload() {
2655
- if (!imageInput?.files?.length) return;
2656
- uploadingImage = true;
2657
- const formData = new FormData();
2658
- formData.append("image", imageInput.files[0]);
2659
- try {
2660
- const res = await fetch(`/api/v1/definitions/${record.guid}/image`, {
2661
- method: "POST",
2662
- body: formData
2663
- });
2664
- if (res.ok) {
2665
- toast.success("Cover image updated");
2666
- await invalidateAll();
2667
- } else {
2668
- const e = await res.json().catch(() => ({}));
2669
- toast.error(e.message || "Image upload failed");
2670
- }
2671
- } catch {
2672
- toast.error("Image upload failed");
2673
- } finally {
2674
- uploadingImage = false;
2675
- if (imageInput) imageInput.value = "";
2676
- imageHasFile = false;
2677
- }
2678
- }
2679
- function save() {
2680
- onSave(record.guid, {
2681
- displayName,
2682
- description: description || null,
2683
- category: category || null,
2684
- tags: tags.length ? tags : null,
2685
- coverImage: coverImageUrl || void 0,
2686
- status,
2687
- projectId: projectId || void 0,
2688
- computeServerId
2689
- });
2690
- }
2691
- let $$settled = true;
2692
- let $$inner_renderer;
2693
- function $$render_inner($$renderer) {
2694
- Drawer($$renderer, {
2695
- onClose,
2696
- ariaLabel: "Close edit drawer",
2697
- children: ($$renderer) => {
2698
- $$renderer.push(`<div class="border-border flex shrink-0 items-center justify-between border-b px-6 py-4"><div><p class="text-muted-foreground font-mono text-[10.5px] tracking-widest uppercase">Editing</p> <h2 class="mt-0.5 text-base font-semibold">${escape_html(record.displayName)}</h2></div> `);
2699
- Button($$renderer, {
2700
- variant: "ghost",
2701
- size: "icon",
2702
- onclick: onClose,
2703
- class: "h-8 w-8 shrink-0",
2704
- children: ($$renderer) => {
2705
- X($$renderer, { class: "h-4 w-4" });
2706
- },
2707
- $$slots: { default: true }
2708
- });
2709
- $$renderer.push(`<!----></div> `);
2710
- if (onBack) {
2711
- $$renderer.push("<!--[0-->");
2712
- $$renderer.push(`<button type="button" class="text-muted-foreground hover:text-foreground mx-6 mt-4 inline-flex items-center gap-1.5 self-start text-xs transition-colors">`);
2713
- Arrow_left($$renderer, { class: "h-3 w-3" });
2714
- $$renderer.push(`<!----> Back to definition</button>`);
2715
- } else $$renderer.push("<!--[-1-->");
2716
- $$renderer.push(`<!--]--> `);
2717
- if (Tabs) {
2718
- $$renderer.push("<!--[-->");
2719
- Tabs($$renderer, {
2720
- class: "flex flex-1 flex-col overflow-hidden",
2721
- get value() {
2722
- return activeTab;
2723
- },
2724
- set value($$value) {
2725
- activeTab = $$value;
2726
- $$settled = false;
2727
- },
2728
- children: ($$renderer) => {
2729
- if (Tabs_list) {
2730
- $$renderer.push("<!--[-->");
2731
- Tabs_list($$renderer, {
2732
- class: `mx-6 grid w-auto ${enableSharing ? "grid-cols-3" : "grid-cols-2"} ${onBack ? "mt-2" : "mt-4"}`,
2733
- children: ($$renderer) => {
2734
- if (Tabs_trigger) {
2735
- $$renderer.push("<!--[-->");
2736
- Tabs_trigger($$renderer, {
2737
- value: "details",
2738
- children: ($$renderer) => {
2739
- $$renderer.push(`<!---->Details`);
2740
- },
2741
- $$slots: { default: true }
2742
- });
2743
- $$renderer.push("<!--]-->");
2744
- } else {
2745
- $$renderer.push("<!--[!-->");
2746
- $$renderer.push("<!--]-->");
2747
- }
2748
- $$renderer.push(` `);
2749
- if (Tabs_trigger) {
2750
- $$renderer.push("<!--[-->");
2751
- Tabs_trigger($$renderer, {
2752
- value: "versions",
2753
- children: ($$renderer) => {
2754
- $$renderer.push(`<!---->Versions`);
2755
- },
2756
- $$slots: { default: true }
2757
- });
2758
- $$renderer.push("<!--]-->");
2759
- } else {
2760
- $$renderer.push("<!--[!-->");
2761
- $$renderer.push("<!--]-->");
2762
- }
2763
- $$renderer.push(` `);
2764
- if (enableSharing) {
2765
- $$renderer.push("<!--[0-->");
2766
- if (Tabs_trigger) {
2767
- $$renderer.push("<!--[-->");
2768
- Tabs_trigger($$renderer, {
2769
- value: "shares",
2770
- children: ($$renderer) => {
2771
- $$renderer.push(`<!---->Share links`);
2772
- },
2773
- $$slots: { default: true }
2774
- });
2775
- $$renderer.push("<!--]-->");
2776
- } else {
2777
- $$renderer.push("<!--[!-->");
2778
- $$renderer.push("<!--]-->");
2779
- }
2780
- } else $$renderer.push("<!--[-1-->");
2781
- $$renderer.push(`<!--]-->`);
2782
- },
2783
- $$slots: { default: true }
2784
- });
2785
- $$renderer.push("<!--]-->");
2786
- } else {
2787
- $$renderer.push("<!--[!-->");
2788
- $$renderer.push("<!--]-->");
2789
- }
2790
- $$renderer.push(` `);
2791
- if (Tabs_content) {
2792
- $$renderer.push("<!--[-->");
2793
- Tabs_content($$renderer, {
2794
- value: "versions",
2795
- class: "mt-4 flex-1 overflow-y-auto px-6 py-5",
2796
- children: ($$renderer) => {
2797
- VersionsSection($$renderer, {
2798
- definitionGuid: record.guid,
2799
- liveVersionId: record.liveVersionId,
2800
- draftVersionId: record.draftVersionId,
2801
- onOpenRunner
2802
- });
2803
- },
2804
- $$slots: { default: true }
2805
- });
2806
- $$renderer.push("<!--]-->");
2807
- } else {
2808
- $$renderer.push("<!--[!-->");
2809
- $$renderer.push("<!--]-->");
2810
- }
2811
- $$renderer.push(` `);
2812
- if (Tabs_content) {
2813
- $$renderer.push("<!--[-->");
2814
- Tabs_content($$renderer, {
2815
- value: "details",
2816
- class: "mt-4 flex-1 space-y-5 overflow-y-auto px-6 py-5",
2817
- children: ($$renderer) => {
2818
- $$renderer.push(`<div class="space-y-1.5">`);
2819
- Label($$renderer, {
2820
- for: "edit-name",
2821
- children: ($$renderer) => {
2822
- $$renderer.push(`<!---->Display name`);
2823
- },
2824
- $$slots: { default: true }
2825
- });
2826
- $$renderer.push(`<!----> `);
2827
- Input($$renderer, {
2828
- id: "edit-name",
2829
- get value() {
2830
- return displayName;
2831
- },
2832
- set value($$value) {
2833
- displayName = $$value;
2834
- $$settled = false;
2835
- }
2836
- });
2837
- $$renderer.push(`<!----></div> <div class="space-y-1.5">`);
2838
- Label($$renderer, {
2839
- for: "edit-desc",
2840
- children: ($$renderer) => {
2841
- $$renderer.push(`<!---->Description`);
2842
- },
2843
- $$slots: { default: true }
2844
- });
2845
- $$renderer.push(`<!----> `);
2846
- Textarea($$renderer, {
2847
- id: "edit-desc",
2848
- rows: 3,
2849
- get value() {
2850
- return description;
2851
- },
2852
- set value($$value) {
2853
- description = $$value;
2854
- $$settled = false;
2855
- }
2856
- });
2857
- $$renderer.push(`<!----></div> <div class="space-y-1.5">`);
2858
- Label($$renderer, {
2859
- for: "edit-status",
2860
- children: ($$renderer) => {
2861
- $$renderer.push(`<!---->Status`);
2862
- },
2863
- $$slots: { default: true }
2864
- });
2865
- $$renderer.push(`<!----> `);
2866
- FilterableDropdown($$renderer, {
2867
- id: "edit-status",
2868
- items: statusItems,
2869
- value: status,
2870
- onChange: (id) => status = id
2871
- });
2872
- $$renderer.push(`<!----></div> <div class="grid grid-cols-2 gap-3"><div class="space-y-1.5">`);
2873
- Label($$renderer, {
2874
- for: "edit-cat",
2875
- children: ($$renderer) => {
2876
- $$renderer.push(`<!---->Category`);
2877
- },
2878
- $$slots: { default: true }
2879
- });
2880
- $$renderer.push(`<!----> `);
2881
- Input($$renderer, {
2882
- id: "edit-cat",
2883
- maxlength: 40,
2884
- placeholder: "e.g. Facade",
2885
- get value() {
2886
- return category;
2887
- },
2888
- set value($$value) {
2889
- category = $$value;
2890
- $$settled = false;
2891
- }
2892
- });
2893
- $$renderer.push(`<!----></div> <div class="space-y-1.5"><div class="flex items-center justify-between">`);
2894
- Label($$renderer, {
2895
- for: "edit-tags",
2896
- children: ($$renderer) => {
2897
- $$renderer.push(`<!---->Tags`);
2898
- },
2899
- $$slots: { default: true }
2900
- });
2901
- $$renderer.push(`<!----> <span class="text-muted-foreground text-xs">${escape_html(tags.length)}/5</span></div> `);
2902
- if (tags.length > 0) {
2903
- $$renderer.push("<!--[0-->");
2904
- $$renderer.push(`<div class="mb-1 flex flex-wrap gap-1"><!--[-->`);
2905
- const each_array = ensure_array_like(tags);
2906
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
2907
- let tag = each_array[$$index];
2908
- Badge($$renderer, {
2909
- variant: "outline",
2910
- class: "gap-1 text-xs",
2911
- children: ($$renderer) => {
2912
- $$renderer.push(`<!---->${escape_html(tag)} <button class="hover:opacity-70"${attr("aria-label", `Remove tag ${stringify(tag)}`)}>`);
2913
- X($$renderer, { class: "h-2.5 w-2.5" });
2914
- $$renderer.push(`<!----></button>`);
2915
- },
2916
- $$slots: { default: true }
2917
- });
2918
- }
2919
- $$renderer.push(`<!--]--></div>`);
2920
- } else $$renderer.push("<!--[-1-->");
2921
- $$renderer.push(`<!--]--> `);
2922
- Input($$renderer, {
2923
- id: "edit-tags",
2924
- placeholder: "Add tag + Enter",
2925
- disabled: tags.length >= 5,
2926
- onkeydown: (e) => {
2927
- if (e.key === "Enter") {
2928
- e.preventDefault();
2929
- const el = e.currentTarget;
2930
- const tag = el.value.trim();
2931
- if (tag && !tags.includes(tag) && tags.length < 5) {
2932
- tags = [...tags, tag];
2933
- el.value = "";
2934
- }
2935
- }
2936
- }
2937
- });
2938
- $$renderer.push(`<!----></div></div> `);
2939
- Separator($$renderer, {});
2940
- $$renderer.push(`<!----> <div class="space-y-2"><div class="flex items-center gap-2">`);
2941
- Image($$renderer, { class: "text-muted-foreground h-4 w-4" });
2942
- $$renderer.push(`<!----> `);
2943
- Label($$renderer, {
2944
- children: ($$renderer) => {
2945
- $$renderer.push(`<!---->Cover image`);
2946
- },
2947
- $$slots: { default: true }
2948
- });
2949
- $$renderer.push(`<!----></div> `);
2950
- ImageUploadField($$renderer, {
2951
- mode: imageMode(),
2952
- value: record.coverImage ?? "",
2953
- isUploading: uploadingImage,
2954
- hasFile: imageHasFile,
2955
- onModeChange: (m) => userImageMode = m,
2956
- onUpload: handleImageUpload,
2957
- onFileSelected: () => imageHasFile = !!imageInput?.files?.length,
2958
- onUrlChange: (url) => coverImageUrl = url,
2959
- get inputRef() {
2960
- return imageInput;
2961
- },
2962
- set inputRef($$value) {
2963
- imageInput = $$value;
2964
- $$settled = false;
2965
- }
2966
- });
2967
- $$renderer.push(`<!----></div> `);
2968
- if (projects.length > 1 || computeServers.length > 0) {
2969
- $$renderer.push("<!--[0-->");
2970
- $$renderer.push(`<div class="grid grid-cols-2 gap-3">`);
2971
- if (projects.length > 1) {
2972
- $$renderer.push("<!--[0-->");
2973
- $$renderer.push(`<div class="space-y-1.5">`);
2974
- Label($$renderer, {
2975
- for: "edit-proj",
2976
- children: ($$renderer) => {
2977
- $$renderer.push(`<!---->Project`);
2978
- },
2979
- $$slots: { default: true }
2980
- });
2981
- $$renderer.push(`<!----> `);
2982
- ProjectPicker($$renderer, {
2983
- id: "edit-proj",
2984
- projects,
2985
- value: projectId,
2986
- onChange: handleProjectChange
2987
- });
2988
- $$renderer.push(`<!----></div>`);
2989
- } else $$renderer.push("<!--[-1-->");
2990
- $$renderer.push(`<!--]--> `);
2991
- if (computeServers.length > 0) {
2992
- $$renderer.push("<!--[0-->");
2993
- $$renderer.push(`<div class="space-y-1.5">`);
2994
- Label($$renderer, {
2995
- for: "edit-srv",
2996
- children: ($$renderer) => {
2997
- $$renderer.push(`<!---->Compute server`);
2998
- },
2999
- $$slots: { default: true }
3000
- });
3001
- $$renderer.push(`<!----> `);
3002
- FilterableDropdown($$renderer, {
3003
- id: "edit-srv",
3004
- items: computeServerItems(),
3005
- value: computeServerId ?? defaultComputeServerId ?? "",
3006
- onChange: (picked) => {
3007
- computeServerId = picked === defaultComputeServerId ? null : picked;
3008
- }
3009
- });
3010
- $$renderer.push(`<!----></div>`);
3011
- } else $$renderer.push("<!--[-1-->");
3012
- $$renderer.push(`<!--]--></div>`);
3013
- } else $$renderer.push("<!--[-1-->");
3014
- $$renderer.push(`<!--]-->`);
3015
- },
3016
- $$slots: { default: true }
3017
- });
3018
- $$renderer.push("<!--]-->");
3019
- } else {
3020
- $$renderer.push("<!--[!-->");
3021
- $$renderer.push("<!--]-->");
3022
- }
3023
- $$renderer.push(` `);
3024
- if (enableSharing) {
3025
- $$renderer.push("<!--[0-->");
3026
- if (Tabs_content) {
3027
- $$renderer.push("<!--[-->");
3028
- Tabs_content($$renderer, {
3029
- value: "shares",
3030
- class: "mt-4 flex-1 overflow-y-auto px-6 py-5",
3031
- children: ($$renderer) => {
3032
- ShareLinkSection($$renderer, { definitionGuid: record.guid });
3033
- },
3034
- $$slots: { default: true }
3035
- });
3036
- $$renderer.push("<!--]-->");
3037
- } else {
3038
- $$renderer.push("<!--[!-->");
3039
- $$renderer.push("<!--]-->");
3040
- }
3041
- } else $$renderer.push("<!--[-1-->");
3042
- $$renderer.push(`<!--]-->`);
3043
- },
3044
- $$slots: { default: true }
3045
- });
3046
- $$renderer.push("<!--]-->");
3047
- } else {
3048
- $$renderer.push("<!--[!-->");
3049
- $$renderer.push("<!--]-->");
3050
- }
3051
- $$renderer.push(` <div class="border-border flex shrink-0 items-center justify-between border-t px-6 py-4">`);
3052
- Button($$renderer, {
3053
- variant: "ghost",
3054
- size: "sm",
3055
- onclick: () => showDeleteConfirm = true,
3056
- class: "text-destructive hover:text-destructive gap-1.5 px-2",
3057
- children: ($$renderer) => {
3058
- Trash_2($$renderer, { class: "h-3.5 w-3.5" });
3059
- $$renderer.push(`<!----> Delete`);
3060
- },
3061
- $$slots: { default: true }
3062
- });
3063
- $$renderer.push(`<!----> <div class="flex gap-2">`);
3064
- Button($$renderer, {
3065
- variant: "outline",
3066
- size: "sm",
3067
- onclick: onClose,
3068
- children: ($$renderer) => {
3069
- $$renderer.push(`<!---->Cancel`);
3070
- },
3071
- $$slots: { default: true }
3072
- });
3073
- $$renderer.push(`<!----> `);
3074
- if (activeTab === "details") {
3075
- $$renderer.push("<!--[0-->");
3076
- Button($$renderer, {
3077
- size: "sm",
3078
- disabled: isSaving,
3079
- onclick: save,
3080
- children: ($$renderer) => {
3081
- $$renderer.push(`<!---->${escape_html(isSaving ? "Saving…" : "Save")}`);
3082
- },
3083
- $$slots: { default: true }
3084
- });
3085
- } else $$renderer.push("<!--[-1-->");
3086
- $$renderer.push(`<!--]--></div></div>`);
3087
- }});
3088
- $$renderer.push(`<!----> `);
3089
- if (Root) {
3090
- $$renderer.push("<!--[-->");
3091
- Root($$renderer, {
3092
- open: showDeleteConfirm,
3093
- onOpenChange: (o) => showDeleteConfirm = o,
3094
- children: ($$renderer) => {
3095
- if (Alert_dialog_content) {
3096
- $$renderer.push("<!--[-->");
3097
- Alert_dialog_content($$renderer, {
3098
- children: ($$renderer) => {
3099
- if (Alert_dialog_header) {
3100
- $$renderer.push("<!--[-->");
3101
- Alert_dialog_header($$renderer, {
3102
- children: ($$renderer) => {
3103
- if (Alert_dialog_title) {
3104
- $$renderer.push("<!--[-->");
3105
- Alert_dialog_title($$renderer, {
3106
- children: ($$renderer) => {
3107
- $$renderer.push(`<!---->Delete "${escape_html(record.displayName)}"?`);
3108
- },
3109
- $$slots: { default: true }
3110
- });
3111
- $$renderer.push("<!--]-->");
3112
- } else {
3113
- $$renderer.push("<!--[!-->");
3114
- $$renderer.push("<!--]-->");
3115
- }
3116
- $$renderer.push(` `);
3117
- if (Alert_dialog_description) {
3118
- $$renderer.push("<!--[-->");
3119
- Alert_dialog_description($$renderer, {
3120
- children: ($$renderer) => {
3121
- $$renderer.push(`<!---->This removes the definition and all its files. This cannot be undone.`);
3122
- },
3123
- $$slots: { default: true }
3124
- });
3125
- $$renderer.push("<!--]-->");
3126
- } else {
3127
- $$renderer.push("<!--[!-->");
3128
- $$renderer.push("<!--]-->");
3129
- }
3130
- },
3131
- $$slots: { default: true }
3132
- });
3133
- $$renderer.push("<!--]-->");
3134
- } else {
3135
- $$renderer.push("<!--[!-->");
3136
- $$renderer.push("<!--]-->");
3137
- }
3138
- $$renderer.push(` `);
3139
- if (Alert_dialog_footer) {
3140
- $$renderer.push("<!--[-->");
3141
- Alert_dialog_footer($$renderer, {
3142
- children: ($$renderer) => {
3143
- if (Alert_dialog_cancel) {
3144
- $$renderer.push("<!--[-->");
3145
- Alert_dialog_cancel($$renderer, {
3146
- children: ($$renderer) => {
3147
- $$renderer.push(`<!---->Cancel`);
3148
- },
3149
- $$slots: { default: true }
3150
- });
3151
- $$renderer.push("<!--]-->");
3152
- } else {
3153
- $$renderer.push("<!--[!-->");
3154
- $$renderer.push("<!--]-->");
3155
- }
3156
- $$renderer.push(` `);
3157
- if (Alert_dialog_action) {
3158
- $$renderer.push("<!--[-->");
3159
- Alert_dialog_action($$renderer, {
3160
- onclick: () => onDelete(record.guid),
3161
- children: ($$renderer) => {
3162
- $$renderer.push(`<!---->Delete`);
3163
- },
3164
- $$slots: { default: true }
3165
- });
3166
- $$renderer.push("<!--]-->");
3167
- } else {
3168
- $$renderer.push("<!--[!-->");
3169
- $$renderer.push("<!--]-->");
3170
- }
3171
- },
3172
- $$slots: { default: true }
3173
- });
3174
- $$renderer.push("<!--]-->");
3175
- } else {
3176
- $$renderer.push("<!--[!-->");
3177
- $$renderer.push("<!--]-->");
3178
- }
3179
- },
3180
- $$slots: { default: true }
3181
- });
3182
- $$renderer.push("<!--]-->");
3183
- } else {
3184
- $$renderer.push("<!--[!-->");
3185
- $$renderer.push("<!--]-->");
3186
- }
3187
- },
3188
- $$slots: { default: true }
3189
- });
3190
- $$renderer.push("<!--]-->");
3191
- } else {
3192
- $$renderer.push("<!--[!-->");
3193
- $$renderer.push("<!--]-->");
3194
- }
3195
- $$renderer.push(` `);
3196
- if (Root) {
3197
- $$renderer.push("<!--[-->");
3198
- Root($$renderer, {
3199
- open: pendingProjectId !== null,
3200
- onOpenChange: (o) => {
3201
- if (!o) cancelProjectChange();
3202
- },
3203
- children: ($$renderer) => {
3204
- if (Alert_dialog_content) {
3205
- $$renderer.push("<!--[-->");
3206
- Alert_dialog_content($$renderer, {
3207
- children: ($$renderer) => {
3208
- if (Alert_dialog_header) {
3209
- $$renderer.push("<!--[-->");
3210
- Alert_dialog_header($$renderer, {
3211
- children: ($$renderer) => {
3212
- if (Alert_dialog_title) {
3213
- $$renderer.push("<!--[-->");
3214
- Alert_dialog_title($$renderer, {
3215
- children: ($$renderer) => {
3216
- $$renderer.push(`<!---->Move to a different project?`);
3217
- },
3218
- $$slots: { default: true }
3219
- });
3220
- $$renderer.push("<!--]-->");
3221
- } else {
3222
- $$renderer.push("<!--[!-->");
3223
- $$renderer.push("<!--]-->");
3224
- }
3225
- $$renderer.push(` `);
3226
- if (Alert_dialog_description) {
3227
- $$renderer.push("<!--[-->");
3228
- Alert_dialog_description($$renderer, {
3229
- children: ($$renderer) => {
3230
- $$renderer.push(`<strong>${escape_html(record.displayName)}</strong> will move from <strong>${escape_html(currentProject()?.name ?? "—")}</strong> to <strong>${escape_html(pendingProject()?.name ?? "—")}</strong>. Project members and visibility may change
3231
- accordingly.${escape_html(enableSharing ? " Existing share links keep working." : "")}`);
3232
- },
3233
- $$slots: { default: true }
3234
- });
3235
- $$renderer.push("<!--]-->");
3236
- } else {
3237
- $$renderer.push("<!--[!-->");
3238
- $$renderer.push("<!--]-->");
3239
- }
3240
- },
3241
- $$slots: { default: true }
3242
- });
3243
- $$renderer.push("<!--]-->");
3244
- } else {
3245
- $$renderer.push("<!--[!-->");
3246
- $$renderer.push("<!--]-->");
3247
- }
3248
- $$renderer.push(` `);
3249
- if (Alert_dialog_footer) {
3250
- $$renderer.push("<!--[-->");
3251
- Alert_dialog_footer($$renderer, {
3252
- children: ($$renderer) => {
3253
- if (Alert_dialog_cancel) {
3254
- $$renderer.push("<!--[-->");
3255
- Alert_dialog_cancel($$renderer, {
3256
- onclick: cancelProjectChange,
3257
- children: ($$renderer) => {
3258
- $$renderer.push(`<!---->Cancel`);
3259
- },
3260
- $$slots: { default: true }
3261
- });
3262
- $$renderer.push("<!--]-->");
3263
- } else {
3264
- $$renderer.push("<!--[!-->");
3265
- $$renderer.push("<!--]-->");
3266
- }
3267
- $$renderer.push(` `);
3268
- if (Alert_dialog_action) {
3269
- $$renderer.push("<!--[-->");
3270
- Alert_dialog_action($$renderer, {
3271
- onclick: confirmProjectChange,
3272
- children: ($$renderer) => {
3273
- $$renderer.push(`<!---->Move`);
3274
- },
3275
- $$slots: { default: true }
3276
- });
3277
- $$renderer.push("<!--]-->");
3278
- } else {
3279
- $$renderer.push("<!--[!-->");
3280
- $$renderer.push("<!--]-->");
3281
- }
3282
- },
3283
- $$slots: { default: true }
3284
- });
3285
- $$renderer.push("<!--]-->");
3286
- } else {
3287
- $$renderer.push("<!--[!-->");
3288
- $$renderer.push("<!--]-->");
3289
- }
3290
- },
3291
- $$slots: { default: true }
3292
- });
3293
- $$renderer.push("<!--]-->");
3294
- } else {
3295
- $$renderer.push("<!--[!-->");
3296
- $$renderer.push("<!--]-->");
3297
- }
3298
- },
3299
- $$slots: { default: true }
3300
- });
3301
- $$renderer.push("<!--]-->");
3302
- } else {
3303
- $$renderer.push("<!--[!-->");
3304
- $$renderer.push("<!--]-->");
3305
- }
3306
- }
3307
- do {
3308
- $$settled = true;
3309
- $$inner_renderer = $$renderer.copy();
3310
- $$render_inner($$inner_renderer);
3311
- } while (!$$settled);
3312
- $$renderer.subsume($$inner_renderer);
3313
- });
3314
- }
3315
- //#endregion
3316
- //#region src/routes/projects/+page.svelte
3317
- function _page($$renderer, $$props) {
3318
- $$renderer.component(($$renderer) => {
3319
- var $$store_subs;
3320
- let { data } = $$props;
3321
- const enableSharing = derived(() => !!store_get($$store_subs ??= {}, "$page", page).data.flags?.enableSharing);
3322
- let searchQuery = "";
3323
- let activeProjectId = null;
3324
- let viewMode = "grid";
3325
- let drawerRecord = null;
3326
- let editingDefinitionId = null;
3327
- let editingProjectId = null;
3328
- let deletingProjectId = null;
3329
- let showAddModal = false;
3330
- let editCameFromDetail = false;
3331
- let editInitialTab = "versions";
3332
- let addingDefinition = false;
3333
- let savingDefinitionId = null;
3334
- const filtered = derived(() => {
3335
- let records = data.records;
3336
- if (activeProjectId) records = records.filter((r) => r.projectId === activeProjectId);
3337
- if (searchQuery.trim()) {
3338
- const q = searchQuery.toLowerCase();
3339
- records = records.filter((r) => r.displayName?.toLowerCase().includes(q) || r.description?.toLowerCase().includes(q) || r.tags?.some((t) => t.toLowerCase().includes(q)));
3340
- }
3341
- return records;
3342
- });
3343
- const editingRecord = derived(() => editingDefinitionId ? data.records.find((r) => r.guid === editingDefinitionId) ?? null : null);
3344
- const activeProject = derived(() => activeProjectId ? data.projects.find((p) => p.id === activeProjectId) ?? null : null);
3345
- const canAddDefinition = derived(() => activeProject() ? activeProject().canEdit : data.projects.some((p) => p.canEdit));
3346
- const editableProjects = derived(() => data.projects.filter((p) => p.canEdit));
3347
- const editingProject = derived(() => editingProjectId ? data.projects.find((p) => p.id === editingProjectId) ?? null : null);
3348
- const deletingProject = derived(() => deletingProjectId ? data.projects.find((p) => p.id === deletingProjectId) ?? null : null);
3349
- function projectName(id) {
3350
- return data.projects.find((p) => p.id === id)?.name ?? "";
3351
- }
3352
- function projectVisibility(id) {
3353
- return data.projects.find((p) => p.id === id)?.visibility;
3354
- }
3355
- function serverNameFor(record) {
3356
- const servers = data.computeServers;
3357
- if (servers.length === 0) return void 0;
3358
- const pinned = record.computeServerId ? servers.find((s) => s.id === record.computeServerId) : void 0;
3359
- const fallback = servers.find((s) => s.id === data.defaultComputeServerId) ?? servers[0];
3360
- return (pinned ?? fallback)?.label;
3361
- }
3362
- function recordCanEdit(record) {
3363
- return data.projects.find((p) => p.id === record.projectId)?.canEdit ?? false;
3364
- }
3365
- async function errorMessage(res, fallback) {
3366
- if (res.headers.get("content-type")?.includes("application/json")) {
3367
- const e = await res.json().catch(() => null);
3368
- return e?.message || e?.error?.message || `${fallback} (${res.status})`;
3369
- }
3370
- return `${fallback} (${res.status})`;
3371
- }
3372
- async function saveDefinition(guid, patch) {
3373
- savingDefinitionId = guid;
3374
- try {
3375
- const res = await fetch(`/api/v1/definitions/${guid}`, {
3376
- method: "PATCH",
3377
- headers: { "Content-Type": "application/json" },
3378
- body: JSON.stringify(patch)
3379
- });
3380
- if (res.ok) {
3381
- toast.success("Definition saved");
3382
- editingDefinitionId = null;
3383
- drawerRecord = null;
3384
- await invalidateAll();
3385
- } else toast.error(await errorMessage(res, "Save failed"));
3386
- } catch (e) {
3387
- toast.error("Save failed: " + (e instanceof Error ? e.message : "Unknown error"));
3388
- } finally {
3389
- savingDefinitionId = null;
3390
- }
3391
- }
3392
- async function deleteDefinition(guid) {
3393
- const rec = data.records.find((r) => r.guid === guid);
3394
- try {
3395
- const res = await fetch(`/api/v1/definitions/${guid}`, { method: "DELETE" });
3396
- if (res.ok) {
3397
- toast.success(`"${rec?.displayName ?? "Definition"}" deleted`);
3398
- editingDefinitionId = null;
3399
- await invalidateAll();
3400
- } else toast.error(await errorMessage(res, "Delete failed"));
3401
- } catch {
3402
- toast.error("Delete failed");
3403
- }
3404
- }
3405
- async function saveProject(id, patch) {
3406
- const res = await fetch(`/api/v1/projects/${id}`, {
3407
- method: "PATCH",
3408
- headers: { "Content-Type": "application/json" },
3409
- body: JSON.stringify(patch)
3410
- });
3411
- if (res.ok) {
3412
- toast.success("Project saved");
3413
- editingProjectId = null;
3414
- await invalidateAll();
3415
- } else toast.error(await errorMessage(res, "Failed to save project"));
3416
- }
3417
- async function deleteProject(id) {
3418
- const res = await fetch(`/api/v1/projects/${id}`, { method: "DELETE" });
3419
- if (res.ok) {
3420
- toast.success("Project deleted");
3421
- if (activeProjectId === id) activeProjectId = data.projects.find((p) => p.id !== id)?.id ?? null;
3422
- deletingProjectId = null;
3423
- editingProjectId = null;
3424
- await invalidateAll();
3425
- } else toast.error(await errorMessage(res, "Failed to delete project"));
3426
- }
3427
- async function updateMemberRole(projectId, userId, role) {
3428
- if ((await fetch(`/api/v1/projects/${projectId}/members/${userId}`, {
3429
- method: "PATCH",
3430
- headers: { "Content-Type": "application/json" },
3431
- body: JSON.stringify({ role })
3432
- })).ok) await invalidateAll();
3433
- else toast.error("Failed to update role");
3434
- }
3435
- async function removeMember(projectId, userId) {
3436
- if ((await fetch(`/api/v1/projects/${projectId}/members/${userId}`, { method: "DELETE" })).ok) await invalidateAll();
3437
- else toast.error("Failed to remove member");
3438
- }
3439
- let $$settled = true;
3440
- let $$inner_renderer;
3441
- function $$render_inner($$renderer) {
3442
- head("rqn88j", $$renderer, ($$renderer) => {
3443
- $$renderer.title(($$renderer) => {
3444
- $$renderer.push(`<title>Projects</title>`);
3445
- });
3446
- });
3447
- $$renderer.push(`<div class="flex h-full overflow-hidden">`);
3448
- ProjectSidebar($$renderer, {
3449
- projects: data.projects,
3450
- records: data.records,
3451
- activeProjectId,
3452
- canManageProjects: data.canManageProjects});
3453
- $$renderer.push(`<!----> <div class="flex flex-1 flex-col overflow-hidden"><div class="border-border bg-background shrink-0 border-b px-(--page-px) py-5">`);
3454
- {
3455
- function actions($$renderer) {
3456
- if (data.canManageProjects && activeProject()) {
3457
- $$renderer.push("<!--[0-->");
3458
- Button($$renderer, {
3459
- variant: "outline",
3460
- size: "sm",
3461
- onclick: () => editingProjectId = activeProject().id,
3462
- children: ($$renderer) => {
3463
- Settings($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
3464
- $$renderer.push(`<!----> Project settings`);
3465
- },
3466
- $$slots: { default: true }
3467
- });
3468
- } else $$renderer.push("<!--[-1-->");
3469
- $$renderer.push(`<!--]--> `);
3470
- if (canAddDefinition()) {
3471
- $$renderer.push("<!--[0-->");
3472
- Button($$renderer, {
3473
- size: "sm",
3474
- onclick: () => showAddModal = true,
3475
- children: ($$renderer) => {
3476
- Plus($$renderer, { class: "mr-1.5 h-3.5 w-3.5" });
3477
- $$renderer.push(`<!----> Add definition`);
3478
- },
3479
- $$slots: { default: true }
3480
- });
3481
- } else $$renderer.push("<!--[-1-->");
3482
- $$renderer.push(`<!--]-->`);
3483
- }
3484
- SectionHeader($$renderer, {
3485
- class: "mb-0",
3486
- eyebrow: activeProject() ? activeProject().name : "All projects",
3487
- title: "Definitions",
3488
- description: activeProject()?.description ?? (!activeProject() ? "Definitions across every project in this organization." : void 0),
3489
- actions});
3490
- }
3491
- $$renderer.push(`<!----></div> <div class="flex-1 overflow-y-auto px-(--page-px) py-5"><div class="mb-5 flex items-center gap-3"><div class="max-w-lg flex-1">`);
3492
- Search($$renderer, {
3493
- placeholder: "Search by name, description, tags…",
3494
- clearable: true,
3495
- get value() {
3496
- return searchQuery;
3497
- },
3498
- set value($$value) {
3499
- searchQuery = $$value;
3500
- $$settled = false;
3501
- }
3502
- });
3503
- $$renderer.push(`<!----></div> <span class="text-muted-foreground font-mono text-xs tabular-nums">${escape_html(filtered().length)} definition${escape_html(filtered().length === 1 ? "" : "s")}</span> <div class="ml-auto">`);
3504
- ViewToggle($$renderer, {
3505
- mode: viewMode,
3506
- size: "sm",
3507
- onChange: (m) => viewMode = m
3508
- });
3509
- $$renderer.push(`<!----></div></div> `);
3510
- if (filtered().length === 0) {
3511
- $$renderer.push("<!--[0-->");
3512
- EmptyState($$renderer, {
3513
- size: "lg",
3514
- title: "No definitions found",
3515
- description: searchQuery ? "Try adjusting your search" : "Add your first definition to get started"
3516
- });
3517
- } else if (viewMode === "grid") {
3518
- $$renderer.push("<!--[1-->");
3519
- $$renderer.push(`<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"><!--[-->`);
3520
- const each_array = ensure_array_like(filtered());
3521
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
3522
- let record = each_array[$$index];
3523
- DefinitionCard($$renderer, {
3524
- record,
3525
- showStatus: true,
3526
- onOpen: (r) => drawerRecord = r,
3527
- projectName: activeProjectId === null ? projectName(record.projectId) : void 0,
3528
- projectVisibility: activeProjectId === null ? projectVisibility(record.projectId) : void 0,
3529
- serverName: serverNameFor(record)
3530
- });
3531
- }
3532
- $$renderer.push(`<!--]--></div>`);
3533
- } else {
3534
- $$renderer.push("<!--[-1-->");
3535
- DefinitionListView($$renderer, {
3536
- records: filtered(),
3537
- projects: data.projects});
3538
- }
3539
- $$renderer.push(`<!--]--></div></div></div> `);
3540
- if (drawerRecord) {
3541
- $$renderer.push("<!--[0-->");
3542
- DefinitionDetailDrawer($$renderer, {
3543
- record: drawerRecord,
3544
- projectName: projectName(drawerRecord.projectId),
3545
- canEdit: recordCanEdit(drawerRecord),
3546
- showShare: enableSharing(),
3547
- onClose: () => drawerRecord = null,
3548
- onEdit: (r) => {
3549
- editInitialTab = "details";
3550
- editingDefinitionId = r.guid;
3551
- editCameFromDetail = true;
3552
- drawerRecord = null;
3553
- },
3554
- onShare: (r) => {
3555
- editInitialTab = "shares";
3556
- editingDefinitionId = r.guid;
3557
- editCameFromDetail = true;
3558
- drawerRecord = null;
3559
- },
3560
- onOpenRunner: (guid, channel, versionId) => goto()
3561
- });
3562
- } else $$renderer.push("<!--[-1-->");
3563
- $$renderer.push(`<!--]--> `);
3564
- if (editingRecord()) {
3565
- $$renderer.push("<!--[0-->");
3566
- $$renderer.push(`<!---->`);
3567
- DefinitionEditDrawer($$renderer, {
3568
- record: editingRecord(),
3569
- projects: data.projects,
3570
- computeServers: data.computeServers,
3571
- defaultComputeServerId: data.defaultComputeServerId,
3572
- isSaving: savingDefinitionId === editingRecord().guid,
3573
- initialTab: editInitialTab,
3574
- enableSharing: enableSharing(),
3575
- onClose: () => {
3576
- editingDefinitionId = null;
3577
- editCameFromDetail = false;
3578
- editInitialTab = "versions";
3579
- },
3580
- onBack: editCameFromDetail ? () => {
3581
- drawerRecord = editingRecord();
3582
- editingDefinitionId = null;
3583
- editCameFromDetail = false;
3584
- } : void 0,
3585
- onSave: saveDefinition,
3586
- onDelete: deleteDefinition,
3587
- onOpenRunner: (guid, channel, versionId) => goto()
3588
- });
3589
- $$renderer.push(`<!---->`);
3590
- } else $$renderer.push("<!--[-1-->");
3591
- $$renderer.push(`<!--]--> `);
3592
- if (editingProject() && data.canManageProjects) {
3593
- $$renderer.push("<!--[0-->");
3594
- ProjectSettingsDialog($$renderer, {
3595
- project: editingProject(),
3596
- users: data.users,
3597
- open: editingProjectId !== null,
3598
- onOpenChange: (o) => {
3599
- if (!o) editingProjectId = null;
3600
- },
3601
- onSave: saveProject,
3602
- onDelete: (id) => {
3603
- editingProjectId = null;
3604
- deletingProjectId = id;
3605
- },
3606
- onUpdateMemberRole: updateMemberRole,
3607
- onRemoveMember: removeMember
3608
- });
3609
- } else $$renderer.push("<!--[-1-->");
3610
- $$renderer.push(`<!--]--> `);
3611
- if (Root) {
3612
- $$renderer.push("<!--[-->");
3613
- Root($$renderer, {
3614
- open: deletingProjectId !== null,
3615
- onOpenChange: (o) => {
3616
- if (!o) deletingProjectId = null;
3617
- },
3618
- children: ($$renderer) => {
3619
- if (Alert_dialog_content) {
3620
- $$renderer.push("<!--[-->");
3621
- Alert_dialog_content($$renderer, {
3622
- children: ($$renderer) => {
3623
- if (Alert_dialog_header) {
3624
- $$renderer.push("<!--[-->");
3625
- Alert_dialog_header($$renderer, {
3626
- children: ($$renderer) => {
3627
- if (Alert_dialog_title) {
3628
- $$renderer.push("<!--[-->");
3629
- Alert_dialog_title($$renderer, {
3630
- children: ($$renderer) => {
3631
- $$renderer.push(`<!---->Delete "${escape_html(deletingProject()?.name ?? "")}"?`);
3632
- },
3633
- $$slots: { default: true }
3634
- });
3635
- $$renderer.push("<!--]-->");
3636
- } else {
3637
- $$renderer.push("<!--[!-->");
3638
- $$renderer.push("<!--]-->");
3639
- }
3640
- $$renderer.push(` `);
3641
- if (Alert_dialog_description) {
3642
- $$renderer.push("<!--[-->");
3643
- Alert_dialog_description($$renderer, {
3644
- children: ($$renderer) => {
3645
- $$renderer.push(`<!---->This will remove the project and all member assignments. Definitions will become unassigned.`);
3646
- },
3647
- $$slots: { default: true }
3648
- });
3649
- $$renderer.push("<!--]-->");
3650
- } else {
3651
- $$renderer.push("<!--[!-->");
3652
- $$renderer.push("<!--]-->");
3653
- }
3654
- },
3655
- $$slots: { default: true }
3656
- });
3657
- $$renderer.push("<!--]-->");
3658
- } else {
3659
- $$renderer.push("<!--[!-->");
3660
- $$renderer.push("<!--]-->");
3661
- }
3662
- $$renderer.push(` `);
3663
- if (Alert_dialog_footer) {
3664
- $$renderer.push("<!--[-->");
3665
- Alert_dialog_footer($$renderer, {
3666
- children: ($$renderer) => {
3667
- if (Alert_dialog_cancel) {
3668
- $$renderer.push("<!--[-->");
3669
- Alert_dialog_cancel($$renderer, {
3670
- children: ($$renderer) => {
3671
- $$renderer.push(`<!---->Cancel`);
3672
- },
3673
- $$slots: { default: true }
3674
- });
3675
- $$renderer.push("<!--]-->");
3676
- } else {
3677
- $$renderer.push("<!--[!-->");
3678
- $$renderer.push("<!--]-->");
3679
- }
3680
- $$renderer.push(` `);
3681
- if (Alert_dialog_action) {
3682
- $$renderer.push("<!--[-->");
3683
- Alert_dialog_action($$renderer, {
3684
- onclick: () => deletingProjectId && deleteProject(deletingProjectId),
3685
- children: ($$renderer) => {
3686
- $$renderer.push(`<!---->Delete`);
3687
- },
3688
- $$slots: { default: true }
3689
- });
3690
- $$renderer.push("<!--]-->");
3691
- } else {
3692
- $$renderer.push("<!--[!-->");
3693
- $$renderer.push("<!--]-->");
3694
- }
3695
- },
3696
- $$slots: { default: true }
3697
- });
3698
- $$renderer.push("<!--]-->");
3699
- } else {
3700
- $$renderer.push("<!--[!-->");
3701
- $$renderer.push("<!--]-->");
3702
- }
3703
- },
3704
- $$slots: { default: true }
3705
- });
3706
- $$renderer.push("<!--]-->");
3707
- } else {
3708
- $$renderer.push("<!--[!-->");
3709
- $$renderer.push("<!--]-->");
3710
- }
3711
- },
3712
- $$slots: { default: true }
3713
- });
3714
- $$renderer.push("<!--]-->");
3715
- } else {
3716
- $$renderer.push("<!--[!-->");
3717
- $$renderer.push("<!--]-->");
3718
- }
3719
- $$renderer.push(` `);
3720
- AddDefinitionDialog($$renderer, {
3721
- open: showAddModal,
3722
- isAdding: addingDefinition,
3723
- projects: editableProjects(),
3724
- defaultProjectId: activeProject()?.canEdit ? activeProjectId : editableProjects()[0]?.id,
3725
- computeServers: data.computeServers,
3726
- defaultComputeServerId: data.defaultComputeServerId,
3727
- showProjectDropdown: editableProjects().length > 1,
3728
- onOpenChange: (o) => showAddModal = o});
3729
- $$renderer.push(`<!---->`);
3730
- }
3731
- do {
3732
- $$settled = true;
3733
- $$inner_renderer = $$renderer.copy();
3734
- $$render_inner($$inner_renderer);
3735
- } while (!$$settled);
3736
- $$renderer.subsume($$inner_renderer);
3737
- if ($$store_subs) unsubscribe_stores($$store_subs);
3738
- });
3739
- }
3740
-
3741
- export { _page as default };
3742
- //# sourceMappingURL=_page.svelte.js-lEWwRKUn.js.map