prefect 3.6.14.dev7__py3-none-any.whl → 3.6.15__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 (215) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/events/clients.py +40 -21
  3. prefect/server/api/concurrency_limits_v2.py +5 -3
  4. prefect/server/ui-v2/assets/{artifact-card-9Cw_dMVb.js → artifact-card-BBzQR-Cj.js} +2 -2
  5. prefect/server/ui-v2/assets/{artifact-card-9Cw_dMVb.js.map → artifact-card-BBzQR-Cj.js.map} +1 -1
  6. prefect/server/ui-v2/assets/artifact._id-BFdf1WUA.js +2 -0
  7. prefect/server/ui-v2/assets/artifact._id-BFdf1WUA.js.map +1 -0
  8. prefect/server/ui-v2/assets/{automation-wizard-D7nVgckT.js → automation-wizard-EYSfXlQ7.js} +2 -2
  9. prefect/server/ui-v2/assets/{automation-wizard-D7nVgckT.js.map → automation-wizard-EYSfXlQ7.js.map} +1 -1
  10. prefect/server/ui-v2/assets/{automation._id-BhEFaDc6.js → automation._id-Dn7jABys.js} +2 -2
  11. prefect/server/ui-v2/assets/{automation._id-BhEFaDc6.js.map → automation._id-Dn7jABys.js.map} +1 -1
  12. prefect/server/ui-v2/assets/{automation_._id.edit-CffnUlbj.js → automation_._id.edit-COrqswD3.js} +2 -2
  13. prefect/server/ui-v2/assets/{automation_._id.edit-CffnUlbj.js.map → automation_._id.edit-COrqswD3.js.map} +1 -1
  14. prefect/server/ui-v2/assets/{automations-header-qb94agIp.js → automations-header-DN_dmMXW.js} +2 -2
  15. prefect/server/ui-v2/assets/{automations-header-qb94agIp.js.map → automations-header-DN_dmMXW.js.map} +1 -1
  16. prefect/server/ui-v2/assets/{base-job-template-form-section-DdDSFAJa.js → base-job-template-form-section-De2ACYbw.js} +2 -2
  17. prefect/server/ui-v2/assets/{base-job-template-form-section-DdDSFAJa.js.map → base-job-template-form-section-De2ACYbw.js.map} +1 -1
  18. prefect/server/ui-v2/assets/{block-type-details-2rIqbqoZ.js → block-type-details-Cklc7TkK.js} +2 -2
  19. prefect/server/ui-v2/assets/{block-type-details-2rIqbqoZ.js.map → block-type-details-Cklc7TkK.js.map} +1 -1
  20. prefect/server/ui-v2/assets/{block-type-logo-DV1pSkV0.js → block-type-logo-Cbpfxded.js} +2 -2
  21. prefect/server/ui-v2/assets/{block-type-logo-DV1pSkV0.js.map → block-type-logo-Cbpfxded.js.map} +1 -1
  22. prefect/server/ui-v2/assets/{block._id-OeCbdPeL.js → block._id-tuz1Bcj2.js} +2 -2
  23. prefect/server/ui-v2/assets/{block._id-OeCbdPeL.js.map → block._id-tuz1Bcj2.js.map} +1 -1
  24. prefect/server/ui-v2/assets/{block_._id.edit-CD22VllN.js → block_._id.edit-CFEYhF5R.js} +2 -2
  25. prefect/server/ui-v2/assets/{block_._id.edit-CD22VllN.js.map → block_._id.edit-CFEYhF5R.js.map} +1 -1
  26. prefect/server/ui-v2/assets/{catalog-Dj7lYV7b.js → catalog-CCPRo7nY.js} +2 -2
  27. prefect/server/ui-v2/assets/{catalog-Dj7lYV7b.js.map → catalog-CCPRo7nY.js.map} +1 -1
  28. prefect/server/ui-v2/assets/{catalog_._slug-NLgWS8vG.js → catalog_._slug-Bl2J2oI3.js} +2 -2
  29. prefect/server/ui-v2/assets/{catalog_._slug-NLgWS8vG.js.map → catalog_._slug-Bl2J2oI3.js.map} +1 -1
  30. prefect/server/ui-v2/assets/{catalog_._slug_.create-D0vc1Piy.js → catalog_._slug_.create-9UD_SxDN.js} +2 -2
  31. prefect/server/ui-v2/assets/{catalog_._slug_.create-D0vc1Piy.js.map → catalog_._slug_.create-9UD_SxDN.js.map} +1 -1
  32. prefect/server/ui-v2/assets/{collapsible-Dgk2Qvjj.js → collapsible-BVQTBG_U.js} +2 -2
  33. prefect/server/ui-v2/assets/{collapsible-Dgk2Qvjj.js.map → collapsible-BVQTBG_U.js.map} +1 -1
  34. prefect/server/ui-v2/assets/{concurrency-limit._id-BZiyM0NT.js → concurrency-limit._id-CsgRxA0a.js} +2 -2
  35. prefect/server/ui-v2/assets/{concurrency-limit._id-BZiyM0NT.js.map → concurrency-limit._id-CsgRxA0a.js.map} +1 -1
  36. prefect/server/ui-v2/assets/{create-H21iiYVl.js → create-BycfZHGQ.js} +2 -2
  37. prefect/server/ui-v2/assets/{create-H21iiYVl.js.map → create-BycfZHGQ.js.map} +1 -1
  38. prefect/server/ui-v2/assets/{create-1j1-8yhV.js → create-D--LHaji.js} +2 -2
  39. prefect/server/ui-v2/assets/{create-1j1-8yhV.js.map → create-D--LHaji.js.map} +1 -1
  40. prefect/server/ui-v2/assets/{data-table-DHlbTUL7.js → data-table-rlbkLcrY.js} +2 -2
  41. prefect/server/ui-v2/assets/{data-table-DHlbTUL7.js.map → data-table-rlbkLcrY.js.map} +1 -1
  42. prefect/server/ui-v2/assets/{delete-confirmation-dialog-B9-8JHV7.js → delete-confirmation-dialog-DHkm2p8m.js} +2 -2
  43. prefect/server/ui-v2/assets/{delete-confirmation-dialog-B9-8JHV7.js.map → delete-confirmation-dialog-DHkm2p8m.js.map} +1 -1
  44. prefect/server/ui-v2/assets/{deployment-action-header-DlD2GSJB.js → deployment-action-header-D5GOooPm.js} +2 -2
  45. prefect/server/ui-v2/assets/{deployment-action-header-DlD2GSJB.js.map → deployment-action-header-D5GOooPm.js.map} +1 -1
  46. prefect/server/ui-v2/assets/{deployment-form-CFcOIeIi.js → deployment-form-wfg6HeAJ.js} +3 -3
  47. prefect/server/ui-v2/assets/{deployment-form-CFcOIeIi.js.map → deployment-form-wfg6HeAJ.js.map} +1 -1
  48. prefect/server/ui-v2/assets/{deployment-links-DN2Oa0r1.js → deployment-links-6iugOgDh.js} +2 -2
  49. prefect/server/ui-v2/assets/{deployment-links-DN2Oa0r1.js.map → deployment-links-6iugOgDh.js.map} +1 -1
  50. prefect/server/ui-v2/assets/{deployment._id-C8NPwIIQ.js → deployment._id-Ci9zge5n.js} +2 -2
  51. prefect/server/ui-v2/assets/{deployment._id-C8NPwIIQ.js.map → deployment._id-Ci9zge5n.js.map} +1 -1
  52. prefect/server/ui-v2/assets/{deployment._id-DsVQUPNp.js → deployment._id-whsGcHdu.js} +2 -2
  53. prefect/server/ui-v2/assets/{deployment._id-DsVQUPNp.js.map → deployment._id-whsGcHdu.js.map} +1 -1
  54. prefect/server/ui-v2/assets/deployment_._id.duplicate-D9ZWkh8H.js +2 -0
  55. prefect/server/ui-v2/assets/{deployment_._id.duplicate-4uYFgdPg.js.map → deployment_._id.duplicate-D9ZWkh8H.js.map} +1 -1
  56. prefect/server/ui-v2/assets/deployment_._id.edit-CS7sObzC.js +2 -0
  57. prefect/server/ui-v2/assets/{deployment_._id.edit-Z859_W76.js.map → deployment_._id.edit-CS7sObzC.js.map} +1 -1
  58. prefect/server/ui-v2/assets/{deployment_._id.run-MW5q2SRM.js → deployment_._id.run-g7SZuDFi.js} +2 -2
  59. prefect/server/ui-v2/assets/{deployment_._id.run-MW5q2SRM.js.map → deployment_._id.run-g7SZuDFi.js.map} +1 -1
  60. prefect/server/ui-v2/assets/{dropdown-menu-DF4QR3Cp.js → dropdown-menu-0atiOSFo.js} +2 -2
  61. prefect/server/ui-v2/assets/{dropdown-menu-DF4QR3Cp.js.map → dropdown-menu-0atiOSFo.js.map} +1 -1
  62. prefect/server/ui-v2/assets/{event-resource-display-DR3zL_k_.js → event-resource-display-DHiAb1Up.js} +2 -2
  63. prefect/server/ui-v2/assets/{event-resource-display-DR3zL_k_.js.map → event-resource-display-DHiAb1Up.js.map} +1 -1
  64. prefect/server/ui-v2/assets/{event._eventDate._eventId-DfU7SalU.js → event._eventDate._eventId-D7Twzb22.js} +2 -2
  65. prefect/server/ui-v2/assets/{event._eventDate._eventId-DfU7SalU.js.map → event._eventDate._eventId-D7Twzb22.js.map} +1 -1
  66. prefect/server/ui-v2/assets/flow-run-graph-BhzuSJLm.js +2 -0
  67. prefect/server/ui-v2/assets/{flow-run-graph-Bf9t75GK.js.map → flow-run-graph-BhzuSJLm.js.map} +1 -1
  68. prefect/server/ui-v2/assets/{flow-run._id-RL0qeSLl.js → flow-run._id-CqpH6bvx.js} +2 -2
  69. prefect/server/ui-v2/assets/{flow-run._id-RL0qeSLl.js.map → flow-run._id-CqpH6bvx.js.map} +1 -1
  70. prefect/server/ui-v2/assets/flow-run._id-RLy2kBh0.js +4 -0
  71. prefect/server/ui-v2/assets/flow-run._id-RLy2kBh0.js.map +1 -0
  72. prefect/server/ui-v2/assets/{flow-run._id-DTsj_xO3.js → flow-run._id-lIIQBD7H.js} +2 -2
  73. prefect/server/ui-v2/assets/{flow-run._id-DTsj_xO3.js.map → flow-run._id-lIIQBD7H.js.map} +1 -1
  74. prefect/server/ui-v2/assets/{flow-runs-pagination-Bfelp8UO.js → flow-runs-pagination-BATUweRV.js} +2 -2
  75. prefect/server/ui-v2/assets/{flow-runs-pagination-Bfelp8UO.js.map → flow-runs-pagination-BATUweRV.js.map} +1 -1
  76. prefect/server/ui-v2/assets/{flow._id-DuQ5AUjj.js → flow._id-BdQGWPKP.js} +2 -2
  77. prefect/server/ui-v2/assets/{flow._id-DuQ5AUjj.js.map → flow._id-BdQGWPKP.js.map} +1 -1
  78. prefect/server/ui-v2/assets/{form-DHWphysD.js → form-DLrbC7rV.js} +2 -2
  79. prefect/server/ui-v2/assets/{form-DHWphysD.js.map → form-DLrbC7rV.js.map} +1 -1
  80. prefect/server/ui-v2/assets/{header-BK_NuSng.js → header-BTAWyeXv.js} +2 -2
  81. prefect/server/ui-v2/assets/{header-BK_NuSng.js.map → header-BTAWyeXv.js.map} +1 -1
  82. prefect/server/ui-v2/assets/{header-nu-ZKuen.js → header-ChFAx5uR.js} +2 -2
  83. prefect/server/ui-v2/assets/{header-nu-ZKuen.js.map → header-ChFAx5uR.js.map} +1 -1
  84. prefect/server/ui-v2/assets/{header-B9SuuoZx.js → header-CyQqOj1w.js} +2 -2
  85. prefect/server/ui-v2/assets/{header-B9SuuoZx.js.map → header-CyQqOj1w.js.map} +1 -1
  86. prefect/server/ui-v2/assets/{index-Dl_iSX0z.js → index-7i4X9TeK.js} +2 -2
  87. prefect/server/ui-v2/assets/{index-Dl_iSX0z.js.map → index-7i4X9TeK.js.map} +1 -1
  88. prefect/server/ui-v2/assets/{index-BPXdHXTb.js → index-BaWDC4da.js} +2 -2
  89. prefect/server/ui-v2/assets/{index-BPXdHXTb.js.map → index-BaWDC4da.js.map} +1 -1
  90. prefect/server/ui-v2/assets/{index-CqUa3fbN.js → index-BkiGTHwU.js} +2 -2
  91. prefect/server/ui-v2/assets/{index-CqUa3fbN.js.map → index-BkiGTHwU.js.map} +1 -1
  92. prefect/server/ui-v2/assets/{index-DNuhJlQK.js → index-Btb_-PDp.js} +2 -2
  93. prefect/server/ui-v2/assets/{index-DNuhJlQK.js.map → index-Btb_-PDp.js.map} +1 -1
  94. prefect/server/ui-v2/assets/{index-DcMpyvW7.js → index-BwCLKpNb.js} +2 -2
  95. prefect/server/ui-v2/assets/{index-DcMpyvW7.js.map → index-BwCLKpNb.js.map} +1 -1
  96. prefect/server/ui-v2/assets/{index-DVsNA4UN.js → index-CHf6xi9j.js} +2 -2
  97. prefect/server/ui-v2/assets/{index-DVsNA4UN.js.map → index-CHf6xi9j.js.map} +1 -1
  98. prefect/server/ui-v2/assets/{index-DSBmxhwG.js → index-CKGj5lSu.js} +2 -2
  99. prefect/server/ui-v2/assets/{index-DSBmxhwG.js.map → index-CKGj5lSu.js.map} +1 -1
  100. prefect/server/ui-v2/assets/index-COouj_0-.css +1 -0
  101. prefect/server/ui-v2/assets/{index-vRbn9rG4.js → index-CQnWiUE5.js} +2 -2
  102. prefect/server/ui-v2/assets/{index-vRbn9rG4.js.map → index-CQnWiUE5.js.map} +1 -1
  103. prefect/server/ui-v2/assets/{index-DWGx9irM.js → index-CiSFHkhI.js} +2 -2
  104. prefect/server/ui-v2/assets/{index-DWGx9irM.js.map → index-CiSFHkhI.js.map} +1 -1
  105. prefect/server/ui-v2/assets/{index-DFS5GNpT.js → index-CnlN-VC_.js} +2 -2
  106. prefect/server/ui-v2/assets/{index-DFS5GNpT.js.map → index-CnlN-VC_.js.map} +1 -1
  107. prefect/server/ui-v2/assets/{index-mj9GNKt7.js → index-CxUfZRkN.js} +2 -2
  108. prefect/server/ui-v2/assets/{index-mj9GNKt7.js.map → index-CxUfZRkN.js.map} +1 -1
  109. prefect/server/ui-v2/assets/{index-DsK1RlS9.js → index-D5RT-SAp.js} +2 -2
  110. prefect/server/ui-v2/assets/{index-DsK1RlS9.js.map → index-D5RT-SAp.js.map} +1 -1
  111. prefect/server/ui-v2/assets/{index-BqwU5GSv.js → index-DATPYZfT.js} +2 -2
  112. prefect/server/ui-v2/assets/{index-BqwU5GSv.js.map → index-DATPYZfT.js.map} +1 -1
  113. prefect/server/ui-v2/assets/{index-BCR-yD58.js → index-DNh9ZBy4.js} +2 -2
  114. prefect/server/ui-v2/assets/{index-BCR-yD58.js.map → index-DNh9ZBy4.js.map} +1 -1
  115. prefect/server/ui-v2/assets/{index-DtrQRjt_.js → index-DQGif3jm.js} +2 -2
  116. prefect/server/ui-v2/assets/{index-DtrQRjt_.js.map → index-DQGif3jm.js.map} +1 -1
  117. prefect/server/ui-v2/assets/{index-Cj5ihRiw.js → index-Eqdr6Ff7.js} +2 -2
  118. prefect/server/ui-v2/assets/{index-Cj5ihRiw.js.map → index-Eqdr6Ff7.js.map} +1 -1
  119. prefect/server/ui-v2/assets/{index-CYjH7t93.js → index-VH4TnZ4e.js} +2 -2
  120. prefect/server/ui-v2/assets/{index-CYjH7t93.js.map → index-VH4TnZ4e.js.map} +1 -1
  121. prefect/server/ui-v2/assets/{index-CPFMHkRh.js → index-kP_I5Qfd.js} +2 -2
  122. prefect/server/ui-v2/assets/{index-CPFMHkRh.js.map → index-kP_I5Qfd.js.map} +1 -1
  123. prefect/server/ui-v2/assets/{index-C0MMjoUe.js → index-lyQav_XM.js} +2 -2
  124. prefect/server/ui-v2/assets/{index-C0MMjoUe.js.map → index-lyQav_XM.js.map} +1 -1
  125. prefect/server/ui-v2/assets/{index-_0OOjqn5.js → index-m48E4KcG.js} +4 -4
  126. prefect/server/ui-v2/assets/{index-_0OOjqn5.js.map → index-m48E4KcG.js.map} +1 -1
  127. prefect/server/ui-v2/assets/{json-input-CMZiW5M2.js → json-input-Ba-BeBcw.js} +2 -2
  128. prefect/server/ui-v2/assets/{json-input-CMZiW5M2.js.map → json-input-Ba-BeBcw.js.map} +1 -1
  129. prefect/server/ui-v2/assets/key-value-DkSKn6jE.js +2 -0
  130. prefect/server/ui-v2/assets/key-value-DkSKn6jE.js.map +1 -0
  131. prefect/server/ui-v2/assets/{key._key-CdonPtNh.js → key._key-Cjx57ymg.js} +2 -2
  132. prefect/server/ui-v2/assets/{key._key-CdonPtNh.js.map → key._key-Cjx57ymg.js.map} +1 -1
  133. prefect/server/ui-v2/assets/{lazy-markdown-CKcd9ksG.js → lazy-markdown-Du2Xu3Yp.js} +2 -2
  134. prefect/server/ui-v2/assets/{lazy-markdown-CKcd9ksG.js.map → lazy-markdown-Du2Xu3Yp.js.map} +1 -1
  135. prefect/server/ui-v2/assets/{login-Dnd-tV90.js → login-DxMF9Jvj.js} +2 -2
  136. prefect/server/ui-v2/assets/{login-Dnd-tV90.js.map → login-DxMF9Jvj.js.map} +1 -1
  137. prefect/server/ui-v2/assets/{markdown-input-D6rfyTa_.js → markdown-input-DPi8zyRr.js} +2 -2
  138. prefect/server/ui-v2/assets/{markdown-input-D6rfyTa_.js.map → markdown-input-DPi8zyRr.js.map} +1 -1
  139. prefect/server/ui-v2/assets/{python-example-snippet-eWuRXCxE.js → python-example-snippet-DfCFYPN_.js} +3 -3
  140. prefect/server/ui-v2/assets/{python-example-snippet-eWuRXCxE.js.map → python-example-snippet-DfCFYPN_.js.map} +1 -1
  141. prefect/server/ui-v2/assets/{python-input-itfwkkBT.js → python-input-mr6GD840.js} +2 -2
  142. prefect/server/ui-v2/assets/{python-input-itfwkkBT.js.map → python-input-mr6GD840.js.map} +1 -1
  143. prefect/server/ui-v2/assets/{radio-group-DeN-_krn.js → radio-group-Co3cN0Kv.js} +2 -2
  144. prefect/server/ui-v2/assets/{radio-group-DeN-_krn.js.map → radio-group-Co3cN0Kv.js.map} +1 -1
  145. prefect/server/ui-v2/assets/{route-error-state-tYzhKCqH.js → route-error-state-DnBaNT2T.js} +2 -2
  146. prefect/server/ui-v2/assets/{route-error-state-tYzhKCqH.js.map → route-error-state-DnBaNT2T.js.map} +1 -1
  147. prefect/server/ui-v2/assets/{schema-form-DDUzvjpL.js → schema-form-CWDHSME9.js} +2 -2
  148. prefect/server/ui-v2/assets/{schema-form-DDUzvjpL.js.map → schema-form-CWDHSME9.js.map} +1 -1
  149. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-DrpJmvST.js → schema-form-input-string-format-datetime-BSWlW_aQ.js} +4 -4
  150. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-DrpJmvST.js.map → schema-form-input-string-format-datetime-BSWlW_aQ.js.map} +1 -1
  151. prefect/server/ui-v2/assets/{settings-OdrJDFrk.js → settings-DU5y6tJE.js} +2 -2
  152. prefect/server/ui-v2/assets/{settings-OdrJDFrk.js.map → settings-DU5y6tJE.js.map} +1 -1
  153. prefect/server/ui-v2/assets/{sort-filter-DaBGDmua.js → sort-filter-DpuWNkQo.js} +2 -2
  154. prefect/server/ui-v2/assets/{sort-filter-DaBGDmua.js.map → sort-filter-DpuWNkQo.js.map} +1 -1
  155. prefect/server/ui-v2/assets/{table-4GUC4YOD.js → table-bBL6C0ZK.js} +2 -2
  156. prefect/server/ui-v2/assets/{table-4GUC4YOD.js.map → table-bBL6C0ZK.js.map} +1 -1
  157. prefect/server/ui-v2/assets/{tags-input-BvH9UY8h.js → tags-input-BLPMVWpZ.js} +2 -2
  158. prefect/server/ui-v2/assets/{tags-input-BvH9UY8h.js.map → tags-input-BLPMVWpZ.js.map} +1 -1
  159. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CLZz3kwW.js → task-run-concurrency-limits-reset-dialog-S69sih55.js} +2 -2
  160. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CLZz3kwW.js.map → task-run-concurrency-limits-reset-dialog-S69sih55.js.map} +1 -1
  161. prefect/server/ui-v2/assets/{task-run._id-DHHzTQ9d.js → task-run._id-B_tIDm4K.js} +2 -2
  162. prefect/server/ui-v2/assets/{task-run._id-DHHzTQ9d.js.map → task-run._id-B_tIDm4K.js.map} +1 -1
  163. prefect/server/ui-v2/assets/{task-run._id-DgXFfCuq.js → task-run._id-Dl3Azs8t.js} +2 -2
  164. prefect/server/ui-v2/assets/{task-run._id-DgXFfCuq.js.map → task-run._id-Dl3Azs8t.js.map} +1 -1
  165. prefect/server/ui-v2/assets/{task-runs-pagination-fR9zqj38.js → task-runs-pagination-VdR-LO4r.js} +2 -2
  166. prefect/server/ui-v2/assets/{task-runs-pagination-fR9zqj38.js.map → task-runs-pagination-VdR-LO4r.js.map} +1 -1
  167. prefect/server/ui-v2/assets/{textarea-DL9UCBaB.js → textarea-B3_TtPRi.js} +2 -2
  168. prefect/server/ui-v2/assets/{textarea-DL9UCBaB.js.map → textarea-B3_TtPRi.js.map} +1 -1
  169. prefect/server/ui-v2/assets/{timezone-select-qBEoPcyO.js → timezone-select-BuPYznge.js} +2 -2
  170. prefect/server/ui-v2/assets/{timezone-select-qBEoPcyO.js.map → timezone-select-BuPYznge.js.map} +1 -1
  171. prefect/server/ui-v2/assets/{toggle-group-Cf-ZSSDP.js → toggle-group-Cn07UIim.js} +2 -2
  172. prefect/server/ui-v2/assets/{toggle-group-Cf-ZSSDP.js.map → toggle-group-Cn07UIim.js.map} +1 -1
  173. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-DRX9Kvie.js → use-delete-automation-confirmation-dialog-DpdsLH4t.js} +2 -2
  174. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-DRX9Kvie.js.map → use-delete-automation-confirmation-dialog-DpdsLH4t.js.map} +1 -1
  175. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CogrfdiO.js → use-delete-block-document-confirmation-dialog-Cq5nGhzr.js} +2 -2
  176. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CogrfdiO.js.map → use-delete-block-document-confirmation-dialog-Cq5nGhzr.js.map} +1 -1
  177. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-CdMKKvm5.js → use-flow-runs-selected-rows-DmQSWBTu.js} +2 -2
  178. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-CdMKKvm5.js.map → use-flow-runs-selected-rows-DmQSWBTu.js.map} +1 -1
  179. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-Be1qg-IF.js → use-get-artifacts-flow-task-runs-DTwcWiqW.js} +2 -2
  180. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-Be1qg-IF.js.map → use-get-artifacts-flow-task-runs-DTwcWiqW.js.map} +1 -1
  181. prefect/server/ui-v2/assets/{use-quick-run-DXDfXpvs.js → use-quick-run-CPempwLh.js} +2 -2
  182. prefect/server/ui-v2/assets/{use-quick-run-DXDfXpvs.js.map → use-quick-run-CPempwLh.js.map} +1 -1
  183. prefect/server/ui-v2/assets/{use-state-favicon-Dhkg1tqx.js → use-state-favicon-M09DmrNy.js} +2 -2
  184. prefect/server/ui-v2/assets/{use-state-favicon-Dhkg1tqx.js.map → use-state-favicon-M09DmrNy.js.map} +1 -1
  185. prefect/server/ui-v2/assets/{use-stepper-jTTsXpho.js → use-stepper-CDucnvzp.js} +2 -2
  186. prefect/server/ui-v2/assets/{use-stepper-jTTsXpho.js.map → use-stepper-CDucnvzp.js.map} +1 -1
  187. prefect/server/ui-v2/assets/{utilities-CgJi7g2F.js → utilities-BRCNRcQl.js} +2 -2
  188. prefect/server/ui-v2/assets/{utilities-CgJi7g2F.js.map → utilities-BRCNRcQl.js.map} +1 -1
  189. prefect/server/ui-v2/assets/{work-pool-filter-DLkRAAHz.js → work-pool-filter-C2tpSS-w.js} +2 -2
  190. prefect/server/ui-v2/assets/{work-pool-filter-DLkRAAHz.js.map → work-pool-filter-C2tpSS-w.js.map} +1 -1
  191. prefect/server/ui-v2/assets/{work-pool-queue-toggle-BFodtXQe.js → work-pool-queue-toggle-BQ9b-Wxy.js} +2 -2
  192. prefect/server/ui-v2/assets/{work-pool-queue-toggle-BFodtXQe.js.map → work-pool-queue-toggle-BQ9b-Wxy.js.map} +1 -1
  193. prefect/server/ui-v2/assets/{work-pool._workPoolName-Bjh_bO5G.js → work-pool._workPoolName-C_LiL3SE.js} +2 -2
  194. prefect/server/ui-v2/assets/{work-pool._workPoolName-Bjh_bO5G.js.map → work-pool._workPoolName-C_LiL3SE.js.map} +1 -1
  195. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-B-gnp5dc.js → work-pool_._workPoolName.edit-DBHlrVVx.js} +2 -2
  196. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-B-gnp5dc.js.map → work-pool_._workPoolName.edit-DBHlrVVx.js.map} +1 -1
  197. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-C7aVwLhH.js → work-pool_._workPoolName.queue._workQueueName-DkITxJOP.js} +2 -2
  198. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-C7aVwLhH.js.map → work-pool_._workPoolName.queue._workQueueName-DkITxJOP.js.map} +1 -1
  199. prefect/server/ui-v2/assets/{work-queue-icon-text-BK_qfkJJ.js → work-queue-icon-text-D4BWBVDN.js} +2 -2
  200. prefect/server/ui-v2/assets/{work-queue-icon-text-BK_qfkJJ.js.map → work-queue-icon-text-D4BWBVDN.js.map} +1 -1
  201. prefect/server/ui-v2/index.html +2 -2
  202. prefect/testing/fixtures.py +14 -13
  203. {prefect-3.6.14.dev7.dist-info → prefect-3.6.15.dist-info}/METADATA +2 -2
  204. {prefect-3.6.14.dev7.dist-info → prefect-3.6.15.dist-info}/RECORD +207 -205
  205. prefect/server/ui-v2/assets/artifact._id-zuZ8P2RD.js +0 -2
  206. prefect/server/ui-v2/assets/artifact._id-zuZ8P2RD.js.map +0 -1
  207. prefect/server/ui-v2/assets/deployment_._id.duplicate-4uYFgdPg.js +0 -2
  208. prefect/server/ui-v2/assets/deployment_._id.edit-Z859_W76.js +0 -2
  209. prefect/server/ui-v2/assets/flow-run-graph-Bf9t75GK.js +0 -2
  210. prefect/server/ui-v2/assets/flow-run._id-33WKPXsZ.js +0 -4
  211. prefect/server/ui-v2/assets/flow-run._id-33WKPXsZ.js.map +0 -1
  212. prefect/server/ui-v2/assets/index-Br7MUvka.css +0 -1
  213. {prefect-3.6.14.dev7.dist-info → prefect-3.6.15.dist-info}/WHEEL +0 -0
  214. {prefect-3.6.14.dev7.dist-info → prefect-3.6.15.dist-info}/entry_points.txt +0 -0
  215. {prefect-3.6.14.dev7.dist-info → prefect-3.6.15.dist-info}/licenses/LICENSE +0 -0
