This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 34e8c39dc78 Add dag docs and dag reparsing button to details page.
(#44597)
34e8c39dc78 is described below
commit 34e8c39dc781cc32207ff0f1cd2a04b2f723cb1a
Author: Karthikeyan Singaravelan <[email protected]>
AuthorDate: Thu Dec 5 02:10:41 2024 +0530
Add dag docs and dag reparsing button to details page. (#44597)
* Add dag docs and dag reparsing button to details page.
* Adjust docs dialog size. Add toast notification for dag parsing request.
* Rename component files as per convention.
* Use generated button.
* Refactor DagDocumentation to be a standalone component. Rephrase dag
parsing toast text.
---
airflow/ui/package.json | 1 +
airflow/ui/pnpm-lock.yaml | 655 +++++++++++++++++++++
airflow/ui/src/components/DagDocumentation.tsx | 54 ++
.../src/components/{ui/index.ts => ParseDag.tsx} | 36 +-
airflow/ui/src/components/ui/Button.tsx | 59 ++
airflow/ui/src/components/ui/Toaster.tsx | 59 ++
airflow/ui/src/components/ui/index.ts | 2 +
airflow/ui/src/pages/DagsList/Dag/Dag.tsx | 2 +
airflow/ui/src/pages/DagsList/Dag/Header.tsx | 21 +-
airflow/ui/src/pages/DagsList/Dag/Tabs.tsx | 5 +-
airflow/ui/src/queries/useDagParsing.ts | 65 ++
11 files changed, 941 insertions(+), 18 deletions(-)
diff --git a/airflow/ui/package.json b/airflow/ui/package.json
index e2aeada97dd..6a4dfaec831 100644
--- a/airflow/ui/package.json
+++ b/airflow/ui/package.json
@@ -38,6 +38,7 @@
"react-dom": "^18.3.1",
"react-hook-form": "^7.20.0",
"react-icons": "^5.3.0",
+ "react-markdown": "^9.0.1",
"react-router-dom": "^6.26.2",
"react-syntax-highlighter": "^15.5.6",
"use-debounce": "^10.0.3",
diff --git a/airflow/ui/pnpm-lock.yaml b/airflow/ui/pnpm-lock.yaml
index 425192db887..524a88ac912 100644
--- a/airflow/ui/pnpm-lock.yaml
+++ b/airflow/ui/pnpm-lock.yaml
@@ -74,6 +74,9 @@ importers:
react-icons:
specifier: ^5.3.0
version: 5.3.0([email protected])
+ react-markdown:
+ specifier: ^9.0.1
+ version: 9.0.1(@types/[email protected])([email protected])
react-router-dom:
specifier: ^6.26.2
version: 6.26.2([email protected]([email protected]))([email protected])
@@ -955,6 +958,12 @@ packages:
'@types/[email protected]':
resolution: {integrity:
sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
'@types/[email protected]':
resolution: {integrity:
sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -964,12 +973,21 @@ packages:
'@types/[email protected]':
resolution: {integrity:
sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
'@types/[email protected]':
resolution: {integrity:
sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/[email protected]':
resolution: {integrity:
sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+
'@types/[email protected]':
resolution: {integrity:
sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==}
@@ -997,6 +1015,9 @@ packages:
'@types/[email protected]':
resolution: {integrity:
sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+ '@types/[email protected]':
+ resolution: {integrity:
sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
'@typescript-eslint/[email protected]':
resolution: {integrity:
sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1218,6 +1239,9 @@ packages:
react: '>=16.8.0'
react-dom: '>=16.8.0'
+ '@ungap/[email protected]':
+ resolution: {integrity:
sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
'@visx/[email protected]':
resolution: {integrity:
sha512-Ng1mefXIzoIoAivw7dJ+ZZYYUbfuwXgZCgQynShr6ZIVw7P4q4HeQfJP3W24ON+1uCSrzoycHSXRelhR9SBPcw==}
@@ -1612,6 +1636,9 @@ packages:
resolution: {integrity:
sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
+ [email protected]:
+ resolution: {integrity:
sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
[email protected]:
resolution: {integrity:
sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -1665,6 +1692,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==}
+ [email protected]:
+ resolution: {integrity:
sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
[email protected]:
resolution: {integrity:
sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
engines: {node: '>=12'}
@@ -1689,15 +1719,27 @@ packages:
resolution: {integrity:
sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ [email protected]:
+ resolution: {integrity:
sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
[email protected]:
resolution: {integrity:
sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
+ [email protected]:
+ resolution: {integrity:
sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
[email protected]:
resolution: {integrity:
sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
+ [email protected]:
+ resolution: {integrity:
sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
[email protected]:
resolution: {integrity:
sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
+ [email protected]:
+ resolution: {integrity:
sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
[email protected]:
resolution: {integrity:
sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==}
engines: {pnpm: '>=8'}
@@ -1757,6 +1799,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
+ [email protected]:
+ resolution: {integrity:
sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
[email protected]:
resolution: {integrity:
sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
engines: {node: '>=18'}
@@ -1902,6 +1947,9 @@ packages:
supports-color:
optional: true
+ [email protected]:
+ resolution: {integrity:
sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+
[email protected]:
resolution: {integrity:
sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -1938,6 +1986,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==}
+ [email protected]:
+ resolution: {integrity:
sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
[email protected]:
resolution: {integrity:
sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -2138,6 +2189,9 @@ packages:
resolution: {integrity:
sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ [email protected]:
+ resolution: {integrity:
sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
[email protected]:
resolution: {integrity:
sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
@@ -2149,6 +2203,9 @@ packages:
resolution: {integrity:
sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
+ [email protected]:
+ resolution: {integrity:
sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
[email protected]:
resolution: {integrity:
sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -2347,6 +2404,12 @@ packages:
[email protected]:
resolution: {integrity:
sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
+ [email protected]:
+ resolution: {integrity:
sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
[email protected]:
resolution: {integrity:
sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
@@ -2365,6 +2428,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ [email protected]:
+ resolution: {integrity:
sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
[email protected]:
resolution: {integrity:
sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
@@ -2385,6 +2451,9 @@ packages:
resolution: {integrity:
sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
+ [email protected]:
+ resolution: {integrity:
sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
+
[email protected]:
resolution: {integrity:
sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
@@ -2396,9 +2465,15 @@ packages:
[email protected]:
resolution: {integrity:
sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
+ [email protected]:
+ resolution: {integrity:
sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
[email protected]:
resolution: {integrity:
sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
+ [email protected]:
+ resolution: {integrity:
sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
[email protected]:
resolution: {integrity:
sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
engines: {node: '>= 0.4'}
@@ -2448,6 +2523,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
+ [email protected]:
+ resolution: {integrity:
sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
[email protected]:
resolution: {integrity:
sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -2470,6 +2548,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
+ [email protected]:
+ resolution: {integrity:
sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
[email protected]:
resolution: {integrity:
sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
@@ -2490,6 +2571,10 @@ packages:
resolution: {integrity:
sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
+ [email protected]:
+ resolution: {integrity:
sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
[email protected]:
resolution: {integrity:
sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
@@ -2643,6 +2728,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ [email protected]:
+ resolution: {integrity:
sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
[email protected]:
resolution: {integrity:
sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -2674,6 +2762,30 @@ packages:
resolution: {integrity:
sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
+ [email protected]:
+ resolution: {integrity:
sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
[email protected]:
resolution: {integrity:
sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
@@ -2684,6 +2796,69 @@ packages:
resolution: {integrity:
sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ [email protected]:
+ resolution: {integrity:
sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==}
+
[email protected]:
resolution: {integrity:
sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -2871,6 +3046,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
+ [email protected]:
+ resolution: {integrity:
sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+
[email protected]:
resolution: {integrity:
sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -2978,6 +3156,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==}
+ [email protected]:
+ resolution: {integrity:
sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+
[email protected]:
resolution: {integrity:
sha512-y44MCkgtZUCT9tZGuE278fB7PWVf7fRYy0vbRXAts2o5F0EfC4fIQrvQQGBJo1WJbFcVLXzApOscyJuZqHQc1w==}
@@ -3025,6 +3206,12 @@ packages:
[email protected]:
resolution: {integrity:
sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ [email protected]:
+ resolution: {integrity:
sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
+ peerDependencies:
+ '@types/react': '>=18'
+ react: '>=18'
+
[email protected]:
resolution: {integrity:
sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==}
engines: {node: '>=14.0.0'}
@@ -3097,6 +3284,12 @@ packages:
resolution: {integrity:
sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
hasBin: true
+ [email protected]:
+ resolution: {integrity:
sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==}
+
[email protected]:
resolution: {integrity:
sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -3194,6 +3387,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
+ [email protected]:
+ resolution: {integrity:
sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
[email protected]:
resolution: {integrity:
sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
@@ -3245,6 +3441,9 @@ packages:
resolution: {integrity:
sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
engines: {node: '>= 0.4'}
+ [email protected]:
+ resolution: {integrity:
sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
[email protected]:
resolution: {integrity:
sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -3268,6 +3467,9 @@ packages:
[email protected]:
resolution: {integrity:
sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+ [email protected]:
+ resolution: {integrity:
sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
+
[email protected]:
resolution: {integrity:
sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
@@ -3327,6 +3529,12 @@ packages:
resolution: {integrity:
sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ [email protected]:
+ resolution: {integrity:
sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
[email protected]:
resolution: {integrity:
sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
engines: {node: '>=16'}
@@ -3395,6 +3603,24 @@ packages:
[email protected]:
resolution: {integrity:
sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+ [email protected]:
+ resolution: {integrity:
sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
[email protected]:
resolution: {integrity:
sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
hasBin: true
@@ -3436,6 +3662,12 @@ packages:
[email protected]:
resolution: {integrity:
sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ [email protected]:
+ resolution: {integrity:
sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
+
+ [email protected]:
+ resolution: {integrity:
sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
[email protected]:
resolution: {integrity:
sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -3586,6 +3818,9 @@ packages:
react:
optional: true
+ [email protected]:
+ resolution: {integrity:
sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
snapshots:
'@7nohe/[email protected]([email protected])([email protected])([email protected])([email protected])([email protected])':
@@ -4400,6 +4635,14 @@ snapshots:
'@types/d3-interpolate': 3.0.4
'@types/d3-selection': 3.0.11
+ '@types/[email protected]':
+ dependencies:
+ '@types/ms': 0.7.34
+
+ '@types/[email protected]':
+ dependencies:
+ '@types/estree': 1.0.6
+
'@types/[email protected]': {}
'@types/[email protected]': {}
@@ -4408,10 +4651,20 @@ snapshots:
dependencies:
'@types/unist': 2.0.11
+ '@types/[email protected]':
+ dependencies:
+ '@types/unist': 2.0.11
+
'@types/[email protected]': {}
'@types/[email protected]': {}
+ '@types/[email protected]':
+ dependencies:
+ '@types/unist': 2.0.11
+
+ '@types/[email protected]': {}
+
'@types/[email protected]':
dependencies:
undici-types: 6.19.8
@@ -4441,6 +4694,8 @@ snapshots:
'@types/[email protected]': {}
+ '@types/[email protected]': {}
+
'@typescript-eslint/[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])':
dependencies:
'@eslint-community/regexpp': 4.11.0
@@ -4916,6 +5171,8 @@ snapshots:
- '@codemirror/lint'
- '@codemirror/search'
+ '@ungap/[email protected]': {}
+
'@visx/[email protected]':
dependencies:
'@types/d3-shape': 1.3.12
@@ -5683,6 +5940,8 @@ snapshots:
cosmiconfig: 7.1.0
resolve: 1.22.8
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -5742,6 +6001,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
assertion-error: 2.0.1
@@ -5777,12 +6038,20 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ [email protected]: {}
+
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
'@kurkle/color': 0.3.2
@@ -5849,6 +6118,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -5985,6 +6256,10 @@ snapshots:
dependencies:
ms: 2.1.3
+ [email protected]:
+ dependencies:
+ character-entities: 2.0.2
+
[email protected]: {}
[email protected]:
@@ -6034,6 +6309,10 @@ snapshots:
[email protected]: {}
+ [email protected]:
+ dependencies:
+ dequal: 2.0.3
+
[email protected]:
dependencies:
path-type: 4.0.0
@@ -6365,6 +6644,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
'@types/estree': 1.0.6
@@ -6383,6 +6664,8 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -6595,6 +6878,30 @@ snapshots:
[email protected]: {}
+ [email protected]:
+ dependencies:
+ '@types/estree': 1.0.6
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.1.3
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 1.0.8
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/hast': 3.0.4
+
[email protected]:
dependencies:
'@types/hast': 2.3.10
@@ -6615,6 +6922,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -6628,6 +6937,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
es-errors: 1.3.0
@@ -6638,11 +6949,18 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
is-alphabetical: 1.0.4
is-decimal: 1.0.4
+ [email protected]:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
[email protected]:
dependencies:
call-bind: 1.0.7
@@ -6692,6 +7010,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
[email protected]:
@@ -6710,6 +7030,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -6722,6 +7044,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
call-bind: 1.0.7
@@ -6865,6 +7189,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
js-tokens: 4.0.0
@@ -6898,12 +7224,234 @@ snapshots:
dependencies:
semver: 7.6.3
+ [email protected]:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.0
+
+ [email protected]:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.2.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+
+ [email protected]:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.0.0
+ zwitch: 2.0.4
+
+ [email protected]:
+ dependencies:
+ '@types/mdast': 4.0.4
+
[email protected]: {}
[email protected]: {}
[email protected]: {}
+ [email protected]:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ [email protected]:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
+
+ [email protected]: {}
+
+ [email protected]: {}
+
+ [email protected]:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-types: 2.0.1
+
+ [email protected]:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
+
+ [email protected]:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+
+ [email protected]: {}
+
+ [email protected]: {}
+
+ [email protected]:
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.7
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.2
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
[email protected]:
dependencies:
braces: 3.0.3
@@ -7087,6 +7635,17 @@ snapshots:
is-decimal: 1.0.4
is-hexadecimal: 1.0.4
+ [email protected]:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities: 2.0.2
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.0.2
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
[email protected]:
dependencies:
'@babel/code-frame': 7.24.7
@@ -7176,6 +7735,8 @@ snapshots:
dependencies:
xtend: 4.0.2
+ [email protected]: {}
+
[email protected]: {}
[email protected]: {}
@@ -7216,6 +7777,23 @@ snapshots:
[email protected]: {}
+ [email protected](@types/[email protected])([email protected]):
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/react': 18.3.5
+ devlop: 1.1.0
+ hast-util-to-jsx-runtime: 2.3.2
+ html-url-attributes: 3.0.1
+ mdast-util-to-hast: 13.2.0
+ react: 18.3.1
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.1
+ unified: 11.0.5
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
[email protected]([email protected]([email protected]))([email protected]):
dependencies:
'@remix-run/router': 1.19.2
@@ -7321,6 +7899,23 @@ snapshots:
dependencies:
jsesc: 0.5.0
+ [email protected]:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ micromark-util-types: 2.0.1
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ [email protected]:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.0
+ unified: 11.0.5
+ vfile: 6.0.3
+
[email protected]: {}
[email protected]:
@@ -7431,6 +8026,8 @@ snapshots:
[email protected]: {}
+ [email protected]: {}
+
[email protected]:
dependencies:
spdx-expression-parse: 3.0.1
@@ -7509,6 +8106,11 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.0.0
+ [email protected]:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
[email protected]:
dependencies:
ansi-regex: 5.0.1
@@ -7527,6 +8129,10 @@ snapshots:
[email protected]: {}
+ [email protected]:
+ dependencies:
+ inline-style-parser: 0.2.4
+
[email protected]: {}
[email protected]:
@@ -7579,6 +8185,10 @@ snapshots:
dependencies:
is-number: 7.0.0
+ [email protected]: {}
+
+ [email protected]: {}
+
[email protected]([email protected]):
dependencies:
typescript: 5.5.4
@@ -7657,6 +8267,39 @@ snapshots:
[email protected]: {}
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
[email protected]([email protected]):
dependencies:
browserslist: 4.23.3
@@ -7693,6 +8336,16 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
+
+ [email protected]:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.2
+
[email protected](@types/[email protected]):
dependencies:
cac: 6.7.14
@@ -7843,3 +8496,5 @@ snapshots:
optionalDependencies:
'@types/react': 18.3.5
react: 18.3.1
+
+ [email protected]: {}
diff --git a/airflow/ui/src/components/DagDocumentation.tsx
b/airflow/ui/src/components/DagDocumentation.tsx
new file mode 100644
index 00000000000..f0ac30eadab
--- /dev/null
+++ b/airflow/ui/src/components/DagDocumentation.tsx
@@ -0,0 +1,54 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box, Heading } from "@chakra-ui/react";
+import { useState } from "react";
+import { FiBookOpen } from "react-icons/fi";
+import Markdown from "react-markdown";
+
+import { Button, Dialog } from "src/components/ui";
+
+const DagDocumentation = ({ docMd }: { readonly docMd: string }) => {
+ const [isDocsOpen, setIsDocsOpen] = useState(false);
+
+ return (
+ <Box>
+ <Button onClick={() => setIsDocsOpen(true)} variant="outline">
+ <FiBookOpen height={5} width={5} />
+ Dag Docs
+ </Button>
+ <Dialog.Root
+ onOpenChange={() => setIsDocsOpen(false)}
+ open={isDocsOpen}
+ size="md"
+ >
+ <Dialog.Content backdrop>
+ <Dialog.Header bg="blue.muted">
+ <Heading size="xl">Dag Documentation</Heading>
+ <Dialog.CloseTrigger closeButtonProps={{ size: "xl" }} />
+ </Dialog.Header>
+ <Dialog.Body display="flex">
+ <Markdown>{docMd}</Markdown>
+ </Dialog.Body>
+ </Dialog.Content>
+ </Dialog.Root>
+ </Box>
+ );
+};
+
+export default DagDocumentation;
diff --git a/airflow/ui/src/components/ui/index.ts
b/airflow/ui/src/components/ParseDag.tsx
similarity index 58%
copy from airflow/ui/src/components/ui/index.ts
copy to airflow/ui/src/components/ParseDag.tsx
index b6fa2898e9e..ed29976c486 100644
--- a/airflow/ui/src/components/ui/index.ts
+++ b/airflow/ui/src/components/ParseDag.tsx
@@ -16,19 +16,29 @@
* specific language governing permissions and limitations
* under the License.
*/
+import { FiRefreshCw } from "react-icons/fi";
-export * from "./Dialog";
-export * from "./Pagination";
-export * from "./Select";
-export * from "./Alert";
-export * from "./CloseButton";
-export * from "./InputGroup";
+import { Button } from "src/components/ui";
+import { useDagParsing } from "src/queries/useDagParsing.ts";
-export * from "./Switch";
-export * from "./Tag";
-export * from "./Tooltip";
+type Props = {
+ readonly dagId: string;
+ readonly fileToken: string;
+};
-export * from "./ProgressBar";
-export * from "./Menu";
-export * from "./Accordion";
-export * from "./Status";
+const ParseDag = ({ dagId, fileToken }: Props) => {
+ const { isPending, mutate } = useDagParsing({ dagId });
+
+ return (
+ <Button
+ loading={isPending}
+ onClick={() => mutate({ fileToken })}
+ variant="outline"
+ >
+ <FiRefreshCw height={5} width={5} />
+ Reparse Dag
+ </Button>
+ );
+};
+
+export default ParseDag;
diff --git a/airflow/ui/src/components/ui/Button.tsx
b/airflow/ui/src/components/ui/Button.tsx
new file mode 100644
index 00000000000..1c295d38a04
--- /dev/null
+++ b/airflow/ui/src/components/ui/Button.tsx
@@ -0,0 +1,59 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { ButtonProps as ChakraButtonProps } from "@chakra-ui/react";
+import {
+ AbsoluteCenter,
+ Button as ChakraButton,
+ Span,
+ Spinner,
+} from "@chakra-ui/react";
+import * as React from "react";
+
+type ButtonLoadingProps = {
+ loading?: boolean;
+ loadingText?: React.ReactNode;
+};
+
+export type ButtonProps = {} & ButtonLoadingProps & ChakraButtonProps;
+
+export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
+ (props, ref) => {
+ const { children, disabled, loading, loadingText, ...rest } = props;
+
+ return (
+ <ChakraButton disabled={loading ?? disabled} ref={ref} {...rest}>
+ {loading && !Boolean(loadingText) ? (
+ <>
+ <AbsoluteCenter display="inline-flex">
+ <Spinner color="inherit" size="inherit" />
+ </AbsoluteCenter>
+ <Span opacity={0}>{children}</Span>
+ </>
+ ) : loading && Boolean(loadingText) ? (
+ <>
+ <Spinner color="inherit" size="inherit" />
+ {loadingText}
+ </>
+ ) : (
+ children
+ )}
+ </ChakraButton>
+ );
+ },
+);
diff --git a/airflow/ui/src/components/ui/Toaster.tsx
b/airflow/ui/src/components/ui/Toaster.tsx
new file mode 100644
index 00000000000..41bdec64f86
--- /dev/null
+++ b/airflow/ui/src/components/ui/Toaster.tsx
@@ -0,0 +1,59 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import {
+ Toaster as ChakraToaster,
+ Portal,
+ Spinner,
+ Stack,
+ Toast,
+ createToaster,
+} from "@chakra-ui/react";
+
+export const toaster = createToaster({
+ pauseOnPageIdle: true,
+ placement: "bottom-end",
+});
+
+export const Toaster = () => (
+ <Portal>
+ <ChakraToaster insetInline={{ mdDown: "4" }} toaster={toaster}>
+ {(toast) => (
+ <Toast.Root width={{ md: "sm" }}>
+ {toast.type === "loading" ? (
+ <Spinner color="blue.solid" size="sm" />
+ ) : (
+ <Toast.Indicator />
+ )}
+ <Stack flex="1" gap="1" maxWidth="100%">
+ {Boolean(toast.title) ? (
+ <Toast.Title>{toast.title}</Toast.Title>
+ ) : undefined}
+ {Boolean(toast.description) ? (
+ <Toast.Description>{toast.description}</Toast.Description>
+ ) : undefined}
+ </Stack>
+ {toast.action ? (
+ <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>
+ ) : undefined}
+ {Boolean(toast.meta?.closable) ? <Toast.CloseTrigger /> : undefined}
+ </Toast.Root>
+ )}
+ </ChakraToaster>
+ </Portal>
+);
diff --git a/airflow/ui/src/components/ui/index.ts
b/airflow/ui/src/components/ui/index.ts
index b6fa2898e9e..f88340b42d7 100644
--- a/airflow/ui/src/components/ui/index.ts
+++ b/airflow/ui/src/components/ui/index.ts
@@ -32,3 +32,5 @@ export * from "./ProgressBar";
export * from "./Menu";
export * from "./Accordion";
export * from "./Status";
+export * from "./Button";
+export * from "./Toaster";
diff --git a/airflow/ui/src/pages/DagsList/Dag/Dag.tsx
b/airflow/ui/src/pages/DagsList/Dag/Dag.tsx
index ac149d10b46..2a8c0a42159 100644
--- a/airflow/ui/src/pages/DagsList/Dag/Dag.tsx
+++ b/airflow/ui/src/pages/DagsList/Dag/Dag.tsx
@@ -26,6 +26,7 @@ import {
} from "openapi/queries";
import { ErrorAlert } from "src/components/ErrorAlert";
import { ProgressBar } from "src/components/ui";
+import { Toaster } from "src/components/ui";
import { OpenGroupsProvider } from "src/context/openGroups";
import { Header } from "./Header";
@@ -58,6 +59,7 @@ export const Dag = () => {
return (
<OpenGroupsProvider dagId={dagId ?? ""}>
<Box>
+ <Toaster />
<Button asChild colorPalette="blue" variant="ghost">
<RouterLink to="/dags">
<FiChevronsLeft />
diff --git a/airflow/ui/src/pages/DagsList/Dag/Header.tsx
b/airflow/ui/src/pages/DagsList/Dag/Header.tsx
index 9741435f3cf..39145f25197 100644
--- a/airflow/ui/src/pages/DagsList/Dag/Header.tsx
+++ b/airflow/ui/src/pages/DagsList/Dag/Header.tsx
@@ -27,9 +27,14 @@ import {
} from "@chakra-ui/react";
import { FiCalendar } from "react-icons/fi";
-import type { DAGResponse, DAGRunResponse } from "openapi/requests/types.gen";
+import type {
+ DAGDetailsResponse,
+ DAGRunResponse,
+} from "openapi/requests/types.gen";
import { DagIcon } from "src/assets/DagIcon";
+import DagDocumentation from "src/components/DagDocumentation";
import DagRunInfo from "src/components/DagRunInfo";
+import ParseDag from "src/components/ParseDag";
import { TogglePause } from "src/components/TogglePause";
import TriggerDAGTextButton from
"src/components/TriggerDag/TriggerDAGTextButton";
import { Tooltip } from "src/components/ui";
@@ -41,7 +46,7 @@ export const Header = ({
dagId,
latestRun,
}: {
- readonly dag?: DAGResponse;
+ readonly dag?: DAGDetailsResponse;
readonly dagId?: string;
readonly latestRun?: DAGRunResponse;
}) => (
@@ -59,7 +64,17 @@ export const Header = ({
/>
)}
</HStack>
- <Flex>{dag ? <TriggerDAGTextButton dag={dag} /> : undefined}</Flex>
+ <Flex>
+ {dag ? (
+ <HStack>
+ {dag.doc_md === null ? undefined : (
+ <DagDocumentation docMd={dag.doc_md} />
+ )}
+ <ParseDag dagId={dag.dag_id} fileToken={dag.file_token} />
+ <TriggerDAGTextButton dag={dag} />
+ </HStack>
+ ) : undefined}
+ </Flex>
</Flex>
<SimpleGrid columns={4} gap={4} my={2}>
<VStack align="flex-start" gap={1}>
diff --git a/airflow/ui/src/pages/DagsList/Dag/Tabs.tsx
b/airflow/ui/src/pages/DagsList/Dag/Tabs.tsx
index 5c2d44109ad..c418c24094f 100644
--- a/airflow/ui/src/pages/DagsList/Dag/Tabs.tsx
+++ b/airflow/ui/src/pages/DagsList/Dag/Tabs.tsx
@@ -19,7 +19,7 @@
import { Button, Center, Flex } from "@chakra-ui/react";
import { NavLink, useSearchParams } from "react-router-dom";
-import type { DAGResponse } from "openapi/requests/types.gen";
+import type { DAGDetailsResponse } from "openapi/requests/types.gen";
import { DagIcon } from "src/assets/DagIcon";
import { capitalize } from "src/utils";
@@ -29,12 +29,13 @@ const tabs = ["overview", "runs", "tasks", "events",
"code"];
const MODAL = "modal";
-export const DagTabs = ({ dag }: { readonly dag?: DAGResponse }) => {
+export const DagTabs = ({ dag }: { readonly dag?: DAGDetailsResponse }) => {
const [searchParams, setSearchParams] = useSearchParams();
const modal = searchParams.get(MODAL);
const isGraphOpen = modal === "graph";
+
const onClose = () => {
searchParams.delete(MODAL);
setSearchParams(searchParams);
diff --git a/airflow/ui/src/queries/useDagParsing.ts
b/airflow/ui/src/queries/useDagParsing.ts
new file mode 100644
index 00000000000..7f22e2e7f6e
--- /dev/null
+++ b/airflow/ui/src/queries/useDagParsing.ts
@@ -0,0 +1,65 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { useQueryClient } from "@tanstack/react-query";
+
+import {
+ useDagParsingServiceReparseDagFile,
+ UseDagServiceGetDagDetailsKeyFn,
+ UseDagSourceServiceGetDagSourceKeyFn,
+} from "openapi/queries";
+import { toaster } from "src/components/ui";
+
+const onError = () => {
+ toaster.create({
+ description:
+ "Dag parsing request failed. There could be pending parsing requests yet
to be processed.",
+ title: "Dag Failed to Reparse",
+ type: "error",
+ });
+};
+
+export const useDagParsing = ({ dagId }: { readonly dagId: string }) => {
+ const queryClient = useQueryClient();
+
+ const onSuccess = async () => {
+ await queryClient.invalidateQueries({
+ queryKey: UseDagServiceGetDagDetailsKeyFn({ dagId }),
+ });
+
+ await queryClient.invalidateQueries({
+ queryKey: UseDagSourceServiceGetDagSourceKeyFn({ dagId }),
+ });
+
+ toaster.create({
+ description: "Dag should reparse soon.",
+ title: "Reparsing request submitted successfully",
+ type: "success",
+ });
+ };
+
+ const { isPending, mutate } = useDagParsingServiceReparseDagFile({
+ onError,
+ onSuccess,
+ });
+
+ return {
+ isPending,
+ mutate,
+ };
+};