prefect 3.6.12__py3-none-any.whl → 3.6.13__py3-none-any.whl

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 (266) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/_internal/compatibility/blocks.py +18 -0
  3. prefect/_internal/urls.py +29 -0
  4. prefect/_states.py +4 -1
  5. prefect/client/orchestration/_concurrency_limits/client.py +16 -16
  6. prefect/client/schemas/filters.py +24 -0
  7. prefect/client/subscriptions.py +1 -1
  8. prefect/events/clients.py +52 -13
  9. prefect/flow_engine.py +192 -10
  10. prefect/flows.py +61 -2
  11. prefect/results.py +262 -21
  12. prefect/runner/runner.py +29 -82
  13. prefect/runner/storage.py +6 -25
  14. prefect/server/schemas/filters.py +45 -0
  15. prefect/server/ui-v2/assets/{artifact-card-Ds2tntMW.js → artifact-card-CUEaRDGw.js} +2 -2
  16. prefect/server/ui-v2/assets/{artifact-card-Ds2tntMW.js.map → artifact-card-CUEaRDGw.js.map} +1 -1
  17. prefect/server/ui-v2/assets/{artifact._id-erPNL0a8.js → artifact._id-Ca6VCUS0.js} +2 -2
  18. prefect/server/ui-v2/assets/{artifact._id-erPNL0a8.js.map → artifact._id-Ca6VCUS0.js.map} +1 -1
  19. prefect/server/ui-v2/assets/{automation-wizard-Bx9AQxRV.js → automation-wizard-z26pICBl.js} +2 -2
  20. prefect/server/ui-v2/assets/{automation-wizard-Bx9AQxRV.js.map → automation-wizard-z26pICBl.js.map} +1 -1
  21. prefect/server/ui-v2/assets/automation._id-DuodjY5t.js +2 -0
  22. prefect/server/ui-v2/assets/{automation._id-IHh5QJwE.js.map → automation._id-DuodjY5t.js.map} +1 -1
  23. prefect/server/ui-v2/assets/{automation_._id.edit-Ds8vO0c5.js → automation_._id.edit-CcuJhc-y.js} +2 -2
  24. prefect/server/ui-v2/assets/{automation_._id.edit-Ds8vO0c5.js.map → automation_._id.edit-CcuJhc-y.js.map} +1 -1
  25. prefect/server/ui-v2/assets/{automations-header-C6aUe5Tw.js → automations-header-CgOWwuc6.js} +2 -2
  26. prefect/server/ui-v2/assets/{automations-header-C6aUe5Tw.js.map → automations-header-CgOWwuc6.js.map} +1 -1
  27. prefect/server/ui-v2/assets/{base-job-template-form-section-a-9TFMcW.js → base-job-template-form-section-DN9HyjM5.js} +2 -2
  28. prefect/server/ui-v2/assets/{base-job-template-form-section-a-9TFMcW.js.map → base-job-template-form-section-DN9HyjM5.js.map} +1 -1
  29. prefect/server/ui-v2/assets/{block-type-details-eq3Wg2ht.js → block-type-details-rrToxL5r.js} +2 -2
  30. prefect/server/ui-v2/assets/{block-type-details-eq3Wg2ht.js.map → block-type-details-rrToxL5r.js.map} +1 -1
  31. prefect/server/ui-v2/assets/block-type-logo-DURScH8H.js +2 -0
  32. prefect/server/ui-v2/assets/{block-type-logo-B31LJm5H.js.map → block-type-logo-DURScH8H.js.map} +1 -1
  33. prefect/server/ui-v2/assets/{block._id-OVdz3htC.js → block._id-Bue6lnrN.js} +2 -2
  34. prefect/server/ui-v2/assets/{block._id-OVdz3htC.js.map → block._id-Bue6lnrN.js.map} +1 -1
  35. prefect/server/ui-v2/assets/block_._id.edit-QY0OzN_b.js +2 -0
  36. prefect/server/ui-v2/assets/{block_._id.edit-CIhIBJrm.js.map → block_._id.edit-QY0OzN_b.js.map} +1 -1
  37. prefect/server/ui-v2/assets/catalog-CGjRGWv6.js +2 -0
  38. prefect/server/ui-v2/assets/{catalog-CfniU0UV.js.map → catalog-CGjRGWv6.js.map} +1 -1
  39. prefect/server/ui-v2/assets/catalog_._slug-BMFNZhEb.js +2 -0
  40. prefect/server/ui-v2/assets/{catalog_._slug-C9p86T4s.js.map → catalog_._slug-BMFNZhEb.js.map} +1 -1
  41. prefect/server/ui-v2/assets/catalog_._slug_.create-CuFA3kUC.js +2 -0
  42. prefect/server/ui-v2/assets/{catalog_._slug_.create-BhSunL__.js.map → catalog_._slug_.create-CuFA3kUC.js.map} +1 -1
  43. prefect/server/ui-v2/assets/{collapsible-DBD7wjpi.js → collapsible-Ell2FjrX.js} +2 -2
  44. prefect/server/ui-v2/assets/{collapsible-DBD7wjpi.js.map → collapsible-Ell2FjrX.js.map} +1 -1
  45. prefect/server/ui-v2/assets/{concurrency-limit._id-C-XWq7Tf.js → concurrency-limit._id-Rr1ysUct.js} +2 -2
  46. prefect/server/ui-v2/assets/{concurrency-limit._id-C-XWq7Tf.js.map → concurrency-limit._id-Rr1ysUct.js.map} +1 -1
  47. prefect/server/ui-v2/assets/{create-noFojqGL.js → create-CQK8-uO1.js} +2 -2
  48. prefect/server/ui-v2/assets/{create-noFojqGL.js.map → create-CQK8-uO1.js.map} +1 -1
  49. prefect/server/ui-v2/assets/{create-Bj2t5YQq.js → create-ewA3uq_h.js} +2 -2
  50. prefect/server/ui-v2/assets/{create-Bj2t5YQq.js.map → create-ewA3uq_h.js.map} +1 -1
  51. prefect/server/ui-v2/assets/{data-table-BjFlVIyC.js → data-table-Bx1uYX_M.js} +2 -2
  52. prefect/server/ui-v2/assets/{data-table-BjFlVIyC.js.map → data-table-Bx1uYX_M.js.map} +1 -1
  53. prefect/server/ui-v2/assets/delete-confirmation-dialog-CqKsUEj_.js +2 -0
  54. prefect/server/ui-v2/assets/{delete-confirmation-dialog-COdZmNfa.js.map → delete-confirmation-dialog-CqKsUEj_.js.map} +1 -1
  55. prefect/server/ui-v2/assets/{deployment-action-header-C6v2kZ6V.js → deployment-action-header-Bz5COdER.js} +2 -2
  56. prefect/server/ui-v2/assets/{deployment-action-header-C6v2kZ6V.js.map → deployment-action-header-Bz5COdER.js.map} +1 -1
  57. prefect/server/ui-v2/assets/{deployment-form-D9d5sZM2.js → deployment-form-CrlZlNoj.js} +3 -3
  58. prefect/server/ui-v2/assets/{deployment-form-D9d5sZM2.js.map → deployment-form-CrlZlNoj.js.map} +1 -1
  59. prefect/server/ui-v2/assets/{deployment-links-Dy-M1Que.js → deployment-links-D9ZR_vmp.js} +2 -2
  60. prefect/server/ui-v2/assets/{deployment-links-Dy-M1Que.js.map → deployment-links-D9ZR_vmp.js.map} +1 -1
  61. prefect/server/ui-v2/assets/deployment._id-BV0rSqba.js +2 -0
  62. prefect/server/ui-v2/assets/{deployment._id-DVmqclRz.js.map → deployment._id-BV0rSqba.js.map} +1 -1
  63. prefect/server/ui-v2/assets/{deployment._id-CZlY9261.js → deployment._id-DvHhx-qN.js} +2 -2
  64. prefect/server/ui-v2/assets/{deployment._id-CZlY9261.js.map → deployment._id-DvHhx-qN.js.map} +1 -1
  65. prefect/server/ui-v2/assets/deployment_._id.duplicate-BrEOenqP.js +2 -0
  66. prefect/server/ui-v2/assets/{deployment_._id.duplicate-DVMjpk5m.js.map → deployment_._id.duplicate-BrEOenqP.js.map} +1 -1
  67. prefect/server/ui-v2/assets/deployment_._id.edit-BbYKPK42.js +2 -0
  68. prefect/server/ui-v2/assets/{deployment_._id.edit-Ck_P6KDn.js.map → deployment_._id.edit-BbYKPK42.js.map} +1 -1
  69. prefect/server/ui-v2/assets/{deployment_._id.run-Cht7AHDG.js → deployment_._id.run-Dv7S_MJR.js} +2 -2
  70. prefect/server/ui-v2/assets/{deployment_._id.run-Cht7AHDG.js.map → deployment_._id.run-Dv7S_MJR.js.map} +1 -1
  71. prefect/server/ui-v2/assets/{dropdown-menu-xZ_3w9OP.js → dropdown-menu-e0Fqb6aw.js} +2 -2
  72. prefect/server/ui-v2/assets/{dropdown-menu-xZ_3w9OP.js.map → dropdown-menu-e0Fqb6aw.js.map} +1 -1
  73. prefect/server/ui-v2/assets/{event._eventDate._eventId-CpexuXd6.js → event._eventDate._eventId-Cp4UmGqq.js} +2 -2
  74. prefect/server/ui-v2/assets/{event._eventDate._eventId-CpexuXd6.js.map → event._eventDate._eventId-Cp4UmGqq.js.map} +1 -1
  75. prefect/server/ui-v2/assets/flow-run-graph-BrqoR3E2.js +2 -0
  76. prefect/server/ui-v2/assets/flow-run-graph-BrqoR3E2.js.map +1 -0
  77. prefect/server/ui-v2/assets/{flow-run._id-ZBlKBwPO.js → flow-run._id-BOp38Pbq.js} +2 -2
  78. prefect/server/ui-v2/assets/{flow-run._id-ZBlKBwPO.js.map → flow-run._id-BOp38Pbq.js.map} +1 -1
  79. prefect/server/ui-v2/assets/flow-run._id-DJnTDEN_.js +2 -0
  80. prefect/server/ui-v2/assets/{flow-run._id-OL0YhyLW.js.map → flow-run._id-DJnTDEN_.js.map} +1 -1
  81. prefect/server/ui-v2/assets/flow-run._id-D_wY_rBe.js +4 -0
  82. prefect/server/ui-v2/assets/flow-run._id-D_wY_rBe.js.map +1 -0
  83. prefect/server/ui-v2/assets/flow-runs-pagination-Bq2ZUzM6.js +2 -0
  84. prefect/server/ui-v2/assets/flow-runs-pagination-Bq2ZUzM6.js.map +1 -0
  85. prefect/server/ui-v2/assets/flow._id-eCBL95rg.js +2 -0
  86. prefect/server/ui-v2/assets/{flow._id-DhrCicwR.js.map → flow._id-eCBL95rg.js.map} +1 -1
  87. prefect/server/ui-v2/assets/{form-BTub_PhK.js → form-DNerk3LS.js} +2 -2
  88. prefect/server/ui-v2/assets/{form-BTub_PhK.js.map → form-DNerk3LS.js.map} +1 -1
  89. prefect/server/ui-v2/assets/{header-6wmrKLU3.js → header-B0ejRncu.js} +2 -2
  90. prefect/server/ui-v2/assets/{header-6wmrKLU3.js.map → header-B0ejRncu.js.map} +1 -1
  91. prefect/server/ui-v2/assets/{header-Dp9qi8fq.js → header-DwagHBlF.js} +2 -2
  92. prefect/server/ui-v2/assets/{header-Dp9qi8fq.js.map → header-DwagHBlF.js.map} +1 -1
  93. prefect/server/ui-v2/assets/{header-B75eb688.js → header-huSvwxKI.js} +2 -2
  94. prefect/server/ui-v2/assets/{header-B75eb688.js.map → header-huSvwxKI.js.map} +1 -1
  95. prefect/server/ui-v2/assets/{index-DSaSov8V.js → index-BO3SOwdV.js} +2 -2
  96. prefect/server/ui-v2/assets/{index-DSaSov8V.js.map → index-BO3SOwdV.js.map} +1 -1
  97. prefect/server/ui-v2/assets/{index-DOkFJdYY.js → index-BTPE3vs7.js} +2 -2
  98. prefect/server/ui-v2/assets/{index-DOkFJdYY.js.map → index-BTPE3vs7.js.map} +1 -1
  99. prefect/server/ui-v2/assets/index-BU4yZRd3.js +2 -0
  100. prefect/server/ui-v2/assets/{index-Cs8eFQKw.js.map → index-BU4yZRd3.js.map} +1 -1
  101. prefect/server/ui-v2/assets/index-BhALpenO.js +2 -0
  102. prefect/server/ui-v2/assets/{index-qPlIYf3i.js.map → index-BhALpenO.js.map} +1 -1
  103. prefect/server/ui-v2/assets/index-BzN9bQeM.js +2 -0
  104. prefect/server/ui-v2/assets/{index-CT_nG86y.js.map → index-BzN9bQeM.js.map} +1 -1
  105. prefect/server/ui-v2/assets/{index-zpb5iSCL.js → index-CBhi1P9g.js} +2 -2
  106. prefect/server/ui-v2/assets/{index-zpb5iSCL.js.map → index-CBhi1P9g.js.map} +1 -1
  107. prefect/server/ui-v2/assets/{index-UN2Tx4jH.js → index-CRDz4nhM.js} +2 -2
  108. prefect/server/ui-v2/assets/{index-UN2Tx4jH.js.map → index-CRDz4nhM.js.map} +1 -1
  109. prefect/server/ui-v2/assets/index-CTnoa3Ho.js +2 -0
  110. prefect/server/ui-v2/assets/index-CTnoa3Ho.js.map +1 -0
  111. prefect/server/ui-v2/assets/{index-DzMGV8GV.js → index-CWkbSdxY.js} +2 -2
  112. prefect/server/ui-v2/assets/{index-DzMGV8GV.js.map → index-CWkbSdxY.js.map} +1 -1
  113. prefect/server/ui-v2/assets/index-CgOsOj5t.js +2 -0
  114. prefect/server/ui-v2/assets/{index-7ThYp9SY.js.map → index-CgOsOj5t.js.map} +1 -1
  115. prefect/server/ui-v2/assets/{index-CGWoVV2s.js → index-CnIJUujl.js} +2 -2
  116. prefect/server/ui-v2/assets/{index-CGWoVV2s.js.map → index-CnIJUujl.js.map} +1 -1
  117. prefect/server/ui-v2/assets/{index-D08xgmV0.js → index-Cutg_A1j.js} +2 -2
  118. prefect/server/ui-v2/assets/{index-D08xgmV0.js.map → index-Cutg_A1j.js.map} +1 -1
  119. prefect/server/ui-v2/assets/index-D5RdrxkU.js +17 -0
  120. prefect/server/ui-v2/assets/index-D5RdrxkU.js.map +1 -0
  121. prefect/server/ui-v2/assets/{index-DfiNsXba.js → index-DDiyFpIV.js} +2 -2
  122. prefect/server/ui-v2/assets/{index-DfiNsXba.js.map → index-DDiyFpIV.js.map} +1 -1
  123. prefect/server/ui-v2/assets/{index-BA7ACCoL.js → index-DI2DC5gd.js} +2 -2
  124. prefect/server/ui-v2/assets/{index-BA7ACCoL.js.map → index-DI2DC5gd.js.map} +1 -1
  125. prefect/server/ui-v2/assets/index-Dg_duvDx.js +2 -0
  126. prefect/server/ui-v2/assets/{index-B_3f8Hcb.js.map → index-Dg_duvDx.js.map} +1 -1
  127. prefect/server/ui-v2/assets/index-Dspw5HFj.js +2 -0
  128. prefect/server/ui-v2/assets/{index-7-r4ia_S.js.map → index-Dspw5HFj.js.map} +1 -1
  129. prefect/server/ui-v2/assets/index-NY089eTx.css +1 -0
  130. prefect/server/ui-v2/assets/{index-DYOACRXY.js → index-VOOLxiSE.js} +2 -2
  131. prefect/server/ui-v2/assets/{index-DYOACRXY.js.map → index-VOOLxiSE.js.map} +1 -1
  132. prefect/server/ui-v2/assets/{index-HGoNWFfP.js → index-Wfs7Cjew.js} +2 -2
  133. prefect/server/ui-v2/assets/{index-HGoNWFfP.js.map → index-Wfs7Cjew.js.map} +1 -1
  134. prefect/server/ui-v2/assets/index-dSUEBAqg.js +2 -0
  135. prefect/server/ui-v2/assets/{index-H6bwm6L6.js.map → index-dSUEBAqg.js.map} +1 -1
  136. prefect/server/ui-v2/assets/{index-D3ILnEzm.js → index-uvH5a3zO.js} +2 -2
  137. prefect/server/ui-v2/assets/{index-D3ILnEzm.js.map → index-uvH5a3zO.js.map} +1 -1
  138. prefect/server/ui-v2/assets/{json-input-9UPGqxTw.js → json-input-gXz7BuJj.js} +2 -2
  139. prefect/server/ui-v2/assets/{json-input-9UPGqxTw.js.map → json-input-gXz7BuJj.js.map} +1 -1
  140. prefect/server/ui-v2/assets/{key._key-CTFfXO_k.js → key._key-CJPbLXwU.js} +2 -2
  141. prefect/server/ui-v2/assets/{key._key-CTFfXO_k.js.map → key._key-CJPbLXwU.js.map} +1 -1
  142. prefect/server/ui-v2/assets/{lazy-markdown-BHwIrC8E.js → lazy-markdown-wPid80zf.js} +2 -2
  143. prefect/server/ui-v2/assets/{lazy-markdown-BHwIrC8E.js.map → lazy-markdown-wPid80zf.js.map} +1 -1
  144. prefect/server/ui-v2/assets/{login-kqmT29n7.js → login-DC63bGXK.js} +2 -2
  145. prefect/server/ui-v2/assets/{login-kqmT29n7.js.map → login-DC63bGXK.js.map} +1 -1
  146. prefect/server/ui-v2/assets/{markdown-input-BesmAbLS.js → markdown-input-BhqrU6Eo.js} +2 -2
  147. prefect/server/ui-v2/assets/{markdown-input-BesmAbLS.js.map → markdown-input-BhqrU6Eo.js.map} +1 -1
  148. prefect/server/ui-v2/assets/{python-example-snippet-COTWYn1Y.js → python-example-snippet-3jtXWQZN.js} +3 -3
  149. prefect/server/ui-v2/assets/{python-example-snippet-COTWYn1Y.js.map → python-example-snippet-3jtXWQZN.js.map} +1 -1
  150. prefect/server/ui-v2/assets/{python-input-Bjccebi0.js → python-input-ZVi-v324.js} +2 -2
  151. prefect/server/ui-v2/assets/{python-input-Bjccebi0.js.map → python-input-ZVi-v324.js.map} +1 -1
  152. prefect/server/ui-v2/assets/{radio-group-DkAK0M2h.js → radio-group-BBMLpHGc.js} +2 -2
  153. prefect/server/ui-v2/assets/{radio-group-DkAK0M2h.js.map → radio-group-BBMLpHGc.js.map} +1 -1
  154. prefect/server/ui-v2/assets/route-error-state-BJXl8qkX.js +2 -0
  155. prefect/server/ui-v2/assets/{route-error-state-ALftyvGl.js.map → route-error-state-BJXl8qkX.js.map} +1 -1
  156. prefect/server/ui-v2/assets/{schema-form-BR4E-WXE.js → schema-form-BEqYjsM-.js} +2 -2
  157. prefect/server/ui-v2/assets/{schema-form-BR4E-WXE.js.map → schema-form-BEqYjsM-.js.map} +1 -1
  158. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-BhL8C5NS.js → schema-form-input-string-format-datetime-l3xt3PWf.js} +4 -4
  159. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-BhL8C5NS.js.map → schema-form-input-string-format-datetime-l3xt3PWf.js.map} +1 -1
  160. prefect/server/ui-v2/assets/settings-txD0dR5Q.js +2 -0
  161. prefect/server/ui-v2/assets/settings-txD0dR5Q.js.map +1 -0
  162. prefect/server/ui-v2/assets/{sort-filter-BD4vwJXt.js → sort-filter-DHPFdKZ2.js} +2 -2
  163. prefect/server/ui-v2/assets/{sort-filter-BD4vwJXt.js.map → sort-filter-DHPFdKZ2.js.map} +1 -1
  164. prefect/server/ui-v2/assets/state-colors-CAAf0Eg3.js +2 -0
  165. prefect/server/ui-v2/assets/state-colors-CAAf0Eg3.js.map +1 -0
  166. prefect/server/ui-v2/assets/table-ULfpXJXB.js +2 -0
  167. prefect/server/ui-v2/assets/table-ULfpXJXB.js.map +1 -0
  168. prefect/server/ui-v2/assets/tags-input-BLzMOTDb.js +2 -0
  169. prefect/server/ui-v2/assets/tags-input-BLzMOTDb.js.map +1 -0
  170. prefect/server/ui-v2/assets/task-run-concurrency-limits-reset-dialog-BpeKHk7g.js +2 -0
  171. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CG3den1B.js.map → task-run-concurrency-limits-reset-dialog-BpeKHk7g.js.map} +1 -1
  172. prefect/server/ui-v2/assets/{task-run._id-DOcIzVi0.js → task-run._id-CkOl9MJs.js} +3 -3
  173. prefect/server/ui-v2/assets/{task-run._id-DOcIzVi0.js.map → task-run._id-CkOl9MJs.js.map} +1 -1
  174. prefect/server/ui-v2/assets/task-run._id-udkz1lhh.js +2 -0
  175. prefect/server/ui-v2/assets/{task-run._id-CnIVqU6v.js.map → task-run._id-udkz1lhh.js.map} +1 -1
  176. prefect/server/ui-v2/assets/task-runs-pagination-B7D5K_FM.js +2 -0
  177. prefect/server/ui-v2/assets/{task-runs-pagination-DLSAz-Ur.js.map → task-runs-pagination-B7D5K_FM.js.map} +1 -1
  178. prefect/server/ui-v2/assets/{textarea-D8LjlIx7.js → textarea-C4bdj7Jk.js} +2 -2
  179. prefect/server/ui-v2/assets/{textarea-D8LjlIx7.js.map → textarea-C4bdj7Jk.js.map} +1 -1
  180. prefect/server/ui-v2/assets/{timezone-select-BG3cL3-U.js → timezone-select-AdlSRQxZ.js} +2 -2
  181. prefect/server/ui-v2/assets/{timezone-select-BG3cL3-U.js.map → timezone-select-AdlSRQxZ.js.map} +1 -1
  182. prefect/server/ui-v2/assets/{toggle-group-D3zeurIL.js → toggle-group-C-vxYz4l.js} +2 -2
  183. prefect/server/ui-v2/assets/{toggle-group-D3zeurIL.js.map → toggle-group-C-vxYz4l.js.map} +1 -1
  184. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-Cqhaqtqe.js +2 -0
  185. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-Bzy2ML2T.js.map → use-delete-automation-confirmation-dialog-Cqhaqtqe.js.map} +1 -1
  186. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-DRAP-Tnu.js → use-delete-block-document-confirmation-dialog-GjNhFxZe.js} +2 -2
  187. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-DRAP-Tnu.js.map → use-delete-block-document-confirmation-dialog-GjNhFxZe.js.map} +1 -1
  188. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-D4yWonR8.js → use-flow-runs-selected-rows-DfwmswyR.js} +2 -2
  189. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-D4yWonR8.js.map → use-flow-runs-selected-rows-DfwmswyR.js.map} +1 -1
  190. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DZeBiVd9.js → use-get-artifacts-flow-task-runs-BEBpG_5J.js} +2 -2
  191. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DZeBiVd9.js.map → use-get-artifacts-flow-task-runs-BEBpG_5J.js.map} +1 -1
  192. prefect/server/ui-v2/assets/{use-quick-run-BxAMqZDM.js → use-quick-run-BYBRcDwC.js} +2 -2
  193. prefect/server/ui-v2/assets/{use-quick-run-BxAMqZDM.js.map → use-quick-run-BYBRcDwC.js.map} +1 -1
  194. prefect/server/ui-v2/assets/{use-stepper-T3wAKNvM.js → use-stepper-Bk97vOTm.js} +2 -2
  195. prefect/server/ui-v2/assets/{use-stepper-T3wAKNvM.js.map → use-stepper-Bk97vOTm.js.map} +1 -1
  196. prefect/server/ui-v2/assets/{utilities-B2JMf8iI.js → utilities-BQwGFLk5.js} +2 -2
  197. prefect/server/ui-v2/assets/{utilities-B2JMf8iI.js.map → utilities-BQwGFLk5.js.map} +1 -1
  198. prefect/server/ui-v2/assets/{work-pool-filter-CZz0AJlt.js → work-pool-filter-Ddhp_M-L.js} +2 -2
  199. prefect/server/ui-v2/assets/{work-pool-filter-CZz0AJlt.js.map → work-pool-filter-Ddhp_M-L.js.map} +1 -1
  200. prefect/server/ui-v2/assets/work-pool-queue-toggle-DX3eV3R_.js +2 -0
  201. prefect/server/ui-v2/assets/{work-pool-queue-toggle-D4eeo-hi.js.map → work-pool-queue-toggle-DX3eV3R_.js.map} +1 -1
  202. prefect/server/ui-v2/assets/{work-pool._workPoolName-DrWddu9K.js → work-pool._workPoolName-BaRIsXBX.js} +2 -2
  203. prefect/server/ui-v2/assets/{work-pool._workPoolName-DrWddu9K.js.map → work-pool._workPoolName-BaRIsXBX.js.map} +1 -1
  204. prefect/server/ui-v2/assets/work-pool_._workPoolName.edit-dhS_Xz32.js +2 -0
  205. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-CA0ePjCk.js.map → work-pool_._workPoolName.edit-dhS_Xz32.js.map} +1 -1
  206. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-DpUnE86v.js → work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js} +2 -2
  207. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-DpUnE86v.js.map → work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js.map} +1 -1
  208. prefect/server/ui-v2/assets/{work-queue-icon-text-BjiA7vAW.js → work-queue-icon-text-_Ez8e2dw.js} +2 -2
  209. prefect/server/ui-v2/assets/{work-queue-icon-text-BjiA7vAW.js.map → work-queue-icon-text-_Ez8e2dw.js.map} +1 -1
  210. prefect/server/ui-v2/index.html +2 -2
  211. prefect/settings/models/flows.py +14 -1
  212. prefect/settings/models/runner.py +16 -6
  213. prefect/task_engine.py +17 -3
  214. prefect/task_worker.py +99 -17
  215. prefect/tasks.py +2 -2
  216. prefect/testing/fixtures.py +41 -6
  217. {prefect-3.6.12.dist-info → prefect-3.6.13.dist-info}/METADATA +1 -1
  218. {prefect-3.6.12.dist-info → prefect-3.6.13.dist-info}/RECORD +221 -220
  219. prefect/server/ui-v2/assets/automation._id-IHh5QJwE.js +0 -2
  220. prefect/server/ui-v2/assets/block-type-logo-B31LJm5H.js +0 -2
  221. prefect/server/ui-v2/assets/block_._id.edit-CIhIBJrm.js +0 -2
  222. prefect/server/ui-v2/assets/catalog-CfniU0UV.js +0 -2
  223. prefect/server/ui-v2/assets/catalog_._slug-C9p86T4s.js +0 -2
  224. prefect/server/ui-v2/assets/catalog_._slug_.create-BhSunL__.js +0 -2
  225. prefect/server/ui-v2/assets/delete-confirmation-dialog-COdZmNfa.js +0 -2
  226. prefect/server/ui-v2/assets/deployment._id-DVmqclRz.js +0 -2
  227. prefect/server/ui-v2/assets/deployment_._id.duplicate-DVMjpk5m.js +0 -2
  228. prefect/server/ui-v2/assets/deployment_._id.edit-Ck_P6KDn.js +0 -2
  229. prefect/server/ui-v2/assets/flow-run-graph-CfoPEAgQ.js +0 -2
  230. prefect/server/ui-v2/assets/flow-run-graph-CfoPEAgQ.js.map +0 -1
  231. prefect/server/ui-v2/assets/flow-run._id-C-qxwEBp.js +0 -4
  232. prefect/server/ui-v2/assets/flow-run._id-C-qxwEBp.js.map +0 -1
  233. prefect/server/ui-v2/assets/flow-run._id-OL0YhyLW.js +0 -2
  234. prefect/server/ui-v2/assets/flow-runs-pagination-DnwkJapB.js +0 -2
  235. prefect/server/ui-v2/assets/flow-runs-pagination-DnwkJapB.js.map +0 -1
  236. prefect/server/ui-v2/assets/flow._id-DhrCicwR.js +0 -2
  237. prefect/server/ui-v2/assets/index-7-r4ia_S.js +0 -2
  238. prefect/server/ui-v2/assets/index-7ThYp9SY.js +0 -2
  239. prefect/server/ui-v2/assets/index-B7zHzWQW.css +0 -1
  240. prefect/server/ui-v2/assets/index-B_3f8Hcb.js +0 -2
  241. prefect/server/ui-v2/assets/index-BiCd-Iuz.js +0 -2
  242. prefect/server/ui-v2/assets/index-BiCd-Iuz.js.map +0 -1
  243. prefect/server/ui-v2/assets/index-CT_nG86y.js +0 -2
  244. prefect/server/ui-v2/assets/index-Cs8eFQKw.js +0 -2
  245. prefect/server/ui-v2/assets/index-H6bwm6L6.js +0 -2
  246. prefect/server/ui-v2/assets/index-WYPZo52S.js +0 -17
  247. prefect/server/ui-v2/assets/index-WYPZo52S.js.map +0 -1
  248. prefect/server/ui-v2/assets/index-qPlIYf3i.js +0 -2
  249. prefect/server/ui-v2/assets/route-error-state-ALftyvGl.js +0 -2
  250. prefect/server/ui-v2/assets/settings-BL0X8cDU.js +0 -2
  251. prefect/server/ui-v2/assets/settings-BL0X8cDU.js.map +0 -1
  252. prefect/server/ui-v2/assets/table-CEAx-qHs.js +0 -2
  253. prefect/server/ui-v2/assets/table-CEAx-qHs.js.map +0 -1
  254. prefect/server/ui-v2/assets/tags-input-D1RJZEUA.js +0 -2
  255. prefect/server/ui-v2/assets/tags-input-D1RJZEUA.js.map +0 -1
  256. prefect/server/ui-v2/assets/task-run-concurrency-limits-reset-dialog-CG3den1B.js +0 -2
  257. prefect/server/ui-v2/assets/task-run._id-CnIVqU6v.js +0 -2
  258. prefect/server/ui-v2/assets/task-runs-pagination-DLSAz-Ur.js +0 -2
  259. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-Bzy2ML2T.js +0 -2
  260. prefect/server/ui-v2/assets/use-local-storage-CpxMp5wR.js +0 -2
  261. prefect/server/ui-v2/assets/use-local-storage-CpxMp5wR.js.map +0 -1
  262. prefect/server/ui-v2/assets/work-pool-queue-toggle-D4eeo-hi.js +0 -2
  263. prefect/server/ui-v2/assets/work-pool_._workPoolName.edit-CA0ePjCk.js +0 -2
  264. {prefect-3.6.12.dist-info → prefect-3.6.13.dist-info}/WHEEL +0 -0
  265. {prefect-3.6.12.dist-info → prefect-3.6.13.dist-info}/entry_points.txt +0 -0
  266. {prefect-3.6.12.dist-info → prefect-3.6.13.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,2 @@
1
+ import{p as n,j as t}from"./vendor-tanstack-BK8oseNA.js";import{d5 as m,B as l,g as c,h as a,bs as u,bB as d,bD as x,ds as p}from"./index-D5RdrxkU.js";import{D as j}from"./delete-confirmation-dialog-CqKsUEj_.js";import{u as f,A as b,a as g,b as h,c as A,d as D}from"./use-delete-automation-confirmation-dialog-Cqhaqtqe.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./work-queue-icon-text-_Ez8e2dw.js";import"./index-Cutg_A1j.js";import"./dropdown-menu-e0Fqb6aw.js";import"./use-delete-confirmation-dialog-CvQEyyhU.js";const B=({id:s})=>{const[o,i]=f(),{data:e}=n(m(s)),r=()=>i(e,{shouldNavigate:!0});return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-col gap-6",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(N,{automation:e}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(b,{automation:e}),t.jsx(g,{id:e.id,onDelete:r})]})]}),t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsx(h,{automation:e}),t.jsx(A,{automation:e}),t.jsx(D,{automation:e})]})]}),t.jsx(j,{...o})]})},N=({automation:s})=>t.jsx(l,{children:t.jsxs(c,{children:[t.jsx(a,{children:t.jsx(u,{to:"/automations",className:"text-xl font-semibold",children:"Automations"})}),t.jsx(d,{}),t.jsx(a,{className:"text-xl font-semibold",children:t.jsx(x,{children:s.name})})]})});function G(){const{id:s}=p.useParams();return t.jsx(B,{id:s})}export{G as component};
2
+ //# sourceMappingURL=automation._id-DuodjY5t.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation._id-IHh5QJwE.js","sources":["../../src/components/automations/automation-details-page.tsx","../../src/routes/automations/automation.$id.tsx?tsr-split=component"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { type Automation, buildGetAutomationQuery } from \"@/api/automations\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport {\n\tAutomationActions,\n\tAutomationDescription,\n\tAutomationTrigger,\n} from \"./automation-details\";\nimport { AutomationEnableToggle } from \"./automation-enable-toggle\";\nimport { AutomationsActionsMenu } from \"./automations-actions-menu\";\nimport { useDeleteAutomationConfirmationDialog } from \"./use-delete-automation-confirmation-dialog\";\n\ntype AutomationsDetailsPageProps = {\n\tid: string;\n};\n\nexport const AutomationDetailsPage = ({ id }: AutomationsDetailsPageProps) => {\n\tconst [dialogState, confirmDelete] = useDeleteAutomationConfirmationDialog();\n\tconst { data } = useSuspenseQuery(buildGetAutomationQuery(id));\n\n\tconst handleDelete = () => confirmDelete(data, { shouldNavigate: true });\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<NavHeader automation={data} />\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<AutomationEnableToggle automation={data} />\n\t\t\t\t\t\t<AutomationsActionsMenu id={data.id} onDelete={handleDelete} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t<AutomationDescription automation={data} />\n\t\t\t\t\t<AutomationTrigger automation={data} />\n\t\t\t\t\t<AutomationActions automation={data} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<DeleteConfirmationDialog {...dialogState} />\n\t\t</>\n\t);\n};\n\ntype NavHeaderProps = {\n\tautomation: Automation;\n};\nconst NavHeader = ({ automation }: NavHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/automations\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tAutomations\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>{automation.name}</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { createFileRoute } from \"@tanstack/react-router\";\n\nimport { buildGetAutomationQuery } from \"@/api/automations\";\nimport { AutomationDetailsPage } from \"@/components/automations/automation-details-page\";\n\nexport const Route = createFileRoute(\"/automations/automation/$id\")({\n\tcomponent: RouteComponent,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(buildGetAutomationQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <AutomationDetailsPage id={id} />;\n}\n"],"names":["AutomationDetailsPage","id","dialogState","confirmDelete","useDeleteAutomationConfirmationDialog","data","useSuspenseQuery","buildGetAutomationQuery","handleDelete","jsxs","Fragment","jsx","NavHeader","AutomationEnableToggle","AutomationsActionsMenu","AutomationDescription","AutomationTrigger","AutomationActions","DeleteConfirmationDialog","automation","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","RouteComponent","Route","useParams"],"mappings":"opBAwBO,MAAMA,EAAwB,CAAC,CAAE,GAAAC,KAAsC,CAC7E,KAAM,CAACC,EAAaC,CAAa,EAAIC,EAAA,EAC/B,CAAE,KAAAC,CAAA,EAASC,EAAiBC,EAAwBN,CAAE,CAAC,EAEvDO,EAAe,IAAML,EAAcE,EAAM,CAAE,eAAgB,GAAM,EAEvE,OACCI,EAAAA,KAAAC,WAAA,CACC,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAE,EAAAA,IAACC,EAAA,CAAU,WAAYP,CAAA,CAAM,EAC7BI,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAE,EAAAA,IAACE,EAAA,CAAuB,WAAYR,CAAA,CAAM,QACzCS,EAAA,CAAuB,GAAIT,EAAK,GAAI,SAAUG,CAAA,CAAc,CAAA,CAAA,CAC9D,CAAA,EACD,EACAC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAE,EAAAA,IAACI,EAAA,CAAsB,WAAYV,CAAA,CAAM,EACzCM,EAAAA,IAACK,EAAA,CAAkB,WAAYX,CAAA,CAAM,EACrCM,EAAAA,IAACM,EAAA,CAAkB,WAAYZ,CAAA,CAAM,CAAA,CAAA,CACtC,CAAA,EACD,EACAM,MAACO,EAAA,CAA0B,GAAGhB,CAAA,CAAa,CAAA,EAC5C,CAEF,EAKMU,EAAY,CAAC,CAAE,WAAAO,KAEnBR,EAAAA,IAACS,EAAA,CACA,SAAAX,EAAAA,KAACY,EAAA,CACA,SAAA,CAAAV,EAAAA,IAACW,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,eAAe,UAAU,wBAAwB,uBAEpE,CAAA,CACD,QACCC,EAAA,EAAoB,EACrBb,EAAAA,IAACW,GAAe,UAAU,wBACzB,eAACG,EAAA,CAAgB,SAAAN,EAAW,KAAK,CAAA,CAClC,CAAA,CAAA,CACD,CAAA,CACD,ECxDF,SAASO,GAAiB,CACzB,KAAM,CAAEzB,GAAAA,CAAAA,EAAO0B,EAAMC,UAAAA,EACrB,OAAOjB,MAACX,GAAsB,GAAAC,EAAO,CACtC"}
1
+ {"version":3,"file":"automation._id-DuodjY5t.js","sources":["../../src/components/automations/automation-details-page.tsx","../../src/routes/automations/automation.$id.tsx?tsr-split=component"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { type Automation, buildGetAutomationQuery } from \"@/api/automations\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport {\n\tAutomationActions,\n\tAutomationDescription,\n\tAutomationTrigger,\n} from \"./automation-details\";\nimport { AutomationEnableToggle } from \"./automation-enable-toggle\";\nimport { AutomationsActionsMenu } from \"./automations-actions-menu\";\nimport { useDeleteAutomationConfirmationDialog } from \"./use-delete-automation-confirmation-dialog\";\n\ntype AutomationsDetailsPageProps = {\n\tid: string;\n};\n\nexport const AutomationDetailsPage = ({ id }: AutomationsDetailsPageProps) => {\n\tconst [dialogState, confirmDelete] = useDeleteAutomationConfirmationDialog();\n\tconst { data } = useSuspenseQuery(buildGetAutomationQuery(id));\n\n\tconst handleDelete = () => confirmDelete(data, { shouldNavigate: true });\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<NavHeader automation={data} />\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<AutomationEnableToggle automation={data} />\n\t\t\t\t\t\t<AutomationsActionsMenu id={data.id} onDelete={handleDelete} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t<AutomationDescription automation={data} />\n\t\t\t\t\t<AutomationTrigger automation={data} />\n\t\t\t\t\t<AutomationActions automation={data} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<DeleteConfirmationDialog {...dialogState} />\n\t\t</>\n\t);\n};\n\ntype NavHeaderProps = {\n\tautomation: Automation;\n};\nconst NavHeader = ({ automation }: NavHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/automations\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tAutomations\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>{automation.name}</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { createFileRoute } from \"@tanstack/react-router\";\n\nimport { buildGetAutomationQuery } from \"@/api/automations\";\nimport { AutomationDetailsPage } from \"@/components/automations/automation-details-page\";\n\nexport const Route = createFileRoute(\"/automations/automation/$id\")({\n\tcomponent: RouteComponent,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(buildGetAutomationQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <AutomationDetailsPage id={id} />;\n}\n"],"names":["AutomationDetailsPage","id","dialogState","confirmDelete","useDeleteAutomationConfirmationDialog","data","useSuspenseQuery","buildGetAutomationQuery","handleDelete","jsxs","Fragment","jsx","NavHeader","AutomationEnableToggle","AutomationsActionsMenu","AutomationDescription","AutomationTrigger","AutomationActions","DeleteConfirmationDialog","automation","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","RouteComponent","Route","useParams"],"mappings":"opBAwBO,MAAMA,EAAwB,CAAC,CAAE,GAAAC,KAAsC,CAC7E,KAAM,CAACC,EAAaC,CAAa,EAAIC,EAAA,EAC/B,CAAE,KAAAC,CAAA,EAASC,EAAiBC,EAAwBN,CAAE,CAAC,EAEvDO,EAAe,IAAML,EAAcE,EAAM,CAAE,eAAgB,GAAM,EAEvE,OACCI,EAAAA,KAAAC,WAAA,CACC,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAE,EAAAA,IAACC,EAAA,CAAU,WAAYP,CAAA,CAAM,EAC7BI,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAE,EAAAA,IAACE,EAAA,CAAuB,WAAYR,CAAA,CAAM,QACzCS,EAAA,CAAuB,GAAIT,EAAK,GAAI,SAAUG,CAAA,CAAc,CAAA,CAAA,CAC9D,CAAA,EACD,EACAC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAE,EAAAA,IAACI,EAAA,CAAsB,WAAYV,CAAA,CAAM,EACzCM,EAAAA,IAACK,EAAA,CAAkB,WAAYX,CAAA,CAAM,EACrCM,EAAAA,IAACM,EAAA,CAAkB,WAAYZ,CAAA,CAAM,CAAA,CAAA,CACtC,CAAA,EACD,EACAM,MAACO,EAAA,CAA0B,GAAGhB,CAAA,CAAa,CAAA,EAC5C,CAEF,EAKMU,EAAY,CAAC,CAAE,WAAAO,KAEnBR,EAAAA,IAACS,EAAA,CACA,SAAAX,EAAAA,KAACY,EAAA,CACA,SAAA,CAAAV,EAAAA,IAACW,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,eAAe,UAAU,wBAAwB,uBAEpE,CAAA,CACD,QACCC,EAAA,EAAoB,EACrBb,EAAAA,IAACW,GAAe,UAAU,wBACzB,eAACG,EAAA,CAAgB,SAAAN,EAAW,KAAK,CAAA,CAClC,CAAA,CAAA,CACD,CAAA,CACD,ECxDF,SAASO,GAAiB,CACzB,KAAM,CAAEzB,GAAAA,CAAAA,EAAO0B,EAAMC,UAAAA,EACrB,OAAOjB,MAACX,GAAsB,GAAAC,EAAO,CACtC"}
@@ -1,2 +1,2 @@
1
- import{j as t,p as b,r as w,u as x}from"./vendor-tanstack-BK8oseNA.js";import{D as _,B as A,g as j,h as d,bq as v,bz as k,bB as g,d1 as S,dL as E,x as p,dM as N}from"./index-WYPZo52S.js";import{A as q}from"./automation-wizard-Bx9AQxRV.js";import{U as n}from"./automation-schema-ClcP8M93.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./zod-DgSl2Nua.js";import"./form-BTub_PhK.js";import"./use-stepper-T3wAKNvM.js";import"./index-DSaSov8V.js";import"./textarea-D8LjlIx7.js";import"./radio-group-DkAK0M2h.js";import"./collapsible-DBD7wjpi.js";import"./tags-input-D1RJZEUA.js";const I=()=>t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(T,{}),t.jsx(_,{label:"Documentation",id:"automations-guide"})]}),T=()=>t.jsx("div",{className:"flex items-center gap-2",children:t.jsx(A,{children:t.jsxs(j,{children:[t.jsx(d,{children:t.jsx(v,{to:"/automations",className:"text-xl font-semibold",children:"Automations"})}),t.jsx(k,{}),t.jsx(d,{className:"text-xl font-semibold",children:t.jsx(g,{children:"Edit Automation"})})]})})});function B(e){switch(e.type){case"run-deployment":return{type:"run-deployment",deployment_id:e.deployment_id??n,parameters:e.parameters??void 0,job_variables:e.job_variables??void 0};case"pause-deployment":case"resume-deployment":return{type:e.type,deployment_id:e.deployment_id??n};case"pause-work-queue":case"resume-work-queue":return{type:e.type,work_queue_id:e.work_queue_id??n};case"pause-work-pool":case"resume-work-pool":return{type:e.type,work_pool_id:e.work_pool_id??n};case"pause-automation":case"resume-automation":return{type:e.type,automation_id:e.automation_id??n};case"cancel-flow-run":case"suspend-flow-run":case"resume-flow-run":return{type:e.type};case"change-flow-run-state":return{type:"change-flow-run-state",state:e.state,name:e.name??void 0,message:e.message??void 0};case"send-notification":return{type:"send-notification",block_document_id:e.block_document_id,body:e.body,subject:e.subject};case"do-nothing":return{type:"do-nothing"};case"call-webhook":return{type:"do-nothing"};default:return{type:"do-nothing"}}}function c(e){switch(e.type){case"event":return{type:"event",posture:e.posture,threshold:e.threshold,within:e.within,match:e.match,match_related:Array.isArray(e.match_related)?e.match_related[0]:e.match_related,for_each:e.for_each,after:e.after,expect:e.expect};case"compound":return{type:"compound",triggers:e.triggers.map(c),require:e.require,within:e.within??void 0};case"sequence":return{type:"sequence",triggers:e.triggers.map(c),within:e.within??void 0};default:return{type:"event",posture:"Reactive",threshold:1,within:0}}}function V(e){if(e.type!=="event")return"custom";const o=e.match?.["prefect.resource.id"];if(!o)return"custom";const r=Array.isArray(o)?o[0]:o;return r?.startsWith("prefect.flow-run.")?"flow-run-state":r?.startsWith("prefect.deployment.")?"deployment-status":r?.startsWith("prefect.work-pool.")?"work-pool-status":r?.startsWith("prefect.work-queue.")?"work-queue-status":"custom"}function F(e){return{name:e.name,description:e.description||void 0,triggerTemplate:V(e.trigger),trigger:c(e.trigger),actions:e.actions.map(B)}}function L(e){return{name:e.name,description:e.description??"",trigger:e.trigger,actions:e.actions}}const P=e=>{const{automationId:o,onSuccess:r,onError:u}=e,{data:s,isLoading:i}=b(S(o)),a=w.useMemo(()=>{if(s)return F(s)},[s]),{replaceAutomation:l,isPending:f}=E();return{defaultValues:a,isLoading:i,updateAutomation:h=>{const y=L(h);l({id:o,enabled:s?.enabled??!0,...y},{onSuccess:()=>{r?.()},onError:m=>{u?.(m instanceof Error?m:new Error(String(m)))}})},isPending:f}},R=({id:e})=>{const o=x(),{defaultValues:r,updateAutomation:u,isPending:s}=P({automationId:e,onSuccess:()=>{p.success("Automation updated successfully"),o({to:"/automations"})},onError:a=>{p.error(`Failed to update automation: ${a.message}`,{duration:Number.POSITIVE_INFINITY})}}),i=a=>{u(a)};return t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsx(I,{}),t.jsx(q,{defaultValues:r,onSubmit:i,submitLabel:"Save",isSubmitting:s})]})};function oe(){const{id:e}=N.useParams();return t.jsx(R,{id:e})}export{oe as component};
2
- //# sourceMappingURL=automation_._id.edit-Ds8vO0c5.js.map
1
+ import{j as t,p as b,r as w,u as x}from"./vendor-tanstack-BK8oseNA.js";import{D as _,B as A,g as j,h as d,bs as v,bB as k,bD as g,d5 as S,dN as E,y as p,dO as N}from"./index-D5RdrxkU.js";import{A as I}from"./automation-wizard-z26pICBl.js";import{U as n}from"./automation-schema-ClcP8M93.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./zod-DgSl2Nua.js";import"./form-DNerk3LS.js";import"./use-stepper-Bk97vOTm.js";import"./index-BO3SOwdV.js";import"./textarea-C4bdj7Jk.js";import"./radio-group-BBMLpHGc.js";import"./collapsible-Ell2FjrX.js";import"./tags-input-BLzMOTDb.js";const q=()=>t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(T,{}),t.jsx(_,{label:"Documentation",id:"automations-guide"})]}),T=()=>t.jsx("div",{className:"flex items-center gap-2",children:t.jsx(A,{children:t.jsxs(j,{children:[t.jsx(d,{children:t.jsx(v,{to:"/automations",className:"text-xl font-semibold",children:"Automations"})}),t.jsx(k,{}),t.jsx(d,{className:"text-xl font-semibold",children:t.jsx(g,{children:"Edit Automation"})})]})})});function B(e){switch(e.type){case"run-deployment":return{type:"run-deployment",deployment_id:e.deployment_id??n,parameters:e.parameters??void 0,job_variables:e.job_variables??void 0};case"pause-deployment":case"resume-deployment":return{type:e.type,deployment_id:e.deployment_id??n};case"pause-work-queue":case"resume-work-queue":return{type:e.type,work_queue_id:e.work_queue_id??n};case"pause-work-pool":case"resume-work-pool":return{type:e.type,work_pool_id:e.work_pool_id??n};case"pause-automation":case"resume-automation":return{type:e.type,automation_id:e.automation_id??n};case"cancel-flow-run":case"suspend-flow-run":case"resume-flow-run":return{type:e.type};case"change-flow-run-state":return{type:"change-flow-run-state",state:e.state,name:e.name??void 0,message:e.message??void 0};case"send-notification":return{type:"send-notification",block_document_id:e.block_document_id,body:e.body,subject:e.subject};case"do-nothing":return{type:"do-nothing"};case"call-webhook":return{type:"do-nothing"};default:return{type:"do-nothing"}}}function c(e){switch(e.type){case"event":return{type:"event",posture:e.posture,threshold:e.threshold,within:e.within,match:e.match,match_related:Array.isArray(e.match_related)?e.match_related[0]:e.match_related,for_each:e.for_each,after:e.after,expect:e.expect};case"compound":return{type:"compound",triggers:e.triggers.map(c),require:e.require,within:e.within??void 0};case"sequence":return{type:"sequence",triggers:e.triggers.map(c),within:e.within??void 0};default:return{type:"event",posture:"Reactive",threshold:1,within:0}}}function V(e){if(e.type!=="event")return"custom";const o=e.match?.["prefect.resource.id"];if(!o)return"custom";const r=Array.isArray(o)?o[0]:o;return r?.startsWith("prefect.flow-run.")?"flow-run-state":r?.startsWith("prefect.deployment.")?"deployment-status":r?.startsWith("prefect.work-pool.")?"work-pool-status":r?.startsWith("prefect.work-queue.")?"work-queue-status":"custom"}function F(e){return{name:e.name,description:e.description||void 0,triggerTemplate:V(e.trigger),trigger:c(e.trigger),actions:e.actions.map(B)}}function P(e){return{name:e.name,description:e.description??"",trigger:e.trigger,actions:e.actions}}const D=e=>{const{automationId:o,onSuccess:r,onError:u}=e,{data:s,isLoading:i}=b(S(o)),a=w.useMemo(()=>{if(s)return F(s)},[s]),{replaceAutomation:l,isPending:f}=E();return{defaultValues:a,isLoading:i,updateAutomation:h=>{const y=P(h);l({id:o,enabled:s?.enabled??!0,...y},{onSuccess:()=>{r?.()},onError:m=>{u?.(m instanceof Error?m:new Error(String(m)))}})},isPending:f}},L=({id:e})=>{const o=x(),{defaultValues:r,updateAutomation:u,isPending:s}=D({automationId:e,onSuccess:()=>{p.success("Automation updated successfully"),o({to:"/automations"})},onError:a=>{p.error(`Failed to update automation: ${a.message}`,{duration:Number.POSITIVE_INFINITY})}}),i=a=>{u(a)};return t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsx(q,{}),t.jsx(I,{defaultValues:r,onSubmit:i,submitLabel:"Save",isSubmitting:s})]})};function oe(){const{id:e}=N.useParams();return t.jsx(L,{id:e})}export{oe as component};
2
+ //# sourceMappingURL=automation_._id.edit-CcuJhc-y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation_._id.edit-Ds8vO0c5.js","sources":["../../src/components/automations/automations-edit-header/automations-edit-header.tsx","../../src/components/automations/automations-wizard/use-edit-automation.ts","../../src/components/automations/automation-edit-page.tsx","../../src/routes/automations/automation_.$id.edit.tsx?tsr-split=component"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\n\nexport const AutomationsEditHeader = () => (\n\t<div className=\"flex items-center justify-between\">\n\t\t<NavHeader />\n\t\t<DocsLink label=\"Documentation\" id=\"automations-guide\" />\n\t</div>\n);\n\nconst NavHeader = () => (\n\t<div className=\"flex items-center gap-2\">\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/automations\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tAutomations\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Edit Automation</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t</div>\n);\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport {\n\ttype Automation,\n\tbuildGetAutomationQuery,\n\tuseReplaceAutomation,\n} from \"@/api/automations\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\ttype AutomationWizardSchema as AutomationWizardSchemaType,\n\ttype TriggerInput,\n\ttype TriggerTemplate,\n\tUNASSIGNED,\n} from \"./automation-schema\";\n\ntype AutomationAction = Automation[\"actions\"][number];\ntype AutomationTrigger = Automation[\"trigger\"];\ntype AutomationUpdate = components[\"schemas\"][\"AutomationUpdate\"];\n\n/**\n * Input type for the automation wizard form (before Zod transformations).\n * This represents what the form fields accept, not the transformed output.\n */\ntype AutomationWizardFormInput = {\n\tname: string;\n\tdescription?: string;\n\ttriggerTemplate?: TriggerTemplate;\n\ttrigger: TriggerInput;\n\tactions: ActionFormInput[];\n};\n\n/**\n * Input type for actions (before Zod transformations).\n * These types don't have the `source` field - that's added by the transform.\n */\ntype ActionFormInput =\n\t| { type: \"do-nothing\" }\n\t| { type: \"cancel-flow-run\" | \"suspend-flow-run\" | \"resume-flow-run\" }\n\t| {\n\t\t\ttype: \"change-flow-run-state\";\n\t\t\tstate:\n\t\t\t\t| \"COMPLETED\"\n\t\t\t\t| \"RUNNING\"\n\t\t\t\t| \"SCHEDULED\"\n\t\t\t\t| \"PENDING\"\n\t\t\t\t| \"FAILED\"\n\t\t\t\t| \"CANCELLED\"\n\t\t\t\t| \"CANCELLING\"\n\t\t\t\t| \"CRASHED\"\n\t\t\t\t| \"PAUSED\";\n\t\t\tname?: string;\n\t\t\tmessage?: string;\n\t }\n\t| {\n\t\t\ttype: \"run-deployment\";\n\t\t\tdeployment_id: string;\n\t\t\tparameters?: Record<string, unknown>;\n\t\t\tjob_variables?: Record<string, unknown>;\n\t }\n\t| {\n\t\t\ttype: \"pause-deployment\" | \"resume-deployment\";\n\t\t\tdeployment_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-work-queue\" | \"resume-work-queue\";\n\t\t\twork_queue_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-work-pool\" | \"resume-work-pool\";\n\t\t\twork_pool_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-automation\" | \"resume-automation\";\n\t\t\tautomation_id: string;\n\t }\n\t| {\n\t\t\ttype: \"send-notification\";\n\t\t\tblock_document_id: string;\n\t\t\tbody: string;\n\t\t\tsubject: string;\n\t };\n\ntype UseEditAutomationOptions = {\n\tautomationId: string;\n\tonSuccess?: () => void;\n\tonError?: (error: Error) => void;\n};\n\ntype UseEditAutomationReturn = {\n\tdefaultValues: AutomationWizardFormInput | undefined;\n\tisLoading: boolean;\n\tupdateAutomation: (values: AutomationWizardSchemaType) => void;\n\tisPending: boolean;\n};\n\n/**\n * Transforms an API action to form-compatible format.\n * Converts null resource IDs to UNASSIGNED constant and removes source fields.\n */\nfunction transformActionToFormValue(action: AutomationAction): ActionFormInput {\n\tswitch (action.type) {\n\t\tcase \"run-deployment\": {\n\t\t\treturn {\n\t\t\t\ttype: \"run-deployment\",\n\t\t\t\tdeployment_id: action.deployment_id ?? UNASSIGNED,\n\t\t\t\tparameters: action.parameters ?? undefined,\n\t\t\t\tjob_variables: action.job_variables ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-deployment\":\n\t\tcase \"resume-deployment\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\tdeployment_id: action.deployment_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-work-queue\":\n\t\tcase \"resume-work-queue\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\twork_queue_id: action.work_queue_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-work-pool\":\n\t\tcase \"resume-work-pool\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\twork_pool_id: action.work_pool_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-automation\":\n\t\tcase \"resume-automation\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\tautomation_id: action.automation_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"cancel-flow-run\":\n\t\tcase \"suspend-flow-run\":\n\t\tcase \"resume-flow-run\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t};\n\t\t}\n\t\tcase \"change-flow-run-state\": {\n\t\t\treturn {\n\t\t\t\ttype: \"change-flow-run-state\",\n\t\t\t\tstate: action.state,\n\t\t\t\tname: action.name ?? undefined,\n\t\t\t\tmessage: action.message ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"send-notification\": {\n\t\t\treturn {\n\t\t\t\ttype: \"send-notification\",\n\t\t\t\tblock_document_id: action.block_document_id,\n\t\t\t\tbody: action.body,\n\t\t\t\tsubject: action.subject,\n\t\t\t};\n\t\t}\n\t\tcase \"do-nothing\": {\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t\tcase \"call-webhook\": {\n\t\t\t// call-webhook is not supported in the form schema, treat as do-nothing\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t\tdefault: {\n\t\t\t// Fallback for any unknown action types\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n * Transforms an API trigger to form-compatible format.\n * Handles event triggers, compound triggers, and sequence triggers.\n */\nfunction transformTriggerToFormValue(trigger: AutomationTrigger): TriggerInput {\n\tswitch (trigger.type) {\n\t\tcase \"event\": {\n\t\t\treturn {\n\t\t\t\ttype: \"event\",\n\t\t\t\tposture: trigger.posture,\n\t\t\t\tthreshold: trigger.threshold,\n\t\t\t\twithin: trigger.within,\n\t\t\t\tmatch: trigger.match,\n\t\t\t\tmatch_related: Array.isArray(trigger.match_related)\n\t\t\t\t\t? trigger.match_related[0]\n\t\t\t\t\t: trigger.match_related,\n\t\t\t\tfor_each: trigger.for_each,\n\t\t\t\tafter: trigger.after,\n\t\t\t\texpect: trigger.expect,\n\t\t\t};\n\t\t}\n\t\tcase \"compound\": {\n\t\t\treturn {\n\t\t\t\ttype: \"compound\",\n\t\t\t\ttriggers: trigger.triggers.map(transformTriggerToFormValue),\n\t\t\t\trequire: trigger.require,\n\t\t\t\twithin: trigger.within ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"sequence\": {\n\t\t\treturn {\n\t\t\t\ttype: \"sequence\",\n\t\t\t\ttriggers: trigger.triggers.map(transformTriggerToFormValue),\n\t\t\t\twithin: trigger.within ?? undefined,\n\t\t\t};\n\t\t}\n\t\tdefault: {\n\t\t\t// Fallback to a basic event trigger\n\t\t\treturn {\n\t\t\t\ttype: \"event\",\n\t\t\t\tposture: \"Reactive\",\n\t\t\t\tthreshold: 1,\n\t\t\t\twithin: 0,\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n * Infers the trigger template from an event trigger's match conditions.\n * Returns \"custom\" if the template cannot be determined.\n */\nfunction inferTriggerTemplate(trigger: AutomationTrigger): TriggerTemplate {\n\tif (trigger.type !== \"event\") {\n\t\treturn \"custom\";\n\t}\n\n\tconst resourceId = trigger.match?.[\"prefect.resource.id\"];\n\tif (!resourceId) {\n\t\treturn \"custom\";\n\t}\n\n\tconst resourceIdStr = Array.isArray(resourceId) ? resourceId[0] : resourceId;\n\n\tif (resourceIdStr?.startsWith(\"prefect.flow-run.\")) {\n\t\treturn \"flow-run-state\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.deployment.\")) {\n\t\treturn \"deployment-status\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.work-pool.\")) {\n\t\treturn \"work-pool-status\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.work-queue.\")) {\n\t\treturn \"work-queue-status\";\n\t}\n\n\treturn \"custom\";\n}\n\n/**\n * Transforms API automation data to form-compatible values.\n * Converts null resource IDs to UNASSIGNED, removes source fields from actions,\n * and handles trigger transformations.\n */\nexport function transformAutomationToFormValues(\n\tautomation: Automation,\n): AutomationWizardFormInput {\n\treturn {\n\t\tname: automation.name,\n\t\tdescription: automation.description || undefined,\n\t\ttriggerTemplate: inferTriggerTemplate(automation.trigger),\n\t\ttrigger: transformTriggerToFormValue(automation.trigger),\n\t\tactions: automation.actions.map(transformActionToFormValue),\n\t};\n}\n\n/**\n * Transforms form values to API update format.\n * The Zod schema transformations handle most of the conversion (UNASSIGNED -> null, adding source fields).\n * This function removes form-only fields and ensures proper typing.\n */\nexport function transformFormValuesToApi(\n\tvalues: AutomationWizardSchemaType,\n): Omit<AutomationUpdate, \"enabled\"> {\n\treturn {\n\t\tname: values.name,\n\t\tdescription: values.description ?? \"\",\n\t\ttrigger: values.trigger,\n\t\tactions: values.actions,\n\t};\n}\n\n/**\n * Hook for editing an automation.\n * Fetches automation data, transforms it for form editing, and handles update submissions.\n */\nexport const useEditAutomation = (\n\toptions: UseEditAutomationOptions,\n): UseEditAutomationReturn => {\n\tconst { automationId, onSuccess, onError } = options;\n\n\tconst { data: automation, isLoading } = useSuspenseQuery(\n\t\tbuildGetAutomationQuery(automationId),\n\t);\n\n\tconst defaultValues = useMemo(() => {\n\t\tif (!automation) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn transformAutomationToFormValues(automation);\n\t}, [automation]);\n\n\tconst { replaceAutomation: replaceAutomationMutation, isPending } =\n\t\tuseReplaceAutomation();\n\n\tconst updateAutomation = (values: AutomationWizardSchemaType) => {\n\t\tconst apiValues = transformFormValuesToApi(values);\n\t\treplaceAutomationMutation(\n\t\t\t{\n\t\t\t\tid: automationId,\n\t\t\t\tenabled: automation?.enabled ?? true,\n\t\t\t\t...apiValues,\n\t\t\t},\n\t\t\t{\n\t\t\t\tonSuccess: () => {\n\t\t\t\t\tonSuccess?.();\n\t\t\t\t},\n\t\t\t\tonError: (error) => {\n\t\t\t\t\tonError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t};\n\n\treturn {\n\t\tdefaultValues,\n\t\tisLoading,\n\t\tupdateAutomation,\n\t\tisPending,\n\t};\n};\n","import { useNavigate } from \"@tanstack/react-router\";\nimport { toast } from \"sonner\";\nimport { AutomationsEditHeader } from \"./automations-edit-header\";\nimport type { AutomationWizardSchema } from \"./automations-wizard/automation-schema\";\nimport { AutomationWizard } from \"./automations-wizard/automation-wizard\";\nimport { useEditAutomation } from \"./automations-wizard/use-edit-automation\";\n\ntype AutomationEditPageProps = {\n\tid: string;\n};\n\nexport const AutomationEditPage = ({ id }: AutomationEditPageProps) => {\n\tconst navigate = useNavigate();\n\n\tconst { defaultValues, updateAutomation, isPending } = useEditAutomation({\n\t\tautomationId: id,\n\t\tonSuccess: () => {\n\t\t\ttoast.success(\"Automation updated successfully\");\n\t\t\tvoid navigate({ to: \"/automations\" });\n\t\t},\n\t\tonError: (error) => {\n\t\t\ttoast.error(`Failed to update automation: ${error.message}`, {\n\t\t\t\tduration: Number.POSITIVE_INFINITY,\n\t\t\t});\n\t\t},\n\t});\n\n\tconst handleSubmit = (values: AutomationWizardSchema) => {\n\t\tupdateAutomation(values);\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<AutomationsEditHeader />\n\t\t\t<AutomationWizard\n\t\t\t\tdefaultValues={defaultValues}\n\t\t\t\tonSubmit={handleSubmit}\n\t\t\t\tsubmitLabel=\"Save\"\n\t\t\t\tisSubmitting={isPending}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { createFileRoute } from \"@tanstack/react-router\";\n\nimport { buildGetAutomationQuery } from \"@/api/automations\";\nimport { AutomationEditPage } from \"@/components/automations/automation-edit-page\";\n\nexport const Route = createFileRoute(\"/automations/automation_/$id/edit\")({\n\tcomponent: RouteComponent,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(buildGetAutomationQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <AutomationEditPage id={id} />;\n}\n"],"names":["AutomationsEditHeader","jsxs","jsx","NavHeader","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","transformActionToFormValue","action","UNASSIGNED","transformTriggerToFormValue","trigger","inferTriggerTemplate","resourceId","resourceIdStr","transformAutomationToFormValues","automation","transformFormValuesToApi","values","useEditAutomation","options","automationId","onSuccess","onError","isLoading","useSuspenseQuery","buildGetAutomationQuery","defaultValues","useMemo","replaceAutomationMutation","isPending","useReplaceAutomation","apiValues","error","AutomationEditPage","id","navigate","useNavigate","updateAutomation","toast","handleSubmit","AutomationWizard","RouteComponent","Route","useParams"],"mappings":"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"}
1
+ {"version":3,"file":"automation_._id.edit-CcuJhc-y.js","sources":["../../src/components/automations/automations-edit-header/automations-edit-header.tsx","../../src/components/automations/automations-wizard/use-edit-automation.ts","../../src/components/automations/automation-edit-page.tsx","../../src/routes/automations/automation_.$id.edit.tsx?tsr-split=component"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\n\nexport const AutomationsEditHeader = () => (\n\t<div className=\"flex items-center justify-between\">\n\t\t<NavHeader />\n\t\t<DocsLink label=\"Documentation\" id=\"automations-guide\" />\n\t</div>\n);\n\nconst NavHeader = () => (\n\t<div className=\"flex items-center gap-2\">\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/automations\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tAutomations\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Edit Automation</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t</div>\n);\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport {\n\ttype Automation,\n\tbuildGetAutomationQuery,\n\tuseReplaceAutomation,\n} from \"@/api/automations\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\ttype AutomationWizardSchema as AutomationWizardSchemaType,\n\ttype TriggerInput,\n\ttype TriggerTemplate,\n\tUNASSIGNED,\n} from \"./automation-schema\";\n\ntype AutomationAction = Automation[\"actions\"][number];\ntype AutomationTrigger = Automation[\"trigger\"];\ntype AutomationUpdate = components[\"schemas\"][\"AutomationUpdate\"];\n\n/**\n * Input type for the automation wizard form (before Zod transformations).\n * This represents what the form fields accept, not the transformed output.\n */\ntype AutomationWizardFormInput = {\n\tname: string;\n\tdescription?: string;\n\ttriggerTemplate?: TriggerTemplate;\n\ttrigger: TriggerInput;\n\tactions: ActionFormInput[];\n};\n\n/**\n * Input type for actions (before Zod transformations).\n * These types don't have the `source` field - that's added by the transform.\n */\ntype ActionFormInput =\n\t| { type: \"do-nothing\" }\n\t| { type: \"cancel-flow-run\" | \"suspend-flow-run\" | \"resume-flow-run\" }\n\t| {\n\t\t\ttype: \"change-flow-run-state\";\n\t\t\tstate:\n\t\t\t\t| \"COMPLETED\"\n\t\t\t\t| \"RUNNING\"\n\t\t\t\t| \"SCHEDULED\"\n\t\t\t\t| \"PENDING\"\n\t\t\t\t| \"FAILED\"\n\t\t\t\t| \"CANCELLED\"\n\t\t\t\t| \"CANCELLING\"\n\t\t\t\t| \"CRASHED\"\n\t\t\t\t| \"PAUSED\";\n\t\t\tname?: string;\n\t\t\tmessage?: string;\n\t }\n\t| {\n\t\t\ttype: \"run-deployment\";\n\t\t\tdeployment_id: string;\n\t\t\tparameters?: Record<string, unknown>;\n\t\t\tjob_variables?: Record<string, unknown>;\n\t }\n\t| {\n\t\t\ttype: \"pause-deployment\" | \"resume-deployment\";\n\t\t\tdeployment_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-work-queue\" | \"resume-work-queue\";\n\t\t\twork_queue_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-work-pool\" | \"resume-work-pool\";\n\t\t\twork_pool_id: string;\n\t }\n\t| {\n\t\t\ttype: \"pause-automation\" | \"resume-automation\";\n\t\t\tautomation_id: string;\n\t }\n\t| {\n\t\t\ttype: \"send-notification\";\n\t\t\tblock_document_id: string;\n\t\t\tbody: string;\n\t\t\tsubject: string;\n\t };\n\ntype UseEditAutomationOptions = {\n\tautomationId: string;\n\tonSuccess?: () => void;\n\tonError?: (error: Error) => void;\n};\n\ntype UseEditAutomationReturn = {\n\tdefaultValues: AutomationWizardFormInput | undefined;\n\tisLoading: boolean;\n\tupdateAutomation: (values: AutomationWizardSchemaType) => void;\n\tisPending: boolean;\n};\n\n/**\n * Transforms an API action to form-compatible format.\n * Converts null resource IDs to UNASSIGNED constant and removes source fields.\n */\nfunction transformActionToFormValue(action: AutomationAction): ActionFormInput {\n\tswitch (action.type) {\n\t\tcase \"run-deployment\": {\n\t\t\treturn {\n\t\t\t\ttype: \"run-deployment\",\n\t\t\t\tdeployment_id: action.deployment_id ?? UNASSIGNED,\n\t\t\t\tparameters: action.parameters ?? undefined,\n\t\t\t\tjob_variables: action.job_variables ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-deployment\":\n\t\tcase \"resume-deployment\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\tdeployment_id: action.deployment_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-work-queue\":\n\t\tcase \"resume-work-queue\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\twork_queue_id: action.work_queue_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-work-pool\":\n\t\tcase \"resume-work-pool\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\twork_pool_id: action.work_pool_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"pause-automation\":\n\t\tcase \"resume-automation\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t\tautomation_id: action.automation_id ?? UNASSIGNED,\n\t\t\t};\n\t\t}\n\t\tcase \"cancel-flow-run\":\n\t\tcase \"suspend-flow-run\":\n\t\tcase \"resume-flow-run\": {\n\t\t\treturn {\n\t\t\t\ttype: action.type,\n\t\t\t};\n\t\t}\n\t\tcase \"change-flow-run-state\": {\n\t\t\treturn {\n\t\t\t\ttype: \"change-flow-run-state\",\n\t\t\t\tstate: action.state,\n\t\t\t\tname: action.name ?? undefined,\n\t\t\t\tmessage: action.message ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"send-notification\": {\n\t\t\treturn {\n\t\t\t\ttype: \"send-notification\",\n\t\t\t\tblock_document_id: action.block_document_id,\n\t\t\t\tbody: action.body,\n\t\t\t\tsubject: action.subject,\n\t\t\t};\n\t\t}\n\t\tcase \"do-nothing\": {\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t\tcase \"call-webhook\": {\n\t\t\t// call-webhook is not supported in the form schema, treat as do-nothing\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t\tdefault: {\n\t\t\t// Fallback for any unknown action types\n\t\t\treturn {\n\t\t\t\ttype: \"do-nothing\",\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n * Transforms an API trigger to form-compatible format.\n * Handles event triggers, compound triggers, and sequence triggers.\n */\nfunction transformTriggerToFormValue(trigger: AutomationTrigger): TriggerInput {\n\tswitch (trigger.type) {\n\t\tcase \"event\": {\n\t\t\treturn {\n\t\t\t\ttype: \"event\",\n\t\t\t\tposture: trigger.posture,\n\t\t\t\tthreshold: trigger.threshold,\n\t\t\t\twithin: trigger.within,\n\t\t\t\tmatch: trigger.match,\n\t\t\t\tmatch_related: Array.isArray(trigger.match_related)\n\t\t\t\t\t? trigger.match_related[0]\n\t\t\t\t\t: trigger.match_related,\n\t\t\t\tfor_each: trigger.for_each,\n\t\t\t\tafter: trigger.after,\n\t\t\t\texpect: trigger.expect,\n\t\t\t};\n\t\t}\n\t\tcase \"compound\": {\n\t\t\treturn {\n\t\t\t\ttype: \"compound\",\n\t\t\t\ttriggers: trigger.triggers.map(transformTriggerToFormValue),\n\t\t\t\trequire: trigger.require,\n\t\t\t\twithin: trigger.within ?? undefined,\n\t\t\t};\n\t\t}\n\t\tcase \"sequence\": {\n\t\t\treturn {\n\t\t\t\ttype: \"sequence\",\n\t\t\t\ttriggers: trigger.triggers.map(transformTriggerToFormValue),\n\t\t\t\twithin: trigger.within ?? undefined,\n\t\t\t};\n\t\t}\n\t\tdefault: {\n\t\t\t// Fallback to a basic event trigger\n\t\t\treturn {\n\t\t\t\ttype: \"event\",\n\t\t\t\tposture: \"Reactive\",\n\t\t\t\tthreshold: 1,\n\t\t\t\twithin: 0,\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n * Infers the trigger template from an event trigger's match conditions.\n * Returns \"custom\" if the template cannot be determined.\n */\nfunction inferTriggerTemplate(trigger: AutomationTrigger): TriggerTemplate {\n\tif (trigger.type !== \"event\") {\n\t\treturn \"custom\";\n\t}\n\n\tconst resourceId = trigger.match?.[\"prefect.resource.id\"];\n\tif (!resourceId) {\n\t\treturn \"custom\";\n\t}\n\n\tconst resourceIdStr = Array.isArray(resourceId) ? resourceId[0] : resourceId;\n\n\tif (resourceIdStr?.startsWith(\"prefect.flow-run.\")) {\n\t\treturn \"flow-run-state\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.deployment.\")) {\n\t\treturn \"deployment-status\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.work-pool.\")) {\n\t\treturn \"work-pool-status\";\n\t}\n\tif (resourceIdStr?.startsWith(\"prefect.work-queue.\")) {\n\t\treturn \"work-queue-status\";\n\t}\n\n\treturn \"custom\";\n}\n\n/**\n * Transforms API automation data to form-compatible values.\n * Converts null resource IDs to UNASSIGNED, removes source fields from actions,\n * and handles trigger transformations.\n */\nexport function transformAutomationToFormValues(\n\tautomation: Automation,\n): AutomationWizardFormInput {\n\treturn {\n\t\tname: automation.name,\n\t\tdescription: automation.description || undefined,\n\t\ttriggerTemplate: inferTriggerTemplate(automation.trigger),\n\t\ttrigger: transformTriggerToFormValue(automation.trigger),\n\t\tactions: automation.actions.map(transformActionToFormValue),\n\t};\n}\n\n/**\n * Transforms form values to API update format.\n * The Zod schema transformations handle most of the conversion (UNASSIGNED -> null, adding source fields).\n * This function removes form-only fields and ensures proper typing.\n */\nexport function transformFormValuesToApi(\n\tvalues: AutomationWizardSchemaType,\n): Omit<AutomationUpdate, \"enabled\"> {\n\treturn {\n\t\tname: values.name,\n\t\tdescription: values.description ?? \"\",\n\t\ttrigger: values.trigger,\n\t\tactions: values.actions,\n\t};\n}\n\n/**\n * Hook for editing an automation.\n * Fetches automation data, transforms it for form editing, and handles update submissions.\n */\nexport const useEditAutomation = (\n\toptions: UseEditAutomationOptions,\n): UseEditAutomationReturn => {\n\tconst { automationId, onSuccess, onError } = options;\n\n\tconst { data: automation, isLoading } = useSuspenseQuery(\n\t\tbuildGetAutomationQuery(automationId),\n\t);\n\n\tconst defaultValues = useMemo(() => {\n\t\tif (!automation) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn transformAutomationToFormValues(automation);\n\t}, [automation]);\n\n\tconst { replaceAutomation: replaceAutomationMutation, isPending } =\n\t\tuseReplaceAutomation();\n\n\tconst updateAutomation = (values: AutomationWizardSchemaType) => {\n\t\tconst apiValues = transformFormValuesToApi(values);\n\t\treplaceAutomationMutation(\n\t\t\t{\n\t\t\t\tid: automationId,\n\t\t\t\tenabled: automation?.enabled ?? true,\n\t\t\t\t...apiValues,\n\t\t\t},\n\t\t\t{\n\t\t\t\tonSuccess: () => {\n\t\t\t\t\tonSuccess?.();\n\t\t\t\t},\n\t\t\t\tonError: (error) => {\n\t\t\t\t\tonError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t};\n\n\treturn {\n\t\tdefaultValues,\n\t\tisLoading,\n\t\tupdateAutomation,\n\t\tisPending,\n\t};\n};\n","import { useNavigate } from \"@tanstack/react-router\";\nimport { toast } from \"sonner\";\nimport { AutomationsEditHeader } from \"./automations-edit-header\";\nimport type { AutomationWizardSchema } from \"./automations-wizard/automation-schema\";\nimport { AutomationWizard } from \"./automations-wizard/automation-wizard\";\nimport { useEditAutomation } from \"./automations-wizard/use-edit-automation\";\n\ntype AutomationEditPageProps = {\n\tid: string;\n};\n\nexport const AutomationEditPage = ({ id }: AutomationEditPageProps) => {\n\tconst navigate = useNavigate();\n\n\tconst { defaultValues, updateAutomation, isPending } = useEditAutomation({\n\t\tautomationId: id,\n\t\tonSuccess: () => {\n\t\t\ttoast.success(\"Automation updated successfully\");\n\t\t\tvoid navigate({ to: \"/automations\" });\n\t\t},\n\t\tonError: (error) => {\n\t\t\ttoast.error(`Failed to update automation: ${error.message}`, {\n\t\t\t\tduration: Number.POSITIVE_INFINITY,\n\t\t\t});\n\t\t},\n\t});\n\n\tconst handleSubmit = (values: AutomationWizardSchema) => {\n\t\tupdateAutomation(values);\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<AutomationsEditHeader />\n\t\t\t<AutomationWizard\n\t\t\t\tdefaultValues={defaultValues}\n\t\t\t\tonSubmit={handleSubmit}\n\t\t\t\tsubmitLabel=\"Save\"\n\t\t\t\tisSubmitting={isPending}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { createFileRoute } from \"@tanstack/react-router\";\n\nimport { buildGetAutomationQuery } from \"@/api/automations\";\nimport { AutomationEditPage } from \"@/components/automations/automation-edit-page\";\n\nexport const Route = createFileRoute(\"/automations/automation_/$id/edit\")({\n\tcomponent: RouteComponent,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(buildGetAutomationQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <AutomationEditPage id={id} />;\n}\n"],"names":["AutomationsEditHeader","jsxs","jsx","NavHeader","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","transformActionToFormValue","action","UNASSIGNED","transformTriggerToFormValue","trigger","inferTriggerTemplate","resourceId","resourceIdStr","transformAutomationToFormValues","automation","transformFormValuesToApi","values","useEditAutomation","options","automationId","onSuccess","onError","isLoading","useSuspenseQuery","buildGetAutomationQuery","defaultValues","useMemo","replaceAutomationMutation","isPending","useReplaceAutomation","apiValues","error","AutomationEditPage","id","navigate","useNavigate","updateAutomation","toast","handleSubmit","AutomationWizard","RouteComponent","Route","useParams"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e,L as s}from"./vendor-tanstack-BK8oseNA.js";import{D as a,B as t,g as i,h as r,p as n,I as o}from"./index-WYPZo52S.js";const d=()=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(c,{}),e.jsx(a,{id:"automations-guide",label:"Documentation"})]}),c=()=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(t,{children:e.jsx(i,{children:e.jsx(r,{className:"text-xl font-semibold",children:"Automations"})})}),e.jsx(s,{to:"/automations/create","aria-label":"create automation",children:e.jsx(n,{size:"icon",className:"size-7",variant:"outline","aria-label":"create automation",children:e.jsx(o,{id:"Plus",className:"size-4"})})})]});export{d as A};
2
- //# sourceMappingURL=automations-header-C6aUe5Tw.js.map
1
+ import{j as e,L as s}from"./vendor-tanstack-BK8oseNA.js";import{D as a,B as t,g as i,h as r,q as n,I as o}from"./index-D5RdrxkU.js";const d=()=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(c,{}),e.jsx(a,{id:"automations-guide",label:"Documentation"})]}),c=()=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(t,{children:e.jsx(i,{children:e.jsx(r,{className:"text-xl font-semibold",children:"Automations"})})}),e.jsx(s,{to:"/automations/create","aria-label":"create automation",children:e.jsx(n,{size:"icon",className:"size-7",variant:"outline","aria-label":"create automation",children:e.jsx(o,{id:"Plus",className:"size-4"})})})]});export{d as A};
2
+ //# sourceMappingURL=automations-header-CgOWwuc6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automations-header-C6aUe5Tw.js","sources":["../../src/components/automations/automations-header/automations-header.tsx"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbList,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\nimport { Icon } from \"@/components/ui/icons\";\n\nexport const AutomationsHeader = () => {\n\treturn (\n\t\t<div className=\"flex items-center justify-between\">\n\t\t\t<Header />\n\t\t\t<DocsLink id=\"automations-guide\" label=\"Documentation\" />\n\t\t</div>\n\t);\n};\n\nconst Header = () => (\n\t<div className=\"flex items-center gap-2\">\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\tAutomations\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t\t<Link to=\"/automations/create\" aria-label=\"create automation\">\n\t\t\t<Button\n\t\t\t\tsize=\"icon\"\n\t\t\t\tclassName=\"size-7\"\n\t\t\t\tvariant=\"outline\"\n\t\t\t\taria-label=\"create automation\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Plus\" className=\"size-4\" />\n\t\t\t</Button>\n\t\t</Link>\n\t</div>\n);\n"],"names":["AutomationsHeader","jsxs","jsx","Header","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","Link","Button","Icon"],"mappings":"oIAUO,MAAMA,EAAoB,IAE/BC,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAO,EACRD,EAAAA,IAACE,EAAA,CAAS,GAAG,oBAAoB,MAAM,eAAA,CAAgB,CAAA,EACxD,EAIID,EAAS,IACdF,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACG,EAAA,CACA,eAACC,EAAA,CACA,SAAAJ,EAAAA,IAACK,GAAe,UAAU,wBAAwB,SAAA,aAAA,CAElD,CAAA,CACD,EACD,EACAL,EAAAA,IAACM,EAAA,CAAK,GAAG,sBAAsB,aAAW,oBACzC,SAAAN,EAAAA,IAACO,EAAA,CACA,KAAK,OACL,UAAU,SACV,QAAQ,UACR,aAAW,oBAEX,SAAAP,EAAAA,IAACQ,EAAA,CAAK,GAAG,OAAO,UAAU,QAAA,CAAS,CAAA,CAAA,CACpC,CACD,CAAA,EACD"}
1
+ {"version":3,"file":"automations-header-CgOWwuc6.js","sources":["../../src/components/automations/automations-header/automations-header.tsx"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbList,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\nimport { Icon } from \"@/components/ui/icons\";\n\nexport const AutomationsHeader = () => {\n\treturn (\n\t\t<div className=\"flex items-center justify-between\">\n\t\t\t<Header />\n\t\t\t<DocsLink id=\"automations-guide\" label=\"Documentation\" />\n\t\t</div>\n\t);\n};\n\nconst Header = () => (\n\t<div className=\"flex items-center gap-2\">\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\tAutomations\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t\t<Link to=\"/automations/create\" aria-label=\"create automation\">\n\t\t\t<Button\n\t\t\t\tsize=\"icon\"\n\t\t\t\tclassName=\"size-7\"\n\t\t\t\tvariant=\"outline\"\n\t\t\t\taria-label=\"create automation\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Plus\" className=\"size-4\" />\n\t\t\t</Button>\n\t\t</Link>\n\t</div>\n);\n"],"names":["AutomationsHeader","jsxs","jsx","Header","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","Link","Button","Icon"],"mappings":"oIAUO,MAAMA,EAAoB,IAE/BC,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAO,EACRD,EAAAA,IAACE,EAAA,CAAS,GAAG,oBAAoB,MAAM,eAAA,CAAgB,CAAA,EACxD,EAIID,EAAS,IACdF,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACG,EAAA,CACA,eAACC,EAAA,CACA,SAAAJ,EAAAA,IAACK,GAAe,UAAU,wBAAwB,SAAA,aAAA,CAElD,CAAA,CACD,EACD,EACAL,EAAAA,IAACM,EAAA,CAAK,GAAG,sBAAsB,aAAW,oBACzC,SAAAN,EAAAA,IAACO,EAAA,CACA,KAAK,OACL,UAAU,SACV,QAAQ,UACR,aAAW,oBAEX,SAAAP,EAAAA,IAACQ,EAAA,CAAK,GAAG,OAAO,UAAU,QAAA,CAAS,CAAA,CAAA,CACpC,CACD,CAAA,EACD"}
@@ -1,2 +1,2 @@
1
- import{r as o,j as e}from"./vendor-tanstack-BK8oseNA.js";import{u as O,a as k}from"./schema-form-input-string-format-datetime-BhL8C5NS.js";import{SchemaForm as C}from"./schema-form-BR4E-WXE.js";import{ak as E,au as V,av as T,aw as j,ax as f,C as i,n as d,bu as u,i as F,L as J}from"./index-WYPZo52S.js";function D({baseJobTemplate:n,onBaseJobTemplateChange:l}){const[x,h]=o.useState(()=>JSON.stringify(n||{},null,2)),[c,m]=o.useState(null),s=o.useMemo(()=>n?.variables,[n?.variables]),b=o.useMemo(()=>s?.properties&&Object.keys(s.properties).length>0,[s?.properties]),v=o.useMemo(()=>{if(!s?.properties)return{};const r={};return Object.entries(s.properties).forEach(([a,t])=>{t&&typeof t=="object"&&"default"in t&&(r[a]=t.default)}),r},[s?.properties]),[S,p]=O(v),[y]=k([]),N=o.useCallback(r=>{if(p(r),!s?.properties)return;const a={...n,variables:{...s,properties:Object.fromEntries(Object.entries(s.properties).map(([t,w])=>[t,{...w,default:r[t]}]))}};l(a),h(JSON.stringify(a,null,2))},[n,s,l,p]),g=o.useCallback(r=>{h(r),m(null);try{const a=JSON.parse(r);l(a)}catch(a){m(a instanceof Error?a.message:"Invalid JSON")}},[l]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(E,{variant:"h3",children:"Base Job Template"}),e.jsxs(V,{defaultValue:"defaults",className:"w-full",children:[e.jsxs(T,{children:[e.jsx(j,{value:"defaults",children:"Defaults"}),e.jsx(j,{value:"advanced",children:"Advanced"})]}),e.jsx(f,{value:"defaults",className:"space-y-4",children:b?e.jsxs(e.Fragment,{children:[e.jsx(i,{children:e.jsx(d,{children:e.jsx(u,{children:"The fields below control the default values for the base job template. These values can be overridden by deployments."})})}),s&&e.jsx(C,{schema:s,kinds:["json"],values:S,onValuesChange:N,errors:y})]}):e.jsx(i,{children:e.jsx(d,{children:e.jsxs(u,{children:["This work pool's base job template does not have any customizations. To add customizations, edit the base job template directly with the ",e.jsx("strong",{children:"Advanced"})," tab."]})})})}),e.jsxs(f,{value:"advanced",className:"space-y-4",children:[e.jsx(i,{children:e.jsx(d,{children:e.jsxs(u,{children:["This is the JSON representation of the base job template. A work pool's job template controls infrastructure configuration for all flow runs in the work pool, and specifies the configuration that can be overridden by deployments.",e.jsx("br",{}),e.jsx("br",{}),"For more information on the structure of a work pool's base job template, check out the docs."]})})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(F,{children:"Base Job Template JSON"}),e.jsx(J,{value:x,onChange:g,className:c?"border-destructive":""}),c&&e.jsx("p",{className:"text-sm text-destructive",children:c})]})]})]})]})}export{D as B};
2
- //# sourceMappingURL=base-job-template-form-section-a-9TFMcW.js.map
1
+ import{r as o,j as e}from"./vendor-tanstack-BK8oseNA.js";import{u as O,a as C}from"./schema-form-input-string-format-datetime-l3xt3PWf.js";import{SchemaForm as E}from"./schema-form-BEqYjsM-.js";import{al as V,aw as k,ax as T,ay as j,az as f,C as i,o as d,bw as u,i as F,L as J}from"./index-D5RdrxkU.js";function D({baseJobTemplate:n,onBaseJobTemplateChange:l}){const[x,h]=o.useState(()=>JSON.stringify(n||{},null,2)),[c,m]=o.useState(null),s=o.useMemo(()=>n?.variables,[n?.variables]),b=o.useMemo(()=>s?.properties&&Object.keys(s.properties).length>0,[s?.properties]),v=o.useMemo(()=>{if(!s?.properties)return{};const r={};return Object.entries(s.properties).forEach(([a,t])=>{t&&typeof t=="object"&&"default"in t&&(r[a]=t.default)}),r},[s?.properties]),[S,p]=O(v),[y]=C([]),N=o.useCallback(r=>{if(p(r),!s?.properties)return;const a={...n,variables:{...s,properties:Object.fromEntries(Object.entries(s.properties).map(([t,w])=>[t,{...w,default:r[t]}]))}};l(a),h(JSON.stringify(a,null,2))},[n,s,l,p]),g=o.useCallback(r=>{h(r),m(null);try{const a=JSON.parse(r);l(a)}catch(a){m(a instanceof Error?a.message:"Invalid JSON")}},[l]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(V,{variant:"h3",children:"Base Job Template"}),e.jsxs(k,{defaultValue:"defaults",className:"w-full",children:[e.jsxs(T,{children:[e.jsx(j,{value:"defaults",children:"Defaults"}),e.jsx(j,{value:"advanced",children:"Advanced"})]}),e.jsx(f,{value:"defaults",className:"space-y-4",children:b?e.jsxs(e.Fragment,{children:[e.jsx(i,{children:e.jsx(d,{children:e.jsx(u,{children:"The fields below control the default values for the base job template. These values can be overridden by deployments."})})}),s&&e.jsx(E,{schema:s,kinds:["json"],values:S,onValuesChange:N,errors:y})]}):e.jsx(i,{children:e.jsx(d,{children:e.jsxs(u,{children:["This work pool's base job template does not have any customizations. To add customizations, edit the base job template directly with the ",e.jsx("strong",{children:"Advanced"})," tab."]})})})}),e.jsxs(f,{value:"advanced",className:"space-y-4",children:[e.jsx(i,{children:e.jsx(d,{children:e.jsxs(u,{children:["This is the JSON representation of the base job template. A work pool's job template controls infrastructure configuration for all flow runs in the work pool, and specifies the configuration that can be overridden by deployments.",e.jsx("br",{}),e.jsx("br",{}),"For more information on the structure of a work pool's base job template, check out the docs."]})})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(F,{children:"Base Job Template JSON"}),e.jsx(J,{value:x,onChange:g,className:c?"border-destructive":""}),c&&e.jsx("p",{className:"text-sm text-destructive",children:c})]})]})]})]})}export{D as B};
2
+ //# sourceMappingURL=base-job-template-form-section-DN9HyjM5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-job-template-form-section-a-9TFMcW.js","sources":["../../src/components/work-pools/create/infrastructure-configuration-step/base-job-template-form-section.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useSchemaFormErrors } from \"@/components/schemas/hooks/useSchemaFormErrors\";\nimport { useSchemaFormValues } from \"@/components/schemas/hooks/useSchemaValues\";\nimport { SchemaForm } from \"@/components/schemas/schema-form\";\nimport type { PrefectSchemaObject } from \"@/components/schemas/types/schemas\";\nimport type { SchemaFormValues } from \"@/components/schemas/types/values\";\nimport { Card, CardContent, CardDescription } from \"@/components/ui/card\";\nimport type { JsonInputOnChange } from \"@/components/ui/json-input\";\nimport { LazyJsonInput as JsonInput } from \"@/components/ui/json-input-lazy\";\nimport { Label } from \"@/components/ui/label\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { Typography } from \"@/components/ui/typography\";\nimport type { WorkerBaseJobTemplate } from \"./schema\";\n\ntype BaseJobTemplateFormSectionProps = {\n\tbaseJobTemplate?: WorkerBaseJobTemplate;\n\tonBaseJobTemplateChange: (value: WorkerBaseJobTemplate) => void;\n};\n\nexport function BaseJobTemplateFormSection({\n\tbaseJobTemplate,\n\tonBaseJobTemplateChange,\n}: BaseJobTemplateFormSectionProps) {\n\tconst [jsonValue, setJsonValue] = useState(() =>\n\t\tJSON.stringify(baseJobTemplate || {}, null, 2),\n\t);\n\tconst [jsonError, setJsonError] = useState<string | null>(null);\n\n\tconst variablesSchema = useMemo<PrefectSchemaObject | undefined>(() => {\n\t\treturn baseJobTemplate?.variables as PrefectSchemaObject;\n\t}, [baseJobTemplate?.variables]);\n\n\tconst hasSchemaProperties = useMemo(() => {\n\t\treturn (\n\t\t\tvariablesSchema?.properties &&\n\t\t\tObject.keys(variablesSchema.properties).length > 0\n\t\t);\n\t}, [variablesSchema?.properties]);\n\n\t// Get default values from schema properties\n\tconst defaultValues = useMemo<SchemaFormValues>(() => {\n\t\tif (!variablesSchema?.properties) return {};\n\n\t\tconst defaults: SchemaFormValues = {};\n\t\tObject.entries(variablesSchema.properties).forEach(([key, property]) => {\n\t\t\tif (property && typeof property === \"object\" && \"default\" in property) {\n\t\t\t\tdefaults[key] = property.default;\n\t\t\t}\n\t\t});\n\t\treturn defaults;\n\t}, [variablesSchema?.properties]);\n\n\tconst [schemaValues, setSchemaValues] = useSchemaFormValues(defaultValues);\n\tconst [schemaErrors] = useSchemaFormErrors([]);\n\n\tconst handleSchemaValuesChange = useCallback(\n\t\t(values: SchemaFormValues) => {\n\t\t\tsetSchemaValues(values);\n\n\t\t\tif (!variablesSchema?.properties) return;\n\n\t\t\t// Update the base job template with new default values\n\t\t\tconst newTemplate: WorkerBaseJobTemplate = {\n\t\t\t\t...baseJobTemplate,\n\t\t\t\tvariables: {\n\t\t\t\t\t...variablesSchema,\n\t\t\t\t\tproperties: Object.fromEntries(\n\t\t\t\t\t\tObject.entries(variablesSchema.properties).map(\n\t\t\t\t\t\t\t([key, property]) => [\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...property,\n\t\t\t\t\t\t\t\t\tdefault: values[key],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tonBaseJobTemplateChange(newTemplate);\n\t\t\tsetJsonValue(JSON.stringify(newTemplate, null, 2));\n\t\t},\n\t\t[\n\t\t\tbaseJobTemplate,\n\t\t\tvariablesSchema,\n\t\t\tonBaseJobTemplateChange,\n\t\t\tsetSchemaValues,\n\t\t],\n\t);\n\n\tconst handleJsonChange = useCallback(\n\t\t(value: string) => {\n\t\t\tsetJsonValue(value);\n\t\t\tsetJsonError(null);\n\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(value) as WorkerBaseJobTemplate;\n\t\t\t\tonBaseJobTemplateChange(parsed);\n\t\t\t} catch (error) {\n\t\t\t\tsetJsonError(error instanceof Error ? error.message : \"Invalid JSON\");\n\t\t\t}\n\t\t},\n\t\t[onBaseJobTemplateChange],\n\t);\n\n\treturn (\n\t\t<div className=\"space-y-4\">\n\t\t\t<Typography variant=\"h3\">Base Job Template</Typography>\n\n\t\t\t<Tabs defaultValue=\"defaults\" className=\"w-full\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"defaults\">Defaults</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"advanced\">Advanced</TabsTrigger>\n\t\t\t\t</TabsList>\n\n\t\t\t\t<TabsContent value=\"defaults\" className=\"space-y-4\">\n\t\t\t\t\t{hasSchemaProperties ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Card>\n\t\t\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\t\t\tThe fields below control the default values for the base job\n\t\t\t\t\t\t\t\t\t\ttemplate. These values can be overridden by deployments.\n\t\t\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t\t</Card>\n\n\t\t\t\t\t\t\t{variablesSchema && (\n\t\t\t\t\t\t\t\t<SchemaForm\n\t\t\t\t\t\t\t\t\tschema={variablesSchema}\n\t\t\t\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\t\t\t\tvalues={schemaValues}\n\t\t\t\t\t\t\t\t\tonValuesChange={handleSchemaValuesChange}\n\t\t\t\t\t\t\t\t\terrors={schemaErrors}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Card>\n\t\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\t\tThis work pool&apos;s base job template does not have any\n\t\t\t\t\t\t\t\t\tcustomizations. To add customizations, edit the base job\n\t\t\t\t\t\t\t\t\ttemplate directly with the <strong>Advanced</strong> tab.\n\t\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t)}\n\t\t\t\t</TabsContent>\n\n\t\t\t\t<TabsContent value=\"advanced\" className=\"space-y-4\">\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\tThis is the JSON representation of the base job template. A work\n\t\t\t\t\t\t\t\tpool&apos;s job template controls infrastructure configuration\n\t\t\t\t\t\t\t\tfor all flow runs in the work pool, and specifies the\n\t\t\t\t\t\t\t\tconfiguration that can be overridden by deployments.\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tFor more information on the structure of a work pool&apos;s base\n\t\t\t\t\t\t\t\tjob template, check out the docs.\n\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Label>Base Job Template JSON</Label>\n\t\t\t\t\t\t<JsonInput\n\t\t\t\t\t\t\tvalue={jsonValue}\n\t\t\t\t\t\t\tonChange={handleJsonChange as JsonInputOnChange}\n\t\t\t\t\t\t\tclassName={jsonError ? \"border-destructive\" : \"\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{jsonError && (\n\t\t\t\t\t\t\t<p className=\"text-sm text-destructive\">{jsonError}</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t</div>\n\t);\n}\n"],"names":["BaseJobTemplateFormSection","baseJobTemplate","onBaseJobTemplateChange","jsonValue","setJsonValue","useState","jsonError","setJsonError","variablesSchema","useMemo","hasSchemaProperties","defaultValues","defaults","key","property","schemaValues","setSchemaValues","useSchemaFormValues","schemaErrors","useSchemaFormErrors","handleSchemaValuesChange","useCallback","values","newTemplate","handleJsonChange","value","parsed","error","jsxs","jsx","Typography","Tabs","TabsList","TabsTrigger","TabsContent","Fragment","Card","CardContent","CardDescription","SchemaForm","Label","JsonInput"],"mappings":"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"}
1
+ {"version":3,"file":"base-job-template-form-section-DN9HyjM5.js","sources":["../../src/components/work-pools/create/infrastructure-configuration-step/base-job-template-form-section.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useSchemaFormErrors } from \"@/components/schemas/hooks/useSchemaFormErrors\";\nimport { useSchemaFormValues } from \"@/components/schemas/hooks/useSchemaValues\";\nimport { SchemaForm } from \"@/components/schemas/schema-form\";\nimport type { PrefectSchemaObject } from \"@/components/schemas/types/schemas\";\nimport type { SchemaFormValues } from \"@/components/schemas/types/values\";\nimport { Card, CardContent, CardDescription } from \"@/components/ui/card\";\nimport type { JsonInputOnChange } from \"@/components/ui/json-input\";\nimport { LazyJsonInput as JsonInput } from \"@/components/ui/json-input-lazy\";\nimport { Label } from \"@/components/ui/label\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { Typography } from \"@/components/ui/typography\";\nimport type { WorkerBaseJobTemplate } from \"./schema\";\n\ntype BaseJobTemplateFormSectionProps = {\n\tbaseJobTemplate?: WorkerBaseJobTemplate;\n\tonBaseJobTemplateChange: (value: WorkerBaseJobTemplate) => void;\n};\n\nexport function BaseJobTemplateFormSection({\n\tbaseJobTemplate,\n\tonBaseJobTemplateChange,\n}: BaseJobTemplateFormSectionProps) {\n\tconst [jsonValue, setJsonValue] = useState(() =>\n\t\tJSON.stringify(baseJobTemplate || {}, null, 2),\n\t);\n\tconst [jsonError, setJsonError] = useState<string | null>(null);\n\n\tconst variablesSchema = useMemo<PrefectSchemaObject | undefined>(() => {\n\t\treturn baseJobTemplate?.variables as PrefectSchemaObject;\n\t}, [baseJobTemplate?.variables]);\n\n\tconst hasSchemaProperties = useMemo(() => {\n\t\treturn (\n\t\t\tvariablesSchema?.properties &&\n\t\t\tObject.keys(variablesSchema.properties).length > 0\n\t\t);\n\t}, [variablesSchema?.properties]);\n\n\t// Get default values from schema properties\n\tconst defaultValues = useMemo<SchemaFormValues>(() => {\n\t\tif (!variablesSchema?.properties) return {};\n\n\t\tconst defaults: SchemaFormValues = {};\n\t\tObject.entries(variablesSchema.properties).forEach(([key, property]) => {\n\t\t\tif (property && typeof property === \"object\" && \"default\" in property) {\n\t\t\t\tdefaults[key] = property.default;\n\t\t\t}\n\t\t});\n\t\treturn defaults;\n\t}, [variablesSchema?.properties]);\n\n\tconst [schemaValues, setSchemaValues] = useSchemaFormValues(defaultValues);\n\tconst [schemaErrors] = useSchemaFormErrors([]);\n\n\tconst handleSchemaValuesChange = useCallback(\n\t\t(values: SchemaFormValues) => {\n\t\t\tsetSchemaValues(values);\n\n\t\t\tif (!variablesSchema?.properties) return;\n\n\t\t\t// Update the base job template with new default values\n\t\t\tconst newTemplate: WorkerBaseJobTemplate = {\n\t\t\t\t...baseJobTemplate,\n\t\t\t\tvariables: {\n\t\t\t\t\t...variablesSchema,\n\t\t\t\t\tproperties: Object.fromEntries(\n\t\t\t\t\t\tObject.entries(variablesSchema.properties).map(\n\t\t\t\t\t\t\t([key, property]) => [\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...property,\n\t\t\t\t\t\t\t\t\tdefault: values[key],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tonBaseJobTemplateChange(newTemplate);\n\t\t\tsetJsonValue(JSON.stringify(newTemplate, null, 2));\n\t\t},\n\t\t[\n\t\t\tbaseJobTemplate,\n\t\t\tvariablesSchema,\n\t\t\tonBaseJobTemplateChange,\n\t\t\tsetSchemaValues,\n\t\t],\n\t);\n\n\tconst handleJsonChange = useCallback(\n\t\t(value: string) => {\n\t\t\tsetJsonValue(value);\n\t\t\tsetJsonError(null);\n\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(value) as WorkerBaseJobTemplate;\n\t\t\t\tonBaseJobTemplateChange(parsed);\n\t\t\t} catch (error) {\n\t\t\t\tsetJsonError(error instanceof Error ? error.message : \"Invalid JSON\");\n\t\t\t}\n\t\t},\n\t\t[onBaseJobTemplateChange],\n\t);\n\n\treturn (\n\t\t<div className=\"space-y-4\">\n\t\t\t<Typography variant=\"h3\">Base Job Template</Typography>\n\n\t\t\t<Tabs defaultValue=\"defaults\" className=\"w-full\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"defaults\">Defaults</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"advanced\">Advanced</TabsTrigger>\n\t\t\t\t</TabsList>\n\n\t\t\t\t<TabsContent value=\"defaults\" className=\"space-y-4\">\n\t\t\t\t\t{hasSchemaProperties ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Card>\n\t\t\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\t\t\tThe fields below control the default values for the base job\n\t\t\t\t\t\t\t\t\t\ttemplate. These values can be overridden by deployments.\n\t\t\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t\t</Card>\n\n\t\t\t\t\t\t\t{variablesSchema && (\n\t\t\t\t\t\t\t\t<SchemaForm\n\t\t\t\t\t\t\t\t\tschema={variablesSchema}\n\t\t\t\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\t\t\t\tvalues={schemaValues}\n\t\t\t\t\t\t\t\t\tonValuesChange={handleSchemaValuesChange}\n\t\t\t\t\t\t\t\t\terrors={schemaErrors}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Card>\n\t\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\t\tThis work pool&apos;s base job template does not have any\n\t\t\t\t\t\t\t\t\tcustomizations. To add customizations, edit the base job\n\t\t\t\t\t\t\t\t\ttemplate directly with the <strong>Advanced</strong> tab.\n\t\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t)}\n\t\t\t\t</TabsContent>\n\n\t\t\t\t<TabsContent value=\"advanced\" className=\"space-y-4\">\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t<CardDescription>\n\t\t\t\t\t\t\t\tThis is the JSON representation of the base job template. A work\n\t\t\t\t\t\t\t\tpool&apos;s job template controls infrastructure configuration\n\t\t\t\t\t\t\t\tfor all flow runs in the work pool, and specifies the\n\t\t\t\t\t\t\t\tconfiguration that can be overridden by deployments.\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tFor more information on the structure of a work pool&apos;s base\n\t\t\t\t\t\t\t\tjob template, check out the docs.\n\t\t\t\t\t\t\t</CardDescription>\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Label>Base Job Template JSON</Label>\n\t\t\t\t\t\t<JsonInput\n\t\t\t\t\t\t\tvalue={jsonValue}\n\t\t\t\t\t\t\tonChange={handleJsonChange as JsonInputOnChange}\n\t\t\t\t\t\t\tclassName={jsonError ? \"border-destructive\" : \"\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{jsonError && (\n\t\t\t\t\t\t\t<p className=\"text-sm text-destructive\">{jsonError}</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t</div>\n\t);\n}\n"],"names":["BaseJobTemplateFormSection","baseJobTemplate","onBaseJobTemplateChange","jsonValue","setJsonValue","useState","jsonError","setJsonError","variablesSchema","useMemo","hasSchemaProperties","defaultValues","defaults","key","property","schemaValues","setSchemaValues","useSchemaFormValues","schemaErrors","useSchemaFormErrors","handleSchemaValuesChange","useCallback","values","newTemplate","handleJsonChange","value","parsed","error","jsxs","jsx","Typography","Tabs","TabsList","TabsTrigger","TabsContent","Fragment","Card","CardContent","CardDescription","SchemaForm","Label","JsonInput"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as s}from"./vendor-tanstack-BK8oseNA.js";import{B as o}from"./block-type-logo-B31LJm5H.js";import{C as a,ak as e}from"./index-WYPZo52S.js";import{L as i}from"./lazy-markdown-BHwIrC8E.js";function x({blockType:r}){return s.jsxs(a,{className:"p-6 max-h-60",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(o,{size:"lg",logoUrl:r.logo_url}),s.jsx(e,{variant:"h4",children:r.name})]}),r.description&&s.jsx("div",{className:"prose max-w-none overflow-y-scroll text-sm",children:s.jsx(i,{children:r.description})})]})}export{x as B};
2
- //# sourceMappingURL=block-type-details-eq3Wg2ht.js.map
1
+ import{j as s}from"./vendor-tanstack-BK8oseNA.js";import{B as o}from"./block-type-logo-DURScH8H.js";import{C as a,al as e}from"./index-D5RdrxkU.js";import{L as i}from"./lazy-markdown-wPid80zf.js";function x({blockType:r}){return s.jsxs(a,{className:"p-6 max-h-60",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(o,{size:"lg",logoUrl:r.logo_url}),s.jsx(e,{variant:"h4",children:r.name})]}),r.description&&s.jsx("div",{className:"prose max-w-none overflow-y-scroll text-sm",children:s.jsx(i,{children:r.description})})]})}export{x as B};
2
+ //# sourceMappingURL=block-type-details-rrToxL5r.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-type-details-eq3Wg2ht.js","sources":["../../src/components/blocks/block-type-details.tsx"],"sourcesContent":["import type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypeDetailsProps = {\n\tblockType: BlockType;\n};\n\nexport function BlockTypeDetails({ blockType }: BlockTypeDetailsProps) {\n\treturn (\n\t\t<Card className=\"p-6 max-h-60\">\n\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t<Typography variant=\"h4\">{blockType.name}</Typography>\n\t\t\t</div>\n\n\t\t\t{blockType.description && (\n\t\t\t\t<div className=\"prose max-w-none overflow-y-scroll text-sm\">\n\t\t\t\t\t<LazyMarkdown>{blockType.description}</LazyMarkdown>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Card>\n\t);\n}\n"],"names":["BlockTypeDetails","blockType","jsxs","Card","jsx","BlockTypeLogo","Typography","LazyMarkdown"],"mappings":"oMAUO,SAASA,EAAiB,CAAE,UAAAC,GAAoC,CACtE,OACCC,EAAAA,KAACC,EAAA,CAAK,UAAU,eACf,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAE,EAAAA,IAACC,EAAA,CAAc,KAAK,KAAK,QAASJ,EAAU,SAAU,EACtDG,EAAAA,IAACE,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECL,EAAU,aACVG,EAAAA,IAAC,MAAA,CAAI,UAAU,6CACd,SAAAA,EAAAA,IAACG,EAAA,CAAc,SAAAN,EAAU,WAAA,CAAY,CAAA,CACtC,CAAA,EAEF,CAEF"}
1
+ {"version":3,"file":"block-type-details-rrToxL5r.js","sources":["../../src/components/blocks/block-type-details.tsx"],"sourcesContent":["import type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypeDetailsProps = {\n\tblockType: BlockType;\n};\n\nexport function BlockTypeDetails({ blockType }: BlockTypeDetailsProps) {\n\treturn (\n\t\t<Card className=\"p-6 max-h-60\">\n\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t<Typography variant=\"h4\">{blockType.name}</Typography>\n\t\t\t</div>\n\n\t\t\t{blockType.description && (\n\t\t\t\t<div className=\"prose max-w-none overflow-y-scroll text-sm\">\n\t\t\t\t\t<LazyMarkdown>{blockType.description}</LazyMarkdown>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Card>\n\t);\n}\n"],"names":["BlockTypeDetails","blockType","jsxs","Card","jsx","BlockTypeLogo","Typography","LazyMarkdown"],"mappings":"oMAUO,SAASA,EAAiB,CAAE,UAAAC,GAAoC,CACtE,OACCC,EAAAA,KAACC,EAAA,CAAK,UAAU,eACf,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAE,EAAAA,IAACC,EAAA,CAAc,KAAK,KAAK,QAASJ,EAAU,SAAU,EACtDG,EAAAA,IAACE,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECL,EAAU,aACVG,EAAAA,IAAC,MAAA,CAAI,UAAU,6CACd,SAAAA,EAAAA,IAACG,EAAA,CAAc,SAAAN,EAAU,WAAA,CAAY,CAAA,CACtC,CAAA,EAEF,CAEF"}
@@ -0,0 +1,2 @@
1
+ import{j as a}from"./vendor-tanstack-BK8oseNA.js";import{cr as e}from"./index-D5RdrxkU.js";const c=({alt:o,logoUrl:s,size:r="sm"})=>a.jsx("img",{alt:o,src:s??void 0,className:i({size:r})}),i=e("border-4 bg-gray-200 rounded",{variants:{size:{sm:"size-8",lg:"size-14"}}});export{c as B};
2
+ //# sourceMappingURL=block-type-logo-DURScH8H.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-type-logo-B31LJm5H.js","sources":["../../src/components/block-type-logo/block-type-logo.tsx"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport type { BlockType } from \"@/api/block-types\";\n\ntype BlockTypeLogoProps = {\n\talt?: string;\n\tlogoUrl: BlockType[\"logo_url\"];\n\tsize?: \"sm\" | \"lg\";\n};\n\nexport const BlockTypeLogo = ({\n\talt,\n\tlogoUrl,\n\tsize = \"sm\",\n}: BlockTypeLogoProps) => (\n\t<img\n\t\talt={alt}\n\t\tsrc={logoUrl ?? undefined}\n\t\tclassName={blockTypeLogoVariant({ size })}\n\t/>\n);\n\nconst blockTypeLogoVariant = cva(\"border-4 bg-gray-200 rounded\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"size-8\",\n\t\t\tlg: \"size-14\",\n\t\t},\n\t},\n});\n"],"names":["BlockTypeLogo","alt","logoUrl","size","jsx","blockTypeLogoVariant","cva"],"mappings":"2FASO,MAAMA,EAAgB,CAAC,CAC7B,IAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,IACR,IACCC,EAAAA,IAAC,MAAA,CACA,IAAAH,EACA,IAAKC,GAAW,OAChB,UAAWG,EAAqB,CAAE,KAAAF,CAAA,CAAM,CAAA,CACzC,EAGKE,EAAuBC,EAAI,+BAAgC,CAChE,SAAU,CACT,KAAM,CACL,GAAI,SACJ,GAAI,SAAA,CACL,CAEF,CAAC"}
1
+ {"version":3,"file":"block-type-logo-DURScH8H.js","sources":["../../src/components/block-type-logo/block-type-logo.tsx"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport type { BlockType } from \"@/api/block-types\";\n\ntype BlockTypeLogoProps = {\n\talt?: string;\n\tlogoUrl: BlockType[\"logo_url\"];\n\tsize?: \"sm\" | \"lg\";\n};\n\nexport const BlockTypeLogo = ({\n\talt,\n\tlogoUrl,\n\tsize = \"sm\",\n}: BlockTypeLogoProps) => (\n\t<img\n\t\talt={alt}\n\t\tsrc={logoUrl ?? undefined}\n\t\tclassName={blockTypeLogoVariant({ size })}\n\t/>\n);\n\nconst blockTypeLogoVariant = cva(\"border-4 bg-gray-200 rounded\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"size-8\",\n\t\t\tlg: \"size-14\",\n\t\t},\n\t},\n});\n"],"names":["BlockTypeLogo","alt","logoUrl","size","jsx","blockTypeLogoVariant","cva"],"mappings":"2FASO,MAAMA,EAAgB,CAAC,CAC7B,IAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,IACR,IACCC,EAAAA,IAAC,MAAA,CACA,IAAAH,EACA,IAAKC,GAAW,OAChB,UAAWG,EAAqB,CAAE,KAAAF,CAAA,CAAM,CAAA,CACzC,EAGKE,EAAuBC,EAAI,+BAAgC,CAChE,SAAU,CACT,KAAM,CACL,GAAI,SACJ,GAAI,SAAA,CACL,CAEF,CAAC"}
@@ -1,2 +1,2 @@
1
- import{j as e,r as n,p as d}from"./vendor-tanstack-BK8oseNA.js";import{B as x,g as p,h as c,bq as u,bz as h,C as f,ak as m,by as j,dp as N,d0 as g}from"./index-WYPZo52S.js";import{u as B,B as b}from"./use-delete-block-document-confirmation-dialog-DRAP-Tnu.js";import{B as k}from"./block-type-details-eq3Wg2ht.js";import{D as y}from"./delete-confirmation-dialog-COdZmNfa.js";import{P as D}from"./python-example-snippet-COTWYn1Y.js";import{c as _}from"./vendor-recharts-D4imLXNl.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./dropdown-menu-xZ_3w9OP.js";import"./use-delete-confirmation-dialog-CvQEyyhU.js";import"./block-type-logo-B31LJm5H.js";import"./lazy-markdown-BHwIrC8E.js";const v=({blockName:s})=>e.jsx(x,{children:e.jsxs(p,{children:[e.jsx(c,{children:e.jsx(u,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(h,{}),e.jsx(c,{className:"text-xl font-semibold",children:s})]})});function S({data:s,fields:t}){const r=n.useMemo(()=>{let l={};return"properties"in t&&(l=t.properties),Object.keys(l).map(a=>{let o=a;const i=l[a];return i.title&&(o=i.title),{label:o,value:s[a]?JSON.stringify(s[a],null,2):null}})},[s,t]);return e.jsx("dl",{className:"flex flex-col gap-2 p-2 text-xs",children:r.map(({label:l,value:a})=>e.jsxs(n.Fragment,{children:[e.jsx("dt",{className:"text-gray-500 text-sm",children:l}),e.jsx("dd",{className:_("text-base",!a&&"text-gray-500 "),children:a??"None"})]},l))})}const C=({blockDocument:s})=>{const[t,r]=B(),l=()=>r(s,{shouldNavigate:!0}),{block_type:a}=s,o=s.name??s.block_type_name??"Block Document";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(v,{blockName:o}),e.jsx(b,{blockDocument:s,onDelete:l})]}),e.jsx(f,{className:"p-4",children:e.jsxs("div",{className:"grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[(a?.code_example||a?.documentation_url)&&e.jsx(P,{hasCodeExample:!!a?.code_example,hasDocumentationUrl:!!a?.documentation_url}),a?.code_example&&e.jsx(D,{codeExample:a.code_example,name:s.name}),s.data&&s.block_schema?.fields&&e.jsx(S,{data:s.data,fields:s.block_schema?.fields})]}),a&&e.jsx(k,{blockType:a})]})})]}),e.jsx(y,{...t})]})};function P({hasCodeExample:s,hasDocumentationUrl:t}){return e.jsxs("div",{className:"flex items-center gap-1",children:[s&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Paste this snippet"," ",e.jsx("span",{className:"font-semibold",children:"into your flows"})," to use this block."]}),t&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Need help?"," ",e.jsx("a",{className:"underline text-blue-600 hover:text-blue-800 visited:text-purple-600",href:j["blocks-guide"],children:"View Docs"})]})]})}function G(){const{id:s}=N.useParams(),{data:t}=d(g(s));return e.jsx(C,{blockDocument:t})}export{G as component};
2
- //# sourceMappingURL=block._id-OVdz3htC.js.map
1
+ import{j as e,r as n,p as d}from"./vendor-tanstack-BK8oseNA.js";import{B as x,g as p,h as c,bs as u,bB as h,C as f,al as m,bA as j,dr as B,d4 as N}from"./index-D5RdrxkU.js";import{u as g,B as b}from"./use-delete-block-document-confirmation-dialog-GjNhFxZe.js";import{B as k}from"./block-type-details-rrToxL5r.js";import{D as y}from"./delete-confirmation-dialog-CqKsUEj_.js";import{P as D}from"./python-example-snippet-3jtXWQZN.js";import{c as _}from"./vendor-recharts-D4imLXNl.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./dropdown-menu-e0Fqb6aw.js";import"./use-delete-confirmation-dialog-CvQEyyhU.js";import"./block-type-logo-DURScH8H.js";import"./lazy-markdown-wPid80zf.js";const v=({blockName:s})=>e.jsx(x,{children:e.jsxs(p,{children:[e.jsx(c,{children:e.jsx(u,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(h,{}),e.jsx(c,{className:"text-xl font-semibold",children:s})]})});function S({data:s,fields:t}){const r=n.useMemo(()=>{let l={};return"properties"in t&&(l=t.properties),Object.keys(l).map(a=>{let o=a;const i=l[a];return i.title&&(o=i.title),{label:o,value:s[a]?JSON.stringify(s[a],null,2):null}})},[s,t]);return e.jsx("dl",{className:"flex flex-col gap-2 p-2 text-xs",children:r.map(({label:l,value:a})=>e.jsxs(n.Fragment,{children:[e.jsx("dt",{className:"text-gray-500 text-sm",children:l}),e.jsx("dd",{className:_("text-base",!a&&"text-gray-500 "),children:a??"None"})]},l))})}const C=({blockDocument:s})=>{const[t,r]=g(),l=()=>r(s,{shouldNavigate:!0}),{block_type:a}=s,o=s.name??s.block_type_name??"Block Document";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(v,{blockName:o}),e.jsx(b,{blockDocument:s,onDelete:l})]}),e.jsx(f,{className:"p-4",children:e.jsxs("div",{className:"grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[(a?.code_example||a?.documentation_url)&&e.jsx(P,{hasCodeExample:!!a?.code_example,hasDocumentationUrl:!!a?.documentation_url}),a?.code_example&&e.jsx(D,{codeExample:a.code_example,name:s.name}),s.data&&s.block_schema?.fields&&e.jsx(S,{data:s.data,fields:s.block_schema?.fields})]}),a&&e.jsx(k,{blockType:a})]})})]}),e.jsx(y,{...t})]})};function P({hasCodeExample:s,hasDocumentationUrl:t}){return e.jsxs("div",{className:"flex items-center gap-1",children:[s&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Paste this snippet"," ",e.jsx("span",{className:"font-semibold",children:"into your flows"})," to use this block."]}),t&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Need help?"," ",e.jsx("a",{className:"underline text-blue-600 hover:text-blue-800 visited:text-purple-600",href:j["blocks-guide"],children:"View Docs"})]})]})}function K(){const{id:s}=B.useParams(),{data:t}=d(N(s));return e.jsx(C,{blockDocument:t})}export{K as component};
2
+ //# sourceMappingURL=block._id-Bue6lnrN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block._id-OVdz3htC.js","sources":["../../src/components/blocks/block-document-details-page/block-document-details-page-header.tsx","../../src/components/blocks/block-document-details-page/block-document-schema-properties.tsx","../../src/components/blocks/block-document-details-page/block-document-details-page.tsx","../../src/routes/blocks/block.$id.tsx?tsr-split=component"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentDetailsPageHeaderProps = {\n\tblockName: string;\n};\n\nexport const BlockDocumentDetailsPageHeader = ({\n\tblockName,\n}: BlockDocumentDetailsPageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockName}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import clsx from \"clsx\";\nimport { Fragment, useMemo } from \"react\";\n\ntype BlockDocumentSchemaProperties = {\n\tdata: { [key: string]: unknown };\n\tfields: { [key: string]: unknown };\n};\nexport function BlockDocumentSchemaProperties({\n\tdata,\n\tfields,\n}: BlockDocumentSchemaProperties) {\n\tconst fieldValues = useMemo(() => {\n\t\tlet properties: { [key: string]: unknown } = {};\n\t\tif (\"properties\" in fields) {\n\t\t\tproperties = fields.properties as { [key: string]: unknown };\n\t\t}\n\n\t\treturn Object.keys(properties).map((property) => {\n\t\t\tlet label = property;\n\t\t\t// nb: expect this type from Prefect Schema\n\t\t\tconst field = properties[property] as {\n\t\t\t\t[key: string]: unknown;\n\t\t\t\ttitle: string;\n\t\t\t};\n\t\t\tif (field.title) {\n\t\t\t\tlabel = field.title;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tvalue: data[property] ? JSON.stringify(data[property], null, 2) : null,\n\t\t\t};\n\t\t});\n\t}, [data, fields]);\n\n\treturn (\n\t\t<dl className=\"flex flex-col gap-2 p-2 text-xs\">\n\t\t\t{fieldValues.map(({ label, value }) => (\n\t\t\t\t<Fragment key={label}>\n\t\t\t\t\t<dt className=\"text-gray-500 text-sm\">{label}</dt>\n\t\t\t\t\t<dd className={clsx(\"text-base\", !value && \"text-gray-500 \")}>\n\t\t\t\t\t\t{value ?? \"None\"}\n\t\t\t\t\t</dd>\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t</dl>\n\t);\n}\n","import type { BlockDocument } from \"@/api/block-documents\";\nimport { BlockDocumentActionMenu } from \"@/components/blocks/block-document-action-menu\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport { Card } from \"@/components/ui/card\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport { DOCS_LINKS } from \"@/components/ui/docs-link\";\nimport { Typography } from \"@/components/ui/typography\";\nimport { PythonBlockSnippet } from \"../python-example-snippet\";\nimport { useDeleteBlockDocumentConfirmationDialog } from \"../use-delete-block-document-confirmation-dialog\";\nimport { BlockDocumentDetailsPageHeader } from \"./block-document-details-page-header\";\nimport { BlockDocumentSchemaProperties } from \"./block-document-schema-properties\";\n\ntype BlockDocumentDetailsPageProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentDetailsPage = ({\n\tblockDocument,\n}: BlockDocumentDetailsPageProps) => {\n\tconst [dialogState, handleConfirmDelete] =\n\t\tuseDeleteBlockDocumentConfirmationDialog();\n\n\tconst handleDeleteBlock = () =>\n\t\thandleConfirmDelete(blockDocument, { shouldNavigate: true });\n\n\tconst { block_type } = blockDocument;\n\n\tconst blockName =\n\t\tblockDocument.name ?? blockDocument.block_type_name ?? \"Block Document\";\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<BlockDocumentDetailsPageHeader blockName={blockName} />\n\t\t\t\t\t<BlockDocumentActionMenu\n\t\t\t\t\t\tblockDocument={blockDocument}\n\t\t\t\t\t\tonDelete={handleDeleteBlock}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<Card className=\"p-4\">\n\t\t\t\t\t<div className=\"grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t\t{(block_type?.code_example || block_type?.documentation_url) && (\n\t\t\t\t\t\t\t\t<NeedHelpDocsLink\n\t\t\t\t\t\t\t\t\thasCodeExample={Boolean(block_type?.code_example)}\n\t\t\t\t\t\t\t\t\thasDocumentationUrl={Boolean(block_type?.documentation_url)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{block_type?.code_example && (\n\t\t\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\t\t\tcodeExample={block_type.code_example}\n\t\t\t\t\t\t\t\t\tname={blockDocument.name}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{blockDocument.data && blockDocument.block_schema?.fields && (\n\t\t\t\t\t\t\t\t<BlockDocumentSchemaProperties\n\t\t\t\t\t\t\t\t\tdata={blockDocument.data}\n\t\t\t\t\t\t\t\t\tfields={blockDocument.block_schema?.fields}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{block_type && <BlockTypeDetails blockType={block_type} />}\n\t\t\t\t\t</div>\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t\t<DeleteConfirmationDialog {...dialogState} />\n\t\t</>\n\t);\n};\n\ntype NeedHelpDocsLinkProps = {\n\thasCodeExample: boolean;\n\thasDocumentationUrl: boolean;\n};\nfunction NeedHelpDocsLink({\n\thasCodeExample,\n\thasDocumentationUrl,\n}: NeedHelpDocsLinkProps) {\n\treturn (\n\t\t<div className=\"flex items-center gap-1\">\n\t\t\t{hasCodeExample && (\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"muted\">\n\t\t\t\t\tPaste this snippet{\" \"}\n\t\t\t\t\t<span className=\"font-semibold\">into your flows</span> to use this\n\t\t\t\t\tblock.\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t\t{hasDocumentationUrl && (\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"muted\">\n\t\t\t\t\tNeed help?{\" \"}\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName=\"underline text-blue-600 hover:text-blue-800 visited:text-purple-600\"\n\t\t\t\t\t\thref={DOCS_LINKS[\"blocks-guide\"]}\n\t\t\t\t\t>\n\t\t\t\t\t\tView Docs\n\t\t\t\t\t</a>\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockDocumentQuery } from \"@/api/block-documents\";\nimport { BlockDocumentDetailsPage } from \"@/components/blocks/block-document-details-page/block-document-details-page\";\n\nexport const Route = createFileRoute(\"/blocks/block/$id\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockDocumentQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\tconst { data } = useSuspenseQuery(buildGetBlockDocumentQuery(id));\n\treturn <BlockDocumentDetailsPage blockDocument={data} />;\n}\n"],"names":["BlockDocumentDetailsPageHeader","blockName","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BlockDocumentSchemaProperties","data","fields","fieldValues","useMemo","properties","property","label","field","value","Fragment","clsx","BlockDocumentDetailsPage","blockDocument","dialogState","handleConfirmDelete","useDeleteBlockDocumentConfirmationDialog","handleDeleteBlock","block_type","BlockDocumentActionMenu","Card","NeedHelpDocsLink","PythonBlockSnippet","BlockTypeDetails","DeleteConfirmationDialog","hasCodeExample","hasDocumentationUrl","Typography","DOCS_LINKS","RouteComponent","id","Route","useParams","useSuspenseQuery","buildGetBlockDocumentQuery"],"mappings":"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"}
1
+ {"version":3,"file":"block._id-Bue6lnrN.js","sources":["../../src/components/blocks/block-document-details-page/block-document-details-page-header.tsx","../../src/components/blocks/block-document-details-page/block-document-schema-properties.tsx","../../src/components/blocks/block-document-details-page/block-document-details-page.tsx","../../src/routes/blocks/block.$id.tsx?tsr-split=component"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentDetailsPageHeaderProps = {\n\tblockName: string;\n};\n\nexport const BlockDocumentDetailsPageHeader = ({\n\tblockName,\n}: BlockDocumentDetailsPageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockName}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import clsx from \"clsx\";\nimport { Fragment, useMemo } from \"react\";\n\ntype BlockDocumentSchemaProperties = {\n\tdata: { [key: string]: unknown };\n\tfields: { [key: string]: unknown };\n};\nexport function BlockDocumentSchemaProperties({\n\tdata,\n\tfields,\n}: BlockDocumentSchemaProperties) {\n\tconst fieldValues = useMemo(() => {\n\t\tlet properties: { [key: string]: unknown } = {};\n\t\tif (\"properties\" in fields) {\n\t\t\tproperties = fields.properties as { [key: string]: unknown };\n\t\t}\n\n\t\treturn Object.keys(properties).map((property) => {\n\t\t\tlet label = property;\n\t\t\t// nb: expect this type from Prefect Schema\n\t\t\tconst field = properties[property] as {\n\t\t\t\t[key: string]: unknown;\n\t\t\t\ttitle: string;\n\t\t\t};\n\t\t\tif (field.title) {\n\t\t\t\tlabel = field.title;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tvalue: data[property] ? JSON.stringify(data[property], null, 2) : null,\n\t\t\t};\n\t\t});\n\t}, [data, fields]);\n\n\treturn (\n\t\t<dl className=\"flex flex-col gap-2 p-2 text-xs\">\n\t\t\t{fieldValues.map(({ label, value }) => (\n\t\t\t\t<Fragment key={label}>\n\t\t\t\t\t<dt className=\"text-gray-500 text-sm\">{label}</dt>\n\t\t\t\t\t<dd className={clsx(\"text-base\", !value && \"text-gray-500 \")}>\n\t\t\t\t\t\t{value ?? \"None\"}\n\t\t\t\t\t</dd>\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t</dl>\n\t);\n}\n","import type { BlockDocument } from \"@/api/block-documents\";\nimport { BlockDocumentActionMenu } from \"@/components/blocks/block-document-action-menu\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport { Card } from \"@/components/ui/card\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport { DOCS_LINKS } from \"@/components/ui/docs-link\";\nimport { Typography } from \"@/components/ui/typography\";\nimport { PythonBlockSnippet } from \"../python-example-snippet\";\nimport { useDeleteBlockDocumentConfirmationDialog } from \"../use-delete-block-document-confirmation-dialog\";\nimport { BlockDocumentDetailsPageHeader } from \"./block-document-details-page-header\";\nimport { BlockDocumentSchemaProperties } from \"./block-document-schema-properties\";\n\ntype BlockDocumentDetailsPageProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentDetailsPage = ({\n\tblockDocument,\n}: BlockDocumentDetailsPageProps) => {\n\tconst [dialogState, handleConfirmDelete] =\n\t\tuseDeleteBlockDocumentConfirmationDialog();\n\n\tconst handleDeleteBlock = () =>\n\t\thandleConfirmDelete(blockDocument, { shouldNavigate: true });\n\n\tconst { block_type } = blockDocument;\n\n\tconst blockName =\n\t\tblockDocument.name ?? blockDocument.block_type_name ?? \"Block Document\";\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<BlockDocumentDetailsPageHeader blockName={blockName} />\n\t\t\t\t\t<BlockDocumentActionMenu\n\t\t\t\t\t\tblockDocument={blockDocument}\n\t\t\t\t\t\tonDelete={handleDeleteBlock}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<Card className=\"p-4\">\n\t\t\t\t\t<div className=\"grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t\t{(block_type?.code_example || block_type?.documentation_url) && (\n\t\t\t\t\t\t\t\t<NeedHelpDocsLink\n\t\t\t\t\t\t\t\t\thasCodeExample={Boolean(block_type?.code_example)}\n\t\t\t\t\t\t\t\t\thasDocumentationUrl={Boolean(block_type?.documentation_url)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{block_type?.code_example && (\n\t\t\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\t\t\tcodeExample={block_type.code_example}\n\t\t\t\t\t\t\t\t\tname={blockDocument.name}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{blockDocument.data && blockDocument.block_schema?.fields && (\n\t\t\t\t\t\t\t\t<BlockDocumentSchemaProperties\n\t\t\t\t\t\t\t\t\tdata={blockDocument.data}\n\t\t\t\t\t\t\t\t\tfields={blockDocument.block_schema?.fields}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{block_type && <BlockTypeDetails blockType={block_type} />}\n\t\t\t\t\t</div>\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t\t<DeleteConfirmationDialog {...dialogState} />\n\t\t</>\n\t);\n};\n\ntype NeedHelpDocsLinkProps = {\n\thasCodeExample: boolean;\n\thasDocumentationUrl: boolean;\n};\nfunction NeedHelpDocsLink({\n\thasCodeExample,\n\thasDocumentationUrl,\n}: NeedHelpDocsLinkProps) {\n\treturn (\n\t\t<div className=\"flex items-center gap-1\">\n\t\t\t{hasCodeExample && (\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"muted\">\n\t\t\t\t\tPaste this snippet{\" \"}\n\t\t\t\t\t<span className=\"font-semibold\">into your flows</span> to use this\n\t\t\t\t\tblock.\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t\t{hasDocumentationUrl && (\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"muted\">\n\t\t\t\t\tNeed help?{\" \"}\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName=\"underline text-blue-600 hover:text-blue-800 visited:text-purple-600\"\n\t\t\t\t\t\thref={DOCS_LINKS[\"blocks-guide\"]}\n\t\t\t\t\t>\n\t\t\t\t\t\tView Docs\n\t\t\t\t\t</a>\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockDocumentQuery } from \"@/api/block-documents\";\nimport { BlockDocumentDetailsPage } from \"@/components/blocks/block-document-details-page/block-document-details-page\";\n\nexport const Route = createFileRoute(\"/blocks/block/$id\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockDocumentQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\tconst { data } = useSuspenseQuery(buildGetBlockDocumentQuery(id));\n\treturn <BlockDocumentDetailsPage blockDocument={data} />;\n}\n"],"names":["BlockDocumentDetailsPageHeader","blockName","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BlockDocumentSchemaProperties","data","fields","fieldValues","useMemo","properties","property","label","field","value","Fragment","clsx","BlockDocumentDetailsPage","blockDocument","dialogState","handleConfirmDelete","useDeleteBlockDocumentConfirmationDialog","handleDeleteBlock","block_type","BlockDocumentActionMenu","Card","NeedHelpDocsLink","PythonBlockSnippet","BlockTypeDetails","DeleteConfirmationDialog","hasCodeExample","hasDocumentationUrl","Typography","DOCS_LINKS","RouteComponent","id","Route","useParams","useSuspenseQuery","buildGetBlockDocumentQuery"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as s,u as g,r as b,L as B,p as k}from"./vendor-tanstack-BK8oseNA.js";import{B as y,g as v,h as c,bs as l,bB as m,bD as _,dL as N,C as S,q as p,y as n,dM as E,d4 as L}from"./index-D5RdrxkU.js";import{B as w}from"./block-type-details-rrToxL5r.js";import{l as C,L as P}from"./schema-form-input-string-format-datetime-l3xt3PWf.js";import"./toggle-group-C-vxYz4l.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";import"./block-type-logo-DURScH8H.js";import"./lazy-markdown-wPid80zf.js";import"./zod-DgSl2Nua.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./timezone-select-AdlSRQxZ.js";import"./dropdown-menu-e0Fqb6aw.js";import"./form-DNerk3LS.js";const F=({blockDocument:e})=>s.jsx(y,{children:s.jsxs(v,{children:[s.jsx(c,{children:s.jsx(l,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(m,{}),s.jsx(c,{children:s.jsx(l,{to:"/blocks/block/$id",params:{id:e.id},className:"text-xl font-semibold",children:e.name??e.block_type_name??e.id})}),s.jsx(m,{}),s.jsx(c,{className:"text-xl font-semibold",children:s.jsx(_,{children:"Edit"})})]})}),R=({blockDocument:e})=>{const r=g(),{values:t,setValues:o,errors:x,validateForm:u}=C(),{updateBlockDocument:h,isPending:j}=N();b.useEffect(()=>{e.data&&o(e.data)},[e.data,o]);const f=async i=>{i.preventDefault();try{await u({schema:t}),h({id:e.id,data:t,merge_existing_data:!1},{onSuccess:()=>{n.success("Block updated successfully"),r({to:"/blocks/block/$id",params:{id:e.id}})},onError:d=>{const a="Unknown error while updating block.";n.error(a),console.error(a,d)}})}catch(d){const a="Unknown error while validating block data.";n.error(a),console.error(a,d)}};return s.jsxs("div",{className:"flex flex-col gap-6",children:[s.jsx(F,{blockDocument:e}),s.jsxs(S,{className:" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[s.jsxs("form",{className:"flex flex-col gap-4",onSubmit:i=>{f(i)},children:[s.jsx(P,{values:t,onValuesChange:o,errors:x,kinds:["json"],schema:e?.block_schema?.fields??{}}),s.jsxs("div",{className:"flex gap-3 justify-end",children:[s.jsx(p,{variant:"secondary",children:s.jsx(B,{to:"/blocks/block/$id",params:{id:e.id},children:"Cancel"})}),s.jsx(p,{loading:j,type:"submit",children:"Save"})]})]}),e.block_type&&s.jsx(w,{blockType:e.block_type})]})]})};function Y(){const{id:e}=E.useParams(),{data:r}=k(L(e));return s.jsx(R,{blockDocument:r})}export{Y as component};
2
+ //# sourceMappingURL=block_._id.edit-QY0OzN_b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block_._id.edit-CIhIBJrm.js","sources":["../../src/components/blocks/block-document-edit-page/block-document-edit-page-header.tsx","../../src/components/blocks/block-document-edit-page/block-document-edit-page.tsx","../../src/routes/blocks/block_.$id.edit.tsx?tsr-split=component"],"sourcesContent":["import type { BlockDocument } from \"@/api/block-documents\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentEditPageHeaderProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentEditPageHeader = ({\n\tblockDocument,\n}: BlockDocumentEditPageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/block/$id\"\n\t\t\t\t\t\tparams={{ id: blockDocument.id }}\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{blockDocument.name ??\n\t\t\t\t\t\t\tblockDocument.block_type_name ??\n\t\t\t\t\t\t\tblockDocument.id}\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Edit</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { Link, useNavigate } from \"@tanstack/react-router\";\nimport { type FormEvent, useEffect } from \"react\";\nimport { toast } from \"sonner\";\nimport {\n\ttype BlockDocument,\n\tuseUpdateBlockDocument,\n} from \"@/api/block-documents\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport {\n\tLazySchemaForm,\n\ttype PrefectSchemaObject,\n\tuseSchemaForm,\n} from \"@/components/schemas\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { BlockDocumentEditPageHeader } from \"./block-document-edit-page-header\";\n\ntype BlockDocumentEditPageProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentEditPage = ({\n\tblockDocument,\n}: BlockDocumentEditPageProps) => {\n\tconst navigate = useNavigate();\n\tconst { values, setValues, errors, validateForm } = useSchemaForm();\n\tconst { updateBlockDocument, isPending } = useUpdateBlockDocument();\n\n\t// sync up values with block document values\n\tuseEffect(() => {\n\t\tif (blockDocument.data) {\n\t\t\tsetValues(blockDocument.data);\n\t\t}\n\t}, [blockDocument.data, setValues]);\n\n\tconst handleSubmit = async (event: FormEvent) => {\n\t\tevent.preventDefault();\n\t\ttry {\n\t\t\tawait validateForm({ schema: values });\n\t\t\tupdateBlockDocument(\n\t\t\t\t{\n\t\t\t\t\tid: blockDocument.id,\n\t\t\t\t\tdata: values,\n\t\t\t\t\tmerge_existing_data: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\ttoast.success(\"Block updated successfully\");\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/blocks/block/$id\",\n\t\t\t\t\t\t\tparams: { id: blockDocument.id },\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\tconst message = \"Unknown error while updating block.\";\n\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\tconsole.error(message, err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tconst message = \"Unknown error while validating block data.\";\n\t\t\ttoast.error(message);\n\t\t\tconsole.error(message, err);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockDocumentEditPageHeader blockDocument={blockDocument} />\n\t\t\t<Card className=\" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t<form\n\t\t\t\t\tclassName=\"flex flex-col gap-4\"\n\t\t\t\t\tonSubmit={(e) => void handleSubmit(e)}\n\t\t\t\t>\n\t\t\t\t\t<LazySchemaForm\n\t\t\t\t\t\tvalues={values}\n\t\t\t\t\t\tonValuesChange={setValues}\n\t\t\t\t\t\terrors={errors}\n\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\tschema={\n\t\t\t\t\t\t\t(blockDocument?.block_schema?.fields ??\n\t\t\t\t\t\t\t\t{}) as unknown as PrefectSchemaObject\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex gap-3 justify-end\">\n\t\t\t\t\t\t<Button variant=\"secondary\">\n\t\t\t\t\t\t\t<Link to=\"/blocks/block/$id\" params={{ id: blockDocument.id }}>\n\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button loading={isPending} type=\"submit\">\n\t\t\t\t\t\t\tSave\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\n\t\t\t\t{blockDocument.block_type && (\n\t\t\t\t\t<BlockTypeDetails blockType={blockDocument.block_type} />\n\t\t\t\t)}\n\t\t\t</Card>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockDocumentQuery } from \"@/api/block-documents\";\nimport { BlockDocumentEditPage } from \"@/components/blocks/block-document-edit-page\";\n\nexport const Route = createFileRoute(\"/blocks/block_/$id/edit\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockDocumentQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\tconst { data } = useSuspenseQuery(buildGetBlockDocumentQuery(id));\n\treturn <BlockDocumentEditPage blockDocument={data} />;\n}\n"],"names":["BlockDocumentEditPageHeader","blockDocument","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","BlockDocumentEditPage","navigate","useNavigate","values","setValues","errors","validateForm","useSchemaForm","updateBlockDocument","isPending","useUpdateBlockDocument","useEffect","handleSubmit","event","toast","err","message","Card","e","LazySchemaForm","Button","Link","BlockTypeDetails","RouteComponent","id","Route","useParams","data","useSuspenseQuery","buildGetBlockDocumentQuery"],"mappings":"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"}
1
+ {"version":3,"file":"block_._id.edit-QY0OzN_b.js","sources":["../../src/components/blocks/block-document-edit-page/block-document-edit-page-header.tsx","../../src/components/blocks/block-document-edit-page/block-document-edit-page.tsx","../../src/routes/blocks/block_.$id.edit.tsx?tsr-split=component"],"sourcesContent":["import type { BlockDocument } from \"@/api/block-documents\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentEditPageHeaderProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentEditPageHeader = ({\n\tblockDocument,\n}: BlockDocumentEditPageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/block/$id\"\n\t\t\t\t\t\tparams={{ id: blockDocument.id }}\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{blockDocument.name ??\n\t\t\t\t\t\t\tblockDocument.block_type_name ??\n\t\t\t\t\t\t\tblockDocument.id}\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Edit</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { Link, useNavigate } from \"@tanstack/react-router\";\nimport { type FormEvent, useEffect } from \"react\";\nimport { toast } from \"sonner\";\nimport {\n\ttype BlockDocument,\n\tuseUpdateBlockDocument,\n} from \"@/api/block-documents\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport {\n\tLazySchemaForm,\n\ttype PrefectSchemaObject,\n\tuseSchemaForm,\n} from \"@/components/schemas\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { BlockDocumentEditPageHeader } from \"./block-document-edit-page-header\";\n\ntype BlockDocumentEditPageProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentEditPage = ({\n\tblockDocument,\n}: BlockDocumentEditPageProps) => {\n\tconst navigate = useNavigate();\n\tconst { values, setValues, errors, validateForm } = useSchemaForm();\n\tconst { updateBlockDocument, isPending } = useUpdateBlockDocument();\n\n\t// sync up values with block document values\n\tuseEffect(() => {\n\t\tif (blockDocument.data) {\n\t\t\tsetValues(blockDocument.data);\n\t\t}\n\t}, [blockDocument.data, setValues]);\n\n\tconst handleSubmit = async (event: FormEvent) => {\n\t\tevent.preventDefault();\n\t\ttry {\n\t\t\tawait validateForm({ schema: values });\n\t\t\tupdateBlockDocument(\n\t\t\t\t{\n\t\t\t\t\tid: blockDocument.id,\n\t\t\t\t\tdata: values,\n\t\t\t\t\tmerge_existing_data: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\ttoast.success(\"Block updated successfully\");\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/blocks/block/$id\",\n\t\t\t\t\t\t\tparams: { id: blockDocument.id },\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\tconst message = \"Unknown error while updating block.\";\n\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\tconsole.error(message, err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tconst message = \"Unknown error while validating block data.\";\n\t\t\ttoast.error(message);\n\t\t\tconsole.error(message, err);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockDocumentEditPageHeader blockDocument={blockDocument} />\n\t\t\t<Card className=\" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t<form\n\t\t\t\t\tclassName=\"flex flex-col gap-4\"\n\t\t\t\t\tonSubmit={(e) => void handleSubmit(e)}\n\t\t\t\t>\n\t\t\t\t\t<LazySchemaForm\n\t\t\t\t\t\tvalues={values}\n\t\t\t\t\t\tonValuesChange={setValues}\n\t\t\t\t\t\terrors={errors}\n\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\tschema={\n\t\t\t\t\t\t\t(blockDocument?.block_schema?.fields ??\n\t\t\t\t\t\t\t\t{}) as unknown as PrefectSchemaObject\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex gap-3 justify-end\">\n\t\t\t\t\t\t<Button variant=\"secondary\">\n\t\t\t\t\t\t\t<Link to=\"/blocks/block/$id\" params={{ id: blockDocument.id }}>\n\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button loading={isPending} type=\"submit\">\n\t\t\t\t\t\t\tSave\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\n\t\t\t\t{blockDocument.block_type && (\n\t\t\t\t\t<BlockTypeDetails blockType={blockDocument.block_type} />\n\t\t\t\t)}\n\t\t\t</Card>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockDocumentQuery } from \"@/api/block-documents\";\nimport { BlockDocumentEditPage } from \"@/components/blocks/block-document-edit-page\";\n\nexport const Route = createFileRoute(\"/blocks/block_/$id/edit\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockDocumentQuery(params.id)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\tconst { data } = useSuspenseQuery(buildGetBlockDocumentQuery(id));\n\treturn <BlockDocumentEditPage blockDocument={data} />;\n}\n"],"names":["BlockDocumentEditPageHeader","blockDocument","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","BlockDocumentEditPage","navigate","useNavigate","values","setValues","errors","validateForm","useSchemaForm","updateBlockDocument","isPending","useUpdateBlockDocument","useEffect","handleSubmit","event","toast","err","message","Card","e","LazySchemaForm","Button","Link","BlockTypeDetails","RouteComponent","id","Route","useParams","data","useSuspenseQuery","buildGetBlockDocumentQuery"],"mappings":"yxBAcO,MAAMA,EAA8B,CAAC,CAC3C,cAAAC,CACD,IAEEC,EAAAA,IAACC,EAAA,CACA,SAAAC,EAAAA,KAACC,EAAA,CACA,SAAA,CAAAH,EAAAA,IAACI,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,UAAU,UAAU,wBAAwB,kBAE/D,CAAA,CACD,QACCC,EAAA,EAAoB,QAEpBF,EAAA,CACA,SAAAJ,EAAAA,IAACK,EAAA,CACA,GAAG,oBACH,OAAQ,CAAE,GAAIN,EAAc,EAAA,EAC5B,UAAU,wBAET,SAAAA,EAAc,MACdA,EAAc,iBACdA,EAAc,EAAA,CAAA,EAEjB,QACCO,EAAA,EAAoB,QAEpBF,EAAA,CAAe,UAAU,wBACzB,SAAAJ,EAAAA,IAACO,EAAA,CAAe,gBAAI,CAAA,CACrB,CAAA,CAAA,CACD,CAAA,CACD,ECvBWC,EAAwB,CAAC,CACrC,cAAAT,CACD,IAAkC,CACjC,MAAMU,EAAWC,EAAA,EACX,CAAE,OAAAC,EAAQ,UAAAC,EAAW,OAAAC,EAAQ,aAAAC,CAAA,EAAiBC,EAAA,EAC9C,CAAE,oBAAAC,EAAqB,UAAAC,CAAA,EAAcC,EAAA,EAG3CC,EAAAA,UAAU,IAAM,CACXpB,EAAc,MACjBa,EAAUb,EAAc,IAAI,CAE9B,EAAG,CAACA,EAAc,KAAMa,CAAS,CAAC,EAElC,MAAMQ,EAAe,MAAOC,GAAqB,CAChDA,EAAM,eAAA,EACN,GAAI,CACH,MAAMP,EAAa,CAAE,OAAQH,EAAQ,EACrCK,EACC,CACC,GAAIjB,EAAc,GAClB,KAAMY,EACN,oBAAqB,EAAA,EAEtB,CACC,UAAW,IAAM,CAChBW,EAAM,QAAQ,4BAA4B,EACrCb,EAAS,CACb,GAAI,oBACJ,OAAQ,CAAE,GAAIV,EAAc,EAAA,CAAG,CAC/B,CACF,EACA,QAAUwB,GAAQ,CACjB,MAAMC,EAAU,sCAChBF,EAAM,MAAME,CAAO,EACnB,QAAQ,MAAMA,EAASD,CAAG,CAC3B,CAAA,CACD,CAEF,OAASA,EAAK,CACb,MAAMC,EAAU,6CAChBF,EAAM,MAAME,CAAO,EACnB,QAAQ,MAAMA,EAASD,CAAG,CAC3B,CACD,EAEA,OACCrB,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAF,MAACF,GAA4B,cAAAC,EAA8B,EAC3DG,EAAAA,KAACuB,EAAA,CAAK,UAAU,oDACf,SAAA,CAAAvB,EAAAA,KAAC,OAAA,CACA,UAAU,sBACV,SAAWwB,IAAWN,EAAaM,CAAC,GAEpC,SAAA,CAAA1B,EAAAA,IAAC2B,EAAA,CACA,OAAAhB,EACA,eAAgBC,EAChB,OAAAC,EACA,MAAO,CAAC,MAAM,EACd,OACEd,GAAe,cAAc,QAC7B,CAAA,CAAC,CAAA,EAGJG,EAAAA,KAAC,MAAA,CAAI,UAAU,yBACd,SAAA,CAAAF,MAAC4B,EAAA,CAAO,QAAQ,YACf,SAAA5B,EAAAA,IAAC6B,GAAK,GAAG,oBAAoB,OAAQ,CAAE,GAAI9B,EAAc,EAAA,EAAM,kBAE/D,EACD,QACC6B,EAAA,CAAO,QAASX,EAAW,KAAK,SAAS,SAAA,MAAA,CAE1C,CAAA,CAAA,CACD,CAAA,CAAA,CAAA,EAGAlB,EAAc,YACdC,MAAC8B,EAAA,CAAiB,UAAW/B,EAAc,UAAA,CAAY,CAAA,CAAA,CAEzD,CAAA,EACD,CAEF,EC3FA,SAASgC,GAAiB,CACzB,KAAM,CAAEC,GAAAA,CAAAA,EAAOC,EAAMC,UAAAA,EACf,CAAEC,KAAAA,CAAAA,EAASC,EAAiBC,EAA2BL,CAAE,CAAC,EAChE,OAAOhC,EAAAA,IAACQ,EAAA,CAAsB,cAAe2B,CAAAA,CAAK,CACnD"}
@@ -0,0 +1,2 @@
1
+ import{j as s,L as o,p as h,r as c}from"./vendor-tanstack-BK8oseNA.js";import{C as m,al as t,q as i,N as g,O as j,bA as p,B as f,g as v,h as n,bs as b,bB as N,bm as B,bC as d}from"./index-D5RdrxkU.js";import{B as k}from"./block-type-logo-DURScH8H.js";import{L as C}from"./lazy-markdown-wPid80zf.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";function S({blockType:e}){return s.jsxs(m,{className:"p-6",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(k,{size:"lg",logoUrl:e.logo_url}),s.jsx(t,{variant:"h4",children:e.name})]}),e.description&&s.jsx("div",{className:"prose max-w-none h-32 overflow-y-scroll text-sm",children:s.jsx(C,{children:e.description})}),s.jsxs("div",{className:"flex justify-end gap-4",children:[s.jsx(i,{variant:"secondary",size:"sm",children:s.jsx(o,{to:"/blocks/catalog/$slug",params:{slug:e.slug},children:"Details"})}),s.jsx(i,{size:"sm",children:s.jsx(o,{to:"/blocks/catalog/$slug/create",params:{slug:e.slug},children:"Create"})})]})]})}const y=({blockTypes:e,search:a,onSearch:r})=>s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsxs(t,{variant:"bodySmall",className:"text-muted-foreground",children:[e.length," ",g(e.length,"Block")]}),s.jsx("div",{className:"min-w-40",children:s.jsx(j,{value:a,placeholder:"Search blocks",onChange:l=>r(l.target.value)})})]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:e.map(l=>s.jsx(S,{blockType:l},l.id))})]}),L=()=>s.jsx(m,{className:"p-4",children:s.jsxs(t,{variant:"bodySmall",children:["Can't find a block for your service? Check out the"," ",s.jsx("a",{className:"underline text-blue-600 hover:text-blue-800 visited:text-purple-600",href:p["integrations-guide"],children:"docs"})," ","for a full list of integrations in the SDK"]})}),w=()=>s.jsx(f,{children:s.jsxs(v,{children:[s.jsx(n,{children:s.jsx(b,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(N,{}),s.jsx(n,{className:"text-xl font-semibold",children:"Catalog"})]})}),z=({blockTypes:e,search:a,onSearch:r})=>s.jsxs("div",{className:"flex flex-col gap-6",children:[s.jsx(w,{}),s.jsx(L,{}),s.jsx(y,{blockTypes:e,search:a,onSearch:r})]});function $(){const[e,a]=_(),{data:r}=h(B({block_types:{name:{like_:e}},offset:0}));return s.jsx(z,{blockTypes:r,search:e,onSearch:a})}function _(){const{blockName:e}=d.useSearch(),a=d.useNavigate(),r=c.useCallback(u=>{a({to:".",search:x=>({...x,blockName:u}),replace:!0})},[a]);return[c.useMemo(()=>e??"",[e]),r]}export{$ as component};
2
+ //# sourceMappingURL=catalog-CGjRGWv6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-CfniU0UV.js","sources":["../../src/components/blocks/blocks-catalog-page/block-type-card.tsx","../../src/components/blocks/blocks-catalog-page/block-types-grid.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-message.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-page-header.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-page.tsx","../../src/routes/blocks/catalog.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypeCardProps = {\n\tblockType: BlockType;\n};\n\nexport function BlockTypeCard({ blockType }: BlockTypeCardProps) {\n\treturn (\n\t\t<Card className=\"p-6\">\n\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t<Typography variant=\"h4\">{blockType.name}</Typography>\n\t\t\t</div>\n\n\t\t\t{blockType.description && (\n\t\t\t\t<div className=\"prose max-w-none h-32 overflow-y-scroll text-sm\">\n\t\t\t\t\t<LazyMarkdown>{blockType.description}</LazyMarkdown>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"flex justify-end gap-4\">\n\t\t\t\t<Button variant=\"secondary\" size=\"sm\">\n\t\t\t\t\t<Link to=\"/blocks/catalog/$slug\" params={{ slug: blockType.slug }}>\n\t\t\t\t\t\tDetails\n\t\t\t\t\t</Link>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button size=\"sm\">\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t>\n\t\t\t\t\t\tCreate\n\t\t\t\t\t</Link>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</Card>\n\t);\n}\n","import type { BlockType } from \"@/api/block-types\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport { Typography } from \"@/components/ui/typography\";\nimport { pluralize } from \"@/utils\";\nimport { BlockTypeCard } from \"./block-type-card\";\n\ntype BlockTypesGridProps = {\n\tblockTypes: Array<BlockType>;\n\tsearch: string;\n\tonSearch: (value?: string) => void;\n};\n\nexport const BlockTypesGrid = ({\n\tblockTypes,\n\tsearch,\n\tonSearch,\n}: BlockTypesGridProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<div className=\"flex justify-between items-center\">\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"text-muted-foreground\">\n\t\t\t\t\t{blockTypes.length} {pluralize(blockTypes.length, \"Block\")}\n\t\t\t\t</Typography>\n\t\t\t\t<div className=\"min-w-40\">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\tplaceholder=\"Search blocks\"\n\t\t\t\t\t\tonChange={(e) => onSearch(e.target.value)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n\t\t\t\t{blockTypes.map((blockType) => (\n\t\t\t\t\t<BlockTypeCard key={blockType.id} blockType={blockType} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { Card } from \"@/components/ui/card\";\nimport { DOCS_LINKS } from \"@/components/ui/docs-link\";\nimport { Typography } from \"@/components/ui/typography\";\n\nexport const BlocksCatalogMessage = () => {\n\treturn (\n\t\t<Card className=\"p-4\">\n\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\tCan&apos;t find a block for your service? Check out the{\" \"}\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"underline text-blue-600 hover:text-blue-800 visited:text-purple-600\"\n\t\t\t\t\thref={DOCS_LINKS[\"integrations-guide\"]}\n\t\t\t\t>\n\t\t\t\t\tdocs\n\t\t\t\t</a>{\" \"}\n\t\t\t\tfor a full list of integrations in the SDK\n\t\t\t</Typography>\n\t\t</Card>\n\t);\n};\n","import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\nexport const BlocksCatalogPageHeader = () => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\tCatalog\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import type { BlockType } from \"@/api/block-types\";\nimport { BlockTypesGrid } from \"./block-types-grid\";\nimport { BlocksCatalogMessage } from \"./blocks-catalog-message\";\nimport { BlocksCatalogPageHeader } from \"./blocks-catalog-page-header\";\n\ntype BlocksCatalogPageProps = {\n\tblockTypes: Array<BlockType>;\n\tsearch: string;\n\tonSearch: (value?: string) => void;\n};\n\nexport const BlocksCatalogPage = ({\n\tblockTypes,\n\tsearch,\n\tonSearch,\n}: BlocksCatalogPageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlocksCatalogPageHeader />\n\t\t\t<BlocksCatalogMessage />\n\t\t\t<BlockTypesGrid\n\t\t\t\tblockTypes={blockTypes}\n\t\t\t\tsearch={search}\n\t\t\t\tonSearch={onSearch}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport { buildListFilterBlockTypesQuery } from \"@/api/block-types\";\nimport { BlocksCatalogPage } from \"@/components/blocks/blocks-catalog-page/blocks-catalog-page\";\n\nconst searchParams = z.object({\n\tblockName: z.string().optional(),\n});\n\nexport const Route = createFileRoute(\"/blocks/catalog\")({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\tloaderDeps: ({ search: { blockName } }) => ({\n\t\tblockName,\n\t}),\n\tloader: ({ deps, context: { queryClient } }) => {\n\t\treturn queryClient.ensureQueryData(\n\t\t\tbuildListFilterBlockTypesQuery({\n\t\t\t\tblock_types: { name: { like_: deps.blockName } },\n\t\t\t\toffset: 0,\n\t\t\t}),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst [search, onSearch] = useSearch();\n\tconst { data: blockTypes } = useSuspenseQuery(\n\t\tbuildListFilterBlockTypesQuery({\n\t\t\tblock_types: { name: { like_: search } },\n\t\t\toffset: 0,\n\t\t}),\n\t);\n\n\treturn (\n\t\t<BlocksCatalogPage\n\t\t\tblockTypes={blockTypes}\n\t\t\tsearch={search}\n\t\t\tonSearch={onSearch}\n\t\t/>\n\t);\n}\n\nfunction useSearch() {\n\tconst { blockName } = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\tconst onSearch = useCallback(\n\t\t(value?: string) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tblockName: value,\n\t\t\t\t}),\n\t\t\t\treplace: true,\n\t\t\t});\n\t\t},\n\t\t[navigate],\n\t);\n\tconst search = useMemo(() => blockName ?? \"\", [blockName]);\n\treturn [search, onSearch] as const;\n}\n"],"names":["BlockTypeCard","blockType","jsxs","Card","jsx","BlockTypeLogo","Typography","LazyMarkdown","Button","Link","BlockTypesGrid","blockTypes","search","onSearch","pluralize","SearchInput","e","BlocksCatalogMessage","DOCS_LINKS","BlocksCatalogPageHeader","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BlocksCatalogPage","RouteComponent","useSearch","data","useSuspenseQuery","buildListFilterBlockTypesQuery","block_types","name","like_","offset","blockName","Route","navigate","useNavigate","useCallback","value","to","prev","replace","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"catalog-CGjRGWv6.js","sources":["../../src/components/blocks/blocks-catalog-page/block-type-card.tsx","../../src/components/blocks/blocks-catalog-page/block-types-grid.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-message.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-page-header.tsx","../../src/components/blocks/blocks-catalog-page/blocks-catalog-page.tsx","../../src/routes/blocks/catalog.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypeCardProps = {\n\tblockType: BlockType;\n};\n\nexport function BlockTypeCard({ blockType }: BlockTypeCardProps) {\n\treturn (\n\t\t<Card className=\"p-6\">\n\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t<Typography variant=\"h4\">{blockType.name}</Typography>\n\t\t\t</div>\n\n\t\t\t{blockType.description && (\n\t\t\t\t<div className=\"prose max-w-none h-32 overflow-y-scroll text-sm\">\n\t\t\t\t\t<LazyMarkdown>{blockType.description}</LazyMarkdown>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"flex justify-end gap-4\">\n\t\t\t\t<Button variant=\"secondary\" size=\"sm\">\n\t\t\t\t\t<Link to=\"/blocks/catalog/$slug\" params={{ slug: blockType.slug }}>\n\t\t\t\t\t\tDetails\n\t\t\t\t\t</Link>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button size=\"sm\">\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t>\n\t\t\t\t\t\tCreate\n\t\t\t\t\t</Link>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</Card>\n\t);\n}\n","import type { BlockType } from \"@/api/block-types\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport { Typography } from \"@/components/ui/typography\";\nimport { pluralize } from \"@/utils\";\nimport { BlockTypeCard } from \"./block-type-card\";\n\ntype BlockTypesGridProps = {\n\tblockTypes: Array<BlockType>;\n\tsearch: string;\n\tonSearch: (value?: string) => void;\n};\n\nexport const BlockTypesGrid = ({\n\tblockTypes,\n\tsearch,\n\tonSearch,\n}: BlockTypesGridProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<div className=\"flex justify-between items-center\">\n\t\t\t\t<Typography variant=\"bodySmall\" className=\"text-muted-foreground\">\n\t\t\t\t\t{blockTypes.length} {pluralize(blockTypes.length, \"Block\")}\n\t\t\t\t</Typography>\n\t\t\t\t<div className=\"min-w-40\">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\tplaceholder=\"Search blocks\"\n\t\t\t\t\t\tonChange={(e) => onSearch(e.target.value)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n\t\t\t\t{blockTypes.map((blockType) => (\n\t\t\t\t\t<BlockTypeCard key={blockType.id} blockType={blockType} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { Card } from \"@/components/ui/card\";\nimport { DOCS_LINKS } from \"@/components/ui/docs-link\";\nimport { Typography } from \"@/components/ui/typography\";\n\nexport const BlocksCatalogMessage = () => {\n\treturn (\n\t\t<Card className=\"p-4\">\n\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\tCan&apos;t find a block for your service? Check out the{\" \"}\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"underline text-blue-600 hover:text-blue-800 visited:text-purple-600\"\n\t\t\t\t\thref={DOCS_LINKS[\"integrations-guide\"]}\n\t\t\t\t>\n\t\t\t\t\tdocs\n\t\t\t\t</a>{\" \"}\n\t\t\t\tfor a full list of integrations in the SDK\n\t\t\t</Typography>\n\t\t</Card>\n\t);\n};\n","import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\nexport const BlocksCatalogPageHeader = () => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\tCatalog\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import type { BlockType } from \"@/api/block-types\";\nimport { BlockTypesGrid } from \"./block-types-grid\";\nimport { BlocksCatalogMessage } from \"./blocks-catalog-message\";\nimport { BlocksCatalogPageHeader } from \"./blocks-catalog-page-header\";\n\ntype BlocksCatalogPageProps = {\n\tblockTypes: Array<BlockType>;\n\tsearch: string;\n\tonSearch: (value?: string) => void;\n};\n\nexport const BlocksCatalogPage = ({\n\tblockTypes,\n\tsearch,\n\tonSearch,\n}: BlocksCatalogPageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlocksCatalogPageHeader />\n\t\t\t<BlocksCatalogMessage />\n\t\t\t<BlockTypesGrid\n\t\t\t\tblockTypes={blockTypes}\n\t\t\t\tsearch={search}\n\t\t\t\tonSearch={onSearch}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport { buildListFilterBlockTypesQuery } from \"@/api/block-types\";\nimport { BlocksCatalogPage } from \"@/components/blocks/blocks-catalog-page/blocks-catalog-page\";\n\nconst searchParams = z.object({\n\tblockName: z.string().optional(),\n});\n\nexport const Route = createFileRoute(\"/blocks/catalog\")({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\tloaderDeps: ({ search: { blockName } }) => ({\n\t\tblockName,\n\t}),\n\tloader: ({ deps, context: { queryClient } }) => {\n\t\treturn queryClient.ensureQueryData(\n\t\t\tbuildListFilterBlockTypesQuery({\n\t\t\t\tblock_types: { name: { like_: deps.blockName } },\n\t\t\t\toffset: 0,\n\t\t\t}),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst [search, onSearch] = useSearch();\n\tconst { data: blockTypes } = useSuspenseQuery(\n\t\tbuildListFilterBlockTypesQuery({\n\t\t\tblock_types: { name: { like_: search } },\n\t\t\toffset: 0,\n\t\t}),\n\t);\n\n\treturn (\n\t\t<BlocksCatalogPage\n\t\t\tblockTypes={blockTypes}\n\t\t\tsearch={search}\n\t\t\tonSearch={onSearch}\n\t\t/>\n\t);\n}\n\nfunction useSearch() {\n\tconst { blockName } = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\tconst onSearch = useCallback(\n\t\t(value?: string) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tblockName: value,\n\t\t\t\t}),\n\t\t\t\treplace: true,\n\t\t\t});\n\t\t},\n\t\t[navigate],\n\t);\n\tconst search = useMemo(() => blockName ?? \"\", [blockName]);\n\treturn [search, onSearch] as const;\n}\n"],"names":["BlockTypeCard","blockType","jsxs","Card","jsx","BlockTypeLogo","Typography","LazyMarkdown","Button","Link","BlockTypesGrid","blockTypes","search","onSearch","pluralize","SearchInput","e","BlocksCatalogMessage","DOCS_LINKS","BlocksCatalogPageHeader","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BlocksCatalogPage","RouteComponent","useSearch","data","useSuspenseQuery","buildListFilterBlockTypesQuery","block_types","name","like_","offset","blockName","Route","navigate","useNavigate","useCallback","value","to","prev","replace","useMemo"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as s,L as l,p as c}from"./vendor-tanstack-BK8oseNA.js";import{B as d,g as m,h as o,bs as t,bB as n,C as x,al as i,q as p,dq as u,dd as j}from"./index-D5RdrxkU.js";import{B as h}from"./block-type-logo-DURScH8H.js";import{P as f}from"./python-example-snippet-3jtXWQZN.js";import{L as g}from"./lazy-markdown-wPid80zf.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";const B=({blockType:e})=>s.jsxs("div",{className:"flex flex-col gap-6",children:[s.jsx(N,{blockType:e}),s.jsx(v,{blockType:e})]});function N({blockType:e}){return s.jsx(d,{children:s.jsxs(m,{children:[s.jsx(o,{children:s.jsx(t,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(n,{}),s.jsx(o,{children:s.jsx(t,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),s.jsx(n,{}),s.jsx(o,{className:"text-xl font-semibold",children:e.slug})]})})}function v({blockType:e}){return s.jsx("div",{children:s.jsxs(x,{className:"p-6",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(h,{size:"lg",logoUrl:e.logo_url}),s.jsx(i,{variant:"h3",children:e.name})]}),e.description&&s.jsx(L,{description:e.description,documentationUrl:e.documentation_url}),e.code_example&&s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsx(i,{variant:"h4",children:"Example"}),s.jsx(f,{codeExample:e.code_example,name:e.name})]}),s.jsx("div",{className:"flex justify-end",children:s.jsx(p,{children:s.jsx(l,{to:"/blocks/catalog/$slug/create",params:{slug:e.slug},children:"Create"})})})]})})}function L({description:e,documentationUrl:a}){let r=e;return a&&(r=`${r} [Documentation](${a})`),s.jsx("div",{className:"prose max-w-none",children:s.jsx(g,{children:r})})}function $(){const{slug:e}=u.useParams(),{data:a}=c(j(e));return s.jsx(B,{blockType:a})}export{$ as component};
2
+ //# sourceMappingURL=catalog_._slug-BMFNZhEb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog_._slug-C9p86T4s.js","sources":["../../src/components/blocks/block-type-page/block-type-page.tsx","../../src/routes/blocks/catalog_.$slug.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { PythonBlockSnippet } from \"@/components/blocks/python-example-snippet\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypePageProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockTypePage = ({ blockType }: BlockTypePageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockTypePageHeader blockType={blockType} />\n\t\t\t<BlockTypeCardDetails blockType={blockType} />\n\t\t</div>\n\t);\n};\n\nfunction BlockTypePageHeader({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockType.slug}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n}\n\nfunction BlockTypeCardDetails({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<div>\n\t\t\t<Card className=\"p-6\">\n\t\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t\t<Typography variant=\"h3\">{blockType.name}</Typography>\n\t\t\t\t</div>\n\n\t\t\t\t{blockType.description && (\n\t\t\t\t\t<BlockTypeDescription\n\t\t\t\t\t\tdescription={blockType.description}\n\t\t\t\t\t\tdocumentationUrl={blockType.documentation_url}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{blockType.code_example && (\n\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<Typography variant=\"h4\">Example</Typography>\n\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\tcodeExample={blockType.code_example}\n\t\t\t\t\t\t\tname={blockType.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t<Button>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</Card>\n\t\t</div>\n\t);\n}\n\ntype BlockTypeDescriptionProps = {\n\tdescription: string;\n\tdocumentationUrl: string | null | undefined;\n};\nfunction BlockTypeDescription({\n\tdescription,\n\tdocumentationUrl,\n}: BlockTypeDescriptionProps) {\n\tlet retDescription = description;\n\tif (documentationUrl) {\n\t\tretDescription = `${retDescription} [Documentation](${documentationUrl})`;\n\t}\n\n\treturn (\n\t\t<div className=\"prose max-w-none\">\n\t\t\t<LazyMarkdown>{retDescription}</LazyMarkdown>\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockTypePage } from \"@/components/blocks/block-type-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockTypeQuery(params.slug)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\treturn <BlockTypePage blockType={blockType} />;\n}\n"],"names":["BlockTypePage","blockType","jsxs","jsx","BlockTypePageHeader","BlockTypeCardDetails","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","Card","BlockTypeLogo","Typography","BlockTypeDescription","PythonBlockSnippet","Button","Link","description","documentationUrl","retDescription","LazyMarkdown","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery"],"mappings":"mfAoBO,MAAMA,EAAgB,CAAC,CAAE,UAAAC,KAE9BC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,MAACC,GAAoB,UAAAH,EAAsB,EAC3CE,MAACE,GAAqB,UAAAJ,CAAA,CAAsB,CAAA,EAC7C,EAIF,SAASG,EAAoB,CAAE,UAAAH,GAAiC,CAC/D,OACCE,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,UAAU,UAAU,wBAAwB,kBAE/D,CAAA,CACD,QACCC,EAAA,EAAoB,QAEpBF,EAAA,CACA,SAAAL,EAAAA,IAACM,EAAA,CACA,GAAG,kBACH,UAAU,wBACV,SAAA,SAAA,CAAA,EAGF,QACCC,EAAA,EAAoB,EAErBP,EAAAA,IAACK,EAAA,CAAe,UAAU,wBACxB,WAAU,IAAA,CACZ,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAEA,SAASH,EAAqB,CAAE,UAAAJ,GAAiC,CAChE,OACCE,EAAAA,IAAC,MAAA,CACA,SAAAD,EAAAA,KAACS,EAAA,CAAK,UAAU,MACf,SAAA,CAAAT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACS,EAAA,CAAc,KAAK,KAAK,QAASX,EAAU,SAAU,EACtDE,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECZ,EAAU,aACVE,EAAAA,IAACW,EAAA,CACA,YAAab,EAAU,YACvB,iBAAkBA,EAAU,iBAAA,CAAA,EAI7BA,EAAU,cACVC,OAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAK,SAAA,UAAO,EAChCV,EAAAA,IAACY,EAAA,CACA,YAAad,EAAU,aACvB,KAAMA,EAAU,IAAA,CAAA,CACjB,EACD,EAGDE,MAAC,MAAA,CAAI,UAAU,mBACd,eAACa,EAAA,CACA,SAAAb,EAAAA,IAACc,EAAA,CACA,GAAG,+BACH,OAAQ,CAAE,KAAMhB,EAAU,IAAA,EAC1B,SAAA,QAAA,CAAA,EAGF,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAMA,SAASa,EAAqB,CAC7B,YAAAI,EACA,iBAAAC,CACD,EAA8B,CAC7B,IAAIC,EAAiBF,EACrB,OAAIC,IACHC,EAAiB,GAAGA,CAAc,oBAAoBD,CAAgB,WAIrE,MAAA,CAAI,UAAU,mBACd,SAAAhB,EAAAA,IAACkB,EAAA,CAAc,WAAe,CAAA,CAC/B,CAEF,CCzGA,SAASC,GAAiB,CACzB,KAAM,CAAEC,KAAAA,CAAAA,EAASC,EAAMC,UAAAA,EACjB,CAAEC,KAAMzB,CAAAA,EAAc0B,EAAiBC,EAAuBL,CAAI,CAAC,EACzE,OAAOpB,MAACH,GAAc,UAAAC,EAAqB,CAC5C"}
1
+ {"version":3,"file":"catalog_._slug-BMFNZhEb.js","sources":["../../src/components/blocks/block-type-page/block-type-page.tsx","../../src/routes/blocks/catalog_.$slug.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { PythonBlockSnippet } from \"@/components/blocks/python-example-snippet\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypePageProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockTypePage = ({ blockType }: BlockTypePageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockTypePageHeader blockType={blockType} />\n\t\t\t<BlockTypeCardDetails blockType={blockType} />\n\t\t</div>\n\t);\n};\n\nfunction BlockTypePageHeader({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockType.slug}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n}\n\nfunction BlockTypeCardDetails({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<div>\n\t\t\t<Card className=\"p-6\">\n\t\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t\t<Typography variant=\"h3\">{blockType.name}</Typography>\n\t\t\t\t</div>\n\n\t\t\t\t{blockType.description && (\n\t\t\t\t\t<BlockTypeDescription\n\t\t\t\t\t\tdescription={blockType.description}\n\t\t\t\t\t\tdocumentationUrl={blockType.documentation_url}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{blockType.code_example && (\n\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<Typography variant=\"h4\">Example</Typography>\n\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\tcodeExample={blockType.code_example}\n\t\t\t\t\t\t\tname={blockType.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t<Button>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</Card>\n\t\t</div>\n\t);\n}\n\ntype BlockTypeDescriptionProps = {\n\tdescription: string;\n\tdocumentationUrl: string | null | undefined;\n};\nfunction BlockTypeDescription({\n\tdescription,\n\tdocumentationUrl,\n}: BlockTypeDescriptionProps) {\n\tlet retDescription = description;\n\tif (documentationUrl) {\n\t\tretDescription = `${retDescription} [Documentation](${documentationUrl})`;\n\t}\n\n\treturn (\n\t\t<div className=\"prose max-w-none\">\n\t\t\t<LazyMarkdown>{retDescription}</LazyMarkdown>\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockTypePage } from \"@/components/blocks/block-type-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockTypeQuery(params.slug)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\treturn <BlockTypePage blockType={blockType} />;\n}\n"],"names":["BlockTypePage","blockType","jsxs","jsx","BlockTypePageHeader","BlockTypeCardDetails","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","Card","BlockTypeLogo","Typography","BlockTypeDescription","PythonBlockSnippet","Button","Link","description","documentationUrl","retDescription","LazyMarkdown","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery"],"mappings":"wfAoBO,MAAMA,EAAgB,CAAC,CAAE,UAAAC,KAE9BC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,MAACC,GAAoB,UAAAH,EAAsB,EAC3CE,MAACE,GAAqB,UAAAJ,CAAA,CAAsB,CAAA,EAC7C,EAIF,SAASG,EAAoB,CAAE,UAAAH,GAAiC,CAC/D,OACCE,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,UAAU,UAAU,wBAAwB,kBAE/D,CAAA,CACD,QACCC,EAAA,EAAoB,QAEpBF,EAAA,CACA,SAAAL,EAAAA,IAACM,EAAA,CACA,GAAG,kBACH,UAAU,wBACV,SAAA,SAAA,CAAA,EAGF,QACCC,EAAA,EAAoB,EAErBP,EAAAA,IAACK,EAAA,CAAe,UAAU,wBACxB,WAAU,IAAA,CACZ,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAEA,SAASH,EAAqB,CAAE,UAAAJ,GAAiC,CAChE,OACCE,EAAAA,IAAC,MAAA,CACA,SAAAD,EAAAA,KAACS,EAAA,CAAK,UAAU,MACf,SAAA,CAAAT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACS,EAAA,CAAc,KAAK,KAAK,QAASX,EAAU,SAAU,EACtDE,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECZ,EAAU,aACVE,EAAAA,IAACW,EAAA,CACA,YAAab,EAAU,YACvB,iBAAkBA,EAAU,iBAAA,CAAA,EAI7BA,EAAU,cACVC,OAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAK,SAAA,UAAO,EAChCV,EAAAA,IAACY,EAAA,CACA,YAAad,EAAU,aACvB,KAAMA,EAAU,IAAA,CAAA,CACjB,EACD,EAGDE,MAAC,MAAA,CAAI,UAAU,mBACd,eAACa,EAAA,CACA,SAAAb,EAAAA,IAACc,EAAA,CACA,GAAG,+BACH,OAAQ,CAAE,KAAMhB,EAAU,IAAA,EAC1B,SAAA,QAAA,CAAA,EAGF,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAMA,SAASa,EAAqB,CAC7B,YAAAI,EACA,iBAAAC,CACD,EAA8B,CAC7B,IAAIC,EAAiBF,EACrB,OAAIC,IACHC,EAAiB,GAAGA,CAAc,oBAAoBD,CAAgB,WAIrE,MAAA,CAAI,UAAU,mBACd,SAAAhB,EAAAA,IAACkB,EAAA,CAAc,WAAe,CAAA,CAC/B,CAEF,CCzGA,SAASC,GAAiB,CACzB,KAAM,CAAEC,KAAAA,CAAAA,EAASC,EAAMC,UAAAA,EACjB,CAAEC,KAAMzB,CAAAA,EAAc0B,EAAiBC,EAAuBL,CAAI,CAAC,EACzE,OAAOpB,MAACH,GAAc,UAAAC,EAAqB,CAC5C"}
@@ -0,0 +1,2 @@
1
+ import{j as e,u as B,L as y,p as h}from"./vendor-tanstack-BK8oseNA.js";import{B as N,g as v,h as l,bs as i,bB as d,bD as F,df as _,C as S,p as C,q as p,y as u,dK as L,dd as w,de as E}from"./index-D5RdrxkU.js";import{a as D}from"./zod-DgSl2Nua.js";import{c as P,o as A,s as R}from"./vendor-forms-DxqqmhL5.js";import{B as T}from"./block-type-details-rrToxL5r.js";import{l as U,L as V}from"./schema-form-input-string-format-datetime-l3xt3PWf.js";import"./toggle-group-C-vxYz4l.js";import{F as I,b as Q,c as z,d as G,e as K,a as M}from"./form-DNerk3LS.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-7GxEwcQM.js";import"./block-type-logo-DURScH8H.js";import"./lazy-markdown-wPid80zf.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./timezone-select-AdlSRQxZ.js";import"./dropdown-menu-e0Fqb6aw.js";const $=({blockType:s})=>e.jsx(N,{children:e.jsxs(v,{children:[e.jsx(l,{children:e.jsx(i,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(d,{}),e.jsx(l,{children:e.jsx(i,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),e.jsx(d,{}),e.jsx(l,{children:e.jsx(i,{to:"/blocks/catalog",className:"text-xl font-semibold",children:s.name})}),e.jsx(d,{}),e.jsx(l,{className:"text-xl font-semibold",children:e.jsx(F,{children:"Create"})})]})}),q=/^[a-zA-Z0-9-]+$/,H=A({blockName:R().regex(q,{message:"Name must only contain lowercase letters, numbers, and dashes"})}),O={blockName:""},X=({blockSchema:s,blockType:o})=>{const n=B(),{values:a,setValues:b,errors:x,validateForm:j}=U(),{createBlockDocument:k,isPending:f}=_(),m=P({resolver:D(H),defaultValues:O}),g=async r=>{try{if(await j({schema:a}),x.length>0)return;k({block_schema_id:s.id,block_type_id:o.id,is_anonymous:!1,data:a,name:r.blockName},{onSuccess:t=>{u.success("Block created successfully"),n({to:"/blocks/block/$id",params:{id:t.id}})},onError:t=>{const c="Unknown error while creating block.";u.error(c),console.error(c,t)}})}catch(t){const c="Unknown error while validating block data.";u.error(c),console.error(c,t)}};return e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx($,{blockType:o}),e.jsxs(S,{className:" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[e.jsx(I,{...m,children:e.jsxs("form",{className:"flex flex-col gap-4",onSubmit:r=>{m.handleSubmit(g)(r)},children:[e.jsx(Q,{control:m.control,name:"blockName",render:({field:r})=>e.jsxs(z,{children:[e.jsx(G,{children:"Name"}),e.jsx(K,{children:e.jsx(C,{...r,value:r.value})}),e.jsx(M,{})]})}),e.jsx(V,{values:a,onValuesChange:b,errors:x,kinds:["json"],schema:s.fields}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx(p,{variant:"secondary",children:e.jsx(y,{to:"/blocks/catalog",children:"Cancel"})}),e.jsx(p,{loading:f,type:"submit",children:"Save"})]})]})}),e.jsx(T,{blockType:o})]})]})};function xe(){const{slug:s}=L.useParams(),{data:o}=h(w(s)),{data:n}=h(E({block_schemas:{block_type_id:{any_:[o.id]},operator:"and_"},offset:0})),a=n[0];if(!a)throw new Error("Block schema not found");return e.jsx(X,{blockSchema:a,blockType:o})}export{xe as component};
2
+ //# sourceMappingURL=catalog_._slug_.create-CuFA3kUC.js.map