prefect 3.6.14.dev1__py3-none-any.whl → 3.6.14.dev2__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.
- prefect/_build_info.py +3 -3
- prefect/_observers.py +20 -8
- prefect/cli/server.py +18 -3
- prefect/deployments/runner.py +448 -8
- prefect/flows.py +162 -34
- prefect/runner/runner.py +48 -0
- prefect/server/orchestration/global_policy.py +4 -2
- prefect/server/ui-v2/assets/{artifact-card-DkgEVahF.js → artifact-card-D41jcvLX.js} +2 -2
- prefect/server/ui-v2/assets/{artifact-card-DkgEVahF.js.map → artifact-card-D41jcvLX.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifact._id-C7yJhkKY.js → artifact._id-CYMvBFBb.js} +2 -2
- prefect/server/ui-v2/assets/{artifact._id-C7yJhkKY.js.map → artifact._id-CYMvBFBb.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation-wizard-BLI4sqs9.js → automation-wizard-DHsWJ8JS.js} +2 -2
- prefect/server/ui-v2/assets/{automation-wizard-BLI4sqs9.js.map → automation-wizard-DHsWJ8JS.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation._id-OLes3du9.js → automation._id-CCroE1-1.js} +2 -2
- prefect/server/ui-v2/assets/{automation._id-OLes3du9.js.map → automation._id-CCroE1-1.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation_._id.edit-QrSzkDDB.js → automation_._id.edit-BgpDmMq7.js} +2 -2
- prefect/server/ui-v2/assets/{automation_._id.edit-QrSzkDDB.js.map → automation_._id.edit-BgpDmMq7.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-header-BoJc9HK8.js → automations-header-BEZXZmli.js} +2 -2
- prefect/server/ui-v2/assets/{automations-header-BoJc9HK8.js.map → automations-header-BEZXZmli.js.map} +1 -1
- prefect/server/ui-v2/assets/{base-job-template-form-section-Br6s0jNS.js → base-job-template-form-section-BubT4OHj.js} +2 -2
- prefect/server/ui-v2/assets/{base-job-template-form-section-Br6s0jNS.js.map → base-job-template-form-section-BubT4OHj.js.map} +1 -1
- prefect/server/ui-v2/assets/{block-type-details-BSbBP-Nm.js → block-type-details-DCWuBOwb.js} +2 -2
- prefect/server/ui-v2/assets/{block-type-details-BSbBP-Nm.js.map → block-type-details-DCWuBOwb.js.map} +1 -1
- prefect/server/ui-v2/assets/{block-type-logo-DNFERTyH.js → block-type-logo-SZMe2NdY.js} +2 -2
- prefect/server/ui-v2/assets/{block-type-logo-DNFERTyH.js.map → block-type-logo-SZMe2NdY.js.map} +1 -1
- prefect/server/ui-v2/assets/{block._id-DO6Hulrv.js → block._id-B6_kwTZ-.js} +2 -2
- prefect/server/ui-v2/assets/{block._id-DO6Hulrv.js.map → block._id-B6_kwTZ-.js.map} +1 -1
- prefect/server/ui-v2/assets/{block_._id.edit-BWF0TQvv.js → block_._id.edit-Bjg9WgY6.js} +2 -2
- prefect/server/ui-v2/assets/{block_._id.edit-BWF0TQvv.js.map → block_._id.edit-Bjg9WgY6.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog-BlaqZP0r.js → catalog-Bv8x-rIx.js} +2 -2
- prefect/server/ui-v2/assets/{catalog-BlaqZP0r.js.map → catalog-Bv8x-rIx.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug-BZWiMtjq.js → catalog_._slug-2GldfHc0.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug-BZWiMtjq.js.map → catalog_._slug-2GldfHc0.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug_.create-oHffbeMs.js → catalog_._slug_.create-Bjt7az95.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug_.create-oHffbeMs.js.map → catalog_._slug_.create-Bjt7az95.js.map} +1 -1
- prefect/server/ui-v2/assets/{collapsible-D45P93xU.js → collapsible-BT0EnMmT.js} +2 -2
- prefect/server/ui-v2/assets/{collapsible-D45P93xU.js.map → collapsible-BT0EnMmT.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limit._id-B6oyPVya.js → concurrency-limit._id-Ba5Uof4l.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limit._id-B6oyPVya.js.map → concurrency-limit._id-Ba5Uof4l.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-CcYMd6w6.js → create-DK8Cy1hG.js} +2 -2
- prefect/server/ui-v2/assets/{create-CcYMd6w6.js.map → create-DK8Cy1hG.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-DK1WvDhf.js → create-Ds8Lheyk.js} +2 -2
- prefect/server/ui-v2/assets/{create-DK1WvDhf.js.map → create-Ds8Lheyk.js.map} +1 -1
- prefect/server/ui-v2/assets/cronstrue-C72j5NDa.js +2 -0
- prefect/server/ui-v2/assets/cronstrue-C72j5NDa.js.map +1 -0
- prefect/server/ui-v2/assets/{data-table-B_iyrrTm.js → data-table-B6bdz5Zj.js} +2 -2
- prefect/server/ui-v2/assets/{data-table-B_iyrrTm.js.map → data-table-B6bdz5Zj.js.map} +1 -1
- prefect/server/ui-v2/assets/{delete-confirmation-dialog-7GKqeKy1.js → delete-confirmation-dialog-CV8ITEEW.js} +2 -2
- prefect/server/ui-v2/assets/{delete-confirmation-dialog-7GKqeKy1.js.map → delete-confirmation-dialog-CV8ITEEW.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-action-header-DrvnfE9Y.js → deployment-action-header-DpjOcab0.js} +2 -2
- prefect/server/ui-v2/assets/{deployment-action-header-DrvnfE9Y.js.map → deployment-action-header-DpjOcab0.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-form-DsAij22s.js → deployment-form-CjIPPnwV.js} +3 -3
- prefect/server/ui-v2/assets/{deployment-form-DsAij22s.js.map → deployment-form-CjIPPnwV.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-links-BwqfKWQX.js → deployment-links--VkBo9wV.js} +2 -2
- prefect/server/ui-v2/assets/{deployment-links-BwqfKWQX.js.map → deployment-links--VkBo9wV.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment._id-E5e5s6bO.js → deployment._id-CW00MZGG.js} +2 -2
- prefect/server/ui-v2/assets/{deployment._id-E5e5s6bO.js.map → deployment._id-CW00MZGG.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment._id-U6KrtWw0.js → deployment._id-DjYh9IiR.js} +2 -2
- prefect/server/ui-v2/assets/{deployment._id-U6KrtWw0.js.map → deployment._id-DjYh9IiR.js.map} +1 -1
- prefect/server/ui-v2/assets/deployment_._id.duplicate-18ZQHHgI.js +2 -0
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-C_kNyCA9.js.map → deployment_._id.duplicate-18ZQHHgI.js.map} +1 -1
- prefect/server/ui-v2/assets/deployment_._id.edit-C9H0Teuv.js +2 -0
- prefect/server/ui-v2/assets/{deployment_._id.edit-BP8pfTOR.js.map → deployment_._id.edit-C9H0Teuv.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.run-Di3-4Mtk.js → deployment_._id.run-CwHYw8j1.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.run-Di3-4Mtk.js.map → deployment_._id.run-CwHYw8j1.js.map} +1 -1
- prefect/server/ui-v2/assets/{dropdown-menu-iS8iJMpx.js → dropdown-menu-BYgkpoqb.js} +2 -2
- prefect/server/ui-v2/assets/{dropdown-menu-iS8iJMpx.js.map → dropdown-menu-BYgkpoqb.js.map} +1 -1
- prefect/server/ui-v2/assets/{event._eventDate._eventId-CG15qDSZ.js → event._eventDate._eventId-mPwFHce2.js} +2 -2
- prefect/server/ui-v2/assets/{event._eventDate._eventId-CG15qDSZ.js.map → event._eventDate._eventId-mPwFHce2.js.map} +1 -1
- prefect/server/ui-v2/assets/flow-run-graph-BMp5vJJa.js +2 -0
- prefect/server/ui-v2/assets/flow-run-graph-BMp5vJJa.js.map +1 -0
- prefect/server/ui-v2/assets/{flow-run._id-D_eAHZ5z.js → flow-run._id-CafHaMND.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run._id-D_eAHZ5z.js.map → flow-run._id-CafHaMND.js.map} +1 -1
- prefect/server/ui-v2/assets/flow-run._id-CelqqA9P.js +4 -0
- prefect/server/ui-v2/assets/flow-run._id-CelqqA9P.js.map +1 -0
- prefect/server/ui-v2/assets/{flow-run._id-wco0Q19f.js → flow-run._id-hVuHWXbi.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run._id-wco0Q19f.js.map → flow-run._id-hVuHWXbi.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-runs-pagination-DzGHOht3.js → flow-runs-pagination-CqjL9gOj.js} +2 -2
- prefect/server/ui-v2/assets/{flow-runs-pagination-DzGHOht3.js.map → flow-runs-pagination-CqjL9gOj.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow._id-Dn2so3rK.js → flow._id-C1Djus0m.js} +2 -2
- prefect/server/ui-v2/assets/{flow._id-Dn2so3rK.js.map → flow._id-C1Djus0m.js.map} +1 -1
- prefect/server/ui-v2/assets/{form-rC8pxeRl.js → form-z_RaFdEo.js} +2 -2
- prefect/server/ui-v2/assets/{form-rC8pxeRl.js.map → form-z_RaFdEo.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-CuAwmJ64.js → header-B-PvVnN7.js} +2 -2
- prefect/server/ui-v2/assets/{header-CuAwmJ64.js.map → header-B-PvVnN7.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-C0zV3WDn.js → header-BSXYXvPS.js} +2 -2
- prefect/server/ui-v2/assets/{header-C0zV3WDn.js.map → header-BSXYXvPS.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-C6ko3O7G.js → header-CKVO4oLE.js} +2 -2
- prefect/server/ui-v2/assets/{header-C6ko3O7G.js.map → header-CKVO4oLE.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CotXErTe.js → index-B5zctA6A.js} +2 -2
- prefect/server/ui-v2/assets/{index-CotXErTe.js.map → index-B5zctA6A.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-k2161reF.js → index-BCzGofA2.js} +2 -2
- prefect/server/ui-v2/assets/{index-k2161reF.js.map → index-BCzGofA2.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-BdgomKuA.js → index-BOuQzuoR.js} +2 -2
- prefect/server/ui-v2/assets/{index-BdgomKuA.js.map → index-BOuQzuoR.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-pE_31vXF.js → index-BQOxk1xu.js} +2 -2
- prefect/server/ui-v2/assets/{index-pE_31vXF.js.map → index-BQOxk1xu.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-Benf9xn3.js → index-BU1Y-wgo.js} +2 -2
- prefect/server/ui-v2/assets/{index-Benf9xn3.js.map → index-BU1Y-wgo.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CYpFLd7y.js → index-BxGluvOD.js} +2 -2
- prefect/server/ui-v2/assets/{index-CYpFLd7y.js.map → index-BxGluvOD.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CcVSC2pV.js → index-CAbBPipD.js} +2 -2
- prefect/server/ui-v2/assets/{index-CcVSC2pV.js.map → index-CAbBPipD.js.map} +1 -1
- prefect/server/ui-v2/assets/index-CHwhYh-B.js +2 -0
- prefect/server/ui-v2/assets/{index-BYQ1P2TC.js.map → index-CHwhYh-B.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-0g8aAM30.js → index-CIKCrLeZ.js} +2 -2
- prefect/server/ui-v2/assets/{index-0g8aAM30.js.map → index-CIKCrLeZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-fhrsIceD.js → index-CLUjhc4A.js} +2 -2
- prefect/server/ui-v2/assets/{index-fhrsIceD.js.map → index-CLUjhc4A.js.map} +1 -1
- prefect/server/ui-v2/assets/index-CX5uU1zd.js +2 -0
- prefect/server/ui-v2/assets/index-CX5uU1zd.js.map +1 -0
- prefect/server/ui-v2/assets/{index-DwkedbVy.js → index-CXVePXfG.js} +2 -2
- prefect/server/ui-v2/assets/{index-DwkedbVy.js.map → index-CXVePXfG.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-DB2qeheX.js → index-D-ZIgaBw.js} +2 -2
- prefect/server/ui-v2/assets/{index-DB2qeheX.js.map → index-D-ZIgaBw.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-D8fZaZa7.js → index-D10Svo9k.js} +2 -2
- prefect/server/ui-v2/assets/{index-D8fZaZa7.js.map → index-D10Svo9k.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CEStyUb-.js → index-D2EEipYt.js} +2 -2
- prefect/server/ui-v2/assets/{index-CEStyUb-.js.map → index-D2EEipYt.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-BIqzfifB.js → index-DV5fpxXB.js} +2 -2
- prefect/server/ui-v2/assets/{index-BIqzfifB.js.map → index-DV5fpxXB.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-C3D0Re7U.js → index-FHRYGk_R.js} +2 -2
- prefect/server/ui-v2/assets/{index-C3D0Re7U.js.map → index-FHRYGk_R.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CCs20W5W.js → index-IGxqySze.js} +2 -2
- prefect/server/ui-v2/assets/{index-CCs20W5W.js.map → index-IGxqySze.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-BKbBu9gL.js → index-P2xc38Yh.js} +2 -2
- prefect/server/ui-v2/assets/{index-BKbBu9gL.js.map → index-P2xc38Yh.js.map} +1 -1
- prefect/server/ui-v2/assets/index-Yzhlw6-Q.js +17 -0
- prefect/server/ui-v2/assets/index-Yzhlw6-Q.js.map +1 -0
- prefect/server/ui-v2/assets/{index-BjsWjEUO.js → index-n7YFiQkB.js} +2 -2
- prefect/server/ui-v2/assets/{index-BjsWjEUO.js.map → index-n7YFiQkB.js.map} +1 -1
- prefect/server/ui-v2/assets/{json-input-C9dkBSdc.js → json-input-Dlzy_XLK.js} +2 -2
- prefect/server/ui-v2/assets/{json-input-C9dkBSdc.js.map → json-input-Dlzy_XLK.js.map} +1 -1
- prefect/server/ui-v2/assets/{key._key-BBVH44_R.js → key._key-DN_txnIw.js} +2 -2
- prefect/server/ui-v2/assets/{key._key-BBVH44_R.js.map → key._key-DN_txnIw.js.map} +1 -1
- prefect/server/ui-v2/assets/{lazy-markdown-BoMKGRXo.js → lazy-markdown-CPQjrQrX.js} +2 -2
- prefect/server/ui-v2/assets/{lazy-markdown-BoMKGRXo.js.map → lazy-markdown-CPQjrQrX.js.map} +1 -1
- prefect/server/ui-v2/assets/{login-BmmIDesJ.js → login-BsnFlv-8.js} +2 -2
- prefect/server/ui-v2/assets/{login-BmmIDesJ.js.map → login-BsnFlv-8.js.map} +1 -1
- prefect/server/ui-v2/assets/{markdown-input-C6P8cYT1.js → markdown-input-b0zl1NLl.js} +2 -2
- prefect/server/ui-v2/assets/{markdown-input-C6P8cYT1.js.map → markdown-input-b0zl1NLl.js.map} +1 -1
- prefect/server/ui-v2/assets/{python-example-snippet-DPumgTpL.js → python-example-snippet-W9Z_3hjQ.js} +3 -3
- prefect/server/ui-v2/assets/{python-example-snippet-DPumgTpL.js.map → python-example-snippet-W9Z_3hjQ.js.map} +1 -1
- prefect/server/ui-v2/assets/{python-input-DX4uV8MF.js → python-input-EKDBgTDE.js} +2 -2
- prefect/server/ui-v2/assets/{python-input-DX4uV8MF.js.map → python-input-EKDBgTDE.js.map} +1 -1
- prefect/server/ui-v2/assets/{radio-group-DeNK-Ob0.js → radio-group-BMeznoY8.js} +2 -2
- prefect/server/ui-v2/assets/{radio-group-DeNK-Ob0.js.map → radio-group-BMeznoY8.js.map} +1 -1
- prefect/server/ui-v2/assets/{route-error-state-C9CbByMx.js → route-error-state-BGOi4dn-.js} +2 -2
- prefect/server/ui-v2/assets/{route-error-state-C9CbByMx.js.map → route-error-state-BGOi4dn-.js.map} +1 -1
- prefect/server/ui-v2/assets/{schema-form-B45xnsnK.js → schema-form-BHWTZ8Sy.js} +2 -2
- prefect/server/ui-v2/assets/{schema-form-B45xnsnK.js.map → schema-form-BHWTZ8Sy.js.map} +1 -1
- prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-BJj81bu-.js → schema-form-input-string-format-datetime-hWIr4wQr.js} +4 -4
- prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-BJj81bu-.js.map → schema-form-input-string-format-datetime-hWIr4wQr.js.map} +1 -1
- prefect/server/ui-v2/assets/{settings-CbkeWqQ9.js → settings-DVSPGBen.js} +2 -2
- prefect/server/ui-v2/assets/{settings-CbkeWqQ9.js.map → settings-DVSPGBen.js.map} +1 -1
- prefect/server/ui-v2/assets/{sort-filter-DM7SvBB0.js → sort-filter-MiwMjIYc.js} +2 -2
- prefect/server/ui-v2/assets/{sort-filter-DM7SvBB0.js.map → sort-filter-MiwMjIYc.js.map} +1 -1
- prefect/server/ui-v2/assets/{table-CEPo6xb_.js → table-BJkw82b1.js} +2 -2
- prefect/server/ui-v2/assets/{table-CEPo6xb_.js.map → table-BJkw82b1.js.map} +1 -1
- prefect/server/ui-v2/assets/{tags-input-DJiZSVHp.js → tags-input-1KkWhGJZ.js} +2 -2
- prefect/server/ui-v2/assets/{tags-input-DJiZSVHp.js.map → tags-input-1KkWhGJZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-vJEkvqWp.js → task-run-concurrency-limits-reset-dialog-ClBlDic_.js} +2 -2
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-vJEkvqWp.js.map → task-run-concurrency-limits-reset-dialog-ClBlDic_.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run._id-BCnDnXrL.js → task-run._id-48TwMBP1.js} +2 -2
- prefect/server/ui-v2/assets/{task-run._id-BCnDnXrL.js.map → task-run._id-48TwMBP1.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run._id-ByJw1K82.js → task-run._id-BmK7HGNl.js} +2 -2
- prefect/server/ui-v2/assets/{task-run._id-ByJw1K82.js.map → task-run._id-BmK7HGNl.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-runs-pagination-DbjB6XnY.js → task-runs-pagination-DA4izCRv.js} +2 -2
- prefect/server/ui-v2/assets/{task-runs-pagination-DbjB6XnY.js.map → task-runs-pagination-DA4izCRv.js.map} +1 -1
- prefect/server/ui-v2/assets/{textarea-BX8KbLGx.js → textarea-BqtBNhJB.js} +2 -2
- prefect/server/ui-v2/assets/{textarea-BX8KbLGx.js.map → textarea-BqtBNhJB.js.map} +1 -1
- prefect/server/ui-v2/assets/{timezone-select-TBj2n6Ox.js → timezone-select-BgD_PENN.js} +2 -2
- prefect/server/ui-v2/assets/{timezone-select-TBj2n6Ox.js.map → timezone-select-BgD_PENN.js.map} +1 -1
- prefect/server/ui-v2/assets/{toggle-group-D7mfSUim.js → toggle-group-ChA-JYQB.js} +2 -2
- prefect/server/ui-v2/assets/{toggle-group-D7mfSUim.js.map → toggle-group-ChA-JYQB.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-BpBSjz60.js → use-delete-automation-confirmation-dialog-Da1iWNZ_.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-BpBSjz60.js.map → use-delete-automation-confirmation-dialog-Da1iWNZ_.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BjKsNw6b.js → use-delete-block-document-confirmation-dialog-DfrxGSyY.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BjKsNw6b.js.map → use-delete-block-document-confirmation-dialog-DfrxGSyY.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-B_BlBMic.js → use-flow-runs-selected-rows-CYOsQ-Df.js} +2 -2
- prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-B_BlBMic.js.map → use-flow-runs-selected-rows-CYOsQ-Df.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BfE433bC.js → use-get-artifacts-flow-task-runs-C0V3_gYz.js} +2 -2
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BfE433bC.js.map → use-get-artifacts-flow-task-runs-C0V3_gYz.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-quick-run-qrtcF-DD.js → use-quick-run-CgM0EheE.js} +2 -2
- prefect/server/ui-v2/assets/{use-quick-run-qrtcF-DD.js.map → use-quick-run-CgM0EheE.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-stepper-CVy1_GBw.js → use-stepper-CSAs1T4U.js} +2 -2
- prefect/server/ui-v2/assets/{use-stepper-CVy1_GBw.js.map → use-stepper-CSAs1T4U.js.map} +1 -1
- prefect/server/ui-v2/assets/{utilities-D5-00wjP.js → utilities-DqaYuzh1.js} +2 -2
- prefect/server/ui-v2/assets/{utilities-D5-00wjP.js.map → utilities-DqaYuzh1.js.map} +1 -1
- prefect/server/ui-v2/assets/{vendor-date-7GxEwcQM.js → vendor-date-JS-ReHrg.js} +2 -2
- prefect/server/ui-v2/assets/{vendor-date-7GxEwcQM.js.map → vendor-date-JS-ReHrg.js.map} +1 -1
- prefect/server/ui-v2/assets/{vendor-graphs-R8z6S3Jg.js → vendor-graphs-BRVnayIy.js} +2 -2
- prefect/server/ui-v2/assets/{vendor-graphs-R8z6S3Jg.js.map → vendor-graphs-BRVnayIy.js.map} +1 -1
- prefect/server/ui-v2/assets/{vendor-radix-CznP1SOq.js → vendor-radix-BZJHvSaq.js} +9 -9
- prefect/server/ui-v2/assets/{vendor-radix-CznP1SOq.js.map → vendor-radix-BZJHvSaq.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool-filter-D8MkTbSW.js → work-pool-filter-T6dM4jKE.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-filter-D8MkTbSW.js.map → work-pool-filter-T6dM4jKE.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-CbI7Gfu5.js → work-pool-queue-toggle-CdUw2mAH.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-CbI7Gfu5.js.map → work-pool-queue-toggle-CdUw2mAH.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool._workPoolName-CCzzgVV2.js → work-pool._workPoolName-DD8gh9X-.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool._workPoolName-CCzzgVV2.js.map → work-pool._workPoolName-DD8gh9X-.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-BAgiuU_j.js → work-pool_._workPoolName.edit-mmnZTSTy.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-BAgiuU_j.js.map → work-pool_._workPoolName.edit-mmnZTSTy.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BUawWJEy.js → work-pool_._workPoolName.queue._workQueueName-fbwQqkVN.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BUawWJEy.js.map → work-pool_._workPoolName.queue._workQueueName-fbwQqkVN.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-queue-icon-text-D_G_UCJX.js → work-queue-icon-text-YyKOH96e.js} +2 -2
- prefect/server/ui-v2/assets/{work-queue-icon-text-D_G_UCJX.js.map → work-queue-icon-text-YyKOH96e.js.map} +1 -1
- prefect/server/ui-v2/index.html +3 -3
- prefect/settings/models/runner.py +11 -0
- prefect/tasks.py +30 -4
- {prefect-3.6.14.dev1.dist-info → prefect-3.6.14.dev2.dist-info}/METADATA +1 -1
- {prefect-3.6.14.dev1.dist-info → prefect-3.6.14.dev2.dist-info}/RECORD +215 -215
- prefect/server/ui-v2/assets/cronstrue-WDy4rv2V.js +0 -2
- prefect/server/ui-v2/assets/cronstrue-WDy4rv2V.js.map +0 -1
- prefect/server/ui-v2/assets/deployment_._id.duplicate-C_kNyCA9.js +0 -2
- prefect/server/ui-v2/assets/deployment_._id.edit-BP8pfTOR.js +0 -2
- prefect/server/ui-v2/assets/flow-run-graph-B1vF1w0Z.js +0 -2
- prefect/server/ui-v2/assets/flow-run-graph-B1vF1w0Z.js.map +0 -1
- prefect/server/ui-v2/assets/flow-run._id-BHY61H6u.js +0 -4
- prefect/server/ui-v2/assets/flow-run._id-BHY61H6u.js.map +0 -1
- prefect/server/ui-v2/assets/index-BYQ1P2TC.js +0 -2
- prefect/server/ui-v2/assets/index-Cd7pM9pk.js +0 -17
- prefect/server/ui-v2/assets/index-Cd7pM9pk.js.map +0 -1
- prefect/server/ui-v2/assets/index-DvKYj8ko.js +0 -2
- prefect/server/ui-v2/assets/index-DvKYj8ko.js.map +0 -1
- {prefect-3.6.14.dev1.dist-info → prefect-3.6.14.dev2.dist-info}/WHEEL +0 -0
- {prefect-3.6.14.dev1.dist-info → prefect-3.6.14.dev2.dist-info}/entry_points.txt +0 -0
- {prefect-3.6.14.dev1.dist-info → prefect-3.6.14.dev2.dist-info}/licenses/LICENSE +0 -0
prefect/server/ui-v2/assets/{catalog_._slug-BZWiMtjq.js.map → catalog_._slug-2GldfHc0.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog_._slug-
|
|
1
|
+
{"version":3,"file":"catalog_._slug-2GldfHc0.js","sources":["../../src/components/blocks/block-type-page/block-type-page.tsx","../../src/routes/blocks/catalog_.$slug.tsx?tsr-split=component"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeLogo } from \"@/components/block-type-logo/block-type-logo\";\nimport { PythonBlockSnippet } from \"@/components/blocks/python-example-snippet\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { Typography } from \"@/components/ui/typography\";\n\ntype BlockTypePageProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockTypePage = ({ blockType }: BlockTypePageProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockTypePageHeader blockType={blockType} />\n\t\t\t<BlockTypeCardDetails blockType={blockType} />\n\t\t</div>\n\t);\n};\n\nfunction BlockTypePageHeader({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t{blockType.slug}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n}\n\nfunction BlockTypeCardDetails({ blockType }: BlockTypePageProps) {\n\treturn (\n\t\t<div>\n\t\t\t<Card className=\"p-6\">\n\t\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t\t<BlockTypeLogo size=\"lg\" logoUrl={blockType.logo_url} />\n\t\t\t\t\t<Typography variant=\"h3\">{blockType.name}</Typography>\n\t\t\t\t</div>\n\n\t\t\t\t{blockType.description && (\n\t\t\t\t\t<BlockTypeDescription\n\t\t\t\t\t\tdescription={blockType.description}\n\t\t\t\t\t\tdocumentationUrl={blockType.documentation_url}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{blockType.code_example && (\n\t\t\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<Typography variant=\"h4\">Example</Typography>\n\t\t\t\t\t\t<PythonBlockSnippet\n\t\t\t\t\t\t\tcodeExample={blockType.code_example}\n\t\t\t\t\t\t\tname={blockType.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t<Button>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/blocks/catalog/$slug/create\"\n\t\t\t\t\t\t\tparams={{ slug: blockType.slug }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</Card>\n\t\t</div>\n\t);\n}\n\ntype BlockTypeDescriptionProps = {\n\tdescription: string;\n\tdocumentationUrl: string | null | undefined;\n};\nfunction BlockTypeDescription({\n\tdescription,\n\tdocumentationUrl,\n}: BlockTypeDescriptionProps) {\n\tlet retDescription = description;\n\tif (documentationUrl) {\n\t\tretDescription = `${retDescription} [Documentation](${documentationUrl})`;\n\t}\n\n\treturn (\n\t\t<div className=\"prose max-w-none\">\n\t\t\t<LazyMarkdown>{retDescription}</LazyMarkdown>\n\t\t</div>\n\t);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockTypePage } from \"@/components/blocks/block-type-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug\")({\n\tcomponent: RouteComponent,\n\tloader: ({ params, context: { queryClient } }) =>\n\t\tqueryClient.ensureQueryData(buildGetBlockTypeQuery(params.slug)),\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\treturn <BlockTypePage blockType={blockType} />;\n}\n"],"names":["BlockTypePage","blockType","jsxs","jsx","BlockTypePageHeader","BlockTypeCardDetails","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","Card","BlockTypeLogo","Typography","BlockTypeDescription","PythonBlockSnippet","Button","Link","description","documentationUrl","retDescription","LazyMarkdown","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery"],"mappings":"wfAoBO,MAAMA,EAAgB,CAAC,CAAE,UAAAC,KAE9BC,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,MAACC,GAAoB,UAAAH,EAAsB,EAC3CE,MAACE,GAAqB,UAAAJ,CAAA,CAAsB,CAAA,EAC7C,EAIF,SAASG,EAAoB,CAAE,UAAAH,GAAiC,CAC/D,OACCE,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,UAAU,UAAU,wBAAwB,kBAE/D,CAAA,CACD,QACCC,EAAA,EAAoB,QAEpBF,EAAA,CACA,SAAAL,EAAAA,IAACM,EAAA,CACA,GAAG,kBACH,UAAU,wBACV,SAAA,SAAA,CAAA,EAGF,QACCC,EAAA,EAAoB,EAErBP,EAAAA,IAACK,EAAA,CAAe,UAAU,wBACxB,WAAU,IAAA,CACZ,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAEA,SAASH,EAAqB,CAAE,UAAAJ,GAAiC,CAChE,OACCE,EAAAA,IAAC,MAAA,CACA,SAAAD,EAAAA,KAACS,EAAA,CAAK,UAAU,MACf,SAAA,CAAAT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACd,SAAA,CAAAC,EAAAA,IAACS,EAAA,CAAc,KAAK,KAAK,QAASX,EAAU,SAAU,EACtDE,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAM,WAAU,IAAA,CAAK,CAAA,EAC1C,EAECZ,EAAU,aACVE,EAAAA,IAACW,EAAA,CACA,YAAab,EAAU,YACvB,iBAAkBA,EAAU,iBAAA,CAAA,EAI7BA,EAAU,cACVC,OAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACU,EAAA,CAAW,QAAQ,KAAK,SAAA,UAAO,EAChCV,EAAAA,IAACY,EAAA,CACA,YAAad,EAAU,aACvB,KAAMA,EAAU,IAAA,CAAA,CACjB,EACD,EAGDE,MAAC,MAAA,CAAI,UAAU,mBACd,eAACa,EAAA,CACA,SAAAb,EAAAA,IAACc,EAAA,CACA,GAAG,+BACH,OAAQ,CAAE,KAAMhB,EAAU,IAAA,EAC1B,SAAA,QAAA,CAAA,EAGF,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CACD,CAEF,CAMA,SAASa,EAAqB,CAC7B,YAAAI,EACA,iBAAAC,CACD,EAA8B,CAC7B,IAAIC,EAAiBF,EACrB,OAAIC,IACHC,EAAiB,GAAGA,CAAc,oBAAoBD,CAAgB,WAIrE,MAAA,CAAI,UAAU,mBACd,SAAAhB,EAAAA,IAACkB,EAAA,CAAc,WAAe,CAAA,CAC/B,CAEF,CCzGA,SAASC,GAAiB,CACzB,KAAM,CAAEC,KAAAA,CAAAA,EAASC,EAAMC,UAAAA,EACjB,CAAEC,KAAMzB,CAAAA,EAAc0B,EAAiBC,EAAuBL,CAAI,CAAC,EACzE,OAAOpB,MAACH,GAAc,UAAAC,EAAqB,CAC5C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,u as B,L as y,p as h}from"./vendor-tanstack-BK8oseNA.js";import{B as N,g as v,h as l,bs as i,bB as d,bD as F,df as _,C as S,p as C,q as p,y as u,dK as L,dd as w,de as E}from"./index-
|
|
2
|
-
//# sourceMappingURL=catalog_._slug_.create-
|
|
1
|
+
import{j as e,u as B,L as y,p as h}from"./vendor-tanstack-BK8oseNA.js";import{B as N,g as v,h as l,bs as i,bB as d,bD as F,df as _,C as S,p as C,q as p,y as u,dK as L,dd as w,de as E}from"./index-Yzhlw6-Q.js";import{a as D}from"./zod-DgSl2Nua.js";import{c as P,o as A,s as R}from"./vendor-forms-DxqqmhL5.js";import{B as T}from"./block-type-details-DCWuBOwb.js";import{l as U,L as V}from"./schema-form-input-string-format-datetime-hWIr4wQr.js";import"./toggle-group-ChA-JYQB.js";import{F as I,b as Q,c as z,d as G,e as K,a as M}from"./form-z_RaFdEo.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BZJHvSaq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-JS-ReHrg.js";import"./block-type-logo-SZMe2NdY.js";import"./lazy-markdown-CPQjrQrX.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./timezone-select-BgD_PENN.js";import"./dropdown-menu-BYgkpoqb.js";const $=({blockType:s})=>e.jsx(N,{children:e.jsxs(v,{children:[e.jsx(l,{children:e.jsx(i,{to:"/blocks",className:"text-xl font-semibold",children:"Blocks"})}),e.jsx(d,{}),e.jsx(l,{children:e.jsx(i,{to:"/blocks/catalog",className:"text-xl font-semibold",children:"Catalog"})}),e.jsx(d,{}),e.jsx(l,{children:e.jsx(i,{to:"/blocks/catalog",className:"text-xl font-semibold",children:s.name})}),e.jsx(d,{}),e.jsx(l,{className:"text-xl font-semibold",children:e.jsx(F,{children:"Create"})})]})}),q=/^[a-zA-Z0-9-]+$/,H=A({blockName:R().regex(q,{message:"Name must only contain lowercase letters, numbers, and dashes"})}),O={blockName:""},X=({blockSchema:s,blockType:o})=>{const n=B(),{values:a,setValues:b,errors:x,validateForm:j}=U(),{createBlockDocument:k,isPending:f}=_(),m=P({resolver:D(H),defaultValues:O}),g=async r=>{try{if(await j({schema:a}),x.length>0)return;k({block_schema_id:s.id,block_type_id:o.id,is_anonymous:!1,data:a,name:r.blockName},{onSuccess:t=>{u.success("Block created successfully"),n({to:"/blocks/block/$id",params:{id:t.id}})},onError:t=>{const c="Unknown error while creating block.";u.error(c),console.error(c,t)}})}catch(t){const c="Unknown error while validating block data.";u.error(c),console.error(c,t)}};return e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx($,{blockType:o}),e.jsxs(S,{className:" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 ",children:[e.jsx(I,{...m,children:e.jsxs("form",{className:"flex flex-col gap-4",onSubmit:r=>{m.handleSubmit(g)(r)},children:[e.jsx(Q,{control:m.control,name:"blockName",render:({field:r})=>e.jsxs(z,{children:[e.jsx(G,{children:"Name"}),e.jsx(K,{children:e.jsx(C,{...r,value:r.value})}),e.jsx(M,{})]})}),e.jsx(V,{values:a,onValuesChange:b,errors:x,kinds:["json"],schema:s.fields}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx(p,{variant:"secondary",children:e.jsx(y,{to:"/blocks/catalog",children:"Cancel"})}),e.jsx(p,{loading:f,type:"submit",children:"Save"})]})]})}),e.jsx(T,{blockType:o})]})]})};function xe(){const{slug:s}=L.useParams(),{data:o}=h(w(s)),{data:n}=h(E({block_schemas:{block_type_id:{any_:[o.id]},operator:"and_"},offset:0})),a=n[0];if(!a)throw new Error("Block schema not found");return e.jsx(X,{blockSchema:a,blockType:o})}export{xe as component};
|
|
2
|
+
//# sourceMappingURL=catalog_._slug_.create-Bjt7az95.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog_._slug_.create-oHffbeMs.js","sources":["../../src/components/blocks/block-document-create-page/block-document-create-page-header.tsx","../../src/components/blocks/block-document-create-page/block-document-create-page.tsx","../../src/routes/blocks/catalog_.$slug_.create.tsx?tsr-split=component"],"sourcesContent":["import type { BlockType } from \"@/api/block-types\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentCreatePageHeaderProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockDocumentCreatePageHeader = ({\n\tblockType,\n}: BlockDocumentCreatePageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{blockType.name}\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Create</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { Link, useNavigate } from \"@tanstack/react-router\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport { useCreateBlockDocument } from \"@/api/block-documents\";\nimport type { BlockSchema } from \"@/api/block-schemas\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport {\n\tLazySchemaForm,\n\ttype PrefectSchemaObject,\n\tuseSchemaForm,\n} from \"@/components/schemas\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,\n} from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { BlockDocumentCreatePageHeader } from \"./block-document-create-page-header\";\n\ntype BlockDocumentCreatePageProps = {\n\tblockSchema: BlockSchema;\n\tblockType: BlockType;\n};\n\n// Letters, numbers, and dashes only\nconst BLOCK_NAME_REGEX = /^[a-zA-Z0-9-]+$/;\n\nconst BlockNameFormSchema = z.object({\n\tblockName: z.string().regex(BLOCK_NAME_REGEX, {\n\t\tmessage: \"Name must only contain lowercase letters, numbers, and dashes\",\n\t}),\n});\n\nexport type BlockNameFormSchema = z.infer<typeof BlockNameFormSchema>;\nconst DEFAULT_VALUES: BlockNameFormSchema = {\n\tblockName: \"\",\n};\n\nexport const BlockDocumentCreatePage = ({\n\tblockSchema,\n\tblockType,\n}: BlockDocumentCreatePageProps) => {\n\tconst navigate = useNavigate();\n\tconst { values, setValues, errors, validateForm } = useSchemaForm();\n\tconst { createBlockDocument, isPending } = useCreateBlockDocument();\n\n\tconst form = useForm({\n\t\tresolver: zodResolver(BlockNameFormSchema),\n\t\tdefaultValues: DEFAULT_VALUES,\n\t});\n\n\tconst onSave = async (zodFormValues: BlockNameFormSchema) => {\n\t\ttry {\n\t\t\tawait validateForm({ schema: values });\n\t\t\t// Early exit if there's errors from block schema validation\n\t\t\tif (errors.length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcreateBlockDocument(\n\t\t\t\t{\n\t\t\t\t\tblock_schema_id: blockSchema.id,\n\t\t\t\t\tblock_type_id: blockType.id,\n\t\t\t\t\tis_anonymous: false,\n\t\t\t\t\tdata: values,\n\t\t\t\t\tname: zodFormValues.blockName,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonSuccess: (res) => {\n\t\t\t\t\t\ttoast.success(\"Block created successfully\");\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/blocks/block/$id\",\n\t\t\t\t\t\t\tparams: { id: res.id },\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\tconst message = \"Unknown error while creating block.\";\n\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\tconsole.error(message, err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tconst message = \"Unknown error while validating block data.\";\n\t\t\ttoast.error(message);\n\t\t\tconsole.error(message, err);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockDocumentCreatePageHeader blockType={blockType} />\n\t\t\t<Card className=\" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t<Form {...form}>\n\t\t\t\t\t<form\n\t\t\t\t\t\tclassName=\"flex flex-col gap-4\"\n\t\t\t\t\t\tonSubmit={(e) => void form.handleSubmit(onSave)(e)}\n\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=\"blockName\"\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 {...field} value={field.value} />\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\n\t\t\t\t\t\t<LazySchemaForm\n\t\t\t\t\t\t\tvalues={values}\n\t\t\t\t\t\t\tonValuesChange={setValues}\n\t\t\t\t\t\t\terrors={errors}\n\t\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\t\tschema={blockSchema.fields as unknown as PrefectSchemaObject}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"flex gap-3 justify-end\">\n\t\t\t\t\t\t\t<Button variant=\"secondary\">\n\t\t\t\t\t\t\t\t<Link to=\"/blocks/catalog\">Cancel</Link>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button loading={isPending} type=\"submit\">\n\t\t\t\t\t\t\t\tSave\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</Form>\n\t\t\t\t<BlockTypeDetails blockType={blockType} />\n\t\t\t</Card>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildListFilterBlockSchemasQuery } from \"@/api/block-schemas\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockDocumentCreatePage } from \"@/components/blocks/block-document-create-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug_/create\")({\n\tcomponent: RouteComponent,\n\tloader: async ({ params, context: { queryClient } }) => {\n\t\t// critical data\n\t\tconst res = await queryClient.ensureQueryData(\n\t\t\tbuildGetBlockTypeQuery(params.slug),\n\t\t);\n\t\tvoid queryClient.ensureQueryData(\n\t\t\tbuildListFilterBlockSchemasQuery({\n\t\t\t\tblock_schemas: {\n\t\t\t\t\tblock_type_id: { any_: [res.id] },\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t}),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\tconst { data: blockSchemas } = useSuspenseQuery(\n\t\tbuildListFilterBlockSchemasQuery({\n\t\t\tblock_schemas: {\n\t\t\t\tblock_type_id: { any_: [blockType.id] },\n\t\t\t\toperator: \"and_\",\n\t\t\t},\n\t\t\toffset: 0,\n\t\t}),\n\t);\n\tconst blockSchema = blockSchemas[0];\n\tif (!blockSchema) {\n\t\tthrow new Error(\"Block schema not found\");\n\t}\n\n\treturn (\n\t\t<BlockDocumentCreatePage blockSchema={blockSchema} blockType={blockType} />\n\t);\n}\n"],"names":["BlockDocumentCreatePageHeader","blockType","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","BLOCK_NAME_REGEX","BlockNameFormSchema","z.object","z.string","DEFAULT_VALUES","BlockDocumentCreatePage","blockSchema","navigate","useNavigate","values","setValues","errors","validateForm","useSchemaForm","createBlockDocument","isPending","useCreateBlockDocument","form","useForm","zodResolver","onSave","zodFormValues","res","toast","err","message","Card","Form","e","FormField","field","FormItem","FormLabel","FormControl","Input","FormMessage","LazySchemaForm","Button","Link","BlockTypeDetails","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery","blockSchemas","buildListFilterBlockSchemasQuery","block_schemas","block_type_id","any_","id","operator","offset","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog_._slug_.create-Bjt7az95.js","sources":["../../src/components/blocks/block-document-create-page/block-document-create-page-header.tsx","../../src/components/blocks/block-document-create-page/block-document-create-page.tsx","../../src/routes/blocks/catalog_.$slug_.create.tsx?tsr-split=component"],"sourcesContent":["import type { BlockType } from \"@/api/block-types\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype BlockDocumentCreatePageHeaderProps = {\n\tblockType: BlockType;\n};\n\nexport const BlockDocumentCreatePageHeader = ({\n\tblockType,\n}: BlockDocumentCreatePageHeaderProps) => {\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/blocks\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tBlocks\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\tCatalog\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\tto=\"/blocks/catalog\"\n\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{blockType.name}\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Create</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { Link, useNavigate } from \"@tanstack/react-router\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport { useCreateBlockDocument } from \"@/api/block-documents\";\nimport type { BlockSchema } from \"@/api/block-schemas\";\nimport type { BlockType } from \"@/api/block-types\";\nimport { BlockTypeDetails } from \"@/components/blocks/block-type-details\";\nimport {\n\tLazySchemaForm,\n\ttype PrefectSchemaObject,\n\tuseSchemaForm,\n} from \"@/components/schemas\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,\n} from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { BlockDocumentCreatePageHeader } from \"./block-document-create-page-header\";\n\ntype BlockDocumentCreatePageProps = {\n\tblockSchema: BlockSchema;\n\tblockType: BlockType;\n};\n\n// Letters, numbers, and dashes only\nconst BLOCK_NAME_REGEX = /^[a-zA-Z0-9-]+$/;\n\nconst BlockNameFormSchema = z.object({\n\tblockName: z.string().regex(BLOCK_NAME_REGEX, {\n\t\tmessage: \"Name must only contain lowercase letters, numbers, and dashes\",\n\t}),\n});\n\nexport type BlockNameFormSchema = z.infer<typeof BlockNameFormSchema>;\nconst DEFAULT_VALUES: BlockNameFormSchema = {\n\tblockName: \"\",\n};\n\nexport const BlockDocumentCreatePage = ({\n\tblockSchema,\n\tblockType,\n}: BlockDocumentCreatePageProps) => {\n\tconst navigate = useNavigate();\n\tconst { values, setValues, errors, validateForm } = useSchemaForm();\n\tconst { createBlockDocument, isPending } = useCreateBlockDocument();\n\n\tconst form = useForm({\n\t\tresolver: zodResolver(BlockNameFormSchema),\n\t\tdefaultValues: DEFAULT_VALUES,\n\t});\n\n\tconst onSave = async (zodFormValues: BlockNameFormSchema) => {\n\t\ttry {\n\t\t\tawait validateForm({ schema: values });\n\t\t\t// Early exit if there's errors from block schema validation\n\t\t\tif (errors.length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcreateBlockDocument(\n\t\t\t\t{\n\t\t\t\t\tblock_schema_id: blockSchema.id,\n\t\t\t\t\tblock_type_id: blockType.id,\n\t\t\t\t\tis_anonymous: false,\n\t\t\t\t\tdata: values,\n\t\t\t\t\tname: zodFormValues.blockName,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonSuccess: (res) => {\n\t\t\t\t\t\ttoast.success(\"Block created successfully\");\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/blocks/block/$id\",\n\t\t\t\t\t\t\tparams: { id: res.id },\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\tconst message = \"Unknown error while creating block.\";\n\t\t\t\t\t\ttoast.error(message);\n\t\t\t\t\t\tconsole.error(message, err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tconst message = \"Unknown error while validating block data.\";\n\t\t\ttoast.error(message);\n\t\t\tconsole.error(message, err);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-6\">\n\t\t\t<BlockDocumentCreatePageHeader blockType={blockType} />\n\t\t\t<Card className=\" p-6 grid grid-cols-[minmax(0,_1fr)_250px] gap-4 \">\n\t\t\t\t<Form {...form}>\n\t\t\t\t\t<form\n\t\t\t\t\t\tclassName=\"flex flex-col gap-4\"\n\t\t\t\t\t\tonSubmit={(e) => void form.handleSubmit(onSave)(e)}\n\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=\"blockName\"\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 {...field} value={field.value} />\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\n\t\t\t\t\t\t<LazySchemaForm\n\t\t\t\t\t\t\tvalues={values}\n\t\t\t\t\t\t\tonValuesChange={setValues}\n\t\t\t\t\t\t\terrors={errors}\n\t\t\t\t\t\t\tkinds={[\"json\"]}\n\t\t\t\t\t\t\tschema={blockSchema.fields as unknown as PrefectSchemaObject}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"flex gap-3 justify-end\">\n\t\t\t\t\t\t\t<Button variant=\"secondary\">\n\t\t\t\t\t\t\t\t<Link to=\"/blocks/catalog\">Cancel</Link>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button loading={isPending} type=\"submit\">\n\t\t\t\t\t\t\t\tSave\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</Form>\n\t\t\t\t<BlockTypeDetails blockType={blockType} />\n\t\t\t</Card>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildListFilterBlockSchemasQuery } from \"@/api/block-schemas\";\nimport { buildGetBlockTypeQuery } from \"@/api/block-types\";\nimport { BlockDocumentCreatePage } from \"@/components/blocks/block-document-create-page\";\n\nexport const Route = createFileRoute(\"/blocks/catalog_/$slug_/create\")({\n\tcomponent: RouteComponent,\n\tloader: async ({ params, context: { queryClient } }) => {\n\t\t// critical data\n\t\tconst res = await queryClient.ensureQueryData(\n\t\t\tbuildGetBlockTypeQuery(params.slug),\n\t\t);\n\t\tvoid queryClient.ensureQueryData(\n\t\t\tbuildListFilterBlockSchemasQuery({\n\t\t\t\tblock_schemas: {\n\t\t\t\t\tblock_type_id: { any_: [res.id] },\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t}),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { slug } = Route.useParams();\n\tconst { data: blockType } = useSuspenseQuery(buildGetBlockTypeQuery(slug));\n\tconst { data: blockSchemas } = useSuspenseQuery(\n\t\tbuildListFilterBlockSchemasQuery({\n\t\t\tblock_schemas: {\n\t\t\t\tblock_type_id: { any_: [blockType.id] },\n\t\t\t\toperator: \"and_\",\n\t\t\t},\n\t\t\toffset: 0,\n\t\t}),\n\t);\n\tconst blockSchema = blockSchemas[0];\n\tif (!blockSchema) {\n\t\tthrow new Error(\"Block schema not found\");\n\t}\n\n\treturn (\n\t\t<BlockDocumentCreatePage blockSchema={blockSchema} blockType={blockType} />\n\t);\n}\n"],"names":["BlockDocumentCreatePageHeader","blockType","jsx","Breadcrumb","jsxs","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","BLOCK_NAME_REGEX","BlockNameFormSchema","z.object","z.string","DEFAULT_VALUES","BlockDocumentCreatePage","blockSchema","navigate","useNavigate","values","setValues","errors","validateForm","useSchemaForm","createBlockDocument","isPending","useCreateBlockDocument","form","useForm","zodResolver","onSave","zodFormValues","res","toast","err","message","Card","Form","e","FormField","field","FormItem","FormLabel","FormControl","Input","FormMessage","LazySchemaForm","Button","Link","BlockTypeDetails","RouteComponent","slug","Route","useParams","data","useSuspenseQuery","buildGetBlockTypeQuery","blockSchemas","buildListFilterBlockSchemasQuery","block_schemas","block_type_id","any_","id","operator","offset","Error"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as l,r as d,j as s}from"./vendor-tanstack-BK8oseNA.js";import{br as p,bp as c,cP as m,ab as f,M as b,d2 as y}from"./index-
|
|
2
|
-
//# sourceMappingURL=collapsible-
|
|
1
|
+
import{t as l,r as d,j as s}from"./vendor-tanstack-BK8oseNA.js";import{br as p,bp as c,cP as m,ab as f,M as b,d2 as y}from"./index-Yzhlw6-Q.js";import{av as w,aw as k,ax as Q}from"./vendor-radix-BZJHvSaq.js";const I=()=>{const[{data:o},{data:r},{data:a},{data:n},{data:u},{data:i}]=l({queries:[p(),c(),m(),f(),b(),y()]});return{resourceOptions:d.useMemo(()=>{const t=[];for(const e of o??[])t.push({id:e.id,name:e.name,type:"automation",resourceId:`prefect.automation.${e.id}`});for(const e of r??[])t.push({id:e.id,name:e.name??"",type:"block",resourceId:`prefect.block-document.${e.id}`});for(const e of a??[])t.push({id:e.id,name:e.name,type:"deployment",resourceId:`prefect.deployment.${e.id}`});for(const e of n??[])t.push({id:e.id,name:e.name,type:"flow",resourceId:`prefect.flow.${e.id}`});for(const e of u??[])t.push({id:e.name,name:e.name,type:"work-pool",resourceId:`prefect.work-pool.${e.name}`});for(const e of i??[])t.push({id:e.id,name:e.name,type:"work-queue",resourceId:`prefect.work-queue.${e.id}`});return t},[o,r,a,n,u,i])}};function $({...o}){return s.jsx(w,{"data-slot":"collapsible",...o})}function j({...o}){return s.jsx(k,{"data-slot":"collapsible-trigger",...o})}function F({...o}){return s.jsx(Q,{"data-slot":"collapsible-content",...o})}export{$ as C,j as a,F as b,I as u};
|
|
2
|
+
//# sourceMappingURL=collapsible-BT0EnMmT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible-
|
|
1
|
+
{"version":3,"file":"collapsible-BT0EnMmT.js","sources":["../../src/components/events/events-resource-filter/use-resource-options.ts","../../src/components/ui/collapsible.tsx"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport { buildListAutomationsQuery } from \"@/api/automations\";\nimport { buildListFilterBlockDocumentsQuery } from \"@/api/block-documents\";\nimport { buildFilterDeploymentsQuery } from \"@/api/deployments\";\nimport { buildListFlowsQuery } from \"@/api/flows\";\nimport { buildFilterWorkPoolsQuery } from \"@/api/work-pools\";\nimport { buildFilterWorkQueuesQuery } from \"@/api/work-queues\";\n\nexport type ResourceOption = {\n\tid: string;\n\tname: string;\n\ttype:\n\t\t| \"automation\"\n\t\t| \"block\"\n\t\t| \"deployment\"\n\t\t| \"flow\"\n\t\t| \"work-pool\"\n\t\t| \"work-queue\";\n\tresourceId: string;\n};\n\nexport const useResourceOptions = (): { resourceOptions: ResourceOption[] } => {\n\tconst [\n\t\t{ data: automations },\n\t\t{ data: blocks },\n\t\t{ data: deployments },\n\t\t{ data: flows },\n\t\t{ data: workPools },\n\t\t{ data: workQueues },\n\t] = useQueries({\n\t\tqueries: [\n\t\t\tbuildListAutomationsQuery(),\n\t\t\tbuildListFilterBlockDocumentsQuery(),\n\t\t\tbuildFilterDeploymentsQuery(),\n\t\t\tbuildListFlowsQuery(),\n\t\t\tbuildFilterWorkPoolsQuery(),\n\t\t\tbuildFilterWorkQueuesQuery(),\n\t\t],\n\t});\n\n\tconst resourceOptions = useMemo(() => {\n\t\tconst options: ResourceOption[] = [];\n\n\t\tfor (const a of automations ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: a.id,\n\t\t\t\tname: a.name,\n\t\t\t\ttype: \"automation\",\n\t\t\t\tresourceId: `prefect.automation.${a.id}`,\n\t\t\t});\n\t\t}\n\n\t\tfor (const b of blocks ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: b.id,\n\t\t\t\tname: b.name ?? \"\",\n\t\t\t\ttype: \"block\",\n\t\t\t\tresourceId: `prefect.block-document.${b.id}`,\n\t\t\t});\n\t\t}\n\n\t\tfor (const d of deployments ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: d.id,\n\t\t\t\tname: d.name,\n\t\t\t\ttype: \"deployment\",\n\t\t\t\tresourceId: `prefect.deployment.${d.id}`,\n\t\t\t});\n\t\t}\n\n\t\tfor (const f of flows ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: f.id,\n\t\t\t\tname: f.name,\n\t\t\t\ttype: \"flow\",\n\t\t\t\tresourceId: `prefect.flow.${f.id}`,\n\t\t\t});\n\t\t}\n\n\t\tfor (const wp of workPools ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: wp.name,\n\t\t\t\tname: wp.name,\n\t\t\t\ttype: \"work-pool\",\n\t\t\t\tresourceId: `prefect.work-pool.${wp.name}`,\n\t\t\t});\n\t\t}\n\n\t\tfor (const wq of workQueues ?? []) {\n\t\t\toptions.push({\n\t\t\t\tid: wq.id,\n\t\t\t\tname: wq.name,\n\t\t\t\ttype: \"work-queue\",\n\t\t\t\tresourceId: `prefect.work-queue.${wq.id}`,\n\t\t\t});\n\t\t}\n\n\t\treturn options;\n\t}, [automations, blocks, deployments, flows, workPools, workQueues]);\n\n\treturn { resourceOptions };\n};\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport type * as React from \"react\";\n\nfunction Collapsible({\n\t...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n\treturn <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n\t...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n\treturn (\n\t\t<CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n\t);\n}\n\nfunction CollapsibleContent({\n\t...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Content>) {\n\treturn (\n\t\t<CollapsiblePrimitive.Content data-slot=\"collapsible-content\" {...props} />\n\t);\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"],"names":["useResourceOptions","automations","blocks","deployments","flows","workPools","workQueues","useQueries","buildListAutomationsQuery","buildListFilterBlockDocumentsQuery","buildFilterDeploymentsQuery","buildListFlowsQuery","buildFilterWorkPoolsQuery","buildFilterWorkQueuesQuery","useMemo","options","a","b","d","f","wp","wq","Collapsible","props","CollapsiblePrimitive.Root","CollapsibleTrigger","CollapsiblePrimitive.Trigger","CollapsibleContent","CollapsiblePrimitive.Content"],"mappings":"gNAsBO,MAAMA,EAAqB,IAA6C,CAC9E,KAAM,CACL,CAAE,KAAMC,CAAA,EACR,CAAE,KAAMC,CAAA,EACR,CAAE,KAAMC,CAAA,EACR,CAAE,KAAMC,CAAA,EACR,CAAE,KAAMC,CAAA,EACR,CAAE,KAAMC,CAAA,CAAW,EAChBC,EAAW,CACd,QAAS,CACRC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,CAA2B,CAC5B,CACA,EA8DD,MAAO,CAAE,gBA5DeC,EAAAA,QAAQ,IAAM,CACrC,MAAMC,EAA4B,CAAA,EAElC,UAAWC,KAAKf,GAAe,GAC9Bc,EAAQ,KAAK,CACZ,GAAIC,EAAE,GACN,KAAMA,EAAE,KACR,KAAM,aACN,WAAY,sBAAsBA,EAAE,EAAE,EAAA,CACtC,EAGF,UAAWC,KAAKf,GAAU,GACzBa,EAAQ,KAAK,CACZ,GAAIE,EAAE,GACN,KAAMA,EAAE,MAAQ,GAChB,KAAM,QACN,WAAY,0BAA0BA,EAAE,EAAE,EAAA,CAC1C,EAGF,UAAWC,KAAKf,GAAe,GAC9BY,EAAQ,KAAK,CACZ,GAAIG,EAAE,GACN,KAAMA,EAAE,KACR,KAAM,aACN,WAAY,sBAAsBA,EAAE,EAAE,EAAA,CACtC,EAGF,UAAWC,KAAKf,GAAS,GACxBW,EAAQ,KAAK,CACZ,GAAII,EAAE,GACN,KAAMA,EAAE,KACR,KAAM,OACN,WAAY,gBAAgBA,EAAE,EAAE,EAAA,CAChC,EAGF,UAAWC,KAAMf,GAAa,GAC7BU,EAAQ,KAAK,CACZ,GAAIK,EAAG,KACP,KAAMA,EAAG,KACT,KAAM,YACN,WAAY,qBAAqBA,EAAG,IAAI,EAAA,CACxC,EAGF,UAAWC,KAAMf,GAAc,GAC9BS,EAAQ,KAAK,CACZ,GAAIM,EAAG,GACP,KAAMA,EAAG,KACT,KAAM,aACN,WAAY,sBAAsBA,EAAG,EAAE,EAAA,CACvC,EAGF,OAAON,CACR,EAAG,CAACd,EAAaC,EAAQC,EAAaC,EAAOC,EAAWC,CAAU,CAAC,CAE1D,CACV,ECnGA,SAASgB,EAAY,CACpB,GAAGC,CACJ,EAA2D,CAC1D,aAAQC,EAAA,CAA0B,YAAU,cAAe,GAAGD,EAAO,CACtE,CAEA,SAASE,EAAmB,CAC3B,GAAGF,CACJ,EAA8D,CAC7D,aACEG,EAAA,CAA6B,YAAU,sBAAuB,GAAGH,EAAO,CAE3E,CAEA,SAASI,EAAmB,CAC3B,GAAGJ,CACJ,EAA8D,CAC7D,aACEK,EAAA,CAA6B,YAAU,sBAAuB,GAAGL,EAAO,CAE3E"}
|
prefect/server/ui-v2/assets/{concurrency-limit._id-B6oyPVya.js → concurrency-limit._id-Ba5Uof4l.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,c as D,u as L,F as R,r as S,p as A,M as E}from"./vendor-tanstack-BK8oseNA.js";import{C as y,cr as _,X as w,aq as B,B as b,g as f,h as c,bs as m,bB as x,I as v,al as N,ar as I,aW as V,bD as M,aw as P,ax as O,ay as U,az as G,cR as $,b5 as h,cS as z}from"./index-
|
|
2
|
-
//# sourceMappingURL=concurrency-limit._id-
|
|
1
|
+
import{j as e,c as D,u as L,F as R,r as S,p as A,M as E}from"./vendor-tanstack-BK8oseNA.js";import{C as y,cr as _,X as w,aq as B,B as b,g as f,h as c,bs as m,bB as x,I as v,al as N,ar as I,aW as V,bD as M,aw as P,ax as O,ay as U,az as G,cR as $,b5 as h,cS as z}from"./index-Yzhlw6-Q.js";import{f as p,p as j}from"./vendor-date-JS-ReHrg.js";import{T as F,a as H,b as Q}from"./task-run-concurrency-limits-reset-dialog-ClBlDic_.js";import{o as q,e as K}from"./vendor-forms-DxqqmhL5.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BZJHvSaq.js";import"./vendor-recharts-D4imLXNl.js";import"./dropdown-menu-BYgkpoqb.js";const W=({flowRun:s,taskRun:a})=>{if(a){const{state:t,start_time:r,tags:n,estimated_run_time:i}=a;return{state:t,start_time:r,tags:n,estimated_run_time:i}}if(s){const{state:t,start_time:r,tags:n,estimated_run_time:i}=s;return{state:t,start_time:r,tags:n,estimated_run_time:i}}throw new Error("Expecting taskRun or flowRun to be defined")},X=({flow:s,flowRun:a,taskRun:t})=>{const{state:r,start_time:n,tags:i,estimated_run_time:l}=W({flowRun:a,taskRun:t});return e.jsxs(y,{className:ee({state:r?.type}),children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(J,{flow:s,flowRun:a,taskRun:t}),e.jsx("div",{children:e.jsx(w,{maxTagsDisplayed:5,tags:i})})]}),e.jsxs("div",{className:"flex gap-2 items-center text-slate-600",children:[r&&e.jsx(B,{type:r.type,name:r.name}),n&&e.jsx(Z,{time:n}),e.jsx(Y,{duration:l})]})]})},J=({flow:s,flowRun:a,taskRun:t})=>{if(!s&&!a&&!t)throw new Error("Expecting flow, flowRun, or taskRun");return e.jsx(b,{children:e.jsxs(f,{children:[s&&e.jsx(c,{children:e.jsx(m,{className:"text-lg font-semibold",to:"/flows/flow/$id",params:{id:s.id},children:s.name})}),s&&a&&e.jsx(x,{}),a&&e.jsx(c,{children:e.jsx(m,{to:"/runs/flow-run/$id",params:{id:a.id},children:a.name})}),a&&t&&e.jsx(x,{}),t&&e.jsx(c,{children:e.jsx(m,{to:"/runs/task-run/$id",params:{id:t.id},children:t.name})})]})})},Y=({duration:s})=>e.jsxs("div",{className:"flex gap-1 items-center",children:[e.jsx(v,{id:"Clock",className:"size-4"}),e.jsx(N,{variant:"bodySmall",children:I(s,{maxDecimalPoints:3,units:["s"]})})]}),Z=({time:s})=>e.jsxs("div",{className:"flex gap-1 items-center",children:[e.jsx(v,{id:"Calendar",className:"size-4"}),e.jsx(N,{variant:"bodySmall",className:"font-mono",children:p(j(s),"yyyy/MM/dd pp")})]}),ee=_("flex flex-col gap-2 p-4 border-l-8",{variants:{state:{COMPLETED:"border-l-green-600",FAILED:"border-l-red-600",RUNNING:"border-l-blue-700",CANCELLED:"border-l-gray-800",CANCELLING:"border-l-gray-800",CRASHED:"border-l-orange-600",PAUSED:"border-l-gray-800",PENDING:"border-l-gray-800",SCHEDULED:"border-l-yellow-700"}}}),se=({data:s})=>e.jsx("ul",{className:"flex flex-col gap-2",children:s.map(a=>e.jsx("li",{children:e.jsx(X,{flow:a.flow,flowRun:a.flowRun,taskRun:a.taskRun})},a.taskRun.id))}),ae=({data:s})=>e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("dl",{className:"flex flex-col gap-2",children:[e.jsx("dt",{className:"text-muted-foreground",children:"Tag"}),e.jsx("dd",{className:"text-sm font-medium leading-none",children:s.tag})]}),e.jsx("hr",{}),e.jsx("dl",{className:"flex flex-col gap-2",children:te(s).map(a=>e.jsxs(D.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:a.label}),e.jsx("dd",{className:V("text-sm font-medium leading-none",a.formatType==="date"&&"font-mono"),children:a.value})]},a.label))})]}),te=s=>[{label:"Concurrency Limit Count",value:s.concurrency_limit,formatType:"number"},{label:"Concurrency Limit Active Task Run",value:s.active_slots?.length??"Unknown",formatType:"number"},{label:"Concurrency Limit ID",value:s.id??"Unknown",formatType:"number"},{label:"Created",value:s.created?p(j(s.created),"yyyy/MM/dd pp"):"N/A",formatType:"date"},{label:"Updated",value:s.updated?p(j(s.updated),"yyyy/MM/dd pp"):"N/A",formatType:"date"}],re=({tag:s})=>e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(b,{children:e.jsxs(f,{children:[e.jsx(c,{children:e.jsx(m,{to:"/concurrency-limits",className:"text-xl font-semibold",children:"Concurrency Limits"})}),e.jsx(x,{}),e.jsx(c,{className:"text-xl font-semibold",children:e.jsx(M,{children:s})})]})})}),ne=({data:s,onDelete:a,onReset:t})=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(re,{tag:s.tag}),e.jsx(F,{id:s.id,onDelete:a,onReset:t})]}),ie=({data:s,openDialog:a,onCloseDialog:t,onOpenChange:r})=>{const n=L(),i=()=>{t(),n({to:"/concurrency-limits",search:{tab:"task-run"}})};switch(a){case"reset":return e.jsx(Q,{data:s,onOpenChange:r,onReset:t});case"delete":return e.jsx(H,{data:s,onOpenChange:r,onDelete:i});default:return null}},g=R("/concurrency-limits/concurrency-limit/$id"),d={"active-task-runs":{tabSearchValue:"active-task-runs",displayValue:"Active Task Runs"}},ce=({children:s})=>{const{tab:a}=g.useSearch(),t=g.useNavigate();return e.jsxs(P,{defaultValue:"Global",value:a,children:[e.jsx(O,{children:e.jsx(U,{value:d["active-task-runs"].tabSearchValue,onClick:()=>{t({to:"/concurrency-limits/concurrency-limit/$id",search:{tab:d["active-task-runs"].tabSearchValue}})},children:d["active-task-runs"].displayValue})}),e.jsx(G,{value:d["active-task-runs"].tabSearchValue,children:s})]})},le=({id:s})=>{const[a,t]=S.useState(null),{data:r}=A($(s)),n=()=>t("delete"),i=()=>t("reset"),l=()=>t(null),T=u=>{u||l()},{activeTaskRunsPromise:C,taskRunConcurrencyLimit:o}=r,k=o.active_slots?.length;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ne,{data:o,onDelete:n,onReset:i}),e.jsxs("div",{className:"grid gap-4",style:{gridTemplateColumns:"3fr 1fr"},children:[e.jsx(ce,{children:e.jsx(E,{promise:C,fallback:e.jsx(oe,{length:k}),children:u=>e.jsx(se,{data:u})})}),e.jsx(ae,{data:o})]})]}),e.jsx(ie,{data:o,openDialog:a,onOpenChange:T,onCloseDialog:l})]})},oe=({length:s=0})=>e.jsx("div",{className:"flex flex-col gap-4",children:Array.from({length:s},(a,t)=>e.jsxs(y,{className:"p-4 space-y-4",children:[e.jsx(h,{className:"h-4 w-[350px]"}),e.jsx(h,{className:"h-4 w-[400px]"})]},t))});q({tab:K(["active-task-runs"]).default("active-task-runs")});function be(){const{id:s}=z.useParams();return e.jsx(le,{id:s})}export{be as component};
|
|
2
|
+
//# sourceMappingURL=concurrency-limit._id-Ba5Uof4l.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency-limit._id-B6oyPVya.js","sources":["../../src/components/ui/run-card/run-card.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs/task-run-concurrency-limit-active-task-runs.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details/task-run-concurrency-limit-details.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/nav-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/task-run-concurrency-limit-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-dialog.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-tab-navigation.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/index.tsx","../../src/routes/concurrency-limits/concurrency-limit.$id.tsx?tsr-split=component"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport { format, parseISO } from \"date-fns\";\nimport humanizeDuration from \"humanize-duration\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Card } from \"@/components/ui/card\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { StateBadge } from \"@/components/ui/state-badge\";\nimport { TagBadgeGroup } from \"@/components/ui/tag-badge-group\";\nimport { Typography } from \"@/components/ui/typography\";\n\nconst getValues = ({\n\tflowRun,\n\ttaskRun,\n}: {\n\tflowRun: null | undefined | components[\"schemas\"][\"FlowRunResponse\"];\n\ttaskRun: null | undefined | components[\"schemas\"][\"TaskRun\"];\n}) => {\n\tif (taskRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = taskRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\tif (flowRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = flowRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\n\tthrow new Error(\"Expecting taskRun or flowRun to be defined\");\n};\n\ntype RunCardProps = {\n\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t/** If task run is included, uses fields from task run over flow run */\n\ttaskRun?: components[\"schemas\"][\"TaskRun\"] | null;\n};\n\nexport const RunCard = ({ flow, flowRun, taskRun }: RunCardProps) => {\n\tconst { state, start_time, tags, estimated_run_time } = getValues({\n\t\tflowRun,\n\t\ttaskRun,\n\t});\n\n\treturn (\n\t\t<Card className={stateCardVariants({ state: state?.type })}>\n\t\t\t<div className=\"flex justify-between items-center\">\n\t\t\t\t<ConcurrencyLimitTaskRunBreadcrumb\n\t\t\t\t\tflow={flow}\n\t\t\t\t\tflowRun={flowRun}\n\t\t\t\t\ttaskRun={taskRun}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<TagBadgeGroup maxTagsDisplayed={5} tags={tags} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex gap-2 items-center text-slate-600\">\n\t\t\t\t{state && <StateBadge type={state.type} name={state.name} />}\n\t\t\t\t{start_time && <StartTime time={start_time} />}\n\t\t\t\t<TimeRan duration={estimated_run_time} />\n\t\t\t</div>\n\t\t</Card>\n\t);\n};\n\nconst ConcurrencyLimitTaskRunBreadcrumb = ({\n\tflow,\n\tflowRun,\n\ttaskRun,\n}: RunCardProps) => {\n\tif (!flow && !flowRun && !taskRun) {\n\t\tthrow new Error(\"Expecting flow, flowRun, or taskRun\");\n\t}\n\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t{flow && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tclassName=\"text-lg font-semibold\"\n\t\t\t\t\t\t\tto=\"/flows/flow/$id\"\n\t\t\t\t\t\t\tparams={{ id: flow.id }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{flow.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flow && flowRun && <BreadcrumbSeparator />}\n\t\t\t\t{flowRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/flow-run/$id\" params={{ id: flowRun.id }}>\n\t\t\t\t\t\t\t{flowRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flowRun && taskRun && <BreadcrumbSeparator />}\n\t\t\t\t{taskRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/task-run/$id\" params={{ id: taskRun.id }}>\n\t\t\t\t\t\t\t{taskRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n\ntype TimeRanProps = {\n\tduration: number;\n};\nconst TimeRan = ({ duration }: TimeRanProps) => {\n\treturn (\n\t\t<div className=\"flex gap-1 items-center\">\n\t\t\t<Icon id=\"Clock\" className=\"size-4\" />\n\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\t{humanizeDuration(duration, { maxDecimalPoints: 3, units: [\"s\"] })}\n\t\t\t</Typography>\n\t\t</div>\n\t);\n};\n\ntype StartTimeProps = {\n\ttime: string;\n};\nconst StartTime = ({ time }: StartTimeProps) => (\n\t<div className=\"flex gap-1 items-center\">\n\t\t<Icon id=\"Calendar\" className=\"size-4\" />\n\t\t<Typography variant=\"bodySmall\" className=\"font-mono\">\n\t\t\t{format(parseISO(time), \"yyyy/MM/dd pp\")}\n\t\t</Typography>\n\t</div>\n);\n\nconst stateCardVariants = cva(\"flex flex-col gap-2 p-4 border-l-8\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tCOMPLETED: \"border-l-green-600\",\n\t\t\tFAILED: \"border-l-red-600\",\n\t\t\tRUNNING: \"border-l-blue-700\",\n\t\t\tCANCELLED: \"border-l-gray-800\",\n\t\t\tCANCELLING: \"border-l-gray-800\",\n\t\t\tCRASHED: \"border-l-orange-600\",\n\t\t\tPAUSED: \"border-l-gray-800\",\n\t\t\tPENDING: \"border-l-gray-800\",\n\t\t\tSCHEDULED: \"border-l-yellow-700\",\n\t\t} satisfies Record<components[\"schemas\"][\"StateType\"], string>,\n\t},\n});\n","import type { components } from \"@/api/prefect\";\nimport { RunCard } from \"@/components/ui/run-card\";\n\ntype TaskRunConcurrencyLimitActiveTaskRunsProps = {\n\tdata: Array<{\n\t\ttaskRun: components[\"schemas\"][\"TaskRun\"];\n\t\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\t}>;\n};\n\nexport const TaskRunConcurrencyLimitActiveTaskRuns = ({\n\tdata,\n}: TaskRunConcurrencyLimitActiveTaskRunsProps) => {\n\treturn (\n\t\t<ul className=\"flex flex-col gap-2\">\n\t\t\t{data.map((d) => (\n\t\t\t\t<li key={d.taskRun.id}>\n\t\t\t\t\t<RunCard flow={d.flow} flowRun={d.flowRun} taskRun={d.taskRun} />\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n};\n","import { format, parseISO } from \"date-fns\";\nimport React from \"react\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { cn } from \"@/utils\";\n\ntype TaskRunConcurrencyLimitDetailsProps = {\n\tdata: TaskRunConcurrencyLimit;\n};\n\nexport const TaskRunConcurrencyLimitDetails = ({\n\tdata,\n}: TaskRunConcurrencyLimitDetailsProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t<dt className=\"text-muted-foreground\">Tag</dt>\n\t\t\t\t<dd className=\"text-sm font-medium leading-none\">{data.tag}</dd>\n\t\t\t</dl>\n\t\t\t<hr />\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t{getKeyValueList(data).map((d) => (\n\t\t\t\t\t<React.Fragment key={d.label}>\n\t\t\t\t\t\t<dt className=\"text-muted-foreground\">{d.label}</dt>\n\t\t\t\t\t\t<dd\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"text-sm font-medium leading-none\",\n\t\t\t\t\t\t\t\td.formatType === \"date\" && \"font-mono\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{d.value}\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t))}\n\t\t\t</dl>\n\t\t</div>\n\t);\n};\n\nconst getKeyValueList = (data: TaskRunConcurrencyLimit) =>\n\t[\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Count\",\n\t\t\tvalue: data.concurrency_limit,\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Active Task Run\",\n\t\t\tvalue: data.active_slots?.length ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit ID\",\n\t\t\tvalue: data.id ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Created\",\n\t\t\tvalue: data.created\n\t\t\t\t? format(parseISO(data.created), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Updated\",\n\t\t\tvalue: data.updated\n\t\t\t\t? format(parseISO(data.updated), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t] as const;\n","import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype NavHeaderProps = {\n\ttag: string;\n};\n\nexport const NavHeader = ({ tag }: NavHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t<Breadcrumb>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/concurrency-limits\"\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tConcurrency Limits\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>{tag}</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t</div>\n\t);\n};\n","import type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsActionsMenu } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-actions-menu\";\n\nimport { NavHeader } from \"./nav-header\";\n\ntype TaskRunConcurrencyLimitHeaderProps = {\n\tdata: TaskRunConcurrencyLimit;\n\tonDelete: () => void;\n\tonReset: () => void;\n};\n\nexport const TaskRunConcurrencyLimitHeader = ({\n\tdata,\n\tonDelete,\n\tonReset,\n}: TaskRunConcurrencyLimitHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center justify-between\">\n\t\t\t<NavHeader tag={data.tag} />\n\t\t\t<TaskRunConcurrencyLimitsActionsMenu\n\t\t\t\tid={data.id}\n\t\t\t\tonDelete={onDelete}\n\t\t\t\tonReset={onReset}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useNavigate } from \"@tanstack/react-router\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsDeleteDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-delete-dialog\";\nimport { TaskRunConcurrencyLimitsResetDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-reset-dialog\";\n\nexport type Dialogs = null | \"delete\" | \"reset\";\n\ntype TaskRunConcurrencyLimitDialogProps = {\n\tdata: TaskRunConcurrencyLimit;\n\topenDialog: Dialogs;\n\tonOpenChange: (open: boolean) => void;\n\tonCloseDialog: () => void;\n};\n\nexport const TaskRunConcurrencyLimitDialog = ({\n\tdata,\n\topenDialog,\n\tonCloseDialog,\n\tonOpenChange,\n}: TaskRunConcurrencyLimitDialogProps) => {\n\tconst navigate = useNavigate();\n\n\tconst handleDelete = () => {\n\t\tonCloseDialog();\n\t\tvoid navigate({ to: \"/concurrency-limits\", search: { tab: \"task-run\" } });\n\t};\n\n\tswitch (openDialog) {\n\t\tcase \"reset\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsResetDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonReset={onCloseDialog}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"delete\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsDeleteDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonDelete={handleDelete}\n\t\t\t\t/>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import { getRouteApi } from \"@tanstack/react-router\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport type { TabOptions } from \"@/routes/concurrency-limits/concurrency-limit.$id\";\n\nconst routeApi = getRouteApi(\"/concurrency-limits/concurrency-limit/$id\");\n\ntype TabOptionValues = {\n\t/** Value of search value in url */\n\ttabSearchValue: TabOptions;\n\t/** Display value for the UI */\n\tdisplayValue: string;\n};\n\n/** Maps url tab option to visual name */\nconst TAB_OPTIONS: Record<TabOptions, TabOptionValues> = {\n\t\"active-task-runs\": {\n\t\ttabSearchValue: \"active-task-runs\",\n\t\tdisplayValue: \"Active Task Runs\",\n\t},\n} as const;\n\ntype TaskRunConcurrencyLimitTabNavigationProps = {\n\t/** Should add ActiveTaskRun component */\n\tchildren: React.ReactNode;\n};\n\n// TODO: Move Tabs for navigation to a generic styled component\nexport const TaskRunConcurrencyLimitTabNavigation = ({\n\tchildren,\n}: TaskRunConcurrencyLimitTabNavigationProps) => {\n\tconst { tab } = routeApi.useSearch();\n\tconst navigate = routeApi.useNavigate();\n\n\treturn (\n\t\t<Tabs defaultValue=\"Global\" value={tab}>\n\t\t\t<TabsList>\n\t\t\t\t<TabsTrigger\n\t\t\t\t\tvalue={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/concurrency-limits/concurrency-limit/$id\",\n\t\t\t\t\t\t\tsearch: {\n\t\t\t\t\t\t\t\ttab: TAB_OPTIONS[\"active-task-runs\"].tabSearchValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{TAB_OPTIONS[\"active-task-runs\"].displayValue}\n\t\t\t\t</TabsTrigger>\n\t\t\t</TabsList>\n\t\t\t<TabsContent value={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}>\n\t\t\t\t{children}\n\t\t\t</TabsContent>\n\t\t</Tabs>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Await } from \"@tanstack/react-router\";\nimport { useState } from \"react\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitActiveTaskRuns } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs\";\nimport { TaskRunConcurrencyLimitDetails } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details\";\nimport { TaskRunConcurrencyLimitHeader } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header\";\nimport { Card } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n\ttype Dialogs,\n\tTaskRunConcurrencyLimitDialog,\n} from \"./task-run-concurrency-limit-dialog\";\nimport { TaskRunConcurrencyLimitTabNavigation } from \"./task-run-concurrency-limit-tab-navigation\";\n\ntype TaskRunConcurrencyLimitPageProps = {\n\tid: string;\n};\n\nexport const TaskRunConcurrencyLimitPage = ({\n\tid,\n}: TaskRunConcurrencyLimitPageProps) => {\n\tconst [openDialog, setOpenDialog] = useState<Dialogs>(null);\n\tconst { data } = useSuspenseQuery(\n\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(id),\n\t);\n\n\tconst handleOpenDeleteDialog = () => setOpenDialog(\"delete\");\n\tconst handleOpenResetDialog = () => setOpenDialog(\"reset\");\n\tconst handleCloseDialog = () => setOpenDialog(null);\n\n\t// Because all modals will be rendered, only control the closing logic\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!open) {\n\t\t\thandleCloseDialog();\n\t\t}\n\t};\n\n\tconst { activeTaskRunsPromise, taskRunConcurrencyLimit } = data;\n\tconst numActiveTaskRuns = taskRunConcurrencyLimit.active_slots?.length;\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<TaskRunConcurrencyLimitHeader\n\t\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\t\tonDelete={handleOpenDeleteDialog}\n\t\t\t\t\tonReset={handleOpenResetDialog}\n\t\t\t\t/>\n\t\t\t\t<div className=\"grid gap-4\" style={{ gridTemplateColumns: \"3fr 1fr\" }}>\n\t\t\t\t\t<TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t\t<Await\n\t\t\t\t\t\t\tpromise={activeTaskRunsPromise}\n\t\t\t\t\t\t\tfallback={<SkeletonLoading length={numActiveTaskRuns} />}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{(activeTaskRuns) => (\n\t\t\t\t\t\t\t\t<TaskRunConcurrencyLimitActiveTaskRuns data={activeTaskRuns} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Await>\n\t\t\t\t\t</TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t<TaskRunConcurrencyLimitDetails data={taskRunConcurrencyLimit} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<TaskRunConcurrencyLimitDialog\n\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\topenDialog={openDialog}\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t\tonCloseDialog={handleCloseDialog}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\ntype SkeletonLoadingProps = { length?: number };\nconst SkeletonLoading = ({ length = 0 }: SkeletonLoadingProps) => (\n\t<div className=\"flex flex-col gap-4\">\n\t\t{Array.from({ length }, (_, index) => (\n\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: okay for static skeleton list\n\t\t\t<Card key={index} className=\"p-4 space-y-4\">\n\t\t\t\t<Skeleton className=\"h-4 w-[350px]\" />\n\t\t\t\t<Skeleton className=\"h-4 w-[400px]\" />\n\t\t\t</Card>\n\t\t))}\n\t</div>\n);\n","import { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { z } from \"zod\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitPage } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page\";\n\n/**\n * Schema for validating URL search parameters for the Task Run Concurrency Limit Details page.\n * @property {'active-task-runs'} tab used designate which tab view to display\n */\nconst searchParams = z.object({\n\ttab: z.enum([\"active-task-runs\"]).default(\"active-task-runs\"),\n});\n\nexport type TabOptions = z.infer<typeof searchParams>[\"tab\"];\n\nexport const Route = createFileRoute(\n\t\"/concurrency-limits/concurrency-limit/$id\",\n)({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\twrapInSuspense: true,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(\n\t\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(params.id),\n\t\t),\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <TaskRunConcurrencyLimitPage id={id} />;\n}\n"],"names":["getValues","flowRun","taskRun","state","start_time","tags","estimated_run_time","RunCard","flow","jsxs","Card","stateCardVariants","jsx","ConcurrencyLimitTaskRunBreadcrumb","TagBadgeGroup","StateBadge","StartTime","TimeRan","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","duration","Icon","Typography","time","format","parseISO","cva","TaskRunConcurrencyLimitActiveTaskRuns","data","d","TaskRunConcurrencyLimitDetails","getKeyValueList","React","cn","NavHeader","tag","BreadcrumbPage","TaskRunConcurrencyLimitHeader","onDelete","onReset","TaskRunConcurrencyLimitsActionsMenu","TaskRunConcurrencyLimitDialog","openDialog","onCloseDialog","onOpenChange","navigate","useNavigate","handleDelete","TaskRunConcurrencyLimitsResetDialog","TaskRunConcurrencyLimitsDeleteDialog","routeApi","getRouteApi","TAB_OPTIONS","TaskRunConcurrencyLimitTabNavigation","children","tab","Tabs","TabsList","TabsTrigger","TabsContent","TaskRunConcurrencyLimitPage","id","setOpenDialog","useState","useSuspenseQuery","buildConcurrenyLimitDetailsActiveRunsQuery","handleOpenDeleteDialog","handleOpenResetDialog","handleCloseDialog","handleOpenChange","open","activeTaskRunsPromise","taskRunConcurrencyLimit","numActiveTaskRuns","Fragment","Await","SkeletonLoading","activeTaskRuns","length","_","index","Skeleton","z","default","RouteComponent","Route","useParams"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"concurrency-limit._id-Ba5Uof4l.js","sources":["../../src/components/ui/run-card/run-card.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs/task-run-concurrency-limit-active-task-runs.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details/task-run-concurrency-limit-details.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/nav-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header/task-run-concurrency-limit-header.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-dialog.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/task-run-concurrency-limit-tab-navigation.tsx","../../src/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page/index.tsx","../../src/routes/concurrency-limits/concurrency-limit.$id.tsx?tsr-split=component"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport { format, parseISO } from \"date-fns\";\nimport humanizeDuration from \"humanize-duration\";\nimport type { components } from \"@/api/prefect\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Card } from \"@/components/ui/card\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { StateBadge } from \"@/components/ui/state-badge\";\nimport { TagBadgeGroup } from \"@/components/ui/tag-badge-group\";\nimport { Typography } from \"@/components/ui/typography\";\n\nconst getValues = ({\n\tflowRun,\n\ttaskRun,\n}: {\n\tflowRun: null | undefined | components[\"schemas\"][\"FlowRunResponse\"];\n\ttaskRun: null | undefined | components[\"schemas\"][\"TaskRun\"];\n}) => {\n\tif (taskRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = taskRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\tif (flowRun) {\n\t\tconst { state, start_time, tags, estimated_run_time } = flowRun;\n\t\treturn { state, start_time, tags, estimated_run_time };\n\t}\n\n\tthrow new Error(\"Expecting taskRun or flowRun to be defined\");\n};\n\ntype RunCardProps = {\n\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t/** If task run is included, uses fields from task run over flow run */\n\ttaskRun?: components[\"schemas\"][\"TaskRun\"] | null;\n};\n\nexport const RunCard = ({ flow, flowRun, taskRun }: RunCardProps) => {\n\tconst { state, start_time, tags, estimated_run_time } = getValues({\n\t\tflowRun,\n\t\ttaskRun,\n\t});\n\n\treturn (\n\t\t<Card className={stateCardVariants({ state: state?.type })}>\n\t\t\t<div className=\"flex justify-between items-center\">\n\t\t\t\t<ConcurrencyLimitTaskRunBreadcrumb\n\t\t\t\t\tflow={flow}\n\t\t\t\t\tflowRun={flowRun}\n\t\t\t\t\ttaskRun={taskRun}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<TagBadgeGroup maxTagsDisplayed={5} tags={tags} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex gap-2 items-center text-slate-600\">\n\t\t\t\t{state && <StateBadge type={state.type} name={state.name} />}\n\t\t\t\t{start_time && <StartTime time={start_time} />}\n\t\t\t\t<TimeRan duration={estimated_run_time} />\n\t\t\t</div>\n\t\t</Card>\n\t);\n};\n\nconst ConcurrencyLimitTaskRunBreadcrumb = ({\n\tflow,\n\tflowRun,\n\ttaskRun,\n}: RunCardProps) => {\n\tif (!flow && !flowRun && !taskRun) {\n\t\tthrow new Error(\"Expecting flow, flowRun, or taskRun\");\n\t}\n\n\treturn (\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t{flow && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tclassName=\"text-lg font-semibold\"\n\t\t\t\t\t\t\tto=\"/flows/flow/$id\"\n\t\t\t\t\t\t\tparams={{ id: flow.id }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{flow.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flow && flowRun && <BreadcrumbSeparator />}\n\t\t\t\t{flowRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/flow-run/$id\" params={{ id: flowRun.id }}>\n\t\t\t\t\t\t\t{flowRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t\t{flowRun && taskRun && <BreadcrumbSeparator />}\n\t\t\t\t{taskRun && (\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/runs/task-run/$id\" params={{ id: taskRun.id }}>\n\t\t\t\t\t\t\t{taskRun.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t)}\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t);\n};\n\ntype TimeRanProps = {\n\tduration: number;\n};\nconst TimeRan = ({ duration }: TimeRanProps) => {\n\treturn (\n\t\t<div className=\"flex gap-1 items-center\">\n\t\t\t<Icon id=\"Clock\" className=\"size-4\" />\n\t\t\t<Typography variant=\"bodySmall\">\n\t\t\t\t{humanizeDuration(duration, { maxDecimalPoints: 3, units: [\"s\"] })}\n\t\t\t</Typography>\n\t\t</div>\n\t);\n};\n\ntype StartTimeProps = {\n\ttime: string;\n};\nconst StartTime = ({ time }: StartTimeProps) => (\n\t<div className=\"flex gap-1 items-center\">\n\t\t<Icon id=\"Calendar\" className=\"size-4\" />\n\t\t<Typography variant=\"bodySmall\" className=\"font-mono\">\n\t\t\t{format(parseISO(time), \"yyyy/MM/dd pp\")}\n\t\t</Typography>\n\t</div>\n);\n\nconst stateCardVariants = cva(\"flex flex-col gap-2 p-4 border-l-8\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tCOMPLETED: \"border-l-green-600\",\n\t\t\tFAILED: \"border-l-red-600\",\n\t\t\tRUNNING: \"border-l-blue-700\",\n\t\t\tCANCELLED: \"border-l-gray-800\",\n\t\t\tCANCELLING: \"border-l-gray-800\",\n\t\t\tCRASHED: \"border-l-orange-600\",\n\t\t\tPAUSED: \"border-l-gray-800\",\n\t\t\tPENDING: \"border-l-gray-800\",\n\t\t\tSCHEDULED: \"border-l-yellow-700\",\n\t\t} satisfies Record<components[\"schemas\"][\"StateType\"], string>,\n\t},\n});\n","import type { components } from \"@/api/prefect\";\nimport { RunCard } from \"@/components/ui/run-card\";\n\ntype TaskRunConcurrencyLimitActiveTaskRunsProps = {\n\tdata: Array<{\n\t\ttaskRun: components[\"schemas\"][\"TaskRun\"];\n\t\tflowRun?: components[\"schemas\"][\"FlowRunResponse\"] | null;\n\t\tflow?: components[\"schemas\"][\"Flow\"] | null;\n\t}>;\n};\n\nexport const TaskRunConcurrencyLimitActiveTaskRuns = ({\n\tdata,\n}: TaskRunConcurrencyLimitActiveTaskRunsProps) => {\n\treturn (\n\t\t<ul className=\"flex flex-col gap-2\">\n\t\t\t{data.map((d) => (\n\t\t\t\t<li key={d.taskRun.id}>\n\t\t\t\t\t<RunCard flow={d.flow} flowRun={d.flowRun} taskRun={d.taskRun} />\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n};\n","import { format, parseISO } from \"date-fns\";\nimport React from \"react\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { cn } from \"@/utils\";\n\ntype TaskRunConcurrencyLimitDetailsProps = {\n\tdata: TaskRunConcurrencyLimit;\n};\n\nexport const TaskRunConcurrencyLimitDetails = ({\n\tdata,\n}: TaskRunConcurrencyLimitDetailsProps) => {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t<dt className=\"text-muted-foreground\">Tag</dt>\n\t\t\t\t<dd className=\"text-sm font-medium leading-none\">{data.tag}</dd>\n\t\t\t</dl>\n\t\t\t<hr />\n\t\t\t<dl className=\"flex flex-col gap-2\">\n\t\t\t\t{getKeyValueList(data).map((d) => (\n\t\t\t\t\t<React.Fragment key={d.label}>\n\t\t\t\t\t\t<dt className=\"text-muted-foreground\">{d.label}</dt>\n\t\t\t\t\t\t<dd\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"text-sm font-medium leading-none\",\n\t\t\t\t\t\t\t\td.formatType === \"date\" && \"font-mono\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{d.value}\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t))}\n\t\t\t</dl>\n\t\t</div>\n\t);\n};\n\nconst getKeyValueList = (data: TaskRunConcurrencyLimit) =>\n\t[\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Count\",\n\t\t\tvalue: data.concurrency_limit,\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit Active Task Run\",\n\t\t\tvalue: data.active_slots?.length ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Concurrency Limit ID\",\n\t\t\tvalue: data.id ?? \"Unknown\",\n\t\t\tformatType: \"number\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Created\",\n\t\t\tvalue: data.created\n\t\t\t\t? format(parseISO(data.created), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Updated\",\n\t\t\tvalue: data.updated\n\t\t\t\t? format(parseISO(data.updated), \"yyyy/MM/dd pp\")\n\t\t\t\t: \"N/A\",\n\t\t\tformatType: \"date\",\n\t\t},\n\t] as const;\n","import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype NavHeaderProps = {\n\ttag: string;\n};\n\nexport const NavHeader = ({ tag }: NavHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t<Breadcrumb>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/concurrency-limits\"\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tConcurrency Limits\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>{tag}</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t</div>\n\t);\n};\n","import type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsActionsMenu } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-actions-menu\";\n\nimport { NavHeader } from \"./nav-header\";\n\ntype TaskRunConcurrencyLimitHeaderProps = {\n\tdata: TaskRunConcurrencyLimit;\n\tonDelete: () => void;\n\tonReset: () => void;\n};\n\nexport const TaskRunConcurrencyLimitHeader = ({\n\tdata,\n\tonDelete,\n\tonReset,\n}: TaskRunConcurrencyLimitHeaderProps) => {\n\treturn (\n\t\t<div className=\"flex items-center justify-between\">\n\t\t\t<NavHeader tag={data.tag} />\n\t\t\t<TaskRunConcurrencyLimitsActionsMenu\n\t\t\t\tid={data.id}\n\t\t\t\tonDelete={onDelete}\n\t\t\t\tonReset={onReset}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useNavigate } from \"@tanstack/react-router\";\nimport type { TaskRunConcurrencyLimit } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitsDeleteDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-delete-dialog\";\nimport { TaskRunConcurrencyLimitsResetDialog } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limits-reset-dialog\";\n\nexport type Dialogs = null | \"delete\" | \"reset\";\n\ntype TaskRunConcurrencyLimitDialogProps = {\n\tdata: TaskRunConcurrencyLimit;\n\topenDialog: Dialogs;\n\tonOpenChange: (open: boolean) => void;\n\tonCloseDialog: () => void;\n};\n\nexport const TaskRunConcurrencyLimitDialog = ({\n\tdata,\n\topenDialog,\n\tonCloseDialog,\n\tonOpenChange,\n}: TaskRunConcurrencyLimitDialogProps) => {\n\tconst navigate = useNavigate();\n\n\tconst handleDelete = () => {\n\t\tonCloseDialog();\n\t\tvoid navigate({ to: \"/concurrency-limits\", search: { tab: \"task-run\" } });\n\t};\n\n\tswitch (openDialog) {\n\t\tcase \"reset\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsResetDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonReset={onCloseDialog}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"delete\":\n\t\t\treturn (\n\t\t\t\t<TaskRunConcurrencyLimitsDeleteDialog\n\t\t\t\t\tdata={data}\n\t\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\t\tonDelete={handleDelete}\n\t\t\t\t/>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import { getRouteApi } from \"@tanstack/react-router\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport type { TabOptions } from \"@/routes/concurrency-limits/concurrency-limit.$id\";\n\nconst routeApi = getRouteApi(\"/concurrency-limits/concurrency-limit/$id\");\n\ntype TabOptionValues = {\n\t/** Value of search value in url */\n\ttabSearchValue: TabOptions;\n\t/** Display value for the UI */\n\tdisplayValue: string;\n};\n\n/** Maps url tab option to visual name */\nconst TAB_OPTIONS: Record<TabOptions, TabOptionValues> = {\n\t\"active-task-runs\": {\n\t\ttabSearchValue: \"active-task-runs\",\n\t\tdisplayValue: \"Active Task Runs\",\n\t},\n} as const;\n\ntype TaskRunConcurrencyLimitTabNavigationProps = {\n\t/** Should add ActiveTaskRun component */\n\tchildren: React.ReactNode;\n};\n\n// TODO: Move Tabs for navigation to a generic styled component\nexport const TaskRunConcurrencyLimitTabNavigation = ({\n\tchildren,\n}: TaskRunConcurrencyLimitTabNavigationProps) => {\n\tconst { tab } = routeApi.useSearch();\n\tconst navigate = routeApi.useNavigate();\n\n\treturn (\n\t\t<Tabs defaultValue=\"Global\" value={tab}>\n\t\t\t<TabsList>\n\t\t\t\t<TabsTrigger\n\t\t\t\t\tvalue={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid navigate({\n\t\t\t\t\t\t\tto: \"/concurrency-limits/concurrency-limit/$id\",\n\t\t\t\t\t\t\tsearch: {\n\t\t\t\t\t\t\t\ttab: TAB_OPTIONS[\"active-task-runs\"].tabSearchValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{TAB_OPTIONS[\"active-task-runs\"].displayValue}\n\t\t\t\t</TabsTrigger>\n\t\t\t</TabsList>\n\t\t\t<TabsContent value={TAB_OPTIONS[\"active-task-runs\"].tabSearchValue}>\n\t\t\t\t{children}\n\t\t\t</TabsContent>\n\t\t</Tabs>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Await } from \"@tanstack/react-router\";\nimport { useState } from \"react\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitActiveTaskRuns } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-active-task-runs\";\nimport { TaskRunConcurrencyLimitDetails } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-details\";\nimport { TaskRunConcurrencyLimitHeader } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-header\";\nimport { Card } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n\ttype Dialogs,\n\tTaskRunConcurrencyLimitDialog,\n} from \"./task-run-concurrency-limit-dialog\";\nimport { TaskRunConcurrencyLimitTabNavigation } from \"./task-run-concurrency-limit-tab-navigation\";\n\ntype TaskRunConcurrencyLimitPageProps = {\n\tid: string;\n};\n\nexport const TaskRunConcurrencyLimitPage = ({\n\tid,\n}: TaskRunConcurrencyLimitPageProps) => {\n\tconst [openDialog, setOpenDialog] = useState<Dialogs>(null);\n\tconst { data } = useSuspenseQuery(\n\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(id),\n\t);\n\n\tconst handleOpenDeleteDialog = () => setOpenDialog(\"delete\");\n\tconst handleOpenResetDialog = () => setOpenDialog(\"reset\");\n\tconst handleCloseDialog = () => setOpenDialog(null);\n\n\t// Because all modals will be rendered, only control the closing logic\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!open) {\n\t\t\thandleCloseDialog();\n\t\t}\n\t};\n\n\tconst { activeTaskRunsPromise, taskRunConcurrencyLimit } = data;\n\tconst numActiveTaskRuns = taskRunConcurrencyLimit.active_slots?.length;\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<TaskRunConcurrencyLimitHeader\n\t\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\t\tonDelete={handleOpenDeleteDialog}\n\t\t\t\t\tonReset={handleOpenResetDialog}\n\t\t\t\t/>\n\t\t\t\t<div className=\"grid gap-4\" style={{ gridTemplateColumns: \"3fr 1fr\" }}>\n\t\t\t\t\t<TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t\t<Await\n\t\t\t\t\t\t\tpromise={activeTaskRunsPromise}\n\t\t\t\t\t\t\tfallback={<SkeletonLoading length={numActiveTaskRuns} />}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{(activeTaskRuns) => (\n\t\t\t\t\t\t\t\t<TaskRunConcurrencyLimitActiveTaskRuns data={activeTaskRuns} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Await>\n\t\t\t\t\t</TaskRunConcurrencyLimitTabNavigation>\n\t\t\t\t\t<TaskRunConcurrencyLimitDetails data={taskRunConcurrencyLimit} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<TaskRunConcurrencyLimitDialog\n\t\t\t\tdata={taskRunConcurrencyLimit}\n\t\t\t\topenDialog={openDialog}\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t\tonCloseDialog={handleCloseDialog}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\ntype SkeletonLoadingProps = { length?: number };\nconst SkeletonLoading = ({ length = 0 }: SkeletonLoadingProps) => (\n\t<div className=\"flex flex-col gap-4\">\n\t\t{Array.from({ length }, (_, index) => (\n\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: okay for static skeleton list\n\t\t\t<Card key={index} className=\"p-4 space-y-4\">\n\t\t\t\t<Skeleton className=\"h-4 w-[350px]\" />\n\t\t\t\t<Skeleton className=\"h-4 w-[400px]\" />\n\t\t\t</Card>\n\t\t))}\n\t</div>\n);\n","import { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { z } from \"zod\";\nimport { buildConcurrenyLimitDetailsActiveRunsQuery } from \"@/api/task-run-concurrency-limits\";\nimport { TaskRunConcurrencyLimitPage } from \"@/components/concurrency/task-run-concurrency-limits/task-run-concurrency-limit-page\";\n\n/**\n * Schema for validating URL search parameters for the Task Run Concurrency Limit Details page.\n * @property {'active-task-runs'} tab used designate which tab view to display\n */\nconst searchParams = z.object({\n\ttab: z.enum([\"active-task-runs\"]).default(\"active-task-runs\"),\n});\n\nexport type TabOptions = z.infer<typeof searchParams>[\"tab\"];\n\nexport const Route = createFileRoute(\n\t\"/concurrency-limits/concurrency-limit/$id\",\n)({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\twrapInSuspense: true,\n\tloader: ({ context, params }) =>\n\t\tcontext.queryClient.ensureQueryData(\n\t\t\tbuildConcurrenyLimitDetailsActiveRunsQuery(params.id),\n\t\t),\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\treturn <TaskRunConcurrencyLimitPage id={id} />;\n}\n"],"names":["getValues","flowRun","taskRun","state","start_time","tags","estimated_run_time","RunCard","flow","jsxs","Card","stateCardVariants","jsx","ConcurrencyLimitTaskRunBreadcrumb","TagBadgeGroup","StateBadge","StartTime","TimeRan","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","duration","Icon","Typography","time","format","parseISO","cva","TaskRunConcurrencyLimitActiveTaskRuns","data","d","TaskRunConcurrencyLimitDetails","getKeyValueList","React","cn","NavHeader","tag","BreadcrumbPage","TaskRunConcurrencyLimitHeader","onDelete","onReset","TaskRunConcurrencyLimitsActionsMenu","TaskRunConcurrencyLimitDialog","openDialog","onCloseDialog","onOpenChange","navigate","useNavigate","handleDelete","TaskRunConcurrencyLimitsResetDialog","TaskRunConcurrencyLimitsDeleteDialog","routeApi","getRouteApi","TAB_OPTIONS","TaskRunConcurrencyLimitTabNavigation","children","tab","Tabs","TabsList","TabsTrigger","TabsContent","TaskRunConcurrencyLimitPage","id","setOpenDialog","useState","useSuspenseQuery","buildConcurrenyLimitDetailsActiveRunsQuery","handleOpenDeleteDialog","handleOpenResetDialog","handleCloseDialog","handleOpenChange","open","activeTaskRunsPromise","taskRunConcurrencyLimit","numActiveTaskRuns","Fragment","Await","SkeletonLoading","activeTaskRuns","length","_","index","Skeleton","z","default","RouteComponent","Route","useParams"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t,u as d,s as l}from"./vendor-tanstack-BK8oseNA.js";import{D as p,B as x,g as b,h as i,bs as f,bB as g,bD as j,bE as h,bF as v,bG as D,y as m}from"./index-
|
|
2
|
-
//# sourceMappingURL=create-
|
|
1
|
+
import{j as t,u as d,s as l}from"./vendor-tanstack-BK8oseNA.js";import{D as p,B as x,g as b,h as i,bs as f,bB as g,bD as j,bE as h,bF as v,bG as D,y as m}from"./index-Yzhlw6-Q.js";import"./automation-schema-ClcP8M93.js";import{A as B}from"./automation-wizard-DHsWJ8JS.js";import{t as N}from"./event-to-trigger-BEzU9b5I.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BZJHvSaq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-JS-ReHrg.js";import"./zod-DgSl2Nua.js";import"./form-z_RaFdEo.js";import"./use-stepper-CSAs1T4U.js";import"./index-BOuQzuoR.js";import"./textarea-BqtBNhJB.js";import"./radio-group-BMeznoY8.js";import"./collapsible-BT0EnMmT.js";import"./tags-input-1KkWhGJZ.js";const y=()=>t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(A,{}),t.jsx(p,{label:"Documentation",id:"automations-guide"})]}),A=()=>t.jsx("div",{className:"flex items-center gap-2",children:t.jsx(x,{children:t.jsxs(b,{children:[t.jsx(i,{children:t.jsx(f,{to:"/automations",className:"text-xl font-semibold",children:"Automations"})}),t.jsx(g,{}),t.jsx(i,{className:"text-xl font-semibold",children:t.jsx(j,{children:"Create"})})]})})});function E(a){const[e,o,s]=a.split("-").map(Number);return new Date(e,o-1,s)}function S(){const{eventId:a,eventDate:e}=v.useSearch(),o=!!(a&&e),{data:s}=l({...D(a??"",e?E(e):new Date),enabled:o});if(!o||!s)return;const{trigger:n,triggerTemplate:r}=N(s);return{trigger:n,triggerTemplate:r}}function K(){const{createAutomation:a,isPending:e}=h(),o=d(),s=S(),n=r=>{const c={name:r.name,description:r.description??"",enabled:!0,trigger:r.trigger,actions:r.actions};a(c,{onSuccess:()=>{m.success("Automation created successfully"),o({to:"/automations"})},onError:u=>{m.error(`Failed to create automation: ${u.message}`)}})};return t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsx(y,{}),t.jsx(B,{defaultValues:s,onSubmit:n,isSubmitting:e})]})}export{K as component};
|
|
2
|
+
//# sourceMappingURL=create-DK8Cy1hG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-
|
|
1
|
+
{"version":3,"file":"create-DK8Cy1hG.js","sources":["../../src/components/automations/automations-create-header/automations-create-header.tsx","../../src/routes/automations/create.tsx?tsr-split=component"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\n\nexport const AutomationsCreateHeader = () => (\n\t<div className=\"flex items-center justify-between\">\n\t\t<NavHeader />\n\t\t<DocsLink label=\"Documentation\" id=\"automations-guide\" />\n\t</div>\n);\n\nconst NavHeader = () => (\n\t<div className=\"flex items-center gap-2\">\n\t\t<Breadcrumb>\n\t\t\t<BreadcrumbList>\n\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbLink to=\"/automations\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\tAutomations\n\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t<BreadcrumbPage>Create</BreadcrumbPage>\n\t\t\t\t</BreadcrumbItem>\n\t\t\t</BreadcrumbList>\n\t\t</Breadcrumb>\n\t</div>\n);\n","import { useQuery } from \"@tanstack/react-query\";\nimport { createFileRoute, useNavigate } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\nimport { useCreateAutomation } from \"@/api/automations\";\nimport { buildGetEventQuery } from \"@/api/events\";\nimport type { components } from \"@/api/prefect\";\nimport { AutomationsCreateHeader } from \"@/components/automations/automations-create-header\";\nimport {\n\tAutomationWizard,\n\ttype AutomationWizardSchemaType,\n\ttransformEventToTrigger,\n} from \"@/components/automations/automations-wizard\";\n\ntype AutomationCreate = components[\"schemas\"][\"AutomationCreate\"];\n\n/**\n * Search params schema for the create automation route.\n * Supports pre-populating the wizard from an event.\n */\nconst searchParams = z.object({\n\tactions: z.record(z.unknown()).optional(),\n\t/** Event ID to pre-populate the trigger from */\n\teventId: z.string().optional(),\n\t/** Event date in YYYY-MM-DD format for fetching the event */\n\teventDate: z.string().optional(),\n});\n\n/**\n * Parses a YYYY-MM-DD date string into a Date object.\n */\nfunction parseRouteDate(dateStr: string): Date {\n\tconst [year, month, day] = dateStr.split(\"-\").map(Number);\n\treturn new Date(year, month - 1, day);\n}\n\nexport const Route = createFileRoute(\"/automations/create\")({\n\tcomponent: RouteComponent,\n\tvalidateSearch: zodValidator(searchParams),\n\tloaderDeps: ({ search }) => ({\n\t\teventId: search.eventId,\n\t\teventDate: search.eventDate,\n\t}),\n\tloader: ({ deps, context: { queryClient } }) => {\n\t\t// Prefetch event data if eventId and eventDate are provided\n\t\tif (deps.eventId && deps.eventDate) {\n\t\t\tconst eventDate = parseRouteDate(deps.eventDate);\n\t\t\tvoid queryClient.prefetchQuery(\n\t\t\t\tbuildGetEventQuery(deps.eventId, eventDate),\n\t\t\t);\n\t\t}\n\t},\n\twrapInSuspense: true,\n});\n\n/**\n * Hook to get default values for the automation wizard when pre-populating from an event.\n * Returns undefined if no event params are provided.\n */\nfunction useEventDefaultValues() {\n\tconst { eventId, eventDate } = Route.useSearch();\n\n\t// Only fetch if both params are provided\n\tconst shouldFetch = Boolean(eventId && eventDate);\n\n\t// Use useQuery (not useSuspenseQuery) because useSuspenseQuery doesn't support enabled option\n\tconst { data: event } = useQuery({\n\t\t...buildGetEventQuery(\n\t\t\teventId ?? \"\",\n\t\t\teventDate ? parseRouteDate(eventDate) : new Date(),\n\t\t),\n\t\tenabled: shouldFetch,\n\t});\n\n\tif (!shouldFetch || !event) {\n\t\treturn undefined;\n\t}\n\n\tconst { trigger, triggerTemplate } = transformEventToTrigger(event);\n\treturn {\n\t\ttrigger,\n\t\ttriggerTemplate,\n\t};\n}\n\nfunction RouteComponent() {\n\tconst { createAutomation, isPending } = useCreateAutomation();\n\tconst navigate = useNavigate();\n\tconst eventDefaultValues = useEventDefaultValues();\n\n\tconst handleSubmit = (values: AutomationWizardSchemaType) => {\n\t\tconst automationData: AutomationCreate = {\n\t\t\tname: values.name,\n\t\t\tdescription: values.description ?? \"\",\n\t\t\tenabled: true,\n\t\t\ttrigger: values.trigger,\n\t\t\tactions: values.actions,\n\t\t};\n\n\t\tcreateAutomation(automationData, {\n\t\t\tonSuccess: () => {\n\t\t\t\ttoast.success(\"Automation created successfully\");\n\t\t\t\tvoid navigate({ to: \"/automations\" });\n\t\t\t},\n\t\t\tonError: (error) => {\n\t\t\t\ttoast.error(`Failed to create automation: ${error.message}`);\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<AutomationsCreateHeader />\n\t\t\t<AutomationWizard\n\t\t\t\tdefaultValues={eventDefaultValues}\n\t\t\t\tonSubmit={handleSubmit}\n\t\t\t\tisSubmitting={isPending}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"names":["AutomationsCreateHeader","jsxs","jsx","NavHeader","DocsLink","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","parseRouteDate","dateStr","year","month","day","split","map","Number","Date","useEventDefaultValues","eventId","eventDate","Route","useSearch","shouldFetch","Boolean","data","event","useQuery","buildGetEventQuery","enabled","trigger","triggerTemplate","transformEventToTrigger","RouteComponent","createAutomation","isPending","useCreateAutomation","navigate","useNavigate","eventDefaultValues","handleSubmit","values","automationData","name","description","actions","onSuccess","toast","success","to","onError","error","message","AutomationWizard"],"mappings":"2uBAUO,MAAMA,EAA0B,IACtCC,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACd,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAU,EACXD,EAAAA,IAACE,EAAA,CAAS,MAAM,gBAAgB,GAAG,mBAAA,CAAoB,CAAA,EACxD,EAGKD,EAAY,IACjBD,EAAAA,IAAC,MAAA,CAAI,UAAU,0BACd,SAAAA,EAAAA,IAACG,EAAA,CACA,SAAAJ,EAAAA,KAACK,EAAA,CACA,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CACA,eAACC,EAAA,CAAe,GAAG,eAAe,UAAU,wBAAwB,uBAEpE,CAAA,CACD,QACCC,EAAA,EAAoB,QACpBF,EAAA,CAAe,UAAU,wBACzB,SAAAL,EAAAA,IAACQ,EAAA,CAAe,kBAAM,CAAA,CACvB,CAAA,CAAA,CACD,EACD,EACD,ECAD,SAASC,EAAeC,EAAuB,CAC9C,KAAM,CAACC,EAAMC,EAAOC,CAAG,EAAIH,EAAQI,MAAM,GAAG,EAAEC,IAAIC,MAAM,EACxD,OAAO,IAAIC,KAAKN,EAAMC,EAAQ,EAAGC,CAAG,CACrC,CAyBA,SAASK,GAAwB,CAChC,KAAM,CAAEC,QAAAA,EAASC,UAAAA,CAAAA,EAAcC,EAAMC,UAAAA,EAG/BC,EAAcC,GAAQL,GAAWC,GAGjC,CAAEK,KAAMC,CAAAA,EAAUC,EAAS,CAChC,GAAGC,EACFT,GAAW,GACXC,EAAYX,EAAeW,CAAS,EAAI,IAAIH,IAC7C,EACAY,QAASN,CAAAA,CACT,EAED,GAAI,CAACA,GAAe,CAACG,EACpB,OAGD,KAAM,CAAEI,QAAAA,EAASC,gBAAAA,CAAAA,EAAoBC,EAAwBN,CAAK,EAClE,MAAO,CACNI,QAAAA,EACAC,gBAAAA,CAAAA,CAEF,CAEA,SAASE,GAAiB,CACzB,KAAM,CAAEC,iBAAAA,EAAkBC,UAAAA,CAAAA,EAAcC,EAAAA,EAClCC,EAAWC,EAAAA,EACXC,EAAqBrB,EAAAA,EAErBsB,EAAgBC,GAAuC,CAC5D,MAAMC,EAAmC,CACxCC,KAAMF,EAAOE,KACbC,YAAaH,EAAOG,aAAe,GACnCf,QAAS,GACTC,QAASW,EAAOX,QAChBe,QAASJ,EAAOI,OAAAA,EAGjBX,EAAiBQ,EAAgB,CAChCI,UAAWA,IAAM,CAChBC,EAAMC,QAAQ,iCAAiC,EAC1CX,EAAS,CAAEY,GAAI,cAAA,CAAgB,CACrC,EACAC,QAAUC,GAAU,CACnBJ,EAAMI,MAAM,gCAAgCA,EAAMC,OAAO,EAAE,CAC5D,CAAA,CACA,CACF,EAEA,OACCrD,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACd,SAAA,CAAAC,EAAAA,IAACF,EAAA,EAAuB,QACvBuD,EAAA,CACA,cAAed,EACf,SAAUC,EACV,aAAcL,CAAAA,CAAU,CAAA,EAE1B,CAEF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,p as E,r as V,f as I}from"./vendor-tanstack-BK8oseNA.js";import{a as R}from"./zod-DgSl2Nua.js";import{g as B,o as P,n as D,s as N,r as U,u as q,c as A}from"./vendor-forms-DxqqmhL5.js";import{p as _,C as T,o as F,bw as $,aW as S,bx as J,by as z,H as G,bz as H,m as M,n as O,q as v,y as w}from"./index-
|
|
2
|
-
//# sourceMappingURL=create-
|
|
1
|
+
import{j as e,p as E,r as V,f as I}from"./vendor-tanstack-BK8oseNA.js";import{a as R}from"./zod-DgSl2Nua.js";import{g as B,o as P,n as D,s as N,r as U,u as q,c as A}from"./vendor-forms-DxqqmhL5.js";import{p as _,C as T,o as F,bw as $,aW as S,bx as J,by as z,H as G,bz as H,m as M,n as O,q as v,y as w}from"./index-Yzhlw6-Q.js";import{b as x,c as f,d as h,e as j,a as b,F as Q}from"./form-z_RaFdEo.js";import{u as K,S as X}from"./use-stepper-CSAs1T4U.js";import{T as Y}from"./textarea-BqtBNhJB.js";import"./schema-form-input-string-format-datetime-hWIr4wQr.js";import"./toggle-group-ChA-JYQB.js";import{B as Z}from"./base-job-template-form-section-BubT4OHj.js";import{R as ee,a as te}from"./radio-group-BMeznoY8.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-BZJHvSaq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-JS-ReHrg.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./timezone-select-BgD_PENN.js";import"./dropdown-menu-BYgkpoqb.js";import"./schema-form-BHWTZ8Sy.js";function re(){const a=B();return e.jsxs(e.Fragment,{children:[e.jsx(x,{control:a.control,name:"name",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Name"}),e.jsx(j,{children:e.jsx(_,{...o})}),e.jsx(b,{})]})}),e.jsx(x,{control:a.control,name:"description",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Description (Optional)"}),e.jsx(j,{children:e.jsx(Y,{...o,value:o.value??"",rows:7,placeholder:"Enter a description for your work pool"})}),e.jsx(b,{})]})}),e.jsx(x,{control:a.control,name:"concurrencyLimit",render:({field:o})=>e.jsxs(f,{children:[e.jsx(h,{children:"Flow Run Concurrency (Optional)"}),e.jsx(j,{children:e.jsx(_,{...o,type:"number",min:0,placeholder:"Unlimited",value:o.value??"",onChange:i=>{const n=i.target.value;o.onChange(n===""?null:Number(n))}})}),e.jsx(b,{})]})})]})}const se=P({name:N().min(1,"Name is required").refine(a=>!a.toLowerCase().startsWith("prefect"),"Work pools starting with 'prefect' are reserved for internal use."),description:N().nullable().optional(),concurrencyLimit:D().min(0).nullable().optional()});function oe(){const a=B(),o=a.watch("baseJobTemplate");return e.jsxs("div",{className:"space-y-6",children:[e.jsx(T,{children:e.jsx(F,{children:e.jsxs($,{children:["The fields below control the default values for the base job template. These values can be overridden by deployments.",e.jsx("br",{}),e.jsx("br",{}),"A work pools job template controls infrastructure configuration for all flow runs in the work pool, and specifies the configuration that can be overridden by deployments."]})})}),e.jsx(Z,{baseJobTemplate:o,onBaseJobTemplateChange:i=>{a.setValue("baseJobTemplate",i)}})]})}const ae=P({baseJobTemplate:U(q()).optional()}),k={sm:"h-4 w-4",md:"h-8 w-8",lg:"h-12 w-12"},ne=({url:a,alt:o,size:i="md",className:n})=>a?e.jsx("img",{src:a,alt:o,className:S("rounded border bg-background/50 backdrop-blur-sm object-contain",k[i],n),onError:t=>{const r=t.target,s=document.createElement("div");s.className=S("rounded border bg-muted flex items-center justify-center text-muted-foreground text-xs",k[i],n),s.textContent=o.charAt(0).toUpperCase(),r.parentNode?.replaceChild(s,r)}}):e.jsx("div",{className:S("rounded border bg-muted flex items-center justify-center text-muted-foreground text-xs",k[i],n),children:o.charAt(0).toUpperCase()});function ie(){const a=B(),{data:o={}}=E(J()),i=V.useMemo(()=>{const n=[];return Object.values(o).forEach(t=>{t&&typeof t=="object"&&Object.values(t).forEach(r=>{if(r&&typeof r=="object"&&"type"in r){const{type:s,display_name:u,description:d,logo_url:p,documentation_url:y,is_beta:g}=r;s&&p&&d&&n.push({label:u||z(s),value:s,logoUrl:p,description:d,documentationUrl:y,isBeta:g||!1})}})}),n.sort((t,r)=>t.isBeta&&!r.isBeta?1:!t.isBeta&&r.isBeta?-1:t.label.localeCompare(r.label))},[o]);return e.jsx(x,{control:a.control,name:"type",render:({field:n,fieldState:t})=>e.jsxs(f,{children:[e.jsx(h,{className:"text-base font-medium",children:"Select the infrastructure you want to use to execute your flow runs"}),e.jsx(j,{children:e.jsx(ee,{value:n.value,onValueChange:r=>n.onChange(r),className:"space-y-3",children:i.map(({label:r,value:s,logoUrl:u,description:d,isBeta:p})=>e.jsxs("div",{className:"flex items-center space-x-3 p-4 rounded-lg border hover:bg-accent/50",children:[e.jsx(te,{value:s,id:s}),e.jsx("label",{htmlFor:s,className:"flex-1 cursor-pointer",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(ne,{url:u,alt:r,size:"md"}),e.jsxs("div",{className:"flex flex-col gap-2 flex-1",children:[e.jsxs("p",{className:"text-base font-medium flex items-center",children:[r,p&&e.jsx(G,{variant:"secondary",className:"ml-2 text-xs",children:"Beta"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d})]})]})})]},s))})}),t.error&&e.jsx(b,{children:t.error.message})]})})}const W=["Infrastructure Type","Details","Configuration"],ce=P({type:N().min(1,"Infrastructure type is required"),...se.shape,...ae.shape});function le(){const a=I(),{createWorkPool:o,isPending:i}=H(),{data:n={}}=E(J()),t=K(W.length),r=A({resolver:R(ce),defaultValues:{description:null,concurrencyLimit:null}}),s=r.watch("type");V.useEffect(()=>{const c=Object.values(n).find(l=>l&&typeof l=="object"&&Object.values(l).find(m=>m&&typeof m=="object"&&"type"in m&&m.type===s));c&&s in c&&typeof c[s]=="object"&&c[s]&&"default_base_job_configuration"in c[s]&&r.setValue("baseJobTemplate",c[s].default_base_job_configuration)},[n,r,s]);const u=async()=>{const c=g(t.currentStep);await r.trigger(c)&&(t.isFinalStep?await y():t.incrementStep())},d=()=>{t.decrementStep()},p=()=>{a.navigate({to:"/work-pools"})},y=async()=>{if(!await r.trigger())return;const l=r.getValues();if(!l.name||!l.type){w.error("Please fill in all required fields");return}const m={name:l.name,type:l.type,description:l.description,is_paused:!1,concurrency_limit:l.concurrencyLimit,base_job_template:l.baseJobTemplate||{}};o(m,{onSuccess:C=>{w.success(`Work pool "${l.name}" created successfully`),a.navigate({to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:C.data?.name||l.name}})},onError:C=>{w.error(`Failed to create work pool: ${C.message}`)}})},g=c=>{switch(c){case 0:return["type"];case 1:return["name","description","concurrencyLimit"];case 2:return["baseJobTemplate"];default:return[]}},L=()=>{switch(t.currentStep){case 0:return e.jsx(ie,{});case 1:return e.jsx(re,{});case 2:return e.jsx(oe,{});default:return null}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(T,{children:[e.jsx(M,{children:e.jsx(O,{children:"Create Work Pool"})}),e.jsx(F,{children:e.jsx(X,{currentStepNum:t.currentStep,steps:W,onClick:({stepNum:c})=>{t.visitedStepsSet.has(c)&&t.changeStep(c)},completedSteps:t.completedStepsSet,visitedSteps:t.visitedStepsSet})})]}),e.jsx(T,{children:e.jsx(F,{className:"pt-6",children:e.jsx(Q,{...r,children:e.jsx("form",{className:"space-y-6",children:L()})})})}),e.jsxs("div",{className:"flex justify-between",children:[e.jsxs("div",{children:[!t.isStartingStep&&e.jsx(v,{variant:"outline",onClick:d,disabled:i,children:"Back"}),e.jsx(v,{variant:"ghost",onClick:p,disabled:i,className:"ml-2",children:"Cancel"})]}),e.jsx(v,{onClick:()=>{u()},disabled:i,children:i?"Creating...":t.isFinalStep?"Create Work Pool":"Next"})]})]})}const Be=le;export{Be as component};
|
|
2
|
+
//# sourceMappingURL=create-Ds8Lheyk.js.map
|