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
@@ -0,0 +1,2 @@
1
+ import{j as e,L as h,r as m,C as B,D as v,B as D,s as f,t as N}from"./vendor-tanstack-BdLtprmr.js";import{ao as k,bp as w,ag as T,ah as I,bq as R,ai as _,aj as z,al as E,ak as M,am as P,an as A,q as j,I as b,U as L,E as F,t as Q,v as V,w as q,x as H,D as O,B as $,h as U,V as G,br as J,bs as K,bt as g}from"./index-CPpeVt8m.js";import{u as C,B as W}from"./use-delete-block-document-confirmation-dialog-CxRkBKPg.js";import{D as X}from"./data-table-bk-0xKWT.js";import{D as S}from"./delete-confirmation-dialog-BZg9EOfN.js";import{B as Y}from"./block-type-logo-scnMsyY5.js";import{u as Z}from"./use-page-title-ar2vyvpx.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"./dropdown-menu-fRiq5bS-.js";import"./use-delete-confirmation-dialog-CkL-rSsp.js";import"./table-Xyel2BEw.js";const ee=({blockDocument:o})=>{const{id:t,name:s,block_type:a,block_type_name:l}=o;return e.jsxs("div",{className:"flex gap-4 items-center",children:[a&&l&&e.jsx(Y,{size:"sm",logoUrl:a.logo_url,alt:`${l} logo`}),e.jsxs("div",{className:"flex flex-col",children:[s&&e.jsx(h,{to:"/blocks/block/$id",params:{id:t},children:e.jsx("p",{className:"text-base font-semibold",children:s})}),l&&o.block_type?.slug&&e.jsx(h,{to:"/blocks/catalog/$slug",params:{slug:o.block_type.slug},children:e.jsx("p",{className:"text-sm text-muted-foreground",children:l})})]})]})},p=D(),se=({onDelete:o})=>[p.display({maxSize:10,id:"select",header:({table:t})=>{let s=!1;return t.getIsAllRowsSelected()?s=!0:t.getIsSomePageRowsSelected()&&(s="indeterminate"),e.jsx(k,{checked:s,onCheckedChange:a=>t.toggleAllPageRowsSelected(!!a),"aria-label":"Select all"})},cell:({row:t})=>e.jsx(k,{checked:t.getIsSelected(),onCheckedChange:s=>t.toggleSelected(!!s),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1}),p.display({id:"block",header:"Block",cell:({row:t})=>e.jsx(ee,{blockDocument:t.original})}),p.display({id:"actions",cell:t=>{const s=t.row.original;return e.jsx("div",{className:"flex justify-end",children:e.jsx(W,{blockDocument:s,onDelete:()=>o(s)})})}})],oe=({blockDocuments:o,blockDocumentsCount:t,onPaginationChange:s,pagination:a,rowSelection:l,setRowSelection:i})=>{const[r,d]=C(),u=m.useCallback(c=>{let x=a;typeof c=="function"?x=c(a):x=c,s(x)},[a,s]),n=B({columns:se({onDelete:d}),data:o,defaultColumn:{maxSize:300},getCoreRowModel:v(),manualPagination:!0,onPaginationChange:u,rowCount:t,getRowId:c=>c.id,onRowSelectionChange:i,state:{pagination:a,rowSelection:l}});return e.jsxs(e.Fragment,{children:[e.jsx(X,{table:n}),e.jsx(S,{...r})]})};function te({selectedBlockTypesSlugs:o,onToggleBlockTypeSlug:t,onRemoveBlockTypeSlug:s}){return e.jsx(m.Suspense,{children:e.jsx(ae,{selectedBlockTypesSlugs:o,onToggleBlockTypeSlug:t,onRemoveBlockTypeSlug:s})})}function ae({selectedBlockTypesSlugs:o,onToggleBlockTypeSlug:t,onRemoveBlockTypeSlug:s}){const[a,l]=m.useState(""),i=m.useDeferredValue(a),{data:r}=f(w()),d=m.useMemo(()=>o.map(n=>r.find(c=>c.slug===n)).filter(Boolean),[r,o]),u=m.useMemo(()=>r.filter(n=>n.name.toLowerCase().includes(i.toLowerCase())),[r,i]);return e.jsxs(T,{children:[e.jsx(I,{selected:o.length>0,children:e.jsx("div",{className:"flex gap-1",children:o.length>0?d.map(n=>e.jsx(R,{tag:n.name,onRemove:()=>s(n.slug)},n.id)):"Block type"})}),e.jsxs(_,{children:[e.jsx(z,{value:a,onValueChange:l,placeholder:"Search for a block type..."}),e.jsx(E,{children:"No block type found"}),e.jsx(M,{children:e.jsx(P,{children:u.map(n=>e.jsxs(A,{selected:o.includes(n.slug),onSelect:c=>{t(c),l("")},value:n.slug,closeOnSelect:!1,children:[e.jsx("input",{type:"checkbox",checked:o.includes(n.slug),readOnly:!0,className:"mr-2 pointer-events-none"}),n.name]},n.id))})})]})]})}const le=({count:o,rowSelection:t,setRowSelection:s})=>{const[a,l]=C(),i=m.useMemo(()=>Object.keys(t),[t]);return i.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:[i.length," selected"]}),e.jsx(j,{"aria-label":"Delete rows",size:"icon",variant:"secondary",onClick:()=>{l(i,{onSuccess:()=>s({})})},children:e.jsx(b,{id:"Trash2",className:"size-4"})})]}),e.jsx(S,{...a})]}):e.jsxs("p",{className:"text-sm text-muted-foreground",children:[o," ",L(o,"Block")]})},ne=()=>e.jsxs(F,{children:[e.jsx(Q,{id:"Box"}),e.jsx(V,{children:"Add a block to get started"}),e.jsx(q,{children:"Blocks securely store credentials and configuration to easily manage connections to external systems."}),e.jsxs(H,{children:[e.jsx(h,{to:"/blocks/catalog",children:e.jsxs(j,{children:["Add Block ",e.jsx(b,{id:"Plus",className:"size-4 ml-2"})]})}),e.jsx(O,{id:"blocks-guide"})]})]}),ce=({allCount:o,blockDocuments:t=[],onSearch:s,search:a,blockTypeSlugsFilter:l,onToggleBlockTypeSlug:i,onRemoveBlockTypeSlug:r,pagination:d,onPaginationChange:u})=>{const[n,c]=m.useState({});return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx($,{children:e.jsx(U,{className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(j,{size:"icon",className:"size-7",variant:"outline",children:e.jsx(h,{to:"/blocks/catalog",children:e.jsx(b,{id:"Plus",className:"size-4"})})})]}),o===0?e.jsx(ne,{}):e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(le,{rowSelection:n,setRowSelection:c,count:o}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"min-w-56",children:e.jsx(G,{"aria-label":"search blocks",placeholder:"Search blocks",value:a,onChange:x=>s(x.target.value)})}),e.jsx("div",{className:"min-w-64",children:e.jsx(te,{selectedBlockTypesSlugs:l,onToggleBlockTypeSlug:i,onRemoveBlockTypeSlug:r})})]})]}),e.jsx(oe,{blockDocuments:t,rowSelection:n,setRowSelection:c,blockDocumentsCount:o,pagination:d,onPaginationChange:u})]})]})};function De(){Z("Blocks");const[o,t]=ie(),[s,a]=re(),[l,i]=me(),{data:r}=f(J()),{data:d}=N(K({sort:"NAME_ASC",include_secrets:!1,block_documents:{name:{like_:o},operator:"and_",is_anonymous:{eq_:!1}},block_types:{slug:{any_:s.length>0?s:void 0}},offset:l.pageIndex*l.pageSize,limit:l.pageSize})),u=c=>{const x=s.filter(y=>y!==c);a(x)},n=c=>{if(s.includes(c))return u(c);a([...s,c])};return e.jsx(ce,{allCount:r,blockDocuments:d,onSearch:t,search:o,blockTypeSlugsFilter:s,onRemoveBlockTypeSlug:u,onToggleBlockTypeSlug:n,pagination:l,onPaginationChange:i})}function ie(){const{blockName:o}=g.useSearch(),t=g.useNavigate(),s=m.useCallback(l=>{t({to:".",search:i=>({...i,blockName:l}),replace:!0})},[t]);return[m.useMemo(()=>o??"",[o]),s]}function re(){const{blockTypes:o=[]}=g.useSearch(),t=g.useNavigate(),s=m.useCallback(a=>{t({to:".",search:l=>({...l,blockTypes:a}),replace:!0})},[t]);return[o,s]}function me(){const o=g.useSearch(),t=g.useNavigate(),s=(o.page??1)-1,a=o.limit??10,l=m.useMemo(()=>({pageIndex:s,pageSize:a}),[s,a]),i=m.useCallback(r=>{t({to:".",search:d=>({...d,page:r.pageIndex+1,limit:r.pageSize}),replace:!0})},[t]);return[l,i]}export{De as component};
2
+ //# sourceMappingURL=index-CYaUe0Ym.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CYaUe0Ym.js","sources":["../../src/components/blocks/block-document-data-table/block-document-cell.tsx","../../src/components/blocks/block-document-data-table/block-document-data-table.tsx","../../src/components/blocks/block-types-multi-select/block-types-multi-select.tsx","../../src/components/blocks/blocks-row-count/blocks-row-count.tsx","../../src/components/blocks/empty-state/empty-state.tsx","../../src/components/blocks/blocks-page.tsx","../../src/routes/blocks/index.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockDocument } from \"@/api/block-documents\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\n\ntype BlockDocumentCellProps = {\n\tblockDocument: BlockDocument;\n};\n\nexport const BlockDocumentCell = ({\n\tblockDocument,\n}: BlockDocumentCellProps) => {\n\tconst { id, name, block_type, block_type_name } = blockDocument;\n\n\treturn (\n\t\t<div className=\"flex gap-4 items-center\">\n\t\t\t{block_type && block_type_name && (\n\t\t\t\t<BlockTypeLogo\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tlogoUrl={block_type.logo_url}\n\t\t\t\t\talt={`${block_type_name} logo`}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div className=\"flex flex-col\">\n\t\t\t\t{name && (\n\t\t\t\t\t<Link to=\"/blocks/block/$id\" params={{ id }}>\n\t\t\t\t\t\t<p className=\"text-base font-semibold\">{name}</p>\n\t\t\t\t\t</Link>\n\t\t\t\t)}\n\t\t\t\t{block_type_name && blockDocument.block_type?.slug && (\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto=\"/blocks/catalog/$slug\"\n\t\t\t\t\t\tparams={{ slug: blockDocument.block_type.slug }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">{block_type_name}</p>\n\t\t\t\t\t</Link>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import type { CheckedState } from \"@radix-ui/react-checkbox\";\nimport {\n\tcreateColumnHelper,\n\tgetCoreRowModel,\n\ttype OnChangeFn,\n\ttype PaginationState,\n\ttype RowSelectionState,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport { useCallback } from \"react\";\nimport type { BlockDocument } from \"@/api/block-documents\";\nimport { BlockDocumentActionMenu } from \"@/components/blocks/block-document-action-menu\";\nimport { useDeleteBlockDocumentConfirmationDialog } from \"@/components/blocks/use-delete-block-document-confirmation-dialog\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { DataTable } from \"@/components/ui/data-table\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport { BlockDocumentCell } from \"./block-document-cell\";\n\nconst columnHelper = createColumnHelper<BlockDocument>();\n\nconst createColumns = ({\n\tonDelete,\n}: {\n\tonDelete: (blockDocument: BlockDocument) => void;\n}) => [\n\tcolumnHelper.display({\n\t\tmaxSize: 10,\n\t\tid: \"select\",\n\t\theader: ({ table }) => {\n\t\t\tlet checkedState: CheckedState = false;\n\t\t\tif (table.getIsAllRowsSelected()) {\n\t\t\t\tcheckedState = true;\n\t\t\t} else if (table.getIsSomePageRowsSelected()) {\n\t\t\t\tcheckedState = \"indeterminate\";\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<Checkbox\n\t\t\t\t\tchecked={checkedState}\n\t\t\t\t\tonCheckedChange={(value) =>\n\t\t\t\t\t\ttable.toggleAllPageRowsSelected(Boolean(value))\n\t\t\t\t\t}\n\t\t\t\t\taria-label=\"Select all\"\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t\tcell: ({ row }) => (\n\t\t\t<Checkbox\n\t\t\t\tchecked={row.getIsSelected()}\n\t\t\t\tonCheckedChange={(value) => row.toggleSelected(Boolean(value))}\n\t\t\t\taria-label=\"Select row\"\n\t\t\t/>\n\t\t),\n\t\tenableSorting: false,\n\t\tenableHiding: false,\n\t}),\n\tcolumnHelper.display({\n\t\tid: \"block\",\n\t\theader: \"Block\",\n\t\tcell: ({ row }) => <BlockDocumentCell blockDocument={row.original} />,\n\t}),\n\tcolumnHelper.display({\n\t\tid: \"actions\",\n\t\tcell: (props) => {\n\t\t\tconst cell = props.row.original;\n\t\t\treturn (\n\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t<BlockDocumentActionMenu\n\t\t\t\t\t\tblockDocument={cell}\n\t\t\t\t\t\tonDelete={() => onDelete(cell)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t}),\n];\n\nexport type BlockDocumentsDataTableProps = {\n\tblockDocumentsCount: number;\n\tblockDocuments: Array<BlockDocument>;\n\tpagination: PaginationState;\n\tonPaginationChange: (pagination: PaginationState) => void;\n\trowSelection: RowSelectionState;\n\tsetRowSelection: OnChangeFn<RowSelectionState>;\n};\nexport const BlockDocumentsDataTable = ({\n\tblockDocuments,\n\tblockDocumentsCount,\n\tonPaginationChange,\n\tpagination,\n\trowSelection,\n\tsetRowSelection,\n}: BlockDocumentsDataTableProps) => {\n\tconst [dialogState, handleConfirmDelete] =\n\t\tuseDeleteBlockDocumentConfirmationDialog();\n\n\tconst handlePaginationChange: OnChangeFn<PaginationState> = useCallback(\n\t\t(updater) => {\n\t\t\tlet newPagination = pagination;\n\t\t\tif (typeof updater === \"function\") {\n\t\t\t\tnewPagination = updater(pagination);\n\t\t\t} else {\n\t\t\t\tnewPagination = updater;\n\t\t\t}\n\t\t\tonPaginationChange(newPagination);\n\t\t},\n\t\t[pagination, onPaginationChange],\n\t);\n\n\tconst table = useReactTable({\n\t\tcolumns: createColumns({ onDelete: handleConfirmDelete }),\n\t\tdata: blockDocuments,\n\t\tdefaultColumn: { maxSize: 300 },\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tmanualPagination: true,\n\t\tonPaginationChange: handlePaginationChange,\n\t\trowCount: blockDocumentsCount,\n\t\tgetRowId: (row) => row.id,\n\t\tonRowSelectionChange: setRowSelection,\n\t\tstate: { pagination, rowSelection },\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t<DataTable table={table} />\n\t\t\t<DeleteConfirmationDialog {...dialogState} />\n\t\t</>\n\t);\n};\n","\"use client\";\n\nimport { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Suspense, useDeferredValue, useMemo, useState } from \"react\";\nimport {\n\ttype BlockType,\n\tbuildListFilterBlockTypesQuery,\n} from \"@/api/block-types\";\nimport {\n\tCombobox,\n\tComboboxCommandEmtpy,\n\tComboboxCommandGroup,\n\tComboboxCommandInput,\n\tComboboxCommandItem,\n\tComboboxCommandList,\n\tComboboxContent,\n\tComboboxTrigger,\n} from \"@/components/ui/combobox\";\nimport { TagBadge } from \"@/components/ui/tag-badge\";\n\ntype BlockTypesMultiSelectProps = {\n\tselectedBlockTypesSlugs: Array<string>;\n\tonToggleBlockTypeSlug: (blockTypeSlug: string) => void;\n\tonRemoveBlockTypeSlug: (blockTypeSlug: string) => void;\n};\n\nexport function BlockTypesMultiSelect({\n\tselectedBlockTypesSlugs,\n\tonToggleBlockTypeSlug,\n\tonRemoveBlockTypeSlug,\n}: BlockTypesMultiSelectProps) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<BlockTypesMultiSelectImplementation\n\t\t\t\tselectedBlockTypesSlugs={selectedBlockTypesSlugs}\n\t\t\t\tonToggleBlockTypeSlug={onToggleBlockTypeSlug}\n\t\t\t\tonRemoveBlockTypeSlug={onRemoveBlockTypeSlug}\n\t\t\t/>\n\t\t</Suspense>\n\t);\n}\n\nfunction BlockTypesMultiSelectImplementation({\n\tselectedBlockTypesSlugs,\n\tonToggleBlockTypeSlug,\n\tonRemoveBlockTypeSlug,\n}: BlockTypesMultiSelectProps) {\n\tconst [search, setSearch] = useState(\"\");\n\n\tconst deferredSearch = useDeferredValue(search);\n\n\tconst { data: blockTypes } = useSuspenseQuery(\n\t\tbuildListFilterBlockTypesQuery(),\n\t);\n\n\tconst selectedBlockTypes = useMemo(() => {\n\t\treturn selectedBlockTypesSlugs\n\t\t\t.map((blockTypeSlug) =>\n\t\t\t\tblockTypes.find((blockType) => blockType.slug === blockTypeSlug),\n\t\t\t)\n\t\t\t.filter(Boolean) as Array<BlockType>;\n\t}, [blockTypes, selectedBlockTypesSlugs]);\n\n\tconst filteredData = useMemo(() => {\n\t\treturn blockTypes.filter((blockType) =>\n\t\t\tblockType.name.toLowerCase().includes(deferredSearch.toLowerCase()),\n\t\t);\n\t}, [blockTypes, deferredSearch]);\n\n\treturn (\n\t\t<Combobox>\n\t\t\t<ComboboxTrigger selected={selectedBlockTypesSlugs.length > 0}>\n\t\t\t\t<div className=\"flex gap-1\">\n\t\t\t\t\t{selectedBlockTypesSlugs.length > 0\n\t\t\t\t\t\t? selectedBlockTypes.map((blockType) => (\n\t\t\t\t\t\t\t\t<TagBadge\n\t\t\t\t\t\t\t\t\tkey={blockType.id}\n\t\t\t\t\t\t\t\t\ttag={blockType.name}\n\t\t\t\t\t\t\t\t\tonRemove={() => onRemoveBlockTypeSlug(blockType.slug)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t: \"Block type\"}\n\t\t\t\t</div>\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 block type...\"\n\t\t\t\t/>\n\t\t\t\t<ComboboxCommandEmtpy>No block type found</ComboboxCommandEmtpy>\n\t\t\t\t<ComboboxCommandList>\n\t\t\t\t\t<ComboboxCommandGroup>\n\t\t\t\t\t\t{filteredData.map((blockType) => (\n\t\t\t\t\t\t\t<ComboboxCommandItem\n\t\t\t\t\t\t\t\tkey={blockType.id}\n\t\t\t\t\t\t\t\tselected={selectedBlockTypesSlugs.includes(blockType.slug)}\n\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\tonToggleBlockTypeSlug(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={blockType.slug}\n\t\t\t\t\t\t\t\tcloseOnSelect={false}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\tchecked={selectedBlockTypesSlugs.includes(blockType.slug)}\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tclassName=\"mr-2 pointer-events-none\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{blockType.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 { OnChangeFn, RowSelectionState } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { useDeleteBlockDocumentConfirmationDialog } from \"@/components/blocks/use-delete-block-document-confirmation-dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { DeleteConfirmationDialog } from \"@/components/ui/delete-confirmation-dialog\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { pluralize } from \"@/utils\";\n\nexport type BlocksRowCountProps = {\n\tcount: number;\n\trowSelection: RowSelectionState;\n\tsetRowSelection: OnChangeFn<RowSelectionState>;\n};\nexport const BlocksRowCount = ({\n\tcount,\n\trowSelection,\n\tsetRowSelection,\n}: BlocksRowCountProps) => {\n\tconst [deleteConfirmationDialogState, handleConfirmDelete] =\n\t\tuseDeleteBlockDocumentConfirmationDialog();\n\n\tconst selectedBlockIds = useMemo(\n\t\t() => Object.keys(rowSelection),\n\t\t[rowSelection],\n\t);\n\n\t// If has selected rows\n\tif (selectedBlockIds.length > 0)\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t{selectedBlockIds.length} selected\n\t\t\t\t\t</p>\n\t\t\t\t\t<Button\n\t\t\t\t\t\taria-label=\"Delete rows\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\thandleConfirmDelete(selectedBlockIds, {\n\t\t\t\t\t\t\t\tonSuccess: () => setRowSelection({}),\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<Icon id=\"Trash2\" className=\"size-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t<DeleteConfirmationDialog {...deleteConfirmationDialogState} />\n\t\t\t</>\n\t\t);\n\n\treturn (\n\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t{count} {pluralize(count, \"Block\")}\n\t\t</p>\n\t);\n};\n","import { Link } from \"@tanstack/react-router\";\nimport { Button } from \"@/components/ui/button\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\nimport {\n\tEmptyState,\n\tEmptyStateActions,\n\tEmptyStateDescription,\n\tEmptyStateIcon,\n\tEmptyStateTitle,\n} from \"@/components/ui/empty-state\";\nimport { Icon } from \"@/components/ui/icons\";\n\nexport const BlocksEmptyState = () => (\n\t<EmptyState>\n\t\t<EmptyStateIcon id=\"Box\" />\n\t\t<EmptyStateTitle>Add a block to get started</EmptyStateTitle>\n\t\t<EmptyStateDescription>\n\t\t\tBlocks securely store credentials and configuration to easily manage\n\t\t\tconnections to external systems.\n\t\t</EmptyStateDescription>\n\t\t<EmptyStateActions>\n\t\t\t<Link to=\"/blocks/catalog\">\n\t\t\t\t<Button>\n\t\t\t\t\tAdd Block <Icon id=\"Plus\" className=\"size-4 ml-2\" />\n\t\t\t\t</Button>\n\t\t\t</Link>\n\t\t\t<DocsLink id=\"blocks-guide\" />\n\t\t</EmptyStateActions>\n\t</EmptyState>\n);\n","import { Link } from \"@tanstack/react-router\";\nimport type { PaginationState, RowSelectionState } from \"@tanstack/react-table\";\nimport { useState } from \"react\";\nimport type { BlockDocument } from \"@/api/block-documents\";\nimport { Breadcrumb, BreadcrumbItem } from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport { BlockDocumentsDataTable } from \"./block-document-data-table\";\nimport { BlockTypesMultiSelect } from \"./block-types-multi-select\";\nimport { BlocksRowCount } from \"./blocks-row-count\";\nimport { BlocksEmptyState } from \"./empty-state\";\n\ntype BlocksPageProps = {\n\tallCount: number;\n\tblockDocuments: Array<BlockDocument> | undefined;\n\tonSearch: (value?: string) => void;\n\tsearch: string;\n\tblockTypeSlugsFilter: Array<string>;\n\tonToggleBlockTypeSlug: (blockTypeIds: string) => void;\n\tonRemoveBlockTypeSlug: (blockTypeIds: string) => void;\n\tpagination: PaginationState;\n\tonPaginationChange: (paginationState: PaginationState) => void;\n};\n\nexport const BlocksPage = ({\n\tallCount,\n\tblockDocuments = [],\n\tonSearch,\n\tsearch,\n\tblockTypeSlugsFilter,\n\tonToggleBlockTypeSlug,\n\tonRemoveBlockTypeSlug,\n\tpagination,\n\tonPaginationChange,\n}: BlocksPageProps) => {\n\tconst [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Breadcrumb>\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</Breadcrumb>\n\t\t\t\t<Button size=\"icon\" className=\"size-7\" variant=\"outline\">\n\t\t\t\t\t<Link to=\"/blocks/catalog\">\n\t\t\t\t\t\t<Icon id=\"Plus\" className=\"size-4\" />\n\t\t\t\t\t</Link>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t\t{allCount === 0 ? (\n\t\t\t\t<BlocksEmptyState />\n\t\t\t) : (\n\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t<BlocksRowCount\n\t\t\t\t\t\t\trowSelection={rowSelection}\n\t\t\t\t\t\t\tsetRowSelection={setRowSelection}\n\t\t\t\t\t\t\tcount={allCount}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<div className=\"min-w-56\">\n\t\t\t\t\t\t\t\t<SearchInput\n\t\t\t\t\t\t\t\t\taria-label=\"search blocks\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search blocks\"\n\t\t\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\t\t\tonChange={(e) => onSearch(e.target.value)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"min-w-64\">\n\t\t\t\t\t\t\t\t<BlockTypesMultiSelect\n\t\t\t\t\t\t\t\t\tselectedBlockTypesSlugs={blockTypeSlugsFilter}\n\t\t\t\t\t\t\t\t\tonToggleBlockTypeSlug={onToggleBlockTypeSlug}\n\t\t\t\t\t\t\t\t\tonRemoveBlockTypeSlug={onRemoveBlockTypeSlug}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<BlockDocumentsDataTable\n\t\t\t\t\t\tblockDocuments={blockDocuments}\n\t\t\t\t\t\trowSelection={rowSelection}\n\t\t\t\t\t\tsetRowSelection={setRowSelection}\n\t\t\t\t\t\tblockDocumentsCount={allCount}\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonPaginationChange={onPaginationChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useQuery, useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport {\n\ttype BlockDocumentsFilter,\n\tbuildCountAllBlockDocumentsQuery,\n\tbuildCountFilterBlockDocumentsQuery,\n\tbuildListFilterBlockDocumentsQuery,\n} from \"@/api/block-documents\";\nimport { buildListFilterBlockTypesQuery } from \"@/api/block-types\";\nimport { BlocksPage } from \"@/components/blocks/blocks-page\";\nimport { PrefectLoading } from \"@/components/ui/loading\";\nimport { usePageTitle } from \"@/hooks/use-page-title\";\n\nconst searchParams = z.object({\n\tblockName: z.string().optional(),\n\tblockTypes: z.array(z.string()).optional(),\n\tpage: z.number().int().positive().optional().default(1).catch(1),\n\tlimit: z.number().int().positive().optional().default(10).catch(10),\n});\n\nexport const Route = createFileRoute(\"/blocks/\")({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\tloaderDeps: ({ search: { blockName, blockTypes, page, limit } }) => ({\n\t\tblockName,\n\t\tblockTypes,\n\t\tpage,\n\t\tlimit,\n\t}),\n\tloader: ({ deps, context: { queryClient } }) => {\n\t\t// ----- Critical data\n\t\tconst filter: BlockDocumentsFilter = {\n\t\t\tblock_types: { slug: { any_: deps.blockTypes } },\n\t\t\tblock_documents: {\n\t\t\t\tis_anonymous: { eq_: false },\n\t\t\t\toperator: \"or_\",\n\t\t\t\tname: { like_: deps.blockName },\n\t\t\t},\n\t\t\tlimit: deps.limit,\n\t\t\toffset: deps.page,\n\t\t\tinclude_secrets: false,\n\t\t\tsort: \"NAME_ASC\",\n\t\t};\n\t\treturn Promise.all([\n\t\t\tqueryClient.ensureQueryData(buildListFilterBlockTypesQuery()),\n\t\t\t// All count query\n\t\t\tqueryClient.ensureQueryData(buildCountAllBlockDocumentsQuery()),\n\t\t\t// Filtered block document\n\t\t\tqueryClient.ensureQueryData(buildListFilterBlockDocumentsQuery(filter)),\n\t\t\t// Filtered count query\n\t\t\tqueryClient.ensureQueryData(buildCountFilterBlockDocumentsQuery(filter)),\n\t\t]);\n\t},\n\twrapInSuspense: true,\n\tpendingComponent: PrefectLoading,\n});\n\nfunction RouteComponent() {\n\tusePageTitle(\"Blocks\");\n\tconst [search, onSearch] = useSearch();\n\tconst [blockTypeSlugs, onSetBlockTypeSlugs] = useFilterByBlockTypes();\n\tconst [pagination, onPaginationChange] = usePagination();\n\n\tconst { data: allBlockDocumentsCount } = useSuspenseQuery(\n\t\tbuildCountAllBlockDocumentsQuery(),\n\t);\n\n\tconst { data: blockDocuments } = useQuery(\n\t\tbuildListFilterBlockDocumentsQuery({\n\t\t\tsort: \"NAME_ASC\",\n\t\t\tinclude_secrets: false,\n\t\t\tblock_documents: {\n\t\t\t\tname: { like_: search },\n\t\t\t\toperator: \"and_\",\n\t\t\t\tis_anonymous: { eq_: false },\n\t\t\t},\n\t\t\tblock_types: {\n\t\t\t\tslug: {\n\t\t\t\t\tany_: blockTypeSlugs.length > 0 ? blockTypeSlugs : undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t\toffset: pagination.pageIndex * pagination.pageSize,\n\t\t\tlimit: pagination.pageSize,\n\t\t}),\n\t);\n\n\tconst handleRemoveBlockType = (id: string) => {\n\t\tconst newValue = blockTypeSlugs.filter((blockId) => blockId !== id);\n\t\tonSetBlockTypeSlugs(newValue);\n\t};\n\n\tconst handleToggleBlockType = (id: string) => {\n\t\t// Remove block id if its in the list\n\t\tif (blockTypeSlugs.includes(id)) {\n\t\t\treturn handleRemoveBlockType(id);\n\t\t}\n\t\t// Else add it to the list\n\t\tonSetBlockTypeSlugs([...blockTypeSlugs, id]);\n\t};\n\n\treturn (\n\t\t<BlocksPage\n\t\t\tallCount={allBlockDocumentsCount}\n\t\t\tblockDocuments={blockDocuments}\n\t\t\tonSearch={onSearch}\n\t\t\tsearch={search}\n\t\t\tblockTypeSlugsFilter={blockTypeSlugs}\n\t\t\tonRemoveBlockTypeSlug={handleRemoveBlockType}\n\t\t\tonToggleBlockTypeSlug={handleToggleBlockType}\n\t\t\tpagination={pagination}\n\t\t\tonPaginationChange={onPaginationChange}\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\nfunction useFilterByBlockTypes() {\n\tconst { blockTypes = [] } = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\tconst onSetBlockTypes = useCallback(\n\t\t(value?: Array<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\tblockTypes: 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\n\treturn [blockTypes, onSetBlockTypes] as const;\n}\n\nfunction usePagination() {\n\tconst search = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\t// React Table uses 0-based pagination, so we need to subtract 1 from the page number\n\tconst pageIndex = (search.page ?? 1) - 1;\n\tconst pageSize = search.limit ?? 10;\n\tconst pagination: PaginationState = useMemo(\n\t\t() => ({\n\t\t\tpageIndex,\n\t\t\tpageSize,\n\t\t}),\n\t\t[pageIndex, pageSize],\n\t);\n\n\tconst onPaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\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\tpage: newPagination.pageIndex + 1,\n\t\t\t\t\tlimit: newPagination.pageSize,\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\n\treturn [pagination, onPaginationChange] as const;\n}\n"],"names":["BlockDocumentCell","blockDocument","id","name","block_type","block_type_name","jsxs","jsx","BlockTypeLogo","Link","columnHelper","createColumnHelper","createColumns","onDelete","table","checkedState","Checkbox","value","row","props","cell","BlockDocumentActionMenu","BlockDocumentsDataTable","blockDocuments","blockDocumentsCount","onPaginationChange","pagination","rowSelection","setRowSelection","dialogState","handleConfirmDelete","useDeleteBlockDocumentConfirmationDialog","handlePaginationChange","useCallback","updater","newPagination","useReactTable","getCoreRowModel","Fragment","DataTable","DeleteConfirmationDialog","BlockTypesMultiSelect","selectedBlockTypesSlugs","onToggleBlockTypeSlug","onRemoveBlockTypeSlug","Suspense","BlockTypesMultiSelectImplementation","search","setSearch","useState","deferredSearch","useDeferredValue","blockTypes","useSuspenseQuery","buildListFilterBlockTypesQuery","selectedBlockTypes","useMemo","blockTypeSlug","blockType","filteredData","Combobox","ComboboxTrigger","TagBadge","ComboboxContent","ComboboxCommandInput","ComboboxCommandEmtpy","ComboboxCommandList","ComboboxCommandGroup","ComboboxCommandItem","BlocksRowCount","count","deleteConfirmationDialogState","selectedBlockIds","Button","Icon","pluralize","BlocksEmptyState","EmptyState","EmptyStateIcon","EmptyStateTitle","EmptyStateDescription","EmptyStateActions","DocsLink","BlocksPage","allCount","onSearch","blockTypeSlugsFilter","Breadcrumb","BreadcrumbItem","SearchInput","e","RouteComponent","usePageTitle","useSearch","blockTypeSlugs","onSetBlockTypeSlugs","useFilterByBlockTypes","usePagination","data","allBlockDocumentsCount","buildCountAllBlockDocumentsQuery","useQuery","buildListFilterBlockDocumentsQuery","sort","include_secrets","block_documents","like_","operator","is_anonymous","eq_","block_types","slug","any_","length","undefined","offset","pageIndex","pageSize","limit","handleRemoveBlockType","newValue","filter","blockId","handleToggleBlockType","includes","blockName","Route","navigate","useNavigate","to","prev","replace","onSetBlockTypes","page"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as c,j as e,B as J,C as L,D as P,E as H}from"./vendor-tanstack-BdLtprmr.js";import{X as B,Y as Q,Z,L as R,_ as q,q as E,I as F,y as h,U as G,V as X,S as Y,a as $,b as K,c as W,e as y,$ as ee,E as ae,t as se,v as te,w as ne,x as re,D as le,a0 as oe,a1 as ie,a2 as ce,a3 as de,a4 as ue,a5 as me,a6 as ge,p as pe,a7 as he,a8 as xe,a9 as p,aa as je,ab as T}from"./index-V_xTKaEb.js";import{D as fe}from"./data-table-QSHqmTar.js";import{T as U}from"./tags-input-2KSBvO_K.js";import{D as be,a as ve,b as Ce,c as Se,d as C}from"./dropdown-menu-B9LKPlz7.js";import{u as Ve}from"./use-is-overflowing-CDFKqB6i.js";import{V as De}from"./header-DxE-NzAK.js";import{a as ye}from"./zod-B1GLD-Zc.js";import{c as Ne,o as Ee,s as A}from"./vendor-forms-BlFSCfFw.js";import{F as Ae,a as N,b as k,c as w,d as M,e as I}from"./form-DOdmIC3A.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./table-ChOwO4Pk.js";const ke=({row:a,onVariableEdit:t})=>{const s=a.original.id,{deleteVariable:n}=q();if(!s)return null;const r=()=>{n(s,{onSuccess:()=>{h.success("Variable deleted")}})};return e.jsx("div",{className:"flex flex-row justify-end",children:e.jsxs(be,{children:[e.jsx(ve,{asChild:!0,children:e.jsxs(E,{variant:"outline",className:"size-8 p-0",children:[e.jsx("span",{className:"sr-only",children:"Open menu"}),e.jsx(F,{id:"MoreVertical",className:"size-4"})]})}),e.jsxs(Ce,{align:"end",children:[e.jsx(Se,{children:"Actions"}),e.jsx(C,{onClick:()=>{navigator.clipboard.writeText(s),h.success("ID copied")},children:"Copy ID"}),e.jsx(C,{onClick:()=>{navigator.clipboard.writeText(a.original.name),h.success("Name copied")},children:"Copy Name"}),e.jsx(C,{onClick:()=>{const l=typeof a.original.value!="string"?JSON.stringify(a.original.value):a.original.value;l&&(navigator.clipboard.writeText(l),h.success("Value copied"))},children:"Copy Value"}),e.jsx(C,{onClick:()=>t(a.original),children:"Edit"}),e.jsx(C,{onClick:r,children:"Delete"})]})]})})},we=a=>{const t=a.getValue(),s=c.useRef(null),n=Ve(s);return t?e.jsxs(B,{open:n?void 0:!1,children:[e.jsx(Q,{asChild:!0,children:e.jsx("code",{ref:s,className:"px-2 py-1 font-mono text-sm text-ellipsis overflow-hidden whitespace-nowrap block",children:JSON.stringify(t,null,2)})}),e.jsx(Z,{className:"p-0",children:e.jsx(R,{value:JSON.stringify(t,null,2),disabled:!0})})]}):null},S=J(),Me=a=>[S.accessor("name",{header:"Name"}),S.accessor("value",{header:"Value",cell:we}),S.accessor("updated",{header:"Updated",cell:t=>{const s=t.getValue();return s?new Date(s??new Date).toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0}).replace(",",""):null}}),S.accessor("tags",{header:()=>null,cell:t=>{const s=t.getValue();return s?e.jsx(ee,{tags:s,maxTagsDisplayed:3}):null}}),S.display({id:"actions",cell:t=>e.jsx(ke,{...t,onVariableEdit:a})})],Ie=({variables:a,currentVariableCount:t,pagination:s,onPaginationChange:n,columnFilters:r,onColumnFiltersChange:l,sorting:u,onSortingChange:m,onVariableEdit:d})=>{const x=c.useMemo(()=>Me(d),[d]),j=r.find(i=>i.id==="name")?.value,f=r.find(i=>i.id==="tags")?.value,o=c.useCallback(i=>{const g=r.filter(D=>D.id!=="name");l(i?[...g,{id:"name",value:i}]:g)},[l,r]),V=c.useCallback(i=>{const g=Array.isArray(i)?i:i.target.value,D=r.filter(z=>z.id!=="tags");l(g.length?[...D,{id:"tags",value:g}]:D)},[l,r]),b=c.useCallback(i=>{let g=s;typeof i=="function"?g=i(s):g=i,n(g)},[s,n]),v=L({data:a,columns:x,state:{pagination:s,columnFilters:r},getCoreRowModel:P(),manualPagination:!0,onPaginationChange:b,rowCount:t,defaultColumn:{maxSize:300}});return e.jsxs("div",{children:[e.jsxs("div",{className:"grid sm:grid-cols-2 md:grid-cols-6 lg:grid-cols-12 gap-2 pb-4 items-center",children:[e.jsx("div",{className:"sm:col-span-2 md:col-span-6 lg:col-span-4 order-last lg:order-first",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[t," ",G(t,"Variable")]})}),e.jsx("div",{className:"sm:col-span-2 md:col-span-2 lg:col-span-3",children:e.jsx(X,{placeholder:"Search variables",value:j,onChange:i=>o(i.target.value)})}),e.jsx("div",{className:"xs:col-span-1 md:col-span-2 lg:col-span-3",children:e.jsx(U,{placeholder:"Filter by tags",onChange:V,value:f})}),e.jsx("div",{className:"xs:col-span-1 md:col-span-2 lg:col-span-2",children:e.jsxs(Y,{value:u,onValueChange:m,children:[e.jsx($,{"aria-label":"Variable sort order",className:"w-full",children:e.jsx(K,{placeholder:"Sort by"})}),e.jsxs(W,{children:[e.jsx(y,{value:"CREATED_DESC",children:"Created"}),e.jsx(y,{value:"UPDATED_DESC",children:"Updated"}),e.jsx(y,{value:"NAME_ASC",children:"A to Z"}),e.jsx(y,{value:"NAME_DESC",children:"Z to A"})]})]})})]}),e.jsx(fe,{table:v})]})},Te=({onAddVariableClick:a})=>e.jsxs(ae,{children:[e.jsx(se,{id:"Variable"}),e.jsx(te,{children:"Add a variable to get started"}),e.jsx(ne,{children:"Variables store non-sensitive pieces of JSON."}),e.jsxs(re,{children:[e.jsxs(E,{onClick:()=>a(),children:["Add Variable ",e.jsx(F,{id:"Plus",className:"size-4 ml-2"})]}),e.jsx(le,{id:"variables-guide"})]})]}),Oe=()=>{const a=c.useCallback(r=>{s(l=>({...l,open:r}))},[]),[t,s]=c.useState({open:!1,onOpenChange:a}),n=c.useCallback(r=>{s(l=>({...l,open:!0,variableToEdit:r}))},[]);return[t,n]},_e=Ee({name:A().min(2,{message:"Name must be at least 2 characters"}),value:A(),tags:A().array().optional()}),O={name:"",value:"",tags:[]},Re=({onOpenChange:a,open:t,variableToEdit:s})=>{const n=Ne({resolver:ye(_e),defaultValues:O}),r=c.useMemo(()=>{if(s)return{name:s.name,value:JSON.stringify(s.value,null,2),tags:s.tags}},[s]);c.useEffect(()=>{t&&n.reset(r??O)},[r,n,t]);const{createVariable:l,isPending:u}=oe(),{updateVariable:m,isPending:d}=ie(),x=o=>{try{const V=JSON.parse(o.value);s?.id?m({id:s.id,name:o.name,value:V,tags:o.tags},{onSuccess:()=>{h.success("Variable updated"),a(!1)},onError:b=>{const v=b.message||"Unknown error while updating variable.";n.setError("root",{message:v})}}):l({name:o.name,value:V,tags:o.tags},{onSuccess:()=>{h.success("Variable created"),a(!1)},onError:b=>{const v=b.message||"Unknown error while creating variable.";n.setError("root",{message:v})}})}catch{n.setError("value",{message:"Value must be valid JSON"})}},j=s?"Edit Variable":"New Variable",f=s?"Edit the variable by changing the name, value, or tags.":"Add a new variable by providing a name, value, and optional tags. Values can be any valid JSON value.";return e.jsx(ce,{open:t,onOpenChange:a,children:e.jsxs(de,{children:[e.jsx(ue,{children:e.jsx(me,{children:j})}),e.jsx(ge,{children:f}),e.jsx(Ae,{...n,children:e.jsxs("form",{onSubmit:o=>{n.handleSubmit(x)(o)},className:"space-y-4",children:[e.jsx(N,{children:n.formState.errors.root?.message}),e.jsx(k,{control:n.control,name:"name",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Name"}),e.jsx(I,{children:e.jsx(pe,{autoComplete:"off",...o})}),e.jsx(N,{})]})}),e.jsx(k,{control:n.control,name:"value",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Value"}),e.jsx(I,{children:e.jsx(R,{...o})}),e.jsx(N,{})]})}),e.jsx(k,{control:n.control,name:"tags",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Tags"}),e.jsx(I,{children:e.jsx(U,{...o})}),e.jsx(N,{})]})}),e.jsxs(he,{children:[e.jsx(xe,{asChild:!0,children:e.jsx(E,{type:"button",variant:"outline",children:"Close"})}),e.jsx(E,{type:"submit",loading:u||d,children:s?"Save":"Create"})]})]})})]})})},_=a=>({offset:a?.offset??0,limit:a?.limit??10,sort:a?.sort??"CREATED_DESC",variables:{operator:"and_",...a?.name&&{name:{like_:a.name}},...a?.tags?.length&&{tags:{operator:"and_",all_:a.tags}}}}),Fe=()=>{const a=p.useSearch(),t=p.useNavigate(),s=a.offset?Math.ceil(a.offset/a.limit):0,n=a.limit??10,r=c.useMemo(()=>({pageIndex:s,pageSize:n}),[s,n]),l=c.useCallback(u=>{t({to:".",search:m=>({...m,offset:u.pageIndex*u.pageSize,limit:u.pageSize}),replace:!0})},[t]);return[r,l]},Ue=()=>{const a=p.useSearch(),t=p.useNavigate(),s=c.useMemo(()=>[{id:"name",value:a.name},{id:"tags",value:a.tags}],[a.name,a.tags]),n=c.useCallback(r=>{t({to:".",search:l=>{const u=r.find(d=>d.id==="name")?.value,m=r.find(d=>d.id==="tags")?.value;return{...l,offset:0,name:u,tags:m}},replace:!0})},[t]);return[s,n]},ze=()=>{const a=p.useSearch(),t=p.useNavigate(),s=c.useCallback(n=>{t({to:".",search:r=>({...r,sort:n}),replace:!0})},[t]);return[a.sort,s]};function aa(){const a=p.useSearch(),[t,s]=Fe(),[n,r]=Ue(),[l,u]=ze(),[m,d]=Oe(),[{data:x},{data:j},{data:f}]=H({queries:[je(_(a)),T(_(a)),T()]}),o=(f??0)>0;return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(De,{onAddVariableClick:d}),e.jsx(Re,{...m}),o?e.jsx(Ie,{variables:x??[],currentVariableCount:j??0,pagination:t,onPaginationChange:s,columnFilters:n,onColumnFiltersChange:r,sorting:l,onSortingChange:u,onVariableEdit:d}):e.jsx(Te,{onAddVariableClick:d})]})}export{aa as component};
2
- //# sourceMappingURL=index-C5RMFRyZ.js.map
1
+ import{r as c,j as e,B as J,C as L,D as P,E as H}from"./vendor-tanstack-BdLtprmr.js";import{X as B,Y as Q,Z,L as R,_ as q,q as E,I as F,y as h,U as G,V as X,S as Y,a as $,b as K,c as W,e as y,$ as ee,E as ae,t as se,v as te,w as ne,x as re,D as le,a0 as oe,a1 as ie,a2 as ce,a3 as de,a4 as ue,a5 as me,a6 as ge,p as pe,a7 as he,a8 as xe,a9 as p,aa as je,ab as T}from"./index-CPpeVt8m.js";import{D as fe}from"./data-table-bk-0xKWT.js";import{T as U}from"./tags-input-DqZ8v99z.js";import{D as be,a as ve,b as Ce,c as Se,d as C}from"./dropdown-menu-fRiq5bS-.js";import{u as Ve}from"./use-is-overflowing-CDFKqB6i.js";import{V as De}from"./header-qlcK4NLD.js";import{a as ye}from"./zod-B1GLD-Zc.js";import{c as Ne,o as Ee,s as A}from"./vendor-forms-BlFSCfFw.js";import{F as Ae,a as N,b as k,c as w,d as M,e as I}from"./form-Cl5Hk9bq.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./table-Xyel2BEw.js";const ke=({row:a,onVariableEdit:t})=>{const s=a.original.id,{deleteVariable:n}=q();if(!s)return null;const r=()=>{n(s,{onSuccess:()=>{h.success("Variable deleted")}})};return e.jsx("div",{className:"flex flex-row justify-end",children:e.jsxs(be,{children:[e.jsx(ve,{asChild:!0,children:e.jsxs(E,{variant:"outline",className:"size-8 p-0",children:[e.jsx("span",{className:"sr-only",children:"Open menu"}),e.jsx(F,{id:"MoreVertical",className:"size-4"})]})}),e.jsxs(Ce,{align:"end",children:[e.jsx(Se,{children:"Actions"}),e.jsx(C,{onClick:()=>{navigator.clipboard.writeText(s),h.success("ID copied")},children:"Copy ID"}),e.jsx(C,{onClick:()=>{navigator.clipboard.writeText(a.original.name),h.success("Name copied")},children:"Copy Name"}),e.jsx(C,{onClick:()=>{const l=typeof a.original.value!="string"?JSON.stringify(a.original.value):a.original.value;l&&(navigator.clipboard.writeText(l),h.success("Value copied"))},children:"Copy Value"}),e.jsx(C,{onClick:()=>t(a.original),children:"Edit"}),e.jsx(C,{onClick:r,children:"Delete"})]})]})})},we=a=>{const t=a.getValue(),s=c.useRef(null),n=Ve(s);return t?e.jsxs(B,{open:n?void 0:!1,children:[e.jsx(Q,{asChild:!0,children:e.jsx("code",{ref:s,className:"px-2 py-1 font-mono text-sm text-ellipsis overflow-hidden whitespace-nowrap block",children:JSON.stringify(t,null,2)})}),e.jsx(Z,{className:"p-0",children:e.jsx(R,{value:JSON.stringify(t,null,2),disabled:!0})})]}):null},S=J(),Me=a=>[S.accessor("name",{header:"Name"}),S.accessor("value",{header:"Value",cell:we}),S.accessor("updated",{header:"Updated",cell:t=>{const s=t.getValue();return s?new Date(s??new Date).toLocaleString(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0}).replace(",",""):null}}),S.accessor("tags",{header:()=>null,cell:t=>{const s=t.getValue();return s?e.jsx(ee,{tags:s,maxTagsDisplayed:3}):null}}),S.display({id:"actions",cell:t=>e.jsx(ke,{...t,onVariableEdit:a})})],Ie=({variables:a,currentVariableCount:t,pagination:s,onPaginationChange:n,columnFilters:r,onColumnFiltersChange:l,sorting:u,onSortingChange:m,onVariableEdit:d})=>{const x=c.useMemo(()=>Me(d),[d]),j=r.find(i=>i.id==="name")?.value,f=r.find(i=>i.id==="tags")?.value,o=c.useCallback(i=>{const g=r.filter(D=>D.id!=="name");l(i?[...g,{id:"name",value:i}]:g)},[l,r]),V=c.useCallback(i=>{const g=Array.isArray(i)?i:i.target.value,D=r.filter(z=>z.id!=="tags");l(g.length?[...D,{id:"tags",value:g}]:D)},[l,r]),b=c.useCallback(i=>{let g=s;typeof i=="function"?g=i(s):g=i,n(g)},[s,n]),v=L({data:a,columns:x,state:{pagination:s,columnFilters:r},getCoreRowModel:P(),manualPagination:!0,onPaginationChange:b,rowCount:t,defaultColumn:{maxSize:300}});return e.jsxs("div",{children:[e.jsxs("div",{className:"grid sm:grid-cols-2 md:grid-cols-6 lg:grid-cols-12 gap-2 pb-4 items-center",children:[e.jsx("div",{className:"sm:col-span-2 md:col-span-6 lg:col-span-4 order-last lg:order-first",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[t," ",G(t,"Variable")]})}),e.jsx("div",{className:"sm:col-span-2 md:col-span-2 lg:col-span-3",children:e.jsx(X,{placeholder:"Search variables",value:j,onChange:i=>o(i.target.value)})}),e.jsx("div",{className:"xs:col-span-1 md:col-span-2 lg:col-span-3",children:e.jsx(U,{placeholder:"Filter by tags",onChange:V,value:f})}),e.jsx("div",{className:"xs:col-span-1 md:col-span-2 lg:col-span-2",children:e.jsxs(Y,{value:u,onValueChange:m,children:[e.jsx($,{"aria-label":"Variable sort order",className:"w-full",children:e.jsx(K,{placeholder:"Sort by"})}),e.jsxs(W,{children:[e.jsx(y,{value:"CREATED_DESC",children:"Created"}),e.jsx(y,{value:"UPDATED_DESC",children:"Updated"}),e.jsx(y,{value:"NAME_ASC",children:"A to Z"}),e.jsx(y,{value:"NAME_DESC",children:"Z to A"})]})]})})]}),e.jsx(fe,{table:v})]})},Te=({onAddVariableClick:a})=>e.jsxs(ae,{children:[e.jsx(se,{id:"Variable"}),e.jsx(te,{children:"Add a variable to get started"}),e.jsx(ne,{children:"Variables store non-sensitive pieces of JSON."}),e.jsxs(re,{children:[e.jsxs(E,{onClick:()=>a(),children:["Add Variable ",e.jsx(F,{id:"Plus",className:"size-4 ml-2"})]}),e.jsx(le,{id:"variables-guide"})]})]}),Oe=()=>{const a=c.useCallback(r=>{s(l=>({...l,open:r}))},[]),[t,s]=c.useState({open:!1,onOpenChange:a}),n=c.useCallback(r=>{s(l=>({...l,open:!0,variableToEdit:r}))},[]);return[t,n]},_e=Ee({name:A().min(2,{message:"Name must be at least 2 characters"}),value:A(),tags:A().array().optional()}),O={name:"",value:"",tags:[]},Re=({onOpenChange:a,open:t,variableToEdit:s})=>{const n=Ne({resolver:ye(_e),defaultValues:O}),r=c.useMemo(()=>{if(s)return{name:s.name,value:JSON.stringify(s.value,null,2),tags:s.tags}},[s]);c.useEffect(()=>{t&&n.reset(r??O)},[r,n,t]);const{createVariable:l,isPending:u}=oe(),{updateVariable:m,isPending:d}=ie(),x=o=>{try{const V=JSON.parse(o.value);s?.id?m({id:s.id,name:o.name,value:V,tags:o.tags},{onSuccess:()=>{h.success("Variable updated"),a(!1)},onError:b=>{const v=b.message||"Unknown error while updating variable.";n.setError("root",{message:v})}}):l({name:o.name,value:V,tags:o.tags},{onSuccess:()=>{h.success("Variable created"),a(!1)},onError:b=>{const v=b.message||"Unknown error while creating variable.";n.setError("root",{message:v})}})}catch{n.setError("value",{message:"Value must be valid JSON"})}},j=s?"Edit Variable":"New Variable",f=s?"Edit the variable by changing the name, value, or tags.":"Add a new variable by providing a name, value, and optional tags. Values can be any valid JSON value.";return e.jsx(ce,{open:t,onOpenChange:a,children:e.jsxs(de,{children:[e.jsx(ue,{children:e.jsx(me,{children:j})}),e.jsx(ge,{children:f}),e.jsx(Ae,{...n,children:e.jsxs("form",{onSubmit:o=>{n.handleSubmit(x)(o)},className:"space-y-4",children:[e.jsx(N,{children:n.formState.errors.root?.message}),e.jsx(k,{control:n.control,name:"name",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Name"}),e.jsx(I,{children:e.jsx(pe,{autoComplete:"off",...o})}),e.jsx(N,{})]})}),e.jsx(k,{control:n.control,name:"value",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Value"}),e.jsx(I,{children:e.jsx(R,{...o})}),e.jsx(N,{})]})}),e.jsx(k,{control:n.control,name:"tags",render:({field:o})=>e.jsxs(w,{children:[e.jsx(M,{children:"Tags"}),e.jsx(I,{children:e.jsx(U,{...o})}),e.jsx(N,{})]})}),e.jsxs(he,{children:[e.jsx(xe,{asChild:!0,children:e.jsx(E,{type:"button",variant:"outline",children:"Close"})}),e.jsx(E,{type:"submit",loading:u||d,children:s?"Save":"Create"})]})]})})]})})},_=a=>({offset:a?.offset??0,limit:a?.limit??10,sort:a?.sort??"CREATED_DESC",variables:{operator:"and_",...a?.name&&{name:{like_:a.name}},...a?.tags?.length&&{tags:{operator:"and_",all_:a.tags}}}}),Fe=()=>{const a=p.useSearch(),t=p.useNavigate(),s=a.offset?Math.ceil(a.offset/a.limit):0,n=a.limit??10,r=c.useMemo(()=>({pageIndex:s,pageSize:n}),[s,n]),l=c.useCallback(u=>{t({to:".",search:m=>({...m,offset:u.pageIndex*u.pageSize,limit:u.pageSize}),replace:!0})},[t]);return[r,l]},Ue=()=>{const a=p.useSearch(),t=p.useNavigate(),s=c.useMemo(()=>[{id:"name",value:a.name},{id:"tags",value:a.tags}],[a.name,a.tags]),n=c.useCallback(r=>{t({to:".",search:l=>{const u=r.find(d=>d.id==="name")?.value,m=r.find(d=>d.id==="tags")?.value;return{...l,offset:0,name:u,tags:m}},replace:!0})},[t]);return[s,n]},ze=()=>{const a=p.useSearch(),t=p.useNavigate(),s=c.useCallback(n=>{t({to:".",search:r=>({...r,sort:n}),replace:!0})},[t]);return[a.sort,s]};function aa(){const a=p.useSearch(),[t,s]=Fe(),[n,r]=Ue(),[l,u]=ze(),[m,d]=Oe(),[{data:x},{data:j},{data:f}]=H({queries:[je(_(a)),T(_(a)),T()]}),o=(f??0)>0;return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(De,{onAddVariableClick:d}),e.jsx(Re,{...m}),o?e.jsx(Ie,{variables:x??[],currentVariableCount:j??0,pagination:t,onPaginationChange:s,columnFilters:n,onColumnFiltersChange:r,sorting:l,onSortingChange:u,onVariableEdit:d}):e.jsx(Te,{onAddVariableClick:d})]})}export{aa as component};
2
+ //# sourceMappingURL=index-Clbms0kg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Clbms0kg.js","sources":["../../src/components/variables/data-table/cells.tsx","../../src/components/variables/data-table/data-table.tsx","../../src/components/variables/empty-state.tsx","../../src/components/variables/variable-dialog/use-variable-dialog.ts","../../src/components/variables/variable-dialog/variable-dialog.tsx","../../src/routes/variables/index.tsx?tsr-split=component"],"sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\nimport { useRef } from \"react\";\nimport { toast } from \"sonner\";\nimport type { components } from \"@/api/prefect\";\nimport { useDeleteVariable } from \"@/api/variables\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n\tHoverCard,\n\tHoverCardContent,\n\tHoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { LazyJsonInput as JsonInput } from \"@/components/ui/json-input-lazy\";\nimport { useIsOverflowing } from \"@/hooks/use-is-overflowing\";\n\ntype ActionsCellProps = CellContext<\n\tcomponents[\"schemas\"][\"Variable\"],\n\tunknown\n> & {\n\tonVariableEdit: (variable: components[\"schemas\"][\"Variable\"]) => void;\n};\n\nexport const ActionsCell = ({ row, onVariableEdit }: ActionsCellProps) => {\n\tconst id = row.original.id;\n\tconst { deleteVariable } = useDeleteVariable();\n\tif (!id) return null;\n\n\tconst onVariableDelete = () => {\n\t\tdeleteVariable(id, {\n\t\t\tonSuccess: () => {\n\t\t\t\ttoast.success(\"Variable deleted\");\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-row justify-end\">\n\t\t\t<DropdownMenu>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button variant=\"outline\" className=\"size-8 p-0\">\n\t\t\t\t\t\t<span className=\"sr-only\">Open menu</span>\n\t\t\t\t\t\t<Icon id=\"MoreVertical\" className=\"size-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t<DropdownMenuLabel>Actions</DropdownMenuLabel>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid navigator.clipboard.writeText(id);\n\t\t\t\t\t\t\ttoast.success(\"ID copied\");\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tCopy ID\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid navigator.clipboard.writeText(row.original.name);\n\t\t\t\t\t\t\ttoast.success(\"Name copied\");\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tCopy Name\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tconst copyValue =\n\t\t\t\t\t\t\t\ttypeof row.original.value !== \"string\"\n\t\t\t\t\t\t\t\t\t? JSON.stringify(row.original.value)\n\t\t\t\t\t\t\t\t\t: row.original.value;\n\t\t\t\t\t\t\tif (copyValue) {\n\t\t\t\t\t\t\t\tvoid navigator.clipboard.writeText(copyValue);\n\t\t\t\t\t\t\t\ttoast.success(\"Value copied\");\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\tCopy Value\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem onClick={() => onVariableEdit(row.original)}>\n\t\t\t\t\t\tEdit\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem onClick={onVariableDelete}>Delete</DropdownMenuItem>\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t</div>\n\t);\n};\n\nexport const ValueCell = (\n\tprops: CellContext<components[\"schemas\"][\"Variable\"], unknown>,\n) => {\n\tconst value = props.getValue();\n\tconst codeRef = useRef<HTMLDivElement>(null);\n\tconst isOverflowing = useIsOverflowing(codeRef);\n\n\tif (!value) return null;\n\treturn (\n\t\t// Disable the hover card if the value is not overflowing\n\t\t<HoverCard open={isOverflowing ? undefined : false}>\n\t\t\t<HoverCardTrigger asChild>\n\t\t\t\t<code\n\t\t\t\t\tref={codeRef}\n\t\t\t\t\tclassName=\"px-2 py-1 font-mono text-sm text-ellipsis overflow-hidden whitespace-nowrap block\"\n\t\t\t\t>\n\t\t\t\t\t{JSON.stringify(value, null, 2)}\n\t\t\t\t</code>\n\t\t\t</HoverCardTrigger>\n\t\t\t<HoverCardContent className=\"p-0\">\n\t\t\t\t<JsonInput value={JSON.stringify(value, null, 2)} disabled />\n\t\t\t</HoverCardContent>\n\t\t</HoverCard>\n\t);\n};\n","import {\n\ttype ColumnFiltersState,\n\tcreateColumnHelper,\n\tgetCoreRowModel,\n\ttype OnChangeFn,\n\ttype PaginationState,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport type React from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport type { components } from \"@/api/prefect\";\nimport { DataTable } from \"@/components/ui/data-table\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@/components/ui/select\";\nimport { TagBadgeGroup } from \"@/components/ui/tag-badge-group\";\nimport { TagsInput } from \"@/components/ui/tags-input\";\nimport { pluralize } from \"@/utils\";\nimport { ActionsCell, ValueCell } from \"./cells\";\n\nconst columnHelper = createColumnHelper<components[\"schemas\"][\"Variable\"]>();\n\nconst createColumns = (\n\tonVariableEdit: (variable: components[\"schemas\"][\"Variable\"]) => void,\n) => [\n\tcolumnHelper.accessor(\"name\", {\n\t\theader: \"Name\",\n\t}),\n\tcolumnHelper.accessor(\"value\", {\n\t\theader: \"Value\",\n\t\tcell: ValueCell,\n\t}),\n\tcolumnHelper.accessor(\"updated\", {\n\t\theader: \"Updated\",\n\t\tcell: (props) => {\n\t\t\tconst updated = props.getValue();\n\t\t\tif (!updated) return null;\n\t\t\treturn new Date(updated ?? new Date())\n\t\t\t\t.toLocaleString(undefined, {\n\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\tmonth: \"numeric\",\n\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\thour12: true,\n\t\t\t\t})\n\t\t\t\t.replace(\",\", \"\");\n\t\t},\n\t}),\n\tcolumnHelper.accessor(\"tags\", {\n\t\theader: () => null,\n\t\tcell: (props) => {\n\t\t\tconst tags = props.getValue();\n\t\t\tif (!tags) return null;\n\t\t\treturn <TagBadgeGroup tags={tags} maxTagsDisplayed={3} />;\n\t\t},\n\t}),\n\tcolumnHelper.display({\n\t\tid: \"actions\",\n\t\tcell: (props) => <ActionsCell {...props} onVariableEdit={onVariableEdit} />,\n\t}),\n];\n\ntype VariablesDataTableProps = {\n\tvariables: components[\"schemas\"][\"Variable\"][];\n\tcurrentVariableCount: number;\n\tpagination: PaginationState;\n\tonPaginationChange: (newPagination: PaginationState) => void;\n\tcolumnFilters: ColumnFiltersState;\n\tonColumnFiltersChange: (newColumnFilters: ColumnFiltersState) => void;\n\tsorting: components[\"schemas\"][\"VariableSort\"];\n\tonSortingChange: (sortKey: components[\"schemas\"][\"VariableSort\"]) => void;\n\tonVariableEdit: (variable: components[\"schemas\"][\"Variable\"]) => void;\n};\n\nexport const VariablesDataTable = ({\n\tvariables,\n\tcurrentVariableCount,\n\tpagination,\n\tonPaginationChange,\n\tcolumnFilters,\n\tonColumnFiltersChange,\n\tsorting,\n\tonSortingChange,\n\tonVariableEdit,\n}: VariablesDataTableProps) => {\n\tconst columns = useMemo(\n\t\t() => createColumns(onVariableEdit),\n\t\t[onVariableEdit],\n\t);\n\n\tconst nameSearchValue = columnFilters.find((filter) => filter.id === \"name\")\n\t\t?.value as string;\n\tconst tagsSearchValue = columnFilters.find((filter) => filter.id === \"tags\")\n\t\t?.value as string[];\n\tconst handleNameSearchChange = useCallback(\n\t\t(value?: string) => {\n\t\t\tconst filters = columnFilters.filter((filter) => filter.id !== \"name\");\n\t\t\tonColumnFiltersChange(\n\t\t\t\tvalue ? [...filters, { id: \"name\", value }] : filters,\n\t\t\t);\n\t\t},\n\t\t[onColumnFiltersChange, columnFilters],\n\t);\n\n\tconst handleTagsSearchChange: React.ChangeEventHandler<HTMLInputElement> &\n\t\t((tags: string[]) => void) = useCallback(\n\t\t(e: string[] | React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst tags = Array.isArray(e) ? e : e.target.value;\n\t\t\tconst filters = columnFilters.filter((filter) => filter.id !== \"tags\");\n\t\t\tonColumnFiltersChange(\n\t\t\t\ttags.length ? [...filters, { id: \"tags\", value: tags }] : filters,\n\t\t\t);\n\t\t},\n\t\t[onColumnFiltersChange, columnFilters],\n\t);\n\n\tconst handlePaginationChange: OnChangeFn<PaginationState> = useCallback(\n\t\t(updater) => {\n\t\t\tlet newPagination = pagination;\n\t\t\tif (typeof updater === \"function\") {\n\t\t\t\tnewPagination = updater(pagination);\n\t\t\t} else {\n\t\t\t\tnewPagination = updater;\n\t\t\t}\n\t\t\tonPaginationChange(newPagination);\n\t\t},\n\t\t[pagination, onPaginationChange],\n\t);\n\n\tconst table = useReactTable({\n\t\tdata: variables,\n\t\tcolumns: columns,\n\t\tstate: {\n\t\t\tpagination,\n\t\t\tcolumnFilters,\n\t\t},\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tmanualPagination: true,\n\t\tonPaginationChange: handlePaginationChange,\n\t\trowCount: currentVariableCount,\n\t\tdefaultColumn: {\n\t\t\tmaxSize: 300,\n\t\t},\n\t});\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"grid sm:grid-cols-2 md:grid-cols-6 lg:grid-cols-12 gap-2 pb-4 items-center\">\n\t\t\t\t<div className=\"sm:col-span-2 md:col-span-6 lg:col-span-4 order-last lg:order-first\">\n\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t{currentVariableCount} {pluralize(currentVariableCount, \"Variable\")}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"sm:col-span-2 md:col-span-2 lg:col-span-3\">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tplaceholder=\"Search variables\"\n\t\t\t\t\t\tvalue={nameSearchValue}\n\t\t\t\t\t\tonChange={(e) => handleNameSearchChange(e.target.value)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"xs:col-span-1 md:col-span-2 lg:col-span-3\">\n\t\t\t\t\t<TagsInput\n\t\t\t\t\t\tplaceholder=\"Filter by tags\"\n\t\t\t\t\t\tonChange={handleTagsSearchChange}\n\t\t\t\t\t\tvalue={tagsSearchValue}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"xs:col-span-1 md:col-span-2 lg:col-span-2\">\n\t\t\t\t\t<Select value={sorting} onValueChange={onSortingChange}>\n\t\t\t\t\t\t<SelectTrigger aria-label=\"Variable sort order\" className=\"w-full\">\n\t\t\t\t\t\t\t<SelectValue placeholder=\"Sort by\" />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectItem value=\"CREATED_DESC\">Created</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"UPDATED_DESC\">Updated</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"NAME_ASC\">A to Z</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"NAME_DESC\">Z to A</SelectItem>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<DataTable table={table} />\n\t\t</div>\n\t);\n};\n","import { Button } from \"@/components/ui/button\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\nimport {\n\tEmptyState,\n\tEmptyStateActions,\n\tEmptyStateDescription,\n\tEmptyStateIcon,\n\tEmptyStateTitle,\n} from \"@/components/ui/empty-state\";\nimport { Icon } from \"@/components/ui/icons\";\n\ntype VariablesEmptyStateProps = {\n\tonAddVariableClick: () => void;\n};\nexport const VariablesEmptyState = ({\n\tonAddVariableClick,\n}: VariablesEmptyStateProps) => (\n\t<EmptyState>\n\t\t<EmptyStateIcon id=\"Variable\" />\n\t\t<EmptyStateTitle>Add a variable to get started</EmptyStateTitle>\n\t\t<EmptyStateDescription>\n\t\t\tVariables store non-sensitive pieces of JSON.\n\t\t</EmptyStateDescription>\n\t\t<EmptyStateActions>\n\t\t\t<Button onClick={() => onAddVariableClick()}>\n\t\t\t\tAdd Variable <Icon id=\"Plus\" className=\"size-4 ml-2\" />\n\t\t\t</Button>\n\t\t\t<DocsLink id=\"variables-guide\" />\n\t\t</EmptyStateActions>\n\t</EmptyState>\n);\n","import { useCallback, useState } from \"react\";\nimport type { VariableDialogProps } from \"./variable-dialog\";\n\nexport const useVariableDialog = () => {\n\tconst handleVariableDialogOpenChange = useCallback((open: boolean) => {\n\t\tsetDialogState((prev) => ({\n\t\t\t...prev,\n\t\t\topen,\n\t\t}));\n\t}, []);\n\n\tconst [dialogState, setDialogState] = useState<VariableDialogProps>({\n\t\topen: false,\n\t\tonOpenChange: handleVariableDialogOpenChange,\n\t});\n\n\tconst handleVariableAddOrEdit = useCallback(\n\t\t(variableToEdit?: VariableDialogProps[\"variableToEdit\"]) => {\n\t\t\tsetDialogState((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\topen: true,\n\t\t\t\tvariableToEdit,\n\t\t\t}));\n\t\t},\n\t\t[],\n\t);\n\n\treturn [dialogState, handleVariableAddOrEdit] as const;\n};\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useEffect, useMemo } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport type { components } from \"@/api/prefect\";\nimport { useCreateVariable, useUpdateVariable } from \"@/api/variables\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n} from \"@/components/ui/dialog\";\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 { TagsInput } from \"@/components/ui/tags-input\";\n\nexport type JSONValue =\n\t| string\n\t| number\n\t| boolean\n\t| Record<string, never>\n\t| unknown[]\n\t| null;\n\nconst formSchema = z.object({\n\tname: z.string().min(2, { message: \"Name must be at least 2 characters\" }),\n\tvalue: z.string(),\n\ttags: z.string().array().optional(),\n});\n\nexport type VariableDialogProps = {\n\tonOpenChange: (open: boolean) => void;\n\topen: boolean;\n\tvariableToEdit?: components[\"schemas\"][\"Variable\"];\n};\n\nconst VARIABLE_FORM_DEFAULT_VALUES = {\n\tname: \"\",\n\tvalue: \"\",\n\ttags: [],\n};\n\nexport const VariableDialog = ({\n\tonOpenChange,\n\topen,\n\tvariableToEdit,\n}: VariableDialogProps) => {\n\tconst form = useForm({\n\t\tresolver: zodResolver(formSchema),\n\t\tdefaultValues: VARIABLE_FORM_DEFAULT_VALUES,\n\t});\n\tconst initialValues = useMemo(() => {\n\t\tif (!variableToEdit) return undefined;\n\t\treturn {\n\t\t\tname: variableToEdit.name,\n\t\t\tvalue: JSON.stringify(variableToEdit.value, null, 2),\n\t\t\ttags: variableToEdit.tags,\n\t\t};\n\t}, [variableToEdit]);\n\n\tuseEffect(() => {\n\t\t// Ensure we start with the initial values when the dialog opens\n\t\tif (open) {\n\t\t\tform.reset(initialValues ?? VARIABLE_FORM_DEFAULT_VALUES);\n\t\t}\n\t}, [initialValues, form, open]);\n\n\tconst { createVariable, isPending: isCreating } = useCreateVariable();\n\n\tconst { updateVariable, isPending: isUpdating } = useUpdateVariable();\n\n\tconst onSubmit = (values: z.infer<typeof formSchema>) => {\n\t\ttry {\n\t\t\tconst value = JSON.parse(values.value) as JSONValue;\n\t\t\tif (variableToEdit?.id) {\n\t\t\t\tupdateVariable(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: variableToEdit.id,\n\t\t\t\t\t\tname: values.name,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttags: values.tags,\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(\"Variable updated\");\n\t\t\t\t\t\t\tonOpenChange(false);\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 variable.\";\n\t\t\t\t\t\t\tform.setError(\"root\", {\n\t\t\t\t\t\t\t\tmessage,\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} else {\n\t\t\t\tcreateVariable(\n\t\t\t\t\t{\n\t\t\t\t\t\tname: values.name,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttags: values.tags,\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(\"Variable created\");\n\t\t\t\t\t\t\tonOpenChange(false);\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 variable.\";\n\t\t\t\t\t\t\tform.setError(\"root\", {\n\t\t\t\t\t\t\t\tmessage,\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\t\t} catch {\n\t\t\tform.setError(\"value\", { message: \"Value must be valid JSON\" });\n\t\t}\n\t};\n\tconst dialogTitle = variableToEdit ? \"Edit Variable\" : \"New Variable\";\n\tconst dialogDescription = variableToEdit\n\t\t? \"Edit the variable by changing the name, value, or tags.\"\n\t\t: \"Add a new variable by providing a name, value, and optional tags. Values can be any valid JSON value.\";\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent>\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>{dialogTitle}</DialogTitle>\n\t\t\t\t</DialogHeader>\n\t\t\t\t<DialogDescription>{dialogDescription}</DialogDescription>\n\t\t\t\t<Form {...form}>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={(e) => void form.handleSubmit(onSubmit)(e)}\n\t\t\t\t\t\tclassName=\"space-y-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormMessage>{form.formState.errors.root?.message}</FormMessage>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Name</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Input autoComplete=\"off\" {...field} />\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"value\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Value</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<JsonInput {...field} />\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"tags\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Tags</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<TagsInput {...field} />\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DialogFooter>\n\t\t\t\t\t\t\t<DialogClose asChild>\n\t\t\t\t\t\t\t\t<Button type=\"button\" variant=\"outline\">\n\t\t\t\t\t\t\t\t\tClose\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</DialogClose>\n\t\t\t\t\t\t\t<Button type=\"submit\" loading={isCreating || isUpdating}>\n\t\t\t\t\t\t\t\t{variableToEdit ? \"Save\" : \"Create\"}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</DialogFooter>\n\t\t\t\t\t</form>\n\t\t\t\t</Form>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n};\n","import { useSuspenseQueries } from \"@tanstack/react-query\";\nimport type { ErrorComponentProps } from \"@tanstack/react-router\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport type {\n\tColumnFiltersState,\n\tPaginationState,\n} from \"@tanstack/react-table\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport { categorizeError } from \"@/api/error-utils\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\tbuildCountVariablesQuery,\n\tbuildFilterVariablesQuery,\n\ttype VariablesFilter,\n} from \"@/api/variables\";\nimport { PrefectLoading } from \"@/components/ui/loading\";\nimport { RouteErrorState } from \"@/components/ui/route-error-state\";\nimport { VariablesDataTable } from \"@/components/variables/data-table\";\nimport { VariablesEmptyState } from \"@/components/variables/empty-state\";\nimport { VariablesPageHeader } from \"@/components/variables/header\";\nimport {\n\tuseVariableDialog,\n\tVariableDialog,\n} from \"@/components/variables/variable-dialog\";\n\n/**\n * Schema for validating URL search parameters for the variables page.\n * @property {number} offset - The number of items to skip (for pagination). Must be non-negative. Defaults to 0.\n * @property {number} limit - The maximum number of items to return. Must be positive. Defaults to 10.\n * @property {string} sort - The sort order for variables. Can be \"CREATED_DESC\", \"UPDATED_DESC\", \"NAME_ASC\", or \"NAME_DESC\". Defaults to \"CREATED_DESC\".\n * @property {string} name - Optional filter to search variables by name.\n * @property {string[]} tags - Optional array of tags to filter variables by.\n */\nconst searchParams = z.object({\n\toffset: z.number().int().nonnegative().optional().default(0).catch(0),\n\tlimit: z.number().int().positive().optional().default(10).catch(10),\n\tsort: z\n\t\t.enum([\"CREATED_DESC\", \"UPDATED_DESC\", \"NAME_ASC\", \"NAME_DESC\"])\n\t\t.optional()\n\t\t.default(\"CREATED_DESC\")\n\t\t.catch(\"CREATED_DESC\"),\n\tname: z.string().optional().catch(undefined),\n\ttags: z.array(z.string()).optional().catch(undefined),\n});\n\n/**\n * Builds a filter body for the variables API based on search parameters.\n * @param search - Optional search parameters containing offset, limit, sort, name filter, and tags filter\n * @returns An object containing pagination parameters and variable filters that can be passed to the variables API\n */\nconst buildFilterBody = (\n\tsearch?: z.infer<typeof searchParams>,\n): VariablesFilter => ({\n\toffset: search?.offset ?? 0,\n\tlimit: search?.limit ?? 10,\n\tsort: search?.sort ?? \"CREATED_DESC\",\n\tvariables: {\n\t\toperator: \"and_\" as const,\n\t\t...(search?.name && { name: { like_: search.name } }),\n\t\t...(search?.tags?.length && {\n\t\t\ttags: { operator: \"and_\" as const, all_: search.tags },\n\t\t}),\n\t},\n});\n\nfunction VariablesErrorComponent({ error, reset }: ErrorComponentProps) {\n\tconst serverError = categorizeError(error, \"Failed to load variables\");\n\n\t// Only handle API errors (server-error, client-error) at route level\n\t// Let network errors and unknown errors bubble up to root error component\n\tif (\n\t\tserverError.type !== \"server-error\" &&\n\t\tserverError.type !== \"client-error\"\n\t) {\n\t\tthrow error;\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<VariablesPageHeader />\n\t\t\t<RouteErrorState error={serverError} onRetry={reset} />\n\t\t</div>\n\t);\n}\n\nexport const Route = createFileRoute(\"/variables/\")({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\terrorComponent: VariablesErrorComponent,\n\tloaderDeps: ({ search }) => buildFilterBody(search),\n\tloader: ({ deps, context }) => {\n\t\t// Prefetch filtered variables\n\t\tvoid context.queryClient.prefetchQuery(buildFilterVariablesQuery(deps));\n\t\t// Prefetch filtered count\n\t\tvoid context.queryClient.prefetchQuery(buildCountVariablesQuery(deps));\n\t\t// Prefetch total count (no filter)\n\t\tvoid context.queryClient.prefetchQuery(buildCountVariablesQuery());\n\t},\n\twrapInSuspense: true,\n\tpendingComponent: PrefectLoading,\n});\n\n/**\n * Hook to manage pagination state and navigation for variables table\n *\n * Calculates current page index and size from URL search parameters and provides\n * a callback to update pagination state. Updates the URL when pagination changes.\n *\n * @returns A tuple containing:\n * - pagination: Current pagination state with pageIndex and pageSize\n * - onPaginationChange: Callback to update pagination and navigate with new search params\n */\nconst usePagination = () => {\n\tconst search = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\tconst pageIndex = search.offset ? Math.ceil(search.offset / search.limit) : 0;\n\tconst pageSize = search.limit ?? 10;\n\tconst pagination: PaginationState = useMemo(\n\t\t() => ({\n\t\t\tpageIndex,\n\t\t\tpageSize,\n\t\t}),\n\t\t[pageIndex, pageSize],\n\t);\n\n\tconst onPaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\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\toffset: newPagination.pageIndex * newPagination.pageSize,\n\t\t\t\t\tlimit: newPagination.pageSize,\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\n\treturn [pagination, onPaginationChange] as const;\n};\n\n/**\n * Hook to manage column filtering state and navigation for variables table\n *\n * Handles filtering by name and tags, updating the URL search parameters when filters change.\n * Resets pagination offset when filters are updated.\n *\n * @returns A tuple containing:\n * - columnFilters: Current column filter state for name and tags\n * - onColumnFiltersChange: Callback to update filters and navigate with new search params\n */\nconst useVariableColumnFilters = () => {\n\tconst search = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\tconst columnFilters: ColumnFiltersState = useMemo(\n\t\t() => [\n\t\t\t{ id: \"name\", value: search.name },\n\t\t\t{ id: \"tags\", value: search.tags },\n\t\t],\n\t\t[search.name, search.tags],\n\t);\n\n\tconst onColumnFiltersChange = useCallback(\n\t\t(newColumnFilters: ColumnFiltersState) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: (prev) => {\n\t\t\t\t\tconst name = newColumnFilters.find((filter) => filter.id === \"name\")\n\t\t\t\t\t\t?.value as string | undefined;\n\t\t\t\t\tconst tags = newColumnFilters.find((filter) => filter.id === \"tags\")\n\t\t\t\t\t\t?.value as string[] | undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\ttags,\n\t\t\t\t\t};\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\n\treturn [columnFilters, onColumnFiltersChange] as const;\n};\n\n/**\n * Hook to manage sorting state and navigation for variables table\n *\n * Handles updating the URL search parameters when sort key changes.\n * Uses the current sort value from search params and provides a callback\n * to update sorting.\n *\n * @returns A tuple containing:\n * - sorting: Current sort key from search params\n * - onSortingChange: Callback to update sort and navigate with new search params\n */\nconst useVariableSorting = () => {\n\tconst search = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\n\tconst onSortingChange = useCallback(\n\t\t(sortKey: components[\"schemas\"][\"VariableSort\"]) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: (prev) => ({ ...prev, sort: sortKey }),\n\t\t\t\treplace: true,\n\t\t\t});\n\t\t},\n\t\t[navigate],\n\t);\n\n\treturn [search.sort, onSortingChange] as const;\n};\n\nfunction RouteComponent() {\n\tconst search = Route.useSearch();\n\tconst [pagination, onPaginationChange] = usePagination();\n\tconst [columnFilters, onColumnFiltersChange] = useVariableColumnFilters();\n\tconst [sorting, onSortingChange] = useVariableSorting();\n\tconst [variableDialogState, onVariableAddOrEdit] = useVariableDialog();\n\n\tconst [{ data: variables }, { data: filteredCount }, { data: totalCount }] =\n\t\tuseSuspenseQueries({\n\t\t\tqueries: [\n\t\t\t\tbuildFilterVariablesQuery(buildFilterBody(search)),\n\t\t\t\tbuildCountVariablesQuery(buildFilterBody(search)),\n\t\t\t\tbuildCountVariablesQuery(),\n\t\t\t],\n\t\t});\n\n\tconst hasVariables = (totalCount ?? 0) > 0;\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<VariablesPageHeader onAddVariableClick={onVariableAddOrEdit} />\n\t\t\t<VariableDialog {...variableDialogState} />\n\t\t\t{hasVariables ? (\n\t\t\t\t<VariablesDataTable\n\t\t\t\t\tvariables={variables ?? []}\n\t\t\t\t\tcurrentVariableCount={filteredCount ?? 0}\n\t\t\t\t\tpagination={pagination}\n\t\t\t\t\tonPaginationChange={onPaginationChange}\n\t\t\t\t\tcolumnFilters={columnFilters}\n\t\t\t\t\tonColumnFiltersChange={onColumnFiltersChange}\n\t\t\t\t\tsorting={sorting}\n\t\t\t\t\tonSortingChange={onSortingChange}\n\t\t\t\t\tonVariableEdit={onVariableAddOrEdit}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<VariablesEmptyState onAddVariableClick={onVariableAddOrEdit} />\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["ActionsCell","row","onVariableEdit","id","deleteVariable","useDeleteVariable","onVariableDelete","toast","jsx","DropdownMenu","DropdownMenuTrigger","jsxs","Button","Icon","DropdownMenuContent","DropdownMenuLabel","DropdownMenuItem","copyValue","ValueCell","props","value","codeRef","useRef","isOverflowing","useIsOverflowing","HoverCard","HoverCardTrigger","HoverCardContent","JsonInput","columnHelper","createColumnHelper","createColumns","updated","tags","TagBadgeGroup","VariablesDataTable","variables","currentVariableCount","pagination","onPaginationChange","columnFilters","onColumnFiltersChange","sorting","onSortingChange","columns","useMemo","nameSearchValue","filter","tagsSearchValue","handleNameSearchChange","useCallback","filters","handleTagsSearchChange","e","handlePaginationChange","updater","newPagination","table","useReactTable","getCoreRowModel","pluralize","SearchInput","TagsInput","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","DataTable","VariablesEmptyState","onAddVariableClick","EmptyState","EmptyStateIcon","EmptyStateTitle","EmptyStateDescription","EmptyStateActions","DocsLink","useVariableDialog","handleVariableDialogOpenChange","open","setDialogState","prev","dialogState","useState","handleVariableAddOrEdit","variableToEdit","formSchema","z.object","z.string","VARIABLE_FORM_DEFAULT_VALUES","VariableDialog","onOpenChange","form","useForm","zodResolver","initialValues","useEffect","createVariable","isCreating","useCreateVariable","updateVariable","isUpdating","useUpdateVariable","onSubmit","values","error","message","dialogTitle","dialogDescription","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Form","FormMessage","FormField","field","FormItem","FormLabel","FormControl","Input","DialogFooter","DialogClose","buildFilterBody","search","offset","limit","sort","operator","name","like_","length","all_","usePagination","Route","useSearch","navigate","useNavigate","pageIndex","Math","ceil","pageSize","to","replace","useVariableColumnFilters","newColumnFilters","find","useVariableSorting","sortKey","RouteComponent","variableDialogState","onVariableAddOrEdit","data","filteredCount","totalCount","useSuspenseQueries","queries","buildFilterVariablesQuery","buildCountVariablesQuery","hasVariables","VariablesPageHeader"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as i,j as s,t as T,L as Ne,F as Ge,n as lt,E as it}from"./vendor-tanstack-BdLtprmr.js";import{ac as qe,ad as ct,ae as ut,af as Re,ag as dt,ah as mt,ai as ft,aj as gt,ak as ht,al as pt,am as xt,an as Ee,ao as K,ap as wt,y as Q,U as Xe,q as J,I as _,aq as St,ar as vt,as as kt,at as yt,au as Ft,av as Ct,aw as jt,a2 as Rt,a3 as Tt,a4 as Dt,a5 as bt,a6 as _t,p as Nt,a7 as Et,ax as Z,ay as At,i as b,az as Mt,aA as Pt,aB as Ae,aC as Me,C as It,o as Lt,G as zt,V as Pe,B as Ot,g as Ut,h as Vt,E as Ht,t as Bt,v as Wt,w as $t,x as Qt,D as Yt,aD as Ke,aE as S,aF as Gt,aG as qt,aH as Ie,aI as Le,aJ as Xt,aK as ze,aL as Kt,aM as Jt,aN as Zt,aO as es}from"./index-CPpeVt8m.js";import{D as ts,W as ss}from"./work-pool-filter-dsJ6xeK6.js";import{S as as}from"./sort-filter-X6JyRc0-.js";import{S as ns,F as os,a as rs}from"./flow-runs-pagination-DMLZFM1m.js";import{u as ls,F as is}from"./use-flow-runs-selected-rows-Ck8nwx2q.js";import{D as Je}from"./delete-confirmation-dialog-BZg9EOfN.js";import{D as cs,a as us,b as ds,d as Y,e as ms}from"./dropdown-menu-fRiq5bS-.js";import{g as Oe,S as Ue}from"./state-colors-CAAf0Eg3.js";import{R as fs,S as gs,d as hs,X as ps,Y as xs,T as ws,e as Ss}from"./vendor-recharts-CY3PKigC.js";import{T as vs,a as ks,b as ys}from"./task-runs-pagination-B2fSdB1t.js";import{u as Fs}from"./use-delete-confirmation-dialog-CkL-rSsp.js";import{T as Cs}from"./tags-input-DqZ8v99z.js";import{a as js}from"./zod-B1GLD-Zc.js";import{c as Rs,o as Ze,s as R,e as G,n as q,b as Ts}from"./vendor-forms-BlFSCfFw.js";import{F as Ds,b as bs,c as _s,d as Ns,e as Es,a as As}from"./form-Cl5Hk9bq.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-date-Cl1Jav-N.js";const Ms=({value:e,onValueChange:t,className:n})=>{const a=i.useMemo(()=>qe(e),[e]),o=r=>{t(ut(r))};return s.jsx(ct,{value:a,onValueChange:o,placeholder:"All time",clearable:!0,className:n})},Ve=2,Ps=({selectedFlows:e,onSelectFlows:t})=>{const[n,a]=i.useState(""),o=i.useDeferredValue(n),{data:r=[]}=T(Re({flows:o?{operator:"and_",name:{like_:o}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:c=[]}=T(Re({flows:e.size>0?{operator:"and_",id:{any_:Array.from(e)}}:void 0,limit:e.size||1,offset:0,sort:"NAME_ASC"},{enabled:e.size>0})),l=m=>{const f=new Set(e);e.has(m)?f.delete(m):f.add(m),t(f)},u=()=>{t(new Set)},g=()=>{if(e.size===0)return"All flows";const m=c.filter(w=>e.has(w.id)).map(w=>w.name),f=m.slice(0,Ve),h=m.length-Ve;return s.jsxs("div",{className:"flex flex-1 min-w-0 items-center gap-2",children:[s.jsx("div",{className:"flex flex-1 min-w-0 items-center gap-2 overflow-hidden",children:s.jsx("span",{className:"truncate",children:f.join(", ")})}),h>0&&s.jsxs("p",{className:"text-sm shrink-0",children:["+ ",h]})]})},d=i.useMemo(()=>r.filter(m=>!o||m.name.toLowerCase().includes(o.toLowerCase())),[r,o]);return s.jsxs(dt,{children:[s.jsx(mt,{"aria-label":"Filter by flow",selected:e.size===0,children:g()}),s.jsxs(ft,{children:[s.jsx(gt,{value:n,onValueChange:a,placeholder:"Search flows..."}),s.jsxs(ht,{children:[s.jsx(pt,{children:"No flows found"}),s.jsxs(xt,{children:[s.jsxs(Ee,{"aria-label":"All flows",onSelect:u,closeOnSelect:!1,value:"__all__",children:[s.jsx(K,{checked:e.size===0}),"All flows"]}),d.map(m=>s.jsxs(Ee,{"aria-label":m.name,onSelect:()=>l(m.id),closeOnSelect:!1,value:m.id,children:[s.jsx(K,{checked:e.has(m.id)}),m.name]},m.id))]})]})]})]})},Is=()=>{const[e,t]=Fs(),{mutateAsync:n}=wt(),a=async(r,c=()=>{})=>{try{const l=await Promise.allSettled(r.map(d=>n({id:d}))),{numFails:u,numSuccess:g}=l.reduce((d,m)=>(m.status==="rejected"?d.numFails+=1:d.numSuccess+=1,d),{numFails:0,numSuccess:0});u>1?Q.error(`${u} task runs failed to delete`):u===1?Q.error("Task run failed to delete"):g>1?Q.success(`${g} task runs deleted`):Q.success("Task run deleted")}catch(l){console.error("Unknown error while deleting task run.",l)}finally{c()}};return[e,(r,c=()=>{})=>t({title:"Delete Task Runs",description:"Are you sure you want to delete selected task runs?",onConfirm:()=>{a(r,c)}})]},Ls=({count:e=0,...t})=>"results"in t&&"setSelectedRows"in t&&"selectedRows"in t?s.jsx(zs,{count:e,...t}):s.jsxs("p",{className:"text-sm text-muted-foreground",children:[e," ",Xe(e,"Task run")]});function zs({count:e=0,results:t=[],setSelectedRows:n,selectedRows:a}){const[o,r]=Is(),c=i.useMemo(()=>t.map(({id:g})=>g),[t]),l=Array.from(a),u=()=>{const g=c.every(f=>a.has(f)),d=c.some(f=>a.has(f));let m=!1;return g?m=!0:d&&(m="indeterminate"),s.jsx(K,{className:"block",checked:m,onCheckedChange:f=>{n(f?new Set(c):new Set)},"aria-label":"Toggle all"})};return a.size>0?s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(u,{}),s.jsxs("p",{className:"text-sm text-muted-foreground",children:[l.length," selected"]}),s.jsx(J,{"aria-label":"Delete rows",size:"icon",variant:"secondary",onClick:()=>{r(l,()=>n(new Set))},children:s.jsx(_,{id:"Trash2",className:"size-4"})})]}),s.jsx(Je,{...o})]}):s.jsxs("div",{className:"flex items-center gap-2",children:[t&&n&&a&&s.jsx(K,{className:"block",checked:!1,onCheckedChange:g=>{n(new Set(g?c:void 0))},"aria-label":"Toggle all"}),s.jsxs("p",{className:"text-sm text-muted-foreground",children:[e," ",Xe(e,"Task run")]})]})}const Os=e=>{const[t,n]=i.useState(new Set(e)),a=u=>n(g=>new Set(g).add(u)),o=u=>n(g=>{const d=new Set(g);return d.delete(u),d});return[t,n,{addRow:a,removeRow:o,onSelectRow:(u,g)=>{g?a(u):o(u)},clearSet:()=>n(new Set)}]},et="Custom",Us="Unsaved";function Vs(e){return e?e.name===et||e.name===Us:!0}const Hs=({currentFilter:e,savedFilters:t,onSelect:n,onSave:a,onDelete:o,onSetDefault:r,onRemoveDefault:c,permissions:l={canSave:!0,canDelete:!0}})=>{const[u,g]=i.useState(!1),d=e?.name??et,m=Vs(e),f=m&&l.canSave,h=e?.id&&l.canDelete,w=!m,v=()=>{e?.id&&(o(e.id),g(!1))},x=()=>{e?.id&&(e.isDefault?c(e.id):r(e.id))};return s.jsxs(s.Fragment,{children:[s.jsxs(cs,{children:[s.jsx(us,{asChild:!0,children:s.jsxs(J,{variant:"outline",className:"gap-2",children:[s.jsx(_,{id:"SlidersVertical",className:"size-4"}),s.jsx("span",{children:d}),s.jsx(_,{id:"ChevronDown",className:"size-4"})]})}),s.jsxs(ds,{align:"start",className:"min-w-[200px]",children:[t.map(p=>s.jsxs(Y,{onClick:()=>n(p),className:"flex items-center justify-between",children:[s.jsx("span",{children:p.name}),p.isDefault&&s.jsx(_,{id:"CircleCheck",className:"size-4 text-green-500"})]},p.id??p.name)),(f||h||w)&&s.jsx(ms,{}),f&&s.jsxs(Y,{onClick:a,children:[s.jsx(_,{id:"Plus",className:"mr-2 size-4"}),"Save current filters"]}),h&&s.jsxs(Y,{variant:"destructive",onClick:()=>g(!0),children:[s.jsx(_,{id:"Trash2",className:"mr-2 size-4"}),"Delete"]}),w&&s.jsxs(Y,{onClick:x,children:[s.jsx(_,{id:"CircleCheck",className:"mr-2 size-4"}),e?.isDefault?"Remove as default":"Set as default"]})]})]}),s.jsx(Je,{isOpen:u,title:"Delete saved filter",description:`Are you sure you want to delete "${e?.name}"? This action cannot be undone.`,onConfirm:v,onClose:()=>g(!1)})]})},Bs=e=>{if(e===0)return"0s";if(e<1)return`${e.toFixed(2)}s`;const t=31536e3,n=86400,a=3600,o=60,r=Math.floor(e/t);if(r>0)return`${r}y`;const c=Math.floor(e/n);if(c>0)return`${c}d`;const l=Math.floor(e/a);if(l>0)return`${l}h`;const u=Math.floor(e/o);return u>0?`${u}m`:`${Math.ceil(e)}s`},He=[{ms:1e3,name:"second"},{ms:5*1e3,name:"5seconds"},{ms:15*1e3,name:"15seconds"},{ms:30*1e3,name:"30seconds"},{ms:60*1e3,name:"minute"},{ms:300*1e3,name:"5minutes"},{ms:900*1e3,name:"15minutes"},{ms:1800*1e3,name:"30minutes"},{ms:3600*1e3,name:"hour"},{ms:10800*1e3,name:"3hours"},{ms:360*60*1e3,name:"6hours"},{ms:720*60*1e3,name:"12hours"},{ms:1440*60*1e3,name:"day"},{ms:10080*60*1e3,name:"week"},{ms:720*60*60*1e3,name:"month"}],Ws=(e,t,n)=>{const a=t-e;if(a<=0)return[e];const o=a/n;let r=He[0].ms;for(const u of He){if(u.ms>=o){r=u.ms;break}r=u.ms}const c=Math.ceil(e/r)*r,l=[];for(let u=c;u<=t;u+=r)l.push(u);return l.length===0&&l.push(e),l},$s=()=>e=>{const t=new Date(e),n=new Date(t);if(n.setMilliseconds(0),n.getTime()<t.getTime())return`.${t.getMilliseconds().toString().padStart(3,"0").slice(0,3)}`;const a=new Date(t);if(a.setSeconds(0,0),a.getTime()<t.getTime())return`:${t.getSeconds().toString().padStart(2,"0")}`;const o=new Date(t);if(o.setMinutes(0,0,0),o.getTime()<t.getTime())return t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"});const r=new Date(t);if(r.setHours(0,0,0,0),r.getTime()<t.getTime())return t.toLocaleTimeString(void 0,{hour:"numeric",hour12:!0});const c=new Date(t);if(c.setDate(1),c.setHours(0,0,0,0),c.getTime()<t.getTime())return t.toLocaleDateString(void 0,{weekday:"short",day:"numeric"});const l=new Date(t);return l.setMonth(0,1),l.setHours(0,0,0,0),l.getTime()<t.getTime()?t.toLocaleDateString(void 0,{month:"long"}):t.getFullYear().toString()},Qs=({cx:e,cy:t,payload:n})=>{if(e===void 0||t===void 0||!n)return null;const a=Oe(n.stateType,500)||Ue[n.stateType]||"#6b7280",o=Oe(n.stateType,600)||Ue[n.stateType]||"#6b7280";return s.jsx("circle",{cx:e,cy:t,r:8,fill:a,stroke:o,strokeWidth:1,opacity:.5,className:"hover:opacity-100 transition-opacity cursor-pointer"})},Ys=({active:e,payload:t})=>{const a=t?.[0]?.payload,o=a?.id,{data:r}=T({...St(o??""),enabled:e&&!!o,staleTime:300*1e3}),{data:c}=T({...vt(r?.flow_id??""),enabled:!!r?.flow_id,staleTime:300*1e3});if(!e||!t||t.length===0||!a)return null;const l=new Date(a.timestamp);return s.jsxs("div",{className:"bg-background border rounded-lg p-3 shadow-lg flex flex-col gap-2 min-w-48",children:[s.jsxs("div",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:[r?.flow_id&&s.jsxs(s.Fragment,{children:[s.jsx(Ne,{to:"/flows/flow/$id",params:{id:r.flow_id},className:"font-semibold hover:underline truncate max-w-32",children:c?.name??"..."}),s.jsx(kt,{className:"size-3 flex-shrink-0"})]}),s.jsx(Ne,{to:"/runs/flow-run/$id",params:{id:a.id},className:"hover:underline truncate max-w-32",children:r?.name??a.id.slice(0,8)})]}),s.jsx("div",{children:s.jsx(yt,{type:a.stateType})}),s.jsx("hr",{className:"border-border"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsxs("span",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsx(Ct,{className:"size-4"}),Ft(Math.ceil(a.duration*1e3),{largest:2,round:!0})]}),s.jsxs("span",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsx(jt,{className:"size-4"}),l.toLocaleString()]})]})]})},Gs=({history:e,startDate:t,endDate:n})=>{const a=i.useMemo(()=>e.map(l=>({x:new Date(l.timestamp).getTime(),y:l.duration,stateType:l.state_type,id:l.id,duration:l.duration,lateness:l.lateness,timestamp:l.timestamp})),[e]),o=i.useMemo(()=>{if(t&&n)return[t.getTime(),n.getTime()];if(a.length===0){const d=Date.now();return[d-1440*60*1e3,d]}const l=a.map(d=>d.x),u=Math.min(...l),g=Math.max(...l);return[u,g]},[t,n,a]),r=i.useMemo(()=>$s(),[]),c=i.useMemo(()=>Ws(o[0],o[1],10),[o]);return e.length===0?null:s.jsx("div",{className:"hidden md:block w-full h-72","data-testid":"scatter-plot",children:s.jsx(fs,{width:"100%",height:"100%",children:s.jsxs(gs,{children:[s.jsx(hs,{horizontal:!0,vertical:!1,stroke:"#cacccf",strokeDasharray:""}),s.jsx(ps,{type:"number",dataKey:"x",scale:"time",domain:o,ticks:c,tickFormatter:r,tick:{fontSize:12},tickLine:!1,axisLine:{stroke:"#e5e7eb"}}),s.jsx(xs,{type:"number",dataKey:"y",tickFormatter:Bs,tick:{fontSize:12},tickLine:!1,axisLine:{stroke:"#e5e7eb"},width:60}),s.jsx(ws,{content:s.jsx(Ys,{}),cursor:{strokeDasharray:"3 3"},animationDuration:0}),s.jsx(Ss,{data:a,shape:s.jsx(Qs,{}),isAnimationActive:!1})]})})})},qs=Ze({name:R().min(1,{message:"Name is required"}).max(100,{message:"Name must be 100 characters or less"})}),Xs=({open:e,onOpenChange:t,onSave:n})=>{const a=Rs({resolver:js(qs),defaultValues:{name:""}});i.useEffect(()=>{e&&a.reset({name:""})},[e,a]);const o=r=>{n(r.name),t(!1)};return s.jsx(Rt,{open:e,onOpenChange:t,children:s.jsxs(Tt,{children:[s.jsx(Dt,{children:s.jsx(bt,{children:"Save Filter"})}),s.jsx(_t,{children:"Save your current filter configuration for quick access later."}),s.jsx(Ds,{...a,children:s.jsxs("form",{onSubmit:r=>{a.handleSubmit(o)(r)},className:"space-y-4",children:[s.jsx(bs,{control:a.control,name:"name",render:({field:r})=>s.jsxs(_s,{children:[s.jsx(Ns,{children:"Filter Name"}),s.jsx(Es,{children:s.jsx(Nt,{autoComplete:"off",placeholder:"e.g., Failed runs this week",...r})}),s.jsx(As,{})]})}),s.jsxs(Et,{children:[s.jsx(J,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Cancel"}),s.jsx(J,{type:"submit",children:"Save"})]})]})})]})})},Ks="prefect-ui-v2-saved-filters",Js="prefect-ui-v2-default-filter-id",tt="system-past-week",st="system-hide-scheduled";function Zs(e){return e===tt||e===st}const at=[{id:tt,name:"Past week",filters:{range:"past-7-days"}},{id:st,name:"Hide scheduled runs",filters:{range:"past-7-days",state:[...At]}}],ea=at[0];function ta(){return`${Date.now()}-${Math.random().toString(36).substring(2,9)}`}function sa(e,t){const n=(a,o)=>{if(a===void 0&&o===void 0)return!0;if(a===void 0||o===void 0||a.length!==o.length)return!1;const r=[...a].sort(),c=[...o].sort();return r.every((l,u)=>l===c[u])};return n(e.state,t.state)&&n(e.flows,t.flows)&&n(e.deployments,t.deployments)&&n(e.workPools,t.workPools)&&n(e.tags,t.tags)&&e.range===t.range&&e.start===t.start&&e.end===t.end}function nt(){const[e,t]=Z(Ks,[]),[n,a]=Z(Js,null),o=i.useMemo(()=>[...at,...e],[e]),r=i.useCallback(f=>{const h={id:ta(),name:f.name,filters:f.filters};return t(w=>[...w,h]),h},[t]),c=i.useCallback(f=>{t(h=>h.filter(w=>w.id!==f)),a(h=>h===f?null:h)},[t,a]),l=i.useCallback((f,h)=>{t(w=>w.map(v=>v.id===f?{...v,...h.name!==void 0&&{name:h.name},...h.filters!==void 0&&{filters:h.filters}}:v))},[t]),u=i.useCallback(f=>{a(f)},[a]),g=i.useCallback(f=>o.find(h=>h.id===f),[o]),d=i.useCallback(f=>o.find(h=>sa(h.filters,f)),[o]),m=i.useMemo(()=>f=>n===f,[n]);return{savedFilters:o,defaultFilterId:n,saveFilter:r,deleteFilter:c,updateFilter:l,setDefaultFilter:u,getFilterById:g,findMatchingFilter:d,isDefaultFilter:m}}const aa=({tab:e,onTabChange:t,flowRunsCount:n,taskRunsCount:a,hasAnyFlowRuns:o,hasAnyTaskRuns:r,flowRuns:c,flowRunsPages:l,pagination:u,onPaginationChange:g,onPrefetchPage:d,sort:m,onSortChange:f,hideSubflows:h,onHideSubflowsChange:w,flowRunSearch:v,onFlowRunSearchChange:x,selectedStates:p,onStateFilterChange:y,selectedFlows:E,onFlowFilterChange:A,selectedDeployments:F,onDeploymentFilterChange:N,selectedTags:M,onTagsFilterChange:D,selectedWorkPools:se,onWorkPoolFilterChange:ae,dateRange:ne,onDateRangeChange:oe,flowRunHistory:re,scatterPlotDateRange:U,taskRuns:V,taskRunsPages:le,taskRunsPagination:ie,onTaskRunsPaginationChange:ce,onTaskRunsPrefetchPage:P,taskRunsSort:ue,onTaskRunsSortChange:de,taskRunSearch:me,onTaskRunSearchChange:fe,onClearTaskRunFilters:ge,currentFilter:H,savedFilters:he,onSelectFilter:pe,onSaveFilter:xe,onDeleteFilter:we,onSetDefault:Se,onRemoveDefault:ve,isSaveDialogOpen:I,onCloseSaveDialog:L,onConfirmSave:ke})=>{const z=!o&&!r,[B,ye,{onSelectRow:Fe}]=ls(),[W,Ce,{onSelectRow:k}]=Os(),j=[...new Set(c.map(C=>C.flow_id))],{data:$}=T(Re({flows:{operator:"and_",id:{any_:j}},offset:0,sort:"NAME_ASC"},{enabled:j.length>0})),O=c.map(C=>({...C,flow:$?.find(je=>je.id===C.flow_id)}));return z?s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsx(Be,{}),s.jsx(na,{})]}):s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(Be,{}),s.jsx(Hs,{currentFilter:H,savedFilters:he,onSelect:pe,onSave:xe,onDelete:we,onSetDefault:Se,onRemoveDefault:ve,permissions:{canSave:!0,canDelete:!Zs(H?.id??null)}})]}),s.jsxs("div",{className:"flex flex-col gap-2",children:[s.jsxs("div",{className:"flex flex-wrap gap-2 lg:grid lg:grid-flow-col lg:auto-cols-fr",children:[s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"Date Range"}),s.jsx(Ms,{value:ne,onValueChange:oe})]}),s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"States"}),s.jsx(ns,{selectedFilters:p,onSelectFilter:y})]})]}),s.jsxs("div",{className:"flex flex-wrap gap-2 lg:grid lg:grid-flow-col lg:auto-cols-fr",children:[s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"Flows"}),s.jsx(Ps,{selectedFlows:E,onSelectFlows:A})]}),s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"Deployments"}),s.jsx(ts,{selectedDeployments:F,onSelectDeployments:N})]}),s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"Work Pools"}),s.jsx(ss,{selectedWorkPools:se,onSelectWorkPools:ae})]}),s.jsxs("div",{className:"flex flex-col gap-1 w-full lg:w-auto",children:[s.jsx(b,{className:"text-xs text-muted-foreground",children:"Tags"}),s.jsx(Cs,{value:Array.from(M),onChange:C=>{const je=Array.isArray(C)?C:[];D(new Set(je))},placeholder:"All tags"})]})]})]}),s.jsx(Xs,{open:I,onOpenChange:L,onSave:ke}),s.jsxs(Mt,{value:e,onValueChange:t,children:[s.jsxs(Pt,{children:[s.jsx(Ae,{value:"flow-runs",children:"Flow Runs"}),s.jsx(Ae,{value:"task-runs",children:"Task Runs"})]}),s.jsx(Me,{value:"flow-runs",children:s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsx(It,{children:s.jsx(Lt,{children:s.jsx(Gs,{history:re,startDate:U.startDate,endDate:U.endDate})})}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(is,{count:n,results:O,selectedRows:B,setSelectedRows:ye}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("div",{className:"flex items-center gap-2 whitespace-nowrap",children:[s.jsx(zt,{id:"hide-subflows",checked:h,onCheckedChange:w}),s.jsx(b,{htmlFor:"hide-subflows",children:"Hide subflows"})]}),s.jsx(Pe,{value:v,onChange:C=>x(C.target.value),placeholder:"Search by flow run name","aria-label":"Search by flow run name",className:"w-64",debounceMs:1200}),s.jsx(as,{value:m,onSelect:f})]})]}),s.jsx(os,{count:n,pages:l,pagination:u,onChangePagination:g,onPrefetchPage:d}),s.jsx(rs,{flowRuns:O,selectedRows:B,onSelect:Fe})]})}),s.jsx(Me,{value:"task-runs",children:s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(Ls,{count:a,results:V,selectedRows:W,setSelectedRows:Ce}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(Pe,{value:me,onChange:C=>fe(C.target.value),placeholder:"Search by task run name","aria-label":"Search by task run name",className:"w-64",debounceMs:1200}),s.jsx(vs,{value:ue,onSelect:de})]})]}),s.jsx(ks,{count:a,pages:le,pagination:ie,onChangePagination:ce,onPrefetchPage:P}),s.jsx(ys,{taskRuns:V,selectedRows:W,onSelect:k,onClearFilters:ge})]})})]})]})},Be=()=>s.jsx("div",{className:"flex items-center gap-2",children:s.jsx(Ot,{children:s.jsx(Ut,{children:s.jsx(Vt,{className:"text-xl font-semibold",children:"Runs"})})})}),na=()=>s.jsxs(Ht,{children:[s.jsx(Bt,{id:"Workflow"}),s.jsx(Wt,{children:"Run a task or flow to get started"}),s.jsx($t,{children:"Runs store the state history for each execution of a task or flow."}),s.jsx(Qt,{children:s.jsx(Yt,{id:"getting-started"})})]}),ee=Ge("/runs/");function oa(e){const t=l=>l?l.split(",").filter(u=>u.trim().length>0):[],n=t(e.state),a=t(e.flows),o=t(e.deployments),r=t(e["work-pools"]),c=t(e.tags);return{...n.length>0&&{state:n},...a.length>0&&{flows:a},...o.length>0&&{deployments:o},...r.length>0&&{workPools:r},...c.length>0&&{tags:c},...e.range&&{range:e.range},...e.start&&{start:e.start},...e.end&&{end:e.end}}}function ot(e){return{state:e.state?.join(",")??"",flows:e.flows?.join(",")??"",deployments:e.deployments?.join(",")??"","work-pools":e.workPools?.join(",")??"",tags:e.tags?.join(",")??"",range:e.range,start:e.start,end:e.end}}function We(e,t){return{id:e.id,name:e.name,isDefault:e.id===t}}function ra(){const e=ee.useSearch(),t=ee.useNavigate(),{savedFilters:n,defaultFilterId:a,saveFilter:o,deleteFilter:r,setDefaultFilter:c,findMatchingFilter:l}=nt(),[u,g]=i.useState(!1),d=i.useMemo(()=>oa(e),[e]),m=i.useMemo(()=>l(d),[l,d]),f=i.useMemo(()=>n.map(F=>We(F,a)),[n,a]),h=i.useMemo(()=>m?We(m,a):d.state?.length||d.flows?.length||d.deployments?.length||d.workPools?.length||d.tags?.length||d.range||d.start||d.end?{id:null,name:"Unsaved",isDefault:!1}:{id:null,name:"Custom",isDefault:!1},[m,a,d]),w=i.useCallback(F=>{const N=n.find(D=>D.id===F.id);if(!N)return;const M=ot(N.filters);t({to:".",search:D=>({...D,...M,page:1}),replace:!0})},[t,n]),v=i.useCallback(()=>{g(!0)},[]),x=i.useCallback(F=>{o({name:F,filters:d}),g(!1)},[o,d]),p=i.useCallback(()=>{g(!1)},[]),y=i.useCallback(F=>{r(F)},[r]),E=i.useCallback(F=>{c(F)},[c]),A=i.useCallback(()=>{c(null)},[c]);return{currentFilter:h,savedFiltersForMenu:f,onSelectFilter:w,onSaveFilter:v,onDeleteFilter:y,onSetDefault:E,onRemoveDefault:A,isSaveDialogOpen:u,closeSaveDialog:p,confirmSave:x}}function la(){const e=ee.useNavigate(),t=ee.useSearch(),{defaultFilterId:n,getFilterById:a}=nt(),o=i.useRef(!1),r=i.useMemo(()=>!!(t.state||t.flows||t.deployments||t["work-pools"]||t.tags||t.range||t.start||t.end),[t]);i.useEffect(()=>{if(o.current||r)return;let c;n&&(c=a(n)),c||(c=ea),o.current=!0;const l=ot(c.filters);e({to:".",search:u=>({...u,...l,page:1}),replace:!0})},[n,r,a,e])}const $e=Ge("/runs/"),ia=e=>e?e.split(",").filter(t=>Ke.includes(t)):[],X=e=>e?e.split(",").filter(t=>t.trim().length>0):[];function ca(){const e=$e.useSearch(),t=$e.useNavigate(),n=i.useMemo(()=>new Set(ia(e.state??"")),[e.state]),a=i.useMemo(()=>new Set(X(e.flows??"")),[e.flows]),o=i.useMemo(()=>new Set(X(e.deployments??"")),[e.deployments]),r=i.useMemo(()=>new Set(X(e["work-pools"]??"")),[e["work-pools"]]),c=i.useMemo(()=>new Set(X(e.tags??"")),[e.tags]),l=i.useMemo(()=>({range:e.range,start:e.start,end:e.end}),[e.range,e.start,e.end]),u=i.useCallback(x=>{const p=Array.from(x);t({to:".",search:y=>({...y,state:p.length>0?p.join(","):"",page:1}),replace:!0})},[t]),g=i.useCallback(x=>{const p=Array.from(x);t({to:".",search:y=>({...y,flows:p.length>0?p.join(","):"",page:1}),replace:!0})},[t]),d=i.useCallback(x=>{const p=Array.from(x);t({to:".",search:y=>({...y,deployments:p.length>0?p.join(","):"",page:1}),replace:!0})},[t]),m=i.useCallback(x=>{const p=Array.from(x);t({to:".",search:y=>({...y,"work-pools":p.length>0?p.join(","):"",page:1}),replace:!0})},[t]),f=i.useCallback(x=>{const p=Array.from(x);t({to:".",search:y=>({...y,tags:p.length>0?p.join(","):"",page:1}),replace:!0})},[t]),h=i.useCallback(x=>{t({to:".",search:p=>({...p,range:x.range,start:x.start,end:x.end,page:1}),replace:!0})},[t]),w=i.useMemo(()=>n.size>0||a.size>0||o.size>0||r.size>0||c.size>0||l.range!==void 0||l.start!==void 0||l.end!==void 0,[n,a,o,r,c,l]),v=i.useCallback(()=>{t({to:".",search:x=>({...x,state:"",flows:"",deployments:"","work-pools":"",tags:"",range:void 0,start:void 0,end:void 0,page:1}),replace:!0})},[t]);return{states:n,flows:a,deployments:o,workPools:r,tags:c,dateRange:l,onStatesChange:u,onFlowsChange:g,onDeploymentsChange:d,onWorkPoolsChange:m,onTagsChange:f,onDateRangeChange:h,clearAllFilters:v,hasActiveFilters:w}}Ze({tab:G(["flow-runs","task-runs"]).optional().default("flow-runs"),page:q().int().positive().optional().default(1).catch(1),limit:q().int().positive().optional().catch(void 0),sort:G(es).optional().default("START_TIME_DESC"),"hide-subflows":Ts().optional().default(!1),"flow-run-search":R().optional().default(""),state:R().optional().default(""),flows:R().optional().default(""),deployments:R().optional().default(""),"work-pools":R().optional().default(""),tags:R().optional().default(""),range:G(Zt).optional(),start:R().optional(),end:R().optional(),"task-runs-page":q().int().positive().optional().default(1).catch(1),"task-runs-limit":q().int().positive().optional().catch(void 0),"task-runs-sort":G(Jt).optional().default("EXPECTED_START_TIME_DESC"),"task-run-search":R().optional().default("")});const Te=e=>e?e.split(",").filter(t=>Ke.includes(t)):[],te=e=>{if(!e)return;const t={range:e.range,start:e.start,end:e.end},n=qe(t);if(!n)return;const a=Kt(n);if(a)return{after_:a.startDate.toISOString(),before_:a.endDate.toISOString()}},De=e=>e?e.split(",").filter(t=>t.trim().length>0):[],be=e=>e?e.split(",").filter(t=>t.trim().length>0):[],rt=e=>e?e.split(",").filter(t=>t.trim().length>0):[],_e=e=>e?e.split(",").filter(t=>t.trim().length>0):[],Qe=e=>{const t=e?.["hide-subflows"],n=e?.["flow-run-search"],a=Te(e?.state??""),o=De(e?.flows??""),r=be(e?.deployments??""),c=rt(e?.["work-pools"]??""),l=_e(e?.tags??""),u=te(e),g=a.length>0?a:void 0,d=o.length>0?o:void 0,m=r.length>0?r:void 0,f=c.length>0?c:void 0,w=t||n||g||d||m||l.length>0||u?{operator:"and_",...t&&{parent_task_run_id:{operator:"and_",is_null_:!0}},...n&&{name:{like_:n}},...g&&{state:{operator:"and_",name:{any_:g}}},...l.length>0&&{tags:{operator:"and_",any_:l}},...u&&{expected_start_time:u}}:void 0,v=d?{operator:"and_",id:{any_:d}}:void 0,x=m?{operator:"and_",id:{any_:m}}:void 0,p=f?{operator:"and_",name:{any_:f}}:void 0;return{page:e?.page??1,limit:e?.limit??100,sort:e?.sort??"START_TIME_DESC",flow_runs:w,flows:v,deployments:x,work_pools:p}},Ye=e=>{const t=e?.["task-run-search"],n=Te(e?.state??""),a=De(e?.flows??""),o=be(e?.deployments??""),r=_e(e?.tags??""),c=te(e),l=t?{operator:"and_",name:{like_:t}}:void 0,u=n.length>0?n:void 0,d=u||r.length>0||c?{operator:"and_",...u&&{state:{operator:"and_",name:{any_:u}}},...r.length>0&&{tags:{operator:"and_",any_:r}},...c&&{expected_start_time:c}}:void 0,m=a.length>0?a:void 0,f=m?{operator:"and_",id:{any_:m}}:void 0,h=o.length>0?o:void 0,w=h?{operator:"and_",id:{any_:h}}:void 0;return{page:e?.["task-runs-page"]??1,limit:e?.["task-runs-limit"]??100,sort:e?.["task-runs-sort"]??"EXPECTED_START_TIME_DESC",task_runs:l,flow_runs:d,flows:f,deployments:w}},ua=e=>{const t=e?.["hide-subflows"],n=Te(e?.state??""),a=De(e?.flows??""),o=be(e?.deployments??""),r=rt(e?.["work-pools"]??""),c=_e(e?.tags??""),l=te(e),u=n.length>0?n:void 0,g=a.length>0?a:void 0,d=o.length>0?o:void 0,m=r.length>0?r:void 0;return{sort:"EXPECTED_START_TIME_DESC",limit:1e3,offset:0,flow_runs:t||u||c.length>0||l?{operator:"and_",...t&&{parent_task_run_id:{operator:"and_",is_null_:!0}},...u&&{state:{operator:"and_",name:{any_:u}}},...c.length>0&&{tags:{operator:"and_",any_:c}},...l&&{expected_start_time:l}}:void 0,flows:g?{operator:"and_",id:{any_:g}}:void 0,deployments:d?{operator:"and_",id:{any_:d}}:void 0,work_pools:m?{operator:"and_",name:{any_:m}}:void 0}},da=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useMemo(()=>({page:e.page??1,limit:e.limit??100}),[e.page,e.limit]),a=i.useCallback(o=>{t({to:".",search:r=>({...r,page:o.page,limit:o.limit}),replace:!0})},[t]);return[n,a]},ma=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,sort:a,page:1}),replace:!0})},[t]);return[e.sort,n]},fa=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,"hide-subflows":a,page:1}),replace:!0})},[t]);return[e["hide-subflows"],n]},ga=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,tab:a,page:1}),replace:!0})},[t]);return[e.tab,n]},ha=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,"flow-run-search":a,page:1}),replace:!0})},[t]);return[e["flow-run-search"],n]},pa=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useMemo(()=>({page:e["task-runs-page"]??1,limit:e["task-runs-limit"]??100}),[e["task-runs-page"],e["task-runs-limit"]]),a=i.useCallback(o=>{t({to:".",search:r=>({...r,"task-runs-page":o.page,"task-runs-limit":o.limit}),replace:!0})},[t]);return[n,a]},xa=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,"task-runs-sort":a,"task-runs-page":1}),replace:!0})},[t]);return[e["task-runs-sort"],n]},wa=()=>{const e=S.useSearch(),t=S.useNavigate(),n=i.useCallback(a=>{t({to:".",search:o=>({...o,"task-run-search":a,"task-runs-page":1}),replace:!0})},[t]);return[e["task-run-search"],n]};function za(){const e=lt(),t=S.useSearch(),n=S.useNavigate(),[a,o]=Z("workspace-flow-runs-list-limit",100),[r,c]=Z("workspace-task-runs-list-limit",100),l=i.useRef(!1);i.useEffect(()=>{if(l.current)return;l.current=!0;const k=t.limit===void 0,j=t["task-runs-limit"]===void 0;(k||j)&&n({to:".",search:$=>({...$,...k&&{limit:a},...j&&{"task-runs-limit":r}}),replace:!0})},[n,t.limit,t["task-runs-limit"],a,r]),i.useEffect(()=>{t.limit!==void 0&&t.limit!==a&&o(t.limit)},[t.limit,a,o]),i.useEffect(()=>{t["task-runs-limit"]!==void 0&&t["task-runs-limit"]!==r&&c(t["task-runs-limit"])},[t["task-runs-limit"],r,c]);const[u,g]=da(),[d,m]=ma(),[f,h]=fa(),[w,v]=ga(),[x,p]=ha(),{states:y,flows:E,deployments:A,workPools:F,tags:N,dateRange:M,onStatesChange:D,onFlowsChange:se,onDeploymentsChange:ae,onWorkPoolsChange:ne,onTagsChange:oe,onDateRangeChange:re}=ca(),[U,V]=pa(),[le,ie]=xa(),[ce,P]=wa(),{currentFilter:ue,savedFiltersForMenu:de,onSelectFilter:me,onSaveFilter:fe,onDeleteFilter:ge,onSetDefault:H,onRemoveDefault:he,isSaveDialogOpen:pe,closeSaveDialog:xe,confirmSave:we}=ra();la();const[{data:Se},{data:ve}]=it({queries:[Gt(),qt()]}),{data:I}=T(Ie(Qe(t),3e4)),{data:L}=T(Le(Ye(t),3e4)),{data:ke}=T(Xt(ua(t),3e4)),z=I?.results??[],B=L?.results??[],ye=i.useMemo(()=>{const k=te(t);return{startDate:k?.after_?new Date(k.after_):void 0,endDate:k?.before_?new Date(k.before_):void 0}},[t]);i.useEffect(()=>{const k=z.map(j=>j.id);k.length>0&&e.prefetchQuery(ze(k))},[e,z]);const Fe=i.useCallback(k=>{const j=Qe({...t,page:k});(async()=>{const O=(await e.ensureQueryData(Ie(j,3e4)))?.results?.map(C=>C.id)??[];O.length>0&&e.prefetchQuery(ze(O))})()},[e,t]),W=i.useCallback(k=>{const j=Ye({...t,"task-runs-page":k});e.prefetchQuery(Le(j,3e4))},[e,t]),Ce=i.useCallback(()=>{P("")},[P]);return s.jsx(aa,{tab:w,onTabChange:v,flowRunsCount:I?.count??0,taskRunsCount:L?.count??0,hasAnyFlowRuns:(Se??0)>0,hasAnyTaskRuns:(ve??0)>0,flowRuns:z,flowRunsPages:I?.pages??0,pagination:u,onPaginationChange:g,onPrefetchPage:Fe,sort:d,onSortChange:m,hideSubflows:f,onHideSubflowsChange:h,flowRunSearch:x,onFlowRunSearchChange:p,selectedStates:y,onStateFilterChange:D,selectedFlows:E,onFlowFilterChange:se,selectedDeployments:A,onDeploymentFilterChange:ae,selectedTags:N,onTagsFilterChange:oe,selectedWorkPools:F,onWorkPoolFilterChange:ne,dateRange:M,onDateRangeChange:re,flowRunHistory:ke??[],scatterPlotDateRange:ye,taskRuns:B,taskRunsPages:L?.pages??0,taskRunsPagination:U,onTaskRunsPaginationChange:V,onTaskRunsPrefetchPage:W,taskRunsSort:le,onTaskRunsSortChange:ie,taskRunSearch:ce,onTaskRunSearchChange:P,onClearTaskRunFilters:Ce,currentFilter:ue,savedFilters:de,onSelectFilter:me,onSaveFilter:fe,onDeleteFilter:ge,onSetDefault:H,onRemoveDefault:he,isSaveDialogOpen:pe,onCloseSaveDialog:xe,onConfirmSave:we})}export{za as component};
2
+ //# sourceMappingURL=index-D13YFoYA.js.map