@verdaccio/ui-components 5.0.0-next-9.18 → 5.0.0-next-9.20
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.
- package/build/components/AppRoute/AppRoute.js +13 -0
- package/build/components/AppRoute/AppRoute.js.map +1 -1
- package/build/components/AppRoute/AppRoute.mjs +13 -0
- package/build/components/AppRoute/AppRoute.mjs.map +1 -1
- package/build/components/LoginForm/useLoginForm.d.ts +2 -79
- package/build/components/LoginForm/useLoginForm.js.map +1 -1
- package/build/components/LoginForm/useLoginForm.mjs.map +1 -1
- package/build/pages/Stage/StageDetail.d.ts +2 -0
- package/build/pages/Stage/StageDetail.js +8 -0
- package/build/pages/Stage/StageDetail.js.map +1 -0
- package/build/pages/Stage/StageDetail.mjs +8 -0
- package/build/pages/Stage/StageDetail.mjs.map +1 -0
- package/build/pages/Stage/StageList.d.ts +2 -0
- package/build/pages/Stage/StageList.js +8 -0
- package/build/pages/Stage/StageList.js.map +1 -0
- package/build/pages/Stage/StageList.mjs +8 -0
- package/build/pages/Stage/StageList.mjs.map +1 -0
- package/build/pages/Stage/index.d.ts +2 -0
- package/build/sections/Header/HeaderMenu.js +25 -6
- package/build/sections/Header/HeaderMenu.js.map +1 -1
- package/build/sections/Header/HeaderMenu.mjs +25 -6
- package/build/sections/Header/HeaderMenu.mjs.map +1 -1
- package/build/sections/Stage/StageActions.d.ts +15 -0
- package/build/sections/Stage/StageActions.js +101 -0
- package/build/sections/Stage/StageActions.js.map +1 -0
- package/build/sections/Stage/StageActions.mjs +99 -0
- package/build/sections/Stage/StageActions.mjs.map +1 -0
- package/build/sections/Stage/StageDetail.d.ts +3 -0
- package/build/sections/Stage/StageDetail.js +110 -0
- package/build/sections/Stage/StageDetail.js.map +1 -0
- package/build/sections/Stage/StageDetail.mjs +108 -0
- package/build/sections/Stage/StageDetail.mjs.map +1 -0
- package/build/sections/Stage/StageList.d.ts +3 -0
- package/build/sections/Stage/StageList.js +140 -0
- package/build/sections/Stage/StageList.js.map +1 -0
- package/build/sections/Stage/StageList.mjs +138 -0
- package/build/sections/Stage/StageList.mjs.map +1 -0
- package/build/sections/Stage/index.d.ts +6 -0
- package/build/sections/Stage/index.js +13 -0
- package/build/sections/Stage/index.mjs +6 -0
- package/build/sections/Stage/types.d.ts +22 -0
- package/build/sections/Stage/useRequireSession.d.ts +14 -0
- package/build/sections/Stage/useRequireSession.js +33 -0
- package/build/sections/Stage/useRequireSession.js.map +1 -0
- package/build/sections/Stage/useRequireSession.mjs +33 -0
- package/build/sections/Stage/useRequireSession.mjs.map +1 -0
- package/build/sections/Stage/useStage.d.ts +34 -0
- package/build/sections/Stage/useStage.js +71 -0
- package/build/sections/Stage/useStage.js.map +1 -0
- package/build/sections/Stage/useStage.mjs +65 -0
- package/build/sections/Stage/useStage.mjs.map +1 -0
- package/build/utils/routes.d.ts +4 -1
- package/build/utils/routes.js +3 -0
- package/build/utils/routes.js.map +1 -1
- package/build/utils/routes.mjs +3 -0
- package/build/utils/routes.mjs.map +1 -1
- package/package.json +13 -13
|
@@ -20,11 +20,14 @@ var Login = require_loadable.default(() => Promise.resolve().then(() => require(
|
|
|
20
20
|
var Success = require_loadable.default(() => Promise.resolve().then(() => require("../../pages/Security/Success.js")));
|
|
21
21
|
var AddUser = require_loadable.default(() => Promise.resolve().then(() => require("../../pages/Security/AddUser.js")));
|
|
22
22
|
var ChangePassword = require_loadable.default(() => Promise.resolve().then(() => require("../../pages/Security/ChangePassword.js")));
|
|
23
|
+
var StageList = require_loadable.default(() => Promise.resolve().then(() => require("../../pages/Stage/StageList.js")));
|
|
24
|
+
var StageDetail = require_loadable.default(() => Promise.resolve().then(() => require("../../pages/Stage/StageDetail.js")));
|
|
23
25
|
var versionElement = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_VersionProvider.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VersionPage, {}) });
|
|
24
26
|
var AppRoute = () => {
|
|
25
27
|
const { configOptions } = require_AppConfigurationProvider.useConfig();
|
|
26
28
|
const createUserEnabled = configOptions?.flags?.createUser;
|
|
27
29
|
const changePasswordEnabled = configOptions?.flags?.changePassword;
|
|
30
|
+
const stageEnabled = configOptions?.flags?.stage;
|
|
28
31
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(swr.SWRConfig, {
|
|
29
32
|
value: {
|
|
30
33
|
revalidateOnFocus: false,
|
|
@@ -51,6 +54,16 @@ var AppRoute = () => {
|
|
|
51
54
|
element: versionElement,
|
|
52
55
|
path: require_routes.Route.PACKAGE
|
|
53
56
|
}),
|
|
57
|
+
stageEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router.Route, {
|
|
58
|
+
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router.Outlet, {}),
|
|
59
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router.Route, {
|
|
60
|
+
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StageList, {}),
|
|
61
|
+
path: require_routes.Route.STAGE
|
|
62
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router.Route, {
|
|
63
|
+
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StageDetail, {}),
|
|
64
|
+
path: require_routes.Route.STAGE_DETAIL
|
|
65
|
+
})]
|
|
66
|
+
}),
|
|
54
67
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router.Route, {
|
|
55
68
|
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router.Outlet, {}),
|
|
56
69
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRoute.js","names":[],"sources":["../../../src/components/AppRoute/AppRoute.tsx"],"sourcesContent":["import React from 'react';\nimport { Outlet, Route as RouterRoute, Routes } from 'react-router';\nimport { SWRConfig } from 'swr';\n\nimport { ManifestsProvider, VersionProvider } from '../../providers';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport loadable from '../../utils/loadable';\nimport NotFound from '../NotFound';\n\nconst VersionPage = loadable(() => import('../../pages/Version'));\nconst Front = loadable(() => import('../../pages/Front'));\nconst Login = loadable(() => import('../../pages/Security/Login'));\nconst Success = loadable(() => import('../../pages/Security/Success'));\nconst AddUser = loadable(() => import('../../pages/Security/AddUser'));\nconst ChangePassword = loadable(() => import('../../pages/Security/ChangePassword'));\n\nconst versionElement = (\n <VersionProvider>\n <VersionPage />\n </VersionProvider>\n);\n\nconst AppRoute: React.FC = () => {\n const { configOptions } = useConfig();\n const createUserEnabled = configOptions?.flags?.createUser;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n return (\n <SWRConfig value={{ revalidateOnFocus: false, revalidateOnReconnect: false }}>\n <Routes>\n <RouterRoute\n element={\n <ManifestsProvider>\n <Front />\n </ManifestsProvider>\n }\n path={Route.ROOT}\n />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE} />\n <RouterRoute element={versionElement} path={Route.PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.PACKAGE} />\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<Login />} path={Route.LOGIN} />\n <RouterRoute element={<Success />} path={Route.SUCCESS} />\n {createUserEnabled && <RouterRoute element={<AddUser />} path={Route.ADD_USER} />}\n {changePasswordEnabled && (\n <RouterRoute element={<ChangePassword />} path={Route.CHANGE_PASSWORD} />\n )}\n </RouterRoute>\n <RouterRoute element={<NotFound />} path=\"*\" />\n </Routes>\n </SWRConfig>\n );\n};\n\nexport default AppRoute;\n"],"mappings":";;;;;;;;;;;;;;;;AAUA,IAAM,cAAc,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,8BAAA,CAAA,CAA6B;AAChE,IAAM,QAAQ,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,4BAAA,CAAA,CAA2B;AACxD,IAAM,QAAQ,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,+BAAA,CAAA,CAAoC;AACjE,IAAM,UAAU,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,iCAAA,CAAA,CAAsC;AACrE,IAAM,UAAU,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,iCAAA,CAAA,CAAsC;AACrE,IAAM,iBAAiB,iBAAA,cAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAe,wCAAA,CAAA,CAA6C;
|
|
1
|
+
{"version":3,"file":"AppRoute.js","names":[],"sources":["../../../src/components/AppRoute/AppRoute.tsx"],"sourcesContent":["import React from 'react';\nimport { Outlet, Route as RouterRoute, Routes } from 'react-router';\nimport { SWRConfig } from 'swr';\n\nimport { ManifestsProvider, VersionProvider } from '../../providers';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport loadable from '../../utils/loadable';\nimport NotFound from '../NotFound';\n\nconst VersionPage = loadable(() => import('../../pages/Version'));\nconst Front = loadable(() => import('../../pages/Front'));\nconst Login = loadable(() => import('../../pages/Security/Login'));\nconst Success = loadable(() => import('../../pages/Security/Success'));\nconst AddUser = loadable(() => import('../../pages/Security/AddUser'));\nconst ChangePassword = loadable(() => import('../../pages/Security/ChangePassword'));\nconst StageList = loadable(() => import('../../pages/Stage/StageList'));\nconst StageDetail = loadable(() => import('../../pages/Stage/StageDetail'));\n\nconst versionElement = (\n <VersionProvider>\n <VersionPage />\n </VersionProvider>\n);\n\nconst AppRoute: React.FC = () => {\n const { configOptions } = useConfig();\n const createUserEnabled = configOptions?.flags?.createUser;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <SWRConfig value={{ revalidateOnFocus: false, revalidateOnReconnect: false }}>\n <Routes>\n <RouterRoute\n element={\n <ManifestsProvider>\n <Front />\n </ManifestsProvider>\n }\n path={Route.ROOT}\n />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE} />\n <RouterRoute element={versionElement} path={Route.PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.PACKAGE} />\n {stageEnabled && (\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<StageList />} path={Route.STAGE} />\n <RouterRoute element={<StageDetail />} path={Route.STAGE_DETAIL} />\n </RouterRoute>\n )}\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<Login />} path={Route.LOGIN} />\n <RouterRoute element={<Success />} path={Route.SUCCESS} />\n {createUserEnabled && <RouterRoute element={<AddUser />} path={Route.ADD_USER} />}\n {changePasswordEnabled && (\n <RouterRoute element={<ChangePassword />} path={Route.CHANGE_PASSWORD} />\n )}\n </RouterRoute>\n <RouterRoute element={<NotFound />} path=\"*\" />\n </Routes>\n </SWRConfig>\n );\n};\n\nexport default AppRoute;\n"],"mappings":"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"}
|
|
@@ -18,11 +18,14 @@ var Login = loadable_default(() => import("../../pages/Security/Login.mjs"));
|
|
|
18
18
|
var Success = loadable_default(() => import("../../pages/Security/Success.mjs"));
|
|
19
19
|
var AddUser = loadable_default(() => import("../../pages/Security/AddUser.mjs"));
|
|
20
20
|
var ChangePassword = loadable_default(() => import("../../pages/Security/ChangePassword.mjs"));
|
|
21
|
+
var StageList = loadable_default(() => import("../../pages/Stage/StageList.mjs"));
|
|
22
|
+
var StageDetail = loadable_default(() => import("../../pages/Stage/StageDetail.mjs"));
|
|
21
23
|
var versionElement = /* @__PURE__ */ jsx(VersionProvider, { children: /* @__PURE__ */ jsx(VersionPage, {}) });
|
|
22
24
|
var AppRoute = () => {
|
|
23
25
|
const { configOptions } = useConfig();
|
|
24
26
|
const createUserEnabled = configOptions?.flags?.createUser;
|
|
25
27
|
const changePasswordEnabled = configOptions?.flags?.changePassword;
|
|
28
|
+
const stageEnabled = configOptions?.flags?.stage;
|
|
26
29
|
return /* @__PURE__ */ jsx(SWRConfig, {
|
|
27
30
|
value: {
|
|
28
31
|
revalidateOnFocus: false,
|
|
@@ -49,6 +52,16 @@ var AppRoute = () => {
|
|
|
49
52
|
element: versionElement,
|
|
50
53
|
path: Route$1.PACKAGE
|
|
51
54
|
}),
|
|
55
|
+
stageEnabled && /* @__PURE__ */ jsxs(Route, {
|
|
56
|
+
element: /* @__PURE__ */ jsx(Outlet, {}),
|
|
57
|
+
children: [/* @__PURE__ */ jsx(Route, {
|
|
58
|
+
element: /* @__PURE__ */ jsx(StageList, {}),
|
|
59
|
+
path: Route$1.STAGE
|
|
60
|
+
}), /* @__PURE__ */ jsx(Route, {
|
|
61
|
+
element: /* @__PURE__ */ jsx(StageDetail, {}),
|
|
62
|
+
path: Route$1.STAGE_DETAIL
|
|
63
|
+
})]
|
|
64
|
+
}),
|
|
52
65
|
/* @__PURE__ */ jsxs(Route, {
|
|
53
66
|
element: /* @__PURE__ */ jsx(Outlet, {}),
|
|
54
67
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRoute.mjs","names":[],"sources":["../../../src/components/AppRoute/AppRoute.tsx"],"sourcesContent":["import React from 'react';\nimport { Outlet, Route as RouterRoute, Routes } from 'react-router';\nimport { SWRConfig } from 'swr';\n\nimport { ManifestsProvider, VersionProvider } from '../../providers';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport loadable from '../../utils/loadable';\nimport NotFound from '../NotFound';\n\nconst VersionPage = loadable(() => import('../../pages/Version'));\nconst Front = loadable(() => import('../../pages/Front'));\nconst Login = loadable(() => import('../../pages/Security/Login'));\nconst Success = loadable(() => import('../../pages/Security/Success'));\nconst AddUser = loadable(() => import('../../pages/Security/AddUser'));\nconst ChangePassword = loadable(() => import('../../pages/Security/ChangePassword'));\n\nconst versionElement = (\n <VersionProvider>\n <VersionPage />\n </VersionProvider>\n);\n\nconst AppRoute: React.FC = () => {\n const { configOptions } = useConfig();\n const createUserEnabled = configOptions?.flags?.createUser;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n return (\n <SWRConfig value={{ revalidateOnFocus: false, revalidateOnReconnect: false }}>\n <Routes>\n <RouterRoute\n element={\n <ManifestsProvider>\n <Front />\n </ManifestsProvider>\n }\n path={Route.ROOT}\n />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE} />\n <RouterRoute element={versionElement} path={Route.PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.PACKAGE} />\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<Login />} path={Route.LOGIN} />\n <RouterRoute element={<Success />} path={Route.SUCCESS} />\n {createUserEnabled && <RouterRoute element={<AddUser />} path={Route.ADD_USER} />}\n {changePasswordEnabled && (\n <RouterRoute element={<ChangePassword />} path={Route.CHANGE_PASSWORD} />\n )}\n </RouterRoute>\n <RouterRoute element={<NotFound />} path=\"*\" />\n </Routes>\n </SWRConfig>\n );\n};\n\nexport default AppRoute;\n"],"mappings":";;;;;;;;;;;;;;AAUA,IAAM,cAAc,uBAAe,OAAO,gCAAsB;AAChE,IAAM,QAAQ,uBAAe,OAAO,8BAAoB;AACxD,IAAM,QAAQ,uBAAe,OAAO,iCAA6B;AACjE,IAAM,UAAU,uBAAe,OAAO,mCAA+B;AACrE,IAAM,UAAU,uBAAe,OAAO,mCAA+B;AACrE,IAAM,iBAAiB,uBAAe,OAAO,0CAAsC;
|
|
1
|
+
{"version":3,"file":"AppRoute.mjs","names":[],"sources":["../../../src/components/AppRoute/AppRoute.tsx"],"sourcesContent":["import React from 'react';\nimport { Outlet, Route as RouterRoute, Routes } from 'react-router';\nimport { SWRConfig } from 'swr';\n\nimport { ManifestsProvider, VersionProvider } from '../../providers';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport loadable from '../../utils/loadable';\nimport NotFound from '../NotFound';\n\nconst VersionPage = loadable(() => import('../../pages/Version'));\nconst Front = loadable(() => import('../../pages/Front'));\nconst Login = loadable(() => import('../../pages/Security/Login'));\nconst Success = loadable(() => import('../../pages/Security/Success'));\nconst AddUser = loadable(() => import('../../pages/Security/AddUser'));\nconst ChangePassword = loadable(() => import('../../pages/Security/ChangePassword'));\nconst StageList = loadable(() => import('../../pages/Stage/StageList'));\nconst StageDetail = loadable(() => import('../../pages/Stage/StageDetail'));\n\nconst versionElement = (\n <VersionProvider>\n <VersionPage />\n </VersionProvider>\n);\n\nconst AppRoute: React.FC = () => {\n const { configOptions } = useConfig();\n const createUserEnabled = configOptions?.flags?.createUser;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <SWRConfig value={{ revalidateOnFocus: false, revalidateOnReconnect: false }}>\n <Routes>\n <RouterRoute\n element={\n <ManifestsProvider>\n <Front />\n </ManifestsProvider>\n }\n path={Route.ROOT}\n />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.SCOPE_PACKAGE} />\n <RouterRoute element={versionElement} path={Route.PACKAGE_VERSION} />\n <RouterRoute element={versionElement} path={Route.PACKAGE} />\n {stageEnabled && (\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<StageList />} path={Route.STAGE} />\n <RouterRoute element={<StageDetail />} path={Route.STAGE_DETAIL} />\n </RouterRoute>\n )}\n <RouterRoute element={<Outlet />}>\n <RouterRoute element={<Login />} path={Route.LOGIN} />\n <RouterRoute element={<Success />} path={Route.SUCCESS} />\n {createUserEnabled && <RouterRoute element={<AddUser />} path={Route.ADD_USER} />}\n {changePasswordEnabled && (\n <RouterRoute element={<ChangePassword />} path={Route.CHANGE_PASSWORD} />\n )}\n </RouterRoute>\n <RouterRoute element={<NotFound />} path=\"*\" />\n </Routes>\n </SWRConfig>\n );\n};\n\nexport default AppRoute;\n"],"mappings":";;;;;;;;;;;;;;AAUA,IAAM,cAAc,uBAAe,OAAO,gCAAsB;AAChE,IAAM,QAAQ,uBAAe,OAAO,8BAAoB;AACxD,IAAM,QAAQ,uBAAe,OAAO,iCAA6B;AACjE,IAAM,UAAU,uBAAe,OAAO,mCAA+B;AACrE,IAAM,UAAU,uBAAe,OAAO,mCAA+B;AACrE,IAAM,iBAAiB,uBAAe,OAAO,0CAAsC;AACnF,IAAM,YAAY,uBAAe,OAAO,kCAA8B;AACtE,IAAM,cAAc,uBAAe,OAAO,oCAAgC;AAE1E,IAAM,iBACJ,oBAAC,iBAAD,EAAA,UACE,oBAAC,aAAD,CAAc,CAAA,EACC,CAAA;AAGnB,IAAM,iBAA2B;CAC/B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,oBAAoB,eAAe,OAAO;CAChD,MAAM,wBAAwB,eAAe,OAAO;CACpD,MAAM,eAAe,eAAe,OAAO;CAC3C,OACE,oBAAC,WAAD;EAAW,OAAO;GAAE,mBAAmB;GAAO,uBAAuB;EAAM;EACzE,UAAA,qBAAC,QAAD,EAAA,UAAA;GACE,oBAAC,OAAD;IACE,SACE,oBAAC,mBAAD,EAAA,UACE,oBAAC,OAAD,CAAQ,CAAA,EACS,CAAA;IAErB,MAAM,QAAM;GACb,CAAA;GACD,oBAAC,OAAD;IAAa,SAAS;IAAgB,MAAM,QAAM;GAAwB,CAAA;GAC1E,oBAAC,OAAD;IAAa,SAAS;IAAgB,MAAM,QAAM;GAAgB,CAAA;GAClE,oBAAC,OAAD;IAAa,SAAS;IAAgB,MAAM,QAAM;GAAkB,CAAA;GACpE,oBAAC,OAAD;IAAa,SAAS;IAAgB,MAAM,QAAM;GAAU,CAAA;GAC3D,gBACC,qBAAC,OAAD;IAAa,SAAS,oBAAC,QAAD,CAAS,CAAA;IAA/B,UAAA,CACE,oBAAC,OAAD;KAAa,SAAS,oBAAC,WAAD,CAAY,CAAA;KAAG,MAAM,QAAM;IAAQ,CAAA,GACzD,oBAAC,OAAD;KAAa,SAAS,oBAAC,aAAD,CAAc,CAAA;KAAG,MAAM,QAAM;IAAe,CAAA,CACvD;;GAEf,qBAAC,OAAD;IAAa,SAAS,oBAAC,QAAD,CAAS,CAAA;IAA/B,UAAA;KACE,oBAAC,OAAD;MAAa,SAAS,oBAAC,OAAD,CAAQ,CAAA;MAAG,MAAM,QAAM;KAAQ,CAAA;KACrD,oBAAC,OAAD;MAAa,SAAS,oBAAC,SAAD,CAAU,CAAA;MAAG,MAAM,QAAM;KAAU,CAAA;KACxD,qBAAqB,oBAAC,OAAD;MAAa,SAAS,oBAAC,SAAD,CAAU,CAAA;MAAG,MAAM,QAAM;KAAW,CAAA;KAC/E,yBACC,oBAAC,OAAD;MAAa,SAAS,oBAAC,gBAAD,CAAiB,CAAA;MAAG,MAAM,QAAM;KAAkB,CAAA;IAE/D;;GACb,oBAAC,OAAD;IAAa,SAAS,oBAAC,UAAD,CAAW,CAAA;IAAG,MAAK;GAAK,CAAA;EACxC,EAAA,CAAA;CACC,CAAA;AAEf"}
|
|
@@ -1,86 +1,9 @@
|
|
|
1
|
+
import { type UseFormReturn } from 'react-hook-form';
|
|
1
2
|
import type { LoginFormValues } from '../../utils/schemas';
|
|
2
3
|
type Options = {
|
|
3
4
|
onSuccess?: () => void;
|
|
4
5
|
};
|
|
5
|
-
export declare function useLoginForm({ onSuccess }?: Options): {
|
|
6
|
-
watch: import("react-hook-form").UseFormWatch<{
|
|
7
|
-
password: string;
|
|
8
|
-
username: string;
|
|
9
|
-
}>;
|
|
10
|
-
getValues: import("react-hook-form").UseFormGetValues<{
|
|
11
|
-
password: string;
|
|
12
|
-
username: string;
|
|
13
|
-
}>;
|
|
14
|
-
getFieldState: import("react-hook-form").UseFormGetFieldState<{
|
|
15
|
-
password: string;
|
|
16
|
-
username: string;
|
|
17
|
-
}>;
|
|
18
|
-
setError: import("react-hook-form").UseFormSetError<{
|
|
19
|
-
password: string;
|
|
20
|
-
username: string;
|
|
21
|
-
}>;
|
|
22
|
-
clearErrors: import("react-hook-form").UseFormClearErrors<{
|
|
23
|
-
password: string;
|
|
24
|
-
username: string;
|
|
25
|
-
}>;
|
|
26
|
-
setValue: import("react-hook-form").UseFormSetValue<{
|
|
27
|
-
password: string;
|
|
28
|
-
username: string;
|
|
29
|
-
}>;
|
|
30
|
-
setValues: import("react-hook-form").UseFormSetValues<{
|
|
31
|
-
password: string;
|
|
32
|
-
username: string;
|
|
33
|
-
}>;
|
|
34
|
-
trigger: import("react-hook-form").UseFormTrigger<{
|
|
35
|
-
password: string;
|
|
36
|
-
username: string;
|
|
37
|
-
}>;
|
|
38
|
-
formState: import("react-hook-form").FormState<{
|
|
39
|
-
password: string;
|
|
40
|
-
username: string;
|
|
41
|
-
}>;
|
|
42
|
-
resetField: import("react-hook-form").UseFormResetField<{
|
|
43
|
-
password: string;
|
|
44
|
-
username: string;
|
|
45
|
-
}>;
|
|
46
|
-
reset: import("react-hook-form").UseFormReset<{
|
|
47
|
-
password: string;
|
|
48
|
-
username: string;
|
|
49
|
-
}>;
|
|
50
|
-
resetDefaultValues: import("react-hook-form").UseFormResetDefaultValues<{
|
|
51
|
-
password: string;
|
|
52
|
-
username: string;
|
|
53
|
-
}>;
|
|
54
|
-
handleSubmit: import("react-hook-form").UseFormHandleSubmit<{
|
|
55
|
-
password: string;
|
|
56
|
-
username: string;
|
|
57
|
-
}, {
|
|
58
|
-
password: string;
|
|
59
|
-
username: string;
|
|
60
|
-
}>;
|
|
61
|
-
unregister: import("react-hook-form").UseFormUnregister<{
|
|
62
|
-
password: string;
|
|
63
|
-
username: string;
|
|
64
|
-
}>;
|
|
65
|
-
control: import("react-hook-form").Control<{
|
|
66
|
-
password: string;
|
|
67
|
-
username: string;
|
|
68
|
-
}, any, {
|
|
69
|
-
password: string;
|
|
70
|
-
username: string;
|
|
71
|
-
}>;
|
|
72
|
-
register: import("react-hook-form").UseFormRegister<{
|
|
73
|
-
password: string;
|
|
74
|
-
username: string;
|
|
75
|
-
}>;
|
|
76
|
-
setFocus: import("react-hook-form").UseFormSetFocus<{
|
|
77
|
-
password: string;
|
|
78
|
-
username: string;
|
|
79
|
-
}>;
|
|
80
|
-
subscribe: import("react-hook-form").UseFormSubscribe<{
|
|
81
|
-
password: string;
|
|
82
|
-
username: string;
|
|
83
|
-
}>;
|
|
6
|
+
export declare function useLoginForm({ onSuccess }?: Options): UseFormReturn<LoginFormValues> & {
|
|
84
7
|
onSubmit: (data: LoginFormValues) => Promise<void>;
|
|
85
8
|
};
|
|
86
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoginForm.js","names":[],"sources":["../../../src/components/LoginForm/useLoginForm.ts"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport { useAuth } from '../../providers/AuthProvider';\nimport type { LoginFormValues } from '../../utils/schemas';\nimport { loginSchema } from '../../utils/schemas';\n\ntype Options = {\n onSuccess?: () => void;\n};\n\nexport function useLoginForm({ onSuccess }: Options = {}) {\n const { handleLogin } = useAuth();\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const { setError } = form;\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess?.();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return {\n ...form,\n onSubmit,\n };\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,aAAa,EAAE,cAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"useLoginForm.js","names":[],"sources":["../../../src/components/LoginForm/useLoginForm.ts"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { useCallback } from 'react';\nimport { type UseFormReturn, useForm } from 'react-hook-form';\n\nimport { useAuth } from '../../providers/AuthProvider';\nimport type { LoginFormValues } from '../../utils/schemas';\nimport { loginSchema } from '../../utils/schemas';\n\ntype Options = {\n onSuccess?: () => void;\n};\n\nexport function useLoginForm({ onSuccess }: Options = {}): UseFormReturn<LoginFormValues> & {\n onSubmit: (data: LoginFormValues) => Promise<void>;\n} {\n const { handleLogin } = useAuth();\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const { setError } = form;\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess?.();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return {\n ...form,\n onSubmit,\n };\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,aAAa,EAAE,cAAuB,CAAC,GAErD;CACA,MAAM,EAAE,gBAAgB,qBAAA,QAAQ;CAEhC,MAAM,QAAA,GAAO,gBAAA,QAAA,CAAyB;EACpC,MAAM;EACN,WAAA,GAAU,wBAAA,YAAA,CAAY,gBAAA,WAAW;CACnC,CAAC;CAED,MAAM,EAAE,aAAa;CAErB,MAAM,YAAA,GAAW,MAAA,YAAA,CACf,OAAO,SAA0B;EAC/B,IAAI;GACF,MAAM,cAAc,IAAI;GACxB,YAAY;EACd,QAAQ;GACN,SAAS,QAAQ;IACf,MAAM;IAEN,SAAS;GACX,CAAC;EACH;CACF,GACA;EAAC;EAAa;EAAU;CAAS,CACnC;CAEA,OAAO;EACL,GAAG;EACH;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoginForm.mjs","names":[],"sources":["../../../src/components/LoginForm/useLoginForm.ts"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport { useAuth } from '../../providers/AuthProvider';\nimport type { LoginFormValues } from '../../utils/schemas';\nimport { loginSchema } from '../../utils/schemas';\n\ntype Options = {\n onSuccess?: () => void;\n};\n\nexport function useLoginForm({ onSuccess }: Options = {}) {\n const { handleLogin } = useAuth();\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const { setError } = form;\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess?.();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return {\n ...form,\n onSubmit,\n };\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,aAAa,EAAE,cAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"useLoginForm.mjs","names":[],"sources":["../../../src/components/LoginForm/useLoginForm.ts"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { useCallback } from 'react';\nimport { type UseFormReturn, useForm } from 'react-hook-form';\n\nimport { useAuth } from '../../providers/AuthProvider';\nimport type { LoginFormValues } from '../../utils/schemas';\nimport { loginSchema } from '../../utils/schemas';\n\ntype Options = {\n onSuccess?: () => void;\n};\n\nexport function useLoginForm({ onSuccess }: Options = {}): UseFormReturn<LoginFormValues> & {\n onSubmit: (data: LoginFormValues) => Promise<void>;\n} {\n const { handleLogin } = useAuth();\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const { setError } = form;\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess?.();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return {\n ...form,\n onSubmit,\n };\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,aAAa,EAAE,cAAuB,CAAC,GAErD;CACA,MAAM,EAAE,gBAAgB,QAAQ;CAEhC,MAAM,OAAO,QAAyB;EACpC,MAAM;EACN,UAAU,YAAY,WAAW;CACnC,CAAC;CAED,MAAM,EAAE,aAAa;CAErB,MAAM,WAAW,YACf,OAAO,SAA0B;EAC/B,IAAI;GACF,MAAM,cAAc,IAAI;GACxB,YAAY;EACd,QAAQ;GACN,SAAS,QAAQ;IACf,MAAM;IAEN,SAAS;GACX,CAAC;EACH;CACF,GACA;EAAC;EAAa;EAAU;CAAS,CACnC;CAEA,OAAO;EACL,GAAG;EACH;CACF;AACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const require_StageDetail = require("../../sections/Stage/StageDetail.js");
|
|
2
|
+
require("../../sections/Stage/index.js");
|
|
3
|
+
//#region src/pages/Stage/StageDetail.tsx
|
|
4
|
+
var StageDetail_default = require_StageDetail.default;
|
|
5
|
+
//#endregion
|
|
6
|
+
exports.default = StageDetail_default;
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=StageDetail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageDetail.js","names":[],"sources":["../../../src/pages/Stage/StageDetail.tsx"],"sourcesContent":["import { StageDetail } from '../../sections/Stage';\n\nexport default StageDetail;\n"],"mappings":";;;AAEA,IAAA,sBAAe,oBAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import StageDetail from "../../sections/Stage/StageDetail.mjs";
|
|
2
|
+
import "../../sections/Stage/index.mjs";
|
|
3
|
+
//#region src/pages/Stage/StageDetail.tsx
|
|
4
|
+
var StageDetail_default = StageDetail;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { StageDetail_default as default };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=StageDetail.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageDetail.mjs","names":[],"sources":["../../../src/pages/Stage/StageDetail.tsx"],"sourcesContent":["import { StageDetail } from '../../sections/Stage';\n\nexport default StageDetail;\n"],"mappings":";;;AAEA,IAAA,sBAAe"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const require_StageList = require("../../sections/Stage/StageList.js");
|
|
2
|
+
require("../../sections/Stage/index.js");
|
|
3
|
+
//#region src/pages/Stage/StageList.tsx
|
|
4
|
+
var StageList_default = require_StageList.default;
|
|
5
|
+
//#endregion
|
|
6
|
+
exports.default = StageList_default;
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=StageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageList.js","names":[],"sources":["../../../src/pages/Stage/StageList.tsx"],"sourcesContent":["import { StageList } from '../../sections/Stage';\n\nexport default StageList;\n"],"mappings":";;;AAEA,IAAA,oBAAe,kBAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import StageList from "../../sections/Stage/StageList.mjs";
|
|
2
|
+
import "../../sections/Stage/index.mjs";
|
|
3
|
+
//#region src/pages/Stage/StageList.tsx
|
|
4
|
+
var StageList_default = StageList;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { StageList_default as default };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=StageList.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageList.mjs","names":[],"sources":["../../../src/pages/Stage/StageList.tsx"],"sourcesContent":["import { StageList } from '../../sections/Stage';\n\nexport default StageList;\n"],"mappings":";;;AAEA,IAAA,oBAAe"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_routes = require("../../utils/routes.js");
|
|
3
|
+
require("../../utils/index.js");
|
|
4
|
+
const require_AppConfigurationProvider = require("../../providers/AppConfigurationProvider/AppConfigurationProvider.js");
|
|
2
5
|
const require_MenuItem = require("../../components/MenuItem/MenuItem.js");
|
|
3
6
|
const require_HeaderGreetings = require("./HeaderGreetings.js");
|
|
4
7
|
require("../../index.js");
|
|
@@ -8,6 +11,7 @@ let react = require("react");
|
|
|
8
11
|
react = require_runtime.__toESM(react);
|
|
9
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
13
|
let react_i18next = require("react-i18next");
|
|
14
|
+
let react_router = require("react-router");
|
|
11
15
|
let _mui_material_Menu = require("@mui/material/Menu");
|
|
12
16
|
_mui_material_Menu = require_runtime.__toESM(_mui_material_Menu);
|
|
13
17
|
let _mui_icons_material_AccountCircle = require("@mui/icons-material/AccountCircle");
|
|
@@ -16,6 +20,9 @@ _mui_icons_material_AccountCircle = require_runtime.__toESM(_mui_icons_material_
|
|
|
16
20
|
var TypedMenu = _mui_material_Menu.default;
|
|
17
21
|
var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedInMenu, onLoggedInMenuClose }) => {
|
|
18
22
|
const { t } = (0, react_i18next.useTranslation)();
|
|
23
|
+
const navigate = (0, react_router.useNavigate)();
|
|
24
|
+
const { configOptions } = require_AppConfigurationProvider.useConfig();
|
|
25
|
+
const stageEnabled = configOptions?.flags?.stage;
|
|
19
26
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_IconButton.default, {
|
|
20
27
|
color: "inherit",
|
|
21
28
|
"data-testid": "logInDialogIcon",
|
|
@@ -35,12 +42,24 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
|
|
|
35
42
|
vertical: "top",
|
|
36
43
|
horizontal: "right"
|
|
37
44
|
},
|
|
38
|
-
children: [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_HeaderGreetings.default, { username }) }),
|
|
47
|
+
stageEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, {
|
|
48
|
+
"data-testid": "stagedPackagesMenuItem",
|
|
49
|
+
id: "stagedPackagesMenuItem",
|
|
50
|
+
onClick: () => {
|
|
51
|
+
onLoggedInMenuClose();
|
|
52
|
+
navigate(require_routes.Route.STAGE);
|
|
53
|
+
},
|
|
54
|
+
children: t("stage.menu")
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, {
|
|
57
|
+
"data-testid": "logOutDialogIcon",
|
|
58
|
+
id: "logOutDialogIcon",
|
|
59
|
+
onClick: onLogout,
|
|
60
|
+
children: t("button.logout")
|
|
61
|
+
})
|
|
62
|
+
]
|
|
44
63
|
})] });
|
|
45
64
|
};
|
|
46
65
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderMenu.js","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { MenuItem } from '../../';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeaderMenu.js","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,IAAM,YAAY,mBAAA;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,MAAM,YAAA,GAAW,aAAA,YAAA,CAAY;CAC7B,MAAM,EAAE,kBAAkB,iCAAA,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,yBAAA,SAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,kCAAA,SAAD,CAAgB,CAAA;CACN,CAAA,GACZ,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,wBAAA,SAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,gBACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAAS,eAAA,MAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { Route as Route$1 } from "../../utils/routes.mjs";
|
|
2
|
+
import "../../utils/index.mjs";
|
|
3
|
+
import { useConfig } from "../../providers/AppConfigurationProvider/AppConfigurationProvider.mjs";
|
|
1
4
|
import MenuItem from "../../components/MenuItem/MenuItem.mjs";
|
|
2
5
|
import HeaderGreetings from "./HeaderGreetings.mjs";
|
|
3
6
|
import "../../index.mjs";
|
|
@@ -5,12 +8,16 @@ import IconButton from "@mui/material/IconButton";
|
|
|
5
8
|
import "react";
|
|
6
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
10
|
import { useTranslation } from "react-i18next";
|
|
11
|
+
import { useNavigate } from "react-router";
|
|
8
12
|
import Menu from "@mui/material/Menu";
|
|
9
13
|
import AccountCircle from "@mui/icons-material/AccountCircle";
|
|
10
14
|
//#region src/sections/Header/HeaderMenu.tsx
|
|
11
15
|
var TypedMenu = Menu;
|
|
12
16
|
var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedInMenu, onLoggedInMenuClose }) => {
|
|
13
17
|
const { t } = useTranslation();
|
|
18
|
+
const navigate = useNavigate();
|
|
19
|
+
const { configOptions } = useConfig();
|
|
20
|
+
const stageEnabled = configOptions?.flags?.stage;
|
|
14
21
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(IconButton, {
|
|
15
22
|
color: "inherit",
|
|
16
23
|
"data-testid": "logInDialogIcon",
|
|
@@ -30,12 +37,24 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
|
|
|
30
37
|
vertical: "top",
|
|
31
38
|
horizontal: "right"
|
|
32
39
|
},
|
|
33
|
-
children: [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx(HeaderGreetings, { username }) }),
|
|
42
|
+
stageEnabled && /* @__PURE__ */ jsx(MenuItem, {
|
|
43
|
+
"data-testid": "stagedPackagesMenuItem",
|
|
44
|
+
id: "stagedPackagesMenuItem",
|
|
45
|
+
onClick: () => {
|
|
46
|
+
onLoggedInMenuClose();
|
|
47
|
+
navigate(Route$1.STAGE);
|
|
48
|
+
},
|
|
49
|
+
children: t("stage.menu")
|
|
50
|
+
}),
|
|
51
|
+
/* @__PURE__ */ jsx(MenuItem, {
|
|
52
|
+
"data-testid": "logOutDialogIcon",
|
|
53
|
+
id: "logOutDialogIcon",
|
|
54
|
+
onClick: onLogout,
|
|
55
|
+
children: t("button.logout")
|
|
56
|
+
})
|
|
57
|
+
]
|
|
39
58
|
})] });
|
|
40
59
|
};
|
|
41
60
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderMenu.mjs","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { MenuItem } from '../../';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeaderMenu.mjs","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,YAAY;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,oBAAC,eAAD,CAAgB,CAAA;CACN,CAAA,GACZ,qBAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,oBAAC,UAAD,EAAA,UACE,oBAAC,iBAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,gBACC,oBAAC,UAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAAS,QAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,oBAAC,UAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StagePackageVersion } from './types';
|
|
3
|
+
interface Props {
|
|
4
|
+
item: StagePackageVersion;
|
|
5
|
+
/** Called after a successful approve/reject so the caller can refresh. */
|
|
6
|
+
onDone: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Approve / reject buttons with a confirmation step.
|
|
10
|
+
*
|
|
11
|
+
* Both actions are irreversible from the UI: approving publishes the version
|
|
12
|
+
* for real, rejecting deletes the staged record and its tarball.
|
|
13
|
+
*/
|
|
14
|
+
declare const StageActions: React.FC<Props>;
|
|
15
|
+
export default StageActions;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_useStage = require("./useStage.js");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
react = require_runtime.__toESM(react);
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
let react_i18next = require("react-i18next");
|
|
7
|
+
let _mui_material = require("@mui/material");
|
|
8
|
+
//#region src/sections/Stage/StageActions.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Approve / reject buttons with a confirmation step.
|
|
11
|
+
*
|
|
12
|
+
* Both actions are irreversible from the UI: approving publishes the version
|
|
13
|
+
* for real, rejecting deletes the staged record and its tarball.
|
|
14
|
+
*/
|
|
15
|
+
var StageActions = ({ item, onDone }) => {
|
|
16
|
+
const { t } = (0, react_i18next.useTranslation)();
|
|
17
|
+
const [pending, setPending] = (0, react.useState)(null);
|
|
18
|
+
const [isBusy, setIsBusy] = (0, react.useState)(false);
|
|
19
|
+
const [error, setError] = (0, react.useState)(null);
|
|
20
|
+
const close = (0, react.useCallback)(() => {
|
|
21
|
+
if (!isBusy) {
|
|
22
|
+
setPending(null);
|
|
23
|
+
setError(null);
|
|
24
|
+
}
|
|
25
|
+
}, [isBusy]);
|
|
26
|
+
const confirm = (0, react.useCallback)(async () => {
|
|
27
|
+
if (!pending) return;
|
|
28
|
+
setIsBusy(true);
|
|
29
|
+
setError(null);
|
|
30
|
+
try {
|
|
31
|
+
if (pending === "approve") await require_useStage.approveStagedVersion(item.id);
|
|
32
|
+
else await require_useStage.rejectStagedVersion(item.id);
|
|
33
|
+
setPending(null);
|
|
34
|
+
onDone();
|
|
35
|
+
} catch (err) {
|
|
36
|
+
setError(err?.message ?? t("stage.error.action"));
|
|
37
|
+
} finally {
|
|
38
|
+
setIsBusy(false);
|
|
39
|
+
}
|
|
40
|
+
}, [
|
|
41
|
+
item.id,
|
|
42
|
+
onDone,
|
|
43
|
+
pending,
|
|
44
|
+
t
|
|
45
|
+
]);
|
|
46
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
47
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.Button, {
|
|
48
|
+
color: "primary",
|
|
49
|
+
"data-testid": `stage-approve-${item.id}`,
|
|
50
|
+
disabled: isBusy,
|
|
51
|
+
onClick: () => setPending("approve"),
|
|
52
|
+
size: "small",
|
|
53
|
+
variant: "outlined",
|
|
54
|
+
children: t("stage.action.approve")
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.Button, {
|
|
57
|
+
color: "error",
|
|
58
|
+
"data-testid": `stage-reject-${item.id}`,
|
|
59
|
+
disabled: isBusy,
|
|
60
|
+
onClick: () => setPending("reject"),
|
|
61
|
+
size: "small",
|
|
62
|
+
children: t("stage.action.reject")
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material.Dialog, {
|
|
65
|
+
onClose: close,
|
|
66
|
+
open: pending !== null,
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.DialogTitle, { children: pending === "approve" ? t("stage.confirm.approveTitle") : t("stage.confirm.rejectTitle") }),
|
|
69
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material.DialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.DialogContentText, { children: pending === "approve" ? t("stage.confirm.approveBody", {
|
|
70
|
+
package: item.packageName,
|
|
71
|
+
version: item.version,
|
|
72
|
+
tag: item.tag
|
|
73
|
+
}) : t("stage.confirm.rejectBody", {
|
|
74
|
+
package: item.packageName,
|
|
75
|
+
version: item.version
|
|
76
|
+
}) }), error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.Typography, {
|
|
77
|
+
color: "error",
|
|
78
|
+
marginTop: 2,
|
|
79
|
+
role: "alert",
|
|
80
|
+
children: error
|
|
81
|
+
})] }),
|
|
82
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material.DialogActions, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.Button, {
|
|
83
|
+
disabled: isBusy,
|
|
84
|
+
onClick: close,
|
|
85
|
+
children: t("button.cancel")
|
|
86
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material.Button, {
|
|
87
|
+
color: pending === "approve" ? "primary" : "error",
|
|
88
|
+
"data-testid": "stage-confirm",
|
|
89
|
+
disabled: isBusy,
|
|
90
|
+
onClick: confirm,
|
|
91
|
+
variant: "contained",
|
|
92
|
+
children: pending === "approve" ? t("stage.action.approve") : t("stage.action.reject")
|
|
93
|
+
})] })
|
|
94
|
+
]
|
|
95
|
+
})
|
|
96
|
+
] });
|
|
97
|
+
};
|
|
98
|
+
//#endregion
|
|
99
|
+
exports.default = StageActions;
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=StageActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StageActions.js","names":[],"sources":["../../../src/sections/Stage/StageActions.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Typography,\n} from '@mui/material';\nimport React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { StagePackageVersion } from './types';\nimport { approveStagedVersion, rejectStagedVersion } from './useStage';\n\ntype PendingAction = 'approve' | 'reject' | null;\n\ninterface Props {\n item: StagePackageVersion;\n /** Called after a successful approve/reject so the caller can refresh. */\n onDone: () => void;\n}\n\n/**\n * Approve / reject buttons with a confirmation step.\n *\n * Both actions are irreversible from the UI: approving publishes the version\n * for real, rejecting deletes the staged record and its tarball.\n */\nconst StageActions: React.FC<Props> = ({ item, onDone }) => {\n const { t } = useTranslation();\n const [pending, setPending] = useState<PendingAction>(null);\n const [isBusy, setIsBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const close = useCallback(() => {\n if (!isBusy) {\n setPending(null);\n setError(null);\n }\n }, [isBusy]);\n\n const confirm = useCallback(async () => {\n if (!pending) {\n return;\n }\n setIsBusy(true);\n setError(null);\n try {\n if (pending === 'approve') {\n await approveStagedVersion(item.id);\n } else {\n await rejectStagedVersion(item.id);\n }\n setPending(null);\n onDone();\n } catch (err: any) {\n // 409 here means the version got published by another route meanwhile,\n // and the staged item is deliberately kept so it can still be inspected\n setError(err?.message ?? t('stage.error.action'));\n } finally {\n setIsBusy(false);\n }\n }, [item.id, onDone, pending, t]);\n\n return (\n <>\n <Button\n color=\"primary\"\n data-testid={`stage-approve-${item.id}`}\n disabled={isBusy}\n onClick={() => setPending('approve')}\n size=\"small\"\n variant=\"outlined\"\n >\n {t('stage.action.approve')}\n </Button>\n <Button\n color=\"error\"\n data-testid={`stage-reject-${item.id}`}\n disabled={isBusy}\n onClick={() => setPending('reject')}\n size=\"small\"\n >\n {t('stage.action.reject')}\n </Button>\n\n <Dialog onClose={close} open={pending !== null}>\n <DialogTitle>\n {pending === 'approve' ? t('stage.confirm.approveTitle') : t('stage.confirm.rejectTitle')}\n </DialogTitle>\n <DialogContent>\n <DialogContentText>\n {pending === 'approve'\n ? t('stage.confirm.approveBody', {\n package: item.packageName,\n version: item.version,\n tag: item.tag,\n })\n : t('stage.confirm.rejectBody', {\n package: item.packageName,\n version: item.version,\n })}\n </DialogContentText>\n {error && (\n <Typography color=\"error\" marginTop={2} role=\"alert\">\n {error}\n </Typography>\n )}\n </DialogContent>\n <DialogActions>\n <Button disabled={isBusy} onClick={close}>\n {t('button.cancel')}\n </Button>\n <Button\n color={pending === 'approve' ? 'primary' : 'error'}\n data-testid=\"stage-confirm\"\n disabled={isBusy}\n onClick={confirm}\n variant=\"contained\"\n >\n {pending === 'approve' ? t('stage.action.approve') : t('stage.action.reject')}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nexport default StageActions;\n"],"mappings":";;;;;;;;;;;;;;AA6BA,IAAM,gBAAiC,EAAE,MAAM,aAAa;CAC1D,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,MAAM,CAAC,SAAS,eAAA,GAAc,MAAA,SAAA,CAAwB,IAAI;CAC1D,MAAM,CAAC,QAAQ,cAAA,GAAa,MAAA,SAAA,CAAS,KAAK;CAC1C,MAAM,CAAC,OAAO,aAAA,GAAY,MAAA,SAAA,CAAwB,IAAI;CAEtD,MAAM,SAAA,GAAQ,MAAA,YAAA,OAAkB;EAC9B,IAAI,CAAC,QAAQ;GACX,WAAW,IAAI;GACf,SAAS,IAAI;EACf;CACF,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,WAAA,GAAU,MAAA,YAAA,CAAY,YAAY;EACtC,IAAI,CAAC,SACH;EAEF,UAAU,IAAI;EACd,SAAS,IAAI;EACb,IAAI;GACF,IAAI,YAAY,WACd,MAAM,iBAAA,qBAAqB,KAAK,EAAE;QAElC,MAAM,iBAAA,oBAAoB,KAAK,EAAE;GAEnC,WAAW,IAAI;GACf,OAAO;EACT,SAAS,KAAU;GAGjB,SAAS,KAAK,WAAW,EAAE,oBAAoB,CAAC;EAClD,UAAU;GACR,UAAU,KAAK;EACjB;CACF,GAAG;EAAC,KAAK;EAAI;EAAQ;EAAS;CAAC,CAAC;CAEhC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,QAAD;GACE,OAAM;GACN,eAAa,iBAAiB,KAAK;GACnC,UAAU;GACV,eAAe,WAAW,SAAS;GACnC,MAAK;GACL,SAAQ;GAEP,UAAA,EAAE,sBAAsB;EACnB,CAAA;EACR,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,QAAD;GACE,OAAM;GACN,eAAa,gBAAgB,KAAK;GAClC,UAAU;GACV,eAAe,WAAW,QAAQ;GAClC,MAAK;GAEJ,UAAA,EAAE,qBAAqB;EAClB,CAAA;EAER,iBAAA,GAAA,kBAAA,KAAA,CAAC,cAAA,QAAD;GAAQ,SAAS;GAAO,MAAM,YAAY;GAA1C,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,aAAD,EAAA,UACG,YAAY,YAAY,EAAE,4BAA4B,IAAI,EAAE,2BAA2B,EAC7E,CAAA;IACb,iBAAA,GAAA,kBAAA,KAAA,CAAC,cAAA,eAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,mBAAD,EAAA,UACG,YAAY,YACT,EAAE,6BAA6B;KAC7B,SAAS,KAAK;KACd,SAAS,KAAK;KACd,KAAK,KAAK;IACZ,CAAC,IACD,EAAE,4BAA4B;KAC5B,SAAS,KAAK;KACd,SAAS,KAAK;IAChB,CAAC,EACY,CAAA,GAClB,SACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,YAAD;KAAY,OAAM;KAAQ,WAAW;KAAG,MAAK;KAC1C,UAAA;IACS,CAAA,CAED,EAAA,CAAA;IACf,iBAAA,GAAA,kBAAA,KAAA,CAAC,cAAA,eAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,QAAD;KAAQ,UAAU;KAAQ,SAAS;KAChC,UAAA,EAAE,eAAe;IACZ,CAAA,GACR,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,QAAD;KACE,OAAO,YAAY,YAAY,YAAY;KAC3C,eAAY;KACZ,UAAU;KACV,SAAS;KACT,SAAQ;KAEP,UAAA,YAAY,YAAY,EAAE,sBAAsB,IAAI,EAAE,qBAAqB;IACtE,CAAA,CACK,EAAA,CAAA;GACT;;CACR,EAAA,CAAA;AAEN"}
|