@@ -1,2 +1,2 @@
1
- import{s as n,j as t}from"./vendor-tanstack-BcZfOOfy.js";import{d7 as m,B as l,g as c,h as a,bs as u,bB as d,bD as x,dv as j}from"./index-_0OOjqn5.js";import{D as p}from"./delete-confirmation-dialog-B9-8JHV7.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-DRX9Kvie.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./work-queue-icon-text-BK_qfkJJ.js";import"./index-DSBmxhwG.js";import"./dropdown-menu-DF4QR3Cp.js";import"./use-delete-confirmation-dialog-CUdii6Lo.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(p,{...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}=j.useParams();return t.jsx(B,{id:s})}export{G as component};
2
- //# sourceMappingURL=automation._id-BhEFaDc6.js.map
1
+ import{s as n,j as t}from"./vendor-tanstack-BcZfOOfy.js";import{d7 as m,B as l,g as c,h as a,bs as u,bB as d,bD as x,dv as j}from"./index-m48E4KcG.js";import{D as p}from"./delete-confirmation-dialog-DHkm2p8m.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-DpdsLH4t.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./work-queue-icon-text-D4BWBVDN.js";import"./index-CKGj5lSu.js";import"./dropdown-menu-0atiOSFo.js";import"./use-delete-confirmation-dialog-CUdii6Lo.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(p,{...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}=j.useParams();return t.jsx(B,{id:s})}export{G as component};
2
+ //# sourceMappingURL=automation._id-Dn7jABys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation._id-BhEFaDc6.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-Dn7jABys.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,s as b,r as w,d as x}from"./vendor-tanstack-BcZfOOfy.js";import{D as _,B as A,g as j,h as d,bs as v,bB as k,bD as g,d7 as S,dQ as E,y as p,dR as N}from"./index-_0OOjqn5.js";import{A as I}from"./automation-wizard-D7nVgckT.js";import{U as n}from"./automation-schema-BIBsyp0j.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./zod-Cuos7J7w.js";import"./form-DHWphysD.js";import"./use-stepper-jTTsXpho.js";import"./textarea-DL9UCBaB.js";import"./index-DcMpyvW7.js";import"./radio-group-DeN-_krn.js";import"./collapsible-Dgk2Qvjj.js";import"./tags-input-BvH9UY8h.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 R=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}},D=({id:e})=>{const o=x(),{defaultValues:r,updateAutomation:u,isPending:s}=R({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(D,{id:e})}export{oe as component};
2
- //# sourceMappingURL=automation_._id.edit-CffnUlbj.js.map
1
+ import{j as t,s as b,r as w,d as x}from"./vendor-tanstack-BcZfOOfy.js";import{D as _,B as A,g as j,h as d,bs as v,bB as k,bD as g,d7 as S,dQ as E,y as p,dR as N}from"./index-m48E4KcG.js";import{A as I}from"./automation-wizard-EYSfXlQ7.js";import{U as n}from"./automation-schema-BIBsyp0j.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./zod-Cuos7J7w.js";import"./form-DLrbC7rV.js";import"./use-stepper-CDucnvzp.js";import"./textarea-B3_TtPRi.js";import"./index-BwCLKpNb.js";import"./radio-group-Co3cN0Kv.js";import"./collapsible-BVQTBG_U.js";import"./tags-input-BLPMVWpZ.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 R=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}},D=({id:e})=>{const o=x(),{defaultValues:r,updateAutomation:u,isPending:s}=R({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(D,{id:e})}export{oe as component};
2
+ //# sourceMappingURL=automation_._id.edit-COrqswD3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation_._id.edit-CffnUlbj.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-COrqswD3.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-BcZfOOfy.js";import{D as a,B as t,g as i,h as r,q as n,I as o}from"./index-_0OOjqn5.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-qb94agIp.js.map
1
+ import{j as e,L as s}from"./vendor-tanstack-BcZfOOfy.js";import{D as a,B as t,g as i,h as r,q as n,I as o}from"./index-m48E4KcG.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-DN_dmMXW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automations-header-qb94agIp.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-DN_dmMXW.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-BcZfOOfy.js";import{a as O,b as C}from"./schema-form-input-string-format-datetime-DrpJmvST.js";import{SchemaForm as E}from"./schema-form-DDUzvjpL.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-_0OOjqn5.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-DdDSFAJa.js.map
1
+ import{r as o,j as e}from"./vendor-tanstack-BcZfOOfy.js";import{a as O,b as C}from"./schema-form-input-string-format-datetime-BSWlW_aQ.js";import{SchemaForm as E}from"./schema-form-CWDHSME9.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-m48E4KcG.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-De2ACYbw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-job-template-form-section-DdDSFAJa.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-De2ACYbw.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-BcZfOOfy.js";import{B as o}from"./block-type-logo-DV1pSkV0.js";import{C as a,al as e}from"./index-_0OOjqn5.js";import{L as i}from"./lazy-markdown-CKcd9ksG.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-2rIqbqoZ.js.map
1
+ import{j as s}from"./vendor-tanstack-BcZfOOfy.js";import{B as o}from"./block-type-logo-Cbpfxded.js";import{C as a,al as e}from"./index-m48E4KcG.js";import{L as i}from"./lazy-markdown-Du2Xu3Yp.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-Cklc7TkK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-type-details-2rIqbqoZ.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-Cklc7TkK.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,2 +1,2 @@
1
- import{j as a}from"./vendor-tanstack-BcZfOOfy.js";import{cB as e}from"./index-_0OOjqn5.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-DV1pSkV0.js.map
1
+ import{j as a}from"./vendor-tanstack-BcZfOOfy.js";import{cB as e}from"./index-m48E4KcG.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-Cbpfxded.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-type-logo-DV1pSkV0.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-Cbpfxded.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,s as d}from"./vendor-tanstack-BcZfOOfy.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,du as B,d6 as N}from"./index-_0OOjqn5.js";import{u as g,B as b}from"./use-delete-block-document-confirmation-dialog-CogrfdiO.js";import{B as k}from"./block-type-details-2rIqbqoZ.js";import{D as y}from"./delete-confirmation-dialog-B9-8JHV7.js";import{P as D}from"./python-example-snippet-eWuRXCxE.js";import{c as _}from"./vendor-recharts-BAN776s_.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./dropdown-menu-DF4QR3Cp.js";import"./use-delete-confirmation-dialog-CUdii6Lo.js";import"./block-type-logo-DV1pSkV0.js";import"./lazy-markdown-CKcd9ksG.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-OeCbdPeL.js.map
1
+ import{j as e,r as n,s as d}from"./vendor-tanstack-BcZfOOfy.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,du as B,d6 as N}from"./index-m48E4KcG.js";import{u as g,B as b}from"./use-delete-block-document-confirmation-dialog-Cq5nGhzr.js";import{B as k}from"./block-type-details-Cklc7TkK.js";import{D as y}from"./delete-confirmation-dialog-DHkm2p8m.js";import{P as D}from"./python-example-snippet-DfCFYPN_.js";import{c as _}from"./vendor-recharts-BAN776s_.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./dropdown-menu-0atiOSFo.js";import"./use-delete-confirmation-dialog-CUdii6Lo.js";import"./block-type-logo-Cbpfxded.js";import"./lazy-markdown-Du2Xu3Yp.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-tuz1Bcj2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block._id-OeCbdPeL.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-tuz1Bcj2.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,2 +1,2 @@
1
- import{j as s,d as g,r as b,L as B,s as k}from"./vendor-tanstack-BcZfOOfy.js";import{B as y,g as v,h as c,bs as l,bB as m,bD as _,dO as N,C as S,q as p,y as n,dP as E,d6 as L}from"./index-_0OOjqn5.js";import{B as P}from"./block-type-details-2rIqbqoZ.js";import{u as w,L as C}from"./schema-form-input-string-format-datetime-DrpJmvST.js";import"./toggle-group-Cf-ZSSDP.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./block-type-logo-DV1pSkV0.js";import"./lazy-markdown-CKcd9ksG.js";import"./zod-Cuos7J7w.js";import"./use-debounce-callback-CSs1BjLI.js";import"./timezone-select-qBEoPcyO.js";import"./dropdown-menu-DF4QR3Cp.js";import"./form-DHWphysD.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}=w(),{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(C,{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(P,{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-CD22VllN.js.map
1
+ import{j as s,d as g,r as b,L as B,s as k}from"./vendor-tanstack-BcZfOOfy.js";import{B as y,g as v,h as c,bs as l,bB as m,bD as _,dO as N,C as S,q as p,y as n,dP as E,d6 as L}from"./index-m48E4KcG.js";import{B as P}from"./block-type-details-Cklc7TkK.js";import{u as w,L as C}from"./schema-form-input-string-format-datetime-BSWlW_aQ.js";import"./toggle-group-Cn07UIim.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.js";import"./block-type-logo-Cbpfxded.js";import"./lazy-markdown-Du2Xu3Yp.js";import"./zod-Cuos7J7w.js";import"./use-debounce-callback-CSs1BjLI.js";import"./timezone-select-BuPYznge.js";import"./dropdown-menu-0atiOSFo.js";import"./form-DLrbC7rV.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}=w(),{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(C,{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(P,{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-CFEYhF5R.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block_._id.edit-CD22VllN.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-CFEYhF5R.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,2 +1,2 @@
1
- import{j as s,L as o,s as h,r as c}from"./vendor-tanstack-BcZfOOfy.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-_0OOjqn5.js";import{B as k}from"./block-type-logo-DV1pSkV0.js";import{L as C}from"./lazy-markdown-CKcd9ksG.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.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-Dj7lYV7b.js.map
1
+ import{j as s,L as o,s as h,r as c}from"./vendor-tanstack-BcZfOOfy.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-m48E4KcG.js";import{B as k}from"./block-type-logo-Cbpfxded.js";import{L as C}from"./lazy-markdown-Du2Xu3Yp.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.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-CCPRo7nY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-Dj7lYV7b.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-CCPRo7nY.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,2 +1,2 @@
1
- import{j as s,L as l,s as c}from"./vendor-tanstack-BcZfOOfy.js";import{B as d,g as m,h as t,bs as o,bB as n,C as x,al as i,q as u,dt as p,df as j}from"./index-_0OOjqn5.js";import{B as h}from"./block-type-logo-DV1pSkV0.js";import{P as f}from"./python-example-snippet-eWuRXCxE.js";import{L as g}from"./lazy-markdown-CKcd9ksG.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.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(t,{children:s.jsx(o,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(n,{}),s.jsx(t,{children:s.jsx(o,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),s.jsx(n,{}),s.jsx(t,{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(u,{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}=p.useParams(),{data:a}=c(j(e));return s.jsx(B,{blockType:a})}export{$ as component};
2
- //# sourceMappingURL=catalog_._slug-NLgWS8vG.js.map
1
+ import{j as s,L as l,s as c}from"./vendor-tanstack-BcZfOOfy.js";import{B as d,g as m,h as t,bs as o,bB as n,C as x,al as i,q as u,dt as p,df as j}from"./index-m48E4KcG.js";import{B as h}from"./block-type-logo-Cbpfxded.js";import{P as f}from"./python-example-snippet-DfCFYPN_.js";import{L as g}from"./lazy-markdown-Du2Xu3Yp.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BTiKGWfR.js";import"./vendor-recharts-BAN776s_.js";import"./vendor-forms-ClCIacbh.js";import"./vendor-date-wwuDAncJ.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(t,{children:s.jsx(o,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(n,{}),s.jsx(t,{children:s.jsx(o,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),s.jsx(n,{}),s.jsx(t,{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(u,{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}=p.useParams(),{data:a}=c(j(e));return s.jsx(B,{blockType:a})}export{$ as component};
2
+ //# sourceMappingURL=catalog_._slug-Bl2J2oI3.js.map