prefect 3.6.16.dev5__py3-none-any.whl → 3.6.16.dev6__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 (286) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/cli/__init__.py +1 -0
  3. prefect/cli/cloud/asset.py +135 -0
  4. prefect/server/ui-v2/assets/artifact-card-BnPKAfkY.js +2 -0
  5. prefect/server/ui-v2/assets/artifact-card-BnPKAfkY.js.map +1 -0
  6. prefect/server/ui-v2/assets/artifact._id-vDOuIuta.js +2 -0
  7. prefect/server/ui-v2/assets/artifact._id-vDOuIuta.js.map +1 -0
  8. prefect/server/ui-v2/assets/automation-wizard-RlOhF90R.js +2 -0
  9. prefect/server/ui-v2/assets/automation-wizard-RlOhF90R.js.map +1 -0
  10. prefect/server/ui-v2/assets/automation._id-CEHa-X0X.js +2 -0
  11. prefect/server/ui-v2/assets/{automation._id-CMiura1b.js.map → automation._id-CEHa-X0X.js.map} +1 -1
  12. prefect/server/ui-v2/assets/{automation_._id.edit-Cbfcwa-K.js → automation_._id.edit-BRWAsELa.js} +2 -2
  13. prefect/server/ui-v2/assets/{automation_._id.edit-Cbfcwa-K.js.map → automation_._id.edit-BRWAsELa.js.map} +1 -1
  14. prefect/server/ui-v2/assets/{automations-header-BxPCOE-0.js → automations-header-Dr6v5dPp.js} +2 -2
  15. prefect/server/ui-v2/assets/{automations-header-BxPCOE-0.js.map → automations-header-Dr6v5dPp.js.map} +1 -1
  16. prefect/server/ui-v2/assets/base-job-template-form-section-C8_R96gO.js +2 -0
  17. prefect/server/ui-v2/assets/base-job-template-form-section-C8_R96gO.js.map +1 -0
  18. prefect/server/ui-v2/assets/block-type-details-tAkUWqs1.js +2 -0
  19. prefect/server/ui-v2/assets/block-type-details-tAkUWqs1.js.map +1 -0
  20. prefect/server/ui-v2/assets/block-type-logo-scnMsyY5.js +2 -0
  21. prefect/server/ui-v2/assets/{block-type-logo-DuvU7goV.js.map → block-type-logo-scnMsyY5.js.map} +1 -1
  22. prefect/server/ui-v2/assets/block._id-BY42cyjR.js +2 -0
  23. prefect/server/ui-v2/assets/block._id-BY42cyjR.js.map +1 -0
  24. prefect/server/ui-v2/assets/{block_._id.edit-C4SmoQ4y.js → block_._id.edit-n2jwU5yr.js} +2 -2
  25. prefect/server/ui-v2/assets/{block_._id.edit-C4SmoQ4y.js.map → block_._id.edit-n2jwU5yr.js.map} +1 -1
  26. prefect/server/ui-v2/assets/catalog-5_GoCKpb.js +2 -0
  27. prefect/server/ui-v2/assets/catalog-5_GoCKpb.js.map +1 -0
  28. prefect/server/ui-v2/assets/catalog_._slug-sZvt0fDy.js +2 -0
  29. prefect/server/ui-v2/assets/catalog_._slug-sZvt0fDy.js.map +1 -0
  30. prefect/server/ui-v2/assets/{catalog_._slug_.create-CgKL4TS2.js → catalog_._slug_.create-rboQmoyW.js} +2 -2
  31. prefect/server/ui-v2/assets/{catalog_._slug_.create-CgKL4TS2.js.map → catalog_._slug_.create-rboQmoyW.js.map} +1 -1
  32. prefect/server/ui-v2/assets/{collapsible-DZbPzSgr.js → collapsible-Lk7MRvBH.js} +2 -2
  33. prefect/server/ui-v2/assets/{collapsible-DZbPzSgr.js.map → collapsible-Lk7MRvBH.js.map} +1 -1
  34. prefect/server/ui-v2/assets/concurrency-limit._id-D5i9zZJh.js +2 -0
  35. prefect/server/ui-v2/assets/concurrency-limit._id-D5i9zZJh.js.map +1 -0
  36. prefect/server/ui-v2/assets/create-CtsA2QIl.js +2 -0
  37. prefect/server/ui-v2/assets/{create-BrNwbpVu.js.map → create-CtsA2QIl.js.map} +1 -1
  38. prefect/server/ui-v2/assets/{create-DWgkh2HT.js → create-DJPAEZ93.js} +2 -2
  39. prefect/server/ui-v2/assets/create-DJPAEZ93.js.map +1 -0
  40. prefect/server/ui-v2/assets/{data-table-QSHqmTar.js → data-table-bk-0xKWT.js} +2 -2
  41. prefect/server/ui-v2/assets/{data-table-QSHqmTar.js.map → data-table-bk-0xKWT.js.map} +1 -1
  42. prefect/server/ui-v2/assets/{delete-confirmation-dialog-dLycVNo4.js → delete-confirmation-dialog-BZg9EOfN.js} +2 -2
  43. prefect/server/ui-v2/assets/{delete-confirmation-dialog-dLycVNo4.js.map → delete-confirmation-dialog-BZg9EOfN.js.map} +1 -1
  44. prefect/server/ui-v2/assets/{deployment-action-header-CzvBTL6H.js → deployment-action-header-DwuMPgVg.js} +2 -2
  45. prefect/server/ui-v2/assets/{deployment-action-header-CzvBTL6H.js.map → deployment-action-header-DwuMPgVg.js.map} +1 -1
  46. prefect/server/ui-v2/assets/deployment-form-BpKkzEf2.js +3 -0
  47. prefect/server/ui-v2/assets/deployment-form-BpKkzEf2.js.map +1 -0
  48. prefect/server/ui-v2/assets/{deployment-links-CGjJpxJA.js → deployment-links-B67P-6Ph.js} +2 -2
  49. prefect/server/ui-v2/assets/{deployment-links-CGjJpxJA.js.map → deployment-links-B67P-6Ph.js.map} +1 -1
  50. prefect/server/ui-v2/assets/{deployment._id-DXrb6frJ.js → deployment._id-BVOBfMVf.js} +2 -2
  51. prefect/server/ui-v2/assets/deployment._id-BVOBfMVf.js.map +1 -0
  52. prefect/server/ui-v2/assets/deployment._id-KOMC9fpE.js +2 -0
  53. prefect/server/ui-v2/assets/deployment._id-KOMC9fpE.js.map +1 -0
  54. prefect/server/ui-v2/assets/deployment_._id.duplicate-BPk2SchT.js +2 -0
  55. prefect/server/ui-v2/assets/deployment_._id.duplicate-BPk2SchT.js.map +1 -0
  56. prefect/server/ui-v2/assets/deployment_._id.edit-Dv0M_huv.js +2 -0
  57. prefect/server/ui-v2/assets/deployment_._id.edit-Dv0M_huv.js.map +1 -0
  58. prefect/server/ui-v2/assets/deployment_._id.run-DFVA4Xhx.js +2 -0
  59. prefect/server/ui-v2/assets/{deployment_._id.run-CnacOmhY.js.map → deployment_._id.run-DFVA4Xhx.js.map} +1 -1
  60. prefect/server/ui-v2/assets/{dropdown-menu-B9LKPlz7.js → dropdown-menu-fRiq5bS-.js} +2 -2
  61. prefect/server/ui-v2/assets/{dropdown-menu-B9LKPlz7.js.map → dropdown-menu-fRiq5bS-.js.map} +1 -1
  62. prefect/server/ui-v2/assets/{event-resource-display-B42RIaiX.js → event-resource-display-C1ZAey-o.js} +2 -2
  63. prefect/server/ui-v2/assets/{event-resource-display-B42RIaiX.js.map → event-resource-display-C1ZAey-o.js.map} +1 -1
  64. prefect/server/ui-v2/assets/event._eventDate._eventId-CcbtP9Ag.js +2 -0
  65. prefect/server/ui-v2/assets/{event._eventDate._eventId-CKTuT_8S.js.map → event._eventDate._eventId-CcbtP9Ag.js.map} +1 -1
  66. prefect/server/ui-v2/assets/flow-run-graph-CycKStSg.js +2 -0
  67. prefect/server/ui-v2/assets/flow-run-graph-CycKStSg.js.map +1 -0
  68. prefect/server/ui-v2/assets/{flow-run._id-BKv9Meqc.js → flow-run._id-Dn9R_Tjy.js} +2 -2
  69. prefect/server/ui-v2/assets/flow-run._id-Dn9R_Tjy.js.map +1 -0
  70. prefect/server/ui-v2/assets/{flow-run._id-ZTkjj6bM.js → flow-run._id-Dwx7ojcj.js} +2 -2
  71. prefect/server/ui-v2/assets/flow-run._id-Dwx7ojcj.js.map +1 -0
  72. prefect/server/ui-v2/assets/flow-run._id-YzRd5jrC.js +4 -0
  73. prefect/server/ui-v2/assets/flow-run._id-YzRd5jrC.js.map +1 -0
  74. prefect/server/ui-v2/assets/flow-runs-pagination-DMLZFM1m.js +2 -0
  75. prefect/server/ui-v2/assets/flow-runs-pagination-DMLZFM1m.js.map +1 -0
  76. prefect/server/ui-v2/assets/flow._id-V6-Qhkwk.js +2 -0
  77. prefect/server/ui-v2/assets/flow._id-V6-Qhkwk.js.map +1 -0
  78. prefect/server/ui-v2/assets/{form-DOdmIC3A.js → form-Cl5Hk9bq.js} +2 -2
  79. prefect/server/ui-v2/assets/{form-DOdmIC3A.js.map → form-Cl5Hk9bq.js.map} +1 -1
  80. prefect/server/ui-v2/assets/{header-DcIuN5UN.js → header-BuI436ik.js} +2 -2
  81. prefect/server/ui-v2/assets/{header-DcIuN5UN.js.map → header-BuI436ik.js.map} +1 -1
  82. prefect/server/ui-v2/assets/{header-CnBwASd-.js → header-DcAQCxQl.js} +2 -2
  83. prefect/server/ui-v2/assets/{header-CnBwASd-.js.map → header-DcAQCxQl.js.map} +1 -1
  84. prefect/server/ui-v2/assets/{header-DxE-NzAK.js → header-qlcK4NLD.js} +2 -2
  85. prefect/server/ui-v2/assets/{header-DxE-NzAK.js.map → header-qlcK4NLD.js.map} +1 -1
  86. prefect/server/ui-v2/assets/index--Z69UYXV.js +2 -0
  87. prefect/server/ui-v2/assets/index--Z69UYXV.js.map +1 -0
  88. prefect/server/ui-v2/assets/{index-D0R9_LIL.js → index-BO4Qqsm8.js} +2 -2
  89. prefect/server/ui-v2/assets/index-BO4Qqsm8.js.map +1 -0
  90. prefect/server/ui-v2/assets/index-Bg45XS_V.js +2 -0
  91. prefect/server/ui-v2/assets/index-Bg45XS_V.js.map +1 -0
  92. prefect/server/ui-v2/assets/{index-BIBIJufF.js → index-BleYpDoN.js} +2 -2
  93. prefect/server/ui-v2/assets/index-BleYpDoN.js.map +1 -0
  94. prefect/server/ui-v2/assets/{index-DyOAqIOp.js → index-C63VUjOh.js} +2 -2
  95. prefect/server/ui-v2/assets/{index-DyOAqIOp.js.map → index-C63VUjOh.js.map} +1 -1
  96. prefect/server/ui-v2/assets/{index-DfKXdmko.js → index-C6LgWyJb.js} +2 -2
  97. prefect/server/ui-v2/assets/index-C6LgWyJb.js.map +1 -0
  98. prefect/server/ui-v2/assets/index-CE-bVgqj.js +2 -0
  99. prefect/server/ui-v2/assets/{index-DlAHvqFx.js.map → index-CE-bVgqj.js.map} +1 -1
  100. prefect/server/ui-v2/assets/{index-V_xTKaEb.js → index-CPpeVt8m.js} +13 -13
  101. prefect/server/ui-v2/assets/index-CPpeVt8m.js.map +1 -0
  102. prefect/server/ui-v2/assets/index-CYaUe0Ym.js +2 -0
  103. prefect/server/ui-v2/assets/index-CYaUe0Ym.js.map +1 -0
  104. prefect/server/ui-v2/assets/{index-C5RMFRyZ.js → index-Clbms0kg.js} +2 -2
  105. prefect/server/ui-v2/assets/index-Clbms0kg.js.map +1 -0
  106. prefect/server/ui-v2/assets/index-D13YFoYA.js +2 -0
  107. prefect/server/ui-v2/assets/index-D13YFoYA.js.map +1 -0
  108. prefect/server/ui-v2/assets/{index-Cx1qEoCK.js → index-D73a_nGu.js} +2 -2
  109. prefect/server/ui-v2/assets/{index-Cx1qEoCK.js.map → index-D73a_nGu.js.map} +1 -1
  110. prefect/server/ui-v2/assets/index-DJXBzX1E.css +1 -0
  111. prefect/server/ui-v2/assets/{index-BO60ehN6.js → index-DPPPaOr_.js} +2 -2
  112. prefect/server/ui-v2/assets/index-DPPPaOr_.js.map +1 -0
  113. prefect/server/ui-v2/assets/{index-DP8W-xJo.js → index-DU9ShbqW.js} +2 -2
  114. prefect/server/ui-v2/assets/index-DU9ShbqW.js.map +1 -0
  115. prefect/server/ui-v2/assets/index-DdR1lzZk.js +2 -0
  116. prefect/server/ui-v2/assets/index-DdR1lzZk.js.map +1 -0
  117. prefect/server/ui-v2/assets/{index-B9ttjsyu.js → index-ELo08q04.js} +2 -2
  118. prefect/server/ui-v2/assets/{index-B9ttjsyu.js.map → index-ELo08q04.js.map} +1 -1
  119. prefect/server/ui-v2/assets/{index-BTL1xHS9.js → index-cp6PTdHp.js} +2 -2
  120. prefect/server/ui-v2/assets/{index-BTL1xHS9.js.map → index-cp6PTdHp.js.map} +1 -1
  121. prefect/server/ui-v2/assets/{index-D6G96ToY.js → index-kM_g8J0u.js} +2 -2
  122. prefect/server/ui-v2/assets/{index-D6G96ToY.js.map → index-kM_g8J0u.js.map} +1 -1
  123. prefect/server/ui-v2/assets/{index-q5Y3hlDT.js → index-mYcm9Rkr.js} +2 -2
  124. prefect/server/ui-v2/assets/index-mYcm9Rkr.js.map +1 -0
  125. prefect/server/ui-v2/assets/{index-D9cOtoSU.js → index-yavn_NBp.js} +2 -2
  126. prefect/server/ui-v2/assets/index-yavn_NBp.js.map +1 -0
  127. prefect/server/ui-v2/assets/{json-input-YKJMJCcT.js → json-input-iUzf6BvZ.js} +2 -2
  128. prefect/server/ui-v2/assets/{json-input-YKJMJCcT.js.map → json-input-iUzf6BvZ.js.map} +1 -1
  129. prefect/server/ui-v2/assets/{key-value-RPUUqQ6F.js → key-value-DI27Dv4P.js} +2 -2
  130. prefect/server/ui-v2/assets/{key-value-RPUUqQ6F.js.map → key-value-DI27Dv4P.js.map} +1 -1
  131. prefect/server/ui-v2/assets/key._key-C-nk2nld.js +2 -0
  132. prefect/server/ui-v2/assets/key._key-C-nk2nld.js.map +1 -0
  133. prefect/server/ui-v2/assets/{lazy-markdown-B9vEkJ0h.js → lazy-markdown-D_y73qoD.js} +2 -2
  134. prefect/server/ui-v2/assets/{lazy-markdown-B9vEkJ0h.js.map → lazy-markdown-D_y73qoD.js.map} +1 -1
  135. prefect/server/ui-v2/assets/{login-C3PhSGQJ.js → login-DR_xuMmg.js} +2 -2
  136. prefect/server/ui-v2/assets/{login-C3PhSGQJ.js.map → login-DR_xuMmg.js.map} +1 -1
  137. prefect/server/ui-v2/assets/{markdown-input-Dei7u1qp.js → markdown-input-hzlzpUdj.js} +2 -2
  138. prefect/server/ui-v2/assets/{markdown-input-Dei7u1qp.js.map → markdown-input-hzlzpUdj.js.map} +1 -1
  139. prefect/server/ui-v2/assets/{python-example-snippet-DvulFxgw.js → python-example-snippet-d8bTNJ0J.js} +3 -3
  140. prefect/server/ui-v2/assets/{python-example-snippet-DvulFxgw.js.map → python-example-snippet-d8bTNJ0J.js.map} +1 -1
  141. prefect/server/ui-v2/assets/{python-input-niCawr8m.js → python-input-Bxdnzvx3.js} +2 -2
  142. prefect/server/ui-v2/assets/{python-input-niCawr8m.js.map → python-input-Bxdnzvx3.js.map} +1 -1
  143. prefect/server/ui-v2/assets/{radio-group-D55TQZsk.js → radio-group-0oOEMJCS.js} +2 -2
  144. prefect/server/ui-v2/assets/{radio-group-D55TQZsk.js.map → radio-group-0oOEMJCS.js.map} +1 -1
  145. prefect/server/ui-v2/assets/{route-error-state-Cu4m0LTX.js → route-error-state-BqbnZCc-.js} +2 -2
  146. prefect/server/ui-v2/assets/{route-error-state-Cu4m0LTX.js.map → route-error-state-BqbnZCc-.js.map} +1 -1
  147. prefect/server/ui-v2/assets/{schema-form-BQAcWW5k.js → schema-form-BD-WM4S0.js} +2 -2
  148. prefect/server/ui-v2/assets/{schema-form-BQAcWW5k.js.map → schema-form-BD-WM4S0.js.map} +1 -1
  149. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-Cb4sTJle.js → schema-form-input-string-format-datetime-Dg3zVAp5.js} +4 -4
  150. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-Cb4sTJle.js.map → schema-form-input-string-format-datetime-Dg3zVAp5.js.map} +1 -1
  151. prefect/server/ui-v2/assets/{settings-DV4ewZ_4.js → settings-Dm6yMLix.js} +2 -2
  152. prefect/server/ui-v2/assets/{settings-DV4ewZ_4.js.map → settings-Dm6yMLix.js.map} +1 -1
  153. prefect/server/ui-v2/assets/{sort-filter-DY7vgl7C.js → sort-filter-X6JyRc0-.js} +2 -2
  154. prefect/server/ui-v2/assets/{sort-filter-DY7vgl7C.js.map → sort-filter-X6JyRc0-.js.map} +1 -1
  155. prefect/server/ui-v2/assets/{table-ChOwO4Pk.js → table-Xyel2BEw.js} +2 -2
  156. prefect/server/ui-v2/assets/{table-ChOwO4Pk.js.map → table-Xyel2BEw.js.map} +1 -1
  157. prefect/server/ui-v2/assets/{tags-input-2KSBvO_K.js → tags-input-DqZ8v99z.js} +2 -2
  158. prefect/server/ui-v2/assets/{tags-input-2KSBvO_K.js.map → tags-input-DqZ8v99z.js.map} +1 -1
  159. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CNrP9yPQ.js → task-run-concurrency-limits-reset-dialog-5xFWeoYy.js} +2 -2
  160. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CNrP9yPQ.js.map → task-run-concurrency-limits-reset-dialog-5xFWeoYy.js.map} +1 -1
  161. prefect/server/ui-v2/assets/{task-run._id-cqXH0PMU.js → task-run._id-9DcrUEGz.js} +3 -3
  162. prefect/server/ui-v2/assets/{task-run._id-cqXH0PMU.js.map → task-run._id-9DcrUEGz.js.map} +1 -1
  163. prefect/server/ui-v2/assets/{task-run._id-CQGeAiBh.js → task-run._id-DJkoLl_e.js} +2 -2
  164. prefect/server/ui-v2/assets/task-run._id-DJkoLl_e.js.map +1 -0
  165. prefect/server/ui-v2/assets/task-runs-pagination-B2fSdB1t.js +2 -0
  166. prefect/server/ui-v2/assets/task-runs-pagination-B2fSdB1t.js.map +1 -0
  167. prefect/server/ui-v2/assets/{textarea-9v5uTuxg.js → textarea-DFEOJJdc.js} +2 -2
  168. prefect/server/ui-v2/assets/{textarea-9v5uTuxg.js.map → textarea-DFEOJJdc.js.map} +1 -1
  169. prefect/server/ui-v2/assets/{timezone-select-DPtR_b06.js → timezone-select-NViFNNLz.js} +2 -2
  170. prefect/server/ui-v2/assets/{timezone-select-DPtR_b06.js.map → timezone-select-NViFNNLz.js.map} +1 -1
  171. prefect/server/ui-v2/assets/{toggle-group-CBJphTE6.js → toggle-group-EMgSOoYH.js} +2 -2
  172. prefect/server/ui-v2/assets/{toggle-group-CBJphTE6.js.map → toggle-group-EMgSOoYH.js.map} +1 -1
  173. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-BHgDXlwg.js +2 -0
  174. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-BHgDXlwg.js.map +1 -0
  175. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BYY1b8yH.js → use-delete-block-document-confirmation-dialog-CxRkBKPg.js} +2 -2
  176. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BYY1b8yH.js.map → use-delete-block-document-confirmation-dialog-CxRkBKPg.js.map} +1 -1
  177. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-Ck8nwx2q.js +2 -0
  178. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-Ck8nwx2q.js.map +1 -0
  179. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BOTU5FPq.js → use-get-artifacts-flow-task-runs-D7Djt53s.js} +2 -2
  180. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BOTU5FPq.js.map → use-get-artifacts-flow-task-runs-D7Djt53s.js.map} +1 -1
  181. prefect/server/ui-v2/assets/{use-quick-run-DzSmbSlu.js → use-quick-run-Cpy0t7dX.js} +2 -2
  182. prefect/server/ui-v2/assets/{use-quick-run-DzSmbSlu.js.map → use-quick-run-Cpy0t7dX.js.map} +1 -1
  183. prefect/server/ui-v2/assets/{use-state-favicon-UFxhmhHr.js → use-state-favicon-CMsL9s6j.js} +2 -2
  184. prefect/server/ui-v2/assets/{use-state-favicon-UFxhmhHr.js.map → use-state-favicon-CMsL9s6j.js.map} +1 -1
  185. prefect/server/ui-v2/assets/use-stepper-CZZEx5js.js +2 -0
  186. prefect/server/ui-v2/assets/use-stepper-CZZEx5js.js.map +1 -0
  187. prefect/server/ui-v2/assets/{utilities-2FfCfMAV.js → utilities-D9BfvLg5.js} +2 -2
  188. prefect/server/ui-v2/assets/{utilities-2FfCfMAV.js.map → utilities-D9BfvLg5.js.map} +1 -1
  189. prefect/server/ui-v2/assets/work-pool-filter-dsJ6xeK6.js +2 -0
  190. prefect/server/ui-v2/assets/work-pool-filter-dsJ6xeK6.js.map +1 -0
  191. prefect/server/ui-v2/assets/{work-pool-queue-toggle-zSWhEFap.js → work-pool-queue-toggle-f_-cTWxB.js} +2 -2
  192. prefect/server/ui-v2/assets/{work-pool-queue-toggle-zSWhEFap.js.map → work-pool-queue-toggle-f_-cTWxB.js.map} +1 -1
  193. prefect/server/ui-v2/assets/{work-pool._workPoolName-BwIVfCIe.js → work-pool._workPoolName-zBqgkYLT.js} +2 -2
  194. prefect/server/ui-v2/assets/{work-pool._workPoolName-BwIVfCIe.js.map → work-pool._workPoolName-zBqgkYLT.js.map} +1 -1
  195. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-j7cjgoJp.js → work-pool_._workPoolName.edit-B-8_CnfA.js} +2 -2
  196. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-j7cjgoJp.js.map → work-pool_._workPoolName.edit-B-8_CnfA.js.map} +1 -1
  197. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BlFjSdoB.js → work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.js} +2 -2
  198. prefect/server/ui-v2/assets/work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.js.map +1 -0
  199. prefect/server/ui-v2/assets/{work-queue-icon-text-vWlRNW-b.js → work-queue-icon-text-BqqQ413o.js} +2 -2
  200. prefect/server/ui-v2/assets/{work-queue-icon-text-vWlRNW-b.js.map → work-queue-icon-text-BqqQ413o.js.map} +1 -1
  201. prefect/server/ui-v2/index.html +2 -2
  202. prefect/task_engine.py +26 -12
  203. prefect/workers/base.py +18 -1
  204. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev6.dist-info}/METADATA +1 -1
  205. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev6.dist-info}/RECORD +208 -207
  206. prefect/server/ui-v2/assets/artifact-card-DQfjRA2u.js +0 -2
  207. prefect/server/ui-v2/assets/artifact-card-DQfjRA2u.js.map +0 -1
  208. prefect/server/ui-v2/assets/artifact._id-BBhuX3px.js +0 -2
  209. prefect/server/ui-v2/assets/artifact._id-BBhuX3px.js.map +0 -1
  210. prefect/server/ui-v2/assets/automation-wizard-DeT-tz5i.js +0 -2
  211. prefect/server/ui-v2/assets/automation-wizard-DeT-tz5i.js.map +0 -1
  212. prefect/server/ui-v2/assets/automation._id-CMiura1b.js +0 -2
  213. prefect/server/ui-v2/assets/base-job-template-form-section-MeO0M71Y.js +0 -2
  214. prefect/server/ui-v2/assets/base-job-template-form-section-MeO0M71Y.js.map +0 -1
  215. prefect/server/ui-v2/assets/block-type-details-Bcb9qEO8.js +0 -2
  216. prefect/server/ui-v2/assets/block-type-details-Bcb9qEO8.js.map +0 -1
  217. prefect/server/ui-v2/assets/block-type-logo-DuvU7goV.js +0 -2
  218. prefect/server/ui-v2/assets/block._id-DFR6zmOy.js +0 -2
  219. prefect/server/ui-v2/assets/block._id-DFR6zmOy.js.map +0 -1
  220. prefect/server/ui-v2/assets/catalog-CPzaK8QS.js +0 -2
  221. prefect/server/ui-v2/assets/catalog-CPzaK8QS.js.map +0 -1
  222. prefect/server/ui-v2/assets/catalog_._slug-60h4tERz.js +0 -2
  223. prefect/server/ui-v2/assets/catalog_._slug-60h4tERz.js.map +0 -1
  224. prefect/server/ui-v2/assets/concurrency-limit._id-BFfR6_U0.js +0 -2
  225. prefect/server/ui-v2/assets/concurrency-limit._id-BFfR6_U0.js.map +0 -1
  226. prefect/server/ui-v2/assets/create-BrNwbpVu.js +0 -2
  227. prefect/server/ui-v2/assets/create-DWgkh2HT.js.map +0 -1
  228. prefect/server/ui-v2/assets/deployment-form-B33C7F2u.js +0 -3
  229. prefect/server/ui-v2/assets/deployment-form-B33C7F2u.js.map +0 -1
  230. prefect/server/ui-v2/assets/deployment._id-5rPcPD0T.js +0 -2
  231. prefect/server/ui-v2/assets/deployment._id-5rPcPD0T.js.map +0 -1
  232. prefect/server/ui-v2/assets/deployment._id-DXrb6frJ.js.map +0 -1
  233. prefect/server/ui-v2/assets/deployment_._id.duplicate-D7YLydeq.js +0 -2
  234. prefect/server/ui-v2/assets/deployment_._id.duplicate-D7YLydeq.js.map +0 -1
  235. prefect/server/ui-v2/assets/deployment_._id.edit-Daq0J0Ow.js +0 -2
  236. prefect/server/ui-v2/assets/deployment_._id.edit-Daq0J0Ow.js.map +0 -1
  237. prefect/server/ui-v2/assets/deployment_._id.run-CnacOmhY.js +0 -2
  238. prefect/server/ui-v2/assets/event._eventDate._eventId-CKTuT_8S.js +0 -2
  239. prefect/server/ui-v2/assets/flow-run-graph-OrT2Osbu.js +0 -2
  240. prefect/server/ui-v2/assets/flow-run-graph-OrT2Osbu.js.map +0 -1
  241. prefect/server/ui-v2/assets/flow-run._id-BKv9Meqc.js.map +0 -1
  242. prefect/server/ui-v2/assets/flow-run._id-DCYAnq0D.js +0 -4
  243. prefect/server/ui-v2/assets/flow-run._id-DCYAnq0D.js.map +0 -1
  244. prefect/server/ui-v2/assets/flow-run._id-ZTkjj6bM.js.map +0 -1
  245. prefect/server/ui-v2/assets/flow-runs-pagination-CykMKOhv.js +0 -2
  246. prefect/server/ui-v2/assets/flow-runs-pagination-CykMKOhv.js.map +0 -1
  247. prefect/server/ui-v2/assets/flow._id-DhrxqQmD.js +0 -2
  248. prefect/server/ui-v2/assets/flow._id-DhrxqQmD.js.map +0 -1
  249. prefect/server/ui-v2/assets/index-BIBIJufF.js.map +0 -1
  250. prefect/server/ui-v2/assets/index-BO60ehN6.js.map +0 -1
  251. prefect/server/ui-v2/assets/index-BS7fbJ2s.js +0 -2
  252. prefect/server/ui-v2/assets/index-BS7fbJ2s.js.map +0 -1
  253. prefect/server/ui-v2/assets/index-C5RMFRyZ.js.map +0 -1
  254. prefect/server/ui-v2/assets/index-D0R9_LIL.js.map +0 -1
  255. prefect/server/ui-v2/assets/index-D9cOtoSU.js.map +0 -1
  256. prefect/server/ui-v2/assets/index-DEpWUeaO.js +0 -2
  257. prefect/server/ui-v2/assets/index-DEpWUeaO.js.map +0 -1
  258. prefect/server/ui-v2/assets/index-DP8W-xJo.js.map +0 -1
  259. prefect/server/ui-v2/assets/index-DfKXdmko.js.map +0 -1
  260. prefect/server/ui-v2/assets/index-DiVKp6rW.js +0 -2
  261. prefect/server/ui-v2/assets/index-DiVKp6rW.js.map +0 -1
  262. prefect/server/ui-v2/assets/index-DlAHvqFx.js +0 -2
  263. prefect/server/ui-v2/assets/index-VNFzALsC.js +0 -2
  264. prefect/server/ui-v2/assets/index-VNFzALsC.js.map +0 -1
  265. prefect/server/ui-v2/assets/index-V_xTKaEb.js.map +0 -1
  266. prefect/server/ui-v2/assets/index-WIq8QUNT.js +0 -2
  267. prefect/server/ui-v2/assets/index-WIq8QUNT.js.map +0 -1
  268. prefect/server/ui-v2/assets/index-m9O-nIOl.css +0 -1
  269. prefect/server/ui-v2/assets/index-q5Y3hlDT.js.map +0 -1
  270. prefect/server/ui-v2/assets/key._key-CX8FwfwL.js +0 -2
  271. prefect/server/ui-v2/assets/key._key-CX8FwfwL.js.map +0 -1
  272. prefect/server/ui-v2/assets/task-run._id-CQGeAiBh.js.map +0 -1
  273. prefect/server/ui-v2/assets/task-runs-pagination-CYoOghEN.js +0 -2
  274. prefect/server/ui-v2/assets/task-runs-pagination-CYoOghEN.js.map +0 -1
  275. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-DZplMJDW.js +0 -2
  276. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-DZplMJDW.js.map +0 -1
  277. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-1YE-VIgM.js +0 -2
  278. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-1YE-VIgM.js.map +0 -1
  279. prefect/server/ui-v2/assets/use-stepper-CnGJHRLP.js +0 -2
  280. prefect/server/ui-v2/assets/use-stepper-CnGJHRLP.js.map +0 -1
  281. prefect/server/ui-v2/assets/work-pool-filter-CGfXNujK.js +0 -2
  282. prefect/server/ui-v2/assets/work-pool-filter-CGfXNujK.js.map +0 -1
  283. prefect/server/ui-v2/assets/work-pool_._workPoolName.queue._workQueueName-BlFjSdoB.js.map +0 -1
  284. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev6.dist-info}/WHEEL +0 -0
  285. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev6.dist-info}/entry_points.txt +0 -0
  286. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev6.dist-info}/licenses/LICENSE +0 -0
