{"version":3,"file":"static/js/9059.2dd34e8f.chunk.js","mappings":"wNAQO,SAASA,EAASC,GACvB,MAAM,OAAEC,EAAM,SAAEC,GAAaF,GAEtBG,EAAMC,IAAWC,EAAAA,EAAAA,YAkBxB,OAhBAC,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAS,EAUb,OATIN,GAAUC,GACZ,WACE,MAAMM,QAAaC,EAAAA,EAAAA,IAAUR,EAAQC,GACjCK,GAAUC,GAEZJ,GAAQ,IAAMI,GAEjB,EAND,GAQK,KACLD,GAAS,CAAK,CACf,GACA,CAACN,EAAQC,IAELC,EAAOO,IAAAA,cAACP,EAAI,MAAM,IAC3B,C,cCpBA,MAAMQ,EAAmB,CAAC,WAAY,OAAQ,QAAS,KAAM,QAUtDC,eAAeC,EAAYZ,GAChC,MAAMa,QAAmBC,EAAAA,EAAAA,IAAgCd,EAAQ,UACjE,IAAKa,EAAY,CACf,MAAME,QAAeC,EAAAA,EAAAA,IAAYhB,GACjC,OAAOe,GAAQE,QAAU,EAC3B,CA4CA,OA1CeJ,EACZK,KAAKC,KAhBV,SAA2BnB,EAAgBmB,GACzC,IAAK,MAAMC,KAAQD,EACZT,EAAiBW,SAASD,IAC7BE,QAAQC,KAAM,qBAAoBH,eAAkBpB,YAG1D,CAWMwB,CAAkBxB,EAAQmB,GAC1B,MAAM,SAAEM,EAAQ,KAAEC,EAAI,MAAEC,EAAK,GAAEC,EAAE,KAAErB,GAASY,EAE5C,OAAIZ,EACEoB,EACK,CACLE,QACEpB,IAAAA,cAACqB,EAAAA,eAAc,CACbL,SACEA,EACEhB,IAAAA,cAACX,EAAQ,CAACE,OAAQA,EAAQC,SAAUwB,IAClC,KAENE,MAAOA,GAEPlB,IAAAA,cAACX,EAAQ,CAACE,OAAQA,EAAQC,SAAUM,KAGxCmB,QAIG,CACLG,QAASpB,IAAAA,cAACX,EAAQ,CAACE,OAAQA,EAAQC,SAAUM,IAC7CmB,QAGAE,EACK,CACLC,QAASpB,IAAAA,cAACsB,EAAAA,SAAQ,CAACC,SAAO,EAACJ,GAAIA,IAC/BF,SAIJJ,QAAQW,MAAO,yBAAwBjC,IAAUmB,GAE1C,KAAI,IAEZe,OAAOC,QAGZ,CAEOxB,eAAeyB,EAAaC,GACjC,MAAMC,EAAiD,GAEvDD,EAAQE,SAASvC,IACfsC,EAASE,KAAK5B,EAAYZ,GAAQ,IAGpC,MAAMyC,QAAqCC,QAAQC,IAAIL,GAEvD,IAAIM,EAAwB,GAQ5B,OANAH,EAA6BF,SAASM,IAChCA,IACFD,EAASA,EAAOE,OAAOD,GACzB,IAGKD,CACT,CCrFO,SAASG,EAAY/C,GAC1B,MAAOiB,EAAQ+B,IAAa5C,EAAAA,EAAAA,YAyB5B,OAvBAC,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAS,EAiBb,OAhBIN,GACF,WACE,IACE,MAAMiD,QAAWrC,EAAYZ,GACzBM,GACF0C,EAAUC,EAEd,CAAE,MAAOhB,GAEPX,QAAQW,MAAM,yBAA0BA,GACpC3B,GACF0C,OAAUE,EAEd,CACD,EAbD,GAeK,KACL5C,GAAS,CAAK,CACf,GACA,CAACN,IAEGiB,CACT,C","sources":["webpack:///./src/routing/LazyView.tsx","webpack:///./src/routing/getMfRoutes.tsx","webpack:///./src/routing/useMfRoutes.ts"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { getMfView } from '@im/ui-lib/mf-utils';\n\ntype Props = {\n mfName: string;\n viewName: string;\n};\n\nexport function LazyView(props: Props) {\n const { mfName, viewName } = props;\n\n const [View, setView] = useState();\n\n useEffect(() => {\n let active = true;\n if (mfName && viewName) {\n (async () => {\n const view = await getMfView(mfName, viewName);\n if (active && view) {\n // https://github.com/facebook/react/issues/19098\n setView(() => view);\n }\n })();\n }\n return () => {\n active = false;\n };\n }, [mfName, viewName]);\n\n return View ? : null;\n}\n","import React from 'react';\nimport { Navigate, RouteObject } from 'react-router-dom';\nimport { LazyView } from './LazyView';\nimport {\n getMfExposedModule,\n getMfOutlet,\n RouteSpec,\n} from '@im/ui-lib/mf-utils';\nimport { PermissionGate } from '../auth';\n\nconst ROUTE_SPEC_PROPS = ['fallback', 'path', 'roles', 'to', 'view'];\n\nfunction validateRouteSpec(mfName: string, routeSpec: any) {\n for (const name in routeSpec) {\n if (!ROUTE_SPEC_PROPS.includes(name)) {\n console.warn(`Invalid property '${name}' found in ${mfName} routes.`);\n }\n }\n}\n\nexport async function getMfRoutes(mfName: string): Promise {\n const routeSpecs = await getMfExposedModule(mfName, 'routes');\n if (!routeSpecs) {\n const outlet = await getMfOutlet(mfName);\n return outlet?.routes || [];\n }\n\n const routes = routeSpecs\n .map((routeSpec) => {\n validateRouteSpec(mfName, routeSpec);\n const { fallback, path, roles, to, view } = routeSpec;\n\n if (view) {\n if (roles) {\n return {\n element: (\n \n ) : null\n }\n roles={roles}\n >\n \n \n ),\n path,\n };\n }\n\n return {\n element: ,\n path,\n };\n }\n if (to) {\n return {\n element: ,\n path,\n };\n }\n\n console.error(`Invalid Route Spec in ${mfName}`, routeSpec);\n\n return null;\n })\n .filter(Boolean);\n\n return routes as RouteObject[];\n}\n\nexport async function getMfsRoutes(mfNames: string[]): Promise {\n const promises: Promise[] = [];\n\n mfNames.forEach((mfName) => {\n promises.push(getMfRoutes(mfName));\n });\n\n const routeObjectsOrUndefinedArray = await Promise.all(promises);\n\n let result: RouteObject[] = [];\n\n routeObjectsOrUndefinedArray.forEach((routeObjects) => {\n if (routeObjects) {\n result = result.concat(routeObjects);\n }\n });\n\n return result;\n}\n","import { useEffect, useState } from 'react';\nimport { RouteObject } from 'react-router-dom';\n\nimport { getMfRoutes } from './getMfRoutes';\n\nexport function useMfRoutes(mfName: string) {\n const [routes, setRoutes] = useState();\n\n useEffect(() => {\n let active = true;\n if (mfName) {\n (async () => {\n try {\n const ro = await getMfRoutes(mfName);\n if (active) {\n setRoutes(ro);\n }\n } catch (error) {\n // Log error but keep the loading state\n console.error('Failed to load routes:', error);\n if (active) {\n setRoutes(undefined);\n }\n }\n })();\n }\n return () => {\n active = false;\n };\n }, [mfName]);\n\n return routes;\n}\n"],"names":["LazyView","props","mfName","viewName","View","setView","useState","useEffect","active","view","getMfView","React","ROUTE_SPEC_PROPS","async","getMfRoutes","routeSpecs","getMfExposedModule","outlet","getMfOutlet","routes","map","routeSpec","name","includes","console","warn","validateRouteSpec","fallback","path","roles","to","element","PermissionGate","Navigate","replace","error","filter","Boolean","getMfsRoutes","mfNames","promises","forEach","push","routeObjectsOrUndefinedArray","Promise","all","result","routeObjects","concat","useMfRoutes","setRoutes","ro","undefined"],"sourceRoot":""}