@@ -1,2 +0,0 @@
1
- import{s as n,j as t}from"./vendor-tanstack-BdLtprmr.js";import{da as m,B as l,g as c,h as s,bw as u,bF as d,bH as x,dy as j}from"./index-V_xTKaEb.js";import{D as p}from"./delete-confirmation-dialog-dLycVNo4.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-DZplMJDW.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-forms-BlFSCfFw.js";import"./vendor-date-Cl1Jav-N.js";import"./work-queue-icon-text-vWlRNW-b.js";import"./index-B9ttjsyu.js";import"./dropdown-menu-B9LKPlz7.js";import"./use-delete-confirmation-dialog-CkL-rSsp.js";const N=({id:a})=>{const[o,i]=f(),{data:e}=n(m(a)),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(B,{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})]})},B=({automation:a})=>t.jsx(l,{children:t.jsxs(c,{children:[t.jsx(s,{children:t.jsx(u,{to:"/automations",className:"text-xl font-semibold",children:"Automations"})}),t.jsx(d,{}),t.jsx(s,{className:"text-xl font-semibold",children:t.jsx(x,{children:a.name})})]})});function k(){const{id:a}=j.useParams();return t.jsx(N,{id:a})}export{k as component};
2
- //# sourceMappingURL=automation._id-CMiura1b.js.map
@@ -1,2 +0,0 @@
1
- import{r as o,j as e}from"./vendor-tanstack-BdLtprmr.js";import{a as O,b as w}from"./schema-form-input-string-format-datetime-Cb4sTJle.js";import{SchemaForm as E}from"./schema-form-BQAcWW5k.js";import{ap as V,aA as k,aB as T,aC as j,aD as f,C as i,o as d,bA as u,i as F,L as J}from"./index-V_xTKaEb.js";function M({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]=w([]),N=o.useCallback(r=>{if(p(r),!s?.properties)return;const a={...n,variables:{...s,properties:Object.fromEntries(Object.entries(s.properties).map(([t,C])=>[t,{...C,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{M as B};
2
- //# sourceMappingURL=base-job-template-form-section-MeO0M71Y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-job-template-form-section-MeO0M71Y.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":"+SAmBO,SAASA,EAA2B,CAC1C,gBAAAC,EACA,wBAAAC,CACD,EAAoC,CACnC,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,IAC1C,KAAK,UAAUJ,GAAmB,CAAA,EAAI,KAAM,CAAC,CAAA,EAExC,CAACK,EAAWC,CAAY,EAAIF,EAAAA,SAAwB,IAAI,EAExDG,EAAkBC,EAAAA,QAAyC,IACzDR,GAAiB,UACtB,CAACA,GAAiB,SAAS,CAAC,EAEzBS,EAAsBD,EAAAA,QAAQ,IAElCD,GAAiB,YACjB,OAAO,KAAKA,EAAgB,UAAU,EAAE,OAAS,EAEhD,CAACA,GAAiB,UAAU,CAAC,EAG1BG,EAAgBF,EAAAA,QAA0B,IAAM,CACrD,GAAI,CAACD,GAAiB,WAAY,MAAO,CAAA,EAEzC,MAAMI,EAA6B,CAAA,EACnC,cAAO,QAAQJ,EAAgB,UAAU,EAAE,QAAQ,CAAC,CAACK,EAAKC,CAAQ,IAAM,CACnEA,GAAY,OAAOA,GAAa,UAAY,YAAaA,IAC5DF,EAASC,CAAG,EAAIC,EAAS,QAE3B,CAAC,EACMF,CACR,EAAG,CAACJ,GAAiB,UAAU,CAAC,EAE1B,CAACO,EAAcC,CAAe,EAAIC,EAAoBN,CAAa,EACnE,CAACO,CAAY,EAAIC,EAAoB,EAAE,EAEvCC,EAA2BC,EAAAA,YAC/BC,GAA6B,CAG7B,GAFAN,EAAgBM,CAAM,EAElB,CAACd,GAAiB,WAAY,OAGlC,MAAMe,EAAqC,CAC1C,GAAGtB,EACH,UAAW,CACV,GAAGO,EACH,WAAY,OAAO,YAClB,OAAO,QAAQA,EAAgB,UAAU,EAAE,IAC1C,CAAC,CAACK,EAAKC,CAAQ,IAAM,CACpBD,EACA,CACC,GAAGC,EACH,QAASQ,EAAOT,CAAG,CAAA,CACpB,CACD,CACD,CACD,CACD,EAGDX,EAAwBqB,CAAW,EACnCnB,EAAa,KAAK,UAAUmB,EAAa,KAAM,CAAC,CAAC,CAClD,EACA,CACCtB,EACAO,EACAN,EACAc,CAAA,CACD,EAGKQ,EAAmBH,EAAAA,YACvBI,GAAkB,CAClBrB,EAAaqB,CAAK,EAClBlB,EAAa,IAAI,EAEjB,GAAI,CACH,MAAMmB,EAAS,KAAK,MAAMD,CAAK,EAC/BvB,EAAwBwB,CAAM,CAC/B,OAASC,EAAO,CACfpB,EAAaoB,aAAiB,MAAQA,EAAM,QAAU,cAAc,CACrE,CACD,EACA,CAACzB,CAAuB,CAAA,EAGzB,OACC0B,EAAAA,KAAC,MAAA,CAAI,UAAU,YACd,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAW,QAAQ,KAAK,SAAA,oBAAiB,EAE1CF,EAAAA,KAACG,EAAA,CAAK,aAAa,WAAW,UAAU,SACvC,SAAA,CAAAH,OAACI,EAAA,CACA,SAAA,CAAAH,EAAAA,IAACI,EAAA,CAAY,MAAM,WAAW,SAAA,WAAQ,EACtCJ,EAAAA,IAACI,EAAA,CAAY,MAAM,WAAW,SAAA,UAAA,CAAQ,CAAA,EACvC,QAECC,EAAA,CAAY,MAAM,WAAW,UAAU,YACtC,WACAN,EAAAA,KAAAO,EAAAA,SAAA,CACC,SAAA,CAAAN,EAAAA,IAACO,GACA,SAAAP,EAAAA,IAACQ,EAAA,CACA,eAACC,EAAA,CAAgB,SAAA,uHAAA,CAGjB,EACD,CAAA,CACD,EAEC9B,GACAqB,EAAAA,IAACU,EAAA,CACA,OAAQ/B,EACR,MAAO,CAAC,MAAM,EACd,OAAQO,EACR,eAAgBK,EAChB,OAAQF,CAAA,CAAA,CACT,CAAA,CAEF,EAEAW,EAAAA,IAACO,EAAA,CACA,SAAAP,EAAAA,IAACQ,EAAA,CACA,gBAACC,EAAA,CAAgB,SAAA,CAAA,4IAGWT,EAAAA,IAAC,UAAO,SAAA,UAAA,CAAQ,EAAS,OAAA,EACrD,CAAA,CACD,EACD,EAEF,EAEAD,EAAAA,KAACM,EAAA,CAAY,MAAM,WAAW,UAAU,YACvC,SAAA,CAAAL,EAAAA,IAACO,EAAA,CACA,SAAAP,MAACQ,EAAA,CACA,SAAAT,EAAAA,KAACU,EAAA,CAAgB,SAAA,CAAA,8OAKf,KAAA,EAAG,QACH,KAAA,EAAG,EAAE,+FAAA,CAAA,CAGP,EACD,EACD,EAEAV,EAAAA,KAAC,MAAA,CAAI,UAAU,YACd,SAAA,CAAAC,EAAAA,IAACW,GAAM,SAAA,wBAAA,CAAsB,EAC7BX,EAAAA,IAACY,EAAA,CACA,MAAOtC,EACP,SAAUqB,EACV,UAAWlB,EAAY,qBAAuB,EAAA,CAAA,EAE9CA,GACAuB,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA4B,SAAAvB,CAAA,CAAU,CAAA,CAAA,CAErD,CAAA,CAAA,CACD,CAAA,CAAA,CACD,CAAA,EACD,CAEF"}
@@ -1,2 +0,0 @@
1
- import{j as s}from"./vendor-tanstack-BdLtprmr.js";import{B as o}from"./block-type-logo-DuvU7goV.js";import{C as a,ap as e}from"./index-V_xTKaEb.js";import{L as i}from"./lazy-markdown-B9vEkJ0h.js";function p({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{p as B};
2
- //# sourceMappingURL=block-type-details-Bcb9qEO8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-type-details-Bcb9qEO8.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 +0,0 @@
1
- import{j as e}from"./vendor-tanstack-BdLtprmr.js";import{cE as a}from"./index-V_xTKaEb.js";const c=({alt:o,logoUrl:s,size:r="sm"})=>e.jsx("img",{alt:o,src:s??void 0,className:i({size:r})}),i=a("border border-border bg-muted rounded",{variants:{size:{sm:"size-8",lg:"size-14"}}});export{c as B};
2
- //# sourceMappingURL=block-type-logo-DuvU7goV.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,r as n,s as d}from"./vendor-tanstack-BdLtprmr.js";import{B as x,g as p,h as c,bw as u,bF as h,C as f,ap as m,bE as j,dx as N,d9 as g}from"./index-V_xTKaEb.js";import{u as B,B as b}from"./use-delete-block-document-confirmation-dialog-BYY1b8yH.js";import{B as k}from"./block-type-details-Bcb9qEO8.js";import{D as y}from"./delete-confirmation-dialog-dLycVNo4.js";import{P as D}from"./python-example-snippet-DvulFxgw.js";import{c as _}from"./vendor-recharts-CY3PKigC.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-forms-BlFSCfFw.js";import"./vendor-date-Cl1Jav-N.js";import"./dropdown-menu-B9LKPlz7.js";import"./use-delete-confirmation-dialog-CkL-rSsp.js";import"./block-type-logo-DuvU7goV.js";import"./lazy-markdown-B9vEkJ0h.js";const v=({blockName:s})=>e.jsx(x,{children:e.jsxs(p,{children:[e.jsx(c,{children:e.jsx(u,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(h,{}),e.jsx(c,{className:"text-xl font-semibold",children:s})]})});function S({data:s,fields:t}){const r=n.useMemo(()=>{let l={};return"properties"in t&&(l=t.properties),Object.keys(l).map(a=>{let o=a;const i=l[a];return i.title&&(o=i.title),{label:o,value:s[a]?JSON.stringify(s[a],null,2):null}})},[s,t]);return e.jsx("dl",{className:"flex flex-col gap-2 p-2 text-xs",children:r.map(({label:l,value:a})=>e.jsxs(n.Fragment,{children:[e.jsx("dt",{className:"text-gray-500 text-sm",children:l}),e.jsx("dd",{className:_("text-base",!a&&"text-gray-500 "),children:a??"None"})]},l))})}const C=({blockDocument:s})=>{const[t,r]=B(),l=()=>r(s,{shouldNavigate:!0}),{block_type:a}=s,o=s.name??s.block_type_name??"Block Document";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(v,{blockName:o}),e.jsx(b,{blockDocument:s,onDelete:l})]}),e.jsx(f,{className:"p-4",children:e.jsxs("div",{className:"grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[(a?.code_example||a?.documentation_url)&&e.jsx(P,{hasCodeExample:!!a?.code_example,hasDocumentationUrl:!!a?.documentation_url}),a?.code_example&&e.jsx(D,{codeExample:a.code_example,name:s.name}),s.data&&s.block_schema?.fields&&e.jsx(S,{data:s.data,fields:s.block_schema?.fields})]}),a&&e.jsx(k,{blockType:a})]})})]}),e.jsx(y,{...t})]})};function P({hasCodeExample:s,hasDocumentationUrl:t}){return e.jsxs("div",{className:"flex items-center gap-1",children:[s&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Paste this snippet"," ",e.jsx("span",{className:"font-semibold",children:"into your flows"})," to use this block."]}),t&&e.jsxs(m,{variant:"bodySmall",className:"muted",children:["Need help?"," ",e.jsx("a",{className:"underline text-blue-600 hover:text-blue-800 visited:text-purple-600",href:j["blocks-guide"],children:"View Docs"})]})]})}function K(){const{id:s}=N.useParams(),{data:t}=d(g(s));return e.jsx(C,{blockDocument:t})}export{K as component};
2
- //# sourceMappingURL=block._id-DFR6zmOy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block._id-DFR6zmOy.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 +0,0 @@
1
- import{j as s,L as o,s as h,r as c}from"./vendor-tanstack-BdLtprmr.js";import{C as m,ap as t,q as i,U as g,V as j,bE as p,B as f,g as v,h as n,bw as b,bF as N,bq as B,bG as d}from"./index-V_xTKaEb.js";import{B as k}from"./block-type-logo-DuvU7goV.js";import{L as C}from"./lazy-markdown-B9vEkJ0h.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-forms-BlFSCfFw.js";import"./vendor-date-Cl1Jav-N.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 P(){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{P as component};
2
- //# sourceMappingURL=catalog-CPzaK8QS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog-CPzaK8QS.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 +0,0 @@
1
- import{j as s,L as l,s as c}from"./vendor-tanstack-BdLtprmr.js";import{B as d,g as m,h as o,bw as t,bF as i,C as x,ap as n,q as p,dw as u,di as j}from"./index-V_xTKaEb.js";import{B as h}from"./block-type-logo-DuvU7goV.js";import{P as f}from"./python-example-snippet-DvulFxgw.js";import{L as g}from"./lazy-markdown-B9vEkJ0h.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-forms-BlFSCfFw.js";import"./vendor-date-Cl1Jav-N.js";const B=({blockType:e})=>s.jsxs("div",{className:"flex flex-col gap-6",children:[s.jsx(N,{blockType:e}),s.jsx(v,{blockType:e})]});function N({blockType:e}){return s.jsx(d,{children:s.jsxs(m,{children:[s.jsx(o,{children:s.jsx(t,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),s.jsx(i,{}),s.jsx(o,{children:s.jsx(t,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),s.jsx(i,{}),s.jsx(o,{className:"text-xl font-semibold",children:e.slug})]})})}function v({blockType:e}){return s.jsx("div",{children:s.jsxs(x,{className:"p-6",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(h,{size:"lg",logoUrl:e.logo_url}),s.jsx(n,{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(n,{variant:"h4",children:"Example"}),s.jsx(f,{codeExample:e.code_example,name:e.name})]}),s.jsx("div",{className:"flex justify-end",children:s.jsx(p,{children:s.jsx(l,{to:"/blocks/catalog/$slug/create",params:{slug:e.slug},children:"Create"})})})]})})}function L({description:e,documentationUrl:a}){let r=e;return a&&(r=`${r} [Documentation](${a})`),s.jsx("div",{className:"prose max-w-none",children:s.jsx(g,{children:r})})}function S(){const{slug:e}=u.useParams(),{data:a}=c(j(e));return s.jsx(B,{blockType:a})}export{S as component};
2
- //# sourceMappingURL=catalog_._slug-60h4tERz.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog_._slug-60h4tERz.js","sources":["../../src/components/blocks/block-type-page/block-type-page.tsx","../../src/routes/blocks/catalog_.$slug.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { PythonBlockSnippet } from \"@/components/blocks/python-example-snippet\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypePageProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockTypePage = ({ blockType }: BlockTypePageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockTypePageHeader blockType={blockType} />\n\t\t\t<BlockTypeCardDetails blockType={blockType} />\n\t\t</div>\n\t);\n};\n\nfunction BlockTypePageHeader({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockType.slug}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n}\n\nfunction BlockTypeCardDetails({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<div>\n\t\t\t<Card className=\"p-6\">\n\t\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t\t<Typography variant=\"h3\">{blockType.name}</Typography>\n\t\t\t\t</div>\n\n\t\t\t\t{blockType.description && (\n\t\t\t\t\t<BlockTypeDescription\n\t\t\t\t\t\tdescription={blockType.description}\n\t\t\t\t\t\tdocumentationUrl={blockType.documentation_url}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{blockType.code_example && (\n\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<Typography variant=\"h4\">Example</Typography>\n\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\tcodeExample={blockType.code_example}\n\t\t\t\t\t\t\tname={blockType.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t<Button>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</Card>\n\t\t</div>\n\t);\n}\n\ntype BlockTypeDescriptionProps = {\n\tdescription: string;\n\tdocumentationUrl: string | null | undefined;\n};\nfunction BlockTypeDescription({\n\tdescription,\n\tdocumentationUrl,\n}: BlockTypeDescriptionProps) {\n\tlet retDescription = description;\n\tif (documentationUrl) {\n\t\tretDescription = `${retDescription} [Documentation](${documentationUrl})`;\n\t}\n\n\treturn (\n\t\t<div className=\"prose max-w-none\">\n\t\t\t<LazyMarkdown>{retDescription}</LazyMarkdown>\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockTypePage } from \"@/components/blocks/block-type-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockTypeQuery(params.slug)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\treturn <BlockTypePage blockType={blockType} />;\n}\n"],"names":["BlockTypePage","blockType","jsxs","jsx","BlockTypePageHeader","BlockTypeCardDetails","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","Card","BlockTypeLogo","Typography","BlockTypeDescription","PythonBlockSnippet","Button","Link","description","documentationUrl","retDescription","LazyMarkdown","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery"],"mappings":"wfAoBO,MAAMA,EAAgB,CAAC,CAAE,UAAAC,KAE9BC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,MAACC,GAAoB,UAAAH,EAAsB,EAC3CE,MAACE,GAAqB,UAAAJ,CAAA,CAAsB,CAAA,EAC7C,EAIF,SAASG,EAAoB,CAAE,UAAAH,GAAiC,CAC/D,OACCE,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,UAAU,UAAU,wBAAwB,kBAE/D,CAAA,CACD,QACCC,EAAA,EAAoB,QAEpBF,EAAA,CACA,SAAAL,EAAAA,IAACM,EAAA,CACA,GAAG,kBACH,UAAU,wBACV,SAAA,SAAA,CAAA,EAGF,QACCC,EAAA,EAAoB,EAErBP,EAAAA,IAACK,EAAA,CAAe,UAAU,wBACxB,WAAU,IAAA,CACZ,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAEA,SAASH,EAAqB,CAAE,UAAAJ,GAAiC,CAChE,OACCE,EAAAA,IAAC,MAAA,CACA,SAAAD,EAAAA,KAACS,EAAA,CAAK,UAAU,MACf,SAAA,CAAAT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACS,EAAA,CAAc,KAAK,KAAK,QAASX,EAAU,SAAU,EACtDE,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECZ,EAAU,aACVE,EAAAA,IAACW,EAAA,CACA,YAAab,EAAU,YACvB,iBAAkBA,EAAU,iBAAA,CAAA,EAI7BA,EAAU,cACVC,OAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAK,SAAA,UAAO,EAChCV,EAAAA,IAACY,EAAA,CACA,YAAad,EAAU,aACvB,KAAMA,EAAU,IAAA,CAAA,CACjB,EACD,EAGDE,MAAC,MAAA,CAAI,UAAU,mBACd,eAACa,EAAA,CACA,SAAAb,EAAAA,IAACc,EAAA,CACA,GAAG,+BACH,OAAQ,CAAE,KAAMhB,EAAU,IAAA,EAC1B,SAAA,QAAA,CAAA,EAGF,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAMA,SAASa,EAAqB,CAC7B,YAAAI,EACA,iBAAAC,CACD,EAA8B,CAC7B,IAAIC,EAAiBF,EACrB,OAAIC,IACHC,EAAiB,GAAGA,CAAc,oBAAoBD,CAAgB,WAIrE,MAAA,CAAI,UAAU,mBACd,SAAAhB,EAAAA,IAACkB,EAAA,CAAc,WAAe,CAAA,CAC/B,CAEF,CCzGA,SAASC,GAAiB,CACzB,KAAM,CAAEC,KAAAA,CAAAA,EAASC,EAAMC,UAAAA,EACjB,CAAEC,KAAMzB,CAAAA,EAAc0B,EAAiBC,EAAuBL,CAAI,CAAC,EACzE,OAAOpB,MAACH,GAAc,UAAAC,EAAqB,CAC5C"}
@@ -1,2 +0,0 @@
1
- import{j as e,c as D,d as L,F as R,r as A,s as S,M as E}from"./vendor-tanstack-BdLtprmr.js";import{C as y,cE as _,$ as w,au as B,B as b,g as f,h as c,bw as m,bF as x,I as v,ap as N,av as I,a_ as V,bH as M,aA as P,aB as O,aC as U,aD as $,d2 as F,b9 as h,d3 as G}from"./index-V_xTKaEb.js";import{f as p,p as j}from"./vendor-date-Cl1Jav-N.js";import{T as H,a as z,b as Q}from"./task-run-concurrency-limits-reset-dialog-CNrP9yPQ.js";import{o as K,e as q}from"./vendor-forms-BlFSCfFw.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./dropdown-menu-B9LKPlz7.js";const J=({flowRun:s,taskRun:a})=>{if(a){const{state:t,start_time:r,tags:n,estimated_run_time:i}=a;return{state:t,start_time:r,tags:n,estimated_run_time:i}}if(s){const{state:t,start_time:r,tags:n,estimated_run_time:i}=s;return{state:t,start_time:r,tags:n,estimated_run_time:i}}throw new Error("Expecting taskRun or flowRun to be defined")},W=({flow:s,flowRun:a,taskRun:t})=>{const{state:r,start_time:n,tags:i,estimated_run_time:l}=J({flowRun:a,taskRun:t});return e.jsxs(y,{className:ee({state:r?.type}),children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(X,{flow:s,flowRun:a,taskRun:t}),e.jsx("div",{children:e.jsx(w,{maxTagsDisplayed:5,tags:i})})]}),e.jsxs("div",{className:"flex gap-2 items-center text-slate-600",children:[r&&e.jsx(B,{type:r.type,name:r.name}),n&&e.jsx(Z,{time:n}),e.jsx(Y,{duration:l})]})]})},X=({flow:s,flowRun:a,taskRun:t})=>{if(!s&&!a&&!t)throw new Error("Expecting flow, flowRun, or taskRun");return e.jsx(b,{children:e.jsxs(f,{children:[s&&e.jsx(c,{children:e.jsx(m,{className:"text-lg font-semibold",to:"/flows/flow/$id",params:{id:s.id},children:s.name})}),s&&a&&e.jsx(x,{}),a&&e.jsx(c,{children:e.jsx(m,{to:"/runs/flow-run/$id",params:{id:a.id},children:a.name})}),a&&t&&e.jsx(x,{}),t&&e.jsx(c,{children:e.jsx(m,{to:"/runs/task-run/$id",params:{id:t.id},children:t.name})})]})})},Y=({duration:s})=>e.jsxs("div",{className:"flex gap-1 items-center",children:[e.jsx(v,{id:"Clock",className:"size-4"}),e.jsx(N,{variant:"bodySmall",children:I(s,{maxDecimalPoints:3,units:["s"]})})]}),Z=({time:s})=>e.jsxs("div",{className:"flex gap-1 items-center",children:[e.jsx(v,{id:"Calendar",className:"size-4"}),e.jsx(N,{variant:"bodySmall",className:"font-mono",children:p(j(s),"yyyy/MM/dd pp")})]}),ee=_("flex flex-col gap-2 p-4 border-l-8",{variants:{state:{COMPLETED:"border-l-green-600",FAILED:"border-l-red-600",RUNNING:"border-l-blue-700",CANCELLED:"border-l-gray-800",CANCELLING:"border-l-gray-800",CRASHED:"border-l-orange-600",PAUSED:"border-l-gray-800",PENDING:"border-l-gray-800",SCHEDULED:"border-l-yellow-700"}}}),se=({data:s})=>e.jsx("ul",{className:"flex flex-col gap-2",children:s.map(a=>e.jsx("li",{children:e.jsx(W,{flow:a.flow,flowRun:a.flowRun,taskRun:a.taskRun})},a.taskRun.id))}),ae=({data:s})=>e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("dl",{className:"flex flex-col gap-2",children:[e.jsx("dt",{className:"text-muted-foreground",children:"Tag"}),e.jsx("dd",{className:"text-sm font-medium leading-none",children:s.tag})]}),e.jsx("hr",{}),e.jsx("dl",{className:"flex flex-col gap-2",children:te(s).map(a=>e.jsxs(D.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:a.label}),e.jsx("dd",{className:V("text-sm font-medium leading-none",a.formatType==="date"&&"font-mono"),children:a.value})]},a.label))})]}),te=s=>[{label:"Concurrency Limit Count",value:s.concurrency_limit,formatType:"number"},{label:"Concurrency Limit Active Task Run",value:s.active_slots?.length??"Unknown",formatType:"number"},{label:"Concurrency Limit ID",value:s.id??"Unknown",formatType:"number"},{label:"Created",value:s.created?p(j(s.created),"yyyy/MM/dd pp"):"N/A",formatType:"date"},{label:"Updated",value:s.updated?p(j(s.updated),"yyyy/MM/dd pp"):"N/A",formatType:"date"}],re=({tag:s})=>e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(b,{children:e.jsxs(f,{children:[e.jsx(c,{children:e.jsx(m,{to:"/concurrency-limits",className:"text-xl font-semibold",children:"Concurrency Limits"})}),e.jsx(x,{}),e.jsx(c,{className:"text-xl font-semibold",children:e.jsx(M,{children:s})})]})})}),ne=({data:s,onDelete:a,onReset:t})=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(re,{tag:s.tag}),e.jsx(H,{id:s.id,onDelete:a,onReset:t})]}),ie=({data:s,openDialog:a,onCloseDialog:t,onOpenChange:r})=>{const n=L(),i=()=>{t(),n({to:"/concurrency-limits",search:{tab:"task-run"}})};switch(a){case"reset":return e.jsx(Q,{data:s,onOpenChange:r,onReset:t});case"delete":return e.jsx(z,{data:s,onOpenChange:r,onDelete:i});default:return null}},g=R("/concurrency-limits/concurrency-limit/$id"),d={"active-task-runs":{tabSearchValue:"active-task-runs",displayValue:"Active Task Runs"}},ce=({children:s})=>{const{tab:a}=g.useSearch(),t=g.useNavigate();return e.jsxs(P,{defaultValue:"Global",value:a,children:[e.jsx(O,{children:e.jsx(U,{value:d["active-task-runs"].tabSearchValue,onClick:()=>{t({to:"/concurrency-limits/concurrency-limit/$id",search:{tab:d["active-task-runs"].tabSearchValue}})},children:d["active-task-runs"].displayValue})}),e.jsx($,{value:d["active-task-runs"].tabSearchValue,children:s})]})},le=({id:s})=>{const[a,t]=A.useState(null),{data:r}=S(F(s)),n=()=>t("delete"),i=()=>t("reset"),l=()=>t(null),T=u=>{u||l()},{activeTaskRunsPromise:C,taskRunConcurrencyLimit:o}=r,k=o.active_slots?.length;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ne,{data:o,onDelete:n,onReset:i}),e.jsxs("div",{className:"grid gap-4",style:{gridTemplateColumns:"3fr 1fr"},children:[e.jsx(ce,{children:e.jsx(E,{promise:C,fallback:e.jsx(oe,{length:k}),children:u=>e.jsx(se,{data:u})})}),e.jsx(ae,{data:o})]})]}),e.jsx(ie,{data:o,openDialog:a,onOpenChange:T,onCloseDialog:l})]})},oe=({length:s=0})=>e.jsx("div",{className:"flex flex-col gap-4",children:Array.from({length:s},(a,t)=>e.jsxs(y,{className:"p-4 space-y-4",children:[e.jsx(h,{className:"h-4 w-[350px]"}),e.jsx(h,{className:"h-4 w-[400px]"})]},t))});K({tab:q(["active-task-runs"]).default("active-task-runs")});function be(){const{id:s}=G.useParams();return e.jsx(le,{id:s})}export{be as component};
2
- //# sourceMappingURL=concurrency-limit._id-BFfR6_U0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concurrency-limit._id-BFfR6_U0.js","sources":["../../src/components/ui/run-card/run-card.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs/task-run-concurrency-limit-active-task-runs.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details/task-run-concurrency-limit-details.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/nav-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/task-run-concurrency-limit-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-dialog.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-tab-navigation.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/index.tsx","../../src/routes/concurrency-limits/concurrency-limit.$id.tsx?tsr-split=component"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport { format, parseISO } from \"date-fns\";\nimport humanizeDuration from \"humanize-duration\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Card } from \"@/components/ui/card\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { StateBadge } from \"@/components/ui/state-badge\";\nimport { TagBadgeGroup } from \"@/components/ui/tag-badge-group\";\nimport { Typography } from \"@/components/ui/typography\";\n\nconst getValues = ({\n\tflowRun,\n\ttaskRun,\n}: {\n\tflowRun: null | undefined | components[\"schemas\"][\"FlowRunResponse\"];\n\ttaskRun: null | undefined | components[\"schemas\"][\"TaskRun\"];\n}) => {\n\tif (taskRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = taskRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\tif (flowRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = flowRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\n\tthrow new Error(\"Expecting taskRun or flowRun to be defined\");\n};\n\ntype RunCardProps = {\n\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t/** If task run is included, uses fields from task run over flow run */\n\ttaskRun?: components[\"schemas\"][\"TaskRun\"] | null;\n};\n\nexport const RunCard = ({ flow, flowRun, taskRun }: RunCardProps) => {\n\tconst { state, start_time, tags, estimated_run_time } = getValues({\n\t\tflowRun,\n\t\ttaskRun,\n\t});\n\n\treturn (\n\t\t<Card className={stateCardVariants({ state: state?.type })}>\n\t\t\t<div className=\"flex justify-between items-center\">\n\t\t\t\t<ConcurrencyLimitTaskRunBreadcrumb\n\t\t\t\t\tflow={flow}\n\t\t\t\t\tflowRun={flowRun}\n\t\t\t\t\ttaskRun={taskRun}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<TagBadgeGroup maxTagsDisplayed={5} tags={tags} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex gap-2 items-center text-slate-600\">\n\t\t\t\t{state && <StateBadge type={state.type} name={state.name} />}\n\t\t\t\t{start_time && <StartTime time={start_time} />}\n\t\t\t\t<TimeRan duration={estimated_run_time} />\n\t\t\t</div>\n\t\t</Card>\n\t);\n};\n\nconst ConcurrencyLimitTaskRunBreadcrumb = ({\n\tflow,\n\tflowRun,\n\ttaskRun,\n}: RunCardProps) => {\n\tif (!flow && !flowRun && !taskRun) {\n\t\tthrow new Error(\"Expecting flow, flowRun, or taskRun\");\n\t}\n\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t{flow && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tclassName=\"text-lg font-semibold\"\n\t\t\t\t\t\t\tto=\"/flows/flow/$id\"\n\t\t\t\t\t\t\tparams={{ id: flow.id }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{flow.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flow && flowRun && <BreadcrumbSeparator />}\n\t\t\t\t{flowRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/flow-run/$id\" params={{ id: flowRun.id }}>\n\t\t\t\t\t\t\t{flowRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flowRun && taskRun && <BreadcrumbSeparator />}\n\t\t\t\t{taskRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/task-run/$id\" params={{ id: taskRun.id }}>\n\t\t\t\t\t\t\t{taskRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n\ntype TimeRanProps = {\n\tduration: number;\n};\nconst TimeRan = ({ duration }: TimeRanProps) => {\n\treturn (\n\t\t<div className=\"flex gap-1 items-center\">\n\t\t\t<Icon id=\"Clock\" className=\"size-4\" />\n\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\t{humanizeDuration(duration, { maxDecimalPoints: 3, units: [\"s\"] })}\n\t\t\t</Typography>\n\t\t</div>\n\t);\n};\n\ntype StartTimeProps = {\n\ttime: string;\n};\nconst StartTime = ({ time }: StartTimeProps) => (\n\t<div className=\"flex gap-1 items-center\">\n\t\t<Icon id=\"Calendar\" className=\"size-4\" />\n\t\t<Typography variant=\"bodySmall\" className=\"font-mono\">\n\t\t\t{format(parseISO(time), \"yyyy/MM/dd pp\")}\n\t\t</Typography>\n\t</div>\n);\n\nconst stateCardVariants = cva(\"flex flex-col gap-2 p-4 border-l-8\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tCOMPLETED: \"border-l-green-600\",\n\t\t\tFAILED: \"border-l-red-600\",\n\t\t\tRUNNING: \"border-l-blue-700\",\n\t\t\tCANCELLED: \"border-l-gray-800\",\n\t\t\tCANCELLING: \"border-l-gray-800\",\n\t\t\tCRASHED: \"border-l-orange-600\",\n\t\t\tPAUSED: \"border-l-gray-800\",\n\t\t\tPENDING: \"border-l-gray-800\",\n\t\t\tSCHEDULED: \"border-l-yellow-700\",\n\t\t} satisfies Record<components[\"schemas\"][\"StateType\"], string>,\n\t},\n});\n","import type { components } from \"@/api/prefect\";\nimport { RunCard } from \"@/components/ui/run-card\";\n\ntype TaskRunConcurrencyLimitActiveTaskRunsProps = {\n\tdata: Array<{\n\t\ttaskRun: components[\"schemas\"][\"TaskRun\"];\n\t\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\t}>;\n};\n\nexport const TaskRunConcurrencyLimitActiveTaskRuns = ({\n\tdata,\n}: TaskRunConcurrencyLimitActiveTaskRunsProps) => {\n\treturn (\n\t\t<ul className=\"flex flex-col gap-2\">\n\t\t\t{data.map((d) => (\n\t\t\t\t<li key={d.taskRun.id}>\n\t\t\t\t\t<RunCard flow={d.flow} flowRun={d.flowRun} taskRun={d.taskRun} />\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n};\n","import { format, parseISO } from \"date-fns\";\nimport React from \"react\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { cn } from \"@/utils\";\n\ntype TaskRunConcurrencyLimitDetailsProps = {\n\tdata: TaskRunConcurrencyLimit;\n};\n\nexport const TaskRunConcurrencyLimitDetails = ({\n\tdata,\n}: TaskRunConcurrencyLimitDetailsProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t<dt className=\"text-muted-foreground\">Tag</dt>\n\t\t\t\t<dd className=\"text-sm font-medium leading-none\">{data.tag}</dd>\n\t\t\t</dl>\n\t\t\t<hr />\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t{getKeyValueList(data).map((d) => (\n\t\t\t\t\t<React.Fragment key={d.label}>\n\t\t\t\t\t\t<dt className=\"text-muted-foreground\">{d.label}</dt>\n\t\t\t\t\t\t<dd\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"text-sm font-medium leading-none\",\n\t\t\t\t\t\t\t\td.formatType === \"date\" && \"font-mono\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{d.value}\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t))}\n\t\t\t</dl>\n\t\t</div>\n\t);\n};\n\nconst getKeyValueList = (data: TaskRunConcurrencyLimit) =>\n\t[\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Count\",\n\t\t\tvalue: data.concurrency_limit,\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Active Task Run\",\n\t\t\tvalue: data.active_slots?.length ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit ID\",\n\t\t\tvalue: data.id ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Created\",\n\t\t\tvalue: data.created\n\t\t\t\t? format(parseISO(data.created), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Updated\",\n\t\t\tvalue: data.updated\n\t\t\t\t? format(parseISO(data.updated), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t] as const;\n","import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype NavHeaderProps = {\n\ttag: string;\n};\n\nexport const NavHeader = ({ tag }: NavHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t<Breadcrumb>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/concurrency-limits\"\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tConcurrency Limits\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>{tag}</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t</div>\n\t);\n};\n","import type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsActionsMenu } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-actions-menu\";\n\nimport { NavHeader } from \"./nav-header\";\n\ntype TaskRunConcurrencyLimitHeaderProps = {\n\tdata: TaskRunConcurrencyLimit;\n\tonDelete: () => void;\n\tonReset: () => void;\n};\n\nexport const TaskRunConcurrencyLimitHeader = ({\n\tdata,\n\tonDelete,\n\tonReset,\n}: TaskRunConcurrencyLimitHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center justify-between\">\n\t\t\t<NavHeader tag={data.tag} />\n\t\t\t<TaskRunConcurrencyLimitsActionsMenu\n\t\t\t\tid={data.id}\n\t\t\t\tonDelete={onDelete}\n\t\t\t\tonReset={onReset}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useNavigate } from \"@tanstack/react-router\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsDeleteDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-delete-dialog\";\nimport { TaskRunConcurrencyLimitsResetDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-reset-dialog\";\n\nexport type Dialogs = null | \"delete\" | \"reset\";\n\ntype TaskRunConcurrencyLimitDialogProps = {\n\tdata: TaskRunConcurrencyLimit;\n\topenDialog: Dialogs;\n\tonOpenChange: (open: boolean) => void;\n\tonCloseDialog: () => void;\n};\n\nexport const TaskRunConcurrencyLimitDialog = ({\n\tdata,\n\topenDialog,\n\tonCloseDialog,\n\tonOpenChange,\n}: TaskRunConcurrencyLimitDialogProps) => {\n\tconst navigate = useNavigate();\n\n\tconst handleDelete = () => {\n\t\tonCloseDialog();\n\t\tvoid navigate({ to: \"/concurrency-limits\", search: { tab: \"task-run\" } });\n\t};\n\n\tswitch (openDialog) {\n\t\tcase \"reset\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsResetDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonReset={onCloseDialog}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"delete\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsDeleteDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonDelete={handleDelete}\n\t\t\t\t/>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import { getRouteApi } from \"@tanstack/react-router\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport type { TabOptions } from \"@/routes/concurrency-limits/concurrency-limit.$id\";\n\nconst routeApi = getRouteApi(\"/concurrency-limits/concurrency-limit/$id\");\n\ntype TabOptionValues = {\n\t/** Value of search value in url */\n\ttabSearchValue: TabOptions;\n\t/** Display value for the UI */\n\tdisplayValue: string;\n};\n\n/** Maps url tab option to visual name */\nconst TAB_OPTIONS: Record<TabOptions, TabOptionValues> = {\n\t\"active-task-runs\": {\n\t\ttabSearchValue: \"active-task-runs\",\n\t\tdisplayValue: \"Active Task Runs\",\n\t},\n} as const;\n\ntype TaskRunConcurrencyLimitTabNavigationProps = {\n\t/** Should add ActiveTaskRun component */\n\tchildren: React.ReactNode;\n};\n\n// TODO: Move Tabs for navigation to a generic styled component\nexport const TaskRunConcurrencyLimitTabNavigation = ({\n\tchildren,\n}: TaskRunConcurrencyLimitTabNavigationProps) => {\n\tconst { tab } = routeApi.useSearch();\n\tconst navigate = routeApi.useNavigate();\n\n\treturn (\n\t\t<Tabs defaultValue=\"Global\" value={tab}>\n\t\t\t<TabsList>\n\t\t\t\t<TabsTrigger\n\t\t\t\t\tvalue={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/concurrency-limits/concurrency-limit/$id\",\n\t\t\t\t\t\t\tsearch: {\n\t\t\t\t\t\t\t\ttab: TAB_OPTIONS[\"active-task-runs\"].tabSearchValue,\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\t\t{TAB_OPTIONS[\"active-task-runs\"].displayValue}\n\t\t\t\t</TabsTrigger>\n\t\t\t</TabsList>\n\t\t\t<TabsContent value={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}>\n\t\t\t\t{children}\n\t\t\t</TabsContent>\n\t\t</Tabs>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Await } from \"@tanstack/react-router\";\nimport { useState } from \"react\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitActiveTaskRuns } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs\";\nimport { TaskRunConcurrencyLimitDetails } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details\";\nimport { TaskRunConcurrencyLimitHeader } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header\";\nimport { Card } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n\ttype Dialogs,\n\tTaskRunConcurrencyLimitDialog,\n} from \"./task-run-concurrency-limit-dialog\";\nimport { TaskRunConcurrencyLimitTabNavigation } from \"./task-run-concurrency-limit-tab-navigation\";\n\ntype TaskRunConcurrencyLimitPageProps = {\n\tid: string;\n};\n\nexport const TaskRunConcurrencyLimitPage = ({\n\tid,\n}: TaskRunConcurrencyLimitPageProps) => {\n\tconst [openDialog, setOpenDialog] = useState<Dialogs>(null);\n\tconst { data } = useSuspenseQuery(\n\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(id),\n\t);\n\n\tconst handleOpenDeleteDialog = () => setOpenDialog(\"delete\");\n\tconst handleOpenResetDialog = () => setOpenDialog(\"reset\");\n\tconst handleCloseDialog = () => setOpenDialog(null);\n\n\t// Because all modals will be rendered, only control the closing logic\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!open) {\n\t\t\thandleCloseDialog();\n\t\t}\n\t};\n\n\tconst { activeTaskRunsPromise, taskRunConcurrencyLimit } = data;\n\tconst numActiveTaskRuns = taskRunConcurrencyLimit.active_slots?.length;\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<TaskRunConcurrencyLimitHeader\n\t\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\t\tonDelete={handleOpenDeleteDialog}\n\t\t\t\t\tonReset={handleOpenResetDialog}\n\t\t\t\t/>\n\t\t\t\t<div className=\"grid gap-4\" style={{ gridTemplateColumns: \"3fr 1fr\" }}>\n\t\t\t\t\t<TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t\t<Await\n\t\t\t\t\t\t\tpromise={activeTaskRunsPromise}\n\t\t\t\t\t\t\tfallback={<SkeletonLoading length={numActiveTaskRuns} />}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{(activeTaskRuns) => (\n\t\t\t\t\t\t\t\t<TaskRunConcurrencyLimitActiveTaskRuns data={activeTaskRuns} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Await>\n\t\t\t\t\t</TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t<TaskRunConcurrencyLimitDetails data={taskRunConcurrencyLimit} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<TaskRunConcurrencyLimitDialog\n\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\topenDialog={openDialog}\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t\tonCloseDialog={handleCloseDialog}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\ntype SkeletonLoadingProps = { length?: number };\nconst SkeletonLoading = ({ length = 0 }: SkeletonLoadingProps) => (\n\t<div className=\"flex flex-col gap-4\">\n\t\t{Array.from({ length }, (_, index) => (\n\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: okay for static skeleton list\n\t\t\t<Card key={index} className=\"p-4 space-y-4\">\n\t\t\t\t<Skeleton className=\"h-4 w-[350px]\" />\n\t\t\t\t<Skeleton className=\"h-4 w-[400px]\" />\n\t\t\t</Card>\n\t\t))}\n\t</div>\n);\n","import { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { z } from \"zod\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitPage } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page\";\n\n/**\n * Schema for validating URL search parameters for the Task Run Concurrency Limit Details page.\n * @property {'active-task-runs'} tab used designate which tab view to display\n */\nconst searchParams = z.object({\n\ttab: z.enum([\"active-task-runs\"]).default(\"active-task-runs\"),\n});\n\nexport type TabOptions = z.infer<typeof searchParams>[\"tab\"];\n\nexport const Route = createFileRoute(\n\t\"/concurrency-limits/concurrency-limit/$id\",\n)({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\twrapInSuspense: true,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(\n\t\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(params.id),\n\t\t),\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <TaskRunConcurrencyLimitPage id={id} />;\n}\n"],"names":["getValues","flowRun","taskRun","state","start_time","tags","estimated_run_time","RunCard","flow","jsxs","Card","stateCardVariants","jsx","ConcurrencyLimitTaskRunBreadcrumb","TagBadgeGroup","StateBadge","StartTime","TimeRan","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","duration","Icon","Typography","time","format","parseISO","cva","TaskRunConcurrencyLimitActiveTaskRuns","data","d","TaskRunConcurrencyLimitDetails","getKeyValueList","React","cn","NavHeader","tag","BreadcrumbPage","TaskRunConcurrencyLimitHeader","onDelete","onReset","TaskRunConcurrencyLimitsActionsMenu","TaskRunConcurrencyLimitDialog","openDialog","onCloseDialog","onOpenChange","navigate","useNavigate","handleDelete","TaskRunConcurrencyLimitsResetDialog","TaskRunConcurrencyLimitsDeleteDialog","routeApi","getRouteApi","TAB_OPTIONS","TaskRunConcurrencyLimitTabNavigation","children","tab","Tabs","TabsList","TabsTrigger","TabsContent","TaskRunConcurrencyLimitPage","id","setOpenDialog","useState","useSuspenseQuery","buildConcurrenyLimitDetailsActiveRunsQuery","handleOpenDeleteDialog","handleOpenResetDialog","handleCloseDialog","handleOpenChange","open","activeTaskRunsPromise","taskRunConcurrencyLimit","numActiveTaskRuns","Fragment","Await","SkeletonLoading","activeTaskRuns","length","_","index","Skeleton","z","default","RouteComponent","Route","useParams"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as e,s as V,r as W,g as I}from"./vendor-tanstack-BdLtprmr.js";import{a as R}from"./zod-B1GLD-Zc.js";import{g as B,o as _,n as D,s as N,r as U,u as q,c as A}from"./vendor-forms-BlFSCfFw.js";import{p as P,C as T,o as F,bA as $,a_ as S,bB as J,bC as G,H,bD as M,m as O,n as Q,q as v,y as w}from"./index-V_xTKaEb.js";import{b as x,c as f,d as h,e as j,a as b,F as z}from"./form-DOdmIC3A.js";import{u as K,S as X}from"./use-stepper-CnGJHRLP.js";import{T as Y}from"./textarea-9v5uTuxg.js";import"./schema-form-input-string-format-datetime-Cb4sTJle.js";import"./toggle-group-CBJphTE6.js";import{B as Z}from"./base-job-template-form-section-MeO0M71Y.js";import{R as ee,a as te}from"./radio-group-D55TQZsk.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./use-debounce-callback-Dk7Ebi48.js";import"./timezone-select-DPtR_b06.js";import"./dropdown-menu-B9LKPlz7.js";import"./schema-form-BQAcWW5k.js";import"./block-type-logo-DuvU7goV.js";function re(){const a=B();return e.jsxs(e.Fragment,{children:[e.jsx(x,{control:a.control,name:"name",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Name"}),e.jsx(j,{children:e.jsx(P,{...o})}),e.jsx(b,{})]})}),e.jsx(x,{control:a.control,name:"description",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Description (Optional)"}),e.jsx(j,{children:e.jsx(Y,{...o,value:o.value??"",rows:7,placeholder:"Enter a description for your work pool"})}),e.jsx(b,{})]})}),e.jsx(x,{control:a.control,name:"concurrencyLimit",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Flow Run Concurrency (Optional)"}),e.jsx(j,{children:e.jsx(P,{...o,type:"number",min:0,placeholder:"Unlimited",value:o.value??"",onChange:i=>{const n=i.target.value;o.onChange(n===""?null:Number(n))}})}),e.jsx(b,{})]})})]})}const se=_({name:N().min(1,"Name is required").refine(a=>!a.toLowerCase().startsWith("prefect"),"Work pools starting with 'prefect' are reserved for internal use."),description:N().nullable().optional(),concurrencyLimit:D().min(0).nullable().optional()});function oe(){const a=B(),o=a.watch("baseJobTemplate");return e.jsxs("div",{className:"space-y-6",children:[e.jsx(T,{children:e.jsx(F,{children:e.jsxs($,{children:["The fields below control the default values for the base job template. These values can be overridden by deployments.",e.jsx("br",{}),e.jsx("br",{}),"A work pools 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(Z,{baseJobTemplate:o,onBaseJobTemplateChange:i=>{a.setValue("baseJobTemplate",i)}})]})}const ae=_({baseJobTemplate:U(q()).optional()}),k={sm:"h-4 w-4",md:"h-8 w-8",lg:"h-12 w-12"},ne=({url:a,alt:o,size:i="md",className:n})=>a?e.jsx("img",{src:a,alt:o,className:S("rounded border bg-background/50 backdrop-blur-sm object-contain",k[i],n),onError:t=>{const r=t.target,s=document.createElement("div");s.className=S("rounded border bg-muted flex items-center justify-center text-muted-foreground text-xs",k[i],n),s.textContent=o.charAt(0).toUpperCase(),r.parentNode?.replaceChild(s,r)}}):e.jsx("div",{className:S("rounded border bg-muted flex items-center justify-center text-muted-foreground text-xs",k[i],n),children:o.charAt(0).toUpperCase()});function ie(){const a=B(),{data:o={}}=V(J()),i=W.useMemo(()=>{const n=[];return Object.values(o).forEach(t=>{t&&typeof t=="object"&&Object.values(t).forEach(r=>{if(r&&typeof r=="object"&&"type"in r){const{type:s,display_name:u,description:d,logo_url:m,documentation_url:y,is_beta:g}=r;s&&m&&d&&n.push({label:u||G(s),value:s,logoUrl:m,description:d,documentationUrl:y,isBeta:g||!1})}})}),n.sort((t,r)=>t.isBeta&&!r.isBeta?1:!t.isBeta&&r.isBeta?-1:t.label.localeCompare(r.label))},[o]);return e.jsx(x,{control:a.control,name:"type",render:({field:n,fieldState:t})=>e.jsxs(f,{children:[e.jsx(h,{className:"text-base font-medium",children:"Select the infrastructure you want to use to execute your flow runs"}),e.jsx(j,{children:e.jsx(ee,{value:n.value,onValueChange:r=>n.onChange(r),className:"space-y-3",children:i.map(({label:r,value:s,logoUrl:u,description:d,isBeta:m})=>e.jsxs("div",{className:"flex items-center space-x-3 p-4 rounded-lg border hover:bg-accent/50",children:[e.jsx(te,{value:s,id:s}),e.jsx("label",{htmlFor:s,className:"flex-1 cursor-pointer",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(ne,{url:u,alt:r,size:"md"}),e.jsxs("div",{className:"flex flex-col gap-2 flex-1",children:[e.jsxs("p",{className:"text-base font-medium flex items-center",children:[r,m&&e.jsx(H,{variant:"secondary",className:"ml-2 text-xs",children:"Beta"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d})]})]})})]},s))})}),t.error&&e.jsx(b,{children:t.error.message})]})})}const E=["Infrastructure Type","Details","Configuration"],ce=_({type:N().min(1,"Infrastructure type is required"),...se.shape,...ae.shape});function le(){const a=I(),{createWorkPool:o,isPending:i}=M(),{data:n={}}=V(J()),t=K(E.length),r=A({resolver:R(ce),defaultValues:{description:null,concurrencyLimit:null}}),s=r.watch("type");W.useEffect(()=>{const c=Object.values(n).find(l=>l&&typeof l=="object"&&Object.values(l).find(p=>p&&typeof p=="object"&&"type"in p&&p.type===s));c&&s in c&&typeof c[s]=="object"&&c[s]&&"default_base_job_configuration"in c[s]&&r.setValue("baseJobTemplate",c[s].default_base_job_configuration)},[n,r,s]);const u=async()=>{const c=g(t.currentStep);await r.trigger(c)&&(t.isFinalStep?await y():t.incrementStep())},d=()=>{t.decrementStep()},m=()=>{a.navigate({to:"/work-pools"})},y=async()=>{if(!await r.trigger())return;const l=r.getValues();if(!l.name||!l.type){w.error("Please fill in all required fields");return}const p={name:l.name,type:l.type,description:l.description,is_paused:!1,concurrency_limit:l.concurrencyLimit,base_job_template:l.baseJobTemplate||{}};o(p,{onSuccess:C=>{w.success(`Work pool "${l.name}" created successfully`),a.navigate({to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:C.data?.name||l.name}})},onError:C=>{w.error(`Failed to create work pool: ${C.message}`)}})},g=c=>{switch(c){case 0:return["type"];case 1:return["name","description","concurrencyLimit"];case 2:return["baseJobTemplate"];default:return[]}},L=()=>{switch(t.currentStep){case 0:return e.jsx(ie,{});case 1:return e.jsx(re,{});case 2:return e.jsx(oe,{});default:return null}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(T,{children:[e.jsx(O,{children:e.jsx(Q,{children:"Create Work Pool"})}),e.jsx(F,{children:e.jsx(X,{currentStepNum:t.currentStep,steps:E,onClick:({stepNum:c})=>{t.visitedStepsSet.has(c)&&t.changeStep(c)},completedSteps:t.completedStepsSet,visitedSteps:t.visitedStepsSet})})]}),e.jsx(T,{children:e.jsx(F,{className:"pt-6",children:e.jsx(z,{...r,children:e.jsx("form",{className:"space-y-6",children:L()})})})}),e.jsxs("div",{className:"flex justify-between",children:[e.jsxs("div",{children:[!t.isStartingStep&&e.jsx(v,{variant:"outline",onClick:d,disabled:i,children:"Back"}),e.jsx(v,{variant:"ghost",onClick:m,disabled:i,className:"ml-2",children:"Cancel"})]}),e.jsx(v,{onClick:()=>{u()},disabled:i,children:i?"Creating...":t.isFinalStep?"Create Work Pool":"Next"})]})]})}const _e=le;export{_e as component};
2
- //# sourceMappingURL=create-BrNwbpVu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-DWgkh2HT.js","sources":["../../src/components/automations/automations-create-header/automations-create-header.tsx","../../src/routes/automations/create.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 AutomationsCreateHeader = () => (\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>Create</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t</div>\n);\n","import { useQuery } from \"@tanstack/react-query\";\nimport { createFileRoute, useNavigate } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport { useCreateAutomation } from \"@/api/automations\";\nimport { buildGetEventQuery } from \"@/api/events\";\nimport type { components } from \"@/api/prefect\";\nimport { AutomationsCreateHeader } from \"@/components/automations/automations-create-header\";\nimport {\n\tAutomationWizard,\n\ttype AutomationWizardSchemaType,\n\ttransformEventToTrigger,\n} from \"@/components/automations/automations-wizard\";\n\ntype AutomationCreate = components[\"schemas\"][\"AutomationCreate\"];\n\n/**\n * Search params schema for the create automation route.\n * Supports pre-populating the wizard from an event.\n */\nconst searchParams = z.object({\n\tactions: z.record(z.unknown()).optional(),\n\t/** Event ID to pre-populate the trigger from */\n\teventId: z.string().optional(),\n\t/** Event date in YYYY-MM-DD format for fetching the event */\n\teventDate: z.string().optional(),\n});\n\n/**\n * Parses a YYYY-MM-DD date string into a Date object.\n */\nfunction parseRouteDate(dateStr: string): Date {\n\tconst [year, month, day] = dateStr.split(\"-\").map(Number);\n\treturn new Date(year, month - 1, day);\n}\n\nexport const Route = createFileRoute(\"/automations/create\")({\n\tcomponent: RouteComponent,\n\tvalidateSearch: zodValidator(searchParams),\n\tloaderDeps: ({ search }) => ({\n\t\teventId: search.eventId,\n\t\teventDate: search.eventDate,\n\t}),\n\tloader: ({ deps, context: { queryClient } }) => {\n\t\t// Prefetch event data if eventId and eventDate are provided\n\t\tif (deps.eventId && deps.eventDate) {\n\t\t\tconst eventDate = parseRouteDate(deps.eventDate);\n\t\t\tvoid queryClient.prefetchQuery(\n\t\t\t\tbuildGetEventQuery(deps.eventId, eventDate),\n\t\t\t);\n\t\t}\n\t},\n\twrapInSuspense: true,\n});\n\n/**\n * Hook to get default values for the automation wizard when pre-populating from an event.\n * Returns undefined if no event params are provided.\n */\nfunction useEventDefaultValues() {\n\tconst { eventId, eventDate } = Route.useSearch();\n\n\t// Only fetch if both params are provided\n\tconst shouldFetch = Boolean(eventId && eventDate);\n\n\t// Use useQuery (not useSuspenseQuery) because useSuspenseQuery doesn't support enabled option\n\tconst { data: event } = useQuery({\n\t\t...buildGetEventQuery(\n\t\t\teventId ?? \"\",\n\t\t\teventDate ? parseRouteDate(eventDate) : new Date(),\n\t\t),\n\t\tenabled: shouldFetch,\n\t});\n\n\tif (!shouldFetch || !event) {\n\t\treturn undefined;\n\t}\n\n\tconst { trigger, triggerTemplate } = transformEventToTrigger(event);\n\treturn {\n\t\ttrigger,\n\t\ttriggerTemplate,\n\t};\n}\n\nfunction RouteComponent() {\n\tconst { createAutomation, isPending } = useCreateAutomation();\n\tconst navigate = useNavigate();\n\tconst eventDefaultValues = useEventDefaultValues();\n\n\tconst handleSubmit = (values: AutomationWizardSchemaType) => {\n\t\tconst automationData: AutomationCreate = {\n\t\t\tname: values.name,\n\t\t\tdescription: values.description ?? \"\",\n\t\t\tenabled: true,\n\t\t\ttrigger: values.trigger,\n\t\t\tactions: values.actions,\n\t\t};\n\n\t\tcreateAutomation(automationData, {\n\t\t\tonSuccess: () => {\n\t\t\t\ttoast.success(\"Automation created successfully\");\n\t\t\t\tvoid navigate({ to: \"/automations\" });\n\t\t\t},\n\t\t\tonError: (error) => {\n\t\t\t\ttoast.error(`Failed to create automation: ${error.message}`);\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<AutomationsCreateHeader />\n\t\t\t<AutomationWizard\n\t\t\t\tdefaultValues={eventDefaultValues}\n\t\t\t\tonSubmit={handleSubmit}\n\t\t\t\tisSubmitting={isPending}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"names":["AutomationsCreateHeader","jsxs","jsx","NavHeader","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","parseRouteDate","dateStr","year","month","day","split","map","Number","Date","useEventDefaultValues","eventId","eventDate","Route","useSearch","shouldFetch","Boolean","data","event","useQuery","buildGetEventQuery","enabled","trigger","triggerTemplate","transformEventToTrigger","RouteComponent","createAutomation","isPending","useCreateAutomation","navigate","useNavigate","eventDefaultValues","handleSubmit","values","automationData","name","description","actions","onSuccess","toast","success","to","onError","error","message","AutomationWizard"],"mappings":"suBAUO,MAAMA,EAA0B,IACtCC,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAU,EACXD,EAAAA,IAACE,EAAA,CAAS,MAAM,gBAAgB,GAAG,mBAAA,CAAoB,CAAA,EACxD,EAGKD,EAAY,IACjBD,EAAAA,IAAC,MAAA,CAAI,UAAU,0BACd,SAAAA,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,eAAe,UAAU,wBAAwB,uBAEpE,CAAA,CACD,QACCC,EAAA,EAAoB,QACpBF,EAAA,CAAe,UAAU,wBACzB,SAAAL,EAAAA,IAACQ,EAAA,CAAe,kBAAM,CAAA,CACvB,CAAA,CAAA,CACD,EACD,EACD,ECAD,SAASC,EAAeC,EAAuB,CAC9C,KAAM,CAACC,EAAMC,EAAOC,CAAG,EAAIH,EAAQI,MAAM,GAAG,EAAEC,IAAIC,MAAM,EACxD,OAAO,IAAIC,KAAKN,EAAMC,EAAQ,EAAGC,CAAG,CACrC,CAyBA,SAASK,GAAwB,CAChC,KAAM,CAAEC,QAAAA,EAASC,UAAAA,CAAAA,EAAcC,EAAMC,UAAAA,EAG/BC,EAAcC,GAAQL,GAAWC,GAGjC,CAAEK,KAAMC,CAAAA,EAAUC,EAAS,CAChC,GAAGC,EACFT,GAAW,GACXC,EAAYX,EAAeW,CAAS,EAAI,IAAIH,IAC7C,EACAY,QAASN,CAAAA,CACT,EAED,GAAI,CAACA,GAAe,CAACG,EACpB,OAGD,KAAM,CAAEI,QAAAA,EAASC,gBAAAA,CAAAA,EAAoBC,EAAwBN,CAAK,EAClE,MAAO,CACNI,QAAAA,EACAC,gBAAAA,CAAAA,CAEF,CAEA,SAASE,GAAiB,CACzB,KAAM,CAAEC,iBAAAA,EAAkBC,UAAAA,CAAAA,EAAcC,EAAAA,EAClCC,EAAWC,EAAAA,EACXC,EAAqBrB,EAAAA,EAErBsB,EAAgBC,GAAuC,CAC5D,MAAMC,EAAmC,CACxCC,KAAMF,EAAOE,KACbC,YAAaH,EAAOG,aAAe,GACnCf,QAAS,GACTC,QAASW,EAAOX,QAChBe,QAASJ,EAAOI,OAAAA,EAGjBX,EAAiBQ,EAAgB,CAChCI,UAAWA,IAAM,CAChBC,EAAMC,QAAQ,iCAAiC,EAC1CX,EAAS,CAAEY,GAAI,cAAA,CAAgB,CACrC,EACAC,QAAUC,GAAU,CACnBJ,EAAMI,MAAM,gCAAgCA,EAAMC,OAAO,EAAE,CAC5D,CAAA,CACA,CACF,EAEA,OACCrD,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACF,EAAA,EAAuB,QACvBuD,EAAA,CACA,cAAed,EACf,SAAUC,EACV,aAAcL,CAAAA,CAAU,CAAA,EAE1B,CAEF"}
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-input-Dei7u1qp.js","assets/vendor-tanstack-BdLtprmr.js","assets/vendor-react-HBv6Kpyp.js","assets/vendor-codemirror-DDrdK9VD.js","assets/index-V_xTKaEb.js","assets/vendor-radix-CJc458uP.js","assets/vendor-recharts-CY3PKigC.js","assets/vendor-forms-BlFSCfFw.js","assets/vendor-date-Cl1Jav-N.js","assets/index-m9O-nIOl.css"])))=>i.map(i=>d[i]);
2
- import{j as e,r as c,s as G,d as Z,L as H}from"./vendor-tanstack-BdLtprmr.js";import{dN as K,ag as M,ah as q,ai as J,aj as z,al as R,ak as $,am as B,an as V,b9 as X,cf as Y,T as ee,S as re,a as ae,b as oe,c as se,d as ne,e as W,dO as le,cZ as te,y as C,ap as f,p as ce,G as ie,L as me,q as Q}from"./index-V_xTKaEb.js";import{u as de,L as ue}from"./schema-form-input-string-format-datetime-Cb4sTJle.js";import"./toggle-group-CBJphTE6.js";import{F as pe,a as m,b as d,c as u,d as p,e as h}from"./form-DOdmIC3A.js";import{T as he}from"./tags-input-2KSBvO_K.js";import{W as je}from"./deployment-action-header-CzvBTL6H.js";import{a as xe}from"./zod-B1GLD-Zc.js";import{c as _e,o as A,s as y,r as be,b as ye,a as ge,u as ve,N as Se,e as Ce}from"./vendor-forms-BlFSCfFw.js";const fe=({presetOptions:o=[],selected:s,onSelect:a})=>e.jsx(c.Suspense,{children:e.jsx(Ee,{presetOptions:o,selected:s,onSelect:a})}),Ee=({presetOptions:o=[],selected:s,onSelect:a})=>{const[t,n]=c.useState(""),{data:i}=G(K()),l=c.useDeferredValue(t),j=c.useMemo(()=>i.filter(r=>r.name.toLowerCase().includes(l.toLowerCase())),[i,l]),x=c.useMemo(()=>o.filter(r=>r.label.toLowerCase().includes(l.toLowerCase())),[l,o]);return e.jsxs(M,{children:[e.jsx(q,{selected:!!s,"aria-label":"Select a global concurrency limit",children:i.find(r=>r.id===s)?.name}),e.jsxs(J,{children:[e.jsx(z,{value:t,onValueChange:n,placeholder:"Search for a global concurrency limit..."}),e.jsx(R,{children:"No global concurrency limit found"}),e.jsx($,{children:e.jsxs(B,{children:[x.map(r=>e.jsx(V,{selected:s===r.value,onSelect:()=>{a(r.value),n("")},value:String(r.label),children:r.label},r.label)),j.map(r=>e.jsx(V,{selected:s===r.name,onSelect:N=>{a(N),n("")},value:r.id,children:r.name},r.id))]})})]})]})},Ne=c.lazy(()=>Y(()=>import("./markdown-input-Dei7u1qp.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])).then(o=>({default:o.MarkdownInput})));function we({className:o,...s}){return e.jsx(c.Suspense,{fallback:e.jsx(X,{className:`min-h-[200px] ${o??""}`}),children:e.jsx(Ne,{className:o,...s})})}const ke=({presetOptions:o=[],selected:s,onSelect:a})=>e.jsx(c.Suspense,{children:e.jsx(Le,{presetOptions:o,selected:s,onSelect:a})}),Le=({presetOptions:o=[],selected:s,onSelect:a})=>{const[t,n]=c.useState(""),{data:i}=G(ee()),l=c.useDeferredValue(t),j=c.useMemo(()=>i.filter(r=>r.name.toLowerCase().includes(l.toLowerCase())),[i,l]),x=c.useMemo(()=>o.filter(r=>r.label.toLowerCase().includes(l.toLowerCase())),[l,o]);return e.jsxs(M,{children:[e.jsx(q,{selected:!!s,"aria-label":"Select a work pool",children:s}),e.jsxs(J,{children:[e.jsx(z,{value:t,onValueChange:n,placeholder:"Search for a work pool..."}),e.jsx(R,{children:"No work pool found"}),e.jsx($,{children:e.jsxs(B,{children:[x.map(r=>e.jsx(V,{selected:s===r.value,onSelect:()=>{a(r.value),n("")},value:String(r.label),children:r.label},r.label)),j.map(r=>e.jsx(V,{selected:s===r.name,onSelect:N=>{a(N),n("")},value:r.name,children:r.name},r.id))]})})]})]})},E={ENQUEUE:"ENQUEUE",CANCEL_NEW:"CANCEL_NEW"},Fe=({onValueChange:o,value:s})=>e.jsxs(re,{value:s,onValueChange:a=>{o(a===""?void 0:a)},children:[e.jsx(ae,{children:e.jsx(oe,{placeholder:E.ENQUEUE})}),e.jsx(se,{children:e.jsxs(ne,{children:[e.jsx(W,{value:E.ENQUEUE,children:E.ENQUEUE}),e.jsx(W,{value:E.CANCEL_NEW,children:E.CANCEL_NEW})]})})]}),Ie=(o,{mode:s})=>A({name:y().refine(a=>s==="edit"?!0:a!==o.name,{message:"Name must be different from the original deployment"}),description:y().nullable().optional(),work_pool_name:y().nullable().optional(),work_queue_name:y().nullable().optional(),tags:ge(y()).optional(),concurrency_options:A({collision_strategy:Ce(["ENQUEUE","CANCEL_NEW"]).optional()}).nullable().optional(),job_variables:y().superRefine((a,t)=>{try{return a?JSON.parse(a):void 0}catch(n){return console.error(n),t.addIssue({code:"custom",message:"Invalid JSON"}),Se}}),enforce_parameter_schema:ye(),parameter_openapi_schema:be(ve()).optional().nullable().readonly(),global_concurrency_limit_id:y().uuid().optional().nullable()}),Ve={name:"",description:"",tags:[],job_variables:"",enforce_parameter_schema:!0,global_concurrency_limit_id:null},Oe=(o,{mode:s})=>{const a=Z(),t=_e({resolver:xe(Ie(o,{mode:s})),defaultValues:Ve}),{values:n,setValues:i,errors:l,validateForm:j}=de(),{createDeployment:x}=le(),{updateDeployment:r}=te();return c.useEffect(()=>{const{name:O,description:T,work_pool_name:w,work_queue_name:k,tags:L,concurrency_options:F,parameter_openapi_schema:I,enforce_parameter_schema:g,job_variables:v,global_concurrency_limit:S}=o;i(o.parameters),t.reset({description:T,name:O,work_pool_name:w,work_queue_name:k,tags:L,concurrency_options:F,parameter_openapi_schema:I,enforce_parameter_schema:g,job_variables:v?JSON.stringify(v):"",global_concurrency_limit_id:S?.id})},[t,o,i]),{form:t,onSave:async O=>{const{name:T,job_variables:w,description:k,work_pool_name:L,work_queue_name:F,tags:I,enforce_parameter_schema:g,concurrency_options:v,parameter_openapi_schema:S,global_concurrency_limit_id:U}=O,D=w?JSON.parse(w):void 0;if(S&&g)try{await j({schema:S})}catch(b){const _="Unknown error while updating validating schema.";C.error(_),console.error(_,b)}if(l.length>0)return;const P=v?.collision_strategy?{collision_strategy:v.collision_strategy}:void 0;switch(s){case"duplicate":x({concurrency_options:P,description:k,enforce_parameter_schema:g,flow_id:o.flow_id,job_variables:D,name:T,parameters:n,parameter_openapi_schema:S||void 0,paused:o.paused,tags:I,work_pool_name:L||null,work_queue_name:F||null,global_concurrency_limit_id:U},{onSuccess:({id:b})=>{C.success("Deployment created"),a({to:"/deployments/deployment/$id",params:{id:b}})},onError:b=>{const _=b.message||"Unknown error while creating deployment.";console.error(_),C.error(_)}});break;case"edit":r({concurrency_options:P,description:k,enforce_parameter_schema:g,id:o.id,job_variables:D,parameters:n,paused:o.paused,tags:I,work_pool_name:L||null,work_queue_name:F||null,global_concurrency_limit_id:U},{onSuccess:()=>{C.success("Deployment updated"),a({to:"/deployments/deployment/$id",params:{id:o.id}})},onError:b=>{const _=b.message||"Unknown error while updating deployment.";console.error(_),C.error(_)}});break}},parametersFormValues:n,setParametersFormValues:i,parameterFormErrors:l}},qe=({deployment:o,mode:s})=>{const{form:a,onSave:t,parameterFormErrors:n,setParametersFormValues:i,parametersFormValues:l}=Oe(o,{mode:s}),j=a.watch("work_pool_name"),x=a.getValues("parameter_openapi_schema");return e.jsx(pe,{...a,children:e.jsxs("form",{onSubmit:r=>{a.handleSubmit(t)(r)},className:"space-y-4",children:[e.jsx(m,{children:a.formState.errors.root?.message}),e.jsx(f,{variant:"h3",children:"General"}),e.jsx(d,{control:a.control,name:"name",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Name"}),e.jsx(h,{children:e.jsx(ce,{...r,value:r.value,disabled:s==="edit"})}),e.jsx(m,{})]})}),e.jsx(d,{control:a.control,name:"description",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Description (Optional)"}),e.jsx(h,{children:e.jsx(we,{"aria-label":"deployment description input",value:r.value??"",onChange:r.onChange})}),e.jsx(m,{})]})}),e.jsx(d,{control:a.control,name:"work_pool_name",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Work Pool (Optional)"}),e.jsx(h,{children:e.jsx(ke,{presetOptions:[{label:"None",value:""}],onSelect:r.onChange,selected:r.value})}),e.jsx(m,{})]})}),j&&e.jsx(d,{control:a.control,name:"work_queue_name",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Work Queue (Optional)"}),e.jsx(h,{children:e.jsx(je,{workPoolName:j,presetOptions:[{label:"None",value:""}],onSelect:r.onChange,selected:r.value})}),e.jsx(m,{})]})}),e.jsx(d,{control:a.control,name:"tags",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Tags (Optional)"}),e.jsx(h,{children:e.jsx(he,{...r})}),e.jsx(m,{})]})}),e.jsx(d,{control:a.control,name:"concurrency_options.collision_strategy",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:e.jsxs("div",{className:"col gap-1 mb-0.5",children:[e.jsx(f,{variant:"bodySmall",children:"Concurrency Limit Collision Strategy (Optional)"}),e.jsx(f,{variant:"bodySmall",className:"text-muted-foreground",children:"Configure behavior for runs once the concurrency limit is reached."})]})}),e.jsx(h,{children:e.jsx(Fe,{value:r.value,onValueChange:r.onChange})}),e.jsx(m,{})]})}),e.jsx(d,{control:a.control,name:"global_concurrency_limit_id",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Global concurrency limit"}),e.jsx(h,{children:e.jsx(fe,{presetOptions:[{label:"None",value:null}],onSelect:r.onChange,selected:r.value})}),e.jsx(m,{})]})}),e.jsxs("div",{className:"pt-4 border-t",children:[e.jsx(f,{variant:"h3",className:"mb-4",children:"Parameters"}),x&&e.jsx(ue,{schema:x,errors:n,values:l,onValuesChange:i,kinds:["json"]}),e.jsx(d,{control:a.control,name:"enforce_parameter_schema",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Enforce Parameter Schema"}),e.jsx(h,{children:e.jsx(ie,{className:"block",checked:r.value,onCheckedChange:r.onChange})}),e.jsx(m,{})]})})]}),e.jsxs("div",{className:"pt-4 border-t",children:[e.jsx(f,{variant:"h3",className:"mb-4",children:"Job Variables"}),e.jsx(d,{control:a.control,name:"job_variables",render:({field:r})=>e.jsxs(u,{children:[e.jsx(p,{children:"Job Variables (Optional)"}),e.jsx(h,{children:e.jsx(me,{...r})}),e.jsx(m,{})]})})]}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx(H,{to:"/deployments/deployment/$id",params:{id:o.id},children:e.jsx(Q,{variant:"secondary",children:"Cancel"})}),e.jsx(Q,{type:"submit",children:"Save"})]})]})})};export{qe as D};
3
- //# sourceMappingURL=deployment-form-B33C7F2u.js.map
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["GlobalConcurrencyLimitSelect","presetOptions","selected","onSelect","Suspense","jsx","GlobalConcurrencyLimitSelectImplementation","search","setSearch","useState","data","useSuspenseQuery","buildListGlobalConcurrencyLimitsQuery","deferredSearch","useDeferredValue","filteredData","useMemo","globalConcurrencyLimit","filteredPresetOptions","option","Combobox","ComboboxTrigger","ComboboxContent","ComboboxCommandInput","ComboboxCommandEmtpy","ComboboxCommandList","jsxs","ComboboxCommandGroup","ComboboxCommandItem","value","MarkdownInputLazy","lazy","__vitePreload","mod","LazyMarkdownInput","className","props","Skeleton","WorkPoolSelect","WorkPoolSelectImplementation","buildFilterWorkPoolsQuery","workPool","LIMIT_COLLISSION_STRATEGIES","LimitCollissionStrategySelect","onValueChange","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","SelectItem","createFormSchema","deployment","mode","z.object","z.string","z.array","z.enum","val","ctx","err","z.NEVER","z.boolean","z.record","z.unknown","DEFAULT_VALUES","useDeploymentForm","navigate","useNavigate","form","useForm","zodResolver","parametersFormValues","setParametersFormValues","parameterFormErrors","validateParametersForm","useSchemaForm","createDeployment","useCreateDeployment","updateDeployment","useUpdateDeployment","useEffect","name","description","work_pool_name","work_queue_name","tags","concurrency_options","parameter_openapi_schema","enforce_parameter_schema","job_variables","global_concurrency_limit","values","global_concurrency_limit_id","jobVariablesPayload","message","toast","concurrencyOptions","id","error","DeploymentForm","onSave","watchPoolName","parametersOpenAPISchema","Form","e","FormMessage","Typography","FormField","field","FormItem","FormLabel","FormControl","Input","MarkdownInput","WorkQueueSelect","TagsInput","LazySchemaForm","Switch","JsonInput","Link","Button"],"ignoreList":[],"sources":["../../src/components/global-concurrency-limit/global-concurrency-limit-select/global-concurrency-limit-select.tsx","../../src/components/ui/markdown-input-lazy.tsx","../../src/components/work-pools/work-pool-select/work-pool-select.tsx","../../src/components/deployments/deployment-form/limit-collision-strategy-select.tsx","../../src/components/deployments/deployment-form/use-deployment-form.ts","../../src/components/deployments/deployment-form/deployment-form.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Suspense, useDeferredValue, useMemo, useState } from \"react\";\nimport { buildListGlobalConcurrencyLimitsQuery } from \"@/api/global-concurrency-limits\";\nimport {\n\tCombobox,\n\tComboboxCommandEmtpy,\n\tComboboxCommandGroup,\n\tComboboxCommandInput,\n\tComboboxCommandItem,\n\tComboboxCommandList,\n\tComboboxContent,\n\tComboboxTrigger,\n} from \"@/components/ui/combobox\";\n\ntype PresetOption = {\n\tlabel: string;\n\tvalue: string | null | undefined;\n};\n\ntype GlobalConcurrencyLimitSelectProps = {\n\tpresetOptions?: Array<PresetOption>;\n\tselected: string | undefined | null;\n\tonSelect: (name: string | undefined | null) => void;\n};\n\nexport const GlobalConcurrencyLimitSelect = ({\n\tpresetOptions = [],\n\tselected,\n\tonSelect,\n}: GlobalConcurrencyLimitSelectProps) => {\n\treturn (\n\t\t<Suspense>\n\t\t\t<GlobalConcurrencyLimitSelectImplementation\n\t\t\t\tpresetOptions={presetOptions}\n\t\t\t\tselected={selected}\n\t\t\t\tonSelect={onSelect}\n\t\t\t/>\n\t\t</Suspense>\n\t);\n};\n\nconst GlobalConcurrencyLimitSelectImplementation = ({\n\tpresetOptions = [],\n\tselected,\n\tonSelect,\n}: GlobalConcurrencyLimitSelectProps) => {\n\tconst [search, setSearch] = useState(\"\");\n\tconst { data } = useSuspenseQuery(buildListGlobalConcurrencyLimitsQuery());\n\n\tconst deferredSearch = useDeferredValue(search);\n\tconst filteredData = useMemo(() => {\n\t\treturn data.filter((globalConcurrencyLimit) =>\n\t\t\tglobalConcurrencyLimit.name\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(deferredSearch.toLowerCase()),\n\t\t);\n\t}, [data, deferredSearch]);\n\n\tconst filteredPresetOptions = useMemo(() => {\n\t\treturn presetOptions.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(deferredSearch.toLowerCase()),\n\t\t);\n\t}, [deferredSearch, presetOptions]);\n\n\treturn (\n\t\t<Combobox>\n\t\t\t<ComboboxTrigger\n\t\t\t\tselected={Boolean(selected)}\n\t\t\t\taria-label=\"Select a global concurrency limit\"\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tdata.find(\n\t\t\t\t\t\t(globalConcurrencyLimit) => globalConcurrencyLimit.id === selected,\n\t\t\t\t\t)?.name\n\t\t\t\t}\n\t\t\t</ComboboxTrigger>\n\t\t\t<ComboboxContent>\n\t\t\t\t<ComboboxCommandInput\n\t\t\t\t\tvalue={search}\n\t\t\t\t\tonValueChange={setSearch}\n\t\t\t\t\tplaceholder=\"Search for a global concurrency limit...\"\n\t\t\t\t/>\n\t\t\t\t<ComboboxCommandEmtpy>\n\t\t\t\t\tNo global concurrency limit found\n\t\t\t\t</ComboboxCommandEmtpy>\n\t\t\t\t<ComboboxCommandList>\n\t\t\t\t\t<ComboboxCommandGroup>\n\t\t\t\t\t\t{filteredPresetOptions.map((option) => (\n\t\t\t\t\t\t\t<ComboboxCommandItem\n\t\t\t\t\t\t\t\tkey={option.label}\n\t\t\t\t\t\t\t\tselected={selected === option.value}\n\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\tonSelect(option.value);\n\t\t\t\t\t\t\t\t\tsetSearch(\"\");\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t//nb: Stringifies label so that UX has a hoverable state\n\t\t\t\t\t\t\t\tvalue={String(option.label)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t</ComboboxCommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{filteredData.map((globalConcurrencyLimit) => (\n\t\t\t\t\t\t\t<ComboboxCommandItem\n\t\t\t\t\t\t\t\tkey={globalConcurrencyLimit.id}\n\t\t\t\t\t\t\t\tselected={selected === globalConcurrencyLimit.name}\n\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\tonSelect(value);\n\t\t\t\t\t\t\t\t\tsetSearch(\"\");\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue={globalConcurrencyLimit.id}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{globalConcurrencyLimit.name}\n\t\t\t\t\t\t\t</ComboboxCommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ComboboxCommandGroup>\n\t\t\t\t</ComboboxCommandList>\n\t\t\t</ComboboxContent>\n\t\t</Combobox>\n\t);\n};\n","import type { ComponentProps } from \"react\";\nimport { lazy, Suspense } from \"react\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nconst MarkdownInputLazy = lazy(() =>\n\timport(\"./markdown-input\").then((mod) => ({ default: mod.MarkdownInput })),\n);\n\ntype LazyMarkdownInputProps = ComponentProps<typeof MarkdownInputLazy>;\n\nexport function LazyMarkdownInput({\n\tclassName,\n\t...props\n}: LazyMarkdownInputProps) {\n\treturn (\n\t\t<Suspense\n\t\t\tfallback={<Skeleton className={`min-h-[200px] ${className ?? \"\"}`} />}\n\t\t>\n\t\t\t<MarkdownInputLazy className={className} {...props} />\n\t\t</Suspense>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Suspense, useDeferredValue, useMemo, useState } from \"react\";\nimport { buildFilterWorkPoolsQuery } from \"@/api/work-pools\";\nimport {\n\tCombobox,\n\tComboboxCommandEmtpy,\n\tComboboxCommandGroup,\n\tComboboxCommandInput,\n\tComboboxCommandItem,\n\tComboboxCommandList,\n\tComboboxContent,\n\tComboboxTrigger,\n} from \"@/components/ui/combobox\";\n\ntype PresetOption = {\n\tlabel: string;\n\tvalue: string | null | undefined;\n};\n\ntype WorkPoolSelectProps = {\n\tpresetOptions?: Array<PresetOption>;\n\tselected: string | undefined | null;\n\tonSelect: (name: string | undefined | null) => void;\n};\n\nexport const WorkPoolSelect = ({\n\tpresetOptions = [],\n\tselected,\n\tonSelect,\n}: WorkPoolSelectProps) => {\n\treturn (\n\t\t<Suspense>\n\t\t\t<WorkPoolSelectImplementation\n\t\t\t\tpresetOptions={presetOptions}\n\t\t\t\tselected={selected}\n\t\t\t\tonSelect={onSelect}\n\t\t\t/>\n\t\t</Suspense>\n\t);\n};\n\nconst WorkPoolSelectImplementation = ({\n\tpresetOptions = [],\n\tselected,\n\tonSelect,\n}: WorkPoolSelectProps) => {\n\tconst [search, setSearch] = useState(\"\");\n\tconst { data } = useSuspenseQuery(buildFilterWorkPoolsQuery());\n\n\t// nb: because work pools API does not have filtering _like by name, do client-side filtering\n\tconst deferredSearch = useDeferredValue(search);\n\tconst filteredData = useMemo(() => {\n\t\treturn data.filter((workPool) =>\n\t\t\tworkPool.name.toLowerCase().includes(deferredSearch.toLowerCase()),\n\t\t);\n\t}, [data, deferredSearch]);\n\n\tconst filteredPresetOptions = useMemo(() => {\n\t\treturn presetOptions.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(deferredSearch.toLowerCase()),\n\t\t);\n\t}, [deferredSearch, presetOptions]);\n\n\treturn (\n\t\t<Combobox>\n\t\t\t<ComboboxTrigger\n\t\t\t\tselected={Boolean(selected)}\n\t\t\t\taria-label=\"Select a work pool\"\n\t\t\t>\n\t\t\t\t{selected}\n\t\t\t</ComboboxTrigger>\n\t\t\t<ComboboxContent>\n\t\t\t\t<ComboboxCommandInput\n\t\t\t\t\tvalue={search}\n\t\t\t\t\tonValueChange={setSearch}\n\t\t\t\t\tplaceholder=\"Search for a work pool...\"\n\t\t\t\t/>\n\t\t\t\t<ComboboxCommandEmtpy>No work pool found</ComboboxCommandEmtpy>\n\t\t\t\t<ComboboxCommandList>\n\t\t\t\t\t<ComboboxCommandGroup>\n\t\t\t\t\t\t{filteredPresetOptions.map((option) => (\n\t\t\t\t\t\t\t<ComboboxCommandItem\n\t\t\t\t\t\t\t\tkey={option.label}\n\t\t\t\t\t\t\t\tselected={selected === option.value}\n\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\tonSelect(option.value);\n\t\t\t\t\t\t\t\t\tsetSearch(\"\");\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t//nb: Stringifies label so that UX has a hoverable state\n\t\t\t\t\t\t\t\tvalue={String(option.label)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t</ComboboxCommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{filteredData.map((workPool) => (\n\t\t\t\t\t\t\t<ComboboxCommandItem\n\t\t\t\t\t\t\t\tkey={workPool.id}\n\t\t\t\t\t\t\t\tselected={selected === workPool.name}\n\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\tonSelect(value);\n\t\t\t\t\t\t\t\t\tsetSearch(\"\");\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue={workPool.name}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{workPool.name}\n\t\t\t\t\t\t\t</ComboboxCommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ComboboxCommandGroup>\n\t\t\t\t</ComboboxCommandList>\n\t\t\t</ComboboxContent>\n\t\t</Combobox>\n\t);\n};\n","import type { components } from \"@/api/prefect\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@/components/ui/select\";\n\ntype LimitCollissionStrategy =\n\tcomponents[\"schemas\"][\"ConcurrencyLimitStrategy\"];\n\nconst LIMIT_COLLISSION_STRATEGIES = {\n\tENQUEUE: \"ENQUEUE\",\n\tCANCEL_NEW: \"CANCEL_NEW\",\n} satisfies Record<LimitCollissionStrategy, LimitCollissionStrategy>;\n\ntype LimitCollissionStrategySelectProps = {\n\tonValueChange: (value: LimitCollissionStrategy | undefined) => void;\n\tvalue: LimitCollissionStrategy | undefined;\n};\n\nexport const LimitCollissionStrategySelect = ({\n\tonValueChange,\n\tvalue,\n}: LimitCollissionStrategySelectProps) => {\n\treturn (\n\t\t<Select\n\t\t\tvalue={value}\n\t\t\tonValueChange={(value) => {\n\t\t\t\tif (value === \"\") {\n\t\t\t\t\tonValueChange(undefined);\n\t\t\t\t} else {\n\t\t\t\t\tonValueChange(value as LimitCollissionStrategy);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<SelectTrigger>\n\t\t\t\t<SelectValue placeholder={LIMIT_COLLISSION_STRATEGIES.ENQUEUE} />\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent>\n\t\t\t\t<SelectGroup>\n\t\t\t\t\t<SelectItem value={LIMIT_COLLISSION_STRATEGIES.ENQUEUE}>\n\t\t\t\t\t\t{LIMIT_COLLISSION_STRATEGIES.ENQUEUE}\n\t\t\t\t\t</SelectItem>\n\t\t\t\t\t<SelectItem value={LIMIT_COLLISSION_STRATEGIES.CANCEL_NEW}>\n\t\t\t\t\t\t{LIMIT_COLLISSION_STRATEGIES.CANCEL_NEW}\n\t\t\t\t\t</SelectItem>\n\t\t\t\t</SelectGroup>\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n};\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useNavigate } from \"@tanstack/react-router\";\nimport { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport {\n\ttype Deployment,\n\tuseCreateDeployment,\n\tuseUpdateDeployment,\n} from \"@/api/deployments\";\nimport { useSchemaForm } from \"@/components/schemas\";\n\ntype FormMode = \"edit\" | \"duplicate\";\n\nconst createFormSchema = (\n\tdeployment: Deployment,\n\t{ mode }: { mode: FormMode },\n) =>\n\tz.object({\n\t\tname: z.string().refine(\n\t\t\t(value) => {\n\t\t\t\tif (mode === \"edit\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn value !== deployment.name;\n\t\t\t},\n\t\t\t{ message: \"Name must be different from the original deployment\" },\n\t\t),\n\t\tdescription: z.string().nullable().optional(),\n\t\twork_pool_name: z.string().nullable().optional(),\n\t\twork_queue_name: z.string().nullable().optional(),\n\t\ttags: z.array(z.string()).optional(),\n\t\tconcurrency_options: z\n\t\t\t.object({\n\t\t\t\tcollision_strategy: z.enum([\"ENQUEUE\", \"CANCEL_NEW\"]).optional(),\n\t\t\t})\n\t\t\t.nullable()\n\t\t\t.optional(),\n\t\tjob_variables: z.string().superRefine((val, ctx) => {\n\t\t\ttry {\n\t\t\t\tif (!val) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn JSON.parse(val) as Record<string, unknown>;\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err);\n\t\t\t\tctx.addIssue({ code: \"custom\", message: \"Invalid JSON\" });\n\t\t\t\treturn z.NEVER;\n\t\t\t}\n\t\t}),\n\t\tenforce_parameter_schema: z.boolean(),\n\t\tparameter_openapi_schema: z\n\t\t\t.record(z.unknown())\n\t\t\t.optional()\n\t\t\t.nullable()\n\t\t\t.readonly(),\n\t\tglobal_concurrency_limit_id: z.string().uuid().optional().nullable(),\n\t});\n\nexport type DeploymentFormSchema = z.infer<ReturnType<typeof createFormSchema>>;\n\nconst DEFAULT_VALUES: DeploymentFormSchema = {\n\tname: \"\",\n\tdescription: \"\",\n\ttags: [],\n\tjob_variables: \"\",\n\tenforce_parameter_schema: true,\n\tglobal_concurrency_limit_id: null,\n};\n\nexport const useDeploymentForm = (\n\tdeployment: Deployment,\n\t{ mode }: { mode: FormMode },\n) => {\n\tconst navigate = useNavigate();\n\tconst form = useForm({\n\t\tresolver: zodResolver(createFormSchema(deployment, { mode })),\n\t\tdefaultValues: DEFAULT_VALUES,\n\t});\n\tconst {\n\t\tvalues: parametersFormValues,\n\t\tsetValues: setParametersFormValues,\n\t\terrors: parameterFormErrors,\n\t\tvalidateForm: validateParametersForm,\n\t} = useSchemaForm();\n\n\tconst { createDeployment } = useCreateDeployment();\n\tconst { updateDeployment } = useUpdateDeployment();\n\n\t// syncs form state to deployment to update\n\tuseEffect(() => {\n\t\tconst {\n\t\t\tname,\n\t\t\tdescription,\n\t\t\twork_pool_name,\n\t\t\twork_queue_name,\n\t\t\ttags,\n\t\t\tconcurrency_options,\n\t\t\tparameter_openapi_schema,\n\t\t\tenforce_parameter_schema,\n\t\t\tjob_variables,\n\t\t\tglobal_concurrency_limit,\n\t\t} = deployment;\n\n\t\t// nb: parameter form state and validation is handled separately using SchemaForm\n\t\t// parameters has poor typings from openAPI\n\t\tsetParametersFormValues(deployment.parameters as Record<string, unknown>);\n\n\t\t// nb: Handle remaining form fields using react-hook-form\n\t\tform.reset({\n\t\t\tdescription,\n\t\t\tname,\n\t\t\twork_pool_name,\n\t\t\twork_queue_name,\n\t\t\ttags,\n\t\t\tconcurrency_options,\n\t\t\tparameter_openapi_schema,\n\t\t\tenforce_parameter_schema,\n\t\t\tjob_variables: job_variables ? JSON.stringify(job_variables) : \"\",\n\t\t\tglobal_concurrency_limit_id: global_concurrency_limit?.id,\n\t\t});\n\t}, [form, deployment, setParametersFormValues]);\n\n\tconst onSave = async (values: DeploymentFormSchema) => {\n\t\tconst {\n\t\t\tname,\n\t\t\tjob_variables,\n\t\t\tdescription,\n\t\t\twork_pool_name,\n\t\t\twork_queue_name,\n\t\t\ttags,\n\t\t\tenforce_parameter_schema,\n\t\t\tconcurrency_options,\n\t\t\tparameter_openapi_schema,\n\t\t\tglobal_concurrency_limit_id,\n\t\t} = values;\n\n\t\tconst jobVariablesPayload = job_variables\n\t\t\t? (JSON.parse(job_variables) as Record<string, unknown>)\n\t\t\t: undefined;\n\n\t\tif (parameter_openapi_schema && enforce_parameter_schema) {\n\t\t\ttry {\n\t\t\t\tawait validateParametersForm({ schema: parameter_openapi_schema });\n\t\t\t} catch (err) {\n\t\t\t\tconst message = \"Unknown error while updating validating schema.\";\n\t\t\t\ttoast.error(message);\n\t\t\t\tconsole.error(message, err);\n\t\t\t}\n\t\t}\n\n\t\t// Early exit if there's errors\n\t\tif (parameterFormErrors.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst concurrencyOptions = concurrency_options?.collision_strategy\n\t\t\t? { collision_strategy: concurrency_options.collision_strategy }\n\t\t\t: undefined;\n\n\t\tswitch (mode) {\n\t\t\tcase \"duplicate\":\n\t\t\t\tcreateDeployment(\n\t\t\t\t\t{\n\t\t\t\t\t\tconcurrency_options: concurrencyOptions,\n\t\t\t\t\t\tdescription,\n\t\t\t\t\t\tenforce_parameter_schema,\n\t\t\t\t\t\tflow_id: deployment.flow_id,\n\t\t\t\t\t\tjob_variables: jobVariablesPayload,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tparameters: parametersFormValues,\n\t\t\t\t\t\tparameter_openapi_schema: parameter_openapi_schema || undefined,\n\t\t\t\t\t\tpaused: deployment.paused,\n\t\t\t\t\t\ttags,\n\t\t\t\t\t\t// If value is \"\", set as null\n\t\t\t\t\t\twork_pool_name: work_pool_name || null,\n\t\t\t\t\t\t// If value is \"\", set as null\n\t\t\t\t\t\twork_queue_name: work_queue_name || null,\n\t\t\t\t\t\tglobal_concurrency_limit_id,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonSuccess: ({ id }) => {\n\t\t\t\t\t\t\ttoast.success(\"Deployment created\");\n\t\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\t\tto: \"/deployments/deployment/$id\",\n\t\t\t\t\t\t\t\tparams: { id },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: (error) => {\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror.message || \"Unknown error while creating deployment.\";\n\t\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"edit\":\n\t\t\t\tupdateDeployment(\n\t\t\t\t\t{\n\t\t\t\t\t\tconcurrency_options: concurrencyOptions,\n\t\t\t\t\t\tdescription,\n\t\t\t\t\t\tenforce_parameter_schema,\n\t\t\t\t\t\tid: deployment.id,\n\t\t\t\t\t\tjob_variables: jobVariablesPayload,\n\t\t\t\t\t\tparameters: parametersFormValues,\n\t\t\t\t\t\tpaused: deployment.paused,\n\t\t\t\t\t\ttags,\n\t\t\t\t\t\t// If value is \"\", set as null\n\t\t\t\t\t\twork_pool_name: work_pool_name || null,\n\t\t\t\t\t\t// If value is \"\", set as null\n\t\t\t\t\t\twork_queue_name: work_queue_name || null,\n\t\t\t\t\t\tglobal_concurrency_limit_id,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\t\ttoast.success(\"Deployment updated\");\n\t\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\t\tto: \"/deployments/deployment/$id\",\n\t\t\t\t\t\t\t\tparams: { id: deployment.id },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: (error) => {\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror.message || \"Unknown error while updating deployment.\";\n\t\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\treturn {\n\t\tform,\n\t\tonSave,\n\t\tparametersFormValues,\n\t\tsetParametersFormValues,\n\t\tparameterFormErrors,\n\t};\n};\n","import { Link } from \"@tanstack/react-router\";\nimport type { Deployment } from \"@/api/deployments\";\nimport { GlobalConcurrencyLimitSelect } from \"@/components/global-concurrency-limit/global-concurrency-limit-select\";\nimport { LazySchemaForm, type PrefectSchemaObject } from \"@/components/schemas\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,\n} from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { LazyJsonInput as JsonInput } from \"@/components/ui/json-input-lazy\";\nimport { LazyMarkdownInput as MarkdownInput } from \"@/components/ui/markdown-input-lazy\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { TagsInput } from \"@/components/ui/tags-input\";\nimport { Typography } from \"@/components/ui/typography\";\nimport { WorkPoolSelect } from \"@/components/work-pools/work-pool-select\";\nimport { WorkQueueSelect } from \"@/components/work-pools/work-queue-select\";\nimport { LimitCollissionStrategySelect } from \"./limit-collision-strategy-select\";\nimport { useDeploymentForm } from \"./use-deployment-form\";\n\ntype DeploymentFormProps = {\n\tdeployment: Deployment;\n\tmode: \"edit\" | \"duplicate\";\n};\n\nexport const DeploymentForm = ({ deployment, mode }: DeploymentFormProps) => {\n\tconst {\n\t\tform,\n\t\tonSave,\n\t\tparameterFormErrors,\n\t\tsetParametersFormValues,\n\t\tparametersFormValues,\n\t} = useDeploymentForm(deployment, { mode });\n\tconst watchPoolName = form.watch(\"work_pool_name\");\n\tconst parametersOpenAPISchema = form.getValues(\"parameter_openapi_schema\");\n\n\treturn (\n\t\t<Form {...form}>\n\t\t\t<form\n\t\t\t\tonSubmit={(e) => void form.handleSubmit(onSave)(e)}\n\t\t\t\tclassName=\"space-y-4\"\n\t\t\t>\n\t\t\t\t<FormMessage>{form.formState.errors.root?.message}</FormMessage>\n\n\t\t\t\t<Typography variant=\"h3\">General</Typography>\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"name\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>Name</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\tvalue={field.value}\n\t\t\t\t\t\t\t\t\tdisabled={mode === \"edit\"}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"description\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>Description (Optional)</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<MarkdownInput\n\t\t\t\t\t\t\t\t\taria-label=\"deployment description input\"\n\t\t\t\t\t\t\t\t\tvalue={field.value ?? \"\"}\n\t\t\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"work_pool_name\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>Work Pool (Optional)</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<WorkPoolSelect\n\t\t\t\t\t\t\t\t\tpresetOptions={[{ label: \"None\", value: \"\" }]}\n\t\t\t\t\t\t\t\t\tonSelect={field.onChange}\n\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t{watchPoolName && (\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\tname=\"work_queue_name\"\n\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t<FormLabel>Work Queue (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t<WorkQueueSelect\n\t\t\t\t\t\t\t\t\t\tworkPoolName={watchPoolName}\n\t\t\t\t\t\t\t\t\t\tpresetOptions={[{ label: \"None\", value: \"\" }]}\n\t\t\t\t\t\t\t\t\t\tonSelect={field.onChange}\n\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"tags\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>Tags (Optional)</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<TagsInput {...field} />\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"concurrency_options.collision_strategy\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>\n\t\t\t\t\t\t\t\t<div className=\"col gap-1 mb-0.5\">\n\t\t\t\t\t\t\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\t\t\t\t\t\t\tConcurrency Limit Collision Strategy (Optional)\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\tvariant=\"bodySmall\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tConfigure behavior for runs once the concurrency limit is\n\t\t\t\t\t\t\t\t\t\treached.\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<LimitCollissionStrategySelect\n\t\t\t\t\t\t\t\t\tvalue={field.value}\n\t\t\t\t\t\t\t\t\tonValueChange={field.onChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<FormField\n\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\tname=\"global_concurrency_limit_id\"\n\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t<FormLabel>Global concurrency limit</FormLabel>\n\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t<GlobalConcurrencyLimitSelect\n\t\t\t\t\t\t\t\t\tpresetOptions={[{ label: \"None\", value: null }]}\n\t\t\t\t\t\t\t\t\tonSelect={field.onChange}\n\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<div className=\"pt-4 border-t\">\n\t\t\t\t\t<Typography variant=\"h3\" className=\"mb-4\">\n\t\t\t\t\t\tParameters\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{parametersOpenAPISchema && (\n\t\t\t\t\t\t<LazySchemaForm\n\t\t\t\t\t\t\tschema={parametersOpenAPISchema as unknown as PrefectSchemaObject}\n\t\t\t\t\t\t\terrors={parameterFormErrors}\n\t\t\t\t\t\t\tvalues={parametersFormValues}\n\t\t\t\t\t\t\tonValuesChange={setParametersFormValues}\n\t\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\tname=\"enforce_parameter_schema\"\n\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t<FormLabel>Enforce Parameter Schema</FormLabel>\n\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\t\t\tclassName=\"block\"\n\t\t\t\t\t\t\t\t\t\tchecked={field.value}\n\t\t\t\t\t\t\t\t\t\tonCheckedChange={field.onChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"pt-4 border-t\">\n\t\t\t\t\t<Typography variant=\"h3\" className=\"mb-4\">\n\t\t\t\t\t\tJob Variables\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\tname=\"job_variables\"\n\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t<FormLabel>Job Variables (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t<JsonInput {...field} />\n\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex gap-3 justify-end\">\n\t\t\t\t\t<Link to=\"/deployments/deployment/$id\" params={{ id: deployment.id }}>\n\t\t\t\t\t\t<Button variant=\"secondary\">Cancel</Button>\n\t\t\t\t\t</Link>\n\t\t\t\t\t<Button type=\"submit\">Save</Button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</Form>\n\t);\n};\n"],"file":"deployment-form-B33C7F2u.js"}
@@ -1,2 +0,0 @@
1
- import{j as e,L as C,t as B,r as c,F as q,C as Oe,G as $e,D as Be,B as Qe,s as de}from"./vendor-tanstack-BdLtprmr.js";import{V as ue,q as j,I,y as F,B as We,g as He,h as ae,bw as Ge,bF as Je,bH as Xe,ap as k,L as re,aR as qe,af as he,aI as Ke,cR as Ye,cw as J,U as Ze,aA as me,aB as xe,aD as V,aC as P,$ as es,a_ as pe,p as je,cS as ge,cT as K,G as z,a7 as Y,bl as Z,a2 as fe,a3 as ve,a4 as Se,a5 as Ce,S as ss,a as ns,b as ts,c as as,e as rs,cU as os,cV as ls,aQ as is,cW as cs,cX as ds,av as us,cY as hs,bX as De,bU as we,bV as ye,bW as be,C as ms,cZ as xs,c_ as ps,b9 as js,cu as gs,c$ as fs,aP as oe,aE as le}from"./index-V_xTKaEb.js";import{D as _e}from"./delete-confirmation-dialog-dLycVNo4.js";import{D as ee,a as se,b as ne,c as Ne,d as E,f as vs}from"./dropdown-menu-B9LKPlz7.js";import{L as Ss}from"./lazy-markdown-B9vEkJ0h.js";import{D as Cs,W as Ds}from"./work-pool-filter-CGfXNujK.js";import{S as ws}from"./sort-filter-DY7vgl7C.js";import{S as ys,a as Te,F as Re}from"./flow-runs-pagination-CykMKOhv.js";import{u as Ee,F as Fe}from"./use-flow-runs-selected-rows-1YE-VIgM.js";import{D as bs}from"./data-table-QSHqmTar.js";import{D as _s}from"./deployment-links-CGjJpxJA.js";import{S as Ns}from"./index-B9ttjsyu.js";import{a as ke}from"./zod-B1GLD-Zc.js";import{a0 as Ts,$ as Rs}from"./vendor-date-Cl1Jav-N.js";import{c as Me,o as b,b as X,s as L,d as Es,e as A,n as U,f as Fs,a as ie}from"./vendor-forms-BlFSCfFw.js";import{c as ks}from"./vendor-recharts-CY3PKigC.js";import{c as Ie}from"./cronstrue-p-STK_QW.js";import{F as Ve,a as f,b as _,c as N,d as T,e as R}from"./form-DOdmIC3A.js";import{T as Pe}from"./timezone-select-DPtR_b06.js";import{ao as Ms}from"./vendor-radix-CJc458uP.js";import{u as Is}from"./use-delete-confirmation-dialog-CkL-rSsp.js";import{u as Vs,a as Ps}from"./use-quick-run-DzSmbSlu.js";import"./vendor-react-HBv6Kpyp.js";import"./table-ChOwO4Pk.js";import"./work-queue-icon-text-vWlRNW-b.js";const Ae=({search:s,sort:n,stateFilter:r,deploymentFilter:a,workPoolFilter:t})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 pr-2 border-r-2",children:[e.jsx("div",{className:"min-w-56",children:e.jsx(ue,{"aria-label":"search by run name",placeholder:"Search by run name",value:s.value,onChange:i=>s.onChange(i.target.value)})}),e.jsx("div",{className:"min-w-56",children:e.jsx(ys,{selectedFilters:r.value,onSelectFilter:r.onSelect})}),a&&e.jsx("div",{className:"min-w-56",children:e.jsx(Cs,{selectedDeployments:a.value,onSelectDeployments:a.onSelect})}),t&&e.jsx("div",{className:"min-w-56",children:e.jsx(Ds,{selectedWorkPools:t.value,onSelectWorkPools:t.onSelect})})]}),e.jsx(ws,{value:n.value,onSelect:n.onSelect})]}),As=({id:s,onDelete:n})=>{const r=a=>{navigator.clipboard.writeText(a),F.success("ID copied")};return e.jsxs(ee,{children:[e.jsx(se,{asChild:!0,children:e.jsxs(j,{variant:"outline",className:"size-8 p-0",children:[e.jsx("span",{className:"sr-only",children:"Open menu"}),e.jsx(I,{id:"MoreVertical",className:"size-4"})]})}),e.jsxs(ne,{align:"end",children:[e.jsx(Ne,{children:"Actions"}),e.jsx(E,{onClick:()=>r(s),children:"Copy ID"}),e.jsx(C,{to:"/deployments/deployment/$id/edit",params:{id:s},children:e.jsx(E,{children:"Edit"})}),e.jsx(E,{onClick:n,children:"Delete"}),e.jsx(C,{to:"/deployments/deployment/$id/duplicate",params:{id:s},children:e.jsx(E,{children:"Duplicate"})})]})]})},Ls=({deployment:s})=>e.jsx(We,{children:e.jsxs(He,{children:[e.jsx(ae,{children:e.jsx(Ge,{to:"/deployments",className:"text-xl font-semibold",children:"Deployments"})}),e.jsx(Je,{}),e.jsx(ae,{className:"text-xl font-semibold",children:e.jsx(Xe,{children:s.name})})]})}),Us=({deployment:s})=>{const n=JSON.stringify(s.job_variables??{},null,2),r=JSON.stringify(s.pull_steps??[],null,2);return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(k,{variant:"h4",children:"Job Variables"}),e.jsx(re,{copy:!0,disabled:!0,hideLineNumbers:!0,value:n}),e.jsx(k,{variant:"h4",children:"Pull Steps "}),e.jsx(re,{copy:!0,disabled:!0,hideLineNumbers:!0,value:r})]})},zs=({deployment:s})=>e.jsx("div",{className:"prose max-w-none",children:e.jsx(Ss,{children:s.description??""})}),Os=s=>{const{data:n,error:r}=B(qe(s)),a=c.useMemo(()=>n?n.map(o=>o.flow_id):[],[n]),{data:t,error:i}=B(he({flows:{id:{any_:a},operator:"and_"},offset:0,sort:"CREATED_DESC"},{enabled:a.length>0})),d=c.useMemo(()=>t?new Map(t.map(o=>[o.id,o])):new Map,[t]);return n&&n.length===0?{status:"success",error:null,data:[]}:n&&d.size>0?{status:"success",error:null,data:n.map(o=>{const u=d.get(o.flow_id);return{...o,flow:u}})}:r||i?{status:"error",error:r||i,data:void 0}:{status:"pending",error:null,data:void 0}},Le=s=>{const{data:n,error:r}=B(Ke(s)),a=c.useMemo(()=>n?n.results.map(o=>o.flow_id):[],[n]),{data:t,error:i}=B(he({flows:{id:{any_:a},operator:"and_"},offset:0,sort:"CREATED_DESC"},{enabled:a.length>0})),d=c.useMemo(()=>t?new Map(t.map(o=>[o.id,o])):new Map,[t]);return n&&n.results.length===0?{status:"success",error:null,data:{...n,results:[]}}:n&&d.size>0?{status:"success",error:null,data:{...n,results:n.results.map(o=>{const u=d.get(o.flow_id);return{...o,flow:u}})}}:r||i?{status:"error",error:r||i,data:void 0}:{status:"pending",error:null,data:void 0}},D=q("/deployments/deployment/$id"),$s=({deployment:s})=>{const[n,r,{clearSet:a,onSelectRow:t}]=Ee(),[i,d]=Ws(),[o,u]=Hs(),[l,m]=Gs(),[h,x]=Js(),y=Qs(),{data:g}=Le({deployments:{operator:"and_",id:{any_:[s.id]}},flow_runs:{name:{like_:o||void 0},state:{name:{any_:h.length===0?void 0:h},operator:"or_"},operator:"and_"},limit:i.limit,page:i.page,sort:l}),p=c.useMemo(()=>{if(g)return{...g,results:g.results.map(ze=>({...ze,deployment:s}))}},[g,s]),Q=y?()=>{y(),a()}:void 0,O=Bs(s);return e.jsxs("div",{className:"flex flex-col gap-2",children:[O&&e.jsxs("div",{className:"flex flex-col gap-2 border-b py-2",children:[e.jsx(k,{variant:"bodyLarge",children:"Next Run"}),e.jsx(Ye,{flowRun:O})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Fe,{count:p?.count,results:p?.results,selectedRows:n,setSelectedRows:r}),e.jsx(Ae,{search:{value:o,onChange:u},sort:{value:l,onSelect:m},stateFilter:{value:new Set(h),onSelect:x}})]}),e.jsx(Te,{flowRuns:p?.results,selectedRows:n,onSelect:t,onClearFilters:Q}),p&&e.jsx(Re,{count:p.count,pagination:i,onChangePagination:d,pages:p.pages})]})]})};function Bs(s){const{data:n}=Os({deployments:{id:{any_:[s.id]},operator:"and_"},flow_runs:{state:{name:{any_:["Scheduled"]},operator:"and_"},operator:"and_"},sort:"EXPECTED_START_TIME_ASC",limit:1,offset:0});return c.useMemo(()=>{if(!(!n||!n[0]))return{...n[0],deployment:s}},[n,s])}function Qs(){const{runs:s}=D.useSearch(),n=D.useNavigate(),r=c.useCallback(()=>{n({to:".",search:t=>({...t,runs:void 0}),replace:!0})},[n]);return c.useMemo(()=>!!s,[s])?r:void 0}function Ws(){const{runs:s}=D.useSearch(),n=D.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,runs:{...s,...t}}),replace:!0})},[n,s]);return[c.useMemo(()=>({page:s?.page??1,limit:s?.limit??10}),[s?.limit,s?.page]),r]}function Hs(){const{runs:s}=D.useSearch(),n=D.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,runs:{...s,flowRuns:{...s?.flowRuns,name:t}}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.flowRuns?.name??"",[s?.flowRuns?.name]),r]}function Gs(){const{runs:s}=D.useSearch(),n=D.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,runs:{...s,sort:t}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.sort??"START_TIME_DESC",[s?.sort]),r]}function Js(){const{runs:s}=D.useSearch(),n=D.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,runs:{...s,flowRuns:{...s?.flowRuns,state:t?Array.from(t):void 0}}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.flowRuns?.state??J,[s?.flowRuns?.state]),r]}const w=q("/deployments/deployment/$id"),Xs=({deployment:s})=>{const[n,r,{clearSet:a,onSelectRow:t}]=Ee(),[i,d]=Ks(),[o,u]=Ys(),[l,m]=Zs(),[h,x]=en(),y=qs(),{data:g}=Le({deployments:{operator:"and_",id:{any_:[s.id]}},flow_runs:{name:{like_:o||void 0},state:{name:{any_:h.length===0?void 0:h},operator:"or_"},operator:"and_"},limit:i.limit,page:i.page,sort:l}),p=c.useMemo(()=>{if(g)return{...g,results:g.results.map(O=>({...O,deployment:s}))}},[g,s]),Q=y?()=>{y(),a()}:void 0;return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Fe,{count:p?.count,results:p?.results,selectedRows:n,setSelectedRows:r}),e.jsx(Ae,{search:{value:o,onChange:u},sort:{value:l,onSelect:m},stateFilter:{value:new Set(h),onSelect:x}})]}),e.jsx(Te,{flowRuns:p?.results,selectedRows:n,onSelect:t,onClearFilters:Q}),p&&p.results.length>0&&e.jsx(Re,{count:p.count,pagination:i,onChangePagination:d,pages:p.pages})]})};function qs(){const{upcoming:s}=w.useSearch(),n=w.useNavigate(),r=c.useCallback(()=>{n({to:".",search:t=>({...t,upcoming:void 0}),replace:!0})},[n]);return c.useMemo(()=>!!s,[s])?r:void 0}function Ks(){const{upcoming:s}=w.useSearch(),n=w.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,upcoming:{...s,...t}}),replace:!0})},[n,s]);return[c.useMemo(()=>({page:s?.page??1,limit:s?.limit??5}),[s?.limit,s?.page]),r]}function Ys(){const{upcoming:s}=w.useSearch(),n=w.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,upcoming:{...s,flowRuns:{...s?.flowRuns,name:t}}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.flowRuns?.name??"",[s?.flowRuns?.name]),r]}function Zs(){const{upcoming:s}=w.useSearch(),n=w.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,upcoming:{...s,sort:t}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.sort??"START_TIME_ASC",[s?.sort]),r]}function en(){const{upcoming:s}=w.useSearch(),n=w.useNavigate(),r=c.useCallback(t=>{n({to:".",search:i=>({...i,upcoming:{...s,flowRuns:{...s?.flowRuns,state:t?Array.from(t):void 0}}}),replace:!0})},[n,s]);return[c.useMemo(()=>s?.flowRuns?.state??["Scheduled"],[s?.flowRuns?.state]),r]}const $=Qe(),sn=[$.accessor("key",{header:"Key"}),$.accessor("value",{header:"Override"}),$.accessor("defaultValue",{header:"Default"}),$.accessor("type",{header:"Type"})],nn=s=>c.useMemo(()=>{if(!s.parameter_openapi_schema)return[];const n=s.parameter_openapi_schema.properties,r=s.parameters;return Object.keys(n).sort((a,t)=>n[a].position-n[t].position).map(a=>{const t=n[a];return{key:a,value:r[a],defaultValue:t.default,type:t.type}})},[s]),tn=({deployment:s})=>{const[n,r]=c.useState(""),a=nn(s),t=c.useDeferredValue(n),i=c.useMemo(()=>a.filter(o=>o.key.toLowerCase().includes(t.toLowerCase())||o.value?.toString().toLowerCase().includes(t.toLowerCase())||o.defaultValue?.toString().toLowerCase().includes(t.toLowerCase())||o.type?.toString().toLowerCase().includes(t.toLowerCase())),[a,t]),d=Oe({data:i,columns:sn,getCoreRowModel:Be(),defaultColumn:{maxSize:300},getPaginationRowModel:$e()});return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(k,{variant:"bodySmall",className:"text-muted-foreground",children:[i.length," ",Ze(i.length,"parameter")]}),e.jsx("div",{className:"sm:col-span-2 md:col-span-2 lg:col-span-3",children:e.jsx(ue,{className:"sm:col-span-2 md:col-span-2 lg:col-span-3",placeholder:"Search parameters",value:n,onChange:o=>r(o.target.value)})})]}),e.jsx(bs,{table:d})]})},an=q("/deployments/deployment/$id"),rn=({deployment:s})=>{const{tab:n}=an.useSearch(),r=on(s);return e.jsxs(me,{defaultValue:r[0].value,value:n,children:[e.jsx(xe,{children:r.map(({value:a,LinkComponent:t})=>e.jsx(t,{},a))}),r.map(({value:a,ViewComponent:t})=>e.jsx(t,{},a))]})};function on(s){return c.useMemo(()=>[{value:"Runs",LinkComponent:()=>e.jsx(C,{to:".",search:{tab:"Runs"},children:e.jsx(P,{value:"Runs",children:"Runs"})}),ViewComponent:()=>e.jsx(V,{value:"Runs",children:e.jsx($s,{deployment:s})})},{value:"Upcoming",LinkComponent:()=>e.jsx(C,{to:".",search:{tab:"Upcoming"},children:e.jsx(P,{value:"Upcoming",children:"Upcoming"})}),ViewComponent:()=>e.jsx(V,{value:"Upcoming",children:e.jsx(Xs,{deployment:s})})},{value:"Parameters",LinkComponent:()=>e.jsx(C,{to:".",search:{tab:"Parameters"},children:e.jsx(P,{value:"Parameters",children:"Parameters"})}),ViewComponent:()=>e.jsx(V,{value:"Parameters",children:e.jsx(tn,{deployment:s})})},{value:"Configuration",LinkComponent:()=>e.jsx(C,{to:".",search:{tab:"Configuration"},children:e.jsx(P,{value:"Configuration",children:"Configuration"})}),ViewComponent:()=>e.jsx(V,{value:"Configuration",children:e.jsx(Us,{deployment:s})})},{value:"Description",LinkComponent:()=>e.jsx(C,{to:".",search:{tab:"Description"},children:e.jsx(P,{value:"Description",children:"Description"})}),ViewComponent:()=>e.jsx(V,{value:"Description",children:e.jsx(zs,{deployment:s})})}],[s])}const v=()=>e.jsx("dd",{className:"text-muted-foreground text-sm",children:"None"}),ce=({children:s})=>e.jsx("dt",{className:"text-sm text-muted-foreground",children:s}),S=({className:s,children:n})=>e.jsx("dd",{className:pe("text-sm",s),children:n}),ln=({deployment:s})=>{const n=[{field:"Status",ComponentValue:()=>s.status?e.jsx("dd",{children:e.jsx(Ns,{status:s.status})}):e.jsx(v,{})},{field:"Created",ComponentValue:()=>s.created?e.jsx(S,{className:"font-mono",children:s.created}):e.jsx(v,{})},{field:"Updated",ComponentValue:()=>s.updated?e.jsx(S,{className:"font-mono",children:s.updated}):e.jsx(v,{})},{field:"Entrypoint",ComponentValue:()=>s.entrypoint?e.jsx(S,{children:s.entrypoint}):e.jsx(v,{})},{field:"Path",ComponentValue:()=>s.path?e.jsx(S,{children:s.path}):e.jsx(v,{})},{field:"Concurrency Limit",ComponentValue:()=>s.global_concurrency_limit?e.jsx(S,{children:s.global_concurrency_limit.limit}):e.jsx(v,{})}],r=[{field:"Flow ID",ComponentValue:()=>e.jsx(S,{children:s.flow_id})},{field:"Deployment ID",ComponentValue:()=>e.jsx(S,{children:s.id})},{field:"Deployment Version",ComponentValue:()=>s.version?e.jsx(S,{children:s.version}):e.jsx(v,{})},{field:"Storage Document ID",ComponentValue:()=>s.storage_document_id?e.jsx(S,{children:s.storage_document_id}):e.jsx(v,{})},{field:"Infrastructure Document ID",ComponentValue:()=>s.infrastructure_document_id?e.jsx(S,{children:s.infrastructure_document_id}):e.jsx(v,{})},{field:"Tags",ComponentValue:()=>s.tags&&s.tags.length>0?e.jsx("dd",{children:e.jsx(es,{tags:s.tags,maxTagsDisplayed:4})}):e.jsx(v,{})}];return e.jsxs("div",{children:[e.jsx("ul",{className:"flex flex-col gap-3",children:n.map(({field:a,ComponentValue:t})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(ce,{children:a}),e.jsx(t,{})]})},a))}),e.jsx("hr",{className:"my-3"}),e.jsx("ul",{className:"flex flex-col gap-3",children:r.map(({field:a,ComponentValue:t})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(ce,{children:a}),e.jsx(t,{})]})},a))})]})};var Ue=Ts();const W=s=>{let n="",r=!1;try{Ue.CronExpressionParser.parse(s),n=Ie.toString(s),r=!0}catch{r=!1,n="Invalid expression"}return{description:n,isCronValid:r}},cn=({onChange:s,...n})=>{const[r,a]=c.useState(W(String(n.value)).description),[t,i]=c.useState(W(String(n.value)).isCronValid),d=o=>{if(s){s(o);const{description:u,isCronValid:l}=W(o.target.value);a(u),i(l)}};return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(je,{...n,onChange:d}),e.jsx(k,{variant:"bodySmall",className:ks(t?"text-muted-foreground":"text-red-500"),children:r})]})},dn=s=>{try{return Ue.CronExpressionParser.parse(s),!0}catch{return!1}},un=b({active:X(),schedule:b({cron:L().refine(dn),timezone:L().default("Etc/UTC"),day_or:X().default(!0)})}),H={active:!0,schedule:{cron:"* * * * *",timezone:"Etc/UTC",day_or:!0}},hn=({deployment_id:s,scheduleToEdit:n,onSubmit:r})=>{const{createDeploymentSchedule:a,isPending:t}=ge(),{updateDeploymentSchedule:i,isPending:d}=K(),o=Me({resolver:ke(un),defaultValues:H});c.useEffect(()=>{if(n){const{active:l,schedule:m}=n;if("cron"in m){const{cron:h,day_or:x,timezone:y}=m;o.reset({active:l,schedule:{cron:h,day_or:x,timezone:y??"Etc/UTC"}})}}else o.reset(H)},[o,n]);const u=l=>{const m=()=>{o.reset(H),r()};n?i({deployment_id:s,schedule_id:n.id,...l},{onSuccess:()=>{F.success("Deployment schedule updated")},onError:h=>{const x=h.message||"Unknown error while updating deployment schedule.";o.setError("root",{message:x})},onSettled:m}):a({deployment_id:s,...l},{onSuccess:()=>{F.success("Deployment schedule created")},onError:h=>{const x=h.message||"Unknown error while creating deployment schedule.";o.setError("root",{message:x})},onSettled:m})};return e.jsx(Ve,{...o,children:e.jsxs("form",{onSubmit:l=>{o.handleSubmit(u)(l)},className:"space-y-4",children:[e.jsx(f,{children:o.formState.errors.root?.message}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(_,{control:o.control,name:"active",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Active"}),e.jsx(R,{children:e.jsx(z,{className:"block",checked:l.value,onCheckedChange:l.onChange})}),e.jsx(f,{})]})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"w-3/4",children:e.jsx(_,{control:o.control,name:"schedule.cron",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Value"}),e.jsx(R,{children:e.jsx(cn,{...l})}),e.jsx(f,{})]})})}),e.jsx(_,{control:o.control,name:"schedule.day_or",render:({field:l})=>e.jsxs(N,{children:[e.jsxs(T,{"aria-label":"Day Or",children:["Day Or ",e.jsx(mn,{})]}),e.jsx(R,{children:e.jsx(z,{className:"block",checked:l.value,onCheckedChange:l.onChange})}),e.jsx(f,{})]})})]}),e.jsx(_,{control:o.control,name:"schedule.timezone",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Timezone"}),e.jsx(R,{children:e.jsx(Pe,{selectedValue:l.value,onSelect:l.onChange})}),e.jsx(f,{})]})})]}),e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(j,{variant:"outline",children:"Close"})}),e.jsx(j,{type:"submit",loading:t||d,children:"Save"})]})]})})},mn=()=>e.jsxs(fe,{children:[e.jsx(Z,{asChild:!0,children:e.jsx("button",{type:"button",className:"cursor-help",children:e.jsx(I,{id:"Info",className:"size-4 inline"})})}),e.jsxs(ve,{"aria-describedby":void 0,children:[e.jsx(Se,{children:e.jsx(Ce,{children:"Day Or"})}),e.jsx(k,{children:'When the "Day Or" value is off, this schedule will connect day of the month and day of the week entries using OR logic; when on it will connect them using AND logic.'})]})]}),xn=[{label:"Seconds",value:"seconds"},{label:"Minutes",value:"minutes"},{label:"Hours",value:"hours"},{label:"Days",value:"days"}],M={seconds:1,minutes:60,hours:3600,days:24*3600},pn=s=>{let n=s;const r=Math.floor(s/M.days);if(n%=M.days,n===0)return{interval_value:r,interval_time:"days"};const a=Math.floor(s/M.hours);if(n%=M.hours,n===0)return{interval_value:a,interval_time:"hours"};const t=Math.floor(s/M.minutes);return n%=M.minutes,n===0?{interval_value:t,interval_time:"minutes"}:{interval_value:n,interval_time:"seconds"}},jn=b({active:X(),schedule:b({interval_value:U().or(L()).pipe(Fs.number()),interval_time:A(["seconds","minutes","hours","days"]),anchor_date:Es(),timezone:L().default("Etc/UTC")})}),G={active:!0,schedule:{interval_value:60,interval_time:"minutes",anchor_date:new Date,timezone:"Etc/UTC"}},gn=({deployment_id:s,scheduleToEdit:n,onSubmit:r})=>{const{createDeploymentSchedule:a,isPending:t}=ge(),{updateDeploymentSchedule:i,isPending:d}=K(),o=Me({resolver:ke(jn),defaultValues:G});c.useEffect(()=>{if(n){const{active:l,schedule:m}=n;if("interval"in m){const{interval:h,anchor_date:x,timezone:y}=m,{interval_value:g,interval_time:p}=pn(h);o.reset({active:l,schedule:{interval_value:g,interval_time:p,anchor_date:x?new Date(x):new Date,timezone:y??"Etc/UTC"}})}}else o.reset(G)},[o,n]);const u=l=>{const m=()=>{o.reset(G),r()};n?i({deployment_id:s,schedule_id:n.id,active:l.active,schedule:{interval:l.schedule.interval_value*M[l.schedule.interval_time],anchor_date:l.schedule.anchor_date.toISOString(),timezone:l.schedule.timezone}},{onSuccess:()=>{F.success("Deployment schedule updated")},onError:h=>{const x=h.message||"Unknown error while updating deployment schedule.";o.setError("root",{message:x})},onSettled:m}):a({deployment_id:s,active:l.active,schedule:{interval:l.schedule.interval_value*M[l.schedule.interval_time],anchor_date:l.schedule.anchor_date.toISOString(),timezone:l.schedule.timezone}},{onSuccess:()=>{F.success("Deployment schedule created")},onError:h=>{const x=h.message||"Unknown error while creating deployment schedule.";o.setError("root",{message:x})},onSettled:m})};return e.jsx(Ve,{...o,children:e.jsxs("form",{onSubmit:l=>{o.handleSubmit(u)(l)},className:"space-y-4",children:[e.jsx(f,{children:o.formState.errors.root?.message}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(_,{control:o.control,name:"active",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Active"}),e.jsx(R,{children:e.jsx(z,{className:"block",checked:l.value,onCheckedChange:l.onChange})}),e.jsx(f,{})]})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"w-3/4",children:e.jsx(_,{control:o.control,name:"schedule.interval_value",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Value"}),e.jsx(R,{children:e.jsx(je,{...l})}),e.jsx(f,{})]})})}),e.jsx(_,{control:o.control,name:"schedule.interval_time",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Interval"}),e.jsxs(ss,{onValueChange:l.onChange,defaultValue:l.value,value:l.value,children:[e.jsx(R,{children:e.jsx(ns,{children:e.jsx(ts,{placeholder:"Select interval"})})}),e.jsx(as,{children:xn.map(({label:m,value:h})=>e.jsx(rs,{value:h,children:m},h))})]}),e.jsx(f,{})]})})]}),e.jsx(_,{control:o.control,name:"schedule.anchor_date",render:({field:l})=>e.jsxs(N,{className:"flex flex-col",children:[e.jsx(T,{children:"Anchor date"}),e.jsxs(os,{children:[e.jsx(ls,{asChild:!0,children:e.jsx(R,{children:e.jsxs(j,{variant:"outline",className:pe("w-full",!l.value&&"text-muted-foreground"),children:[is(l.value,"dateTime"),e.jsx(I,{id:"Calendar",className:"ml-auto size-4 opacity-50"})]})})}),e.jsx(cs,{className:"w-auto p-0",align:"start",children:e.jsx(ds,{mode:"single",selected:l.value,onSelect:l.onChange})})]}),e.jsx(f,{})]})}),e.jsx(_,{control:o.control,name:"schedule.timezone",render:({field:l})=>e.jsxs(N,{children:[e.jsx(T,{children:"Timezone"}),e.jsx(R,{children:e.jsx(Pe,{selectedValue:l.value,onSelect:l.onChange})}),e.jsx(f,{})]})})]}),e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(j,{variant:"outline",children:"Close"})}),e.jsx(j,{type:"submit",loading:t||d,children:"Save"})]})]})})},fn=()=>e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(k,{children:"Sorry, modifying RRule schedules via the UI is currently unsupported; select a different schedule type above or modify your schedule in code."}),e.jsxs(Y,{children:[e.jsx(Ms,{asChild:!0,children:e.jsx(j,{variant:"outline",children:"Close"})}),e.jsx(j,{disabled:!0,children:"Save"})]})]}),vn=({deploymentId:s,onOpenChange:n,open:r,scheduleToEdit:a,onSubmit:t})=>{const[i,d]=c.useState("interval");c.useEffect(()=>{if(!a)return;const{schedule:u}=a;"interval"in u?d("interval"):"cron"in u?d("cron"):d("rrule")},[a]);const o=[{value:"interval",label:"Interval",Component:()=>e.jsx(gn,{deployment_id:s,onSubmit:t,scheduleToEdit:a})},{value:"cron",label:"Cron",Component:()=>e.jsx(hn,{deployment_id:s,onSubmit:t,scheduleToEdit:a})},{value:"rrule",label:"RRule",Component:()=>e.jsx(fn,{})}];return e.jsx(fe,{open:r,onOpenChange:n,children:e.jsxs(ve,{"aria-describedby":void 0,children:[e.jsx(Se,{children:e.jsxs(Ce,{children:[a?"Edit":"Add"," Schedule"]})}),e.jsxs(me,{defaultValue:o[0].value,value:i,children:[e.jsx(xe,{children:o.map(({value:u,label:l})=>e.jsx(P,{value:u,onClick:()=>d(u),children:l},u))}),o.map(({value:u,Component:l})=>e.jsx(V,{value:u,children:e.jsx(l,{})},u))]})]})})},te=s=>{const{schedule:n}=s;return"interval"in n?`Every ${us(n.interval*1e3)}`:"cron"in n?Ie.toString(n.cron):Rs(n.rrule).toText()},Sn=()=>{const[s,n]=Is(),{deleteDeploymentSchedule:r}=hs();return[s,t=>n({title:"Delete Schedule",description:`Are you sure you want to delete ${te(t)} schedule?`,onConfirm:()=>{const{id:i,deployment_id:d}=t;if(!d)throw new Error("'deployment_id' expected");r({deployment_id:d,schedule_id:i},{onSuccess:()=>F.success("Schedule deleted"),onError:o=>{const u=o.message||"Unknown error while deleting schedule.";console.error(u)}})}})]},Cn=({deploymentSchedule:s,onEditSchedule:n})=>{const[r,a]=Sn(),t=o=>{navigator.clipboard.writeText(o),F.success("ID copied")},i=()=>a(s),d=()=>n(s.id);return e.jsxs(e.Fragment,{children:[e.jsxs(ee,{children:[e.jsx(se,{asChild:!0,children:e.jsxs(j,{variant:"outline",className:"size-8 p-0",children:[e.jsx("span",{className:"sr-only",children:"Open menu"}),e.jsx(I,{id:"MoreVertical",className:"size-4"})]})}),e.jsxs(ne,{align:"end",children:[e.jsx(Ne,{children:"Actions"}),e.jsx(E,{onClick:()=>t(s.id),children:"Copy ID"}),e.jsx(E,{onClick:d,children:"Edit"}),e.jsx(E,{onClick:i,children:"Delete"})]})]}),e.jsx(_e,{...r})]})},Dn=({deploymentSchedule:s,disabled:n})=>{const{updateDeploymentSchedule:r}=K(),a=t=>{const{id:i,deployment_id:d}=s;if(!d)throw new Error("'deployment_id' expected");r({schedule_id:i,deployment_id:d,active:t},{onSuccess:()=>F.success(`Deployment schedule ${t?"active":"paused"}`),onError:o=>{const u=o.message||"Unknown error while updating deployment schedule.";console.error(u)}})};return e.jsx(De,{children:e.jsxs(we,{children:[e.jsx(ye,{asChild:!0,children:e.jsx("div",{children:e.jsx(z,{"aria-label":`toggle ${te(s)}`,checked:s.active,onCheckedChange:a,disabled:n})})}),n&&e.jsx(be,{children:"Pause or resume this schedule"})]})})},wn=({deploymentSchedule:s,disabled:n,onEditSchedule:r})=>e.jsx(ms,{className:"p-3",children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(k,{children:te(s)}),e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx(Dn,{deploymentSchedule:s,disabled:n}),e.jsx(Cn,{deploymentSchedule:s,onEditSchedule:r})]})]})}),yn=({deployment:s})=>{const{updateDeployment:n}=xs(),r=t=>{n({id:s.id,paused:!t},{onSuccess:()=>{F.success(`Deployment ${t?"active":"paused"}`)},onError:i=>{const d=i.message||"Unknown error while updating deployment";console.error(d)}})},a=s.entrypoint===""||s.entrypoint===null;return e.jsx(De,{children:e.jsxs(we,{children:[e.jsx(ye,{asChild:!0,children:e.jsx("div",{children:e.jsx(z,{"aria-label":"Pause or resume all schedules",disabled:a,onCheckedChange:r,checked:!s.paused})})}),e.jsx(be,{children:"Pause or resume all schedules"})]})})},bn=3,_n=({deployment:s,onAddSchedule:n,onEditSchedule:r})=>{const a=c.useMemo(()=>s.schedules?s.schedules.sort((t,i)=>t.created?i.created?Date.parse(t.created)-Date.parse(i.created):1:-1):[],[s.schedules]);return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(k,{variant:"bodySmall",className:"text-muted-foreground",children:"Schedules"}),(a.length>bn||s.paused)&&e.jsx(yn,{deployment:s})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[a.map(t=>e.jsx(wn,{disabled:s.paused,deploymentSchedule:t,onEditSchedule:r},t.id)),e.jsx("div",{children:e.jsxs(j,{size:"sm",onClick:n,children:[e.jsx(I,{id:"Plus",className:"mr-2 size-4"})," Schedule"]})})]})]})},Nn=({deployment:s})=>e.jsx(c.Suspense,{fallback:e.jsx(En,{numSkeletons:2}),children:e.jsx(Tn,{deployment:s})}),Tn=({deployment:s})=>{const{data:n}=de(ps(`prefect.deployment.${s.id}`));return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"Triggers"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Rn,{automations:n}),e.jsx(C,{to:"/automations/create",search:{actions:{type:"run-deployment",deploymentId:s.id,parameters:s.parameters}},children:e.jsxs(j,{size:"sm",children:[e.jsx(I,{id:"Plus",className:"mr-2 size-4"})," Add"]})})]})]})},Rn=({automations:s})=>e.jsx("ul",{className:"flex flex-col gap-1",children:s.map(n=>e.jsx("li",{children:e.jsxs(C,{to:"/automations/automation/$id",params:{id:n.id},className:"flex items-center text-xs",children:[e.jsx(I,{id:"Bot",className:"mr-1 size-4"}),e.jsx("div",{children:n.name})]})},n.id))}),En=({numSkeletons:s=1})=>e.jsx("ul",{className:"flex flex-col gap-1",children:Array.from({length:s}).map((n,r)=>e.jsx("li",{children:e.jsx(js,{className:"h-4 w-full"})},r))}),Fn=({deployment:s})=>{const{onQuickRun:n,isPending:r}=Vs();return e.jsxs(ee,{children:[e.jsx(se,{asChild:!0,children:e.jsxs(j,{loading:r,children:["Run ",e.jsx(I,{className:"ml-1 size-4",id:"Play"})]})}),e.jsx(ne,{children:e.jsxs(vs,{children:[e.jsx(E,{onClick:()=>n(s.id),children:"Quick run"}),e.jsx(C,{to:"/deployments/deployment/$id/run",params:{id:s.id},search:{parameters:s.parameters},children:e.jsx(E,{children:"Custom run"})})]})})]})},kn=({id:s})=>{const[n,r]=c.useState({open:!1,scheduleIdToEdit:""}),{data:a}=de(gs(s)),[t,i]=Ps(),d=c.useMemo(()=>{if(!(!a.schedules||!n.scheduleIdToEdit))return a.schedules.find(h=>h.id===n.scheduleIdToEdit)},[a.schedules,n.scheduleIdToEdit]),o=()=>r({open:!0,scheduleIdToEdit:""}),u=h=>r({open:!0,scheduleIdToEdit:h}),l=()=>r({open:!1,scheduleIdToEdit:""}),m=h=>{h||l()};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex align-middle justify-between",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Ls,{deployment:a}),e.jsx(_s,{deployment:a})]}),e.jsxs("div",{className:"flex align-middle gap-2",children:[e.jsx(Fn,{deployment:a}),e.jsx(As,{id:s,onDelete:()=>i(a,{shouldNavigate:!0})})]})]}),e.jsxs("div",{className:"grid gap-4",style:{gridTemplateColumns:"5fr 1fr"},children:[e.jsx("div",{className:"flex flex-col gap-5",children:e.jsx(rn,{deployment:a})}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(_n,{deployment:a,onAddSchedule:o,onEditSchedule:u}),e.jsx(Nn,{deployment:a}),e.jsx("hr",{}),e.jsx(ln,{deployment:a})]})]})]}),e.jsx(vn,{deploymentId:s,open:n.open,onOpenChange:m,scheduleToEdit:d,onSubmit:l}),e.jsx(_e,{...t})]})};b({tab:A(["Runs","Upcoming","Parameters","Configuration","Description"]).default("Runs"),runs:b({flowRuns:b({name:L().optional(),state:ie(A(le)).optional().default(J).catch(J)}).optional(),page:U().int().positive().optional().default(1).catch(1),limit:U().int().positive().optional().default(10).catch(10),sort:A(oe).optional().default("START_TIME_DESC").catch("START_TIME_DESC")}).optional(),upcoming:b({flowRuns:b({name:L().optional(),state:ie(A(le)).optional().default(["Scheduled"]).catch(["Scheduled"])}).optional(),page:U().int().positive().optional().default(1).catch(1),limit:U().int().positive().optional().default(5).catch(5),sort:A(oe).optional().default("START_TIME_ASC").catch("START_TIME_ASC")}).optional()});function at(){const{id:s}=fs.useParams();return e.jsx(kn,{id:s})}export{at as component};
2
- //# sourceMappingURL=deployment._id-5rPcPD0T.js.map