{"version":3,"file":"static/module-backstage.249d706a.js","mappings":"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,CACrH,CACF,CAEA,IAAIo+D,GAAY,yCACZC,GAAQ,iBACRC,GAAgB,iJAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,YACN,SAAU,CACT,KAAM,cACP,CACD,CACD,EACIC,GAAS,SACTC,GAAa,CAChB,aACA,OACA,UACD,EACIC,GAAyB,GACzBC,GAAe,CAClB,WAAY,CACX,KAAM,SACN,YAAa,+FACb,UAAW,EACX,SAAU,CACT,wBACA,oBACA,KACD,CACD,EACA,KAAM,CACL,KAAM,SACN,YAAa,8CACb,UAAW,EACX,SAAU,CACT,MACA,YACA,SACA,QACA,WACA,WACA,SACA,WACA,MACD,CACD,EACA,SAAU,CACT,KAAM,SACN,SAAU,CACT,MACD,EACA,qBAAsB,GACtB,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,6HACb,SAAU,CACT,gBACD,EACA,UAAW,CACZ,EACA,UAAW,CACV,KAAM,SACN,YAAa,4CACb,QAAW,UACX,SAAU,CACT,UACA,OACD,EACA,UAAW,CACZ,CACD,CACD,CACD,EACIC,GAAuB,CAC1B,QAASR,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,KAAMC,GACN,SAAUC,GACV,qBAAsBC,GACtB,WAAYC,EACb,EAEIE,GAAY,yCACZC,GAAQ,SACRC,GAAgB,yEAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,YACN,SAAU,CACT,KAAM,eACN,YAAa,6BACb,OAAQ,CACP,aAAc,wBACf,EACA,YAAa,CACZ,KAAM,0CACP,CACD,EACA,KAAM,CACL,KAAM,UACN,UAAW,aACX,MAAO,OACR,CACD,CACD,EACIC,GAAS,SACTC,GAAa,CAChB,aACA,OACA,UACD,EACIC,GAAyB,GACzBC,EAAe,CAClB,WAAY,CACX,KAAM,SACN,YAAa,+FACb,UAAW,EACX,SAAU,CACT,wBACA,oBACA,KACD,CACD,EACA,KAAM,CACL,KAAM,SACN,YAAa,8CACb,UAAW,EACX,SAAU,CACT,MACA,YACA,SACA,QACA,WACA,WACA,SACA,WACA,MACD,CACD,EACA,SAAU,CACT,KAAM,YACP,EACA,KAAM,CACL,KAAM,SACN,YAAa,sDACd,EACA,UAAW,CACV,KAAM,QACN,YAAa,0DACb,MAAO,CACN,KAAM,iBACP,CACD,EACA,OAAQ,CACP,KAAM,eACP,CACD,EACIC,GAAe,CAClB,QAASR,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,KAAMC,GACN,SAAUC,GACV,qBAAsBC,GACtB,WAAYC,CACb,EAEIE,GAAY,yCACZC,GAAQ,aACRC,GAAgB,0DAChBC,GAAa,CAChB,CACC,IAAK,uCACL,KAAM,2BACN,KAAM,mBACN,UAAW,gBACX,OAAQ,CACP,sBAAuB,YACxB,EACA,YAAa,CACZ,uBAAwB,YACzB,EACA,KAAM,CACL,OACA,MACD,CACD,CACD,EACIC,GAAS,SACTC,GAAW,CACd,MACD,EACIC,GAAuB,GACvB/yC,GAAa,CAChB,IAAK,CACJ,KAAM,SACN,YAAa,iXACb,SAAU,CACT,sCACD,EACA,UAAW,CACZ,EACA,KAAM,CACL,KAAM,SACN,YAAa,mbACb,SAAU,CACT,0BACD,EACA,UAAW,CACZ,EACA,KAAM,CACL,KAAM,SACN,YAAa,6HACb,SAAU,CACT,gBACD,EACA,UAAW,CACZ,EACA,UAAW,CACV,KAAM,SACN,YAAa,4CACb,QAAW,UACX,SAAU,CACT,UACA,OACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,iHACb,SAAU,CACT,oBACD,EACA,UAAW,CACZ,EACA,YAAa,CACZ,KAAM,SACN,YAAa,kFACd,EACA,OAAQ,CACP,KAAM,SACN,YAAa,qEACb,qBAAsB,GACtB,kBAAmB,CAClB,OAAQ,CACP,KAAM,QACP,CACD,CACD,EACA,YAAa,CACZ,KAAM,SACN,YAAa,mFACb,qBAAsB,GACtB,kBAAmB,CAClB,OAAQ,CACP,KAAM,QACP,CACD,CACD,EACA,KAAM,CACL,KAAM,QACN,YAAa,6FACb,MAAO,CACN,KAAM,SACN,UAAW,CACZ,CACD,EACA,MAAO,CACN,KAAM,QACN,YAAa,kNACb,MAAO,CACN,KAAM,SACN,SAAU,CACT,KACD,EACA,WAAY,CACX,IAAK,CACJ,KAAM,SACN,YAAa,kCACb,SAAU,CACT,+BACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,6CACb,SAAU,CACT,iBACD,EACA,UAAW,CACZ,EACA,KAAM,CACL,KAAM,SACN,YAAa,8DACb,SAAU,CACT,WACD,EACA,UAAW,CACZ,EACA,KAAM,CACL,KAAM,SACN,YAAa,8DACb,SAAU,CACT,UACA,gBACA,OACA,WACD,EACA,UAAW,CACZ,CACD,CACD,CACD,CACD,EACIgzC,GAAmB,CACtB,QAASP,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,KAAMC,GACN,SAAUC,GACV,qBAAsBC,GACtB,WAAY/yC,EACb,EAEIizC,GAAY,yCACZC,GAAQ,SACR96D,GAAO,SACP+6D,GAAgB,kDAChBC,GAAc,CACjB,UAAW,CACV,IAAK,aACL,KAAM,SACN,YAAa,yCACb,SAAU,CACT,OACA,YACA,MACD,EACA,qBAAsB,GACtB,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,gCACb,UAAW,CACZ,EACA,UAAW,CACV,KAAM,SACN,YAAa,8CACb,UAAW,CACZ,EACA,KAAM,CACL,KAAM,SACN,YAAa,yCACb,UAAW,CACZ,CACD,CACD,EACA,SAAU,CACT,IAAK,YACL,KAAM,SACN,YAAa,kDACb,SAAU,CACT,OACA,WACD,EACA,qBAAsB,GACtB,WAAY,CACX,KAAM,CACL,KAAM,SACN,UAAW,EACX,QAAS,SACT,YAAa,uBACd,EACA,OAAQ,CACP,KAAM,aACN,WAAY,EACb,EACA,UAAW,CACV,KAAM,SACN,UAAW,EACX,YAAa,gDACd,CACD,CACD,EACA,OAAQ,CACP,IAAK,UACL,KAAM,SACN,YAAa,mEACb,SAAU,CACV,EACA,qBAAsB,GACtB,WAAY,CACX,MAAO,CACN,KAAM,QACN,MAAO,CACN,KAAM,aACP,CACD,CACD,CACD,EACA,WAAY,CACX,IAAK,cACL,KAAM,SACN,YAAa,iDACb,SAAU,CACT,OACA,QACA,SACD,EACA,qBAAsB,GA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WAAY,wBACZ,KAAM,YACN,SAAU,CACT,KAAM,eACN,YAAa,6BACb,OAAQ,CACP,aAAc,wBACf,EACA,YAAa,CACZ,KAAM,0CACP,CACD,EACA,KAAM,CACL,KAAM,UACN,UAAW,aACX,MAAO,OACR,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,WACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,OACA,YACA,OACD,EACA,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,yBACb,SAAU,CACT,UACA,UACA,SACD,EACA,UAAW,CACZ,EACA,UAAW,CACV,KAAM,SACN,YAAa,wCACb,SAAU,CACT,eACA,aACA,YACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,qDACb,SAAU,CACT,wBACA,mBACD,EACA,UAAW,CACZ,EACA,OAAQ,CACP,KAAM,SACN,YAAa,mEACb,UAAW,CACZ,EACA,eAAgB,CACf,KAAM,SACN,YAAa,6EACb,UAAW,CACZ,EACA,aAAc,CACb,KAAM,QACN,YAAa,gFACb,MAAO,CACN,KAAM,SACN,UAAW,CACZ,CACD,EACA,aAAc,CACb,KAAM,QACN,YAAa,gFACb,MAAO,CACN,KAAM,SACN,UAAW,CACZ,CACD,EACA,UAAW,CACV,KAAM,QACN,YAAa,sFACb,MAAO,CACN,KAAM,SACN,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAAmCR,GAA+BO,EAAQ,EAEhF,IAAIE,GAAY,yCACZC,GAAQ,iBACRC,GAAgB,kJAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,SACN,SAAU,CACT,KAAM,UACN,YAAa,0BACd,EACA,KAAM,CACL,MAAO,uBACR,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,QACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,OACD,EACA,WAAY,CACX,MAAO,CACN,KAAM,SACN,YAAa,qDACb,SAAU,CACT,wBACA,mBACD,EACA,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAAgCf,GAA+Bc,EAAQ,EAE7E,IAAIE,GAAY,yCACZC,GAAQ,gBACRC,GAAgB,kNAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,QACN,SAAU,CACT,KAAM,iBACN,YAAa,yBACd,EACA,KAAM,CACL,KAAM,gBACN,QAAS,CACR,YAAa,iBACb,MAAO,6BACP,QAAS,mDACV,EACA,OAAQ,MACR,SAAU,CACT,YACA,OACD,CACD,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,OACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,OACA,UACD,EACA,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,2LACb,SAAU,CACT,OACA,gBACA,eACA,MACD,EACA,UAAW,CACZ,EACA,QAAS,CACR,KAAM,SACN,YAAa,uYACb,WAAY,CACX,YAAa,CACZ,KAAM,SACN,YAAa,6CACb,SAAU,CACT,gBACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,6CACb,SAAU,CACT,4BACD,EACA,UAAW,CACZ,EACA,QAAS,CACR,KAAM,SACN,YAAa,mDACb,SAAU,CACT,mDACD,EACA,UAAW,CACZ,CACD,CACD,EACA,OAAQ,CACP,KAAM,SACN,YAAa,4NACb,SAAU,CACT,KACD,EACA,UAAW,CACZ,EACA,SAAU,CACT,KAAM,QACN,YAAa,mSACb,MAAO,CACN,KAAM,SACN,SAAU,CACT,YACA,OACD,EACA,UAAW,CACZ,CACD,EACA,QAAS,CACR,KAAM,QACN,YAAa,6FACb,MAAO,CACN,KAAM,SACN,SAAU,CACT,MACD,EACA,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAA+BtB,GAA+BqB,EAAQ,EAE5E,IAAIE,GAAY,yCACZC,GAAQ,mBACRC,GAAgB,gFAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,WACN,SAAU,CACT,KAAM,UACP,EACA,KAAM,CACL,KAAM,MACN,QAAS,CACR,0EACA,+EACD,CACD,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,UACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACV,EACA,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,gLACb,SAAU,CACT,KACD,EACA,UAAW,CACZ,EACA,OAAQ,CACP,KAAM,SACN,YAAa,6NACb,SAAU,CACT,6BACD,EACA,UAAW,CACZ,EACA,QAAS,CACR,KAAM,QACN,YAAa,sOACb,MAAO,CACN,KAAM,SACN,SAAU,CACT,8BACA,yEACD,EACA,UAAW,CACZ,CACD,EACA,SAAU,CACT,KAAM,SACN,YAAa,sHACb,QAAW,WACX,SAAU,CACT,UACD,EACA,KAAQ,CACP,WACA,UACD,CACD,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAAkC7B,GAA+B4B,EAAQ,EAEzE,GAAoB,UACpBE,GAAoB,UACpBC,GAAwB,cACxBC,GAA2B,gBAC3BC,GAAwB,cACxBC,GAA2B,gBAC3BC,GAAsB,YACtBC,GAAyB,eACzBC,GAAqB,WACrBC,GAAoB,UACpBC,GAAqB,WACrBC,GAAsB,YACtBC,GAAmB,SACnBC,GAAoB,UAE1B,IAAIC,GAAY,yCACZC,GAAQ,mBACRC,GAAgB,8PAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,WACN,SAAU,CACT,KAAM,aACN,YAAa,uBACd,EACA,KAAM,CACL,KAAM,WACN,MAAO,wBACP,OAAQ,0BACT,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,UACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,OACA,OACD,EACA,WAAY,CACX,KAAM,CACL,KAAM,SACN,YAAa,wBACb,SAAU,CACT,WACA,YACA,SACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,oDACb,SAAU,CACT,wBACA,mBACD,EACA,UAAW,CACZ,EACA,UAAW,CACV,KAAM,QACN,YAAa,qFACb,MAAO,CACN,KAAM,SACN,UAAW,CACZ,CACD,EACA,OAAQ,CACP,KAAM,SACN,YAAa,kEACb,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAAkCjD,GAA+BgD,EAAQ,EAE/E,IAAIE,GAAY,yCACZC,GAAQ,iBACRC,GAAgB,uXAChBC,GAAa,CAChB,CACC,WAAY,wBACZ,KAAM,SACN,SAAU,CACT,KAAM,2BACN,YAAa,yCACd,EACA,KAAM,CACL,MAAO,wBACP,OAAQ,SACT,CACD,CACD,EACIC,GAAU,CACb,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,QACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,OACD,EACA,WAAY,CACX,MAAO,CACN,KAAM,SACN,YAAa,qDACb,SAAU,CACT,wBACA,mBACD,EACA,UAAW,CACZ,EACA,OAAQ,CACP,KAAM,SACN,YAAa,gEACb,SAAU,CACT,SACD,EACA,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,EACIC,GAAW,CACd,QAASL,GACT,IAAKC,GACL,YAAaC,GACb,SAAUC,GACV,MAAOC,EACR,EAEA,MAAME,GAAgCxD,GAA+BuD,EAAQ,EAE7E,IAAIE,GAAU,yCACVC,GAAM,eACN3gE,GAAc,8SACd4gE,GAAW,CACd,CACC,WAAY,wBACZ,KAAM,OACN,SAAU,CACT,KAAM,MACP,EACA,KAAM,CACL,QAAS,CACR,YAAa,YACb,MAAO,wBACP,QAAS,qDACV,EACA,SAAU,CACT,SACA,WACD,CACD,CACD,CACD,EACIC,GAAQ,CACX,CACC,KAAM,QACP,EACA,CACC,KAAM,SACN,SAAU,CACT,MACD,EACA,WAAY,CACX,WAAY,CACX,KAAQ,CACP,wBACA,sBACD,CACD,EACA,KAAM,CACL,KAAQ,CACP,MACD,CACD,EACA,KAAM,CACL,KAAM,SACN,SAAU,CACT,UACD,EACA,WAAY,CACX,QAAS,CACR,KAAM,SACN,YAAa,wYACb,WAAY,CACX,YAAa,CACZ,KAAM,SACN,YAAa,6CACb,SAAU,CACT,WACD,EACA,UAAW,CACZ,EACA,MAAO,CACN,KAAM,SACN,YAAa,2CACb,SAAU,CACT,uBACD,EACA,UAAW,CACZ,EACA,QAAS,CACR,KAAM,SACN,YAAa,iDACb,SAAU,CACT,qDACD,EACA,UAAW,CACZ,CACD,CACD,EACA,SAAU,CACT,KAAM,QACN,YAAa,mTACb,MAAO,CACN,KAAM,SACN,SAAU,CACT,SACA,WACD,EACA,UAAW,CACZ,CACD,CACD,CACD,CACD,CACD,CACD,EACIn4D,GAAS,CACZ,QAASg4D,GACT,IAAKC,GACL,YAAa3gE,GACb,SAAU4gE,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","sources":["webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-common/node_modules/uuid/dist/esm-browser/native.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-common/node_modules/uuid/dist/esm-browser/rng.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-common/node_modules/uuid/dist/esm-browser/stringify.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-common/node_modules/uuid/dist/esm-browser/v4.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-common/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-permission-react/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/app-defaults/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/config/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-app-api/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/dist/esm/translation-p8_bRQW1.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/remark-parse/lib/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/unist-util-visit/lib/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/react-markdown/lib/rehype-filter.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/space-separated-tokens/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/react-markdown/lib/uri-transformer.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/react-markdown/lib/ast-to-react.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/react-markdown/lib/react-markdown.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/qs/lib/formats.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/qs/lib/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/qs/lib/parse.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/qs/lib/stringify.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/qs/lib/utils.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-plugin-api/dist/alpha.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-plugin-api/dist/esm/StorageApi-DgJQFdRp.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-plugin-api/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/errors/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/errors/node_modules/serialize-error/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/catalog-model/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/dist/esm/useEntity-DuPQWZpR.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/identity.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/visit.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/doc/directives.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/doc/anchors.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/doc/applyReviver.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/toJS.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/Node.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/Alias.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/Scalar.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/doc/createNode.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/Collection.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyComment.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/foldFlowLines.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyString.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringify.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyPair.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/log.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/Pair.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyCollection.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/YAMLMap.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/common/map.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/nodes/YAMLSeq.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/common/seq.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/common/string.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/common/null.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/core/bool.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyNumber.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/core/float.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/core/int.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/core/schema.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/json/schema.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/tags.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/schema/Schema.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/stringify/stringifyDocument.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/doc/Document.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/errors.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-props.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/util-contains-newline.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/util-map-includes.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-block-map.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-block-seq.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-end.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/compose-collection.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/compose-scalar.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/compose-node.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/compose-doc.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/compose/composer.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/parse/cst-scalar.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/parse/cst-visit.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/parse/cst.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/parse/lexer.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/parse/parser.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/dist/public-api.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/node_modules/yaml/browser/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-catalog-react/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-user-settings/dist/esm/SettingsPage-CeSuiezj.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/plugin-user-settings/dist/esm/translation-CSRNIDi0.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/theme/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/version-bridge/dist/index.esm.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selector.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/select.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/array.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selectorAll.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/selectAll.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/matcher.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/selectChild.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/selectChildren.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/filter.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/sparse.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/enter.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/constant.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/data.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/exit.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/join.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/merge.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/order.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/sort.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/call.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/nodes.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/node.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/size.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/empty.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/each.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/namespaces.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/namespace.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/attr.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/window.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/style.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/property.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/classed.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/text.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/html.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/raise.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/lower.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/creator.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/append.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/insert.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/remove.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/clone.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/datum.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/on.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/dispatch.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/iterator.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-selection/src/selection/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-dispatch/src/dispatch.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-timer/src/timer.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-timer/src/timeout.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/schedule.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/interrupt.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/selection/interrupt.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/tween.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-color/src/define.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-color/src/color.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/interpolate.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/attr.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/attrTween.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/delay.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/duration.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/ease.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/easeVarying.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/filter.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/merge.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/on.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/remove.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/select.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/selectAll.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/selection.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/style.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/styleTween.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/text.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/textTween.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/transition.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/end.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/transition/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-ease/src/cubic.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/selection/transition.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-transition/src/selection/index.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-zoom/src/transform.js","webpack://@spotify-confidence/app/../../node_modules/@backstage/core-components/node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { ResponseError } from '@backstage/errors';\nimport fetch from 'cross-fetch';\nimport * as uuid from 'uuid';\nimport { z } from 'zod';\n\nvar AuthorizeResult = /* @__PURE__ */ ((AuthorizeResult2) => {\n AuthorizeResult2[\"DENY\"] = \"DENY\";\n AuthorizeResult2[\"ALLOW\"] = \"ALLOW\";\n AuthorizeResult2[\"CONDITIONAL\"] = \"CONDITIONAL\";\n return AuthorizeResult2;\n})(AuthorizeResult || {});\n\nfunction isPermission(permission, comparedPermission) {\n return permission.name === comparedPermission.name;\n}\nfunction isResourcePermission(permission, resourceType) {\n if (!(\"resourceType\" in permission)) {\n return false;\n }\n return !resourceType || permission.resourceType === resourceType;\n}\nfunction isCreatePermission(permission) {\n return permission.attributes.action === \"create\";\n}\nfunction isReadPermission(permission) {\n return permission.attributes.action === \"read\";\n}\nfunction isUpdatePermission(permission) {\n return permission.attributes.action === \"update\";\n}\nfunction isDeletePermission(permission) {\n return permission.attributes.action === \"delete\";\n}\nfunction toPermissionEvaluator(permissionAuthorizer) {\n return {\n authorize: async (requests, options) => {\n const response = await permissionAuthorizer.authorize(requests, options);\n return response;\n },\n authorizeConditional(requests, options) {\n const parsedRequests = requests;\n return permissionAuthorizer.authorize(parsedRequests, options);\n }\n };\n}\n\nfunction createPermission({\n name,\n attributes,\n resourceType\n}) {\n if (resourceType) {\n return {\n type: \"resource\",\n name,\n attributes,\n resourceType\n };\n }\n return {\n type: \"basic\",\n name,\n attributes\n };\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst permissionCriteriaSchema = z.lazy(\n () => z.object({\n rule: z.string(),\n resourceType: z.string(),\n params: z.record(z.any()).optional()\n }).or(z.object({ anyOf: z.array(permissionCriteriaSchema).nonempty() })).or(z.object({ allOf: z.array(permissionCriteriaSchema).nonempty() })).or(z.object({ not: permissionCriteriaSchema }))\n);\nconst authorizePermissionResponseSchema = z.object({\n result: z.literal(AuthorizeResult.ALLOW).or(z.literal(AuthorizeResult.DENY))\n});\nconst queryPermissionResponseSchema = z.union([\n z.object({\n result: z.literal(AuthorizeResult.ALLOW).or(z.literal(AuthorizeResult.DENY))\n }),\n z.object({\n result: z.literal(AuthorizeResult.CONDITIONAL),\n pluginId: z.string(),\n resourceType: z.string(),\n conditions: permissionCriteriaSchema\n })\n]);\nconst responseSchema = (itemSchema, ids) => z.object({\n items: z.array(\n z.intersection(\n z.object({\n id: z.string()\n }),\n itemSchema\n )\n ).refine(\n (items) => items.length === ids.size && items.every(({ id }) => ids.has(id)),\n {\n message: \"Items in response do not match request\"\n }\n )\n});\nclass PermissionClient {\n constructor(options) {\n __publicField(this, \"enabled\");\n __publicField(this, \"discovery\");\n var _a;\n this.discovery = options.discovery;\n this.enabled = (_a = options.config.getOptionalBoolean(\"permission.enabled\")) != null ? _a : false;\n }\n /**\n * {@inheritdoc PermissionEvaluator.authorize}\n */\n async authorize(requests, options) {\n return this.makeRequest(\n requests,\n authorizePermissionResponseSchema,\n options\n );\n }\n /**\n * {@inheritdoc PermissionEvaluator.authorizeConditional}\n */\n async authorizeConditional(queries, options) {\n return this.makeRequest(queries, queryPermissionResponseSchema, options);\n }\n async makeRequest(queries, itemSchema, options) {\n if (!this.enabled) {\n return queries.map((_) => ({ result: AuthorizeResult.ALLOW }));\n }\n const request = {\n items: queries.map((query) => ({\n id: uuid.v4(),\n ...query\n }))\n };\n const permissionApi = await this.discovery.getBaseUrl(\"permission\");\n const response = await fetch(`${permissionApi}/authorize`, {\n method: \"POST\",\n body: JSON.stringify(request),\n headers: {\n ...this.getAuthorizationHeader(options == null ? void 0 : options.token),\n \"content-type\": \"application/json\"\n }\n });\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n const responseBody = await response.json();\n const parsedResponse = responseSchema(\n itemSchema,\n new Set(request.items.map(({ id }) => id))\n ).parse(responseBody);\n const responsesById = parsedResponse.items.reduce((acc, r) => {\n acc[r.id] = r;\n return acc;\n }, {});\n return request.items.map((query) => responsesById[query.id]);\n }\n getAuthorizationHeader(token) {\n return token ? { Authorization: `Bearer ${token}` } : {};\n }\n}\n\nexport { AuthorizeResult, PermissionClient, createPermission, isCreatePermission, isDeletePermission, isPermission, isReadPermission, isResourcePermission, isUpdatePermission, toPermissionEvaluator };\n//# sourceMappingURL=index.esm.js.map\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport { createApiRef, useApi, useApp } from '@backstage/core-plugin-api';\nimport { PermissionClient, isResourcePermission, AuthorizeResult } from '@backstage/plugin-permission-common';\nimport useSWR from 'swr';\n\nconst permissionApiRef = createApiRef({\n id: \"plugin.permission.api\"\n});\n\nclass IdentityPermissionApi {\n constructor(permissionClient, identityApi) {\n this.permissionClient = permissionClient;\n this.identityApi = identityApi;\n }\n static create(options) {\n const { config, discovery, identity } = options;\n const permissionClient = new PermissionClient({ discovery, config });\n return new IdentityPermissionApi(permissionClient, identity);\n }\n async authorize(request) {\n const response = await this.permissionClient.authorize(\n [request],\n await this.identityApi.getCredentials()\n );\n return response[0];\n }\n}\n\nfunction usePermission(input) {\n const permissionApi = useApi(permissionApiRef);\n const { data, error } = useSWR(input, async (args) => {\n if (isResourcePermission(args.permission) && !args.resourceRef) {\n return AuthorizeResult.DENY;\n }\n const { result } = await permissionApi.authorize(args);\n return result;\n });\n if (error) {\n return { error, loading: false, allowed: false };\n }\n if (data === void 0) {\n return { loading: true, allowed: false };\n }\n return { loading: false, allowed: data === AuthorizeResult.ALLOW };\n}\n\nconst PermissionedRoute = (props) => {\n const { permission, resourceRef, errorComponent, ...otherProps } = props;\n const permissionResult = usePermission(\n isResourcePermission(permission) ? { permission, resourceRef } : { permission }\n );\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n let shownElement = errorComponent === void 0 ? /* @__PURE__ */ React.createElement(NotFoundErrorPage, null) : errorComponent;\n if (permissionResult.loading) {\n shownElement = null;\n } else if (permissionResult.allowed) {\n shownElement = props.element;\n }\n return /* @__PURE__ */ React.createElement(Route, { ...otherProps, element: shownElement });\n};\n\nfunction RequirePermission(props) {\n const { permission, resourceRef } = props;\n const permissionResult = usePermission(\n isResourcePermission(permission) ? { permission, resourceRef } : { permission }\n );\n const app = useApp();\n if (permissionResult.loading) {\n return null;\n } else if (permissionResult.allowed) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, props.children);\n }\n if (props.errorPage) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, props.errorPage);\n }\n const { NotFoundErrorPage } = app.getComponents();\n return /* @__PURE__ */ React.createElement(NotFoundErrorPage, null);\n}\n\nexport { IdentityPermissionApi, PermissionedRoute, RequirePermission, permissionApiRef, usePermission };\n//# sourceMappingURL=index.esm.js.map\n","import { UrlPatternDiscovery, AlertApiForwarder, NoOpAnalyticsApi, ErrorAlerter, ErrorApiForwarder, UnhandledErrorForwarder, WebStorage, createFetchApi, FetchMiddlewares, OAuthRequestManager, GoogleAuth, MicrosoftAuth, GithubAuth, OktaAuth, GitlabAuth, OneLoginAuth, BitbucketAuth, BitbucketServerAuth, AtlassianAuth, VMwareCloudAuth, createSpecializedApp } from '@backstage/core-app-api';\nimport { createApiFactory, discoveryApiRef, configApiRef, alertApiRef, analyticsApiRef, errorApiRef, storageApiRef, fetchApiRef, identityApiRef, oauthRequestApiRef, googleAuthApiRef, microsoftAuthApiRef, githubAuthApiRef, oktaAuthApiRef, gitlabAuthApiRef, oneloginAuthApiRef, bitbucketAuthApiRef, bitbucketServerAuthApiRef, atlassianAuthApiRef, vmwareCloudAuthApiRef } from '@backstage/core-plugin-api';\nimport { permissionApiRef, IdentityPermissionApi } from '@backstage/plugin-permission-react';\nimport React from 'react';\nimport Button from '@material-ui/core/Button';\nimport { Progress, ErrorPage, ErrorPanel } from '@backstage/core-components';\nimport { BrowserRouter, useInRouterContext, MemoryRouter } from 'react-router-dom';\nimport MuiApartmentIcon from '@material-ui/icons/Apartment';\nimport MuiBrokenImageIcon from '@material-ui/icons/BrokenImage';\nimport MuiCategoryIcon from '@material-ui/icons/Category';\nimport MuiCreateNewFolderIcon from '@material-ui/icons/CreateNewFolder';\nimport MuiSubjectIcon from '@material-ui/icons/Subject';\nimport MuiSearchIcon from '@material-ui/icons/Search';\nimport MuiChatIcon from '@material-ui/icons/Chat';\nimport MuiDashboardIcon from '@material-ui/icons/Dashboard';\nimport MuiDocsIcon from '@material-ui/icons/Description';\nimport MuiEmailIcon from '@material-ui/icons/Email';\nimport MuiExtensionIcon from '@material-ui/icons/Extension';\nimport MuiGitHubIcon from '@material-ui/icons/GitHub';\nimport MuiHelpIcon from '@material-ui/icons/Help';\nimport MuiLocationOnIcon from '@material-ui/icons/LocationOn';\nimport MuiMemoryIcon from '@material-ui/icons/Memory';\nimport MuiMenuBookIcon from '@material-ui/icons/MenuBook';\nimport MuiPeopleIcon from '@material-ui/icons/People';\nimport MuiPersonIcon from '@material-ui/icons/Person';\nimport MuiWarningIcon from '@material-ui/icons/Warning';\nimport MuiStorageIcon from '@material-ui/icons/Storage';\nimport MuiFeaturedPlayListIcon from '@material-ui/icons/FeaturedPlayList';\nimport { UnifiedThemeProvider, themes as themes$1 } from '@backstage/theme';\nimport DarkIcon from '@material-ui/icons/Brightness2';\nimport LightIcon from '@material-ui/icons/WbSunny';\n\nconst apis = [\n createApiFactory({\n api: discoveryApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) => UrlPatternDiscovery.compile(\n `${configApi.getString(\"backend.baseUrl\")}/api/{{ pluginId }}`\n )\n }),\n createApiFactory({\n api: alertApiRef,\n deps: {},\n factory: () => new AlertApiForwarder()\n }),\n createApiFactory({\n api: analyticsApiRef,\n deps: {},\n factory: () => new NoOpAnalyticsApi()\n }),\n createApiFactory({\n api: errorApiRef,\n deps: { alertApi: alertApiRef },\n factory: ({ alertApi }) => {\n const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());\n UnhandledErrorForwarder.forward(errorApi, { hidden: false });\n return errorApi;\n }\n }),\n createApiFactory({\n api: storageApiRef,\n deps: { errorApi: errorApiRef },\n factory: ({ errorApi }) => WebStorage.create({ errorApi })\n }),\n createApiFactory({\n api: fetchApiRef,\n deps: {\n configApi: configApiRef,\n identityApi: identityApiRef,\n discoveryApi: discoveryApiRef\n },\n factory: ({ configApi, identityApi, discoveryApi }) => {\n return createFetchApi({\n middleware: [\n FetchMiddlewares.resolvePluginProtocol({\n discoveryApi\n }),\n FetchMiddlewares.injectIdentityAuth({\n identityApi,\n config: configApi\n })\n ]\n });\n }\n }),\n createApiFactory({\n api: oauthRequestApiRef,\n deps: {},\n factory: () => new OAuthRequestManager()\n }),\n createApiFactory({\n api: googleAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => GoogleAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: microsoftAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => MicrosoftAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: githubAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => GithubAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: [\"read:user\"],\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: oktaAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => OktaAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: gitlabAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => GitlabAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: oneloginAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => OneLoginAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: bitbucketAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => BitbucketAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: [\"account\"],\n environment: configApi.getOptionalString(\"auth.environment\")\n })\n }),\n createApiFactory({\n api: bitbucketServerAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => BitbucketServerAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: [\"REPO_READ\"]\n })\n }),\n createApiFactory({\n api: atlassianAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return AtlassianAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n });\n }\n }),\n createApiFactory({\n api: vmwareCloudAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return VMwareCloudAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString(\"auth.environment\")\n });\n }\n }),\n createApiFactory({\n api: permissionApiRef,\n deps: {\n discovery: discoveryApiRef,\n identity: identityApiRef,\n config: configApiRef\n },\n factory: ({ config, discovery, identity }) => IdentityPermissionApi.create({ config, discovery, identity })\n })\n];\n\nfunction OptionallyWrapInRouter({ children }) {\n if (useInRouterContext()) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, children);\n }\n return /* @__PURE__ */ React.createElement(MemoryRouter, null, children);\n}\nconst DefaultNotFoundPage = () => /* @__PURE__ */ React.createElement(ErrorPage, { status: \"404\", statusMessage: \"PAGE NOT FOUND\" });\nconst DefaultBootErrorPage = ({ step, error }) => {\n let message = \"\";\n if (step === \"load-config\") {\n message = `The configuration failed to load, someone should have a look at this error: ${error.message}`;\n } else if (step === \"load-chunk\") {\n message = `Lazy loaded chunk failed to load, try to reload the page: ${error.message}`;\n }\n return /* @__PURE__ */ React.createElement(OptionallyWrapInRouter, null, /* @__PURE__ */ React.createElement(ErrorPage, { statusMessage: message, stack: error.stack }));\n};\nconst DefaultErrorBoundaryFallback = ({\n error,\n resetError,\n plugin\n}) => {\n return /* @__PURE__ */ React.createElement(\n ErrorPanel,\n {\n title: `Error in ${plugin == null ? void 0 : plugin.getId()}`,\n defaultExpanded: true,\n error\n },\n /* @__PURE__ */ React.createElement(Button, { variant: \"outlined\", onClick: resetError }, \"Retry\")\n );\n};\nconst components = {\n Progress,\n Router: BrowserRouter,\n NotFoundErrorPage: DefaultNotFoundPage,\n BootErrorPage: DefaultBootErrorPage,\n ErrorBoundaryFallback: DefaultErrorBoundaryFallback\n};\n\nconst icons = {\n brokenImage: MuiBrokenImageIcon,\n // To be confirmed: see https://github.com/backstage/backstage/issues/4970\n catalog: MuiMenuBookIcon,\n scaffolder: MuiCreateNewFolderIcon,\n techdocs: MuiSubjectIcon,\n search: MuiSearchIcon,\n chat: MuiChatIcon,\n dashboard: MuiDashboardIcon,\n docs: MuiDocsIcon,\n email: MuiEmailIcon,\n github: MuiGitHubIcon,\n group: MuiPeopleIcon,\n help: MuiHelpIcon,\n \"kind:api\": MuiExtensionIcon,\n \"kind:component\": MuiMemoryIcon,\n \"kind:domain\": MuiApartmentIcon,\n \"kind:group\": MuiPeopleIcon,\n \"kind:location\": MuiLocationOnIcon,\n \"kind:system\": MuiCategoryIcon,\n \"kind:user\": MuiPersonIcon,\n \"kind:resource\": MuiStorageIcon,\n \"kind:template\": MuiFeaturedPlayListIcon,\n user: MuiPersonIcon,\n warning: MuiWarningIcon\n};\n\nconst themes = [\n {\n id: \"light\",\n title: \"Light Theme\",\n variant: \"light\",\n icon: /* @__PURE__ */ React.createElement(LightIcon, null),\n Provider: ({ children }) => /* @__PURE__ */ React.createElement(UnifiedThemeProvider, { theme: themes$1.light, children })\n },\n {\n id: \"dark\",\n title: \"Dark Theme\",\n variant: \"dark\",\n icon: /* @__PURE__ */ React.createElement(DarkIcon, null),\n Provider: ({ children }) => /* @__PURE__ */ React.createElement(UnifiedThemeProvider, { theme: themes$1.dark, children })\n }\n];\n\nfunction createApp(options) {\n var _a, _b, _c, _d;\n return createSpecializedApp({\n ...options,\n apis: (_a = options == null ? void 0 : options.apis) != null ? _a : [],\n bindRoutes: options == null ? void 0 : options.bindRoutes,\n components: {\n ...components,\n ...options == null ? void 0 : options.components\n },\n configLoader: options == null ? void 0 : options.configLoader,\n defaultApis: apis,\n icons: {\n ...icons,\n ...options == null ? void 0 : options.icons\n },\n plugins: (_b = options == null ? void 0 : options.plugins) != null ? _b : [],\n featureFlags: (_c = options == null ? void 0 : options.featureFlags) != null ? _c : [],\n themes: (_d = options == null ? void 0 : options.themes) != null ? _d : themes\n });\n}\n\nexport { createApp };\n//# sourceMappingURL=index.esm.js.map\n","import { InputError } from '@backstage/errors';\n\nconst propsOfHumanDuration = [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n];\nfunction readDurationFromConfig(config, options) {\n let root;\n let found = false;\n const result = {};\n try {\n root = (options == null ? void 0 : options.key) ? config.getConfig(options.key) : config;\n for (const prop of propsOfHumanDuration) {\n const value = root.getOptionalNumber(prop);\n if (value !== void 0) {\n result[prop] = value;\n found = true;\n }\n }\n } catch (error) {\n throw new InputError(`Failed to read duration from config, ${error}`);\n }\n try {\n if (!found) {\n const good = propsOfHumanDuration.map((p) => `'${p}'`).join(\", \");\n throw new Error(`Needs one or more of ${good}`);\n }\n const invalidProps = root.keys().filter((prop) => !propsOfHumanDuration.includes(prop));\n if (invalidProps.length) {\n const what = invalidProps.length === 1 ? \"property\" : \"properties\";\n const bad = invalidProps.map((p) => `'${p}'`).join(\", \");\n const good = propsOfHumanDuration.map((p) => `'${p}'`).join(\", \");\n throw new Error(\n `Unknown ${what} ${bad}; expected one or more of ${good}`\n );\n }\n } catch (error) {\n let prefix = \"Failed to read duration from config\";\n if (options == null ? void 0 : options.key) {\n prefix += ` at '${options.key}'`;\n }\n throw new InputError(`${prefix}, ${error}`);\n }\n return result;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i;\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction cloneDeep(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(cloneDeep);\n }\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [k, cloneDeep(v)])\n );\n}\nfunction merge(into, from) {\n if (into === null) {\n return void 0;\n }\n if (into === void 0) {\n return from === void 0 ? void 0 : merge(from);\n }\n if (typeof into !== \"object\" || Array.isArray(into)) {\n return into;\n }\n const fromObj = isObject(from) ? from : {};\n const out = {};\n for (const key of /* @__PURE__ */ new Set([...Object.keys(into), ...Object.keys(fromObj)])) {\n const val = merge(into[key], fromObj[key]);\n if (val !== void 0) {\n out[key] = val;\n }\n }\n return out;\n}\nfunction typeOf(value) {\n if (value === null) {\n return \"null\";\n } else if (Array.isArray(value)) {\n return \"array\";\n }\n const type = typeof value;\n if (type === \"number\" && isNaN(value)) {\n return \"nan\";\n }\n if (type === \"string\" && value === \"\") {\n return \"empty-string\";\n }\n return type;\n}\nconst errors = {\n type(key, context, typeName, expected) {\n return `Invalid type in config for key '${key}' in '${context}', got ${typeName}, wanted ${expected}`;\n },\n missing(key, context) {\n return `Missing required config value at '${key}' in '${context}'`;\n },\n convert(key, context, expected) {\n return `Unable to convert config value for key '${key}' in '${context}' to a ${expected}`;\n }\n};\nclass ConfigReader {\n constructor(data, context = \"mock-config\", fallback, prefix = \"\") {\n this.data = data;\n this.context = context;\n this.fallback = fallback;\n this.prefix = prefix;\n /**\n * A set of key paths that where removed from the config due to not being visible.\n *\n * This was added as a mutable private member to avoid changes to the public API.\n * Its only purpose of this is to warn users of missing visibility when running\n * the frontend in development mode.\n */\n __publicField(this, \"filteredKeys\");\n __publicField(this, \"notifiedFilteredKeys\", /* @__PURE__ */ new Set());\n }\n /**\n * Instantiates the config reader from a list of application config objects.\n */\n static fromConfigs(configs) {\n if (configs.length === 0) {\n return new ConfigReader(void 0);\n }\n return configs.reduce(\n (previousReader, { data, context, filteredKeys, deprecatedKeys }) => {\n const reader = new ConfigReader(data, context, previousReader);\n reader.filteredKeys = filteredKeys;\n if (deprecatedKeys) {\n for (const { key, description } of deprecatedKeys) {\n console.warn(\n `The configuration key '${key}' of ${context} is deprecated and may be removed soon. ${description || \"\"}`\n );\n }\n }\n return reader;\n },\n void 0\n );\n }\n /** {@inheritdoc Config.has} */\n has(key) {\n var _a, _b;\n const value = this.readValue(key);\n if (value === null) {\n return false;\n }\n if (value !== void 0) {\n return true;\n }\n return (_b = (_a = this.fallback) == null ? void 0 : _a.has(key)) != null ? _b : false;\n }\n /** {@inheritdoc Config.keys} */\n keys() {\n var _a, _b;\n const localKeys = this.data ? Object.keys(this.data) : [];\n const fallbackKeys = (_b = (_a = this.fallback) == null ? void 0 : _a.keys()) != null ? _b : [];\n return [.../* @__PURE__ */ new Set([...localKeys, ...fallbackKeys])].filter(\n (k) => {\n var _a2;\n return ((_a2 = this.data) == null ? void 0 : _a2[k]) !== null;\n }\n );\n }\n /** {@inheritdoc Config.get} */\n get(key) {\n const value = this.getOptional(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key != null ? key : \"\"), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptional} */\n getOptional(key) {\n var _a, _b;\n const value = cloneDeep(this.readValue(key));\n const fallbackValue = (_a = this.fallback) == null ? void 0 : _a.getOptional(key);\n if (value === null) {\n return void 0;\n }\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n if (fallbackValue === void 0 && key) {\n const fullKey = this.fullKey(key);\n if (((_b = this.filteredKeys) == null ? void 0 : _b.includes(fullKey)) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n }\n return merge(fallbackValue);\n } else if (fallbackValue === void 0) {\n return merge(value);\n }\n return merge(value, fallbackValue);\n }\n /** {@inheritdoc Config.getConfig} */\n getConfig(key) {\n const value = this.getOptionalConfig(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfig} */\n getOptionalConfig(key) {\n var _a;\n const value = this.readValue(key);\n const fallbackConfig = (_a = this.fallback) == null ? void 0 : _a.getOptionalConfig(key);\n if (isObject(value)) {\n return this.copy(value, key, fallbackConfig);\n }\n if (value === null) {\n return void 0;\n }\n if (value !== void 0) {\n throw new TypeError(\n errors.type(this.fullKey(key), this.context, typeOf(value), \"object\")\n );\n }\n return fallbackConfig;\n }\n /** {@inheritdoc Config.getConfigArray} */\n getConfigArray(key) {\n const value = this.getOptionalConfigArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfigArray} */\n getOptionalConfigArray(key) {\n var _a;\n const configs = this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"object-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (!isObject(value)) {\n return { expected: \"object-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n if (!configs) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (((_a = this.filteredKeys) == null ? void 0 : _a.some((k) => k.startsWith(fullKey))) && !this.notifiedFilteredKeys.has(key)) {\n this.notifiedFilteredKeys.add(key);\n console.warn(\n `Failed to read configuration array at '${key}' as it does not have any visible elements. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return void 0;\n }\n return configs.map((obj, index) => this.copy(obj, `${key}[${index}]`));\n }\n /** {@inheritdoc Config.getNumber} */\n getNumber(key) {\n const value = this.getOptionalNumber(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalNumber} */\n getOptionalNumber(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"number\" || typeof val === \"string\" || { expected: \"number\" }\n );\n if (typeof value === \"number\" || value === void 0) {\n return value;\n }\n const number = Number(value);\n if (!Number.isFinite(number)) {\n throw new Error(\n errors.convert(this.fullKey(key), this.context, \"number\")\n );\n }\n return number;\n }\n /** {@inheritdoc Config.getBoolean} */\n getBoolean(key) {\n const value = this.getOptionalBoolean(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalBoolean} */\n getOptionalBoolean(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"boolean\" || typeof val === \"number\" || typeof val === \"string\" || { expected: \"boolean\" }\n );\n if (typeof value === \"boolean\" || value === void 0) {\n return value;\n }\n const valueString = String(value).trim();\n if (/^(?:y|yes|true|1|on)$/i.test(valueString)) {\n return true;\n }\n if (/^(?:n|no|false|0|off)$/i.test(valueString)) {\n return false;\n }\n throw new Error(errors.convert(this.fullKey(key), this.context, \"boolean\"));\n }\n /** {@inheritdoc Config.getString} */\n getString(key) {\n const value = this.getOptionalString(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalString} */\n getOptionalString(key) {\n return this.readConfigValue(\n key,\n (value) => typeof value === \"string\" && value !== \"\" || { expected: \"string\" }\n );\n }\n /** {@inheritdoc Config.getStringArray} */\n getStringArray(key) {\n const value = this.getOptionalStringArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalStringArray} */\n getOptionalStringArray(key) {\n return this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"string-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (typeof value !== \"string\" || value === \"\") {\n return { expected: \"string-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n }\n fullKey(key) {\n return `${this.prefix}${this.prefix ? \".\" : \"\"}${key}`;\n }\n copy(data, key, fallback) {\n const reader = new ConfigReader(\n data,\n this.context,\n fallback,\n this.fullKey(key)\n );\n reader.filteredKeys = this.filteredKeys;\n return reader;\n }\n readConfigValue(key, validate) {\n var _a, _b;\n const value = this.readValue(key);\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (((_a = this.filteredKeys) == null ? void 0 : _a.includes(fullKey)) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return (_b = this.fallback) == null ? void 0 : _b.readConfigValue(key, validate);\n }\n if (value === null) {\n return void 0;\n }\n const result = validate(value);\n if (result !== true) {\n const { key: keyName = key, value: theValue = value, expected } = result;\n throw new TypeError(\n errors.type(\n this.fullKey(keyName),\n this.context,\n typeOf(theValue),\n expected\n )\n );\n }\n return value;\n }\n readValue(key) {\n const parts = key ? key.split(\".\") : [];\n for (const part of parts) {\n if (!CONFIG_KEY_PART_PATTERN.test(part)) {\n throw new TypeError(`Invalid config key '${key}'`);\n }\n }\n if (this.data === void 0) {\n return void 0;\n }\n let value = this.data;\n for (const [index, part] of parts.entries()) {\n if (isObject(value)) {\n value = value[part];\n } else if (value !== void 0 && value !== null) {\n const badKey = this.fullKey(parts.slice(0, index).join(\".\"));\n throw new TypeError(\n errors.type(badKey, this.context, typeOf(value), \"object\")\n );\n }\n }\n return value;\n }\n}\n\nexport { ConfigReader, readDurationFromConfig };\n//# sourceMappingURL=index.esm.js.map\n","import React, { useContext, createContext, useEffect, useState, Children, isValidElement, useMemo, useRef, Suspense } from 'react';\nimport PropTypes from 'prop-types';\nimport { createVersionedContext, createVersionedValueMap, getOrCreateGlobalSingleton } from '@backstage/version-bridge';\nimport ObservableImpl from 'zen-observable';\nimport { SessionState, FeatureFlagState, AnalyticsContext, useAnalytics, attachComponentData, useApp, useApi, configApiRef, getComponentData, featureFlagsApiRef, appThemeApiRef, identityApiRef, errorApiRef, fetchApiRef, discoveryApiRef, useElementFilter } from '@backstage/core-plugin-api';\nimport { z } from 'zod';\nimport { ConfigReader } from '@backstage/config';\nexport { ConfigReader } from '@backstage/config';\nimport { createRoutesFromChildren, Route, useLocation, matchRoutes, Routes, generatePath, useRoutes } from 'react-router-dom';\nimport useAsync from 'react-use/esm/useAsync';\nimport { appLanguageApiRef, translationApiRef } from '@backstage/core-plugin-api/alpha';\nimport mapValues from 'lodash/mapValues';\nimport useObservable from 'react-use/esm/useObservable';\nimport { createInstance } from 'i18next';\n\nvar __defProp$l = Object.defineProperty;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$l = (obj, key, value) => {\n __defNormalProp$l(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ApiAggregator {\n constructor(...holders) {\n __publicField$l(this, \"holders\");\n this.holders = holders;\n }\n get(apiRef) {\n for (const holder of this.holders) {\n const api = holder.get(apiRef);\n if (api) {\n return api;\n }\n }\n return void 0;\n }\n}\n\nconst ApiContext = createVersionedContext(\"api-context\");\nconst ApiProvider = (props) => {\n var _a;\n const { apis, children } = props;\n const parentHolder = (_a = useContext(ApiContext)) == null ? void 0 : _a.atVersion(1);\n const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis;\n return /* @__PURE__ */ React.createElement(\n ApiContext.Provider,\n {\n value: createVersionedValueMap({ 1: holder }),\n children\n }\n );\n};\nApiProvider.propTypes = {\n apis: PropTypes.shape({ get: PropTypes.func.isRequired }).isRequired,\n children: PropTypes.node\n};\n\nvar __defProp$k = Object.defineProperty;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$k = (obj, key, value) => {\n __defNormalProp$k(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ApiResolver {\n constructor(factories) {\n this.factories = factories;\n __publicField$k(this, \"apis\", /* @__PURE__ */ new Map());\n }\n /**\n * Validate factories by making sure that each of the apis can be created\n * without hitting any circular dependencies.\n */\n static validateFactories(factories, apis) {\n for (const api of apis) {\n const heap = [api];\n const allDeps = /* @__PURE__ */ new Set();\n while (heap.length) {\n const apiRef = heap.shift();\n const factory = factories.get(apiRef);\n if (!factory) {\n continue;\n }\n for (const dep of Object.values(factory.deps)) {\n if (dep.id === api.id) {\n throw new Error(`Circular dependency of api factory for ${api}`);\n }\n if (!allDeps.has(dep)) {\n allDeps.add(dep);\n heap.push(dep);\n }\n }\n }\n }\n }\n get(ref) {\n return this.load(ref);\n }\n load(ref, loading = []) {\n const impl = this.apis.get(ref.id);\n if (impl) {\n return impl;\n }\n const factory = this.factories.get(ref);\n if (!factory) {\n return void 0;\n }\n if (loading.includes(factory.api)) {\n throw new Error(`Circular dependency of api factory for ${factory.api}`);\n }\n const deps = this.loadDeps(ref, factory.deps, [...loading, factory.api]);\n const api = factory.factory(deps);\n this.apis.set(ref.id, api);\n return api;\n }\n loadDeps(dependent, apis, loading) {\n const impls = {};\n for (const key in apis) {\n if (apis.hasOwnProperty(key)) {\n const ref = apis[key];\n const api = this.load(ref, loading);\n if (!api) {\n throw new Error(\n `No API factory available for dependency ${ref} of dependent ${dependent}`\n );\n }\n impls[key] = api;\n }\n }\n return impls;\n }\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$j = (obj, key, value) => {\n __defNormalProp$j(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar ScopePriority = /* @__PURE__ */ ((ScopePriority2) => {\n ScopePriority2[ScopePriority2[\"default\"] = 10] = \"default\";\n ScopePriority2[ScopePriority2[\"app\"] = 50] = \"app\";\n ScopePriority2[ScopePriority2[\"static\"] = 100] = \"static\";\n return ScopePriority2;\n})(ScopePriority || {});\nclass ApiFactoryRegistry {\n constructor() {\n __publicField$j(this, \"factories\", /* @__PURE__ */ new Map());\n }\n /**\n * Register a new API factory. Returns true if the factory was added\n * to the registry.\n *\n * A factory will not be added to the registry if there is already\n * an existing factory with the same or higher priority.\n */\n register(scope, factory) {\n const priority = ScopePriority[scope];\n const existing = this.factories.get(factory.api.id);\n if (existing && existing.priority >= priority) {\n return false;\n }\n this.factories.set(factory.api.id, { priority, factory });\n return true;\n }\n get(api) {\n const tuple = this.factories.get(api.id);\n if (!tuple) {\n return void 0;\n }\n return tuple.factory;\n }\n getAllApis() {\n const refs = /* @__PURE__ */ new Set();\n for (const { factory } of this.factories.values()) {\n refs.add(factory.api);\n }\n return refs;\n }\n}\n\nfunction showLoginPopup(options) {\n return new Promise((resolve, reject) => {\n const width = options.width || 500;\n const height = options.height || 700;\n const left = window.screen.width / 2 - width / 2;\n const top = window.screen.height / 2 - height / 2;\n const popup = window.open(\n options.url,\n options.name,\n `menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=${width},height=${height},top=${top},left=${left}`\n );\n let targetOrigin = \"\";\n if (!popup || typeof popup.closed === \"undefined\" || popup.closed) {\n const error = new Error(\"Failed to open auth popup.\");\n error.name = \"PopupRejectedError\";\n reject(error);\n return;\n }\n const messageListener = (event) => {\n if (event.source !== popup) {\n return;\n }\n if (event.origin !== options.origin) {\n return;\n }\n const { data } = event;\n if (data.type === \"config_info\") {\n targetOrigin = data.targetOrigin;\n return;\n }\n if (data.type !== \"authorization_response\") {\n return;\n }\n const authResult = data;\n if (\"error\" in authResult) {\n const error = new Error(authResult.error.message);\n error.name = authResult.error.name;\n reject(error);\n } else {\n resolve(authResult.response);\n }\n done();\n };\n const intervalId = setInterval(() => {\n if (popup.closed) {\n const errMessage = `Login failed, ${targetOrigin && targetOrigin !== window.location.origin ? `Incorrect app origin, expected ${targetOrigin}` : \"popup was closed\"}`;\n const error = new Error(errMessage);\n error.name = \"PopupClosedError\";\n reject(error);\n done();\n }\n }, 100);\n function done() {\n window.removeEventListener(\"message\", messageListener);\n clearInterval(intervalId);\n }\n window.addEventListener(\"message\", messageListener);\n });\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$i = (obj, key, value) => {\n __defNormalProp$i(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nlet warned$1 = false;\nfunction defaultJoinScopes(scopes) {\n return [...scopes].join(\" \");\n}\nclass DefaultAuthConnector {\n constructor(options) {\n __publicField$i(this, \"discoveryApi\");\n __publicField$i(this, \"environment\");\n __publicField$i(this, \"provider\");\n __publicField$i(this, \"joinScopesFunc\");\n __publicField$i(this, \"authRequester\");\n __publicField$i(this, \"sessionTransform\");\n __publicField$i(this, \"enableExperimentalRedirectFlow\");\n __publicField$i(this, \"popupOptions\");\n var _a;\n const {\n configApi,\n discoveryApi,\n environment,\n provider,\n joinScopes = defaultJoinScopes,\n oauthRequestApi,\n sessionTransform = (id) => id,\n popupOptions\n } = options;\n if (!warned$1 && !configApi) {\n console.warn(\n \"DEPRECATION WARNING: Authentication providers require a configApi instance to configure the authentication flow. Please provide one to the authentication provider constructor.\"\n );\n warned$1 = true;\n }\n this.enableExperimentalRedirectFlow = configApi ? (_a = configApi.getOptionalBoolean(\"enableExperimentalRedirectFlow\")) != null ? _a : false : false;\n this.authRequester = oauthRequestApi.createAuthRequester({\n provider,\n onAuthRequest: async (scopes) => {\n if (!this.enableExperimentalRedirectFlow) {\n return this.showPopup(scopes);\n }\n return this.executeRedirect(scopes);\n }\n });\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n this.joinScopesFunc = joinScopes;\n this.sessionTransform = sessionTransform;\n this.popupOptions = popupOptions;\n }\n async createSession(options) {\n if (options.instantPopup) {\n if (this.enableExperimentalRedirectFlow) {\n return this.executeRedirect(options.scopes);\n }\n return this.showPopup(options.scopes);\n }\n return this.authRequester(options.scopes);\n }\n async refreshSession(scopes) {\n const res = await fetch(\n await this.buildUrl(\"/refresh\", {\n optional: true,\n ...scopes && { scope: this.joinScopesFunc(scopes) }\n }),\n {\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }\n ).catch((error) => {\n throw new Error(`Auth refresh request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(\n `Auth refresh request failed, ${res.statusText}`\n );\n error.status = res.status;\n throw error;\n }\n const authInfo = await res.json();\n if (authInfo.error) {\n const error = new Error(authInfo.error.message);\n if (authInfo.error.name) {\n error.name = authInfo.error.name;\n }\n throw error;\n }\n return await this.sessionTransform(authInfo);\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async showPopup(scopes) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const scope = this.joinScopesFunc(scopes);\n const popupUrl = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n flow: \"popup\"\n });\n const width = ((_b = (_a = this.popupOptions) == null ? void 0 : _a.size) == null ? void 0 : _b.fullscreen) ? window.screen.width : ((_d = (_c = this.popupOptions) == null ? void 0 : _c.size) == null ? void 0 : _d.width) || 450;\n const height = ((_f = (_e = this.popupOptions) == null ? void 0 : _e.size) == null ? void 0 : _f.fullscreen) ? window.screen.height : ((_h = (_g = this.popupOptions) == null ? void 0 : _g.size) == null ? void 0 : _h.height) || 730;\n const payload = await showLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n origin: new URL(popupUrl).origin,\n width,\n height\n });\n return await this.sessionTransform(payload);\n }\n async executeRedirect(scopes) {\n const scope = this.joinScopesFunc(scopes);\n window.location.href = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n redirectUrl: window.location.href,\n flow: \"redirect\"\n });\n return new Promise(() => {\n });\n }\n async buildUrl(path, query) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n const queryString = this.buildQueryString({\n ...query,\n env: this.environment\n });\n return `${baseUrl}/${this.provider.id}${path}${queryString}`;\n }\n buildQueryString(query) {\n if (!query) {\n return \"\";\n }\n const queryString = Object.entries(query).map(([key, value]) => {\n if (typeof value === \"string\") {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n } else if (value) {\n return encodeURIComponent(key);\n }\n return void 0;\n }).filter(Boolean).join(\"&\");\n if (!queryString) {\n return \"\";\n }\n return `?${queryString}`;\n }\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$h = (obj, key, value) => {\n __defNormalProp$h(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass DirectAuthConnector {\n constructor(options) {\n __publicField$h(this, \"discoveryApi\");\n __publicField$h(this, \"environment\");\n __publicField$h(this, \"provider\");\n const { discoveryApi, environment, provider } = options;\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n }\n async createSession() {\n const popupUrl = await this.buildUrl(\"/start\");\n const payload = await showLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n origin: new URL(popupUrl).origin,\n width: 450,\n height: 730\n });\n return {\n ...payload,\n id: payload.profile.email\n };\n }\n async refreshSession() {\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async buildUrl(path) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n return `${baseUrl}/${this.provider.id}${path}?env=${this.environment}`;\n }\n}\n\nfunction hasScopes$1(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nclass SessionScopeHelper {\n constructor(options) {\n this.options = options;\n }\n sessionExistsAndHasScope(session, scopes) {\n if (!session) {\n return false;\n }\n if (!scopes) {\n return true;\n }\n if (this.options.sessionScopes === void 0) {\n return true;\n }\n const sessionScopes = this.options.sessionScopes(session);\n return hasScopes$1(sessionScopes, scopes);\n }\n getExtendedScope(session, scopes) {\n const newScope = new Set(this.options.defaultScopes);\n if (session && this.options.sessionScopes !== void 0) {\n const sessionScopes = this.options.sessionScopes(session);\n for (const scope of sessionScopes) {\n newScope.add(scope);\n }\n }\n if (scopes) {\n for (const scope of scopes) {\n newScope.add(scope);\n }\n }\n return newScope;\n }\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$g = (obj, key, value) => {\n __defNormalProp$g(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass PublishSubject {\n constructor() {\n __publicField$g(this, \"isClosed\", false);\n __publicField$g(this, \"terminatingError\");\n __publicField$g(this, \"observable\", new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n }));\n __publicField$g(this, \"subscribers\", /* @__PURE__ */ new Set());\n }\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\nclass BehaviorSubject {\n constructor(value) {\n __publicField$g(this, \"isClosed\");\n __publicField$g(this, \"currentValue\");\n __publicField$g(this, \"terminatingError\");\n __publicField$g(this, \"observable\");\n __publicField$g(this, \"subscribers\", /* @__PURE__ */ new Set());\n this.isClosed = false;\n this.currentValue = value;\n this.terminatingError = void 0;\n this.observable = new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n subscriber.next(this.currentValue);\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n }\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.currentValue = value;\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$f = (obj, key, value) => {\n __defNormalProp$f(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass SessionStateTracker {\n constructor() {\n __publicField$f(this, \"subject\", new BehaviorSubject(\n SessionState.SignedOut\n ));\n __publicField$f(this, \"signedIn\", false);\n }\n setIsSignedIn(isSignedIn) {\n if (this.signedIn !== isSignedIn) {\n this.signedIn = isSignedIn;\n this.subject.next(\n this.signedIn ? SessionState.SignedIn : SessionState.SignedOut\n );\n }\n }\n sessionState$() {\n return this.subject;\n }\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$e = (obj, key, value) => {\n __defNormalProp$e(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass RefreshingAuthSessionManager {\n constructor(options) {\n __publicField$e(this, \"connector\");\n __publicField$e(this, \"helper\");\n __publicField$e(this, \"sessionScopesFunc\");\n __publicField$e(this, \"sessionShouldRefreshFunc\");\n __publicField$e(this, \"stateTracker\", new SessionStateTracker());\n __publicField$e(this, \"refreshPromise\");\n __publicField$e(this, \"currentSession\");\n const {\n connector,\n defaultScopes = /* @__PURE__ */ new Set(),\n sessionScopes,\n sessionShouldRefresh\n } = options;\n this.connector = connector;\n this.sessionScopesFunc = sessionScopes;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n async getSession(options) {\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(this.currentSession);\n if (!shouldRefresh) {\n return this.currentSession;\n }\n try {\n const refreshedSession = await this.collapsedSessionRefresh(\n options.scopes\n );\n const currentScopes = this.sessionScopesFunc(this.currentSession);\n const refreshedScopes = this.sessionScopesFunc(refreshedSession);\n if (hasScopes$1(refreshedScopes, currentScopes)) {\n this.currentSession = refreshedSession;\n }\n return refreshedSession;\n } catch (error) {\n if (options.optional) {\n return void 0;\n }\n throw error;\n }\n }\n if (!this.currentSession && !options.instantPopup) {\n try {\n const newSession = await this.collapsedSessionRefresh(options.scopes);\n this.currentSession = newSession;\n return this.getSession(options);\n } catch {\n }\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n async removeSession() {\n this.currentSession = void 0;\n await this.connector.removeSession();\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n async collapsedSessionRefresh(scopes) {\n if (this.refreshPromise) {\n return this.refreshPromise;\n }\n this.refreshPromise = this.connector.refreshSession(\n this.helper.getExtendedScope(this.currentSession, scopes)\n );\n try {\n const session = await this.refreshPromise;\n this.stateTracker.setIsSignedIn(true);\n return session;\n } finally {\n delete this.refreshPromise;\n }\n }\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$d = (obj, key, value) => {\n __defNormalProp$d(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass StaticAuthSessionManager {\n constructor(options) {\n __publicField$d(this, \"connector\");\n __publicField$d(this, \"helper\");\n __publicField$d(this, \"stateTracker\", new SessionStateTracker());\n __publicField$d(this, \"currentSession\");\n const { connector, defaultScopes = /* @__PURE__ */ new Set(), sessionScopes } = options;\n this.connector = connector;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n setSession(session) {\n this.currentSession = session;\n this.stateTracker.setIsSignedIn(Boolean(session));\n }\n async getSession(options) {\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n return this.currentSession;\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n /**\n * We don't call this.connector.removeSession here, since this session manager\n * is intended to be static. As such there's no need to hit the remote logout\n * endpoint - simply discarding the local session state when signing out is\n * enough.\n */\n async removeSession() {\n this.currentSession = void 0;\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$c = (obj, key, value) => {\n __defNormalProp$c(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass AuthSessionStore {\n constructor(options) {\n __publicField$c(this, \"manager\");\n __publicField$c(this, \"storageKey\");\n __publicField$c(this, \"schema\");\n __publicField$c(this, \"sessionShouldRefreshFunc\");\n __publicField$c(this, \"helper\");\n const {\n manager,\n storageKey,\n schema,\n sessionScopes,\n sessionShouldRefresh = () => false\n } = options;\n this.manager = manager;\n this.storageKey = storageKey;\n this.schema = schema;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({\n sessionScopes,\n defaultScopes: /* @__PURE__ */ new Set()\n });\n }\n setSession(session) {\n this.manager.setSession(session);\n this.saveSession(session);\n }\n async getSession(options) {\n const { scopes } = options;\n const session = this.loadSession();\n if (this.helper.sessionExistsAndHasScope(session, scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(session);\n if (!shouldRefresh) {\n this.manager.setSession(session);\n return session;\n }\n }\n const newSession = await this.manager.getSession(options);\n this.saveSession(newSession);\n return newSession;\n }\n async removeSession() {\n localStorage.removeItem(this.storageKey);\n await this.manager.removeSession();\n }\n sessionState$() {\n return this.manager.sessionState$();\n }\n loadSession() {\n try {\n const sessionJson = localStorage.getItem(this.storageKey);\n if (sessionJson) {\n const session = JSON.parse(sessionJson, (_key, value) => {\n if ((value == null ? void 0 : value.__type) === \"Set\") {\n return new Set(value.__value);\n }\n return value;\n });\n try {\n return this.schema.parse(session);\n } catch (e) {\n console.log(\n `Failed to load session from local storage because it did not conform to the expected schema, ${e}`\n );\n throw e;\n }\n }\n return void 0;\n } catch (error) {\n localStorage.removeItem(this.storageKey);\n return void 0;\n }\n }\n saveSession(session) {\n if (session === void 0) {\n localStorage.removeItem(this.storageKey);\n return;\n }\n try {\n this.schema.parse(session);\n } catch (e) {\n console.warn(\n `Failed to save session to local storage because it did not conform to the expected schema, ${e}`\n );\n return;\n }\n localStorage.setItem(\n this.storageKey,\n JSON.stringify(session, (_key, value) => {\n if (value instanceof Set) {\n return {\n __type: \"Set\",\n __value: Array.from(value)\n };\n }\n return value;\n })\n );\n }\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$b = (obj, key, value) => {\n __defNormalProp$b(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst DEFAULT_PROVIDER$b = {\n id: \"oauth2\",\n title: \"Your Identity Provider\",\n icon: () => null\n};\nclass OAuth2 {\n constructor(options) {\n __publicField$b(this, \"sessionManager\");\n __publicField$b(this, \"scopeTransform\");\n this.sessionManager = options.sessionManager;\n this.scopeTransform = options.scopeTransform;\n }\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$b,\n oauthRequestApi,\n defaultScopes = [],\n scopeTransform = (x) => x,\n popupOptions\n } = options;\n const connector = new DefaultAuthConnector({\n configApi,\n discoveryApi,\n environment,\n provider,\n oauthRequestApi,\n sessionTransform({\n backstageIdentity,\n ...res\n }) {\n var _a;\n const session = {\n ...res,\n providerInfo: {\n idToken: res.providerInfo.idToken,\n accessToken: res.providerInfo.accessToken,\n scopes: OAuth2.normalizeScopes(\n scopeTransform,\n res.providerInfo.scope\n ),\n expiresAt: res.providerInfo.expiresInSeconds ? new Date(Date.now() + res.providerInfo.expiresInSeconds * 1e3) : void 0\n }\n };\n if (backstageIdentity) {\n const expInSec = (_a = backstageIdentity.expiresInSeconds) != null ? _a : res.providerInfo.expiresInSeconds;\n session.backstageIdentity = {\n token: backstageIdentity.token,\n identity: backstageIdentity.identity,\n expiresAt: expInSec ? new Date(Date.now() + expInSec * 1e3) : void 0\n };\n }\n return session;\n },\n popupOptions\n });\n const sessionManager = new RefreshingAuthSessionManager({\n connector,\n defaultScopes: new Set(defaultScopes),\n sessionScopes: (session) => session.providerInfo.scopes,\n sessionShouldRefresh: (session) => {\n var _a, _b;\n let min = Infinity;\n if ((_a = session.providerInfo) == null ? void 0 : _a.expiresAt) {\n min = Math.min(\n min,\n (session.providerInfo.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n if ((_b = session.backstageIdentity) == null ? void 0 : _b.expiresAt) {\n min = Math.min(\n min,\n (session.backstageIdentity.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n return min < 60 * 5;\n }\n });\n return new OAuth2({ sessionManager, scopeTransform });\n }\n async signIn() {\n await this.getAccessToken();\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async getAccessToken(scope, options) {\n var _a;\n const normalizedScopes = OAuth2.normalizeScopes(this.scopeTransform, scope);\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: normalizedScopes\n });\n return (_a = session == null ? void 0 : session.providerInfo.accessToken) != null ? _a : \"\";\n }\n async getIdToken(options = {}) {\n var _a;\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: /* @__PURE__ */ new Set([\"openid\"])\n });\n return (_a = session == null ? void 0 : session.providerInfo.idToken) != null ? _a : \"\";\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session == null ? void 0 : session.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session == null ? void 0 : session.profile;\n }\n static normalizeScopes(scopeTransform, scopes) {\n if (!scopes) {\n return /* @__PURE__ */ new Set();\n }\n const scopeList = Array.isArray(scopes) ? scopes : scopes.split(/[\\s|,]/).filter(Boolean);\n return new Set(scopeTransform(scopeList));\n }\n}\n\nconst DEFAULT_PROVIDER$a = {\n id: \"github\",\n title: \"GitHub\",\n icon: () => null\n};\nclass GithubAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$a,\n oauthRequestApi,\n defaultScopes = [\"read:user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nconst DEFAULT_PROVIDER$9 = {\n id: \"gitlab\",\n title: \"GitLab\",\n icon: () => null\n};\nclass GitlabAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$9,\n oauthRequestApi,\n defaultScopes = [\"read_user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nconst DEFAULT_PROVIDER$8 = {\n id: \"google\",\n title: \"Google\",\n icon: () => null\n};\nconst SCOPE_PREFIX$1 = \"https://www.googleapis.com/auth/\";\nclass GoogleAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$8,\n defaultScopes = [\n \"openid\",\n `${SCOPE_PREFIX$1}userinfo.email`,\n `${SCOPE_PREFIX$1}userinfo.profile`\n ]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (scope === \"openid\") {\n return scope;\n }\n if (scope === \"profile\" || scope === \"email\") {\n return `${SCOPE_PREFIX$1}userinfo.${scope}`;\n }\n if (scope.startsWith(SCOPE_PREFIX$1)) {\n return scope;\n }\n return `${SCOPE_PREFIX$1}${scope}`;\n });\n }\n });\n }\n}\n\nconst DEFAULT_PROVIDER$7 = {\n id: \"okta\",\n title: \"Okta\",\n icon: () => null\n};\nconst OKTA_OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst OKTA_SCOPE_PREFIX = \"okta.\";\nclass OktaAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$7,\n oauthRequestApi,\n defaultScopes = [\"openid\", \"email\", \"profile\", \"offline_access\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OKTA_OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(OKTA_SCOPE_PREFIX)) {\n return scope;\n }\n return `${OKTA_SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nconst samlSessionSchema = z.object({\n profile: z.object({\n email: z.string().optional(),\n displayName: z.string().optional(),\n picture: z.string().optional()\n }),\n backstageIdentity: z.object({\n token: z.string(),\n identity: z.object({\n type: z.literal(\"user\"),\n userEntityRef: z.string(),\n ownershipEntityRefs: z.array(z.string())\n })\n })\n});\n\nconst DEFAULT_PROVIDER$6 = {\n id: \"saml\",\n title: \"SAML\",\n icon: () => null\n};\nclass SamlAuth {\n constructor(sessionManager) {\n this.sessionManager = sessionManager;\n }\n static create(options) {\n const {\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$6\n } = options;\n const connector = new DirectAuthConnector({\n discoveryApi,\n environment,\n provider\n });\n const sessionManager = new StaticAuthSessionManager({\n connector\n });\n const authSessionStore = new AuthSessionStore({\n manager: sessionManager,\n storageKey: `${provider.id}Session`,\n schema: samlSessionSchema\n });\n return new SamlAuth(authSessionStore);\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async signIn() {\n await this.getBackstageIdentity({});\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session == null ? void 0 : session.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session == null ? void 0 : session.profile;\n }\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$a = (obj, key, value) => {\n __defNormalProp$a(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst DEFAULT_PROVIDER$5 = {\n id: \"microsoft\",\n title: \"Microsoft\",\n icon: () => null\n};\nconst _MicrosoftAuth = class _MicrosoftAuth {\n constructor(options) {\n __publicField$a(this, \"oauth2\");\n __publicField$a(this, \"configApi\");\n __publicField$a(this, \"environment\");\n __publicField$a(this, \"provider\");\n __publicField$a(this, \"oauthRequestApi\");\n __publicField$a(this, \"discoveryApi\");\n __publicField$a(this, \"scopeTransform\");\n const {\n configApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$5,\n oauthRequestApi,\n discoveryApi,\n defaultScopes = [\n \"openid\",\n \"offline_access\",\n \"profile\",\n \"email\",\n \"User.Read\"\n ],\n scopeTransform = (scopes) => scopes.concat(\"offline_access\")\n } = options;\n this.configApi = configApi;\n this.environment = environment;\n this.provider = provider;\n this.oauthRequestApi = oauthRequestApi;\n this.discoveryApi = discoveryApi;\n this.scopeTransform = scopeTransform;\n this.oauth2 = {\n [_MicrosoftAuth.MicrosoftGraphID]: OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform,\n defaultScopes\n })\n };\n }\n static create(options) {\n return new _MicrosoftAuth(options);\n }\n microsoftGraph() {\n return this.oauth2[_MicrosoftAuth.MicrosoftGraphID];\n }\n static resourceForScopes(scope) {\n var _a;\n const audiences = [\n ...new Set(\n scope.split(\" \").map(_MicrosoftAuth.resourceForScope).filter((aud) => aud !== \"openid\")\n )\n ];\n if (audiences.length > 1) {\n return Promise.reject(\n new Error(\n `Requested access token with scopes from multiple Azure resources: ${audiences.join(\n \", \"\n )}. Access tokens can only have a single audience.`\n )\n );\n }\n const audience = (_a = audiences[0]) != null ? _a : _MicrosoftAuth.MicrosoftGraphID;\n return Promise.resolve(audience);\n }\n static resourceForScope(scope) {\n var _a;\n const groups = (_a = scope.match(/^(?.*)\\/(?[^\\/]*)$/)) == null ? void 0 : _a.groups;\n if (groups) {\n const { resourceURI } = groups;\n const aud = resourceURI.replace(/^api:\\/\\//, \"\");\n return aud;\n }\n switch (scope) {\n case \"email\":\n case \"openid\":\n case \"offline_access\":\n case \"profile\": {\n return \"openid\";\n }\n default:\n return _MicrosoftAuth.MicrosoftGraphID;\n }\n }\n async getAccessToken(scope, options) {\n const aud = scope === void 0 ? _MicrosoftAuth.MicrosoftGraphID : await _MicrosoftAuth.resourceForScopes(\n Array.isArray(scope) ? scope.join(\" \") : scope\n );\n if (!(aud in this.oauth2)) {\n this.oauth2[aud] = OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform\n });\n }\n return this.oauth2[aud].getAccessToken(scope, options);\n }\n getIdToken(options) {\n return this.microsoftGraph().getIdToken(options);\n }\n getProfile(options) {\n return this.microsoftGraph().getProfile(options);\n }\n getBackstageIdentity(options) {\n return this.microsoftGraph().getBackstageIdentity(options);\n }\n signIn() {\n return this.microsoftGraph().signIn();\n }\n signOut() {\n return this.microsoftGraph().signOut();\n }\n sessionState$() {\n return this.microsoftGraph().sessionState$();\n }\n};\n__publicField$a(_MicrosoftAuth, \"MicrosoftGraphID\", \"00000003-0000-0000-c000-000000000000\");\nlet MicrosoftAuth = _MicrosoftAuth;\n\nconst DEFAULT_PROVIDER$4 = {\n id: \"onelogin\",\n title: \"onelogin\",\n icon: () => null\n};\nconst OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst SCOPE_PREFIX = \"onelogin.\";\nclass OneLoginAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$4,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes: [\"openid\", \"email\", \"profile\", \"offline_access\"],\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(SCOPE_PREFIX)) {\n return scope;\n }\n return `${SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nconst DEFAULT_PROVIDER$3 = {\n id: \"bitbucket\",\n title: \"Bitbucket\",\n icon: () => null\n};\nclass BitbucketAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$3,\n oauthRequestApi,\n defaultScopes = [\"account\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nconst DEFAULT_PROVIDER$2 = {\n id: \"bitbucketServer\",\n title: \"Bitbucket Server\",\n icon: () => null\n};\nclass BitbucketServerAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$2,\n oauthRequestApi,\n defaultScopes = [\"PROJECT_ADMIN\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nconst DEFAULT_PROVIDER$1 = {\n id: \"atlassian\",\n title: \"Atlassian\",\n icon: () => null\n};\nclass AtlassianAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER$1,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment\n });\n }\n}\n\nconst DEFAULT_PROVIDER = {\n id: \"vmwareCloudServices\",\n title: \"VMware Cloud\",\n icon: () => null\n};\nclass VMwareCloudAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n defaultScopes = [\"openid\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$9 = (obj, key, value) => {\n __defNormalProp$9(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass AlertApiForwarder {\n constructor() {\n __publicField$9(this, \"subject\", new PublishSubject());\n }\n post(alert) {\n this.subject.next(alert);\n }\n alert$() {\n return this.subject;\n }\n}\n\nclass MultipleAnalyticsApi {\n constructor(actualApis) {\n this.actualApis = actualApis;\n }\n /**\n * Create an AnalyticsApi implementation from an array of concrete\n * implementations.\n *\n * @example\n *\n * ```jsx\n * MultipleAnalyticsApi.fromApis([\n * SomeAnalyticsApi.fromConfig(configApi),\n * new CustomAnalyticsApi(),\n * ]);\n * ```\n */\n static fromApis(actualApis) {\n return new MultipleAnalyticsApi(actualApis);\n }\n /**\n * Forward the event to all configured analytics API implementations.\n */\n captureEvent(event) {\n this.actualApis.forEach((analyticsApi) => {\n try {\n analyticsApi.captureEvent(event);\n } catch {\n }\n });\n }\n}\n\nclass NoOpAnalyticsApi {\n captureEvent(_event) {\n }\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$8 = (obj, key, value) => {\n __defNormalProp$8(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst STORAGE_KEY$1 = \"theme\";\nclass AppThemeSelector {\n constructor(themes) {\n this.themes = themes;\n __publicField$8(this, \"activeThemeId\");\n __publicField$8(this, \"subject\", new BehaviorSubject(void 0));\n }\n static createWithStorage(themes) {\n var _a;\n const selector = new AppThemeSelector(themes);\n if (!window.localStorage) {\n return selector;\n }\n const initialThemeId = (_a = window.localStorage.getItem(STORAGE_KEY$1)) != null ? _a : void 0;\n selector.setActiveThemeId(initialThemeId);\n selector.activeThemeId$().subscribe((themeId) => {\n if (themeId) {\n window.localStorage.setItem(STORAGE_KEY$1, themeId);\n } else {\n window.localStorage.removeItem(STORAGE_KEY$1);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n var _a2;\n if (event.key === STORAGE_KEY$1) {\n const themeId = (_a2 = localStorage.getItem(STORAGE_KEY$1)) != null ? _a2 : void 0;\n selector.setActiveThemeId(themeId);\n }\n });\n return selector;\n }\n getInstalledThemes() {\n return this.themes.slice();\n }\n activeThemeId$() {\n return this.subject;\n }\n getActiveThemeId() {\n return this.activeThemeId;\n }\n setActiveThemeId(themeId) {\n this.activeThemeId = themeId;\n this.subject.next(themeId);\n }\n}\n\nconst ERROR_PREFIX = \"Invalid discovery URL pattern,\";\nclass UrlPatternDiscovery {\n constructor(parts) {\n this.parts = parts;\n }\n /**\n * Creates a new UrlPatternDiscovery given a template. The the only\n * interpolation done for the template is to replace instances of `{{pluginId}}`\n * with the ID of the plugin being requested.\n *\n * Example pattern: `http://localhost:7007/api/{{ pluginId }}`\n */\n static compile(pattern) {\n const parts = pattern.split(/\\{\\{\\s*pluginId\\s*\\}\\}/);\n const urlStr = parts.join(\"pluginId\");\n let url;\n try {\n url = new URL(urlStr);\n } catch {\n throw new Error(`${ERROR_PREFIX} URL '${urlStr}' is invalid`);\n }\n if (url.hash) {\n throw new Error(`${ERROR_PREFIX} URL must not have a hash`);\n }\n if (url.search) {\n throw new Error(`${ERROR_PREFIX} URL must not have a query`);\n }\n if (urlStr.endsWith(\"/\")) {\n throw new Error(`${ERROR_PREFIX} URL must not end with a slash`);\n }\n return new UrlPatternDiscovery(parts);\n }\n async getBaseUrl(pluginId) {\n return this.parts.join(encodeURIComponent(pluginId));\n }\n}\n\nclass FrontendHostDiscovery {\n constructor(endpoints, defaultEndpoint) {\n this.endpoints = endpoints;\n this.defaultEndpoint = defaultEndpoint;\n }\n /**\n * Creates a new FrontendHostDiscovery discovery instance by reading\n * the external target URL from the `discovery.endpoints` config section.\n *\n * eg.\n * ```yaml\n * discovery:\n * endpoints:\n * - target: https://internal.example.com/internal-catalog\n * plugins: [catalog]\n * - target: https://internal.example.com/secure/api/{{pluginId}}\n * plugins: [auth, permissions]\n * - target:\n * internal: https://internal.example.com/search\n * external: https://example.com/search\n * plugins: [search]\n * ```\n *\n * If a plugin is not declared in the config, the discovery will fall back to using the baseUrl with\n * the provided `pathPattern` appended. The default path pattern is `\"/api/{{ pluginId }}\"`.\n */\n static fromConfig(config, options) {\n var _a, _b;\n const path = (_a = options == null ? void 0 : options.pathPattern) != null ? _a : \"/api/{{ pluginId }}\";\n const baseUrl = config.getString(\"backend.baseUrl\");\n const endpoints = (_b = config.getOptionalConfigArray(\"discovery.endpoints\")) == null ? void 0 : _b.flatMap((e) => {\n const target = typeof e.get(\"target\") === \"object\" ? e.getString(\"target.external\") : e.getString(\"target\");\n const discovery = UrlPatternDiscovery.compile(target);\n return e.getStringArray(\"plugins\").map((pluginId) => [pluginId, discovery]);\n });\n return new FrontendHostDiscovery(\n new Map(endpoints),\n UrlPatternDiscovery.compile(`${baseUrl}${path}`)\n );\n }\n async getBaseUrl(pluginId) {\n const endpoint = this.endpoints.get(pluginId);\n if (endpoint) {\n return endpoint.getBaseUrl(pluginId);\n }\n return this.defaultEndpoint.getBaseUrl(pluginId);\n }\n}\n\nclass ErrorAlerter {\n constructor(alertApi, errorApi) {\n this.alertApi = alertApi;\n this.errorApi = errorApi;\n }\n post(error, context) {\n if (!(context == null ? void 0 : context.hidden)) {\n this.alertApi.post({ message: error.message, severity: \"error\" });\n }\n return this.errorApi.post(error, context);\n }\n error$() {\n return this.errorApi.error$();\n }\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$7 = (obj, key, value) => {\n __defNormalProp$7(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ErrorApiForwarder {\n constructor() {\n __publicField$7(this, \"subject\", new PublishSubject());\n }\n post(error, context) {\n this.subject.next({ error, context });\n }\n error$() {\n return this.subject;\n }\n}\n\nclass UnhandledErrorForwarder {\n /**\n * Add event listener, such that unhandled errors can be forwarded using an given `ErrorApi` instance\n */\n static forward(errorApi, errorContext) {\n window.addEventListener(\n \"unhandledrejection\",\n (e) => {\n errorApi.post(e.reason, errorContext);\n }\n );\n }\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$6 = (obj, key, value) => {\n __defNormalProp$6(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nfunction validateFlagName(name) {\n if (name.length < 3) {\n throw new Error(\n `The '${name}' feature flag must have a minimum length of three characters.`\n );\n }\n if (name.length > 150) {\n throw new Error(\n `The '${name}' feature flag must not exceed 150 characters.`\n );\n }\n if (!name.match(/^[a-z]+[a-z0-9-]+$/)) {\n throw new Error(\n `The '${name}' feature flag must start with a lowercase letter and only contain lowercase letters, numbers and hyphens. Examples: feature-flag-one, alpha, release-2020`\n );\n }\n}\nclass LocalStorageFeatureFlags {\n constructor() {\n __publicField$6(this, \"registeredFeatureFlags\", []);\n __publicField$6(this, \"flags\");\n }\n registerFlag(flag) {\n validateFlagName(flag.name);\n this.registeredFeatureFlags.push(flag);\n }\n getRegisteredFlags() {\n return this.registeredFeatureFlags.slice();\n }\n isActive(name) {\n if (!this.flags) {\n this.flags = this.load();\n }\n return this.flags.get(name) === FeatureFlagState.Active;\n }\n save(options) {\n if (!this.flags) {\n this.flags = this.load();\n }\n if (!options.merge) {\n this.flags.clear();\n }\n for (const [name, state] of Object.entries(options.states)) {\n this.flags.set(name, state);\n }\n const enabled = Array.from(this.flags.entries()).filter(\n ([, state]) => state === FeatureFlagState.Active\n );\n window.localStorage.setItem(\n \"featureFlags\",\n JSON.stringify(Object.fromEntries(enabled))\n );\n }\n load() {\n try {\n const jsonStr = window.localStorage.getItem(\"featureFlags\");\n if (!jsonStr) {\n return /* @__PURE__ */ new Map();\n }\n const json = JSON.parse(jsonStr);\n if (typeof json !== \"object\" || json === null || Array.isArray(json)) {\n return /* @__PURE__ */ new Map();\n }\n const entries = Object.entries(json).filter(([name, value]) => {\n validateFlagName(name);\n return value === FeatureFlagState.Active;\n });\n return new Map(entries);\n } catch {\n return /* @__PURE__ */ new Map();\n }\n }\n}\n\nfunction createFetchApi(options) {\n var _a;\n let result = options.baseImplementation || global.fetch;\n const middleware = [(_a = options.middleware) != null ? _a : []].flat().reverse();\n for (const m of middleware) {\n result = m.apply(result);\n }\n return {\n fetch: result\n };\n}\n\nclass IdentityAuthInjectorFetchMiddleware {\n constructor(identityApi, allowUrl, headerName, headerValue) {\n this.identityApi = identityApi;\n this.allowUrl = allowUrl;\n this.headerName = headerName;\n this.headerValue = headerValue;\n }\n static create(options) {\n var _a, _b;\n const matcher = buildMatcher(options);\n const headerName = ((_a = options.header) == null ? void 0 : _a.name) || \"authorization\";\n const headerValue = ((_b = options.header) == null ? void 0 : _b.value) || ((token) => `Bearer ${token}`);\n return new IdentityAuthInjectorFetchMiddleware(\n options.identityApi,\n matcher,\n headerName,\n headerValue\n );\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const { token } = await this.identityApi.getCredentials();\n if (request.headers.get(this.headerName) || typeof token !== \"string\" || !token || !this.allowUrl(request.url)) {\n return next(input, init);\n }\n request.headers.set(this.headerName, this.headerValue(token));\n return next(request);\n };\n }\n}\nfunction buildMatcher(options) {\n if (options.allowUrl) {\n return options.allowUrl;\n } else if (options.urlPrefixAllowlist) {\n return buildPrefixMatcher(options.urlPrefixAllowlist);\n } else if (options.config) {\n return buildPrefixMatcher([options.config.getString(\"backend.baseUrl\")]);\n }\n return () => false;\n}\nfunction buildPrefixMatcher(prefixes) {\n const trimmedPrefixes = prefixes.map((prefix) => prefix.replace(/\\/$/, \"\"));\n return (url) => trimmedPrefixes.some(\n (prefix) => url === prefix || url.startsWith(`${prefix}/`)\n );\n}\n\nfunction join(left, right) {\n if (!right || right === \"/\") {\n return left;\n }\n return `${left.replace(/\\/$/, \"\")}/${right.replace(/^\\//, \"\")}`;\n}\nclass PluginProtocolResolverFetchMiddleware {\n constructor(discoveryApi) {\n this.discoveryApi = discoveryApi;\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const prefix = \"plugin://\";\n if (!request.url.startsWith(prefix)) {\n return next(input, init);\n }\n const { hostname, pathname, search, hash, username, password } = new URL(\n `http://${request.url.substring(prefix.length)}`\n );\n let base = await this.discoveryApi.getBaseUrl(hostname);\n if (username || password) {\n const baseUrl = new URL(base);\n const authority = `${username}${password ? `:${password}` : \"\"}@`;\n base = `${baseUrl.protocol}//${authority}${baseUrl.host}${baseUrl.pathname}`;\n }\n const target = `${join(base, pathname)}${search}${hash}`;\n return next(\n target,\n typeof input === \"string\" || isUrl(input) ? init : input\n );\n };\n }\n}\nfunction isUrl(a) {\n return typeof a === \"object\" && (a == null ? void 0 : a.constructor) === URL;\n}\n\nclass FetchMiddlewares {\n /**\n * Handles translation from `plugin://` URLs to concrete http(s) URLs based on\n * the discovery API.\n *\n * @remarks\n *\n * If the request is for `plugin://catalog/entities?filter=x=y`, the discovery\n * API will be queried for `'catalog'`. If it returned\n * `https://backstage.example.net/api/catalog`, the resulting query would be\n * `https://backstage.example.net/api/catalog/entities?filter=x=y`.\n *\n * If the incoming URL protocol was not `plugin`, the request is just passed\n * through verbatim to the underlying implementation.\n */\n static resolvePluginProtocol(options) {\n return new PluginProtocolResolverFetchMiddleware(options.discoveryApi);\n }\n /**\n * Injects a Backstage token header when the user is signed in.\n *\n * @remarks\n *\n * Per default, an `Authorization: Bearer ` is generated. This can be\n * customized using the `header` option.\n *\n * The header injection only happens on allowlisted URLs. Per default, if the\n * `config` option is passed in, the `backend.baseUrl` is allowlisted, unless\n * the `urlPrefixAllowlist` or `allowUrl` options are passed in, in which case\n * they take precedence. If you pass in neither config nor an\n * allowlist/callback, the middleware will have no effect since effectively no\n * request will match the (nonexistent) rules.\n */\n static injectIdentityAuth(options) {\n return IdentityAuthInjectorFetchMiddleware.create(options);\n }\n constructor() {\n }\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$5 = (obj, key, value) => {\n __defNormalProp$5(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nfunction hasScopes(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nfunction joinScopes(scopes, ...moreScopess) {\n const result = new Set(scopes);\n for (const moreScopes of moreScopess) {\n for (const scope of moreScopes) {\n result.add(scope);\n }\n }\n return result;\n}\nclass OAuthPendingRequests {\n constructor() {\n __publicField$5(this, \"requests\", []);\n __publicField$5(this, \"subject\", new BehaviorSubject(\n this.getCurrentPending()\n ));\n }\n request(scopes) {\n return new Promise((resolve, reject) => {\n this.requests.push({ scopes, resolve, reject });\n this.subject.next(this.getCurrentPending());\n });\n }\n resolve(scopes, result) {\n this.requests = this.requests.filter((request) => {\n if (hasScopes(scopes, request.scopes)) {\n request.resolve(result);\n return false;\n }\n return true;\n });\n this.subject.next(this.getCurrentPending());\n }\n reject(error) {\n this.requests.forEach((request) => request.reject(error));\n this.requests = [];\n this.subject.next(this.getCurrentPending());\n }\n pending() {\n return this.subject;\n }\n getCurrentPending() {\n const currentScopes = this.requests.length === 0 ? void 0 : this.requests.slice(1).reduce(\n (acc, current) => joinScopes(acc, current.scopes),\n this.requests[0].scopes\n );\n return {\n scopes: currentScopes,\n resolve: (value) => {\n if (currentScopes) {\n this.resolve(currentScopes, value);\n }\n },\n reject: (reason) => {\n if (currentScopes) {\n this.reject(reason);\n }\n }\n };\n }\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$4 = (obj, key, value) => {\n __defNormalProp$4(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass OAuthRequestManager {\n constructor() {\n __publicField$4(this, \"subject\", new BehaviorSubject([]));\n __publicField$4(this, \"currentRequests\", []);\n __publicField$4(this, \"handlerCount\", 0);\n }\n createAuthRequester(options) {\n const handler = new OAuthPendingRequests();\n const index = this.handlerCount;\n this.handlerCount++;\n handler.pending().subscribe({\n next: (scopeRequest) => {\n const newRequests = this.currentRequests.slice();\n const request = this.makeAuthRequest(scopeRequest, options);\n if (!request) {\n delete newRequests[index];\n } else {\n newRequests[index] = request;\n }\n this.currentRequests = newRequests;\n this.subject.next(newRequests.filter(Boolean));\n }\n });\n return (scopes) => {\n return handler.request(scopes);\n };\n }\n // Converts the pending request and popup options into a popup request that we can forward to subscribers.\n makeAuthRequest(request, options) {\n const { scopes } = request;\n if (!scopes) {\n return void 0;\n }\n return {\n provider: options.provider,\n trigger: async () => {\n const result = await options.onAuthRequest(scopes);\n request.resolve(result);\n },\n reject: () => {\n const error = new Error(\"Login failed, rejected by user\");\n error.name = \"RejectedError\";\n request.reject(error);\n }\n };\n }\n authRequest$() {\n return this.subject;\n }\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$3 = (obj, key, value) => {\n __defNormalProp$3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst buckets = /* @__PURE__ */ new Map();\nconst _WebStorage = class _WebStorage {\n constructor(namespace, errorApi) {\n this.namespace = namespace;\n this.errorApi = errorApi;\n __publicField$3(this, \"subscribers\", /* @__PURE__ */ new Set());\n __publicField$3(this, \"observable\", new ObservableImpl((subscriber) => {\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n }));\n }\n static create(options) {\n var _a;\n return new _WebStorage((_a = options.namespace) != null ? _a : \"\", options.errorApi);\n }\n static addStorageEventListener() {\n window.addEventListener(\"storage\", (event) => {\n var _a;\n for (const [bucketPath, webStorage] of buckets.entries()) {\n if ((_a = event.key) == null ? void 0 : _a.startsWith(bucketPath)) {\n webStorage.handleStorageChange(event.key);\n }\n }\n });\n }\n get(key) {\n return this.snapshot(key).value;\n }\n snapshot(key) {\n let value = void 0;\n let presence = \"absent\";\n try {\n const item = localStorage.getItem(this.getKeyName(key));\n if (item) {\n value = JSON.parse(item, (_key, val) => {\n if (typeof val === \"object\" && val !== null) {\n Object.freeze(val);\n }\n return val;\n });\n presence = \"present\";\n }\n } catch (e) {\n this.errorApi.post(\n new Error(`Error when parsing JSON config from storage for: ${key}`)\n );\n }\n return { key, value, presence };\n }\n forBucket(name) {\n const bucketPath = `${this.namespace}/${name}`;\n if (!buckets.has(bucketPath)) {\n buckets.set(bucketPath, new _WebStorage(bucketPath, this.errorApi));\n }\n return buckets.get(bucketPath);\n }\n async set(key, data) {\n localStorage.setItem(this.getKeyName(key), JSON.stringify(data));\n this.notifyChanges(key);\n }\n async remove(key) {\n localStorage.removeItem(this.getKeyName(key));\n this.notifyChanges(key);\n }\n observe$(key) {\n if (!_WebStorage.hasSubscribed) {\n _WebStorage.addStorageEventListener();\n _WebStorage.hasSubscribed = true;\n }\n return this.observable.filter(({ key: messageKey }) => messageKey === key);\n }\n handleStorageChange(eventKey) {\n if (!(eventKey == null ? void 0 : eventKey.startsWith(this.namespace))) {\n return;\n }\n const trimmedKey = eventKey == null ? void 0 : eventKey.slice(`${this.namespace}/`.length);\n if (!trimmedKey.includes(\"/\")) {\n this.notifyChanges(decodeURIComponent(trimmedKey));\n }\n }\n getKeyName(key) {\n return `${this.namespace}/${encodeURIComponent(key)}`;\n }\n notifyChanges(key) {\n const snapshot = this.snapshot(key);\n for (const subscription of this.subscribers) {\n subscription.next(snapshot);\n }\n }\n};\n__publicField$3(_WebStorage, \"hasSubscribed\", false);\nlet WebStorage = _WebStorage;\n\nconst InternalAppContext = createContext(void 0);\n\nfunction isReactRouterBeta() {\n const [obj] = createRoutesFromChildren(/* @__PURE__ */ React.createElement(Route, { index: true, element: /* @__PURE__ */ React.createElement(\"div\", null) }));\n return !obj.index;\n}\n\nconst getExtensionContext = (pathname, routes) => {\n try {\n const matches = matchRoutes(routes, { pathname });\n const routeMatch = matches == null ? void 0 : matches.filter((match) => {\n var _a;\n return ((_a = match == null ? void 0 : match.route.routeRefs) == null ? void 0 : _a.size) > 0;\n }).pop();\n const routeObject = routeMatch == null ? void 0 : routeMatch.route;\n if (!routeObject) {\n return void 0;\n }\n if (routeObject.path === \"\" && pathname !== \"/\") {\n return void 0;\n }\n let routeRef;\n if (routeObject.routeRefs.size === 1) {\n routeRef = routeObject.routeRefs.values().next().value;\n }\n let plugin;\n if (routeObject.plugins.size === 1) {\n plugin = routeObject.plugins.values().next().value;\n }\n const params = Object.entries(\n (routeMatch == null ? void 0 : routeMatch.params) || {}\n ).reduce((acc, [key, value]) => {\n if (value !== void 0 && key !== \"*\") {\n acc[key] = value;\n }\n return acc;\n }, {});\n return {\n extension: \"App\",\n pluginId: (plugin == null ? void 0 : plugin.getId()) || \"root\",\n ...routeRef ? { routeRef: routeRef.id } : {},\n _routeNodeType: routeObject.element,\n params\n };\n } catch {\n return void 0;\n }\n};\nconst TrackNavigation = ({\n pathname,\n search,\n hash,\n attributes\n}) => {\n const analytics = useAnalytics();\n useEffect(() => {\n analytics.captureEvent(\"navigate\", `${pathname}${search}${hash}`, {\n attributes\n });\n }, [analytics, pathname, search, hash, attributes]);\n return null;\n};\nconst RouteTracker = ({\n routeObjects\n}) => {\n const { pathname, search, hash } = useLocation();\n const { params, ...attributes } = getExtensionContext(\n pathname,\n routeObjects\n ) || { params: {} };\n return /* @__PURE__ */ React.createElement(AnalyticsContext, { attributes }, /* @__PURE__ */ React.createElement(\n TrackNavigation,\n {\n pathname,\n search,\n hash,\n attributes: params\n }\n ));\n};\n\nfunction getBasePath(configApi) {\n if (!isReactRouterBeta()) {\n return \"\";\n }\n return readBasePath(configApi);\n}\nfunction readBasePath(configApi) {\n var _a;\n let { pathname } = new URL(\n (_a = configApi.getOptionalString(\"app.baseUrl\")) != null ? _a : \"/\",\n \"http://sample.dev\"\n // baseUrl can be specified as just a path\n );\n pathname = pathname.replace(/\\/*$/, \"\");\n return pathname;\n}\nfunction SignInPageWrapper({\n component: Component,\n appIdentityProxy,\n children\n}) {\n const [identityApi, setIdentityApi] = useState();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n if (!identityApi) {\n return /* @__PURE__ */ React.createElement(Component, { onSignInSuccess: setIdentityApi });\n }\n appIdentityProxy.setTarget(identityApi, {\n signOutTargetUrl: basePath || \"/\"\n });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, children);\n}\nfunction AppRouter(props) {\n const { Router: RouterComponent, SignInPage: SignInPageComponent } = useApp().getComponents();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n const mountPath = `${basePath}/*`;\n const internalAppContext = useContext(InternalAppContext);\n if (!internalAppContext) {\n throw new Error(\"AppRouter must be rendered within the AppProvider\");\n }\n const { routeObjects, appIdentityProxy } = internalAppContext;\n if (!SignInPageComponent) {\n appIdentityProxy.setTarget(\n {\n getUserId: () => \"guest\",\n getIdToken: async () => void 0,\n getProfile: () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getProfileInfo: async () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getBackstageIdentity: async () => ({\n type: \"user\",\n userEntityRef: \"user:default/guest\",\n ownershipEntityRefs: [\"user:default/guest\"]\n }),\n getCredentials: async () => ({}),\n signOut: async () => {\n }\n },\n { signOutTargetUrl: basePath || \"/\" }\n );\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ React.createElement(RouterComponent, null, /* @__PURE__ */ React.createElement(RouteTracker, { routeObjects }), /* @__PURE__ */ React.createElement(Routes, null, /* @__PURE__ */ React.createElement(Route, { path: mountPath, element: /* @__PURE__ */ React.createElement(React.Fragment, null, props.children) })));\n }\n return /* @__PURE__ */ React.createElement(RouterComponent, { basename: basePath }, /* @__PURE__ */ React.createElement(RouteTracker, { routeObjects }), props.children);\n }\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ React.createElement(RouterComponent, null, /* @__PURE__ */ React.createElement(RouteTracker, { routeObjects }), /* @__PURE__ */ React.createElement(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy\n },\n /* @__PURE__ */ React.createElement(Routes, null, /* @__PURE__ */ React.createElement(Route, { path: mountPath, element: /* @__PURE__ */ React.createElement(React.Fragment, null, props.children) }))\n ));\n }\n return /* @__PURE__ */ React.createElement(RouterComponent, { basename: basePath }, /* @__PURE__ */ React.createElement(RouteTracker, { routeObjects }), /* @__PURE__ */ React.createElement(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy\n },\n props.children\n ));\n}\nattachComponentData(AppRouter, \"core.type\", \"AppRouter\");\n\nfunction traverseElementTree(options) {\n const collectors = {};\n for (const name in options.collectors) {\n if (options.collectors.hasOwnProperty(name)) {\n collectors[name] = options.collectors[name]();\n }\n }\n const queue = [\n {\n node: Children.toArray(options.root),\n parent: void 0,\n contexts: {}\n }\n ];\n while (queue.length !== 0) {\n const { node, parent, contexts } = queue.shift();\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const nextContexts = {};\n for (const name in collectors) {\n if (collectors.hasOwnProperty(name)) {\n const collector = collectors[name];\n nextContexts[name] = collector.visit(\n collector.accumulator,\n element,\n parent,\n contexts[name]\n );\n }\n }\n for (const discoverer of options.discoverers) {\n const children = discoverer(element);\n if (children) {\n queue.push({\n node: children,\n parent: element,\n contexts: nextContexts\n });\n }\n }\n });\n }\n return Object.fromEntries(\n Object.entries(collectors).map(([name, c]) => [name, c.accumulator])\n );\n}\nfunction createCollector(accumulatorFactory, visit) {\n return () => ({ accumulator: accumulatorFactory(), visit });\n}\nfunction childDiscoverer(element) {\n var _a;\n return (_a = element.props) == null ? void 0 : _a.children;\n}\nfunction routeElementDiscoverer(element) {\n var _a, _b, _c;\n if (((_a = element.props) == null ? void 0 : _a.path) && ((_b = element.props) == null ? void 0 : _b.element)) {\n return (_c = element.props) == null ? void 0 : _c.element;\n }\n return void 0;\n}\n\nconst pluginCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n const plugin = getComponentData(node, \"core.plugin\");\n if (plugin) {\n acc.add(plugin);\n }\n }\n);\n\nconst FeatureFlagged = (props) => {\n const { children } = props;\n const featureFlagApi = useApi(featureFlagsApiRef);\n const isEnabled = \"with\" in props ? featureFlagApi.isActive(props.with) : !featureFlagApi.isActive(props.without);\n return /* @__PURE__ */ React.createElement(React.Fragment, null, isEnabled ? children : null);\n};\nattachComponentData(FeatureFlagged, \"core.featureFlagged\", true);\n\nconst MATCH_ALL_ROUTE = {\n caseSensitive: false,\n path: \"*\",\n element: \"match-all\",\n // These elements aren't used, so we add in a bit of debug information\n routeRefs: /* @__PURE__ */ new Set(),\n plugins: /* @__PURE__ */ new Set()\n};\nfunction stringifyNode(node) {\n var _a, _b;\n const anyNode = node;\n if (anyNode == null ? void 0 : anyNode.type) {\n return (_b = (_a = anyNode.type.displayName) != null ? _a : anyNode.type.name) != null ? _b : String(anyNode.type);\n }\n return String(anyNode);\n}\nconst pluginSet = (plugin) => {\n const set = /* @__PURE__ */ new Set();\n if (plugin) {\n set.add(plugin);\n }\n return set;\n};\nfunction collectSubTree(node, entries = new Array()) {\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const routeRef = getComponentData(element, \"core.mountPoint\");\n if (routeRef) {\n const plugin = getComponentData(element, \"core.plugin\");\n entries.push({ routeRef, plugin });\n }\n collectSubTree(element.props.children, entries);\n });\n return entries;\n}\nconst routingV2Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n var _a, _b, _c, _d, _e, _f, _g;\n if (ctx == null ? void 0 : ctx.isElementAncestor) {\n return ctx;\n }\n if ((parent == null ? void 0 : parent.props.element) === node) {\n return { ...ctx, isElementAncestor: true };\n }\n const pathProp = (_a = node.props) == null ? void 0 : _a.path;\n const mountPoint = getComponentData(node, \"core.mountPoint\");\n if (mountPoint && pathProp) {\n throw new Error(\n `Path property may not be set directly on a routable extension \"${stringifyNode(\n node\n )}\"`\n );\n }\n const parentChildren = (_c = (_b = ctx == null ? void 0 : ctx.obj) == null ? void 0 : _b.children) != null ? _c : acc.objects;\n if (pathProp !== void 0) {\n if (typeof pathProp !== \"string\") {\n throw new Error(\n `Element path must be a string at \"${stringifyNode(node)}\"`\n );\n }\n const path = pathProp.startsWith(\"/\") ? pathProp.slice(1) : pathProp;\n const elementProp = node.props.element;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (elementProp) {\n throw new Error(\n `Mount point gatherers may not have an element prop \"${stringifyNode(\n node\n )}\"`\n );\n }\n const newObj = {\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n caseSensitive: Boolean((_d = node.props) == null ? void 0 : _d.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: /* @__PURE__ */ new Set()\n };\n parentChildren.push(newObj);\n return {\n obj: newObj,\n gatherPath: path,\n routeRef: ctx == null ? void 0 : ctx.routeRef,\n gatherRouteRef: ctx == null ? void 0 : ctx.routeRef\n };\n }\n if (elementProp) {\n const [extension, ...others] = collectSubTree(elementProp);\n if (others.length > 0) {\n throw new Error(\n `Route element with path \"${pathProp}\" may not contain multiple routable extensions`\n );\n }\n if (!extension) {\n return ctx;\n }\n const { routeRef, plugin } = extension;\n const newObj = {\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n caseSensitive: Boolean((_e = node.props) == null ? void 0 : _e.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(plugin)\n };\n parentChildren.push(newObj);\n acc.paths.set(routeRef, path);\n acc.parents.set(routeRef, ctx == null ? void 0 : ctx.routeRef);\n return {\n obj: newObj,\n routeRef: routeRef != null ? routeRef : ctx == null ? void 0 : ctx.routeRef,\n gatherPath: path,\n gatherRouteRef: ctx == null ? void 0 : ctx.gatherRouteRef\n };\n }\n }\n if (mountPoint) {\n if ((ctx == null ? void 0 : ctx.gatherPath) === void 0) {\n throw new Error(\n `Routable extension \"${stringifyNode(\n node\n )}\" with mount point \"${mountPoint}\" must be assigned a path`\n );\n }\n (_f = ctx == null ? void 0 : ctx.obj) == null ? void 0 : _f.routeRefs.add(mountPoint);\n const mountPointPlugin = getComponentData(\n node,\n \"core.plugin\"\n );\n if (mountPointPlugin) {\n (_g = ctx == null ? void 0 : ctx.obj) == null ? void 0 : _g.plugins.add(mountPointPlugin);\n }\n acc.paths.set(mountPoint, ctx.gatherPath);\n acc.parents.set(mountPoint, ctx == null ? void 0 : ctx.gatherRouteRef);\n return {\n ...ctx,\n routeRef: mountPoint\n };\n }\n return ctx;\n }\n);\nconst routingV1Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n var _a, _b, _c, _d, _e;\n if ((parent == null ? void 0 : parent.props.element) === node) {\n return ctx;\n }\n let currentObj = ctx == null ? void 0 : ctx.obj;\n let currentParentRouteRef = ctx == null ? void 0 : ctx.routeRef;\n let sticky = ctx == null ? void 0 : ctx.sticky;\n const path = (_a = node.props) == null ? void 0 : _a.path;\n const parentChildren = (_b = currentObj == null ? void 0 : currentObj.children) != null ? _b : acc.objects;\n const caseSensitive = Boolean((_c = node.props) == null ? void 0 : _c.caseSensitive);\n let currentCtxPath = ctx == null ? void 0 : ctx.path;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n currentCtxPath = path;\n }\n const element = (_d = node.props) == null ? void 0 : _d.element;\n let routeRef = getComponentData(node, \"core.mountPoint\");\n if (!routeRef && isValidElement(element)) {\n routeRef = getComponentData(element, \"core.mountPoint\");\n }\n if (routeRef) {\n let routePath = path;\n if (currentCtxPath) {\n if (routePath) {\n currentCtxPath = void 0;\n } else {\n routePath = currentCtxPath;\n }\n }\n if (!routePath) {\n throw new Error(\"Mounted routable extension must have a path\");\n }\n acc.paths.set(routeRef, routePath);\n if (currentParentRouteRef && sticky) {\n acc.parents.set(routeRef, currentParentRouteRef);\n if (path) {\n currentParentRouteRef = routeRef;\n sticky = false;\n }\n } else {\n acc.parents.set(routeRef, currentParentRouteRef);\n currentParentRouteRef = routeRef;\n }\n if (path) {\n currentObj = {\n caseSensitive,\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(\n getComponentData(\n node.props.element,\n \"core.plugin\"\n )\n )\n };\n parentChildren.push(currentObj);\n } else {\n currentObj == null ? void 0 : currentObj.routeRefs.add(routeRef);\n }\n }\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n sticky = true;\n }\n const isGatherer = getComponentData(\n node,\n \"core.gatherMountPoints\"\n );\n if (isGatherer) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n if (!routeRef) {\n currentObj = {\n caseSensitive,\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n children: [MATCH_ALL_ROUTE],\n plugins: ((_e = ctx == null ? void 0 : ctx.obj) == null ? void 0 : _e.plugins) || /* @__PURE__ */ new Set()\n };\n parentChildren.push(currentObj);\n }\n }\n return {\n obj: currentObj,\n path: currentCtxPath,\n routeRef: currentParentRouteRef,\n sticky\n };\n }\n);\nconst featureFlagCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n if (node.type === FeatureFlagged) {\n const props = node.props;\n acc.add(\"with\" in props ? props.with : props.without);\n }\n }\n);\n\nconst routeRefType = getOrCreateGlobalSingleton(\n \"route-ref-type\",\n () => Symbol(\"route-ref-type\")\n);\nfunction isRouteRef(routeRef) {\n return routeRef[routeRefType] === \"absolute\";\n}\nfunction isSubRouteRef(routeRef) {\n return routeRef[routeRefType] === \"sub\";\n}\nfunction isExternalRouteRef(routeRef) {\n return routeRef[routeRefType] === \"external\";\n}\n\nfunction joinPaths(...paths) {\n const normalized = paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n if (normalized !== \"/\" && normalized.endsWith(\"/\")) {\n return normalized.slice(0, -1);\n }\n return normalized;\n}\n\nfunction resolveTargetRef(anyRouteRef, routePaths, routeBindings) {\n let targetRef;\n let subRoutePath = \"\";\n if (isRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef;\n } else if (isSubRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef.parent;\n subRoutePath = anyRouteRef.path;\n } else if (isExternalRouteRef(anyRouteRef)) {\n const resolvedRoute = routeBindings.get(anyRouteRef);\n if (!resolvedRoute) {\n return [void 0, \"\"];\n }\n if (isRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute;\n } else if (isSubRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute.parent;\n subRoutePath = resolvedRoute.path;\n } else {\n throw new Error(\n `ExternalRouteRef was bound to invalid target, ${resolvedRoute}`\n );\n }\n } else if (anyRouteRef[routeRefType]) {\n throw new Error(\n `Unknown or invalid route ref type, ${anyRouteRef[routeRefType]}`\n );\n } else {\n throw new Error(`Unknown object passed to useRouteRef, got ${anyRouteRef}`);\n }\n if (!targetRef) {\n return [void 0, \"\"];\n }\n const resolvedPath = routePaths.get(targetRef);\n if (resolvedPath === void 0) {\n return [void 0, \"\"];\n }\n const targetPath = joinPaths(resolvedPath, subRoutePath);\n return [targetRef, targetPath];\n}\nfunction resolveBasePath(targetRef, sourceLocation, routePaths, routeParents, routeObjects) {\n var _a;\n const match = (_a = matchRoutes(routeObjects, sourceLocation)) != null ? _a : [];\n const refDiffList = Array();\n let matchIndex = -1;\n for (let targetSearchRef = targetRef; targetSearchRef; targetSearchRef = routeParents.get(targetSearchRef)) {\n matchIndex = match.findIndex(\n (m) => m.route.routeRefs.has(targetSearchRef)\n );\n if (matchIndex !== -1) {\n break;\n }\n refDiffList.unshift(targetSearchRef);\n }\n if (refDiffList.length === 0) {\n matchIndex -= 1;\n }\n const parentPath = matchIndex === -1 ? \"\" : match[matchIndex].pathname;\n const diffPaths = refDiffList.slice(0, -1).map((ref) => {\n const path = routePaths.get(ref);\n if (path === void 0) {\n throw new Error(`No path for ${ref}`);\n }\n if (path.includes(\":\")) {\n throw new Error(\n `Cannot route to ${targetRef} with parent ${ref} as it has parameters`\n );\n }\n return path;\n });\n return `${joinPaths(parentPath, ...diffPaths)}/`;\n}\nclass RouteResolver {\n constructor(routePaths, routeParents, routeObjects, routeBindings, appBasePath) {\n this.routePaths = routePaths;\n this.routeParents = routeParents;\n this.routeObjects = routeObjects;\n this.routeBindings = routeBindings;\n this.appBasePath = appBasePath;\n }\n resolve(anyRouteRef, sourceLocation) {\n const [targetRef, targetPath] = resolveTargetRef(\n anyRouteRef,\n this.routePaths,\n this.routeBindings\n );\n if (!targetRef) {\n return void 0;\n }\n let relativeSourceLocation;\n if (typeof sourceLocation === \"string\") {\n relativeSourceLocation = this.trimPath(sourceLocation);\n } else if (sourceLocation.pathname) {\n relativeSourceLocation = {\n ...sourceLocation,\n pathname: this.trimPath(sourceLocation.pathname)\n };\n } else {\n relativeSourceLocation = sourceLocation;\n }\n const basePath = this.appBasePath + resolveBasePath(\n targetRef,\n relativeSourceLocation,\n this.routePaths,\n this.routeParents,\n this.routeObjects\n );\n const routeFunc = (...[params]) => {\n const encodedParams = params && mapValues(params, (value) => {\n if (typeof value === \"string\") {\n return value.replaceAll(/[&?#;\\/]/g, (c) => encodeURIComponent(c));\n }\n return value;\n });\n return joinPaths(basePath, generatePath(targetPath, encodedParams));\n };\n return routeFunc;\n }\n trimPath(targetPath) {\n if (!targetPath) {\n return targetPath;\n }\n if (targetPath.startsWith(this.appBasePath)) {\n return targetPath.slice(this.appBasePath.length);\n }\n return targetPath;\n }\n}\n\nconst RoutingContext = createVersionedContext(\n \"routing-context\"\n);\nconst RoutingProvider = ({\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath = \"\",\n children\n}) => {\n const resolver = new RouteResolver(\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath\n );\n const versionedValue = createVersionedValueMap({ 1: resolver });\n return /* @__PURE__ */ React.createElement(RoutingContext.Provider, { value: versionedValue }, children);\n};\n\nfunction validateRouteParameters(routePaths, routeParents) {\n const notLeafRoutes = new Set(routeParents.values());\n notLeafRoutes.delete(void 0);\n for (const route of routeParents.keys()) {\n if (notLeafRoutes.has(route)) {\n continue;\n }\n let currentRouteRef = route;\n let fullPath = \"\";\n while (currentRouteRef) {\n const path = routePaths.get(currentRouteRef);\n if (path === void 0) {\n throw new Error(`No path for ${currentRouteRef}`);\n }\n fullPath = joinPaths(path, fullPath);\n currentRouteRef = routeParents.get(currentRouteRef);\n }\n const params = fullPath.match(/:(\\w+)/g);\n if (params) {\n for (let j = 0; j < params.length; j++) {\n for (let i = j + 1; i < params.length; i++) {\n if (params[i] === params[j]) {\n throw new Error(\n `Parameter ${params[i]} is duplicated in path ${fullPath}`\n );\n }\n }\n }\n }\n }\n}\nfunction validateRouteBindings(routeBindings, plugins) {\n for (const plugin of plugins) {\n if (!plugin.externalRoutes) {\n continue;\n }\n for (const [name, externalRouteRef] of Object.entries(\n plugin.externalRoutes\n )) {\n if (externalRouteRef.optional) {\n continue;\n }\n if (!routeBindings.has(externalRouteRef)) {\n throw new Error(\n `External route '${name}' of the '${plugin.getId()}' plugin must be bound to a target route. See https://backstage.io/link?bind-routes for details.`\n );\n }\n }\n }\n}\n\nconst AppContext = createVersionedContext(\"app-context\");\nconst AppContextProvider = ({\n appContext,\n children\n}) => {\n const versionedValue = createVersionedValueMap({ 1: appContext });\n return /* @__PURE__ */ React.createElement(AppContext.Provider, { value: versionedValue, children });\n};\n\nconst PLUGIN_ID = \"app\";\nconst CHANNEL_ID = `${PLUGIN_ID}-auth-cookie-expires-at`;\nconst MIN_BASE_DELAY_MS = 5 * 6e4;\nconst ERROR_BACKOFF_START = 5e3;\nconst ERROR_BACKOFF_FACTOR = 2;\nconst ERROR_BACKOFF_MAX = 5 * 6e4;\nfunction startCookieAuthRefresh({\n discoveryApi,\n fetchApi,\n errorApi\n}) {\n let stopped = false;\n let timeout;\n let firstError = true;\n let errorBackoff = ERROR_BACKOFF_START;\n const channel = \"BroadcastChannel\" in window ? new BroadcastChannel(CHANNEL_ID) : void 0;\n const getDelay = (expiresAt) => {\n const margin = (1 + 3 * Math.random()) * 6e4;\n const delay = Math.max(expiresAt - Date.now(), MIN_BASE_DELAY_MS) - margin;\n return delay;\n };\n const refresh = async () => {\n try {\n const baseUrl = await discoveryApi.getBaseUrl(PLUGIN_ID);\n const requestUrl = `${baseUrl}/.backstage/auth/v1/cookie`;\n const res = await fetchApi.fetch(requestUrl, {\n credentials: \"include\"\n });\n if (!res.ok) {\n throw new Error(\n `Request failed with status ${res.status} ${res.statusText}, see request towards ${requestUrl} for more details`\n );\n }\n const data = await res.json();\n if (!data.expiresAt) {\n throw new Error(\"No expiration date in response\");\n }\n const expiresAt = Date.parse(data.expiresAt);\n if (Number.isNaN(expiresAt)) {\n throw new Error(\"Invalid expiration date in response\");\n }\n firstError = true;\n channel == null ? void 0 : channel.postMessage({\n action: \"COOKIE_REFRESH_SUCCESS\",\n payload: { expiresAt: new Date(expiresAt).toISOString() }\n });\n scheduleRefresh(getDelay(expiresAt));\n } catch (error) {\n if (firstError) {\n firstError = false;\n errorBackoff = ERROR_BACKOFF_START;\n } else {\n errorBackoff = Math.min(\n ERROR_BACKOFF_MAX,\n errorBackoff * ERROR_BACKOFF_FACTOR\n );\n console.error(\"Session cookie refresh failed\", error);\n errorApi.post(\n new Error(\n `Session refresh failed, see developer console for details`\n )\n );\n }\n scheduleRefresh(errorBackoff);\n }\n };\n const onMessage = (event) => {\n const { data } = event;\n if (data === null || typeof data !== \"object\") {\n return;\n }\n if (\"action\" in data && data.action === \"COOKIE_REFRESH_SUCCESS\") {\n const expiresAt = Date.parse(data.payload.expiresAt);\n if (Number.isNaN(expiresAt)) {\n console.warn(\n \"Received invalid expiration from session refresh channel\"\n );\n return;\n }\n scheduleRefresh(getDelay(expiresAt));\n }\n };\n function scheduleRefresh(delayMs) {\n if (stopped) {\n return;\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(refresh, delayMs);\n }\n channel == null ? void 0 : channel.addEventListener(\"message\", onMessage);\n refresh();\n return () => {\n stopped = true;\n if (timeout) {\n clearTimeout(timeout);\n }\n channel == null ? void 0 : channel.removeEventListener(\"message\", onMessage);\n channel == null ? void 0 : channel.close();\n };\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => {\n __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck$3 = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet$3 = (obj, member, getter) => {\n __accessCheck$3(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd$3 = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet$3 = (obj, member, value, setter) => {\n __accessCheck$3(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar _cookieAuthSignOut;\nfunction mkError(thing) {\n return new Error(\n `Tried to access IdentityApi ${thing} before app was loaded`\n );\n}\nfunction logDeprecation(thing) {\n console.warn(\n `WARNING: Call to ${thing} is deprecated and will break in the future`\n );\n}\nclass AppIdentityProxy {\n constructor() {\n __publicField$2(this, \"target\");\n __publicField$2(this, \"waitForTarget\");\n __publicField$2(this, \"resolveTarget\", () => {\n });\n __publicField$2(this, \"signOutTargetUrl\", \"/\");\n __privateAdd$3(this, _cookieAuthSignOut, void 0);\n this.waitForTarget = new Promise((resolve) => {\n this.resolveTarget = resolve;\n });\n }\n // This is called by the app manager once the sign-in page provides us with an implementation\n setTarget(identityApi, targetOptions) {\n this.target = identityApi;\n this.signOutTargetUrl = targetOptions.signOutTargetUrl;\n this.resolveTarget(identityApi);\n }\n getUserId() {\n if (!this.target) {\n throw mkError(\"getUserId\");\n }\n if (!this.target.getUserId) {\n throw new Error(\"IdentityApi does not implement getUserId\");\n }\n logDeprecation(\"getUserId\");\n return this.target.getUserId();\n }\n getProfile() {\n if (!this.target) {\n throw mkError(\"getProfile\");\n }\n if (!this.target.getProfile) {\n throw new Error(\"IdentityApi does not implement getProfile\");\n }\n logDeprecation(\"getProfile\");\n return this.target.getProfile();\n }\n async getProfileInfo() {\n return this.waitForTarget.then((target) => target.getProfileInfo());\n }\n async getBackstageIdentity() {\n const identity = await this.waitForTarget.then(\n (target) => target.getBackstageIdentity()\n );\n if (!identity.userEntityRef.match(/^.*:.*\\/.*$/)) {\n console.warn(\n `WARNING: The App IdentityApi provided an invalid userEntityRef, '${identity.userEntityRef}'. It must be a full Entity Reference of the form ':/'.`\n );\n }\n return identity;\n }\n async getCredentials() {\n return this.waitForTarget.then((target) => target.getCredentials());\n }\n async getIdToken() {\n return this.waitForTarget.then((target) => {\n if (!target.getIdToken) {\n throw new Error(\"IdentityApi does not implement getIdToken\");\n }\n logDeprecation(\"getIdToken\");\n return target.getIdToken();\n });\n }\n async signOut() {\n var _a;\n await this.waitForTarget.then((target) => target.signOut());\n await ((_a = __privateGet$3(this, _cookieAuthSignOut)) == null ? void 0 : _a.call(this));\n window.location.href = this.signOutTargetUrl;\n }\n enableCookieAuth(ctx) {\n if (__privateGet$3(this, _cookieAuthSignOut)) {\n return;\n }\n const stopRefresh = startCookieAuthRefresh(ctx);\n __privateSet$3(this, _cookieAuthSignOut, async () => {\n stopRefresh();\n const appBaseUrl = await ctx.discoveryApi.getBaseUrl(\"app\");\n try {\n await ctx.fetchApi.fetch(`${appBaseUrl}/.backstage/auth/v1/cookie`, {\n method: \"DELETE\"\n });\n } catch {\n }\n });\n }\n}\n_cookieAuthSignOut = new WeakMap();\n\nfunction resolveTheme(themeId, shouldPreferDark, themes) {\n if (themeId !== void 0) {\n const selectedTheme = themes.find((theme) => theme.id === themeId);\n if (selectedTheme) {\n return selectedTheme;\n }\n }\n if (shouldPreferDark) {\n const darkTheme = themes.find((theme) => theme.variant === \"dark\");\n if (darkTheme) {\n return darkTheme;\n }\n }\n const lightTheme = themes.find((theme) => theme.variant === \"light\");\n if (lightTheme) {\n return lightTheme;\n }\n return themes[0];\n}\nconst useShouldPreferDarkTheme = () => {\n const mediaQuery = useMemo(\n () => window.matchMedia(\"(prefers-color-scheme: dark)\"),\n []\n );\n const [shouldPreferDark, setPrefersDark] = useState(mediaQuery.matches);\n useEffect(() => {\n const listener = (event) => {\n setPrefersDark(event.matches);\n };\n mediaQuery.addListener(listener);\n return () => {\n mediaQuery.removeListener(listener);\n };\n }, [mediaQuery]);\n return shouldPreferDark;\n};\nfunction AppThemeProvider({ children }) {\n const appThemeApi = useApi(appThemeApiRef);\n const themeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId()\n );\n const shouldPreferDark = Boolean(window.matchMedia) ? useShouldPreferDarkTheme() : false;\n const appTheme = resolveTheme(\n themeId,\n shouldPreferDark,\n appThemeApi.getInstalledThemes()\n );\n if (!appTheme) {\n throw new Error(\"App has no themes\");\n }\n return /* @__PURE__ */ React.createElement(appTheme.Provider, { children });\n}\n\nconst defaultConfigLoader = async () => defaultConfigLoaderSync();\nfunction defaultConfigLoaderSync(runtimeConfigJson = \"__APP_INJECTED_RUNTIME_CONFIG__\") {\n const appConfig = process.env.APP_CONFIG;\n if (!appConfig) {\n throw new Error(\"No static configuration provided\");\n }\n if (!Array.isArray(appConfig)) {\n throw new Error(\"Static configuration has invalid format\");\n }\n const configs = appConfig.slice();\n if (runtimeConfigJson !== \"__app_injected_runtime_config__\".toLocaleUpperCase(\"en-US\")) {\n try {\n const data = JSON.parse(runtimeConfigJson);\n if (Array.isArray(data)) {\n configs.push(...data);\n } else {\n configs.push({ data, context: \"env\" });\n }\n } catch (error) {\n throw new Error(`Failed to load runtime configuration, ${error}`);\n }\n }\n const windowAppConfig = window.__APP_CONFIG__;\n if (windowAppConfig) {\n configs.push({\n context: \"window\",\n data: windowAppConfig\n });\n }\n return configs;\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ApiRegistryBuilder {\n constructor() {\n __publicField$1(this, \"apis\", []);\n }\n add(api, impl) {\n this.apis.push([api.id, impl]);\n return impl;\n }\n build() {\n return new ApiRegistry(new Map(this.apis));\n }\n}\nclass ApiRegistry {\n constructor(apis) {\n this.apis = apis;\n }\n static builder() {\n return new ApiRegistryBuilder();\n }\n /**\n * Creates a new ApiRegistry with a list of API implementations.\n *\n * @param apis - A list of pairs mapping an ApiRef to its respective implementation\n */\n static from(apis) {\n return new ApiRegistry(new Map(apis.map(([api, impl]) => [api.id, impl])));\n }\n /**\n * Creates a new ApiRegistry with a single API implementation.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n static with(api, impl) {\n return new ApiRegistry(/* @__PURE__ */ new Map([[api.id, impl]]));\n }\n /**\n * Returns a new ApiRegistry with the provided API added to the existing ones.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n with(api, impl) {\n return new ApiRegistry(new Map([...this.apis, [api.id, impl]]));\n }\n get(api) {\n return this.apis.get(api.id);\n }\n}\n\nfunction resolveRouteBindings(bindRoutes) {\n const result = /* @__PURE__ */ new Map();\n if (bindRoutes) {\n const bind = (externalRoutes, targetRoutes) => {\n for (const [key, value] of Object.entries(targetRoutes)) {\n const externalRoute = externalRoutes[key];\n if (!externalRoute) {\n throw new Error(`Key ${key} is not an existing external route`);\n }\n if (!value && !externalRoute.optional) {\n throw new Error(\n `External route ${key} is required but was undefined`\n );\n }\n if (value) {\n result.set(externalRoute, value);\n }\n }\n };\n bindRoutes({ bind });\n }\n return result;\n}\n\nvar __accessCheck$2 = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet$2 = (obj, member, getter) => {\n __accessCheck$2(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd$2 = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet$2 = (obj, member, value, setter) => {\n __accessCheck$2(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar _languages, _language$1, _subject;\nconst STORAGE_KEY = \"language\";\nconst DEFAULT_LANGUAGE = \"en\";\nconst _AppLanguageSelector = class _AppLanguageSelector {\n constructor(languages, initialLanguage) {\n __privateAdd$2(this, _languages, void 0);\n __privateAdd$2(this, _language$1, void 0);\n __privateAdd$2(this, _subject, void 0);\n __privateSet$2(this, _languages, languages);\n __privateSet$2(this, _language$1, initialLanguage);\n __privateSet$2(this, _subject, new BehaviorSubject({\n language: __privateGet$2(this, _language$1)\n }));\n }\n static create(options) {\n var _a, _b;\n const languages = (_a = options == null ? void 0 : options.availableLanguages) != null ? _a : [DEFAULT_LANGUAGE];\n if (languages.length !== new Set(languages).size) {\n throw new Error(\n `Supported languages may not contain duplicates, got '${languages.join(\n \"', '\"\n )}'`\n );\n }\n if (!languages.includes(DEFAULT_LANGUAGE)) {\n throw new Error(`Supported languages must include '${DEFAULT_LANGUAGE}'`);\n }\n const initialLanguage = (_b = options == null ? void 0 : options.defaultLanguage) != null ? _b : DEFAULT_LANGUAGE;\n if (!languages.includes(initialLanguage)) {\n throw new Error(\n `Initial language must be one of the supported languages, got '${initialLanguage}'`\n );\n }\n return new _AppLanguageSelector(languages, initialLanguage);\n }\n static createWithStorage(options) {\n const selector = _AppLanguageSelector.create(options);\n if (!window.localStorage) {\n return selector;\n }\n const storedLanguage = window.localStorage.getItem(STORAGE_KEY);\n const { languages } = selector.getAvailableLanguages();\n if (storedLanguage && languages.includes(storedLanguage)) {\n selector.setLanguage(storedLanguage);\n }\n selector.language$().subscribe(({ language }) => {\n if (language !== window.localStorage.getItem(STORAGE_KEY)) {\n window.localStorage.setItem(STORAGE_KEY, language);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n var _a;\n if (event.key === STORAGE_KEY) {\n const language = (_a = localStorage.getItem(STORAGE_KEY)) != null ? _a : void 0;\n if (language) {\n selector.setLanguage(language);\n }\n }\n });\n return selector;\n }\n getAvailableLanguages() {\n return { languages: __privateGet$2(this, _languages).slice() };\n }\n setLanguage(language) {\n const lng = language != null ? language : DEFAULT_LANGUAGE;\n if (lng === __privateGet$2(this, _language$1)) {\n return;\n }\n if (lng && !__privateGet$2(this, _languages).includes(lng)) {\n throw new Error(\n `Failed to change language to '${lng}', available languages are '${__privateGet$2(this, _languages).join(\n \"', '\"\n )}'`\n );\n }\n __privateSet$2(this, _language$1, lng);\n __privateGet$2(this, _subject).next({ language: lng });\n }\n getLanguage() {\n return { language: __privateGet$2(this, _language$1) };\n }\n language$() {\n return __privateGet$2(this, _subject);\n }\n};\n_languages = new WeakMap();\n_language$1 = new WeakMap();\n_subject = new WeakMap();\nlet AppLanguageSelector = _AppLanguageSelector;\n\nfunction toInternalTranslationResource(resource) {\n const r = resource;\n if (r.$$type !== \"@backstage/TranslationResource\") {\n throw new Error(`Invalid translation resource, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation resource, bad version '${r.version}'`);\n }\n return r;\n}\n\nfunction toInternalTranslationRef(ref) {\n const r = ref;\n if (r.$$type !== \"@backstage/TranslationRef\") {\n throw new Error(`Invalid translation ref, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation ref, bad version '${r.version}'`);\n }\n return r;\n}\n\nvar __accessCheck$1 = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet$1 = (obj, member, getter) => {\n __accessCheck$1(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd$1 = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet$1 = (obj, member, value, setter) => {\n __accessCheck$1(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar __privateMethod = (obj, member, method) => {\n __accessCheck$1(obj, member, \"access private method\");\n return method;\n};\nvar _loaded, _loading, _loaders, _getLoaderKey, getLoaderKey_fn, _i18n, _loader, _language, _registeredRefs, _languageChangeListeners, _changeLanguage, changeLanguage_fn, _createSnapshot, createSnapshot_fn, _registerDefaults, registerDefaults_fn;\nfunction removeNulls(messages) {\n return Object.fromEntries(\n Object.entries(messages).filter(\n (e) => e[1] !== null\n )\n );\n}\nclass ResourceLoader {\n constructor(onLoad) {\n this.onLoad = onLoad;\n __privateAdd$1(this, _getLoaderKey);\n /** Loaded resources by loader key */\n __privateAdd$1(this, _loaded, /* @__PURE__ */ new Set());\n /** Resource loading promises by loader key */\n __privateAdd$1(this, _loading, /* @__PURE__ */ new Map());\n /** Loaders for each resource language */\n __privateAdd$1(this, _loaders, /* @__PURE__ */ new Map());\n }\n addTranslationResource(resource) {\n const internalResource = toInternalTranslationResource(resource);\n for (const entry of internalResource.resources) {\n const key = __privateMethod(this, _getLoaderKey, getLoaderKey_fn).call(this, entry.language, internalResource.id);\n if (!__privateGet$1(this, _loaders).has(key)) {\n __privateGet$1(this, _loaders).set(key, entry.loader);\n }\n }\n }\n needsLoading(language, namespace) {\n const key = __privateMethod(this, _getLoaderKey, getLoaderKey_fn).call(this, language, namespace);\n const loader = __privateGet$1(this, _loaders).get(key);\n if (!loader) {\n return false;\n }\n return !__privateGet$1(this, _loaded).has(key);\n }\n async load(language, namespace) {\n const key = __privateMethod(this, _getLoaderKey, getLoaderKey_fn).call(this, language, namespace);\n const loader = __privateGet$1(this, _loaders).get(key);\n if (!loader) {\n return;\n }\n if (__privateGet$1(this, _loaded).has(key)) {\n return;\n }\n const loading = __privateGet$1(this, _loading).get(key);\n if (loading) {\n await loading;\n return;\n }\n const load = loader().then(\n (result) => {\n this.onLoad({ language, namespace, messages: result.messages });\n __privateGet$1(this, _loaded).add(key);\n },\n (error) => {\n __privateGet$1(this, _loaded).add(key);\n throw error;\n }\n );\n __privateGet$1(this, _loading).set(key, load);\n await load;\n }\n}\n_loaded = new WeakMap();\n_loading = new WeakMap();\n_loaders = new WeakMap();\n_getLoaderKey = new WeakSet();\ngetLoaderKey_fn = function(language, namespace) {\n return `${language}/${namespace}`;\n};\nconst _I18nextTranslationApi = class _I18nextTranslationApi {\n constructor(i18n, loader, language) {\n __privateAdd$1(this, _changeLanguage);\n __privateAdd$1(this, _createSnapshot);\n __privateAdd$1(this, _registerDefaults);\n __privateAdd$1(this, _i18n, void 0);\n __privateAdd$1(this, _loader, void 0);\n __privateAdd$1(this, _language, void 0);\n /** Keep track of which refs we have registered default resources for */\n __privateAdd$1(this, _registeredRefs, /* @__PURE__ */ new Set());\n /** Notify observers when language changes */\n __privateAdd$1(this, _languageChangeListeners, /* @__PURE__ */ new Set());\n __privateSet$1(this, _i18n, i18n);\n __privateSet$1(this, _loader, loader);\n __privateSet$1(this, _language, language);\n }\n static create(options) {\n const { languages } = options.languageApi.getAvailableLanguages();\n const i18n = createInstance({\n fallbackLng: DEFAULT_LANGUAGE,\n supportedLngs: languages,\n interpolation: {\n escapeValue: false\n },\n ns: [],\n defaultNS: false,\n fallbackNS: false,\n // Disable resource loading on init, meaning i18n will be ready to use immediately\n initImmediate: false\n });\n i18n.init();\n if (!i18n.isInitialized) {\n throw new Error(\"i18next was unexpectedly not initialized\");\n }\n const { language: initialLanguage } = options.languageApi.getLanguage();\n if (initialLanguage !== DEFAULT_LANGUAGE) {\n i18n.changeLanguage(initialLanguage);\n }\n const loader = new ResourceLoader((loaded) => {\n i18n.addResourceBundle(\n loaded.language,\n loaded.namespace,\n removeNulls(loaded.messages),\n false,\n // do not merge with existing translations\n true\n // overwrite translations\n );\n });\n const resources = (options == null ? void 0 : options.resources) || [];\n for (let i = resources.length - 1; i >= 0; i--) {\n const resource = resources[i];\n if (resource.$$type === \"@backstage/TranslationResource\") {\n loader.addTranslationResource(resource);\n } else if (resource.$$type === \"@backstage/TranslationMessages\") {\n i18n.addResourceBundle(\n DEFAULT_LANGUAGE,\n resource.id,\n removeNulls(resource.messages),\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n }\n }\n const instance = new _I18nextTranslationApi(\n i18n,\n loader,\n options.languageApi.getLanguage().language\n );\n options.languageApi.language$().subscribe(({ language }) => {\n var _a;\n __privateMethod(_a = instance, _changeLanguage, changeLanguage_fn).call(_a, language);\n });\n return instance;\n }\n getTranslation(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n __privateMethod(this, _registerDefaults, registerDefaults_fn).call(this, internalRef);\n return __privateMethod(this, _createSnapshot, createSnapshot_fn).call(this, internalRef);\n }\n translation$(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n __privateMethod(this, _registerDefaults, registerDefaults_fn).call(this, internalRef);\n return new ObservableImpl((subscriber) => {\n let loadTicket = {};\n const loadResource = () => {\n loadTicket = {};\n const ticket = loadTicket;\n __privateGet$1(this, _loader).load(__privateGet$1(this, _language), internalRef.id).then(\n () => {\n if (ticket === loadTicket) {\n const snapshot = __privateMethod(this, _createSnapshot, createSnapshot_fn).call(this, internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n }\n }\n },\n (error) => {\n if (ticket === loadTicket) {\n subscriber.error(Array.isArray(error) ? error[0] : error);\n }\n }\n );\n };\n const onChange = () => {\n const snapshot = __privateMethod(this, _createSnapshot, createSnapshot_fn).call(this, internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n } else {\n loadResource();\n }\n };\n if (__privateGet$1(this, _loader).needsLoading(__privateGet$1(this, _language), internalRef.id)) {\n loadResource();\n }\n __privateGet$1(this, _languageChangeListeners).add(onChange);\n return () => {\n __privateGet$1(this, _languageChangeListeners).delete(onChange);\n };\n });\n }\n};\n_i18n = new WeakMap();\n_loader = new WeakMap();\n_language = new WeakMap();\n_registeredRefs = new WeakMap();\n_languageChangeListeners = new WeakMap();\n_changeLanguage = new WeakSet();\nchangeLanguage_fn = function(language) {\n if (__privateGet$1(this, _language) !== language) {\n __privateSet$1(this, _language, language);\n __privateGet$1(this, _i18n).changeLanguage(language);\n __privateGet$1(this, _languageChangeListeners).forEach((listener) => listener());\n }\n};\n_createSnapshot = new WeakSet();\ncreateSnapshot_fn = function(internalRef) {\n if (__privateGet$1(this, _loader).needsLoading(__privateGet$1(this, _language), internalRef.id)) {\n return { ready: false };\n }\n const t = __privateGet$1(this, _i18n).getFixedT(\n null,\n internalRef.id\n );\n return {\n ready: true,\n t\n };\n};\n_registerDefaults = new WeakSet();\nregisterDefaults_fn = function(internalRef) {\n if (__privateGet$1(this, _registeredRefs).has(internalRef.id)) {\n return;\n }\n __privateGet$1(this, _registeredRefs).add(internalRef.id);\n const defaultMessages = internalRef.getDefaultMessages();\n __privateGet$1(this, _i18n).addResourceBundle(\n DEFAULT_LANGUAGE,\n internalRef.id,\n defaultMessages,\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n const defaultResource = internalRef.getDefaultResource();\n if (defaultResource) {\n __privateGet$1(this, _loader).addTranslationResource(defaultResource);\n }\n};\nlet I18nextTranslationApi = _I18nextTranslationApi;\n\nfunction createLocalBaseUrl(fullUrl) {\n const url = new URL(fullUrl);\n url.protocol = document.location.protocol;\n url.hostname = document.location.hostname;\n url.port = document.location.port;\n return url.toString().replace(/\\/$/, \"\");\n}\nfunction overrideBaseUrlConfigs(inputConfigs) {\n const urlConfigReader = ConfigReader.fromConfigs(inputConfigs);\n const appBaseUrl = urlConfigReader.getOptionalString(\"app.baseUrl\");\n const backendBaseUrl = urlConfigReader.getOptionalString(\"backend.baseUrl\");\n let configs = inputConfigs;\n let newBackendBaseUrl = void 0;\n let newAppBaseUrl = void 0;\n if (appBaseUrl && backendBaseUrl) {\n const appOrigin = new URL(appBaseUrl).origin;\n const backendOrigin = new URL(backendBaseUrl).origin;\n if (appOrigin === backendOrigin) {\n const maybeNewBackendBaseUrl = createLocalBaseUrl(backendBaseUrl);\n if (backendBaseUrl !== maybeNewBackendBaseUrl) {\n newBackendBaseUrl = maybeNewBackendBaseUrl;\n }\n }\n }\n if (appBaseUrl) {\n const maybeNewAppBaseUrl = createLocalBaseUrl(appBaseUrl);\n if (appBaseUrl !== maybeNewAppBaseUrl) {\n newAppBaseUrl = maybeNewAppBaseUrl;\n }\n }\n if (newAppBaseUrl || newBackendBaseUrl) {\n configs = configs.concat({\n data: {\n app: newAppBaseUrl && {\n baseUrl: newAppBaseUrl\n },\n backend: newBackendBaseUrl && {\n baseUrl: newBackendBaseUrl\n }\n },\n context: \"relative-resolver\"\n });\n }\n return configs;\n}\n\nfunction isProtectedApp() {\n var _a;\n const element = document.querySelector('meta[name=\"backstage-app-mode\"]');\n const appMode = (_a = element == null ? void 0 : element.getAttribute(\"content\")) != null ? _a : \"public\";\n return appMode === \"protected\";\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar _getProviderCalled;\nfunction useConfigLoader(configLoader, components, appThemeApi) {\n var _a;\n const hasConfig = Boolean(configLoader);\n const config = useAsync(configLoader || (() => Promise.resolve([])));\n let noConfigNode = void 0;\n if (hasConfig && config.loading) {\n const { Progress } = components;\n noConfigNode = /* @__PURE__ */ React.createElement(Progress, null);\n } else if (config.error) {\n const { BootErrorPage } = components;\n noConfigNode = /* @__PURE__ */ React.createElement(BootErrorPage, { step: \"load-config\", error: config.error });\n }\n const { ThemeProvider = AppThemeProvider } = components;\n if (noConfigNode) {\n return {\n node: /* @__PURE__ */ React.createElement(ApiProvider, { apis: ApiRegistry.with(appThemeApiRef, appThemeApi) }, /* @__PURE__ */ React.createElement(ThemeProvider, null, noConfigNode))\n };\n }\n const configReader = ConfigReader.fromConfigs(\n ((_a = config.value) == null ? void 0 : _a.length) ? overrideBaseUrlConfigs(config.value) : []\n );\n return { api: configReader };\n}\nclass AppContextImpl {\n constructor(app) {\n this.app = app;\n }\n getPlugins() {\n return this.app.getPlugins();\n }\n getSystemIcon(key) {\n return this.app.getSystemIcon(key);\n }\n getSystemIcons() {\n return this.app.getSystemIcons();\n }\n getComponents() {\n return this.app.getComponents();\n }\n}\nclass AppManager {\n constructor(options) {\n __publicField(this, \"apiHolder\");\n __publicField(this, \"configApi\");\n __publicField(this, \"apis\");\n __publicField(this, \"icons\");\n __publicField(this, \"plugins\");\n __publicField(this, \"featureFlags\");\n __publicField(this, \"components\");\n __publicField(this, \"themes\");\n __publicField(this, \"configLoader\");\n __publicField(this, \"defaultApis\");\n __publicField(this, \"bindRoutes\");\n __publicField(this, \"appLanguageApi\");\n __publicField(this, \"translationResources\");\n __publicField(this, \"appIdentityProxy\", new AppIdentityProxy());\n __publicField(this, \"apiFactoryRegistry\");\n __privateAdd(this, _getProviderCalled, false);\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n this.apis = (_a = options.apis) != null ? _a : [];\n this.icons = options.icons;\n this.plugins = new Set((_b = options.plugins) != null ? _b : []);\n this.featureFlags = (_c = options.featureFlags) != null ? _c : [];\n this.components = options.components;\n this.themes = options.themes;\n this.configLoader = (_d = options.configLoader) != null ? _d : defaultConfigLoader;\n this.defaultApis = (_e = options.defaultApis) != null ? _e : [];\n this.bindRoutes = options.bindRoutes;\n this.apiFactoryRegistry = new ApiFactoryRegistry();\n this.appLanguageApi = AppLanguageSelector.createWithStorage({\n defaultLanguage: (_f = options.__experimentalTranslations) == null ? void 0 : _f.defaultLanguage,\n availableLanguages: (_g = options.__experimentalTranslations) == null ? void 0 : _g.availableLanguages\n });\n this.translationResources = (_i = (_h = options.__experimentalTranslations) == null ? void 0 : _h.resources) != null ? _i : [];\n }\n getPlugins() {\n return Array.from(this.plugins);\n }\n getSystemIcon(key) {\n return this.icons[key];\n }\n getSystemIcons() {\n return this.icons;\n }\n getComponents() {\n return this.components;\n }\n createRoot(element) {\n const AppProvider = this.getProvider();\n const AppRoot = () => {\n return /* @__PURE__ */ React.createElement(AppProvider, null, element);\n };\n return AppRoot;\n }\n getProvider() {\n if (__privateGet(this, _getProviderCalled)) {\n throw new Error(\n \"app.getProvider() or app.createRoot() has already been called, and can only be called once\"\n );\n }\n __privateSet(this, _getProviderCalled, true);\n const appContext = new AppContextImpl(this);\n let routesHaveBeenValidated = false;\n const Provider = ({ children }) => {\n const needsFeatureFlagRegistrationRef = useRef(true);\n const appThemeApi = useMemo(\n () => AppThemeSelector.createWithStorage(this.themes),\n []\n );\n const { routing, featureFlags, routeBindings } = useMemo(() => {\n const usesReactRouterBeta = isReactRouterBeta();\n if (usesReactRouterBeta) {\n console.warn(`\nDEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release.\n Please migrate to use React Router v6 stable.\n See https://backstage.io/docs/tutorials/react-router-stable-migration\n`);\n }\n const result = traverseElementTree({\n root: children,\n discoverers: [childDiscoverer, routeElementDiscoverer],\n collectors: {\n routing: usesReactRouterBeta ? routingV1Collector : routingV2Collector,\n collectedPlugins: pluginCollector,\n featureFlags: featureFlagCollector\n }\n });\n result.collectedPlugins.forEach((plugin) => this.plugins.add(plugin));\n this.verifyPlugins(this.plugins);\n this.getApiHolder();\n return {\n ...result,\n routeBindings: resolveRouteBindings(this.bindRoutes)\n };\n }, [children]);\n if (!routesHaveBeenValidated) {\n routesHaveBeenValidated = true;\n validateRouteParameters(routing.paths, routing.parents);\n validateRouteBindings(\n routeBindings,\n this.plugins\n );\n }\n const loadedConfig = useConfigLoader(\n this.configLoader,\n this.components,\n appThemeApi\n );\n const hasConfigApi = \"api\" in loadedConfig;\n if (hasConfigApi) {\n const { api } = loadedConfig;\n this.configApi = api;\n }\n if (\"node\" in loadedConfig) {\n return loadedConfig.node;\n }\n if (hasConfigApi && needsFeatureFlagRegistrationRef.current) {\n needsFeatureFlagRegistrationRef.current = false;\n const featureFlagsApi = this.getApiHolder().get(featureFlagsApiRef);\n if (featureFlagsApi) {\n for (const flag of this.featureFlags) {\n featureFlagsApi.registerFlag({\n ...flag,\n pluginId: \"\"\n });\n }\n for (const plugin of this.plugins.values()) {\n if (\"getFeatureFlags\" in plugin) {\n for (const flag of plugin.getFeatureFlags()) {\n featureFlagsApi.registerFlag({\n name: flag.name,\n pluginId: plugin.getId()\n });\n }\n } else {\n for (const output of plugin.output()) {\n if (output.type === \"feature-flag\") {\n featureFlagsApi.registerFlag({\n name: output.name,\n pluginId: plugin.getId()\n });\n }\n }\n }\n }\n const registeredFlags = featureFlagsApi.getRegisteredFlags();\n const flagNames = new Set(registeredFlags.map((f) => f.name));\n for (const name of featureFlags) {\n if (!flagNames.has(name)) {\n featureFlagsApi.registerFlag({ name, pluginId: \"\" });\n }\n }\n }\n }\n const { ThemeProvider = AppThemeProvider, Progress } = this.components;\n const apis = this.getApiHolder();\n if (isProtectedApp()) {\n const errorApi = apis.get(errorApiRef);\n const fetchApi = apis.get(fetchApiRef);\n const discoveryApi = apis.get(discoveryApiRef);\n if (!errorApi || !fetchApi || !discoveryApi) {\n throw new Error(\n \"App is running in protected mode but missing required APIs\"\n );\n }\n this.appIdentityProxy.enableCookieAuth({\n errorApi,\n fetchApi,\n discoveryApi\n });\n }\n return /* @__PURE__ */ React.createElement(ApiProvider, { apis }, /* @__PURE__ */ React.createElement(AppContextProvider, { appContext }, /* @__PURE__ */ React.createElement(ThemeProvider, null, /* @__PURE__ */ React.createElement(\n RoutingProvider,\n {\n routePaths: routing.paths,\n routeParents: routing.parents,\n routeObjects: routing.objects,\n routeBindings,\n basePath: getBasePath(loadedConfig.api)\n },\n /* @__PURE__ */ React.createElement(\n InternalAppContext.Provider,\n {\n value: {\n routeObjects: routing.objects,\n appIdentityProxy: this.appIdentityProxy\n }\n },\n /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement(Progress, null) }, children)\n )\n ))));\n };\n return Provider;\n }\n getRouter() {\n return AppRouter;\n }\n getApiHolder() {\n if (this.apiHolder) {\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.get(factory.api)) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n return this.apiHolder;\n }\n this.apiFactoryRegistry.register(\"static\", {\n api: appThemeApiRef,\n deps: {},\n factory: () => AppThemeSelector.createWithStorage(this.themes)\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: configApiRef,\n deps: {},\n factory: () => {\n if (!this.configApi) {\n throw new Error(\n \"Tried to access config API before config was loaded\"\n );\n }\n return this.configApi;\n }\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: identityApiRef,\n deps: {},\n factory: () => this.appIdentityProxy\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: appLanguageApiRef,\n deps: {},\n factory: () => this.appLanguageApi\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: translationApiRef,\n deps: { languageApi: appLanguageApiRef },\n factory: ({ languageApi }) => I18nextTranslationApi.create({\n languageApi,\n resources: this.translationResources\n })\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: featureFlagsApiRef,\n deps: {},\n factory: () => new LocalStorageFeatureFlags()\n });\n for (const factory of this.defaultApis) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.register(\"default\", factory)) {\n throw new Error(\n `Plugin ${plugin.getId()} tried to register duplicate or forbidden API factory for ${factory.api}`\n );\n }\n }\n }\n for (const factory of this.apis) {\n if (!this.apiFactoryRegistry.register(\"app\", factory)) {\n throw new Error(\n `Duplicate or forbidden API factory for ${factory.api} in app`\n );\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n this.apiHolder = new ApiResolver(this.apiFactoryRegistry);\n return this.apiHolder;\n }\n verifyPlugins(plugins) {\n const pluginIds = /* @__PURE__ */ new Set();\n for (const plugin of plugins) {\n const id = plugin.getId();\n if (pluginIds.has(id)) {\n throw new Error(`Duplicate plugin found '${id}'`);\n }\n pluginIds.add(id);\n }\n }\n}\n_getProviderCalled = new WeakMap();\n\nfunction createSpecializedApp(options) {\n return new AppManager(options);\n}\n\nlet warned = false;\nconst FlatRoutes = (props) => {\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n const isBeta = useMemo(() => isReactRouterBeta(), []);\n const routes = useElementFilter(\n props.children,\n (elements) => elements.getElements().flatMap((child) => {\n var _a;\n let path = child.props.path;\n if (path === \"\") {\n return [];\n }\n path = (_a = path == null ? void 0 : path.replace(/\\/\\*$/, \"\")) != null ? _a : \"/\";\n let element = isBeta ? child : child.props.element;\n if (!isBeta && !element) {\n element = child;\n if (!warned && process.env.NODE_ENV !== \"test\") {\n console.warn(\n \"DEPRECATION WARNING: All elements within must be of type with an element prop. Existing usages of should be replaced with } />.\"\n );\n warned = true;\n }\n }\n return [\n {\n // Each route matches any sub route, except for the explicit root path\n path,\n element,\n children: child.props.children ? [\n // These are the children of each route, which we all add in under a catch-all\n // subroute in order to make them available to `useOutlet`\n {\n path: path === \"/\" ? \"/\" : \"*\",\n // The root path must require an exact match\n element: child.props.children\n }\n ] : void 0\n }\n ];\n }).sort((a, b) => b.path.localeCompare(a.path)).map((obj) => ({ ...obj, path: obj.path === \"/\" ? \"/\" : `${obj.path}/*` }))\n );\n const withNotFound = [\n ...routes,\n {\n path: \"*\",\n element: /* @__PURE__ */ React.createElement(NotFoundErrorPage, null)\n }\n ];\n return useRoutes(withNotFound);\n};\nattachComponentData(FlatRoutes, \"core.type\", \"FlatRoutes\");\n\nexport { AlertApiForwarder, ApiFactoryRegistry, ApiProvider, ApiResolver, AppRouter, AppThemeSelector, AtlassianAuth, BitbucketAuth, BitbucketServerAuth, ErrorAlerter, ErrorApiForwarder, FeatureFlagged, FetchMiddlewares, FlatRoutes, FrontendHostDiscovery, GithubAuth, GitlabAuth, GoogleAuth, LocalStorageFeatureFlags, MicrosoftAuth, MultipleAnalyticsApi, NoOpAnalyticsApi, OAuth2, OAuthRequestManager, OktaAuth, OneLoginAuth, SamlAuth, UnhandledErrorForwarder, UrlPatternDiscovery, VMwareCloudAuth, WebStorage, createFetchApi, createSpecializedApp, defaultConfigLoader };\n//# sourceMappingURL=index.esm.js.map\n","import { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst coreComponentsTranslationRef = createTranslationRef({\n id: \"core-components\",\n messages: {\n signIn: {\n title: \"Sign In\",\n loginFailed: \"Login failed\",\n customProvider: {\n title: \"Custom User\",\n subtitle: \"Enter your own User ID and credentials.\\n This selection will not be stored.\",\n userId: \"User ID\",\n tokenInvalid: \"Token is not a valid OpenID Connect JWT Token\",\n continue: \"Continue\",\n idToken: \"ID Token (optional)\"\n },\n guestProvider: {\n title: \"Guest\",\n subtitle: \"Enter as a Guest User.\\n You will not have a verified identity, meaning some features might be unavailable.\",\n enter: \"Enter\"\n }\n },\n skipToContent: \"Skip to content\",\n copyTextButton: {\n tooltipText: \"Text copied to clipboard\"\n },\n simpleStepper: {\n reset: \"Reset\",\n finish: \"Finish\",\n next: \"Next\",\n skip: \"Skip\",\n back: \"Back\"\n },\n errorPage: {\n subtitle: \"ERROR {{status}}: {{statusMessage}}\",\n title: \"Looks like someone dropped the mic!\",\n goBack: \"Go back\",\n showMoreDetails: \"Show more details\",\n showLessDetails: \"Show less details\"\n },\n emptyState: {\n missingAnnotation: {\n title: \"Missing Annotation\",\n actionTitle: \"Add the annotation to your component YAML as shown in the highlighted example below:\",\n readMore: \"Read more\"\n }\n },\n supportConfig: {\n default: {\n title: \"Support Not Configured\",\n linkTitle: \"Add `app.support` config key\"\n }\n },\n errorBoundary: {\n title: \"Please contact {{slackChannel}} for help.\"\n },\n oauthRequestDialog: {\n title: \"Login Required\",\n authRedirectTitle: \"This will trigger a http redirect to OAuth Login.\",\n login: \"Log in\",\n rejectAll: \"Reject All\"\n },\n supportButton: {\n title: \"Support\",\n close: \"Close\"\n },\n table: {\n filter: {\n title: \"Filters\",\n clearAll: \"Clear all\"\n }\n },\n alertDisplay: {\n message_one: \"({{ count }} older message)\",\n message_other: \"({{ count }} older messages)\"\n },\n autoLogout: {\n stillTherePrompt: {\n title: \"Logging out due to inactivity\",\n buttonText: \"Yes! Don't log me out\"\n }\n },\n proxiedSignInPage: {\n title: \"You do not appear to be signed in. Please try reloading the browser page.\"\n }\n }\n});\n\nexport { coreComponentsTranslationRef as c };\n//# sourceMappingURL=translation-p8_bRQW1.esm.js.map\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array} [allowedElements]\n * @property {Array} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n visit(tree, 'element', (node, index, parent_) => {\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n })\n }\n }\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType} ComponentType\n */\n\n/**\n * @template {import('react').ElementType} T\n * @typedef {import('react').ComponentPropsWithoutRef} ComponentPropsWithoutRef\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types.js').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'td'> & ReactMarkdownProps & {style?: Record, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record, isHeader: true}} TableHeaderCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType} CodeComponent\n * @typedef {ComponentType} HeadingComponent\n * @typedef {ComponentType} LiComponent\n * @typedef {ComponentType} OrderedListComponent\n * @typedef {ComponentType} TableDataCellComponent\n * @typedef {ComponentType} TableHeaderCellComponent\n * @typedef {ComponentType} TableRowComponent\n * @typedef {ComponentType} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {uriTransformer} from './uri-transformer.js'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n /** @type {Array} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: .\n // See: .\n // See: .\n // See: .\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n !whitespace(child)\n ) {\n children.push(child.value)\n }\n } else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const transform =\n options.transformLinkUri === undefined\n ? uriTransformer\n : options.transformLinkUri\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Record} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n if (node.properties) {\n for (property in node.properties) {\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = index\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? options.linkTarget(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n : options.linkTarget\n }\n\n if (name === 'a' && transform) {\n properties.href = transform(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = Number.parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n String(properties.src || ''),\n String(properties.alt || ''),\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Record} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? commas(result) : spaces(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Record}\n */\nfunction parseStyle(value) {\n /** @type {Record} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map(String)\n .join('')\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record} */\nconst deprecated = {\n plugins: {to: 'remarkPlugins', id: 'change-plugins-to-remarkplugins'},\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(remarkParse)\n .use(options.remarkPlugins || [])\n .use(remarkRehype, {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n })\n .use(options.rehypePlugins || [])\n .use(rehypeFilter, options)\n\n const file = new VFile()\n\n if (typeof options.children === 'string') {\n file.value = options.children\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n","import { useApi, alertApiRef, identityApiRef, configApiRef, useAnalytics, errorApiRef, storageApiRef, useApp, oauthRequestApiRef, useApiHolder, attachComponentData, useElementFilter, discoveryApiRef } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport IconButton from '@material-ui/core/IconButton';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Alert from '@material-ui/lab/Alert';\nimport React, { useState, useEffect, useMemo, useRef, useCallback, useLayoutEffect, lazy, Suspense, Component as Component$3, Children, isValidElement, useContext, Fragment, forwardRef, createContext } from 'react';\nimport { c as coreComponentsTranslationRef } from './esm/translation-p8_bRQW1.esm.js';\nimport { useIdleTimer, workerTimers } from 'react-idle-timer';\nimport Button$1 from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport MaterialAvatar from '@material-ui/core/Avatar';\nimport { makeStyles, useTheme, darken, lighten, withStyles, createStyles, styled, alpha, ThemeProvider } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport MaterialLink from '@material-ui/core/Link';\nimport { trimEnd, isEqual, transform, orderBy, isMatch } from 'lodash';\nimport { Link as Link$1, createRoutesFromChildren, Route as Route$1, useSearchParams, useNavigate, useParams, useRoutes, matchRoutes, useLocation, useResolvedPath as useResolvedPath$1, resolvePath } from 'react-router-dom';\nimport Box from '@material-ui/core/Box';\nimport LightAsync from 'react-syntax-highlighter/dist/esm/light-async';\nimport dark from 'react-syntax-highlighter/dist/esm/styles/hljs/dark';\nimport docco from 'react-syntax-highlighter/dist/esm/styles/hljs/docco';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CopyIcon from '@material-ui/icons/FileCopy';\nimport useCopyToClipboard from 'react-use/esm/useCopyToClipboard';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport AddCircleOutline from '@material-ui/icons/AddCircleOutline';\nimport * as d3Zoom from 'd3-zoom';\nimport * as d3Selection from 'd3-selection';\nimport useTheme$1 from '@material-ui/core/styles/useTheme';\nimport dagre from 'dagre';\nimport debounce from 'lodash/debounce';\nimport makeStyles$1 from '@material-ui/core/styles/makeStyles';\nimport * as d3Shape from 'd3-shape';\nimport isFinite from 'lodash/isFinite';\nimport useObservable from 'react-use/esm/useObservable';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport Grid from '@material-ui/core/Grid';\nimport missingAnnotation from './components/EmptyState/assets/missingAnnotation.svg';\nimport noInformation from './components/EmptyState/assets/noInformation.svg';\nimport createComponent from './components/EmptyState/assets/createComponent.svg';\nimport noBuild from './components/EmptyState/assets/noBuild.svg';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport ErrorOutline from '@material-ui/icons/ErrorOutline';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ReactMarkdown from 'react-markdown';\nimport gfm from 'remark-gfm';\nimport Divider from '@material-ui/core/Divider';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport { createPortal } from 'react-dom';\nimport LinkIcon from '@material-ui/icons/Link';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport { isError, ResponseError, ForwardedError } from '@backstage/errors';\nimport TextTruncate from 'react-text-truncate';\nimport { useIsMounted, useDebouncedEffect, useAsync, useMountEffect } from '@react-hookz/web';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport ArrowIcon from '@material-ui/icons/ArrowForward';\nimport { Circle, Line } from 'rc-progress';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Chip from '@material-ui/core/Chip';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputBase from '@material-ui/core/InputBase';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport MuiStepper from '@material-ui/core/Stepper';\nimport MuiStep from '@material-ui/core/Step';\nimport StepContent from '@material-ui/core/StepContent';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport startCase from 'lodash/startCase';\nimport Table$1 from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport MenuList from '@material-ui/core/MenuList';\nimport Popover from '@material-ui/core/Popover';\nimport qs from 'qs';\nimport MuiBrokenImageIcon from '@material-ui/icons/BrokenImage';\nimport { Helmet } from 'react-helmet';\nimport TabUI from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport { Link as Link$2 } from '@backstage/core-components';\nimport MTable, { MTableHeader, MTableToolbar, MTableBody } from '@material-table/core';\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport Check from '@material-ui/icons/Check';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { Sparklines, SparklinesLine } from 'react-sparklines';\nimport MicDropSvgUrl from './layout/ErrorPage/mic-drop.svg';\nimport MaterialBreadcrumbs from '@material-ui/core/Breadcrumbs';\nimport BottomNavigation from '@material-ui/core/BottomNavigation';\nimport Drawer from '@material-ui/core/Drawer';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\nimport BottomNavigationAction from '@material-ui/core/BottomNavigationAction';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport Badge from '@material-ui/core/Badge';\nimport TextField from '@material-ui/core/TextField';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport { z } from 'zod';\nimport useLocalStorage from 'react-use/esm/useLocalStorage';\nimport { useForm } from 'react-hook-form';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport isEmpty from 'lodash/isEmpty';\n\nfunction AlertDisplay(props) {\n const [messages, setMessages] = useState([]);\n const alertApi = useApi(alertApiRef);\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const {\n anchorOrigin = { vertical: \"top\", horizontal: \"center\" },\n transientTimeoutMs\n } = props;\n const timeoutMs = transientTimeoutMs != null ? transientTimeoutMs : 5e3;\n useEffect(() => {\n const subscription = alertApi.alert$().subscribe((message) => setMessages((msgs) => msgs.concat(message)));\n return () => {\n subscription.unsubscribe();\n };\n }, [alertApi]);\n const [firstMessage] = messages;\n useEffect(() => {\n if (firstMessage && firstMessage.display === \"transient\") {\n const timeout = setTimeout(() => {\n setMessages((msgs) => {\n const newMsgs = msgs.filter((msg) => msg !== firstMessage);\n return newMsgs.length === msgs.length ? msgs : newMsgs;\n });\n }, timeoutMs);\n return () => clearTimeout(timeout);\n }\n return void 0;\n }, [firstMessage, timeoutMs]);\n if (messages.length === 0) {\n return null;\n }\n const handleClose = () => {\n setMessages((msgs) => msgs.filter((msg) => msg !== firstMessage));\n };\n return /* @__PURE__ */ React.createElement(Snackbar, { open: true, anchorOrigin }, /* @__PURE__ */ React.createElement(\n Alert,\n {\n action: /* @__PURE__ */ React.createElement(\n IconButton,\n {\n color: \"inherit\",\n size: \"small\",\n onClick: handleClose,\n \"data-testid\": \"error-button-close\"\n },\n /* @__PURE__ */ React.createElement(CloseIcon, null)\n ),\n severity: firstMessage.severity\n },\n /* @__PURE__ */ React.createElement(Typography, { component: \"span\" }, String(firstMessage.message), messages.length > 1 && /* @__PURE__ */ React.createElement(\"em\", null, t(\"alertDisplay.message\", {\n count: messages.length - 1\n })))\n ));\n}\n\nconst LAST_SEEN_ONLINE_STORAGE_KEY = \"@backstage/autologout:lastSeenOnline\";\nconst useLogoutDisconnectedUserEffect = ({\n enableEffect,\n autologoutIsEnabled,\n idleTimeoutSeconds,\n lastSeenOnlineStore,\n identityApi\n}) => {\n useEffect(() => {\n if (autologoutIsEnabled && enableEffect) {\n const lastSeenOnline = lastSeenOnlineStore.get();\n if (lastSeenOnline) {\n const now = /* @__PURE__ */ new Date();\n const nowSeconds = Math.ceil(now.getTime() / 1e3);\n const lastSeenOnlineSeconds = Math.ceil(\n lastSeenOnline.getTime() / 1e3\n );\n if (nowSeconds - lastSeenOnlineSeconds > idleTimeoutSeconds) {\n identityApi.signOut();\n }\n }\n lastSeenOnlineStore.save(/* @__PURE__ */ new Date());\n } else {\n lastSeenOnlineStore.delete();\n }\n }, [\n autologoutIsEnabled,\n enableEffect,\n identityApi,\n idleTimeoutSeconds,\n lastSeenOnlineStore\n ]);\n};\n\nconst StillTherePrompt = (props) => {\n const {\n idleTimer,\n setOpen,\n open,\n promptTimeoutMillis,\n remainingTime,\n setRemainingTime\n } = props;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n useEffect(() => {\n const interval = setInterval(() => {\n setRemainingTime(Math.ceil(idleTimer.getRemainingTime()));\n }, 500);\n return () => {\n clearInterval(interval);\n };\n }, [idleTimer, setRemainingTime]);\n const handleStillHere = () => {\n setOpen(false);\n idleTimer.activate();\n };\n const timeTillPrompt = Math.max(\n remainingTime - promptTimeoutMillis / 1e3,\n 0\n );\n const seconds = timeTillPrompt > 1 ? \"seconds\" : \"second\";\n return /* @__PURE__ */ React.createElement(Dialog, { open, \"data-testid\": \"inactivity-prompt-dialog\" }, /* @__PURE__ */ React.createElement(DialogTitle, null, t(\"autoLogout.stillTherePrompt.title\")), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(DialogContentText, null, \"You are about to be disconnected in\", \" \", /* @__PURE__ */ React.createElement(\"b\", null, Math.ceil(remainingTime / 1e3), \" \", seconds), \". Are you still there?\")), /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(\n Button$1,\n {\n onClick: handleStillHere,\n color: \"secondary\",\n variant: \"contained\",\n size: \"small\"\n },\n t(\"autoLogout.stillTherePrompt.buttonText\")\n )));\n};\n\nclass DefaultTimestampStore {\n constructor(key) {\n this.key = key;\n }\n save(date) {\n localStorage.setItem(this.key, date.toJSON());\n }\n delete() {\n localStorage.removeItem(this.key);\n }\n get() {\n const timestamp = localStorage.getItem(this.key);\n return timestamp !== null ? new Date(Date.parse(timestamp)) : null;\n }\n}\n\nconst ConditionalAutoLogout = ({\n idleTimeoutMinutes,\n events,\n useWorkerTimers,\n logoutIfDisconnected,\n promptBeforeIdleSeconds,\n promptOpen,\n setPromptOpen,\n remainingTimeCountdown,\n setRemainingTimeCountdown,\n identityApi,\n lastSeenOnlineStore\n}) => {\n const promptBeforeIdleMillis = promptBeforeIdleSeconds * 1e3;\n const promptBeforeIdle = promptBeforeIdleMillis > 0 ? true : false;\n const onPrompt = async () => {\n setPromptOpen(true);\n setRemainingTimeCountdown(promptBeforeIdleMillis);\n };\n const onIdle = () => {\n setPromptOpen(false);\n setRemainingTimeCountdown(0);\n identityApi.signOut();\n };\n const onActive = () => {\n setPromptOpen(false);\n setRemainingTimeCountdown(0);\n };\n const onAction = (_event, _idleTimer) => {\n lastSeenOnlineStore.save(/* @__PURE__ */ new Date());\n };\n const timer = useIdleTimer({\n timeout: idleTimeoutMinutes * 60 * 1e3,\n events,\n crossTab: true,\n name: \"autologout-timer\",\n timers: useWorkerTimers ? workerTimers : void 0,\n onIdle,\n onActive: promptBeforeIdle ? onActive : void 0,\n onAction: logoutIfDisconnected ? onAction : void 0,\n onPrompt: promptBeforeIdle ? onPrompt : void 0,\n promptBeforeIdle: promptBeforeIdle ? promptBeforeIdleMillis : void 0,\n syncTimers: 1e3\n });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, promptBeforeIdle && /* @__PURE__ */ React.createElement(\n StillTherePrompt,\n {\n idleTimer: timer,\n open: promptOpen,\n setOpen: setPromptOpen,\n remainingTime: remainingTimeCountdown,\n setRemainingTime: setRemainingTimeCountdown,\n promptTimeoutMillis: promptBeforeIdleMillis\n }\n ));\n};\nconst defaultConfig = {\n enabled: true,\n idleTimeoutMinutes: 0.5,\n promptBeforeIdleSeconds: 10,\n useWorkerTimers: true,\n logoutIfDisconnected: true\n};\nconst defaultTrackedEvents = [\n \"mousemove\",\n \"keydown\",\n \"wheel\",\n \"DOMMouseScroll\",\n \"mousewheel\",\n \"mousedown\",\n \"touchstart\",\n \"touchmove\",\n \"MSPointerDown\",\n \"MSPointerMove\",\n \"visibilitychange\"\n];\nconst parseConfig = (configApi, props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n return {\n enabled: (_b = (_a = configApi.getOptionalBoolean(\"auth.autologout.enabled\")) != null ? _a : props.enabled) != null ? _b : defaultConfig.enabled,\n idleTimeoutMinutes: (_d = (_c = configApi.getOptionalNumber(\"auth.autologout.idleTimeoutMinutes\")) != null ? _c : props.idleTimeoutMinutes) != null ? _d : defaultConfig.idleTimeoutMinutes,\n promptBeforeIdleSeconds: (_f = (_e = configApi.getOptionalNumber(\"auth.autologout.promptBeforeIdleSeconds\")) != null ? _e : props.promptBeforeIdleSeconds) != null ? _f : defaultConfig.promptBeforeIdleSeconds,\n useWorkerTimers: (_h = (_g = configApi.getOptionalBoolean(\"auth.autologout.useWorkerTimers\")) != null ? _g : props.useWorkerTimers) != null ? _h : defaultConfig.useWorkerTimers,\n logoutIfDisconnected: (_j = (_i = configApi.getOptionalBoolean(\"auth.autologout.logoutIfDisconnected\")) != null ? _i : props.logoutIfDisconnected) != null ? _j : defaultConfig.logoutIfDisconnected\n };\n};\nconst AutoLogout = (props) => {\n const identityApi = useApi(identityApiRef);\n const configApi = useApi(configApiRef);\n const [isLogged, setIsLogged] = useState(false);\n useEffect(() => {\n async function isLoggedIn(identity) {\n if ((await identity.getCredentials()).token) {\n setIsLogged(true);\n } else {\n setIsLogged(false);\n }\n }\n isLoggedIn(identityApi);\n }, [identityApi]);\n const {\n enabled,\n idleTimeoutMinutes,\n promptBeforeIdleSeconds,\n logoutIfDisconnected,\n useWorkerTimers\n } = useMemo(() => {\n return parseConfig(configApi, props);\n }, [configApi, props]);\n useEffect(() => {\n if (idleTimeoutMinutes < 0.5) {\n throw new Error(\n \"\\u274C idleTimeoutMinutes property should be >= 0.5 minutes (30 seconds).\"\n );\n }\n if (promptBeforeIdleSeconds < 0) {\n throw new Error(\n \"\\u274C promptBeforeIdleSeconds property should be >= 0 seconds. Set to 0 to disable the prompt.\"\n );\n }\n if (idleTimeoutMinutes * 60 <= promptBeforeIdleSeconds) {\n throw new Error(\n `\\u274C promptBeforeIdleSeconds should be smaller than idleTimeoutMinutes`\n );\n }\n }, [idleTimeoutMinutes, promptBeforeIdleSeconds]);\n const lastSeenOnlineStore = useMemo(\n () => new DefaultTimestampStore(LAST_SEEN_ONLINE_STORAGE_KEY),\n []\n );\n const [promptOpen, setPromptOpen] = useState(false);\n const [remainingTimeCountdown, setRemainingTimeCountdown] = useState(0);\n useLogoutDisconnectedUserEffect({\n enableEffect: logoutIfDisconnected,\n autologoutIsEnabled: enabled && isLogged,\n idleTimeoutSeconds: idleTimeoutMinutes * 60,\n lastSeenOnlineStore,\n identityApi\n });\n if (!enabled || !isLogged) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(\n ConditionalAutoLogout,\n {\n idleTimeoutMinutes,\n promptBeforeIdleSeconds,\n useWorkerTimers,\n events: defaultTrackedEvents,\n logoutIfDisconnected,\n promptOpen,\n setPromptOpen,\n remainingTimeCountdown,\n setRemainingTimeCountdown,\n identityApi,\n lastSeenOnlineStore\n }\n );\n};\n\nfunction stringToColor(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = \"#\";\n for (let i = 0; i < 3; i++) {\n const value = hash >> i * 8 & 255;\n color += `00${value.toString(16)}`.slice(-2);\n }\n return color;\n}\nfunction extractInitials(name) {\n var _a;\n const names = name.trim().split(\" \");\n const firstName = (_a = names[0]) != null ? _a : \"\";\n const lastName = names.length > 1 ? names[names.length - 1] : \"\";\n return firstName && lastName ? `${firstName.charAt(0)}${lastName.charAt(0)}` : firstName.charAt(0);\n}\n\nconst useStyles$O = makeStyles(\n (theme) => ({\n avatar: {\n width: \"4rem\",\n height: \"4rem\",\n color: theme.palette.common.white,\n backgroundColor: (props) => props.backgroundColor\n },\n avatarText: {\n fontWeight: theme.typography.fontWeightBold,\n letterSpacing: \"1px\",\n textTransform: \"uppercase\"\n }\n }),\n { name: \"BackstageAvatar\" }\n);\nfunction Avatar(props) {\n var _a, _b;\n const { displayName, picture, customStyles } = props;\n const styles = { ...customStyles };\n const fontStyles = {\n fontFamily: styles.fontFamily,\n fontSize: styles.fontSize,\n fontWeight: styles.fontWeight\n };\n const classes = useStyles$O(\n !picture ? { backgroundColor: stringToColor(displayName || \"\") } : {}\n );\n const avatarClassNames = classNames((_a = props.classes) == null ? void 0 : _a.avatar, classes.avatar);\n const avatarTextClassNames = classNames(\n (_b = props.classes) == null ? void 0 : _b.avatarText,\n classes.avatarText\n );\n return /* @__PURE__ */ React.createElement(\n MaterialAvatar,\n {\n alt: displayName,\n src: picture,\n className: avatarClassNames,\n style: styles\n },\n displayName && /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"h6\",\n component: \"span\",\n className: avatarTextClassNames,\n style: fontStyles\n },\n extractInitials(displayName)\n )\n );\n}\n\nfunction isReactRouterBeta() {\n const [obj] = createRoutesFromChildren(/* @__PURE__ */ React.createElement(Route$1, { index: true, element: /* @__PURE__ */ React.createElement(\"div\", null) }));\n return !obj.index;\n}\nconst useStyles$N = makeStyles(\n {\n visuallyHidden: {\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n overflow: \"hidden\",\n position: \"absolute\",\n userSelect: \"none\",\n whiteSpace: \"nowrap\",\n height: 1,\n width: 1\n },\n externalLink: {\n position: \"relative\"\n }\n },\n { name: \"Link\" }\n);\nconst isExternalUri = (uri) => /^([a-z+.-]+):/.test(uri);\nconst scriptProtocolPattern = (\n // eslint-disable-next-line no-control-regex\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i\n);\nconst originalWindowOpen = window.open;\nif (originalWindowOpen && !originalWindowOpen.__backstage) {\n const newOpen = function open(...args) {\n const url = String(args[0]);\n if (scriptProtocolPattern.test(url)) {\n throw new Error(\n \"Rejected window.open() with a javascript: URL as a security precaution\"\n );\n }\n return originalWindowOpen.apply(this, args);\n };\n newOpen.__backstage = true;\n window.open = newOpen;\n}\nconst useBaseUrl = () => {\n try {\n const config = useApi(configApiRef);\n return config.getOptionalString(\"app.baseUrl\");\n } catch {\n return void 0;\n }\n};\nconst useBasePath = () => {\n var _a;\n const base = \"http://sample.dev\";\n const url = (_a = useBaseUrl()) != null ? _a : \"/\";\n const { pathname } = new URL(url, base);\n return trimEnd(pathname, \"/\");\n};\nconst useResolvedPath = (uri) => {\n let resolvedPath = String(uri);\n const basePath = useBasePath();\n const external = isExternalUri(resolvedPath);\n const startsWithBasePath = resolvedPath.startsWith(basePath);\n if (!external && !startsWithBasePath) {\n resolvedPath = basePath.concat(resolvedPath);\n }\n return resolvedPath;\n};\nconst getNodeText = (node) => {\n var _a;\n if (node instanceof Array) {\n return node.map(getNodeText).join(\" \").trim();\n }\n if (typeof node === \"object\" && node) {\n return getNodeText((_a = node == null ? void 0 : node.props) == null ? void 0 : _a.children);\n }\n if ([\"string\", \"number\"].includes(typeof node)) {\n return String(node);\n }\n return \"\";\n};\nconst Link = React.forwardRef(\n ({ onClick, noTrack, ...props }, ref) => {\n const classes = useStyles$N();\n const analytics = useAnalytics();\n const to = isReactRouterBeta() ? useResolvedPath(props.to) : props.to;\n const linkText = getNodeText(props.children) || to;\n const external = isExternalUri(to);\n const newWindow = external && !!/^https?:/.exec(to);\n if (scriptProtocolPattern.test(to)) {\n throw new Error(\n \"Link component rejected javascript: URL as a security precaution\"\n );\n }\n const handleClick = (event) => {\n onClick == null ? void 0 : onClick(event);\n if (!noTrack) {\n analytics.captureEvent(\"click\", linkText, { attributes: { to } });\n }\n };\n return external ? (\n // External links\n /* @__PURE__ */ React.createElement(\n MaterialLink,\n {\n ...newWindow ? { target: \"_blank\", rel: \"noopener\" } : {},\n ...props,\n ...props[\"aria-label\"] ? { \"aria-label\": `${props[\"aria-label\"]}, Opens in a new window` } : {},\n ref,\n href: to,\n onClick: handleClick,\n className: classNames(classes.externalLink, props.className)\n },\n props.children,\n /* @__PURE__ */ React.createElement(Typography, { component: \"span\", className: classes.visuallyHidden }, \", Opens in a new window\")\n )\n ) : (\n // Interact with React Router for internal links\n /* @__PURE__ */ React.createElement(\n MaterialLink,\n {\n ...props,\n ref,\n component: Link$1,\n to,\n onClick: handleClick\n }\n )\n );\n }\n);\n\nconst LinkWrapper = React.forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Link, { ref, ...props, color: \"initial\" }));\nconst LinkButton = React.forwardRef(\n (props, ref) => /* @__PURE__ */ React.createElement(Button$1, { ref, component: LinkWrapper, ...props })\n);\nconst Button = LinkButton;\n\nfunction CopyTextButton(props) {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const {\n text,\n tooltipDelay = 1e3,\n tooltipText = t(\"copyTextButton.tooltipText\"),\n \"aria-label\": ariaLabel = \"Copy text\"\n } = props;\n const errorApi = useApi(errorApiRef);\n const [open, setOpen] = useState(false);\n const [{ error }, copyToClipboard] = useCopyToClipboard();\n useEffect(() => {\n if (error) {\n errorApi.post(error);\n }\n }, [error, errorApi]);\n const handleCopyClick = (e) => {\n e.stopPropagation();\n setOpen(true);\n copyToClipboard(text);\n };\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n id: \"copy-test-tooltip\",\n title: tooltipText,\n placement: \"top\",\n leaveDelay: tooltipDelay,\n onClose: () => setOpen(false),\n open\n },\n /* @__PURE__ */ React.createElement(IconButton, { onClick: handleCopyClick, \"aria-label\": ariaLabel }, /* @__PURE__ */ React.createElement(CopyIcon, null))\n ));\n}\n\nfunction CodeSnippet(props) {\n const {\n text,\n language,\n showLineNumbers = false,\n highlightedNumbers,\n customStyle,\n showCopyCodeButton = false\n } = props;\n const theme = useTheme();\n const mode = theme.palette.type === \"dark\" ? dark : docco;\n const highlightColor = theme.palette.type === \"dark\" ? \"#256bf3\" : \"#e6ffed\";\n return /* @__PURE__ */ React.createElement(Box, { position: \"relative\" }, /* @__PURE__ */ React.createElement(\n LightAsync,\n {\n customStyle,\n language,\n style: mode,\n showLineNumbers,\n wrapLines: true,\n lineNumberStyle: { color: theme.palette.textVerySubtle },\n lineProps: (lineNumber) => (highlightedNumbers == null ? void 0 : highlightedNumbers.includes(lineNumber)) ? {\n style: {\n backgroundColor: highlightColor\n }\n } : {}\n },\n text\n ), showCopyCodeButton && /* @__PURE__ */ React.createElement(Box, { position: \"absolute\", top: 0, right: 0 }, /* @__PURE__ */ React.createElement(CopyTextButton, { text })));\n}\n\nfunction CreateButton(props) {\n const { title, to } = props;\n const isXSScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"xs\")\n );\n if (!to) {\n return null;\n }\n return isXSScreen ? /* @__PURE__ */ React.createElement(\n IconButton,\n {\n component: Link$1,\n color: \"primary\",\n title,\n size: \"small\",\n to\n },\n /* @__PURE__ */ React.createElement(AddCircleOutline, null)\n ) : /* @__PURE__ */ React.createElement(Button$1, { component: Link$1, variant: \"contained\", color: \"primary\", to }, title);\n}\n\nvar DependencyGraphTypes;\n((DependencyGraphTypes2) => {\n ((Direction2) => {\n Direction2[\"TOP_BOTTOM\"] = \"TB\";\n Direction2[\"BOTTOM_TOP\"] = \"BT\";\n Direction2[\"LEFT_RIGHT\"] = \"LR\";\n Direction2[\"RIGHT_LEFT\"] = \"RL\";\n })(DependencyGraphTypes2.Direction || (DependencyGraphTypes2.Direction = {}));\n ((Alignment2) => {\n Alignment2[\"UP_LEFT\"] = \"UL\";\n Alignment2[\"UP_RIGHT\"] = \"UR\";\n Alignment2[\"DOWN_LEFT\"] = \"DL\";\n Alignment2[\"DOWN_RIGHT\"] = \"DR\";\n })(DependencyGraphTypes2.Alignment || (DependencyGraphTypes2.Alignment = {}));\n ((Ranker2) => {\n Ranker2[\"NETWORK_SIMPLEX\"] = \"network-simplex\";\n Ranker2[\"TIGHT_TREE\"] = \"tight-tree\";\n Ranker2[\"LONGEST_PATH\"] = \"longest-path\";\n })(DependencyGraphTypes2.Ranker || (DependencyGraphTypes2.Ranker = {}));\n ((LabelPosition2) => {\n LabelPosition2[\"LEFT\"] = \"l\";\n LabelPosition2[\"RIGHT\"] = \"r\";\n LabelPosition2[\"CENTER\"] = \"c\";\n })(DependencyGraphTypes2.LabelPosition || (DependencyGraphTypes2.LabelPosition = {}));\n})(DependencyGraphTypes || (DependencyGraphTypes = {}));\n\nconst useStyles$M = makeStyles(\n (theme) => ({\n node: {\n fill: theme.palette.primary.light,\n stroke: theme.palette.primary.light\n },\n text: {\n fill: theme.palette.primary.contrastText\n }\n }),\n { name: \"BackstageDependencyGraphDefaultNode\" }\n);\nfunction DefaultNode({ node: { id } }) {\n const classes = useStyles$M();\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const idRef = React.useRef(null);\n React.useLayoutEffect(() => {\n if (idRef.current) {\n let { height: renderedHeight, width: renderedWidth } = idRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n if (renderedHeight !== height || renderedWidth !== width) {\n setWidth(renderedWidth);\n setHeight(renderedHeight);\n }\n }\n }, [width, height]);\n const padding = 10;\n const paddedWidth = width + padding * 2;\n const paddedHeight = height + padding * 2;\n return /* @__PURE__ */ React.createElement(\"g\", null, /* @__PURE__ */ React.createElement(\n \"rect\",\n {\n className: classes.node,\n width: paddedWidth,\n height: paddedHeight,\n rx: 10\n }\n ), /* @__PURE__ */ React.createElement(\n \"text\",\n {\n ref: idRef,\n className: classes.text,\n y: paddedHeight / 2,\n x: paddedWidth / 2,\n textAnchor: \"middle\",\n alignmentBaseline: \"middle\"\n },\n id\n ));\n}\n\nconst ARROW_MARKER_ID = \"arrow-marker\";\nconst NODE_TEST_ID = \"node\";\nconst EDGE_TEST_ID = \"edge\";\nconst LABEL_TEST_ID = \"label\";\n\nconst useStyles$L = makeStyles$1(\n (theme) => ({\n node: {\n transition: `${theme.transitions.duration.shortest}ms`\n }\n }),\n { name: \"BackstageDependencyGraphNode\" }\n);\nconst renderDefault$1 = (props) => /* @__PURE__ */ React.createElement(DefaultNode, { ...props });\nfunction Node({\n render = renderDefault$1,\n setNode,\n node\n}) {\n const { width, height, x = 0, y = 0 } = node;\n const nodeProps = node;\n const classes = useStyles$L();\n const nodeRef = React.useRef(null);\n React.useLayoutEffect(() => {\n if (nodeRef.current) {\n let { height: renderedHeight, width: renderedWidth } = nodeRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n if (renderedHeight !== height || renderedWidth !== width) {\n setNode(node.id, {\n ...node,\n height: renderedHeight,\n width: renderedWidth\n });\n }\n }\n }, [node, width, height, setNode]);\n return /* @__PURE__ */ React.createElement(\n \"g\",\n {\n ref: nodeRef,\n \"data-testid\": NODE_TEST_ID,\n className: classes.node,\n transform: `translate(${x - width / 2},${y - height / 2})`\n },\n render({ node: nodeProps })\n );\n}\n\nconst useStyles$K = makeStyles$1(\n (theme) => ({\n text: {\n fill: theme.palette.textContrast\n }\n }),\n { name: \"BackstageDependencyGraphDefaultLabel\" }\n);\nfunction DefaultLabel({ edge: { label } }) {\n const classes = useStyles$K();\n return /* @__PURE__ */ React.createElement(\"text\", { className: classes.text, textAnchor: \"middle\" }, label);\n}\n\nconst useStyles$J = makeStyles$1(\n (theme) => ({\n path: {\n strokeWidth: 1.3,\n stroke: theme.palette.textSubtle,\n fill: \"none\",\n transition: `${theme.transitions.duration.shortest}ms`\n },\n label: {\n transition: `${theme.transitions.duration.shortest}ms`\n }\n }),\n { name: \"BackstageDependencyGraphEdge\" }\n);\nconst renderDefault = (props) => /* @__PURE__ */ React.createElement(DefaultLabel, { ...props });\nfunction Edge({\n render = renderDefault,\n setEdge,\n id,\n edge,\n curve,\n showArrowHeads\n}) {\n const { x = 0, y = 0, width, height, points } = edge;\n const labelProps = edge;\n const classes = useStyles$J();\n const labelRef = React.useRef(null);\n React.useLayoutEffect(() => {\n if (labelRef.current) {\n let { height: renderedHeight, width: renderedWidth } = labelRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n if (renderedHeight !== height || renderedWidth !== width) {\n setEdge(id, {\n ...edge,\n height: renderedHeight,\n width: renderedWidth\n });\n }\n }\n }, [edge, height, width, setEdge, id]);\n let path = \"\";\n const createPath = React.useMemo(\n () => d3Shape.line().x((d) => d.x).y((d) => d.y).curve(d3Shape[curve]),\n [curve]\n );\n if (points) {\n const finitePoints = points.filter(\n (point) => isFinite(point.x) && isFinite(point.y)\n );\n path = createPath(finitePoints) || \"\";\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, path && /* @__PURE__ */ React.createElement(\n \"path\",\n {\n \"data-testid\": EDGE_TEST_ID,\n className: classes.path,\n markerEnd: showArrowHeads ? `url(#${ARROW_MARKER_ID})` : void 0,\n d: path\n }\n ), labelProps.label ? /* @__PURE__ */ React.createElement(\n \"g\",\n {\n ref: labelRef,\n \"data-testid\": LABEL_TEST_ID,\n className: classes.label,\n transform: `translate(${x},${y})`\n },\n render({ edge: labelProps })\n ) : null);\n}\n\nconst WORKSPACE_ID = \"workspace\";\nfunction DependencyGraph(props) {\n var _a, _b;\n const {\n edges,\n nodes,\n renderNode,\n direction = DependencyGraphTypes.Direction.TOP_BOTTOM,\n align,\n nodeMargin = 50,\n edgeMargin = 10,\n rankMargin = 50,\n paddingX = 0,\n paddingY = 0,\n acyclicer,\n ranker = DependencyGraphTypes.Ranker.NETWORK_SIMPLEX,\n labelPosition = DependencyGraphTypes.LabelPosition.RIGHT,\n labelOffset = 10,\n edgeRanks = 1,\n edgeWeight = 1,\n renderLabel,\n defs,\n zoom = \"enabled\",\n curve = \"curveMonotoneX\",\n showArrowHeads = false,\n fit = \"grow\",\n ...svgProps\n } = props;\n const theme = useTheme$1();\n const [containerWidth, setContainerWidth] = React.useState(100);\n const [containerHeight, setContainerHeight] = React.useState(100);\n const graph = React.useRef(new dagre.graphlib.Graph());\n const [graphWidth, setGraphWidth] = React.useState(\n ((_a = graph.current.graph()) == null ? void 0 : _a.width) || 0\n );\n const [graphHeight, setGraphHeight] = React.useState(\n ((_b = graph.current.graph()) == null ? void 0 : _b.height) || 0\n );\n const [graphNodes, setGraphNodes] = React.useState([]);\n const [graphEdges, setGraphEdges] = React.useState([]);\n const maxWidth = Math.max(graphWidth, containerWidth);\n const maxHeight = Math.max(graphHeight, containerHeight);\n const minHeight = Math.min(graphHeight, containerHeight);\n const scalableHeight = fit === \"grow\" ? maxHeight : minHeight;\n const containerRef = React.useMemo(\n () => debounce((node) => {\n if (!node) {\n return;\n }\n const container = d3Selection.select(node);\n const workspace = d3Selection.select(node.getElementById(WORKSPACE_ID));\n function enableZoom() {\n container.call(\n d3Zoom.zoom().scaleExtent([1, Infinity]).on(\"zoom\", (event) => {\n event.transform.x = Math.min(\n 0,\n Math.max(\n event.transform.x,\n maxWidth - maxWidth * event.transform.k\n )\n );\n event.transform.y = Math.min(\n 0,\n Math.max(\n event.transform.y,\n maxHeight - maxHeight * event.transform.k\n )\n );\n workspace.attr(\"transform\", event.transform);\n })\n );\n }\n if (zoom === \"enabled\") {\n enableZoom();\n } else if (zoom === \"enable-on-click\") {\n container.on(\"click\", () => enableZoom());\n }\n const { width: newContainerWidth, height: newContainerHeight } = node.getBoundingClientRect();\n if (containerWidth !== newContainerWidth) {\n setContainerWidth(newContainerWidth);\n }\n if (containerHeight !== newContainerHeight) {\n setContainerHeight(newContainerHeight);\n }\n }, 100),\n [containerHeight, containerWidth, maxWidth, maxHeight, zoom]\n );\n const setNodesAndEdges = React.useCallback(() => {\n const currentGraphNodes = graph.current.nodes();\n const currentGraphEdges = graph.current.edges();\n currentGraphNodes.forEach((nodeId) => {\n const remainingNode = nodes.some((node) => node.id === nodeId);\n if (!remainingNode) {\n graph.current.removeNode(nodeId);\n }\n });\n currentGraphEdges.forEach((e) => {\n const remainingEdge = edges.some(\n (edge) => edge.from === e.v && edge.to === e.w\n );\n if (!remainingEdge) {\n graph.current.removeEdge(e.v, e.w);\n }\n });\n nodes.forEach((node) => {\n const existingNode = graph.current.nodes().find((nodeId) => node.id === nodeId);\n if (existingNode && graph.current.node(existingNode)) {\n const { width, height, x, y } = graph.current.node(existingNode);\n graph.current.setNode(existingNode, { ...node, width, height, x, y });\n } else {\n graph.current.setNode(node.id, { ...node, width: 0, height: 0 });\n }\n });\n edges.forEach((e) => {\n graph.current.setEdge(e.from, e.to, {\n ...e,\n label: e.label,\n width: 0,\n height: 0,\n labelpos: labelPosition,\n labeloffset: labelOffset,\n weight: edgeWeight,\n minlen: edgeRanks\n });\n });\n }, [edges, nodes, labelPosition, labelOffset, edgeWeight, edgeRanks]);\n const updateGraph = React.useMemo(\n () => debounce(\n () => {\n dagre.layout(graph.current);\n const { height, width } = graph.current.graph();\n const newHeight = Math.max(0, height || 0);\n const newWidth = Math.max(0, width || 0);\n setGraphWidth(newWidth);\n setGraphHeight(newHeight);\n setGraphNodes(graph.current.nodes());\n setGraphEdges(graph.current.edges());\n },\n 250,\n { leading: true }\n ),\n []\n );\n React.useEffect(() => {\n graph.current.setGraph({\n rankdir: direction,\n align,\n nodesep: nodeMargin,\n edgesep: edgeMargin,\n ranksep: rankMargin,\n marginx: paddingX,\n marginy: paddingY,\n acyclicer,\n ranker\n });\n setNodesAndEdges();\n updateGraph();\n return updateGraph.cancel;\n }, [\n acyclicer,\n align,\n direction,\n edgeMargin,\n paddingX,\n paddingY,\n nodeMargin,\n rankMargin,\n ranker,\n setNodesAndEdges,\n updateGraph\n ]);\n function setNode(id, node) {\n graph.current.setNode(id, node);\n updateGraph();\n return graph.current;\n }\n function setEdge(id, edge) {\n graph.current.setEdge(id, edge);\n updateGraph();\n return graph.current;\n }\n return /* @__PURE__ */ React.createElement(\n \"svg\",\n {\n ref: containerRef,\n ...svgProps,\n width: \"100%\",\n height: scalableHeight,\n viewBox: `0 0 ${maxWidth} ${maxHeight}`\n },\n /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\n \"marker\",\n {\n id: ARROW_MARKER_ID,\n viewBox: \"0 0 24 24\",\n markerWidth: \"14\",\n markerHeight: \"14\",\n refX: \"16\",\n refY: \"12\",\n orient: \"auto\",\n markerUnits: \"strokeWidth\"\n },\n /* @__PURE__ */ React.createElement(\n \"path\",\n {\n fill: theme.palette.textSubtle,\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n }\n )\n ), defs),\n /* @__PURE__ */ React.createElement(\"g\", { id: WORKSPACE_ID }, /* @__PURE__ */ React.createElement(\n \"svg\",\n {\n width: graphWidth,\n height: graphHeight,\n y: maxHeight / 2 - graphHeight / 2,\n x: maxWidth / 2 - graphWidth / 2,\n viewBox: `0 0 ${graphWidth} ${graphHeight}`\n },\n graphEdges.map((e) => {\n const edge = graph.current.edge(e);\n if (!edge)\n return null;\n return /* @__PURE__ */ React.createElement(\n Edge,\n {\n key: `${e.v}-${e.w}`,\n id: e,\n setEdge,\n render: renderLabel,\n edge,\n curve,\n showArrowHeads\n }\n );\n }),\n graphNodes.map((id) => {\n const node = graph.current.node(id);\n if (!node)\n return null;\n return /* @__PURE__ */ React.createElement(\n Node,\n {\n key: id,\n setNode,\n render: renderNode,\n node\n }\n );\n })\n ))\n );\n}\n\nconst useStyles$I = makeStyles(\n (theme) => {\n var _a, _b;\n return {\n root: {\n padding: theme.spacing(0),\n marginBottom: theme.spacing(0),\n marginTop: theme.spacing(0),\n display: \"flex\",\n flexFlow: \"row nowrap\"\n },\n // showing on top\n topPosition: {\n position: \"relative\",\n marginBottom: theme.spacing(6),\n marginTop: -theme.spacing(3),\n zIndex: \"unset\"\n },\n icon: {\n fontSize: theme.typography.h6.fontSize\n },\n content: {\n width: \"100%\",\n maxWidth: \"inherit\",\n flexWrap: \"nowrap\",\n color: theme.palette.banner.text\n },\n message: {\n display: \"flex\",\n alignItems: \"center\",\n \"& a\": {\n color: theme.palette.banner.link\n }\n },\n button: {\n color: (_a = theme.palette.banner.closeButtonColor) != null ? _a : \"inherit\"\n },\n info: {\n backgroundColor: theme.palette.banner.info\n },\n error: {\n backgroundColor: theme.palette.banner.error\n },\n warning: {\n backgroundColor: (_b = theme.palette.banner.warning) != null ? _b : theme.palette.banner.error\n }\n };\n },\n { name: \"BackstageDismissableBanner\" }\n);\nconst DismissableBanner = (props) => {\n var _a;\n const { variant, message, id, fixed = false } = props;\n const classes = useStyles$I();\n const storageApi = useApi(storageApiRef);\n const notificationsStore = storageApi.forBucket(\"notifications\");\n const rawDismissedBanners = (_a = notificationsStore.snapshot(\"dismissedBanners\").value) != null ? _a : [];\n const [dismissedBanners, setDismissedBanners] = useState(\n new Set(rawDismissedBanners)\n );\n const observedItems = useObservable(\n notificationsStore.observe$(\"dismissedBanners\")\n );\n useEffect(() => {\n var _a2;\n if (observedItems == null ? void 0 : observedItems.value) {\n const currentValue = (_a2 = observedItems == null ? void 0 : observedItems.value) != null ? _a2 : [];\n setDismissedBanners(new Set(currentValue));\n }\n }, [observedItems == null ? void 0 : observedItems.value]);\n const handleClick = () => {\n notificationsStore.set(\"dismissedBanners\", [...dismissedBanners, id]);\n };\n return /* @__PURE__ */ React.createElement(\n Snackbar,\n {\n anchorOrigin: fixed ? { vertical: \"bottom\", horizontal: \"center\" } : { vertical: \"top\", horizontal: \"center\" },\n open: !dismissedBanners.has(id),\n classes: {\n root: classNames(classes.root, !fixed && classes.topPosition)\n }\n },\n /* @__PURE__ */ React.createElement(\n SnackbarContent,\n {\n classes: {\n root: classNames(classes.content, classes[variant]),\n message: classes.message\n },\n message,\n action: [\n /* @__PURE__ */ React.createElement(\n IconButton,\n {\n key: \"dismiss\",\n title: \"Permanently dismiss this message\",\n className: classes.button,\n onClick: handleClick\n },\n /* @__PURE__ */ React.createElement(CloseIcon, { className: classes.icon })\n )\n ]\n }\n )\n );\n};\n\nconst useStyles$H = makeStyles(\n {\n generalImg: {\n width: \"95%\",\n zIndex: 2,\n position: \"relative\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, 15%)\"\n }\n },\n { name: \"BackstageEmptyStateImage\" }\n);\nconst EmptyStateImage = ({ missing }) => {\n const classes = useStyles$H();\n switch (missing) {\n case \"field\":\n return /* @__PURE__ */ React.createElement(\n \"img\",\n {\n src: missingAnnotation,\n className: classes.generalImg,\n alt: \"annotation is missing\"\n }\n );\n case \"info\":\n return /* @__PURE__ */ React.createElement(\n \"img\",\n {\n src: noInformation,\n alt: \"no Information\",\n className: classes.generalImg\n }\n );\n case \"content\":\n return /* @__PURE__ */ React.createElement(\n \"img\",\n {\n src: createComponent,\n alt: \"create Component\",\n className: classes.generalImg\n }\n );\n case \"data\":\n return /* @__PURE__ */ React.createElement(\"img\", { src: noBuild, alt: \"no Build\", className: classes.generalImg });\n default:\n return null;\n }\n};\n\nconst useStyles$G = makeStyles(\n (theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n padding: theme.spacing(2, 0, 0, 0)\n },\n action: {\n marginTop: theme.spacing(2)\n },\n imageContainer: {\n position: \"relative\"\n }\n }),\n { name: \"BackstageEmptyState\" }\n);\nfunction EmptyState(props) {\n const { title, description, missing, action } = props;\n const classes = useStyles$G();\n return /* @__PURE__ */ React.createElement(\n Grid,\n {\n container: true,\n direction: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"flex-start\",\n className: classes.root,\n spacing: 2\n },\n /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(Grid, { container: true, direction: \"column\" }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\" }, title)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, description)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, className: classes.action }, action))),\n /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6, className: classes.imageContainer }, typeof missing === \"string\" ? /* @__PURE__ */ React.createElement(EmptyStateImage, { missing }) : missing.customImage)\n );\n}\n\nconst COMPONENT_YAML_TEMPLATE = `apiVersion: backstage.io/v1alpha1\nkind: Component\nmetadata:\n name: example\n description: example.com\n annotations:\n ANNOTATION: value\nspec:\n type: website\n lifecycle: production\n owner: user:guest`;\nconst ANNOTATION_REGEXP = /^.*ANNOTATION.*$/m;\nconst ANNOTATION_YAML = COMPONENT_YAML_TEMPLATE.match(ANNOTATION_REGEXP)[0];\nconst ANNOTATION_LINE = COMPONENT_YAML_TEMPLATE.split(\"\\n\").findIndex(\n (line) => ANNOTATION_REGEXP.test(line)\n);\nconst useStyles$F = makeStyles(\n (theme) => ({\n code: {\n borderRadius: 6,\n margin: theme.spacing(2, 0),\n background: theme.palette.type === \"dark\" ? \"#444\" : theme.palette.common.white\n }\n }),\n { name: \"BackstageMissingAnnotationEmptyState\" }\n);\nfunction generateLineNumbers(lineCount) {\n return Array.from(Array(lineCount + 1).keys(), (i) => i + ANNOTATION_LINE);\n}\nfunction generateComponentYaml(annotations) {\n const annotationYaml = annotations.map((ann) => ANNOTATION_YAML.replace(\"ANNOTATION\", ann)).join(\"\\n\");\n return COMPONENT_YAML_TEMPLATE.replace(ANNOTATION_YAML, annotationYaml);\n}\nfunction useGenerateDescription(annotations) {\n const isSingular = annotations.length <= 1;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, \"The \", isSingular ? \"annotation\" : \"annotations\", \" \", annotations.map((ann) => /* @__PURE__ */ React.createElement(\"code\", null, ann)).reduce((prev, curr) => /* @__PURE__ */ React.createElement(React.Fragment, null, prev, \", \", curr)), \" \", isSingular ? \"is\" : \"are\", \" missing. You need to add the\", \" \", isSingular ? \"annotation\" : \"annotations\", \" to your component if you want to enable this tool.\");\n}\nfunction MissingAnnotationEmptyState(props) {\n const { annotation, readMoreUrl } = props;\n const annotations = Array.isArray(annotation) ? annotation : [annotation];\n const url = readMoreUrl || \"https://backstage.io/docs/features/software-catalog/well-known-annotations\";\n const classes = useStyles$F();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(\n EmptyState,\n {\n missing: \"field\",\n title: t(\"emptyState.missingAnnotation.title\"),\n description: useGenerateDescription(annotations),\n action: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, t(\"emptyState.missingAnnotation.actionTitle\")), /* @__PURE__ */ React.createElement(Box, { className: classes.code }, /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: generateComponentYaml(annotations),\n language: \"yaml\",\n showLineNumbers: true,\n highlightedNumbers: generateLineNumbers(annotations.length),\n customStyle: { background: \"inherit\", fontSize: \"115%\" }\n }\n )), /* @__PURE__ */ React.createElement(Button$1, { color: \"primary\", component: Link, to: url }, t(\"emptyState.missingAnnotation.readMore\")))\n }\n );\n}\n\nconst useStyles$E = makeStyles(\n (theme) => ({\n markdown: {\n \"& table\": {\n borderCollapse: \"collapse\",\n border: `1px solid ${theme.palette.border}`\n },\n \"& th, & td\": {\n border: `1px solid ${theme.palette.border}`,\n padding: theme.spacing(1)\n },\n \"& td\": {\n wordBreak: \"break-word\",\n overflow: \"hidden\",\n verticalAlign: \"middle\",\n lineHeight: \"1\",\n margin: 0,\n padding: theme.spacing(3, 2, 3, 2.5),\n borderBottom: 0\n },\n \"& th\": {\n backgroundColor: theme.palette.background.paper\n },\n \"& tr\": {\n backgroundColor: theme.palette.background.paper\n },\n \"& tr:nth-child(odd)\": {\n backgroundColor: theme.palette.background.default\n },\n \"& a\": {\n color: theme.palette.link\n },\n \"& img\": {\n maxWidth: \"100%\"\n }\n }\n }),\n { name: \"BackstageMarkdownContent\" }\n);\nconst flatten = (text, child) => {\n if (!child)\n return text;\n return typeof child === \"string\" ? text + child : React.Children.toArray(child.props.children).reduce(flatten, text);\n};\nconst headingRenderer = ({ level, children }) => {\n const childrenArray = React.Children.toArray(children);\n const text = childrenArray.reduce(flatten, \"\");\n const slug = text.toLocaleLowerCase(\"en-US\").replace(/\\W/g, \"-\");\n return React.createElement(`h${level}`, { id: slug }, children);\n};\nconst components = {\n code: ({ inline, className, children, ...props }) => {\n const text = String(children).replace(/\\n+$/, \"\");\n const match = /language-(\\w+)/.exec(className || \"\");\n return !inline && match ? /* @__PURE__ */ React.createElement(CodeSnippet, { language: match[1], text }) : /* @__PURE__ */ React.createElement(\"code\", { className, ...props }, children);\n },\n h1: headingRenderer,\n h2: headingRenderer,\n h3: headingRenderer,\n h4: headingRenderer,\n h5: headingRenderer,\n h6: headingRenderer\n};\nfunction MarkdownContent(props) {\n const {\n content,\n dialect = \"gfm\",\n linkTarget,\n transformLinkUri,\n transformImageUri,\n className\n } = props;\n const classes = useStyles$E();\n return /* @__PURE__ */ React.createElement(\n ReactMarkdown,\n {\n remarkPlugins: dialect === \"gfm\" ? [gfm] : [],\n className: `${classes.markdown} ${className != null ? className : \"\"}`.trim(),\n children: content,\n components,\n linkTarget,\n transformLinkUri,\n transformImageUri\n }\n );\n}\n\nconst getWarningTextColor = (severity, theme) => {\n const getColor = theme.palette.type === \"light\" ? darken : lighten;\n return getColor(theme.palette[severity].light, 0.6);\n};\nconst getWarningBackgroundColor = (severity, theme) => {\n const getBackgroundColor = theme.palette.type === \"light\" ? lighten : darken;\n return getBackgroundColor(theme.palette[severity].light, 0.9);\n};\nconst useErrorOutlineStyles = makeStyles((theme) => ({\n root: {\n marginRight: theme.spacing(1),\n fill: ({ severity }) => getWarningTextColor(\n severity,\n theme\n )\n }\n}));\nconst ErrorOutlineStyled = ({ severity }) => {\n const classes = useErrorOutlineStyles({ severity });\n return /* @__PURE__ */ React.createElement(ErrorOutline, { classes });\n};\nconst ExpandMoreIconStyled = ({ severity }) => {\n const classes = useErrorOutlineStyles({ severity });\n return /* @__PURE__ */ React.createElement(ExpandMoreIcon, { classes });\n};\nconst useStyles$D = makeStyles(\n (theme) => ({\n panel: {\n backgroundColor: ({ severity }) => getWarningBackgroundColor(\n severity,\n theme\n ),\n color: ({ severity }) => getWarningTextColor(\n severity,\n theme\n ),\n verticalAlign: \"middle\"\n },\n summary: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n summaryText: {\n color: ({ severity }) => getWarningTextColor(\n severity,\n theme\n ),\n fontWeight: theme.typography.fontWeightBold\n },\n markdownContent: {\n \"& p\": {\n display: \"inline\"\n }\n },\n message: {\n width: \"100%\",\n display: \"block\",\n color: ({ severity }) => getWarningTextColor(\n severity,\n theme\n ),\n backgroundColor: ({ severity }) => getWarningBackgroundColor(\n severity,\n theme\n )\n },\n details: {\n width: \"100%\",\n display: \"block\",\n color: theme.palette.textContrast,\n backgroundColor: theme.palette.background.default,\n border: `1px solid ${theme.palette.border}`,\n padding: theme.spacing(2),\n fontFamily: \"sans-serif\"\n }\n }),\n { name: \"BackstageWarningPanel\" }\n);\nconst capitalize = (s) => {\n return s.charAt(0).toLocaleUpperCase(\"en-US\") + s.slice(1);\n};\nfunction WarningPanel(props) {\n const {\n severity = \"warning\",\n title,\n titleFormat,\n message,\n children,\n defaultExpanded\n } = props;\n const classes = useStyles$D({ severity });\n const subTitle = capitalize(severity) + (title ? `: ${title}` : \"\");\n return /* @__PURE__ */ React.createElement(\n Accordion,\n {\n defaultExpanded: defaultExpanded != null ? defaultExpanded : false,\n className: classes.panel,\n role: \"alert\"\n },\n /* @__PURE__ */ React.createElement(\n AccordionSummary,\n {\n expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIconStyled, { severity }),\n className: classes.summary\n },\n /* @__PURE__ */ React.createElement(ErrorOutlineStyled, { severity }),\n /* @__PURE__ */ React.createElement(Typography, { className: classes.summaryText, variant: \"subtitle1\" }, titleFormat === \"markdown\" ? /* @__PURE__ */ React.createElement(\n MarkdownContent,\n {\n content: subTitle,\n className: classes.markdownContent\n }\n ) : subTitle)\n ),\n (message || children) && /* @__PURE__ */ React.createElement(AccordionDetails, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, message && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { className: classes.message, variant: \"body1\" }, message)), children && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, className: classes.details }, children)))\n );\n}\n\nconst useStyles$C = makeStyles(\n (theme) => ({\n text: {\n fontFamily: \"monospace\",\n whiteSpace: \"pre\",\n overflowX: \"auto\",\n marginRight: theme.spacing(2)\n },\n divider: {\n margin: theme.spacing(2)\n }\n }),\n { name: \"BackstageErrorPanel\" }\n);\nconst ErrorList = ({\n error,\n message,\n stack,\n children\n}) => {\n const classes = useStyles$C();\n return /* @__PURE__ */ React.createElement(List, { dense: true }, /* @__PURE__ */ React.createElement(ListItem, { alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n classes: { secondary: classes.text },\n primary: \"Error\",\n secondary: error\n }\n ), /* @__PURE__ */ React.createElement(CopyTextButton, { text: error })), /* @__PURE__ */ React.createElement(ListItem, { alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n classes: { secondary: classes.text },\n primary: \"Message\",\n secondary: message\n }\n ), /* @__PURE__ */ React.createElement(CopyTextButton, { text: message })), stack && /* @__PURE__ */ React.createElement(ListItem, { alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n classes: { secondary: classes.text },\n primary: \"Stack Trace\",\n secondary: stack\n }\n ), /* @__PURE__ */ React.createElement(CopyTextButton, { text: stack })), children);\n};\nfunction ErrorPanel(props) {\n const { title, error, defaultExpanded, titleFormat, children } = props;\n return /* @__PURE__ */ React.createElement(\n WarningPanel,\n {\n severity: \"error\",\n title: title != null ? title : error.message,\n defaultExpanded,\n titleFormat\n },\n /* @__PURE__ */ React.createElement(\n ErrorList,\n {\n error: error.name,\n message: error.message,\n stack: error.stack,\n children\n }\n )\n );\n}\n\nconst useStyles$B = makeStyles(\n (theme) => ({\n text: {\n fontFamily: \"monospace\",\n whiteSpace: \"pre\",\n overflowX: \"auto\",\n marginRight: theme.spacing(2)\n },\n divider: {\n margin: theme.spacing(2)\n }\n }),\n { name: \"BackstageResponseErrorPanel\" }\n);\nfunction ResponseErrorPanel(props) {\n var _a;\n const { title, error, defaultExpanded } = props;\n const classes = useStyles$B();\n if (error.name !== \"ResponseError\") {\n return /* @__PURE__ */ React.createElement(\n ErrorPanel,\n {\n title: title != null ? title : error.message,\n defaultExpanded,\n error\n }\n );\n }\n const { body, cause } = error;\n const { request, response } = body;\n const errorString = `${response.statusCode}: ${cause.name}`;\n const requestString = request && `${request.method} ${request.url}`;\n const messageString = cause.message.replace(/\\\\n/g, \"\\n\");\n const stackString = (_a = cause.stack) == null ? void 0 : _a.replace(/\\\\n/g, \"\\n\");\n const jsonString = JSON.stringify(body, void 0, 2);\n return /* @__PURE__ */ React.createElement(\n ErrorPanel,\n {\n title: title != null ? title : error.message,\n defaultExpanded,\n error: { name: errorString, message: messageString, stack: stackString }\n },\n requestString && /* @__PURE__ */ React.createElement(ListItem, { alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n classes: { secondary: classes.text },\n primary: \"Request\",\n secondary: request ? `${requestString}` : void 0\n }\n ), /* @__PURE__ */ React.createElement(CopyTextButton, { text: requestString })),\n /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Divider, { component: \"li\", className: classes.divider }), /* @__PURE__ */ React.createElement(ListItem, { alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n classes: { secondary: classes.text },\n primary: \"Full Error as JSON\"\n }\n )), /* @__PURE__ */ React.createElement(CodeSnippet, { language: \"json\", text: jsonString, showCopyCodeButton: true }))\n );\n}\n\nfunction createRootElement(id) {\n const rootContainer = document.createElement(\"div\");\n rootContainer.setAttribute(\"id\", id);\n return rootContainer;\n}\nfunction addRootElement(rootElem) {\n document.body.insertBefore(\n rootElem,\n document.body.lastElementChild.nextElementSibling\n );\n}\nfunction usePortal(id) {\n const rootElemRef = useRef(null);\n useEffect(\n function setupElement() {\n const existingParent = document.querySelector(`#${id}`);\n const parentElem = existingParent || createRootElement(id);\n if (!existingParent) {\n addRootElement(parentElem);\n }\n parentElem.appendChild(rootElemRef.current);\n return function removeElement() {\n rootElemRef.current.remove();\n if (parentElem.childNodes.length === -1) {\n parentElem.remove();\n }\n };\n },\n [id]\n );\n function getRootElem() {\n if (!rootElemRef.current) {\n rootElemRef.current = document.createElement(\"div\");\n }\n return rootElemRef.current;\n }\n return getRootElem();\n}\n\nconst STATES_LOCAL_STORAGE_KEY = \"core.calloutSeen\";\nfunction useCalloutStates() {\n const [states, setStates] = useState(() => {\n const raw = localStorage.getItem(STATES_LOCAL_STORAGE_KEY);\n return raw ? JSON.parse(raw) : {};\n });\n const setState = useCallback((key, value) => {\n const raw = localStorage.getItem(STATES_LOCAL_STORAGE_KEY);\n const oldStates = raw ? JSON.parse(raw) : {};\n const newStates = { ...oldStates, [key]: value };\n setStates(newStates);\n localStorage.setItem(STATES_LOCAL_STORAGE_KEY, JSON.stringify(newStates));\n }, []);\n return { states, setState };\n}\nfunction useCalloutHasBeenSeen(featureId) {\n const { states, setState } = useCalloutStates();\n const markSeen = useCallback(() => {\n setState(featureId, true);\n }, [setState, featureId]);\n return { seen: states[featureId] === true, markSeen };\n}\nfunction useShowCallout(featureId) {\n const { seen, markSeen } = useCalloutHasBeenSeen(featureId);\n return { show: seen === false, hide: markSeen };\n}\n\nconst useStyles$A = makeStyles(\n (theme) => ({\n \"@keyframes pulsateSlightly\": {\n \"0%\": { transform: \"scale(1.0)\" },\n \"100%\": { transform: \"scale(1.1)\" }\n },\n \"@keyframes pulsateAndFade\": {\n \"0%\": { transform: \"scale(1.0)\", opacity: 0.9 },\n \"100%\": { transform: \"scale(1.5)\", opacity: 0 }\n },\n featureWrapper: {\n position: \"relative\"\n },\n backdrop: {\n zIndex: 2e3,\n position: \"fixed\",\n overflow: \"hidden\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n dot: {\n position: \"absolute\",\n backgroundColor: \"transparent\",\n borderRadius: \"100%\",\n border: \"1px solid rgba(103, 146, 180, 0.98)\",\n boxShadow: \"0px 0px 0px 20000px rgba(0, 0, 0, 0.5)\",\n zIndex: 2001,\n transformOrigin: \"center center\",\n animation: \"$pulsateSlightly 1744ms 1.2s cubic-bezier(0.4, 0, 0.2, 1) alternate infinite\"\n },\n pulseCircle: {\n width: \"100%\",\n height: \"100%\",\n backgroundColor: \"transparent\",\n borderRadius: \"100%\",\n border: `2px solid ${theme.palette.common.white}`,\n zIndex: 2001,\n transformOrigin: \"center center\",\n animation: \"$pulsateAndFade 872ms 1.2s cubic-bezier(0.4, 0, 0.2, 1) infinite\"\n },\n text: {\n position: \"absolute\",\n color: theme.palette.common.white,\n zIndex: 2003\n }\n }),\n { name: \"BackstageFeatureCalloutCircular\" }\n);\nfunction FeatureCalloutCircular(props) {\n const { featureId, title, description, children } = props;\n const { show, hide } = useShowCallout(featureId);\n const portalElement = usePortal(\"core.callout\");\n const wrapperRef = useRef(null);\n const [placement, setPlacement] = useState();\n const classes = useStyles$A();\n const update = useCallback(() => {\n if (wrapperRef.current) {\n const wrapperBounds = wrapperRef.current.getBoundingClientRect();\n const longest = Math.max(wrapperBounds.width, wrapperBounds.height);\n const borderWidth = 800;\n const dotLeft = wrapperBounds.x - (longest - wrapperBounds.width) / 2 - borderWidth;\n const dotTop = wrapperBounds.y - (longest - wrapperBounds.height) / 2 - borderWidth;\n const dotSize = longest + 2 * borderWidth;\n const textWidth = 450;\n const textLeft = wrapperBounds.x + wrapperBounds.width / 2 - textWidth;\n const textTop = wrapperBounds.y - (longest - wrapperBounds.height) / 2 + longest + 20;\n setPlacement({\n dotLeft,\n dotTop,\n dotSize,\n borderWidth,\n textTop,\n textLeft,\n textWidth\n });\n }\n }, []);\n useEffect(() => {\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update);\n return () => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update);\n };\n }, [update]);\n useLayoutEffect(update, [wrapperRef.current, update]);\n if (!show) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, children);\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { className: classes.featureWrapper, ...{ ref: wrapperRef } }, children), createPortal(\n /* @__PURE__ */ React.createElement(Box, { className: classes.backdrop }, /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: hide }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classes.dot,\n \"data-testid\": \"dot\",\n style: {\n left: placement == null ? void 0 : placement.dotLeft,\n top: placement == null ? void 0 : placement.dotTop,\n width: placement == null ? void 0 : placement.dotSize,\n height: placement == null ? void 0 : placement.dotSize,\n borderWidth: placement == null ? void 0 : placement.borderWidth\n },\n onClick: hide,\n onKeyDown: hide,\n role: \"button\",\n tabIndex: 0\n },\n /* @__PURE__ */ React.createElement(Box, { className: classes.pulseCircle })\n ), /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classes.text,\n \"data-testid\": \"text\",\n style: {\n left: placement == null ? void 0 : placement.textLeft,\n top: placement == null ? void 0 : placement.textTop,\n width: placement == null ? void 0 : placement.textWidth\n }\n },\n /* @__PURE__ */ React.createElement(Typography, { variant: \"h2\", paragraph: true }, title),\n /* @__PURE__ */ React.createElement(Typography, null, description)\n )))),\n portalElement\n ));\n}\n\nconst useIconStyles = makeStyles(\n (theme) => ({\n link: {\n display: \"grid\",\n justifyItems: \"center\",\n gridGap: 4,\n textAlign: \"center\"\n },\n disabled: {\n color: theme.palette.text.secondary,\n cursor: \"default\"\n },\n primary: {\n color: theme.palette.primary.main\n },\n secondary: {\n color: theme.palette.secondary.main\n },\n label: {\n textTransform: \"uppercase\",\n fontWeight: theme.typography.fontWeightBold,\n letterSpacing: 1.2\n }\n }),\n { name: \"BackstageIconLinkVertical\" }\n);\nfunction IconLinkVertical({\n color = \"primary\",\n disabled = false,\n href = \"#\",\n icon = /* @__PURE__ */ React.createElement(LinkIcon, null),\n label,\n onClick,\n title\n}) {\n const classes = useIconStyles();\n if (disabled) {\n return /* @__PURE__ */ React.createElement(Box, { title, className: classNames(classes.link, classes.disabled) }, icon, /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"caption\",\n component: \"span\",\n className: classes.label\n },\n label\n ));\n }\n return /* @__PURE__ */ React.createElement(\n Link,\n {\n title,\n className: classNames(classes.link, classes[color]),\n to: href,\n onClick\n },\n icon,\n /* @__PURE__ */ React.createElement(Typography, { variant: \"caption\", component: \"span\", className: classes.label }, label)\n );\n}\n\nconst useStyles$z = makeStyles(\n (theme) => ({\n links: {\n margin: theme.spacing(2, 0),\n display: \"grid\",\n gridAutoFlow: \"column\",\n gridAutoColumns: \"min-content\",\n gridGap: theme.spacing(3)\n }\n }),\n { name: \"BackstageHeaderIconLinkRow\" }\n);\nfunction HeaderIconLinkRow(props) {\n const { links } = props;\n const classes = useStyles$z();\n return /* @__PURE__ */ React.createElement(\"nav\", { className: classes.links }, links.map((link, index) => /* @__PURE__ */ React.createElement(IconLinkVertical, { key: index + 1, ...link })));\n}\n\nconst generateGradientStops = (themeType) => {\n const luminance = themeType === \"dark\" ? \"16%\" : \"97%\";\n return `\n hsl(0, 0%, ${luminance}) 0%,\n hsla(0, 0%, ${luminance}, 0.987) 8.1%,\n hsla(0, 0%, ${luminance}, 0.951) 15.5%,\n hsla(0, 0%, ${luminance}, 0.896) 22.5%,\n hsla(0, 0%, ${luminance}, 0.825) 29%,\n hsla(0, 0%, ${luminance}, 0.741) 35.3%,\n hsla(0, 0%, ${luminance}, 0.648) 41.2%,\n hsla(0, 0%, ${luminance}, 0.55) 47.1%,\n hsla(0, 0%, ${luminance}, 0.45) 52.9%,\n hsla(0, 0%, ${luminance}, 0.352) 58.8%,\n hsla(0, 0%, ${luminance}, 0.259) 64.7%,\n hsla(0, 0%, ${luminance}, 0.175) 71%,\n hsla(0, 0%, ${luminance}, 0.104) 77.5%,\n hsla(0, 0%, ${luminance}, 0.049) 84.5%,\n hsla(0, 0%, ${luminance}, 0.013) 91.9%,\n hsla(0, 0%, ${luminance}, 0) 100%\n `;\n};\nconst fadeSize = 100;\nconst fadePadding = 10;\nconst useStyles$y = makeStyles(\n (theme) => ({\n root: {\n position: \"relative\",\n display: \"flex\",\n flexFlow: \"row nowrap\",\n alignItems: \"center\"\n },\n container: {\n overflow: \"auto\",\n scrollbarWidth: 0,\n // hide in FF\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n // hide in Chrome\n }\n },\n fade: {\n position: \"absolute\",\n width: fadeSize,\n height: `calc(100% + ${fadePadding}px)`,\n transition: \"opacity 300ms\",\n pointerEvents: \"none\"\n },\n fadeLeft: {\n left: -fadePadding,\n background: `linear-gradient(90deg, ${generateGradientStops(\n theme.palette.type\n )})`\n },\n fadeRight: {\n right: -fadePadding,\n background: `linear-gradient(270deg, ${generateGradientStops(\n theme.palette.type\n )})`\n },\n fadeHidden: {\n opacity: 0\n },\n button: {\n position: \"absolute\"\n },\n buttonLeft: {\n left: -theme.spacing(2)\n },\n buttonRight: {\n right: -theme.spacing(2)\n }\n }),\n { name: \"BackstageHorizontalScrollGrid\" }\n);\nfunction useScrollDistance(ref) {\n const [[scrollLeft, scrollRight], setScroll] = React.useState([0, 0]);\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el) {\n setScroll([0, 0]);\n return;\n }\n const handleUpdate = () => {\n const left = el.scrollLeft;\n const right = el.scrollWidth - el.offsetWidth - el.scrollLeft;\n setScroll([left, right]);\n };\n handleUpdate();\n el.addEventListener(\"scroll\", handleUpdate);\n window.addEventListener(\"resize\", handleUpdate);\n return () => {\n el.removeEventListener(\"scroll\", handleUpdate);\n window.removeEventListener(\"resize\", handleUpdate);\n };\n }, [ref]);\n return [scrollLeft, scrollRight];\n}\nfunction useSmoothScroll(ref, speed, minDistance) {\n const [scrollTarget, setScrollTarget] = React.useState(0);\n React.useLayoutEffect(() => {\n if (scrollTarget === 0) {\n return;\n }\n const startTime = window.performance.now();\n const id = requestAnimationFrame((frameTime) => {\n if (!ref.current) {\n return;\n }\n const frameDuration = frameTime - startTime;\n const scrollDistance = Math.abs(scrollTarget) * frameDuration / speed;\n const cappedScrollDistance = Math.max(minDistance, scrollDistance);\n const scrollAmount = cappedScrollDistance * Math.sign(scrollTarget);\n ref.current.scrollBy({ left: scrollAmount });\n const newScrollTarget = scrollTarget - scrollAmount;\n if (Math.sign(scrollTarget) !== Math.sign(newScrollTarget)) {\n setScrollTarget(0);\n } else {\n setScrollTarget(newScrollTarget);\n }\n });\n return () => cancelAnimationFrame(id);\n }, [ref, scrollTarget, speed, minDistance]);\n return setScrollTarget;\n}\nfunction HorizontalScrollGrid(props) {\n const {\n scrollStep = 100,\n scrollSpeed = 50,\n minScrollDistance = 5,\n children,\n ...otherProps\n } = props;\n const classes = useStyles$y(props);\n const ref = React.useRef();\n const [scrollLeft, scrollRight] = useScrollDistance(ref);\n const setScrollTarget = useSmoothScroll(ref, scrollSpeed, minScrollDistance);\n const handleScrollClick = (forwards) => {\n const el = ref.current;\n if (!el) {\n return;\n }\n setScrollTarget(forwards ? scrollStep : -scrollStep);\n };\n return /* @__PURE__ */ React.createElement(Box, { ...otherProps, className: classes.root }, /* @__PURE__ */ React.createElement(\n Grid,\n {\n container: true,\n direction: \"row\",\n wrap: \"nowrap\",\n className: classes.container,\n ref\n },\n children\n ), /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classNames(classes.fade, classes.fadeLeft, {\n [classes.fadeHidden]: scrollLeft === 0\n })\n }\n ), /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classNames(classes.fade, classes.fadeRight, {\n [classes.fadeHidden]: scrollRight === 0\n })\n }\n ), scrollLeft > 0 && /* @__PURE__ */ React.createElement(\n IconButton,\n {\n title: \"Scroll Left\",\n onClick: () => handleScrollClick(false),\n className: classNames(classes.button, classes.buttonLeft, {})\n },\n /* @__PURE__ */ React.createElement(ChevronLeftIcon, null)\n ), scrollRight > 0 && /* @__PURE__ */ React.createElement(\n IconButton,\n {\n title: \"Scroll Right\",\n onClick: () => handleScrollClick(true),\n className: classNames(classes.button, classes.buttonRight, {})\n },\n /* @__PURE__ */ React.createElement(ChevronRight, null)\n ));\n}\n\nconst useStyles$x = makeStyles(\n (theme) => ({\n alpha: {\n color: theme.palette.common.white,\n fontFamily: \"serif\",\n fontWeight: \"normal\",\n fontStyle: \"italic\"\n },\n beta: {\n color: \"#4d65cc\",\n fontFamily: \"serif\",\n fontWeight: \"normal\",\n fontStyle: \"italic\"\n }\n }),\n { name: \"BackstageLifecycle\" }\n);\nfunction Lifecycle(props) {\n const classes = useStyles$x(props);\n const { shorthand, alpha } = props;\n return shorthand ? /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classes[alpha ? \"alpha\" : \"beta\"],\n style: { fontSize: \"120%\" }\n },\n alpha ? /* @__PURE__ */ React.createElement(React.Fragment, null, \"\\u03B1\") : /* @__PURE__ */ React.createElement(React.Fragment, null, \"\\u03B2\")\n ) : /* @__PURE__ */ React.createElement(Typography, { component: \"span\", className: classes[alpha ? \"alpha\" : \"beta\"] }, alpha ? \"Alpha\" : \"Beta\");\n}\n\nconst RealLogViewer = lazy(\n () => import('./esm/RealLogViewer-BAx3qXC6.esm.js').then((m) => ({ default: m.RealLogViewer }))\n);\nfunction LogViewer(props) {\n const { Progress } = useApp().getComponents();\n return /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement(Progress, null) }, /* @__PURE__ */ React.createElement(RealLogViewer, { ...props }));\n}\n\nconst useItemStyles = makeStyles(\n (theme) => ({\n root: {\n paddingLeft: theme.spacing(3)\n }\n }),\n { name: \"BackstageLoginRequestListItem\" }\n);\nconst LoginRequestListItem = ({ request, busy, setBusy }) => {\n const classes = useItemStyles();\n const [error, setError] = useState();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const handleContinue = async () => {\n setBusy(true);\n try {\n await request.trigger();\n } catch (e) {\n setError(isError(e) ? e.message : \"An unspecified error occurred\");\n } finally {\n setBusy(false);\n }\n };\n const IconComponent = request.provider.icon;\n return /* @__PURE__ */ React.createElement(ListItem, { disabled: busy, classes: { root: classes.root } }, /* @__PURE__ */ React.createElement(ListItemAvatar, null, /* @__PURE__ */ React.createElement(IconComponent, { fontSize: \"large\" })), /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: request.provider.title,\n secondary: error && /* @__PURE__ */ React.createElement(Typography, { color: \"error\" }, error)\n }\n ), /* @__PURE__ */ React.createElement(Button$1, { color: \"primary\", variant: \"contained\", onClick: handleContinue }, t(\"oauthRequestDialog.login\")));\n};\n\nconst useStyles$w = makeStyles(\n (theme) => ({\n dialog: {\n paddingTop: theme.spacing(1)\n },\n title: {\n minWidth: 0\n },\n titleHeading: {\n fontSize: theme.typography.h6.fontSize\n },\n contentList: {\n padding: 0\n },\n actionButtons: {\n padding: theme.spacing(2, 0)\n }\n }),\n { name: \"OAuthRequestDialog\" }\n);\nfunction OAuthRequestDialog(_props) {\n var _a;\n const classes = useStyles$w();\n const [busy, setBusy] = useState(false);\n const oauthRequestApi = useApi(oauthRequestApiRef);\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const authRedirect = (_a = configApi.getOptionalBoolean(\"enableExperimentalRedirectFlow\")) != null ? _a : false;\n const requests = useObservable(\n useMemo(() => oauthRequestApi.authRequest$(), [oauthRequestApi]),\n []\n );\n const handleRejectAll = () => {\n requests.forEach((request) => request.reject());\n };\n return /* @__PURE__ */ React.createElement(\n Dialog,\n {\n open: Boolean(requests.length),\n fullWidth: true,\n maxWidth: \"xs\",\n classes: { paper: classes.dialog },\n \"aria-labelledby\": \"oauth-req-dialog-title\"\n },\n /* @__PURE__ */ React.createElement(\"main\", null, /* @__PURE__ */ React.createElement(\n DialogTitle,\n {\n classes: { root: classes.title },\n id: \"oauth-req-dialog-title\"\n },\n /* @__PURE__ */ React.createElement(\n Typography,\n {\n className: classes.titleHeading,\n variant: \"h1\",\n variantMapping: { h1: \"span\" }\n },\n t(\"oauthRequestDialog.title\")\n ),\n authRedirect ? /* @__PURE__ */ React.createElement(Typography, null, t(\"oauthRequestDialog.authRedirectTitle\")) : null\n ), /* @__PURE__ */ React.createElement(DialogContent, { dividers: true, classes: { root: classes.contentList } }, /* @__PURE__ */ React.createElement(List, null, requests.map((request) => /* @__PURE__ */ React.createElement(\n LoginRequestListItem,\n {\n key: request.provider.title,\n request,\n busy,\n setBusy\n }\n ))))),\n /* @__PURE__ */ React.createElement(DialogActions, { classes: { root: classes.actionButtons } }, /* @__PURE__ */ React.createElement(Button$1, { onClick: handleRejectAll }, t(\"oauthRequestDialog.rejectAll\")))\n );\n}\n\nconst useStyles$v = makeStyles(\n {\n container: {\n overflow: \"visible !important\"\n }\n },\n { name: \"BackstageOverflowTooltip\" }\n);\nfunction OverflowTooltip(props) {\n var _a;\n const [hover, setHover] = useState(false);\n const isMounted = useIsMounted();\n const classes = useStyles$v();\n const handleToggled = (truncated) => {\n if (isMounted()) {\n setHover(truncated);\n }\n };\n return /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n title: (_a = props.title) != null ? _a : props.text || \"\",\n placement: props.placement,\n disableHoverListener: !hover\n },\n /* @__PURE__ */ React.createElement(\n TextTruncate,\n {\n text: props.text,\n line: props.line,\n onToggled: handleToggled,\n containerClassName: classes.container\n }\n )\n );\n}\n\nfunction Progress(props) {\n const theme = useTheme();\n const [isVisible, setIsVisible] = useState(false);\n useEffect(() => {\n const handle = setTimeout(\n () => setIsVisible(true),\n theme.transitions.duration.short\n );\n return () => clearTimeout(handle);\n }, [theme.transitions.duration.short]);\n return isVisible ? /* @__PURE__ */ React.createElement(LinearProgress, { ...props, \"data-testid\": \"progress\" }) : /* @__PURE__ */ React.createElement(Box, { display: \"none\" });\n}\n\nconst useStyles$u = makeStyles(\n (theme) => ({\n root: {\n maxWidth: \"fit-content\",\n padding: theme.spacing(2, 2, 2, 2.5)\n },\n boxTitle: {\n margin: 0,\n color: theme.palette.textSubtle\n },\n arrow: {\n color: theme.palette.textSubtle\n }\n }),\n { name: \"BackstageBottomLink\" }\n);\nfunction BottomLink(props) {\n const { link, title, onClick } = props;\n const classes = useStyles$u();\n return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(Link, { to: link, onClick, underline: \"none\" }, /* @__PURE__ */ React.createElement(Box, { display: \"flex\", alignItems: \"center\", className: classes.root }, /* @__PURE__ */ React.createElement(Box, { className: classes.boxTitle, fontWeight: \"fontWeightBold\", m: 1 }, /* @__PURE__ */ React.createElement(Typography, null, /* @__PURE__ */ React.createElement(\"strong\", null, title))), /* @__PURE__ */ React.createElement(ArrowIcon, { className: classes.arrow }))));\n}\n\nconst SlackLink = (props) => {\n const { slackChannel } = props;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n if (!slackChannel) {\n return null;\n } else if (typeof slackChannel === \"string\") {\n return /* @__PURE__ */ React.createElement(Typography, null, t(\"errorBoundary.title\", { slackChannel }));\n } else if (!slackChannel.href) {\n return /* @__PURE__ */ React.createElement(Typography, null, t(\"errorBoundary.title\", {\n slackChannel: slackChannel.name\n }));\n }\n return /* @__PURE__ */ React.createElement(LinkButton, { to: slackChannel.href, variant: \"contained\" }, slackChannel.name);\n};\nconst ErrorBoundary = class ErrorBoundary2 extends Component$3 {\n constructor(props) {\n super(props);\n this.state = {\n error: void 0,\n errorInfo: void 0\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(`ErrorBoundary, error: ${error}, info: ${errorInfo}`);\n this.setState({ error, errorInfo });\n }\n render() {\n const { slackChannel, children } = this.props;\n const { error } = this.state;\n if (!error) {\n return children;\n }\n return /* @__PURE__ */ React.createElement(ErrorPanel, { title: \"Something Went Wrong\", error }, /* @__PURE__ */ React.createElement(SlackLink, { slackChannel }));\n }\n};\n\nconst useStyles$t = makeStyles(\n (theme) => ({\n noPadding: {\n padding: 0,\n \"&:last-child\": {\n paddingBottom: 0\n }\n },\n header: {\n padding: theme.spacing(2, 2, 2, 2.5)\n },\n headerTitle: {\n fontWeight: theme.typography.fontWeightBold\n },\n headerSubheader: {\n paddingTop: theme.spacing(1)\n },\n headerAvatar: {},\n headerAction: {},\n headerContent: {},\n subheader: {\n display: \"flex\"\n }\n }),\n { name: \"BackstageInfoCard\" }\n);\nconst CardActionsTopRight = withStyles(\n (theme) => ({\n root: {\n display: \"inline-block\",\n padding: theme.spacing(8, 8, 0, 0),\n float: \"right\"\n }\n }),\n { name: \"BackstageInfoCardCardActionsTopRight\" }\n)(CardActions);\nconst VARIANT_STYLES = {\n card: {\n flex: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n fullHeight: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\"\n },\n gridItem: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"calc(100% - 10px)\",\n // for pages without content header\n marginBottom: \"10px\",\n breakInside: \"avoid-page\",\n \"@media print\": {\n height: \"auto\"\n }\n }\n },\n cardContent: {\n fullHeight: {\n flex: 1\n },\n gridItem: {\n flex: 1\n }\n }\n};\nfunction InfoCard(props) {\n const {\n title,\n subheader,\n divider = true,\n deepLink,\n slackChannel,\n errorBoundaryProps,\n variant,\n children,\n headerStyle,\n headerProps,\n icon,\n action,\n actionsClassName,\n actions,\n cardClassName,\n actionsTopRight,\n className,\n noPadding,\n titleTypographyProps\n } = props;\n const classes = useStyles$t();\n let calculatedStyle = {};\n let calculatedCardStyle = {};\n if (variant) {\n const variants = variant.split(/[\\s]+/g);\n variants.forEach((name) => {\n calculatedStyle = {\n ...calculatedStyle,\n ...VARIANT_STYLES.card[name]\n };\n calculatedCardStyle = {\n ...calculatedCardStyle,\n ...VARIANT_STYLES.cardContent[name]\n };\n });\n }\n const cardSubTitle = () => {\n if (!subheader && !icon) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: classes.headerSubheader,\n \"data-testid\": \"info-card-subheader\"\n },\n subheader && /* @__PURE__ */ React.createElement(\"div\", { className: classes.subheader }, subheader),\n icon\n );\n };\n const errProps = errorBoundaryProps || (slackChannel ? { slackChannel } : {});\n return /* @__PURE__ */ React.createElement(Card, { style: calculatedStyle, className }, /* @__PURE__ */ React.createElement(ErrorBoundary, { ...errProps }, title && /* @__PURE__ */ React.createElement(\n CardHeader,\n {\n classes: {\n root: classes.header,\n title: classes.headerTitle,\n subheader: classes.headerSubheader,\n avatar: classes.headerAvatar,\n action: classes.headerAction,\n content: classes.headerContent\n },\n title,\n subheader: cardSubTitle(),\n action,\n style: { ...headerStyle },\n titleTypographyProps,\n ...headerProps\n }\n ), actionsTopRight && /* @__PURE__ */ React.createElement(CardActionsTopRight, null, actionsTopRight), divider && /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(\n CardContent,\n {\n className: classNames(cardClassName, {\n [classes.noPadding]: noPadding\n }),\n style: calculatedCardStyle\n },\n children\n ), actions && /* @__PURE__ */ React.createElement(CardActions, { className: actionsClassName }, actions), deepLink && /* @__PURE__ */ React.createElement(BottomLink, { ...deepLink })));\n}\n\nconst useStyles$s = makeStyles(\n (theme) => ({\n root: {\n position: \"relative\",\n lineHeight: 0\n },\n overlay: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -60%)\",\n fontSize: theme.typography.pxToRem(45),\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.textContrast\n },\n description: {\n fontSize: \"100%\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n position: \"absolute\",\n wordBreak: \"break-all\",\n display: \"inline-block\"\n },\n circle: {\n width: \"80%\",\n transform: \"translate(10%, 0)\"\n },\n colorUnknown: {}\n }),\n { name: \"BackstageGauge\" }\n);\nconst defaultGaugeProps = {\n fractional: true,\n inverse: false,\n unit: \"%\",\n max: 100\n};\nconst getProgressColor = ({\n palette,\n value,\n inverse,\n max\n}) => {\n if (isNaN(value)) {\n return \"#ddd\";\n }\n const actualMax = max ? max : defaultGaugeProps.max;\n const actualValue = inverse ? actualMax - value : value;\n if (actualValue < actualMax / 3) {\n return palette.status.error;\n } else if (actualValue < actualMax * (2 / 3)) {\n return palette.status.warning;\n }\n return palette.status.ok;\n};\nfunction Gauge(props) {\n const [hoverRef, setHoverRef] = useState(null);\n const { getColor = getProgressColor } = props;\n const classes = useStyles$s(props);\n const { palette } = useTheme();\n const { value, fractional, inverse, unit, max, description } = {\n ...defaultGaugeProps,\n ...props\n };\n const asPercentage = fractional ? Math.round(value * max) : value;\n const asActual = max !== 100 ? Math.round(value) : asPercentage;\n const [isHovering, setIsHovering] = useState(false);\n useEffect(() => {\n const node = hoverRef;\n const handleMouseOver = () => setIsHovering(true);\n const handleMouseOut = () => setIsHovering(false);\n if (node && description) {\n node.addEventListener(\"mouseenter\", handleMouseOver);\n node.addEventListener(\"mouseleave\", handleMouseOut);\n return () => {\n node.removeEventListener(\"mouseenter\", handleMouseOver);\n node.removeEventListener(\"mouseleave\", handleMouseOut);\n };\n }\n return () => {\n setIsHovering(false);\n };\n }, [description, hoverRef]);\n return /* @__PURE__ */ React.createElement(Box, { ...{ ref: setHoverRef }, className: classes.root }, /* @__PURE__ */ React.createElement(\n Circle,\n {\n strokeLinecap: \"butt\",\n percent: asPercentage,\n strokeWidth: 12,\n trailWidth: 12,\n strokeColor: getColor({ palette, value: asActual, inverse, max }),\n className: classes.circle\n }\n ), description && isHovering ? /* @__PURE__ */ React.createElement(Box, { className: classes.description }, description) : /* @__PURE__ */ React.createElement(Box, { className: classes.overlay }, isNaN(value) ? \"N/A\" : `${asActual}${unit}`));\n}\n\nconst useStyles$r = makeStyles(\n {\n root: {\n height: \"100%\",\n width: 250\n }\n },\n { name: \"BackstageGaugeCard\" }\n);\nfunction GaugeCard(props) {\n const classes = useStyles$r(props);\n const {\n title,\n subheader,\n progress,\n inverse,\n deepLink,\n description,\n icon,\n variant,\n getColor\n } = props;\n const gaugeProps = {\n inverse,\n description,\n getColor,\n value: progress\n };\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root }, /* @__PURE__ */ React.createElement(\n InfoCard,\n {\n title,\n subheader,\n deepLink,\n variant,\n icon\n },\n /* @__PURE__ */ React.createElement(Gauge, { ...gaugeProps })\n ));\n}\n\nfunction LinearGauge(props) {\n const { value, getColor = getProgressColor, width = \"thick\" } = props;\n const { palette } = useTheme();\n if (isNaN(value)) {\n return null;\n }\n let percent = Math.round(value * 100 * 100) / 100;\n if (percent > 100) {\n percent = 100;\n }\n const lineWidth = width === \"thick\" ? 4 : 1;\n const strokeColor = getColor({\n palette,\n value: percent,\n inverse: false,\n max: 100\n });\n return /* @__PURE__ */ React.createElement(Tooltip, { title: `${percent}%` }, /* @__PURE__ */ React.createElement(Typography, { component: \"span\" }, /* @__PURE__ */ React.createElement(\n Line,\n {\n percent,\n strokeWidth: lineWidth,\n trailWidth: lineWidth,\n strokeColor\n }\n )));\n}\n\nconst useStyles$q = makeStyles(\n (theme) => createStyles({\n icon: {\n position: \"absolute\",\n right: theme.spacing(0.5),\n pointerEvents: \"none\",\n color: \"#616161\"\n }\n }),\n { name: \"BackstageClosedDropdown\" }\n);\nconst ClosedDropdown = () => {\n const classes = useStyles$q();\n return /* @__PURE__ */ React.createElement(\n SvgIcon,\n {\n className: classes.icon,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React.createElement(\n \"path\",\n {\n d: \"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z\",\n fill: \"currentColor\"\n }\n )\n );\n};\n\nconst useStyles$p = makeStyles(\n (theme) => createStyles({\n icon: {\n position: \"absolute\",\n right: theme.spacing(0.5),\n pointerEvents: \"none\",\n color: \"#616161\"\n }\n }),\n { name: \"BackstageOpenedDropdown\" }\n);\nconst OpenedDropdown = () => {\n const classes = useStyles$p();\n return /* @__PURE__ */ React.createElement(\n SvgIcon,\n {\n className: classes.icon,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React.createElement(\n \"path\",\n {\n d: \"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z\",\n fill: \"currentColor\"\n }\n )\n );\n};\n\nconst BootstrapInput = withStyles(\n (theme) => createStyles({\n root: {\n \"label + &\": {\n marginTop: theme.spacing(3)\n },\n \"&.Mui-focused > div[role=button]\": {\n borderColor: theme.palette.primary.main\n }\n },\n input: {\n borderRadius: theme.shape.borderRadius,\n position: \"relative\",\n backgroundColor: theme.palette.background.paper,\n border: \"1px solid #ced4da\",\n fontSize: theme.typography.body1.fontSize,\n padding: theme.spacing(1.25, 3.25, 1.25, 1.5),\n transition: theme.transitions.create([\"border-color\", \"box-shadow\"]),\n \"&:focus\": {\n background: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius\n }\n }\n }),\n { name: \"BackstageSelectInputBase\" }\n)(InputBase);\nconst useStyles$o = makeStyles(\n (theme) => createStyles({\n formControl: {\n margin: theme.spacing(1, 0),\n maxWidth: 300\n },\n label: {\n transform: \"initial\",\n fontWeight: \"bold\",\n fontSize: theme.typography.body2.fontSize,\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n \"&.Mui-focused\": {\n color: theme.palette.text.primary\n }\n },\n formLabel: {\n transform: \"initial\",\n fontWeight: \"bold\",\n fontSize: theme.typography.body2.fontSize,\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n \"&.Mui-focused\": {\n color: theme.palette.text.primary\n }\n },\n chips: {\n display: \"flex\",\n flexWrap: \"wrap\"\n },\n chip: {\n margin: 2\n },\n checkbox: {},\n root: {\n display: \"flex\",\n flexDirection: \"column\"\n }\n }),\n { name: \"BackstageSelect\" }\n);\nfunction SelectComponent(props) {\n const {\n multiple,\n items,\n label,\n placeholder,\n selected,\n onChange,\n triggerReset,\n native = false,\n disabled = false,\n margin\n } = props;\n const classes = useStyles$o();\n const [value, setValue] = useState(\n selected || (multiple ? [] : \"\")\n );\n const [isOpen, setOpen] = useState(false);\n useEffect(() => {\n setValue(multiple ? [] : \"\");\n }, [triggerReset, multiple]);\n useEffect(() => {\n setValue(selected || (multiple ? [] : \"\"));\n }, [selected, multiple]);\n const handleChange = (event) => {\n setValue(event.target.value);\n onChange(event.target.value);\n };\n const handleOpen = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n setOpen((previous) => {\n if (multiple && !(event.target instanceof HTMLElement)) {\n return true;\n }\n return !previous;\n });\n };\n const handleClose = () => {\n setOpen(false);\n };\n const handleDelete = (selectedValue) => () => {\n const newValue = value.filter((chip) => chip !== selectedValue);\n setValue(newValue);\n onChange(newValue);\n };\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root }, /* @__PURE__ */ React.createElement(FormControl, { className: classes.formControl }, /* @__PURE__ */ React.createElement(InputLabel, { className: classes.formLabel }, label), /* @__PURE__ */ React.createElement(\n Select,\n {\n \"aria-label\": label,\n value,\n native,\n disabled,\n \"data-testid\": \"select\",\n displayEmpty: true,\n multiple,\n margin,\n onChange: handleChange,\n open: isOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n input: /* @__PURE__ */ React.createElement(BootstrapInput, null),\n label,\n renderValue: (s) => {\n var _a;\n return multiple && value.length !== 0 ? /* @__PURE__ */ React.createElement(Box, { className: classes.chips }, s.map((selectedValue) => {\n const item = items.find((el) => el.value === selectedValue);\n return item ? /* @__PURE__ */ React.createElement(\n Chip,\n {\n key: item == null ? void 0 : item.value,\n label: item == null ? void 0 : item.label,\n clickable: true,\n onDelete: handleDelete(selectedValue),\n className: classes.chip\n }\n ) : false;\n })) : /* @__PURE__ */ React.createElement(Typography, null, value.length === 0 ? placeholder || \"\" : (_a = items.find((el) => el.value === s)) == null ? void 0 : _a.label);\n },\n IconComponent: () => !isOpen ? /* @__PURE__ */ React.createElement(ClosedDropdown, null) : /* @__PURE__ */ React.createElement(OpenedDropdown, null),\n MenuProps: {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"left\"\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"left\"\n },\n getContentAnchorEl: null\n }\n },\n placeholder && !multiple && /* @__PURE__ */ React.createElement(MenuItem, { value: [] }, placeholder),\n native ? items && items.map((item) => /* @__PURE__ */ React.createElement(\"option\", { value: item.value, key: item.value }, item.label)) : items && items.map((item) => /* @__PURE__ */ React.createElement(MenuItem, { key: item.value, value: item.value }, multiple && /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n color: \"primary\",\n checked: value.includes(item.value) || false,\n className: classes.checkbox\n }\n ), item.label))\n )));\n}\n\nconst noop = () => {\n};\nconst VerticalStepperContext = React.createContext({\n stepperLength: 0,\n stepIndex: 0,\n setStepIndex: noop,\n stepHistory: [],\n setStepHistory: noop,\n onStepChange: noop\n});\nfunction SimpleStepper(props) {\n const { children, elevated, onStepChange, activeStep = 0 } = props;\n const [stepIndex, setStepIndex] = useState(activeStep);\n const [stepHistory, setStepHistory] = useState([0]);\n useEffect(() => {\n setStepIndex(activeStep);\n }, [activeStep]);\n const steps = [];\n let endStep;\n Children.forEach(children, (child) => {\n if (isValidElement(child)) {\n if (child.props.end) {\n endStep = child;\n } else {\n steps.push(child);\n }\n }\n });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n VerticalStepperContext.Provider,\n {\n value: {\n stepIndex,\n setStepIndex,\n stepHistory,\n setStepHistory,\n onStepChange,\n stepperLength: Children.count(children)\n }\n },\n /* @__PURE__ */ React.createElement(\n MuiStepper,\n {\n activeStep: stepIndex,\n orientation: \"vertical\",\n elevation: elevated ? 2 : 0\n },\n steps\n )\n ), stepIndex >= Children.count(children) - 1 && endStep);\n}\n\nconst useStyles$n = makeStyles(\n (theme) => ({\n root: {\n marginTop: theme.spacing(3),\n \"& button\": {\n marginRight: theme.spacing(1)\n }\n }\n }),\n { name: \"BackstageSimpleStepperFooter\" }\n);\nconst RestartBtn = ({ text, handleClick }) => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(Button$1, { onClick: handleClick }, text || t(\"simpleStepper.reset\"));\n};\nconst NextBtn = ({\n text,\n handleClick,\n disabled,\n last,\n stepIndex\n}) => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n variant: \"contained\",\n color: \"primary\",\n disabled,\n \"data-testid\": `nextButton-${stepIndex}`,\n onClick: handleClick\n },\n text || (last ? t(\"simpleStepper.finish\") : t(\"simpleStepper.next\"))\n );\n};\nconst SkipBtn = ({ text, handleClick, disabled, stepIndex }) => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n variant: \"outlined\",\n color: \"primary\",\n disabled,\n \"data-testid\": `skipButton-${stepIndex}`,\n onClick: handleClick\n },\n text || t(\"simpleStepper.skip\")\n );\n};\nconst BackBtn = ({ text, handleClick, disabled, stepIndex }) => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n onClick: handleClick,\n \"data-testid\": `backButton-${stepIndex}`,\n disabled\n },\n text || t(\"simpleStepper.back\")\n );\n};\nconst SimpleStepperFooter = ({\n actions = {},\n children\n}) => {\n const classes = useStyles$n();\n const {\n stepperLength,\n stepIndex,\n setStepIndex,\n stepHistory,\n setStepHistory,\n onStepChange\n } = useContext(VerticalStepperContext);\n const onChange = (newIndex, callback) => {\n if (callback) {\n callback();\n }\n if (onStepChange) {\n onStepChange(stepIndex, newIndex);\n }\n setStepIndex(newIndex);\n };\n const handleNext = () => {\n const newIndex = actions.nextStep ? actions.nextStep(stepIndex, stepperLength - 1) : stepIndex + 1;\n onChange(newIndex, actions.onNext);\n setStepHistory([...stepHistory, newIndex]);\n };\n const handleBack = () => {\n stepHistory.pop();\n onChange(stepHistory[stepHistory.length - 1], actions.onBack);\n setStepHistory([...stepHistory]);\n };\n const handleRestart = () => {\n onChange(0, actions.onRestart);\n setStepHistory([0]);\n };\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root }, [void 0, true].includes(actions.showBack) && stepIndex !== 0 && /* @__PURE__ */ React.createElement(\n BackBtn,\n {\n text: actions.backText,\n handleClick: handleBack,\n disabled: stepIndex === 0,\n stepIndex\n }\n ), actions.showSkip && /* @__PURE__ */ React.createElement(\n SkipBtn,\n {\n text: actions.skipText,\n handleClick: handleNext,\n disabled: !!stepperLength && stepIndex >= stepperLength || !!actions.canSkip && !actions.canSkip(),\n stepIndex\n }\n ), [void 0, true].includes(actions.showNext) && /* @__PURE__ */ React.createElement(\n NextBtn,\n {\n text: actions.nextText,\n handleClick: handleNext,\n disabled: !!stepperLength && stepIndex >= stepperLength || !!actions.canNext && !actions.canNext(),\n stepIndex\n }\n ), actions.showRestart && stepIndex !== 0 && /* @__PURE__ */ React.createElement(\n RestartBtn,\n {\n text: actions.restartText,\n handleClick: handleRestart,\n stepIndex\n }\n ), children);\n};\n\nconst useStyles$m = makeStyles(\n (theme) => ({\n end: {\n padding: theme.spacing(3)\n }\n }),\n { name: \"SimpleStepperStep\" }\n);\nfunction SimpleStepperStep(props) {\n const { title, children, end, actions, ...muiProps } = props;\n const classes = useStyles$m();\n return end ? /* @__PURE__ */ React.createElement(Box, { className: classes.end }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\" }, title), children, /* @__PURE__ */ React.createElement(SimpleStepperFooter, { actions: { ...actions || {}, showNext: false } })) : /* @__PURE__ */ React.createElement(MuiStep, { ...muiProps }, /* @__PURE__ */ React.createElement(StepLabel, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\" }, title)), /* @__PURE__ */ React.createElement(StepContent, null, children, /* @__PURE__ */ React.createElement(SimpleStepperFooter, { actions })));\n}\n\nconst useStyles$l = makeStyles(\n (theme) => ({\n status: {\n fontWeight: theme.typography.fontWeightMedium,\n \"&::before\": {\n width: \"0.7em\",\n height: \"0.7em\",\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n borderRadius: \"50%\",\n content: '\"\"'\n }\n },\n ok: {\n \"&::before\": {\n backgroundColor: theme.palette.status.ok\n }\n },\n warning: {\n \"&::before\": {\n backgroundColor: theme.palette.status.warning\n }\n },\n error: {\n \"&::before\": {\n backgroundColor: theme.palette.status.error\n }\n },\n pending: {\n \"&::before\": {\n backgroundColor: theme.palette.status.pending\n }\n },\n running: {\n \"&::before\": {\n backgroundColor: theme.palette.status.running\n }\n },\n aborted: {\n \"&::before\": {\n backgroundColor: theme.palette.status.aborted\n }\n }\n }),\n { name: \"BackstageStatus\" }\n);\nfunction StatusOK(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.ok),\n \"aria-label\": \"Status ok\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\nfunction StatusWarning(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.warning),\n \"aria-label\": \"Status warning\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\nfunction StatusError(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.error),\n \"aria-label\": \"Status error\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\nfunction StatusPending(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.pending),\n \"aria-label\": \"Status pending\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\nfunction StatusRunning(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.running),\n \"aria-label\": \"Status running\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\nfunction StatusAborted(props) {\n const classes = useStyles$l(props);\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n className: classNames(classes.status, classes.aborted),\n \"aria-label\": \"Status aborted\",\n \"aria-hidden\": \"true\",\n ...props\n }\n );\n}\n\nconst tableTitleCellStyles = (theme) => createStyles({\n root: {\n fontWeight: theme.typography.fontWeightBold,\n whiteSpace: \"nowrap\",\n paddingRight: theme.spacing(4),\n border: \"0\",\n verticalAlign: \"top\"\n }\n});\nconst tableContentCellStyles = {\n root: {\n border: \"0\",\n verticalAlign: \"top\"\n }\n};\nconst listStyles = (theme) => createStyles({\n root: {\n margin: theme.spacing(0, 0, -1, 0)\n }\n});\nconst listItemStyles = (theme) => createStyles({\n root: {\n padding: theme.spacing(0, 0, 1, 0)\n },\n random: {}\n});\nconst TitleCell = withStyles(tableTitleCellStyles, {\n name: \"BackstageMetadataTableTitleCell\"\n})(TableCell);\nconst ContentCell = withStyles(tableContentCellStyles, {\n name: \"BackstageMetadataTableCell\"\n})(TableCell);\nconst MetadataTable = ({\n dense,\n children\n}) => /* @__PURE__ */ React.createElement(Table$1, { size: dense ? \"small\" : \"medium\" }, /* @__PURE__ */ React.createElement(TableBody, null, children));\nconst MetadataTableItem = ({\n title,\n children,\n ...rest\n}) => /* @__PURE__ */ React.createElement(TableRow, null, title && /* @__PURE__ */ React.createElement(TitleCell, null, title), /* @__PURE__ */ React.createElement(ContentCell, { colSpan: title ? 1 : 2, ...rest }, children));\nconst MetadataList = withStyles(listStyles, {\n name: \"BackstageMetadataTableList\"\n})(({ classes, children }) => /* @__PURE__ */ React.createElement(List, { disablePadding: true, className: classes.root }, children));\nconst MetadataListItem = withStyles(listItemStyles, {\n name: \"BackstageMetadataTableListItem\"\n})(({ classes, children }) => /* @__PURE__ */ React.createElement(ListItem, { className: classes.root }, children));\n\nconst listStyle = createStyles({\n root: {\n margin: \"0 0\",\n listStyleType: \"none\"\n }\n});\nconst nestedListStyle = (theme) => createStyles({\n root: {\n ...listStyle.root,\n paddingLeft: theme.spacing(1)\n }\n});\nconst StyledList = withStyles(listStyle, {\n name: \"BackstageStructuredMetadataTableList\"\n})(({ classes, children }) => /* @__PURE__ */ React.createElement(MetadataList, { classes }, children));\nconst StyledNestedList = withStyles(nestedListStyle, {\n name: \"BackstageStructuredMetadataTableNestedList\"\n})(({ classes, children }) => /* @__PURE__ */ React.createElement(MetadataList, { classes }, children));\nfunction renderList(list, options, nested) {\n const values = list.map((item, index) => /* @__PURE__ */ React.createElement(MetadataListItem, { key: index }, toValue(item, options, nested)));\n return nested ? /* @__PURE__ */ React.createElement(StyledNestedList, null, values) : /* @__PURE__ */ React.createElement(StyledList, null, values);\n}\nfunction renderMap(map, options, nested) {\n const values = Object.keys(map).map((key) => {\n const value = toValue(map[key], options, true);\n return /* @__PURE__ */ React.createElement(MetadataListItem, { key }, /* @__PURE__ */ React.createElement(Typography, { variant: \"body2\", component: \"span\" }, `${options.titleFormat(key)}: `), value);\n });\n return nested ? /* @__PURE__ */ React.createElement(StyledNestedList, null, values) : /* @__PURE__ */ React.createElement(StyledList, null, values);\n}\nfunction toValue(value, options, nested) {\n if (React.isValidElement(value)) {\n return /* @__PURE__ */ React.createElement(Fragment, null, value);\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n return renderMap(value, options, nested);\n }\n if (Array.isArray(value)) {\n return renderList(value, options, nested);\n }\n if (typeof value === \"boolean\") {\n return /* @__PURE__ */ React.createElement(Fragment, null, value ? \"\\u2705\" : \"\\u274C\");\n }\n return /* @__PURE__ */ React.createElement(Typography, { variant: \"body2\", component: \"span\" }, value);\n}\nconst ItemValue = ({ value, options }) => /* @__PURE__ */ React.createElement(Fragment, null, toValue(value, options, false));\nconst TableItem = ({\n title,\n value,\n options\n}) => {\n return /* @__PURE__ */ React.createElement(MetadataTableItem, { title: options.titleFormat(title) }, /* @__PURE__ */ React.createElement(ItemValue, { value, options }));\n};\nfunction mapToItems(info, options) {\n return Object.keys(info).map((key) => /* @__PURE__ */ React.createElement(TableItem, { key, title: key, value: info[key], options }));\n}\nfunction StructuredMetadataTable(props) {\n const { metadata, dense = true, options = {} } = props;\n const metadataItems = mapToItems(metadata, {\n titleFormat: startCase,\n ...options\n });\n return /* @__PURE__ */ React.createElement(MetadataTable, { dense }, metadataItems);\n}\n\nfunction stringify(queryParams) {\n return qs.stringify(queryParams, {\n strictNullHandling: true\n });\n}\nfunction parse(queryString) {\n return qs.parse(queryString, {\n ignoreQueryPrefix: true,\n strictNullHandling: true\n });\n}\nfunction extractState(queryString, stateName) {\n const queryParams = parse(queryString);\n return queryParams[stateName];\n}\nfunction joinQueryString(queryString, stateName, state) {\n const queryParams = {\n ...parse(queryString),\n [stateName]: state\n };\n return stringify(queryParams);\n}\nfunction useQueryParamState(stateName, debounceTime = 250) {\n const [searchParams, setSearchParams] = useSearchParams();\n const searchParamsString = searchParams.toString();\n const [queryParamState, setQueryParamState] = useState(\n extractState(searchParamsString, stateName)\n );\n useEffect(() => {\n const newState = extractState(searchParamsString, stateName);\n setQueryParamState(\n (oldState) => isEqual(newState, oldState) ? oldState : newState\n );\n }, [searchParamsString, setQueryParamState, stateName]);\n useDebouncedEffect(\n () => {\n const queryString = joinQueryString(\n searchParamsString,\n stateName,\n queryParamState\n );\n if (searchParamsString !== queryString) {\n setSearchParams(queryString, { replace: true });\n }\n },\n [setSearchParams, queryParamState, searchParamsString, stateName],\n debounceTime\n );\n return [queryParamState, setQueryParamState];\n}\n\nconst useDefaultSupportConfig = () => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return {\n url: \"https://github.com/backstage/backstage/issues\",\n items: [\n {\n title: t(\"supportConfig.default.title\"),\n icon: \"warning\",\n links: [\n {\n // TODO: Update to dedicated support page on backstage.io/docs\n title: t(\"supportConfig.default.linkTitle\"),\n url: \"https://github.com/backstage/backstage/blob/master/app-config.yaml\"\n }\n ]\n }\n ]\n };\n};\nfunction useSupportConfig() {\n const apiHolder = useApiHolder();\n const config = apiHolder.get(configApiRef);\n const supportConfig = config == null ? void 0 : config.getOptionalConfig(\"app.support\");\n const defaultSupportConfig = useDefaultSupportConfig();\n if (!supportConfig) {\n return defaultSupportConfig;\n }\n return {\n url: supportConfig.getString(\"url\"),\n items: supportConfig.getConfigArray(\"items\").flatMap((itemConf) => {\n var _a;\n return {\n title: itemConf.getString(\"title\"),\n icon: itemConf.getOptionalString(\"icon\"),\n links: ((_a = itemConf.getOptionalConfigArray(\"links\")) != null ? _a : []).flatMap(\n (linkConf) => ({\n url: linkConf.getString(\"url\"),\n title: linkConf.getString(\"title\")\n })\n )\n };\n })\n };\n}\n\nfunction AppIcon(props) {\n var _a;\n const { id: key, Fallback = MuiBrokenImageIcon, ...rest } = props;\n const app = useApp();\n const Icon = (_a = app.getSystemIcon(key)) != null ? _a : Fallback;\n return /* @__PURE__ */ React.createElement(Icon, { ...rest });\n}\nfunction BrokenImageIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"brokenImage\", ...props });\n}\nfunction CatalogIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"catalog\", ...props });\n}\nfunction ChatIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"chat\", ...props });\n}\nfunction DashboardIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"dashboard\", ...props });\n}\nfunction DocsIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"docs\", ...props });\n}\nfunction EmailIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"email\", ...props });\n}\nfunction GitHubIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"github\", ...props });\n}\nfunction GroupIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"group\", ...props });\n}\nfunction HelpIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"help\", ...props });\n}\nfunction UserIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"user\", ...props });\n}\nfunction WarningIcon(props) {\n return /* @__PURE__ */ React.createElement(AppIcon, { id: \"warning\", ...props });\n}\n\nconst useStyles$k = makeStyles(\n {\n popoverList: {\n minWidth: 260,\n maxWidth: 400\n },\n menuItem: {\n whiteSpace: \"normal\"\n }\n },\n { name: \"BackstageSupportButton\" }\n);\nconst SupportIcon = ({ icon }) => {\n var _a;\n const app = useApp();\n const Icon = icon ? (_a = app.getSystemIcon(icon)) != null ? _a : HelpIcon : HelpIcon;\n return /* @__PURE__ */ React.createElement(Icon, null);\n};\nconst SupportLink = ({ link }) => {\n var _a;\n return /* @__PURE__ */ React.createElement(Link, { to: link.url }, (_a = link.title) != null ? _a : link.url);\n};\nconst SupportListItem = ({ item }) => {\n var _a;\n return /* @__PURE__ */ React.createElement(MenuItem, null, /* @__PURE__ */ React.createElement(ListItemIcon, null, /* @__PURE__ */ React.createElement(SupportIcon, { icon: item.icon })), /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: item.title,\n secondary: (_a = item.links) == null ? void 0 : _a.reduce(\n (prev, link, idx) => [\n ...prev,\n idx > 0 && /* @__PURE__ */ React.createElement(\"br\", { key: idx }),\n /* @__PURE__ */ React.createElement(SupportLink, { link, key: link.url })\n ],\n []\n )\n }\n ));\n};\nfunction SupportButton(props) {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const { title, items, children } = props;\n const { items: configItems } = useSupportConfig();\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const classes = useStyles$k();\n const isSmallScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"sm\")\n );\n const onClickHandler = (event) => {\n setAnchorEl(event.currentTarget);\n setPopoverOpen(true);\n };\n const popoverCloseHandler = () => {\n setPopoverOpen(false);\n };\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { display: \"flex\", ml: 1 }, isSmallScreen ? /* @__PURE__ */ React.createElement(\n IconButton,\n {\n color: \"primary\",\n size: \"small\",\n onClick: onClickHandler,\n \"data-testid\": \"support-button\",\n \"aria-label\": \"Support\"\n },\n /* @__PURE__ */ React.createElement(HelpIcon, null)\n ) : /* @__PURE__ */ React.createElement(\n Button$1,\n {\n \"data-testid\": \"support-button\",\n \"aria-label\": \"Support\",\n color: \"primary\",\n onClick: onClickHandler,\n startIcon: /* @__PURE__ */ React.createElement(HelpIcon, null)\n },\n t(\"supportButton.title\")\n )), /* @__PURE__ */ React.createElement(\n Popover,\n {\n \"data-testid\": \"support-button-popover\",\n open: popoverOpen,\n anchorEl,\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\"\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"right\"\n },\n onClose: popoverCloseHandler\n },\n /* @__PURE__ */ React.createElement(\n MenuList,\n {\n className: classes.popoverList,\n autoFocusItem: Boolean(anchorEl)\n },\n title && /* @__PURE__ */ React.createElement(MenuItem, { alignItems: \"flex-start\", className: classes.menuItem }, /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle1\" }, title)),\n React.Children.map(children, (child, i) => /* @__PURE__ */ React.createElement(\n MenuItem,\n {\n alignItems: \"flex-start\",\n key: `child-${i}`,\n className: classes.menuItem\n },\n child\n )),\n (items != null ? items : configItems).map((item, i) => /* @__PURE__ */ React.createElement(SupportListItem, { item, key: `item-${i}` }))\n ),\n /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(\n Button$1,\n {\n color: \"primary\",\n onClick: popoverCloseHandler,\n \"aria-label\": \"Close\"\n },\n t(\"supportButton.close\")\n ))\n ));\n}\n\nconst useStyles$j = makeStyles(\n (theme) => ({\n root: {\n gridArea: \"pageContent\",\n minWidth: 0,\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.up(\"sm\")]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }\n },\n stretch: {\n display: \"flex\",\n flexDirection: \"column\",\n flexGrow: 1\n },\n noPadding: {\n padding: 0\n }\n }),\n { name: \"BackstageContent\" }\n);\nfunction Content(props) {\n const { className, stretch, noPadding, children, ...restProps } = props;\n const classes = useStyles$j();\n return /* @__PURE__ */ React.createElement(\n \"article\",\n {\n ...restProps,\n className: classNames(classes.root, className, {\n [classes.stretch]: stretch,\n [classes.noPadding]: noPadding\n })\n },\n children\n );\n}\n\nconst useStyles$i = makeStyles(\n (theme) => ({\n tabsWrapper: {\n gridArea: \"pageSubheader\",\n backgroundColor: theme.palette.background.paper,\n paddingLeft: theme.spacing(3),\n minWidth: 0\n },\n defaultTab: {\n ...theme.typography.caption,\n padding: theme.spacing(3, 3),\n textTransform: \"uppercase\",\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.secondary\n },\n selected: {\n color: theme.palette.text.primary\n },\n tabRoot: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary\n }\n }\n }),\n { name: \"BackstageHeaderTabs\" }\n);\nfunction HeaderTabs(props) {\n const { tabs, onChange, selectedIndex } = props;\n const [selectedTab, setSelectedTab] = useState(selectedIndex != null ? selectedIndex : 0);\n const styles = useStyles$i();\n const handleChange = useCallback(\n (_, index) => {\n if (selectedIndex === void 0) {\n setSelectedTab(index);\n }\n if (onChange)\n onChange(index);\n },\n [selectedIndex, onChange]\n );\n useEffect(() => {\n if (selectedIndex !== void 0) {\n setSelectedTab(selectedIndex);\n }\n }, [selectedIndex]);\n function removeLeadingSlash(path) {\n return path.replace(/^\\//, \"\");\n }\n return /* @__PURE__ */ React.createElement(Box, { className: styles.tabsWrapper }, /* @__PURE__ */ React.createElement(\n Tabs,\n {\n indicatorColor: \"primary\",\n textColor: \"inherit\",\n variant: \"scrollable\",\n scrollButtons: \"auto\",\n \"aria-label\": \"tabs\",\n onChange: handleChange,\n value: selectedTab\n },\n tabs.map((tab, index) => /* @__PURE__ */ React.createElement(\n TabUI,\n {\n \"data-testid\": `header-tab-${index}`,\n label: tab.label,\n key: tab.id,\n component: Link$2,\n to: removeLeadingSlash(tab.id),\n value: index,\n className: styles.defaultTab,\n classes: { selected: styles.selected, root: styles.tabRoot },\n ...tab.tabProps\n }\n ))\n ));\n}\n\nfunction useSelectedSubRoute(subRoutes) {\n var _a, _b, _c, _d, _e;\n const params = useParams();\n const routes = subRoutes.map(({ path, children }) => ({\n caseSensitive: false,\n path: `${path}/*`,\n element: children\n }));\n const sortedRoutes = routes.sort(\n (a, b) => (\n // remove \"/*\" symbols from path end before comparing\n b.path.replace(/\\/\\*$/, \"\").localeCompare(a.path.replace(/\\/\\*$/, \"\"))\n )\n );\n const element = (_b = useRoutes(sortedRoutes)) != null ? _b : (_a = subRoutes[0]) == null ? void 0 : _a.children;\n let currentRoute = (_c = params[\"*\"]) != null ? _c : \"\";\n if (!currentRoute.startsWith(\"/\")) {\n currentRoute = `/${currentRoute}`;\n }\n const [matchedRoute] = (_d = matchRoutes(sortedRoutes, currentRoute)) != null ? _d : [];\n const foundIndex = matchedRoute ? subRoutes.findIndex((t) => `${t.path}/*` === matchedRoute.route.path) : 0;\n return {\n index: foundIndex === -1 ? 0 : foundIndex,\n element,\n route: (_e = subRoutes[foundIndex]) != null ? _e : subRoutes[0]\n };\n}\nfunction RoutedTabs(props) {\n const { routes } = props;\n const navigate = useNavigate();\n const { index, route, element } = useSelectedSubRoute(routes);\n const headerTabs = useMemo(\n () => routes.map((t) => ({\n id: t.path,\n label: t.title,\n tabProps: t.tabProps\n })),\n [routes]\n );\n const onTabChange = (tabIndex) => {\n let { path } = routes[tabIndex];\n path = path.replace(/\\/\\*$/, \"\");\n path = path.replace(/^\\//, \"\");\n navigate(path);\n };\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n HeaderTabs,\n {\n tabs: headerTabs,\n selectedIndex: index,\n onChange: onTabChange\n }\n ), /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(Helmet, { title: route == null ? void 0 : route.title }), element));\n}\n\nconst Route = () => null;\nattachComponentData(Route, \"core.gatherMountPoints\", true);\nfunction createSubRoutesFromChildren(childrenProps) {\n const routeType = (/* @__PURE__ */ React.createElement(Route, { path: \"\", title: \"\" }, /* @__PURE__ */ React.createElement(\"div\", null))).type;\n return Children.toArray(childrenProps).flatMap((child) => {\n if (!isValidElement(child)) {\n return [];\n }\n if (child.type === Fragment) {\n return createSubRoutesFromChildren(child.props.children);\n }\n if (child.type !== routeType) {\n throw new Error(\"Child of TabbedLayout must be an TabbedLayout.Route\");\n }\n const { path, title, children, tabProps } = child.props;\n return [{ path, title, children, tabProps }];\n });\n}\nfunction TabbedLayout(props) {\n const routes = createSubRoutesFromChildren(props.children);\n return /* @__PURE__ */ React.createElement(RoutedTabs, { routes });\n}\nTabbedLayout.Route = Route;\n\nconst useSubvalueCellStyles = makeStyles(\n (theme) => ({\n value: {\n marginBottom: theme.spacing(0.75)\n },\n subvalue: {\n color: theme.palette.textSubtle,\n fontWeight: \"normal\"\n }\n }),\n { name: \"BackstageSubvalueCell\" }\n);\nfunction SubvalueCell(props) {\n const { value, subvalue } = props;\n const classes = useSubvalueCellStyles();\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { className: classes.value }, value), /* @__PURE__ */ React.createElement(Box, { className: classes.subvalue }, subvalue));\n}\n\nconst useFilterStyles$1 = makeStyles(\n (theme) => ({\n root: {\n height: \"100%\",\n width: \"315px\",\n display: \"flex\",\n flexDirection: \"column\",\n marginRight: theme.spacing(3)\n },\n value: {\n fontWeight: \"bold\",\n fontSize: 18\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n height: theme.spacing(7.5),\n justifyContent: \"space-between\",\n borderBottom: `1px solid ${theme.palette.grey[500]}`\n },\n filters: {\n display: \"flex\",\n flexDirection: \"column\",\n \"& > *\": {\n marginTop: theme.spacing(2)\n }\n }\n }),\n { name: \"BackstageTableFilters\" }\n);\nconst Filters = (props) => {\n var _a;\n const classes = useFilterStyles$1();\n const { onChangeFilters } = props;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const [selectedFilters, setSelectedFilters] = useState({\n ...props.selectedFilters\n });\n const [reset, triggerReset] = useState(false);\n const handleClick = () => {\n setSelectedFilters({});\n triggerReset((el) => !el);\n };\n useEffect(() => {\n onChangeFilters(selectedFilters);\n }, [selectedFilters, onChangeFilters]);\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root }, /* @__PURE__ */ React.createElement(Box, { className: classes.header }, /* @__PURE__ */ React.createElement(Box, { className: classes.value }, t(\"table.filter.title\")), /* @__PURE__ */ React.createElement(Button$1, { color: \"primary\", onClick: handleClick }, t(\"table.filter.clearAll\"))), /* @__PURE__ */ React.createElement(Box, { className: classes.filters }, ((_a = props.filters) == null ? void 0 : _a.length) && props.filters.map((filter) => /* @__PURE__ */ React.createElement(\n SelectComponent,\n {\n triggerReset: reset,\n key: filter.element.label,\n ...filter.element,\n selected: selectedFilters[filter.element.label],\n onChange: (el) => setSelectedFilters({\n ...selectedFilters,\n [filter.element.label]: el\n })\n }\n ))));\n};\n\nfunction TableLoadingBody(props) {\n return /* @__PURE__ */ React.createElement(\"tbody\", { \"data-testid\": \"loading-indicator\" }, /* @__PURE__ */ React.createElement(\"tr\", null, /* @__PURE__ */ React.createElement(\"td\", { colSpan: props.colSpan }, /* @__PURE__ */ React.createElement(\n Box,\n {\n sx: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n minHeight: \"15rem\"\n }\n },\n /* @__PURE__ */ React.createElement(CircularProgress, { size: \"5rem\" })\n ))));\n}\n\nconst tableIcons = {\n Add: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(AddBox, { ...props, ref })),\n Check: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Check, { ...props, ref })),\n Clear: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Clear, { ...props, ref })),\n Delete: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(DeleteOutline, { ...props, ref })),\n DetailPanel: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(ChevronRight, { ...props, ref })),\n Edit: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Edit, { ...props, ref })),\n Export: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(SaveAlt, { ...props, ref })),\n Filter: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(FilterList, { ...props, ref })),\n FirstPage: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(FirstPage, { ...props, ref })),\n LastPage: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(LastPage, { ...props, ref })),\n NextPage: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(ChevronRight, { ...props, ref })),\n PreviousPage: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(ChevronLeftIcon, { ...props, ref })),\n ResetSearch: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Clear, { ...props, ref })),\n Search: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(FilterList, { ...props, ref })),\n SortArrow: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(ArrowUpward, { ...props, ref })),\n ThirdStateCheck: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(Remove, { ...props, ref })),\n ViewColumn: forwardRef((props, ref) => /* @__PURE__ */ React.createElement(ViewColumn, { ...props, ref }))\n};\nfunction extractValueByField(data, field) {\n const path = field.split(\".\");\n let value = data[path[0]];\n for (let i = 1; i < path.length; ++i) {\n if (value === void 0) {\n return value;\n }\n const f = path[i];\n value = value[f];\n }\n return value;\n}\nconst StyledMTableHeader = withStyles(\n (theme) => ({\n header: {\n padding: theme.spacing(1, 2, 1, 2.5),\n borderTop: `1px solid ${theme.palette.grey.A100}`,\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n // withStyles hasn't a generic overload for theme\n fontWeight: theme.typography.fontWeightBold,\n position: \"static\",\n wordBreak: \"normal\",\n textTransform: \"uppercase\"\n }\n }),\n { name: \"BackstageTableHeader\" }\n)(MTableHeader);\nconst StyledMTableToolbar = withStyles(\n (theme) => ({\n root: {\n padding: theme.spacing(3, 0, 2.5, 2.5)\n },\n title: {\n \"& > h6\": {\n fontWeight: theme.typography.fontWeightBold\n }\n },\n searchField: {\n paddingRight: theme.spacing(2)\n }\n }),\n { name: \"BackstageTableToolbar\" }\n)(MTableToolbar);\nconst useFilterStyles = makeStyles(\n (theme) => ({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n title: {\n fontWeight: theme.typography.fontWeightBold,\n fontSize: 18,\n whiteSpace: \"nowrap\"\n }\n }),\n { name: \"BackstageTableFiltersContainer\" }\n);\nconst useTableStyles = makeStyles(\n () => ({\n root: {\n display: \"flex\",\n alignItems: \"start\"\n }\n }),\n { name: \"BackstageTable\" }\n);\nfunction convertColumns(columns, theme) {\n return columns.map((column) => {\n var _a;\n const headerStyle = (_a = column.headerStyle) != null ? _a : {};\n let cellStyle = column.cellStyle || {};\n if (column.highlight) {\n headerStyle.color = theme.palette.textContrast;\n if (typeof cellStyle === \"object\") {\n cellStyle.fontWeight = theme.typography.fontWeightBold;\n } else {\n const cellStyleFn = cellStyle;\n cellStyle = (data, rowData, rowColumn) => {\n const style = cellStyleFn(data, rowData, rowColumn);\n return { ...style, fontWeight: theme.typography.fontWeightBold };\n };\n }\n }\n return {\n ...column,\n headerStyle,\n cellStyle\n };\n });\n}\nfunction removeDefaultValues(state, defaultState) {\n return transform(state, (result, value, key) => {\n if (!isEqual(value, defaultState[key])) {\n result[key] = value;\n }\n });\n}\nconst defaultInitialState = {\n search: \"\",\n filtersOpen: false,\n filters: {}\n};\nfunction TableToolbar(toolbarProps) {\n const {\n toolbarRef,\n setSearch,\n hasFilters,\n selectedFiltersLength,\n toggleFilters\n } = toolbarProps;\n const filtersClasses = useFilterStyles();\n const onSearchChanged = useCallback(\n (searchText) => {\n toolbarProps.onSearchChanged(searchText);\n setSearch(searchText);\n },\n [toolbarProps, setSearch]\n );\n if (hasFilters) {\n return /* @__PURE__ */ React.createElement(Box, { className: filtersClasses.root }, /* @__PURE__ */ React.createElement(Box, { className: filtersClasses.root }, /* @__PURE__ */ React.createElement(IconButton, { onClick: toggleFilters, \"aria-label\": \"filter list\" }, /* @__PURE__ */ React.createElement(FilterList, null)), /* @__PURE__ */ React.createElement(Typography, { className: filtersClasses.title }, \"Filters (\", selectedFiltersLength, \")\")), /* @__PURE__ */ React.createElement(\n StyledMTableToolbar,\n {\n ...toolbarProps,\n ref: toolbarRef,\n onSearchChanged\n }\n ));\n }\n return /* @__PURE__ */ React.createElement(\n StyledMTableToolbar,\n {\n ...toolbarProps,\n ref: toolbarRef,\n onSearchChanged\n }\n );\n}\nfunction Table(props) {\n const {\n data,\n columns,\n emptyContent,\n options,\n title,\n subtitle,\n localization,\n filters,\n initialState,\n onStateChange,\n components,\n isLoading: loading,\n ...restProps\n } = props;\n const tableClasses = useTableStyles();\n const theme = useTheme();\n const calculatedInitialState = { ...defaultInitialState, ...initialState };\n const [filtersOpen, setFiltersOpen] = useState(\n calculatedInitialState.filtersOpen\n );\n const toggleFilters = useCallback(\n () => setFiltersOpen((v) => !v),\n [setFiltersOpen]\n );\n const [selectedFilters, setSelectedFilters] = useState(\n calculatedInitialState.filters\n );\n const [search, setSearch] = useState(calculatedInitialState.search);\n useEffect(() => {\n if (onStateChange) {\n const state = removeDefaultValues(\n {\n search,\n filtersOpen,\n filters: selectedFilters\n },\n defaultInitialState\n );\n onStateChange(state);\n }\n }, [search, filtersOpen, selectedFilters, onStateChange]);\n const getFieldByTitle = useCallback(\n (titleValue) => {\n var _a;\n return (_a = columns.find((el) => el.title === titleValue)) == null ? void 0 : _a.field;\n },\n [columns]\n );\n const tableData = useMemo(() => {\n if (typeof data === \"function\" || !selectedFilters) {\n return data;\n }\n const selectedFiltersArray = Object.values(selectedFilters);\n if (data && selectedFiltersArray.flat().length) {\n const newData = data.filter(\n (el) => !!Object.entries(selectedFilters).filter(([, value]) => !!value.length).every(([key, filterValue]) => {\n const fieldValue = extractValueByField(\n el,\n getFieldByTitle(key)\n );\n if (Array.isArray(fieldValue) && Array.isArray(filterValue)) {\n return fieldValue.some((v) => filterValue.includes(v));\n } else if (Array.isArray(fieldValue)) {\n return fieldValue.includes(filterValue);\n } else if (Array.isArray(filterValue)) {\n return filterValue.includes(fieldValue);\n }\n return fieldValue === filterValue;\n })\n );\n return newData;\n }\n return data;\n }, [data, selectedFilters, getFieldByTitle]);\n const selectedFiltersLength = Object.values(selectedFilters).flat().length;\n const hasFilters = !!(filters == null ? void 0 : filters.length);\n const Toolbar = useCallback(\n (toolbarProps) => {\n return /* @__PURE__ */ React.createElement(\n TableToolbar,\n {\n setSearch,\n hasFilters,\n selectedFiltersLength,\n toggleFilters,\n ...toolbarProps\n }\n );\n },\n [toggleFilters, hasFilters, selectedFiltersLength, setSearch]\n );\n const hasNoRows = typeof data !== \"function\" && data.length === 0;\n const columnCount = columns.length;\n const Body = useMemo(\n () => makeBody({ hasNoRows, emptyContent, columnCount, loading }),\n [hasNoRows, emptyContent, columnCount, loading]\n );\n return /* @__PURE__ */ React.createElement(Box, { className: tableClasses.root }, filtersOpen && data && typeof data !== \"function\" && (filters == null ? void 0 : filters.length) && /* @__PURE__ */ React.createElement(\n Filters,\n {\n filters: constructFilters(filters, data, columns),\n selectedFilters,\n onChangeFilters: setSelectedFilters\n }\n ), /* @__PURE__ */ React.createElement(\n MTable,\n {\n components: {\n Header: StyledMTableHeader,\n Body,\n Toolbar,\n ...components\n },\n options,\n columns: convertColumns(columns, theme),\n icons: tableIcons,\n title: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\", component: \"h2\" }, title), subtitle && /* @__PURE__ */ React.createElement(Typography, { color: \"textSecondary\", variant: \"body1\" }, subtitle)),\n data: tableData,\n style: { width: \"100%\" },\n localization: {\n toolbar: { searchPlaceholder: \"Filter\", searchTooltip: \"Filter\" },\n ...localization\n },\n ...restProps\n }\n ));\n}\nTable.icons = Object.freeze(tableIcons);\nfunction makeBody({\n columnCount,\n emptyContent,\n hasNoRows,\n loading\n}) {\n return (bodyProps) => {\n if (loading) {\n return /* @__PURE__ */ React.createElement(TableLoadingBody, { colSpan: columnCount });\n }\n if (emptyContent && hasNoRows) {\n return /* @__PURE__ */ React.createElement(\"tbody\", null, /* @__PURE__ */ React.createElement(\"tr\", null, /* @__PURE__ */ React.createElement(\"td\", { colSpan: columnCount }, emptyContent)));\n }\n return /* @__PURE__ */ React.createElement(MTableBody, { ...bodyProps });\n };\n}\nfunction constructFilters(filterConfig, dataValue, columns) {\n const extractDistinctValues = (field) => {\n const distinctValues = /* @__PURE__ */ new Set();\n const addValue = (value) => {\n if (value !== void 0 && value !== null) {\n distinctValues.add(value);\n }\n };\n if (dataValue) {\n dataValue.forEach((el) => {\n var _a;\n const value = extractValueByField(\n el,\n (_a = columns.find((c) => c.title === field)) == null ? void 0 : _a.field\n );\n if (Array.isArray(value)) {\n value.forEach(addValue);\n } else {\n addValue(value);\n }\n });\n }\n return distinctValues;\n };\n const constructSelect = (filter) => {\n return {\n placeholder: \"All results\",\n label: filter.column,\n multiple: filter.type === \"multiple-select\",\n items: [...extractDistinctValues(filter.column)].sort().map((value) => ({\n label: value,\n value\n }))\n };\n };\n return filterConfig.map((filter) => ({\n type: filter.type,\n element: constructSelect(filter)\n }));\n}\n\nfunction color(data, theme) {\n const lastNum = data[data.length - 1];\n if (!lastNum)\n return void 0;\n if (lastNum >= 0.9)\n return theme.palette.status.ok;\n if (lastNum >= 0.5)\n return theme.palette.status.warning;\n return theme.palette.status.error;\n}\nfunction TrendLine(props) {\n var _a;\n const theme = useTheme();\n if (!props.data)\n return null;\n return /* @__PURE__ */ React.createElement(Sparklines, { width: 120, height: 30, min: 0, max: 1, ...props }, props.title && /* @__PURE__ */ React.createElement(\"title\", null, props.title), /* @__PURE__ */ React.createElement(SparklinesLine, { color: (_a = props.color) != null ? _a : color(props.data, theme) }));\n}\n\nconst useStyles$h = (props) => makeStyles(\n (theme) => ({\n container: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n marginBottom: theme.spacing(2),\n textAlign: props.textAlign\n },\n leftItemsBox: {\n flex: \"1 1 auto\",\n minWidth: 0,\n overflow: \"visible\"\n },\n rightItemsBox: {\n flex: \"0 1 auto\",\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n marginLeft: theme.spacing(1),\n minWidth: 0,\n overflow: \"visible\"\n },\n description: {},\n title: {\n display: \"inline-flex\",\n marginBottom: 0\n }\n }),\n { name: \"BackstageContentHeader\" }\n);\nconst ContentHeaderTitle = ({\n title = \"Unknown page\",\n className\n}) => /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"h4\",\n component: \"h2\",\n className,\n \"data-testid\": \"header-title\"\n },\n title\n);\nfunction ContentHeader(props) {\n const {\n description,\n title,\n titleComponent: TitleComponent = void 0,\n children,\n textAlign = \"left\"\n } = props;\n const classes = useStyles$h({ textAlign })();\n const renderedTitle = TitleComponent ? TitleComponent : /* @__PURE__ */ React.createElement(ContentHeaderTitle, { title, className: classes.title });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Helmet, { title }), /* @__PURE__ */ React.createElement(Box, { className: classes.container }, /* @__PURE__ */ React.createElement(Box, { className: classes.leftItemsBox }, renderedTitle, description && /* @__PURE__ */ React.createElement(Typography, { className: classes.description, variant: \"body2\" }, description)), /* @__PURE__ */ React.createElement(Box, { className: classes.rightItemsBox }, children)));\n}\n\nconst useStyles$g = makeStyles(\n (theme) => ({\n micDrop: {\n maxWidth: \"60%\",\n bottom: theme.spacing(2),\n right: theme.spacing(2),\n [theme.breakpoints.down(\"xs\")]: {\n maxWidth: \"96%\",\n bottom: \"unset\",\n right: \"unset\",\n margin: theme.spacing(10, \"auto\", 4)\n }\n }\n }),\n { name: \"BackstageErrorPageMicDrop\" }\n);\nconst MicDrop = () => {\n const classes = useStyles$g();\n return /* @__PURE__ */ React.createElement(\n \"img\",\n {\n src: MicDropSvgUrl,\n className: classes.micDrop,\n alt: \"Girl dropping mic from her hands\"\n }\n );\n};\n\nconst useStyles$f = makeStyles(\n (theme) => ({\n title: {\n paddingBottom: theme.spacing(5),\n [theme.breakpoints.down(\"xs\")]: {\n paddingBottom: theme.spacing(4),\n fontSize: theme.typography.h3.fontSize\n }\n }\n }),\n { name: \"BackstageErrorPageStackDetails\" }\n);\nfunction StackDetails(props) {\n const { stack } = props;\n const classes = useStyles$f();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const [detailsOpen, setDetailsOpen] = useState(false);\n if (!detailsOpen) {\n return /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\", className: classes.title }, /* @__PURE__ */ React.createElement(Link, { to: \"#\", onClick: () => setDetailsOpen(true) }, t(\"errorPage.showMoreDetails\")));\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\", className: classes.title }, /* @__PURE__ */ React.createElement(Link, { to: \"#\", onClick: () => setDetailsOpen(false) }, t(\"errorPage.showLessDetails\"))), /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: stack,\n language: \"text\",\n showCopyCodeButton: true,\n showLineNumbers: true\n }\n ));\n}\n\nconst useStyles$e = makeStyles(\n (theme) => ({\n container: {\n padding: theme.spacing(8),\n [theme.breakpoints.down(\"xs\")]: {\n padding: theme.spacing(2)\n }\n },\n title: {\n paddingBottom: theme.spacing(5),\n [theme.breakpoints.down(\"xs\")]: {\n paddingBottom: theme.spacing(4),\n fontSize: theme.typography.h3.fontSize\n }\n },\n subtitle: {\n color: theme.palette.textSubtle\n }\n }),\n { name: \"BackstageErrorPage\" }\n);\nfunction ErrorPage(props) {\n const {\n status = \"\",\n statusMessage,\n additionalInfo,\n supportUrl,\n stack\n } = props;\n const classes = useStyles$e();\n const navigate = useNavigate();\n const support = useSupportConfig();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return /* @__PURE__ */ React.createElement(Grid, { container: true, className: classes.container }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: 8, md: 4 }, /* @__PURE__ */ React.createElement(\n Typography,\n {\n \"data-testid\": \"error\",\n variant: \"body1\",\n className: classes.subtitle\n },\n t(\"errorPage.subtitle\", { status, statusMessage })\n ), /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\", className: classes.subtitle }, additionalInfo), /* @__PURE__ */ React.createElement(Typography, { variant: \"h2\", className: classes.title }, t(\"errorPage.title\")), /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\", className: classes.title }, /* @__PURE__ */ React.createElement(Link, { to: \"#\", \"data-testid\": \"go-back-link\", onClick: () => navigate(-1) }, t(\"errorPage.goBack\")), \"... or please\", \" \", /* @__PURE__ */ React.createElement(Link, { to: supportUrl || support.url }, \"contact support\"), \" if you think this is a bug.\"), stack && /* @__PURE__ */ React.createElement(StackDetails, { stack })), /* @__PURE__ */ React.createElement(MicDrop, null));\n}\n\nconst ClickableText = withStyles(\n {\n root: {\n textDecoration: \"underline\",\n cursor: \"pointer\"\n }\n },\n { name: \"BackstageBreadcrumbsClickableText\" }\n)(Typography);\nconst StyledBox = withStyles(\n {\n root: {\n textDecoration: \"underline\",\n color: \"inherit\"\n }\n },\n { name: \"BackstageBreadcrumbsStyledBox\" }\n)(Box);\nconst BreadcrumbsCurrentPage = withStyles(\n {\n root: {\n fontStyle: \"italic\"\n }\n },\n { name: \"BreadcrumbsCurrentPage\" }\n)(Box);\nfunction Breadcrumbs(props) {\n const { children, ...restProps } = props;\n const [anchorEl, setAnchorEl] = React.useState(\n null\n );\n const childrenArray = React.Children.toArray(children);\n const [firstPage, secondPage, ...expandablePages] = childrenArray;\n const currentPage = expandablePages.length ? expandablePages.pop() : childrenArray[childrenArray.length - 1];\n const hasHiddenBreadcrumbs = childrenArray.length > 3;\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => {\n setAnchorEl(null);\n };\n const open = Boolean(anchorEl);\n return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement(MaterialBreadcrumbs, { \"aria-label\": \"breadcrumb\", ...restProps }, childrenArray.length > 1 && /* @__PURE__ */ React.createElement(StyledBox, { clone: true }, firstPage), childrenArray.length > 2 && /* @__PURE__ */ React.createElement(StyledBox, { clone: true }, secondPage), hasHiddenBreadcrumbs && /* @__PURE__ */ React.createElement(ClickableText, { onClick: handleClick }, \"...\"), /* @__PURE__ */ React.createElement(BreadcrumbsCurrentPage, null, currentPage)), /* @__PURE__ */ React.createElement(\n Popover,\n {\n open,\n anchorEl,\n onClose: handleClose,\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"left\"\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"left\"\n }\n },\n /* @__PURE__ */ React.createElement(List, null, expandablePages.map((pageLink, index) => /* @__PURE__ */ React.createElement(ListItem, { key: index, button: true }, /* @__PURE__ */ React.createElement(StyledBox, { clone: true }, pageLink))))\n ));\n}\n\nconst drawerWidthClosed = 72;\nconst iconPadding = 24;\nconst userBadgePadding = 18;\nconst sidebarConfig = {\n drawerWidthClosed,\n drawerWidthOpen: 224,\n // As per NN/g's guidance on timing for exposing hidden content\n // See https://www.nngroup.com/articles/timing-exposing-content/\n defaultOpenDelayMs: 100,\n defaultCloseDelayMs: 0,\n defaultFadeDuration: 200,\n logoHeight: 32,\n iconContainerWidth: drawerWidthClosed,\n iconSize: drawerWidthClosed - iconPadding * 2,\n iconPadding,\n selectedIndicatorWidth: 3,\n userBadgePadding,\n userBadgeDiameter: drawerWidthClosed - userBadgePadding * 2,\n mobileSidebarHeight: 56\n};\nconst makeSidebarConfig = (customSidebarConfig) => ({\n ...sidebarConfig,\n ...customSidebarConfig,\n iconContainerWidth: sidebarConfig.drawerWidthClosed,\n iconSize: sidebarConfig.drawerWidthClosed - sidebarConfig.iconPadding * 2,\n userBadgeDiameter: sidebarConfig.drawerWidthClosed - sidebarConfig.userBadgePadding * 2\n});\nconst submenuConfig = {\n drawerWidthClosed: 0,\n drawerWidthOpen: 202,\n defaultOpenDelayMs: sidebarConfig.defaultOpenDelayMs + 200\n};\nconst makeSidebarSubmenuConfig = (customSubmenuConfig) => ({\n ...submenuConfig,\n ...customSubmenuConfig\n});\nconst SIDEBAR_INTRO_LOCAL_STORAGE = \"@backstage/core/sidebar-intro-dismissed\";\nconst SidebarConfigContext = createContext({\n sidebarConfig,\n submenuConfig\n});\nconst SidebarItemWithSubmenuContext = createContext({\n isHoveredOn: false,\n setIsHoveredOn: () => {\n }\n});\n\nconst defaultSidebarOpenStateContext = {\n isOpen: false,\n setOpen: () => {\n }\n};\nconst LegacySidebarContext = createContext(\n defaultSidebarOpenStateContext\n);\nconst VersionedSidebarContext = createVersionedContext(\"sidebar-open-state-context\");\nfunction SidebarOpenStateProvider(props) {\n const { children, value } = props;\n return /* @__PURE__ */ React.createElement(LegacySidebarContext.Provider, { value }, /* @__PURE__ */ React.createElement(\n VersionedSidebarContext.Provider,\n {\n value: createVersionedValueMap({ 1: value })\n },\n children\n ));\n}\nconst useSidebarOpenState = () => {\n const versionedOpenStateContext = useContext(VersionedSidebarContext);\n const legacyOpenStateContext = useContext(LegacySidebarContext);\n if (versionedOpenStateContext === void 0) {\n return legacyOpenStateContext || defaultSidebarOpenStateContext;\n }\n const openStateContext = versionedOpenStateContext.atVersion(1);\n if (openStateContext === void 0) {\n throw new Error(\"No context found for version 1.\");\n }\n return openStateContext;\n};\n\nconst MobileSidebarContext = createContext({\n selectedMenuItemIndex: -1,\n setSelectedMenuItemIndex: () => {\n }\n});\n\nconst defaultSidebarPinStateContext = {\n isPinned: true,\n toggleSidebarPinState: () => {\n },\n isMobile: false\n};\nconst LegacySidebarPinStateContext = createContext(defaultSidebarPinStateContext);\nconst VersionedSidebarPinStateContext = createVersionedContext(\"sidebar-pin-state-context\");\nfunction SidebarPinStateProvider(props) {\n const { children, value } = props;\n return /* @__PURE__ */ React.createElement(LegacySidebarPinStateContext.Provider, { value }, /* @__PURE__ */ React.createElement(\n VersionedSidebarPinStateContext.Provider,\n {\n value: createVersionedValueMap({ 1: value })\n },\n children\n ));\n}\nconst useSidebarPinState = () => {\n const versionedPinStateContext = useContext(VersionedSidebarPinStateContext);\n const legacyPinStateContext = useContext(LegacySidebarPinStateContext);\n if (versionedPinStateContext === void 0) {\n return legacyPinStateContext || defaultSidebarPinStateContext;\n }\n const pinStateContext = versionedPinStateContext.atVersion(1);\n if (pinStateContext === void 0) {\n throw new Error(\"No context found for version 1.\");\n }\n return pinStateContext;\n};\n\nconst useStyles$d = makeStyles(\n (theme) => ({\n root: {\n flexGrow: 0,\n margin: theme.spacing(0, 2),\n color: theme.palette.navigation.color\n },\n selected: (props) => ({\n color: `${theme.palette.navigation.selectedColor}!important`,\n borderTop: `solid ${props.sidebarConfig.selectedIndicatorWidth}px ${theme.palette.navigation.indicator}`,\n marginTop: \"-1px\"\n }),\n label: {\n display: \"none\"\n }\n })\n);\nconst MobileSidebarGroup = (props) => {\n const { to, label, icon, value } = props;\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const classes = useStyles$d({ sidebarConfig });\n const location = useLocation();\n const { selectedMenuItemIndex, setSelectedMenuItemIndex } = useContext(MobileSidebarContext);\n const onChange = (_, value2) => {\n if (value2 === selectedMenuItemIndex) {\n setSelectedMenuItemIndex(-1);\n } else {\n setSelectedMenuItemIndex(value2);\n }\n };\n const selected = value === selectedMenuItemIndex && selectedMenuItemIndex >= 0 || !(value === selectedMenuItemIndex) && !(selectedMenuItemIndex >= 0) && to === location.pathname;\n return (\n // Material UI issue: https://github.com/mui-org/material-ui/issues/27820\n /* @__PURE__ */ React.createElement(\n BottomNavigationAction,\n {\n \"aria-label\": label,\n label,\n icon,\n component: Link,\n to: to ? to : location.pathname,\n onChange,\n value,\n selected,\n classes\n }\n )\n );\n};\nconst SidebarGroup = (props) => {\n const { children, to, label, icon, value } = props;\n const { isMobile } = useSidebarPinState();\n return isMobile ? /* @__PURE__ */ React.createElement(MobileSidebarGroup, { to, label, icon, value }) : /* @__PURE__ */ React.createElement(React.Fragment, null, children);\n};\n\nconst useStyles$c = makeStyles(\n (theme) => ({\n root: {\n position: \"fixed\",\n backgroundColor: theme.palette.navigation.background,\n color: theme.palette.navigation.color,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: theme.zIndex.snackbar,\n // SidebarDivider color\n borderTop: \"1px solid #383838\",\n \"@media print\": {\n display: \"none\"\n }\n },\n overlay: (props) => ({\n background: theme.palette.navigation.background,\n width: \"100%\",\n bottom: `${props.sidebarConfig.mobileSidebarHeight}px`,\n height: `calc(100% - ${props.sidebarConfig.mobileSidebarHeight}px)`,\n flex: \"0 1 auto\",\n overflow: \"auto\"\n }),\n overlayHeader: {\n display: \"flex\",\n color: theme.palette.navigation.color,\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: theme.spacing(2, 3)\n },\n overlayHeaderClose: {\n color: theme.palette.navigation.color\n },\n marginMobileSidebar: (props) => ({\n marginBottom: `${props.sidebarConfig.mobileSidebarHeight}px`\n })\n })\n);\nconst sortSidebarGroupsForPriority = (children) => orderBy(\n children,\n ({ props: { priority } }) => Number.isInteger(priority) ? priority : -1,\n \"desc\"\n);\nconst sidebarGroupType = React.createElement(SidebarGroup).type;\nconst OverlayMenu = ({\n children,\n label = \"Menu\",\n open,\n onClose\n}) => {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const classes = useStyles$c({ sidebarConfig });\n return /* @__PURE__ */ React.createElement(\n Drawer,\n {\n anchor: \"bottom\",\n open,\n onClose,\n ModalProps: {\n BackdropProps: { classes: { root: classes.marginMobileSidebar } }\n },\n classes: {\n root: classes.marginMobileSidebar,\n paperAnchorBottom: classes.overlay\n }\n },\n /* @__PURE__ */ React.createElement(Box, { className: classes.overlayHeader }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h3\" }, label), /* @__PURE__ */ React.createElement(\n IconButton,\n {\n onClick: onClose,\n classes: { root: classes.overlayHeaderClose }\n },\n /* @__PURE__ */ React.createElement(CloseIcon, null)\n )),\n /* @__PURE__ */ React.createElement(Box, { component: \"nav\" }, children)\n );\n};\nconst MobileSidebar = (props) => {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const { children } = props;\n const classes = useStyles$c({ sidebarConfig });\n const location = useLocation();\n const [selectedMenuItemIndex, setSelectedMenuItemIndex] = useState(-1);\n useEffect(() => {\n setSelectedMenuItemIndex(-1);\n }, [location.pathname]);\n let sidebarGroups = useElementFilter(\n children,\n (elements) => elements.getElements().filter((child) => child.type === sidebarGroupType)\n );\n if (!children) {\n return null;\n } else if (!sidebarGroups.length) {\n sidebarGroups.push(\n /* @__PURE__ */ React.createElement(SidebarGroup, { key: \"default_menu\", icon: /* @__PURE__ */ React.createElement(MenuIcon, null) }, children)\n );\n } else {\n sidebarGroups = sortSidebarGroupsForPriority(sidebarGroups);\n }\n const shouldShowGroupChildren = selectedMenuItemIndex >= 0 && !sidebarGroups[selectedMenuItemIndex].props.to;\n return /* @__PURE__ */ React.createElement(SidebarOpenStateProvider, { value: { isOpen: true, setOpen: () => {\n } } }, /* @__PURE__ */ React.createElement(\n MobileSidebarContext.Provider,\n {\n value: { selectedMenuItemIndex, setSelectedMenuItemIndex }\n },\n /* @__PURE__ */ React.createElement(\n OverlayMenu,\n {\n label: sidebarGroups[selectedMenuItemIndex] && sidebarGroups[selectedMenuItemIndex].props.label,\n open: shouldShowGroupChildren,\n onClose: () => setSelectedMenuItemIndex(-1)\n },\n sidebarGroups[selectedMenuItemIndex] && sidebarGroups[selectedMenuItemIndex].props.children\n ),\n /* @__PURE__ */ React.createElement(\n BottomNavigation,\n {\n className: classes.root,\n \"data-testid\": \"mobile-sidebar-root\",\n component: \"nav\"\n },\n sidebarGroups\n )\n ));\n};\n\nconst LocalStorage = {\n getSidebarPinState() {\n let value;\n try {\n value = JSON.parse(\n window.localStorage.getItem(\"sidebarPinState\" /* SIDEBAR_PIN_STATE */) || \"true\"\n );\n } catch {\n return true;\n }\n return !!value;\n },\n setSidebarPinState(state) {\n return window.localStorage.setItem(\n \"sidebarPinState\" /* SIDEBAR_PIN_STATE */,\n JSON.stringify(state)\n );\n }\n};\n\nconst useStyles$b = makeStyles(\n (theme) => ({\n root: {\n width: \"100%\",\n transition: \"padding-left 0.1s ease-out\",\n isolation: \"isolate\",\n [theme.breakpoints.up(\"sm\")]: {\n paddingLeft: (props) => props.isPinned ? props.sidebarConfig.drawerWidthOpen : props.sidebarConfig.drawerWidthClosed\n },\n [theme.breakpoints.down(\"xs\")]: {\n paddingBottom: (props) => props.sidebarConfig.mobileSidebarHeight\n },\n \"@media print\": {\n padding: \"0px !important\"\n }\n },\n content: {\n zIndex: 0,\n isolation: \"isolate\",\n \"&:focus\": {\n outline: 0\n }\n }\n }),\n { name: \"BackstageSidebarPage\" }\n);\nconst PageContext = createContext({\n content: {\n contentRef: void 0\n }\n});\nfunction SidebarPage(props) {\n const [isPinned, setIsPinned] = useState(\n () => LocalStorage.getSidebarPinState()\n );\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const contentRef = useRef(null);\n const pageContext = useMemo(\n () => ({\n content: {\n contentRef\n }\n }),\n [contentRef]\n );\n useEffect(() => {\n LocalStorage.setSidebarPinState(isPinned);\n }, [isPinned]);\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down(\"xs\"), {\n noSsr: true\n });\n const toggleSidebarPinState = () => setIsPinned(!isPinned);\n const classes = useStyles$b({ isPinned, sidebarConfig });\n return /* @__PURE__ */ React.createElement(\n SidebarPinStateProvider,\n {\n value: {\n isPinned,\n toggleSidebarPinState,\n isMobile\n }\n },\n /* @__PURE__ */ React.createElement(PageContext.Provider, { value: pageContext }, /* @__PURE__ */ React.createElement(Box, { className: classes.root }, props.children))\n );\n}\nfunction useContent() {\n const { content } = useContext(PageContext);\n const focusContent = useCallback(() => {\n var _a, _b;\n (_b = (_a = content == null ? void 0 : content.contentRef) == null ? void 0 : _a.current) == null ? void 0 : _b.focus();\n }, [content]);\n return { focusContent, contentRef: content == null ? void 0 : content.contentRef };\n}\n\nconst useStyles$a = makeStyles(\n (theme) => ({\n drawer: {\n display: \"flex\",\n flexFlow: \"column nowrap\",\n alignItems: \"flex-start\",\n position: \"fixed\",\n left: 0,\n top: 0,\n bottom: 0,\n zIndex: theme.zIndex.appBar,\n background: theme.palette.navigation.background,\n overflowX: \"hidden\",\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\",\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.shortest\n }),\n \"& > *\": {\n flexShrink: 0\n },\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n \"@media print\": {\n display: \"none\"\n }\n },\n drawerWidth: (props) => ({\n width: props.sidebarConfig.drawerWidthClosed\n }),\n drawerOpen: (props) => ({\n width: props.sidebarConfig.drawerWidthOpen,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.shorter\n })\n }),\n visuallyHidden: {\n top: 0,\n position: \"absolute\",\n zIndex: 1e3,\n transform: \"translateY(-200%)\",\n \"&:focus\": {\n transform: \"translateY(5px)\"\n }\n }\n }),\n { name: \"BackstageSidebar\" }\n);\nconst DesktopSidebar = (props) => {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const {\n openDelayMs = sidebarConfig.defaultOpenDelayMs,\n closeDelayMs = sidebarConfig.defaultCloseDelayMs,\n disableExpandOnHover,\n children\n } = props;\n const classes = useStyles$a({ sidebarConfig });\n const isSmallScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"md\"),\n { noSsr: true }\n );\n const [state, setState] = useState(0 /* Closed */);\n const hoverTimerRef = useRef();\n const { isPinned, toggleSidebarPinState } = useSidebarPinState();\n const handleOpen = () => {\n if (isPinned || disableExpandOnHover) {\n return;\n }\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = void 0;\n }\n if (state !== 2 /* Open */ && !isSmallScreen) {\n hoverTimerRef.current = window.setTimeout(() => {\n hoverTimerRef.current = void 0;\n setState(2 /* Open */);\n }, openDelayMs);\n setState(1 /* Idle */);\n }\n };\n const handleClose = () => {\n if (isPinned || disableExpandOnHover) {\n return;\n }\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = void 0;\n }\n if (state === 1 /* Idle */) {\n setState(0 /* Closed */);\n } else if (state === 2 /* Open */) {\n hoverTimerRef.current = window.setTimeout(() => {\n hoverTimerRef.current = void 0;\n setState(0 /* Closed */);\n }, closeDelayMs);\n }\n };\n const isOpen = state === 2 /* Open */ && !isSmallScreen || isPinned;\n const setOpen = (open) => {\n if (open) {\n setState(2 /* Open */);\n toggleSidebarPinState();\n } else {\n setState(0 /* Closed */);\n toggleSidebarPinState();\n }\n };\n return /* @__PURE__ */ React.createElement(\"nav\", { style: {}, \"aria-label\": \"sidebar nav\" }, /* @__PURE__ */ React.createElement(A11ySkipSidebar, null), /* @__PURE__ */ React.createElement(SidebarOpenStateProvider, { value: { isOpen, setOpen } }, /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classes.root,\n \"data-testid\": \"sidebar-root\",\n onMouseEnter: disableExpandOnHover ? () => {\n } : handleOpen,\n onFocus: disableExpandOnHover ? () => {\n } : handleOpen,\n onMouseLeave: disableExpandOnHover ? () => {\n } : handleClose,\n onBlur: disableExpandOnHover ? () => {\n } : handleClose\n },\n /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classNames(classes.drawer, classes.drawerWidth, {\n [classes.drawerOpen]: isOpen\n })\n },\n children\n )\n )));\n};\nconst Sidebar = (props) => {\n var _a, _b;\n const sidebarConfig = makeSidebarConfig(\n (_a = props.sidebarOptions) != null ? _a : {}\n );\n const submenuConfig = makeSidebarSubmenuConfig(\n (_b = props.submenuOptions) != null ? _b : {}\n );\n const { children, disableExpandOnHover, openDelayMs, closeDelayMs } = props;\n const { isMobile } = useSidebarPinState();\n return isMobile ? /* @__PURE__ */ React.createElement(MobileSidebar, null, children) : /* @__PURE__ */ React.createElement(SidebarConfigContext.Provider, { value: { sidebarConfig, submenuConfig } }, /* @__PURE__ */ React.createElement(\n DesktopSidebar,\n {\n openDelayMs,\n closeDelayMs,\n disableExpandOnHover\n },\n children\n ));\n};\nfunction A11ySkipSidebar() {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const { focusContent, contentRef } = useContent();\n const classes = useStyles$a({ sidebarConfig });\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n if (!(contentRef == null ? void 0 : contentRef.current)) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n onClick: focusContent,\n variant: \"contained\",\n className: classNames(classes.visuallyHidden)\n },\n t(\"skipToContent\")\n );\n}\n\nfunction isLocationMatch(currentLocation, toLocation, exact = false) {\n const toDecodedSearch = new URLSearchParams(toLocation.search).toString();\n const toQueryParameters = qs.parse(toDecodedSearch);\n const currentDecodedSearch = new URLSearchParams(\n currentLocation.search\n ).toString();\n const currentQueryParameters = qs.parse(currentDecodedSearch);\n const queryStringMatcher = exact ? isEqual : isMatch;\n const matching = isEqual(toLocation.pathname, currentLocation.pathname) && queryStringMatcher(currentQueryParameters, toQueryParameters);\n return matching;\n}\n\nconst useStyles$9 = makeStyles(\n (theme) => {\n var _a, _b;\n return {\n item: {\n height: 48,\n width: \"100%\",\n \"&:hover\": {\n background: ((_a = theme.palette.navigation.navItem) == null ? void 0 : _a.hoverBackground) || \"#6f6f6f\",\n color: theme.palette.navigation.selectedColor\n },\n display: \"flex\",\n alignItems: \"center\",\n color: theme.palette.navigation.color,\n padding: theme.spacing(2.5),\n cursor: \"pointer\",\n position: \"relative\",\n background: \"none\",\n border: \"none\"\n },\n itemContainer: {\n width: \"100%\"\n },\n selected: {\n background: \"#6f6f6f\",\n color: theme.palette.common.white\n },\n label: {\n margin: theme.spacing(1.75),\n marginLeft: theme.spacing(1),\n fontSize: theme.typography.body2.fontSize,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n \"text-overflow\": \"ellipsis\",\n lineHeight: 1\n },\n subtitle: {\n fontSize: 10,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n \"text-overflow\": \"ellipsis\"\n },\n dropdownArrow: {\n position: \"absolute\",\n right: 21\n },\n dropdown: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"end\"\n },\n dropdownItem: {\n width: \"100%\",\n padding: \"10px 0 10px 0\",\n \"&:hover\": {\n background: ((_b = theme.palette.navigation.navItem) == null ? void 0 : _b.hoverBackground) || \"#6f6f6f\",\n color: theme.palette.navigation.selectedColor\n }\n },\n textContent: {\n color: theme.palette.navigation.color,\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(1),\n fontSize: theme.typography.body2.fontSize,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n \"text-overflow\": \"ellipsis\"\n }\n };\n },\n { name: \"BackstageSidebarSubmenuItem\" }\n);\nconst SidebarSubmenuItem = (props) => {\n const { title, subtitle, to, icon: Icon, dropdownItems, exact } = props;\n const classes = useStyles$9();\n const { setIsHoveredOn } = useContext(SidebarItemWithSubmenuContext);\n const closeSubmenu = () => {\n setIsHoveredOn(false);\n };\n const toLocation = useResolvedPath$1(to != null ? to : \"\");\n const currentLocation = useLocation();\n let isActive = isLocationMatch(currentLocation, toLocation, exact);\n const [showDropDown, setShowDropDown] = useState(false);\n const handleClickDropdown = () => {\n setShowDropDown(!showDropDown);\n };\n if (dropdownItems !== void 0) {\n dropdownItems.some((item) => {\n const resolvedPath = resolvePath(item.to);\n isActive = isLocationMatch(currentLocation, resolvedPath, exact);\n return isActive;\n });\n return /* @__PURE__ */ React.createElement(Box, { className: classes.itemContainer }, /* @__PURE__ */ React.createElement(Tooltip, { title, enterDelay: 500, enterNextDelay: 500 }, /* @__PURE__ */ React.createElement(\n Button$1,\n {\n role: \"button\",\n onClick: handleClickDropdown,\n onTouchStart: (e) => e.stopPropagation(),\n className: classNames(\n classes.item,\n isActive ? classes.selected : void 0\n )\n },\n Icon && /* @__PURE__ */ React.createElement(Icon, { fontSize: \"small\" }),\n /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"subtitle1\",\n component: \"span\",\n className: classes.label\n },\n title,\n /* @__PURE__ */ React.createElement(\"br\", null),\n subtitle && /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"caption\",\n component: \"span\",\n className: classes.subtitle\n },\n subtitle\n )\n ),\n showDropDown ? /* @__PURE__ */ React.createElement(ArrowDropUpIcon, { className: classes.dropdownArrow }) : /* @__PURE__ */ React.createElement(ArrowDropDownIcon, { className: classes.dropdownArrow })\n )), dropdownItems && showDropDown && /* @__PURE__ */ React.createElement(Box, { className: classes.dropdown }, dropdownItems.map((object, key) => /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n key,\n title: object.title,\n enterDelay: 500,\n enterNextDelay: 500\n },\n /* @__PURE__ */ React.createElement(\n Link,\n {\n to: object.to,\n underline: \"none\",\n className: classes.dropdownItem,\n onClick: closeSubmenu,\n onTouchStart: (e) => e.stopPropagation()\n },\n /* @__PURE__ */ React.createElement(Typography, { component: \"span\", className: classes.textContent }, object.title)\n )\n ))));\n }\n return /* @__PURE__ */ React.createElement(Box, { className: classes.itemContainer }, /* @__PURE__ */ React.createElement(Tooltip, { title, enterDelay: 500, enterNextDelay: 500 }, /* @__PURE__ */ React.createElement(\n Link,\n {\n to,\n underline: \"none\",\n className: classNames(\n classes.item,\n isActive ? classes.selected : void 0\n ),\n onClick: closeSubmenu,\n onTouchStart: (e) => e.stopPropagation()\n },\n Icon && /* @__PURE__ */ React.createElement(Icon, { fontSize: \"small\" }),\n /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"subtitle1\",\n component: \"span\",\n className: classes.label\n },\n title,\n /* @__PURE__ */ React.createElement(\"br\", null),\n subtitle && /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"caption\",\n component: \"span\",\n className: classes.subtitle\n },\n subtitle\n )\n )\n )));\n};\n\nconst useStyles$8 = makeStyles(\n (theme) => ({\n root: {\n zIndex: 1e3,\n position: \"relative\",\n overflow: \"visible\",\n width: theme.spacing(7) + 1\n },\n drawer: (props) => {\n var _a, _b;\n return {\n display: \"flex\",\n flexFlow: \"column nowrap\",\n alignItems: \"flex-start\",\n position: \"fixed\",\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: props.left,\n transition: theme.transitions.create(\"margin-left\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.shortest\n })\n },\n top: 0,\n bottom: 0,\n padding: 0,\n background: (_b = (_a = theme.palette.navigation.submenu) == null ? void 0 : _a.background) != null ? _b : \"#404040\",\n overflowX: \"hidden\",\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\",\n cursor: \"default\",\n width: props.submenuConfig.drawerWidthClosed,\n transitionDelay: `${props.submenuConfig.defaultOpenDelayMs}ms`,\n \"& > *\": {\n flexShrink: 0\n },\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n };\n },\n drawerOpen: (props) => ({\n width: props.submenuConfig.drawerWidthOpen,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100%\",\n position: \"relative\",\n paddingLeft: theme.spacing(3),\n left: 0,\n top: 0\n }\n }),\n title: {\n fontSize: theme.typography.h5.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.palette.common.white,\n padding: theme.spacing(2.5),\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\"\n }\n }\n }),\n { name: \"BackstageSidebarSubmenu\" }\n);\nconst SidebarSubmenu = (props) => {\n const { isOpen } = useSidebarOpenState();\n const { sidebarConfig, submenuConfig } = useContext(SidebarConfigContext);\n const left = isOpen ? sidebarConfig.drawerWidthOpen : sidebarConfig.drawerWidthClosed;\n const classes = useStyles$8({ left, submenuConfig });\n const { isHoveredOn } = useContext(SidebarItemWithSubmenuContext);\n const [isSubmenuOpen, setIsSubmenuOpen] = useState(false);\n useEffect(() => {\n setIsSubmenuOpen(isHoveredOn);\n }, [isHoveredOn]);\n return /* @__PURE__ */ React.createElement(\n Box,\n {\n className: classNames(classes.drawer, {\n [classes.drawerOpen]: isSubmenuOpen\n })\n },\n /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\", component: \"span\", className: classes.title }, props.title),\n props.children\n );\n};\n\nconst useStyles$7 = makeStyles({\n iconContainer: {\n display: \"flex\",\n position: \"relative\",\n width: \"100%\"\n },\n arrow1: {\n right: \"6px\",\n position: \"absolute\"\n }\n});\nconst DoubleArrowLeft = () => {\n const classes = useStyles$7();\n return /* @__PURE__ */ React.createElement(Box, { className: classes.iconContainer }, /* @__PURE__ */ React.createElement(Box, { className: classes.arrow1 }, /* @__PURE__ */ React.createElement(ArrowBackIosIcon, { style: { fontSize: \"12px\" } })), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(ArrowBackIosIcon, { style: { fontSize: \"12px\" } })));\n};\n\nconst useStyles$6 = makeStyles({\n iconContainer: {\n display: \"flex\",\n position: \"relative\",\n width: \"100%\"\n },\n arrow1: {\n right: \"6px\",\n position: \"absolute\"\n }\n});\nconst DoubleArrowRight = () => {\n const classes = useStyles$6();\n return /* @__PURE__ */ React.createElement(Box, { className: classes.iconContainer }, /* @__PURE__ */ React.createElement(Box, { className: classes.arrow1 }, /* @__PURE__ */ React.createElement(ArrowForwardIosIcon, { style: { fontSize: \"12px\" } })), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(ArrowForwardIosIcon, { style: { fontSize: \"12px\" } })));\n};\n\nconst makeSidebarStyles = (sidebarConfig) => makeStyles(\n (theme) => {\n var _a, _b, _c, _d;\n return {\n root: {\n color: theme.palette.navigation.color,\n display: \"flex\",\n flexFlow: \"row nowrap\",\n alignItems: \"center\",\n height: 48,\n cursor: \"pointer\"\n },\n buttonItem: {\n background: \"none\",\n border: \"none\",\n width: \"100%\",\n margin: 0,\n padding: 0,\n textAlign: \"inherit\",\n font: \"inherit\",\n textTransform: \"none\"\n },\n closed: {\n width: sidebarConfig.drawerWidthClosed,\n justifyContent: \"center\"\n },\n open: {\n [theme.breakpoints.up(\"sm\")]: {\n width: sidebarConfig.drawerWidthOpen\n }\n },\n highlightable: {\n \"&:hover\": {\n background: (_b = (_a = theme.palette.navigation.navItem) == null ? void 0 : _a.hoverBackground) != null ? _b : \"#404040\"\n }\n },\n highlighted: {\n background: (_d = (_c = theme.palette.navigation.navItem) == null ? void 0 : _c.hoverBackground) != null ? _d : \"#404040\"\n },\n label: {\n // XXX (@koroeskohr): I can't seem to achieve the desired font-weight from the designs\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n lineHeight: \"auto\",\n flex: \"3 1 auto\",\n width: \"110px\",\n overflow: \"hidden\",\n \"text-overflow\": \"ellipsis\"\n },\n iconContainer: {\n boxSizing: \"border-box\",\n height: \"100%\",\n width: sidebarConfig.iconContainerWidth,\n marginRight: -theme.spacing(2),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: \"0\"\n },\n searchRoot: {\n marginBottom: 12\n },\n searchField: {\n color: \"#b5b5b5\",\n fontWeight: theme.typography.fontWeightBold,\n fontSize: theme.typography.fontSize\n },\n searchFieldHTMLInput: {\n padding: theme.spacing(2, 0, 2)\n },\n searchContainer: {\n width: sidebarConfig.drawerWidthOpen - sidebarConfig.iconContainerWidth\n },\n secondaryAction: {\n width: theme.spacing(6),\n textAlign: \"center\",\n marginRight: theme.spacing(1)\n },\n closedItemIcon: {\n width: \"100%\",\n justifyContent: \"center\"\n },\n submenuArrow: {\n display: \"flex\"\n },\n expandButton: {\n background: \"none\",\n border: \"none\",\n color: theme.palette.navigation.color,\n width: \"100%\",\n cursor: \"pointer\",\n position: \"relative\",\n height: 48\n },\n arrows: {\n position: \"absolute\",\n right: 10\n },\n selected: {\n \"&$root\": {\n borderLeft: `solid ${sidebarConfig.selectedIndicatorWidth}px ${theme.palette.navigation.indicator}`,\n color: theme.palette.navigation.selectedColor\n },\n \"&$closed\": {\n width: sidebarConfig.drawerWidthClosed\n },\n \"& $closedItemIcon\": {\n paddingRight: sidebarConfig.selectedIndicatorWidth\n },\n \"& $iconContainer\": {\n marginLeft: -sidebarConfig.selectedIndicatorWidth\n }\n }\n };\n },\n { name: \"BackstageSidebarItem\" }\n);\nfunction useMemoStyles(sidebarConfig) {\n const useStyles = useMemo(\n () => makeSidebarStyles(sidebarConfig),\n [sidebarConfig]\n );\n return useStyles();\n}\nconst useLocationMatch = (submenu, location) => useElementFilter(\n submenu.props.children,\n (elements) => {\n let active = false;\n elements.getElements().forEach(\n ({\n props: { to, dropdownItems }\n }) => {\n if (!active) {\n if (dropdownItems == null ? void 0 : dropdownItems.length) {\n dropdownItems.forEach(\n ({ to: _to }) => active = active || isLocationMatch(location, resolvePath(_to))\n );\n return;\n }\n if (to) {\n active = isLocationMatch(location, resolvePath(to));\n }\n }\n }\n );\n return active;\n },\n [location.pathname]\n);\nfunction isButtonItem(props) {\n return props.to === void 0;\n}\nconst sidebarSubmenuType = React.createElement(SidebarSubmenu).type;\nconst WorkaroundNavLink = React.forwardRef(function WorkaroundNavLinkWithRef({\n to,\n end,\n style,\n className,\n activeStyle,\n caseSensitive,\n activeClassName = \"active\",\n \"aria-current\": ariaCurrentProp = \"page\",\n ...rest\n}, ref) {\n let { pathname: locationPathname } = useLocation();\n let { pathname: toPathname } = useResolvedPath$1(to);\n if (!caseSensitive) {\n locationPathname = locationPathname.toLocaleLowerCase(\"en-US\");\n toPathname = toPathname.toLocaleLowerCase(\"en-US\");\n }\n let isActive = locationPathname === toPathname;\n if (!isActive && !end) {\n isActive = locationPathname.startsWith(`${toPathname}/`);\n }\n const ariaCurrent = isActive ? ariaCurrentProp : void 0;\n return /* @__PURE__ */ React.createElement(\n Link$1,\n {\n ...rest,\n to,\n ref,\n \"aria-current\": ariaCurrent,\n style: { ...style, ...isActive ? activeStyle : void 0 },\n className: classNames([\n typeof className !== \"function\" ? className : void 0,\n isActive ? activeClassName : void 0\n ])\n }\n );\n});\nconst SidebarItemBase = forwardRef((props, ref) => {\n const {\n icon: Icon,\n text,\n hasNotifications = false,\n hasSubmenu = false,\n disableHighlight = false,\n onClick,\n noTrack,\n children,\n className,\n ...navLinkProps\n } = props;\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const classes = useMemoStyles(sidebarConfig);\n const { isOpen } = useSidebarOpenState();\n const divStyle = !isOpen && hasSubmenu ? { display: \"flex\", marginLeft: \"20px\" } : { lineHeight: \"0\" };\n const displayItemIcon = /* @__PURE__ */ React.createElement(Box, { style: divStyle }, /* @__PURE__ */ React.createElement(Icon, { fontSize: \"small\" }), !isOpen && hasSubmenu ? /* @__PURE__ */ React.createElement(ArrowRightIcon, { fontSize: \"small\" }) : /* @__PURE__ */ React.createElement(React.Fragment, null));\n const itemIcon = /* @__PURE__ */ React.createElement(\n Badge,\n {\n color: \"secondary\",\n variant: \"dot\",\n overlap: \"circular\",\n invisible: !hasNotifications,\n className: classNames({ [classes.closedItemIcon]: !isOpen })\n },\n displayItemIcon\n );\n const openContent = /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { \"data-testid\": \"login-button\", className: classes.iconContainer }, itemIcon), text && /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"subtitle2\",\n component: \"span\",\n className: classes.label\n },\n text\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.secondaryAction }, children));\n const content = isOpen ? openContent : itemIcon;\n const childProps = {\n onClick,\n className: classNames(\n className,\n classes.root,\n isOpen ? classes.open : classes.closed,\n isButtonItem(props) && classes.buttonItem,\n { [classes.highlightable]: !disableHighlight }\n )\n };\n const analyticsApi = useAnalytics();\n const { pathname: to } = useResolvedPath$1(\n !isButtonItem(props) && props.to ? props.to : \"\"\n );\n const handleClick = useCallback(\n (event) => {\n if (!noTrack) {\n const action = \"click\";\n const subject = text != null ? text : \"Sidebar Item\";\n const options = to ? { attributes: { to } } : void 0;\n analyticsApi.captureEvent(action, subject, options);\n }\n onClick == null ? void 0 : onClick(event);\n },\n [analyticsApi, text, to, noTrack, onClick]\n );\n if (isButtonItem(props)) {\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n role: \"button\",\n \"aria-label\": text,\n ...childProps,\n ref,\n onClick: handleClick\n },\n content\n );\n }\n return /* @__PURE__ */ React.createElement(\n WorkaroundNavLink,\n {\n ...childProps,\n activeClassName: classes.selected,\n to: props.to ? props.to : \"\",\n ref,\n \"aria-label\": text ? text : props.to,\n ...navLinkProps,\n onClick: handleClick\n },\n content\n );\n});\nconst SidebarItemWithSubmenu = ({\n children,\n ...props\n}) => {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const classes = useMemoStyles(sidebarConfig);\n const [isHoveredOn, setIsHoveredOn] = useState(false);\n const location = useLocation();\n const isActive = useLocationMatch(children, location);\n const isSmallScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"sm\")\n );\n const handleMouseEnter = () => {\n setIsHoveredOn(true);\n };\n const handleMouseLeave = () => {\n setIsHoveredOn(false);\n };\n const arrowIcon = () => {\n if (isSmallScreen) {\n return isHoveredOn ? /* @__PURE__ */ React.createElement(ArrowDropUpIcon, { fontSize: \"small\", className: classes.submenuArrow }) : /* @__PURE__ */ React.createElement(ArrowDropDownIcon, { fontSize: \"small\", className: classes.submenuArrow });\n }\n return !isHoveredOn && /* @__PURE__ */ React.createElement(ArrowRightIcon, { fontSize: \"small\", className: classes.submenuArrow });\n };\n return /* @__PURE__ */ React.createElement(\n SidebarItemWithSubmenuContext.Provider,\n {\n value: {\n isHoveredOn,\n setIsHoveredOn\n }\n },\n /* @__PURE__ */ React.createElement(\n \"div\",\n {\n \"data-testid\": \"item-with-submenu\",\n onMouseLeave: handleMouseLeave,\n onTouchStart: isHoveredOn ? handleMouseLeave : handleMouseEnter,\n onMouseEnter: handleMouseEnter,\n className: classNames(isHoveredOn && classes.highlighted)\n },\n /* @__PURE__ */ React.createElement(\n SidebarItemBase,\n {\n hasSubmenu: true,\n className: isActive ? classes.selected : \"\",\n ...props\n },\n arrowIcon()\n ),\n isHoveredOn && children\n )\n );\n};\nconst SidebarItem = forwardRef((props, ref) => {\n const [submenu] = useElementFilter(\n props.children,\n (elements) => (\n // Directly comparing child.type with SidebarSubmenu will not work with in\n // combination with react-hot-loader\n //\n // https://github.com/gaearon/react-hot-loader/issues/304#issuecomment-456569720\n elements.getElements().filter((child) => child.type === sidebarSubmenuType)\n )\n );\n if (submenu) {\n return /* @__PURE__ */ React.createElement(SidebarItemWithSubmenu, { ...props }, submenu);\n }\n return /* @__PURE__ */ React.createElement(SidebarItemBase, { ...props, ref });\n});\nfunction SidebarSearchField(props) {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const [input, setInput] = useState(\"\");\n const classes = useMemoStyles(sidebarConfig);\n const Icon = props.icon ? props.icon : SearchIcon;\n const search = () => {\n props.onSearch(input);\n setInput(\"\");\n };\n const handleEnter = (ev) => {\n if (ev.key === \"Enter\") {\n ev.preventDefault();\n search();\n }\n };\n const handleInput = (ev) => {\n setInput(ev.target.value);\n };\n const handleInputClick = (ev) => {\n ev.preventDefault();\n ev.stopPropagation();\n };\n const handleItemClick = (ev) => {\n search();\n ev.preventDefault();\n };\n return /* @__PURE__ */ React.createElement(Box, { className: classes.searchRoot }, /* @__PURE__ */ React.createElement(\n SidebarItem,\n {\n icon: Icon,\n to: props.to,\n onClick: handleItemClick,\n disableHighlight: true\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n placeholder: \"Search\",\n value: input,\n onClick: handleInputClick,\n onChange: handleInput,\n onKeyDown: handleEnter,\n className: classes.searchContainer,\n InputProps: {\n disableUnderline: true,\n className: classes.searchField\n },\n inputProps: {\n className: classes.searchFieldHTMLInput\n }\n }\n )\n ));\n}\nconst SidebarSpace = styled(\"div\")(\n {\n flex: 1\n },\n { name: \"BackstageSidebarSpace\" }\n);\nconst SidebarSpacer = styled(\"div\")(\n {\n height: 8\n },\n { name: \"BackstageSidebarSpacer\" }\n);\nconst SidebarDivider = styled(\"hr\")(\n ({ theme }) => ({\n height: 1,\n width: \"100%\",\n background: \"#383838\",\n border: \"none\",\n margin: theme.spacing(1.2, 0)\n }),\n { name: \"BackstageSidebarDivider\" }\n);\nconst styledScrollbar = (theme) => ({\n overflowY: \"auto\",\n \"&::-webkit-scrollbar\": {\n backgroundColor: theme.palette.background.default,\n width: \"5px\",\n borderRadius: \"5px\"\n },\n \"&::-webkit-scrollbar-thumb\": {\n backgroundColor: theme.palette.text.secondary,\n borderRadius: \"5px\"\n }\n});\nconst SidebarScrollWrapper = styled(\"div\")(({ theme }) => {\n const scrollbarStyles = styledScrollbar(theme);\n return {\n flex: \"0 1 auto\",\n overflowX: \"hidden\",\n width: \"100%\",\n // Display at least one item in the container\n // Question: Can this be a config/theme variable - if so, which? :/\n minHeight: \"48px\",\n overflowY: \"hidden\",\n \"@media (hover: none)\": scrollbarStyles,\n \"&:hover\": scrollbarStyles\n };\n});\nconst SidebarExpandButton = () => {\n const { sidebarConfig } = useContext(SidebarConfigContext);\n const classes = useMemoStyles(sidebarConfig);\n const { isOpen, setOpen } = useSidebarOpenState();\n const isSmallScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"md\"),\n { noSsr: true }\n );\n if (isSmallScreen) {\n return null;\n }\n const handleClick = () => {\n setOpen(!isOpen);\n };\n return /* @__PURE__ */ React.createElement(\n Button$1,\n {\n role: \"button\",\n onClick: handleClick,\n className: classes.expandButton,\n \"aria-label\": \"Expand Sidebar\",\n \"data-testid\": \"sidebar-expand-button\"\n },\n /* @__PURE__ */ React.createElement(Box, { className: classes.arrows }, isOpen ? /* @__PURE__ */ React.createElement(DoubleArrowLeft, null) : /* @__PURE__ */ React.createElement(DoubleArrowRight, null))\n );\n};\n\nconst useStyles$5 = makeStyles(\n (theme) => ({\n header: {\n gridArea: \"pageHeader\",\n padding: theme.spacing(3),\n width: \"100%\",\n boxShadow: theme.shadows[4],\n position: \"relative\",\n zIndex: 100,\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n backgroundImage: theme.page.backgroundImage,\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n [theme.breakpoints.down(\"sm\")]: {\n flexWrap: \"wrap\"\n }\n },\n leftItemsBox: {\n maxWidth: \"100%\",\n flexGrow: 1\n },\n rightItemsBox: {\n width: \"auto\",\n alignItems: \"center\"\n },\n title: {\n color: theme.page.fontColor,\n wordBreak: \"break-word\",\n fontSize: theme.typography.h3.fontSize,\n marginBottom: 0\n },\n subtitle: {\n color: theme.page.fontColor,\n opacity: 0.8,\n display: \"inline-block\",\n // prevents margin collapse of adjacent siblings\n marginTop: theme.spacing(1),\n maxWidth: \"75ch\"\n },\n type: {\n textTransform: \"uppercase\",\n fontSize: 11,\n opacity: 0.8,\n marginBottom: theme.spacing(1),\n color: theme.page.fontColor\n },\n breadcrumb: {\n color: theme.page.fontColor\n },\n breadcrumbType: {\n fontSize: \"inherit\",\n opacity: 0.7,\n marginRight: -theme.spacing(0.3),\n marginBottom: theme.spacing(0.3)\n },\n breadcrumbTitle: {\n fontSize: \"inherit\",\n marginLeft: -theme.spacing(0.3),\n marginBottom: theme.spacing(0.3)\n }\n }),\n { name: \"BackstageHeader\" }\n);\nconst TypeFragment = ({\n type,\n typeLink,\n classes,\n pageTitle\n}) => {\n if (!type) {\n return null;\n }\n if (!typeLink) {\n return /* @__PURE__ */ React.createElement(Typography, { className: classes.type }, type);\n }\n return /* @__PURE__ */ React.createElement(Breadcrumbs, { className: classes.breadcrumb }, /* @__PURE__ */ React.createElement(Link, { to: typeLink }, type), /* @__PURE__ */ React.createElement(Typography, null, pageTitle));\n};\nconst TitleFragment = ({ pageTitle, classes, tooltip }) => {\n const { contentRef } = useContent();\n const FinalTitle = /* @__PURE__ */ React.createElement(\n Typography,\n {\n ref: contentRef,\n tabIndex: -1,\n className: classes.title,\n variant: \"h1\"\n },\n pageTitle\n );\n if (!tooltip) {\n return FinalTitle;\n }\n return /* @__PURE__ */ React.createElement(Tooltip, { title: tooltip, placement: \"top-start\" }, FinalTitle);\n};\nconst SubtitleFragment = ({ classes, subtitle }) => {\n if (!subtitle) {\n return null;\n }\n if (typeof subtitle !== \"string\") {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, subtitle);\n }\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n className: classes.subtitle,\n variant: \"subtitle2\",\n component: \"span\"\n },\n subtitle\n );\n};\nfunction Header(props) {\n const {\n children,\n pageTitleOverride,\n style,\n subtitle,\n title,\n tooltip,\n type,\n typeLink\n } = props;\n const classes = useStyles$5();\n const configApi = useApi(configApiRef);\n const appTitle = configApi.getOptionalString(\"app.title\") || \"Backstage\";\n const documentTitle = pageTitleOverride || title;\n const pageTitle = title || pageTitleOverride;\n const titleTemplate = `${documentTitle} | %s | ${appTitle}`;\n const defaultTitle = `${documentTitle} | ${appTitle}`;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Helmet, { titleTemplate, defaultTitle }), /* @__PURE__ */ React.createElement(\"header\", { style, className: classes.header }, /* @__PURE__ */ React.createElement(Box, { className: classes.leftItemsBox }, /* @__PURE__ */ React.createElement(\n TypeFragment,\n {\n classes,\n type,\n typeLink,\n pageTitle\n }\n ), /* @__PURE__ */ React.createElement(\n TitleFragment,\n {\n classes,\n pageTitle,\n tooltip\n }\n ), /* @__PURE__ */ React.createElement(SubtitleFragment, { classes, subtitle })), /* @__PURE__ */ React.createElement(Grid, { container: true, className: classes.rightItemsBox, spacing: 4 }, children)));\n}\n\nconst ActionItem = ({\n label,\n secondaryLabel,\n icon,\n disabled = false,\n onClick\n}) => {\n return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement(\n ListItem,\n {\n \"data-testid\": \"header-action-item\",\n disabled,\n button: true,\n onClick: (event) => {\n if (onClick) {\n onClick(event);\n }\n }\n },\n icon && /* @__PURE__ */ React.createElement(ListItemIcon, null, icon),\n /* @__PURE__ */ React.createElement(ListItemText, { primary: label, secondary: secondaryLabel })\n ));\n};\nfunction HeaderActionMenu(props) {\n const {\n palette: {\n common: { white }\n }\n } = useTheme();\n const { actionItems } = props;\n const [open, setOpen] = React.useState(false);\n const anchorElRef = React.useRef(null);\n return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n onClick: () => setOpen(true),\n \"data-testid\": \"header-action-menu\",\n ref: anchorElRef,\n style: {\n color: white,\n height: 56,\n width: 56,\n marginRight: -4,\n padding: 0\n }\n },\n /* @__PURE__ */ React.createElement(MoreVert, null)\n ), /* @__PURE__ */ React.createElement(\n Popover,\n {\n open,\n anchorEl: anchorElRef.current,\n anchorOrigin: { horizontal: \"right\", vertical: \"bottom\" },\n transformOrigin: { horizontal: \"right\", vertical: \"top\" },\n onClose: () => setOpen(false)\n },\n /* @__PURE__ */ React.createElement(List, null, actionItems.map((actionItem, i) => {\n return /* @__PURE__ */ React.createElement(ActionItem, { key: `header-action-menu-${i}`, ...actionItem });\n }))\n ));\n}\n\nconst useStyles$4 = makeStyles(\n (theme) => ({\n root: {\n textAlign: \"left\"\n },\n label: {\n color: theme.page.fontColor,\n fontWeight: theme.typography.fontWeightBold,\n letterSpacing: 0,\n fontSize: theme.typography.fontSize,\n marginBottom: theme.spacing(1) / 2,\n lineHeight: 1\n },\n value: {\n color: alpha(theme.page.fontColor, 0.8),\n fontSize: theme.typography.fontSize,\n lineHeight: 1\n }\n }),\n { name: \"BackstageHeaderLabel\" }\n);\nconst HeaderLabelContent = ({\n value,\n className,\n typographyRootComponent\n}) => {\n return /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: typographyRootComponent != null ? typographyRootComponent : typeof value === \"string\" ? \"p\" : \"span\",\n className\n },\n value\n );\n};\nfunction HeaderLabel(props) {\n const { label, value, url, contentTypograpyRootComponent } = props;\n const classes = useStyles$4();\n const content = /* @__PURE__ */ React.createElement(\n HeaderLabelContent,\n {\n className: classes.value,\n value: value || \"\",\n typographyRootComponent: contentTypograpyRootComponent\n }\n );\n return /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(Typography, { component: \"span\", className: classes.root }, /* @__PURE__ */ React.createElement(Typography, { className: classes.label }, label), url ? /* @__PURE__ */ React.createElement(Link, { to: url }, content) : content));\n}\n\nconst styles$1 = (theme) => createStyles({\n root: {\n color: theme.palette.common.white,\n padding: theme.spacing(2, 2, 3),\n backgroundImage: theme.getPageTheme({ themeId: \"card\" }).backgroundImage,\n backgroundPosition: 0,\n backgroundSize: \"inherit\"\n }\n});\nconst useStyles$3 = makeStyles(styles$1, { name: \"BackstageItemCardHeader\" });\nfunction ItemCardHeader(props) {\n const { title, subtitle, children } = props;\n const classes = useStyles$3(props);\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root }, subtitle && /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle2\", component: \"h3\" }, subtitle), title && /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\", component: \"h4\" }, title), children);\n}\n\nfunction ItemCard(props) {\n const { description, tags, title, type, subtitle, label, onClick, href } = props;\n return /* @__PURE__ */ React.createElement(Card, null, /* @__PURE__ */ React.createElement(CardMedia, null, /* @__PURE__ */ React.createElement(ItemCardHeader, { title, subtitle: subtitle || type })), /* @__PURE__ */ React.createElement(CardContent, null, (tags == null ? void 0 : tags.length) ? /* @__PURE__ */ React.createElement(Box, null, tags.map((tag, i) => /* @__PURE__ */ React.createElement(Chip, { size: \"small\", label: tag, key: i }))) : null, description), /* @__PURE__ */ React.createElement(CardActions, null, !href && /* @__PURE__ */ React.createElement(LinkButton, { to: \"#\", onClick, color: \"primary\" }, label), href && /* @__PURE__ */ React.createElement(LinkButton, { to: href, color: \"primary\" }, label)));\n}\n\nconst styles = (theme) => createStyles({\n root: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(22em, 1fr))\",\n gridAutoRows: \"1fr\",\n gridGap: theme.spacing(2)\n }\n});\nconst useStyles$2 = makeStyles(styles, { name: \"BackstageItemCardGrid\" });\nfunction ItemCardGrid(props) {\n const { children, ...otherProps } = props;\n const classes = useStyles$2(otherProps);\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root, ...otherProps }, children);\n}\n\nconst useStyles$1 = makeStyles(\n (theme) => ({\n root: {\n display: \"grid\",\n gridTemplateAreas: \"'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'\",\n gridTemplateRows: \"max-content auto 1fr\",\n gridTemplateColumns: \"auto 1fr auto\",\n overflowY: \"auto\",\n height: \"100vh\",\n [theme.breakpoints.down(\"xs\")]: {\n height: \"100%\"\n },\n \"@media print\": {\n display: \"block\",\n height: \"auto\",\n overflowY: \"inherit\"\n }\n }\n }),\n { name: \"BackstagePage\" }\n);\nfunction Page(props) {\n const { themeId, children } = props;\n const classes = useStyles$1();\n return /* @__PURE__ */ React.createElement(\n ThemeProvider,\n {\n theme: (baseTheme) => ({\n ...baseTheme,\n page: baseTheme.getPageTheme({ themeId })\n })\n },\n /* @__PURE__ */ React.createElement(\"main\", { className: classes.root }, children)\n );\n}\n\nfunction PageWithHeader(props) {\n const { themeId, children, ...restProps } = props;\n return /* @__PURE__ */ React.createElement(Page, { themeId }, /* @__PURE__ */ React.createElement(Header, { ...restProps }), children);\n}\n\nconst proxiedSessionSchema = z.object({\n providerInfo: z.object({}).catchall(z.unknown()).optional(),\n profile: z.object({\n email: z.string().optional(),\n displayName: z.string().optional(),\n picture: z.string().optional()\n }),\n backstageIdentity: z.object({\n token: z.string(),\n identity: z.object({\n type: z.literal(\"user\"),\n userEntityRef: z.string(),\n ownershipEntityRefs: z.array(z.string())\n })\n })\n});\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst DEFAULTS = {\n // The amount of time between token refreshes, if we fail to get an actual\n // value out of the exp claim\n defaultTokenExpiryMillis: 5 * 60 * 1e3,\n // The amount of time before the actual expiry of the Backstage token, that we\n // shall start trying to get a new one\n tokenExpiryMarginMillis: 5 * 60 * 1e3\n};\nfunction tokenToExpiry(jwtToken) {\n const fallback = new Date(Date.now() + DEFAULTS.defaultTokenExpiryMillis);\n if (!jwtToken) {\n return fallback;\n }\n const [_header, rawPayload, _signature] = jwtToken.split(\".\");\n const payload = JSON.parse(window.atob(rawPayload));\n if (typeof payload.exp !== \"number\") {\n return fallback;\n }\n return new Date(payload.exp * 1e3 - DEFAULTS.tokenExpiryMarginMillis);\n}\nclass ProxiedSignInIdentity {\n constructor(options) {\n __publicField$1(this, \"options\");\n __publicField$1(this, \"abortController\");\n __publicField$1(this, \"state\");\n this.options = options;\n this.abortController = new AbortController();\n this.state = { type: \"empty\" };\n }\n async start() {\n await this.getSessionAsync();\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getUserId} */\n getUserId() {\n const { backstageIdentity } = this.getSessionSync();\n const ref = backstageIdentity.identity.userEntityRef;\n const match = /^([^:/]+:)?([^:/]+\\/)?([^:/]+)$/.exec(ref);\n if (!match) {\n throw new TypeError(`Invalid user entity reference \"${ref}\"`);\n }\n return match[3];\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getIdToken} */\n async getIdToken() {\n const session = await this.getSessionAsync();\n return session.backstageIdentity.token;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getProfile} */\n getProfile() {\n const session = this.getSessionSync();\n return session.profile;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getProfileInfo} */\n async getProfileInfo() {\n const session = await this.getSessionAsync();\n return session.profile;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getBackstageIdentity} */\n async getBackstageIdentity() {\n const session = await this.getSessionAsync();\n return session.backstageIdentity.identity;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getCredentials} */\n async getCredentials() {\n const session = await this.getSessionAsync();\n return {\n token: session.backstageIdentity.token\n };\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.signOut} */\n async signOut() {\n this.abortController.abort();\n }\n getSessionSync() {\n if (this.state.type === \"active\") {\n return this.state.session;\n } else if (this.state.type === \"fetching\" && this.state.previous) {\n return this.state.previous;\n }\n throw new Error(\"No session available. Try reloading your browser page.\");\n }\n async getSessionAsync() {\n if (this.state.type === \"fetching\") {\n return this.state.promise;\n } else if (this.state.type === \"active\" && /* @__PURE__ */ new Date() < this.state.expiresAt) {\n return this.state.session;\n }\n const previous = this.state.type === \"active\" ? this.state.session : void 0;\n const promise = this.fetchSession().then(\n (session) => {\n this.state = {\n type: \"active\",\n session,\n expiresAt: tokenToExpiry(session.backstageIdentity.token)\n };\n return session;\n },\n (error) => {\n this.state = {\n type: \"failed\",\n error\n };\n throw error;\n }\n );\n this.state = {\n type: \"fetching\",\n promise,\n previous\n };\n return promise;\n }\n async fetchSession() {\n const baseUrl = await this.options.discoveryApi.getBaseUrl(\"auth\");\n const headers = typeof this.options.headers === \"function\" ? await this.options.headers() : this.options.headers;\n const mergedHeaders = new Headers(headers);\n mergedHeaders.set(\"X-Requested-With\", \"XMLHttpRequest\");\n const response = await fetch(\n `${baseUrl}/${this.options.provider}/refresh`,\n {\n signal: this.abortController.signal,\n headers: mergedHeaders,\n credentials: \"include\"\n }\n );\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n return proxiedSessionSchema.parse(await response.json());\n }\n}\n\nconst ProxiedSignInPage = (props) => {\n const discoveryApi = useApi(discoveryApiRef);\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const [{ status, error }, { execute }] = useAsync(async () => {\n const identity = new ProxiedSignInIdentity({\n provider: props.provider,\n discoveryApi,\n headers: props.headers\n });\n await identity.start();\n props.onSignInSuccess(identity);\n });\n useMountEffect(execute);\n if (status === \"loading\") {\n return /* @__PURE__ */ React.createElement(Progress, null);\n } else if (error) {\n return /* @__PURE__ */ React.createElement(ErrorPanel, { title: t(\"proxiedSignInPage.title\"), error });\n }\n return null;\n};\n\nclass GuestUserIdentity {\n getUserId() {\n return \"guest\";\n }\n async getIdToken() {\n return void 0;\n }\n getProfile() {\n return {\n email: \"guest@example.com\",\n displayName: \"Guest\"\n };\n }\n async getProfileInfo() {\n return {\n email: \"guest@example.com\",\n displayName: \"Guest\"\n };\n }\n async getBackstageIdentity() {\n const userEntityRef = `user:default/guest`;\n return {\n type: \"user\",\n userEntityRef,\n ownershipEntityRefs: [userEntityRef]\n };\n }\n async getCredentials() {\n return {};\n }\n async signOut() {\n }\n}\n\nfunction parseJwtPayload(token) {\n const [_header, payload, _signature] = token.split(\".\");\n return JSON.parse(window.atob(payload));\n}\nclass LegacyUserIdentity {\n constructor(result) {\n this.result = result;\n }\n getUserId() {\n return this.result.userId;\n }\n static fromResult(result) {\n return new LegacyUserIdentity(result);\n }\n async getIdToken() {\n var _a, _b;\n return (_b = (_a = this.result).getIdToken) == null ? void 0 : _b.call(_a);\n }\n getProfile() {\n return this.result.profile;\n }\n async getProfileInfo() {\n return this.result.profile;\n }\n async getBackstageIdentity() {\n const token = await this.getIdToken();\n if (!token) {\n const userEntityRef = `user:default/${this.getUserId()}`;\n return {\n type: \"user\",\n userEntityRef,\n ownershipEntityRefs: [userEntityRef]\n };\n }\n const { sub, ent } = parseJwtPayload(token);\n return {\n type: \"user\",\n userEntityRef: sub,\n ownershipEntityRefs: ent != null ? ent : []\n };\n }\n async getCredentials() {\n var _a, _b;\n const token = await ((_b = (_a = this.result).getIdToken) == null ? void 0 : _b.call(_a));\n return { token };\n }\n async signOut() {\n var _a, _b;\n return (_b = (_a = this.result).signOut) == null ? void 0 : _b.call(_a);\n }\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass UserIdentity {\n constructor(identity, authApi, profile) {\n this.identity = identity;\n this.authApi = authApi;\n this.profile = profile;\n __publicField(this, \"profilePromise\");\n }\n /**\n * Creates a new IdentityApi that acts as a Guest User.\n *\n * @public\n */\n static createGuest() {\n return new GuestUserIdentity();\n }\n /**\n * Creates a new IdentityApi using a legacy SignInResult object.\n *\n * @public\n */\n static fromLegacy(result) {\n return LegacyUserIdentity.fromResult(result);\n }\n /**\n * Creates a new IdentityApi implementation using a user identity\n * and an auth API that will be used to request backstage tokens.\n *\n * @public\n */\n static create(options) {\n return new UserIdentity(options.identity, options.authApi, options.profile);\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getUserId} */\n getUserId() {\n const ref = this.identity.userEntityRef;\n const match = /^([^:/]+:)?([^:/]+\\/)?([^:/]+)$/.exec(ref);\n if (!match) {\n throw new TypeError(`Invalid user entity reference \"${ref}\"`);\n }\n return match[3];\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getIdToken} */\n async getIdToken() {\n const identity = await this.authApi.getBackstageIdentity();\n return identity.token;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getProfile} */\n getProfile() {\n if (!this.profile) {\n throw new Error(\n \"The identity API does not implement synchronous profile fetching, use getProfileInfo() instead\"\n );\n }\n return this.profile;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getProfileInfo} */\n async getProfileInfo() {\n if (this.profilePromise) {\n return await this.profilePromise;\n }\n try {\n this.profilePromise = this.authApi.getProfile();\n return await this.profilePromise;\n } catch (ex) {\n this.profilePromise = void 0;\n throw ex;\n }\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getBackstageIdentity} */\n async getBackstageIdentity() {\n return this.identity;\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.getCredentials} */\n async getCredentials() {\n const identity = await this.authApi.getBackstageIdentity();\n return { token: identity.token };\n }\n /** {@inheritdoc @backstage/core-plugin-api#IdentityApi.signOut} */\n async signOut() {\n return this.authApi.signOut();\n }\n}\n\nconst useStyles = makeStyles(\n {\n container: {\n padding: 0,\n listStyle: \"none\"\n },\n item: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n maxWidth: \"400px\",\n margin: 0,\n padding: 0\n }\n },\n { name: \"BackstageSignInPage\" }\n);\nconst GridItem = ({ children }) => {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(Grid, { component: \"li\", item: true, classes }, children);\n};\n\nconst Component$2 = ({\n config,\n onSignInStarted,\n onSignInSuccess,\n onSignInFailure\n}) => {\n const { apiRef, title, message } = config;\n const authApi = useApi(apiRef);\n const errorApi = useApi(errorApiRef);\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const handleLogin = async () => {\n try {\n onSignInStarted();\n const identityResponse = await authApi.getBackstageIdentity({\n instantPopup: true\n });\n if (!identityResponse) {\n onSignInFailure();\n throw new Error(\n `The ${title} provider is not configured to support sign-in`\n );\n }\n const profile = await authApi.getProfile();\n onSignInSuccess(\n UserIdentity.create({\n identity: identityResponse.identity,\n profile,\n authApi\n })\n );\n } catch (error) {\n onSignInFailure();\n errorApi.post(new ForwardedError(t(\"signIn.loginFailed\"), error));\n }\n };\n return /* @__PURE__ */ React.createElement(GridItem, null, /* @__PURE__ */ React.createElement(\n InfoCard,\n {\n variant: \"fullHeight\",\n title,\n actions: /* @__PURE__ */ React.createElement(Button$1, { color: \"primary\", variant: \"outlined\", onClick: handleLogin }, t(\"signIn.title\"))\n },\n /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, message)\n ));\n};\nconst loader$2 = async (apis, apiRef) => {\n const authApi = apis.get(apiRef);\n const identityResponse = await authApi.getBackstageIdentity({\n optional: true\n });\n if (!identityResponse) {\n return void 0;\n }\n const profile = await authApi.getProfile();\n return UserIdentity.create({\n identity: identityResponse.identity,\n profile,\n authApi\n });\n};\nconst commonProvider = { Component: Component$2, loader: loader$2 };\n\nconst getIdentity = async (identity) => {\n try {\n const identityResponse = await identity.getBackstageIdentity();\n return identityResponse;\n } catch (error) {\n if (error.name === \"ResponseError\" && error.cause.name === \"NotFoundError\") {\n return void 0;\n }\n throw error;\n }\n};\nconst Component$1 = ({\n onSignInStarted,\n onSignInSuccess,\n onSignInFailure\n}) => {\n const discoveryApi = useApi(discoveryApiRef);\n const [_, setUseLegacyGuestToken] = useLocalStorage(\"enableLegacyGuestToken\");\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const handle = async () => {\n onSignInStarted();\n const identity = new ProxiedSignInIdentity({\n provider: \"guest\",\n discoveryApi\n });\n const identityResponse = await getIdentity(identity).catch((error) => {\n console.warn(`Failed to sign in as a guest, ${error}`);\n return void 0;\n });\n if (!identityResponse) {\n const useLegacyGuestTokenResponse = confirm(\n \"Failed to sign in as a guest using the auth backend. Do you want to fallback to the legacy guest token?\"\n );\n if (useLegacyGuestTokenResponse) {\n setUseLegacyGuestToken(true);\n onSignInSuccess(new GuestUserIdentity());\n return;\n }\n onSignInFailure();\n throw new Error(\n `You cannot sign in as a guest, you must either enable the legacy guest token or configure the auth backend to support guest sign in.`\n );\n }\n onSignInSuccess(identity);\n };\n return /* @__PURE__ */ React.createElement(GridItem, null, /* @__PURE__ */ React.createElement(\n InfoCard,\n {\n title: \"Guest\",\n variant: \"fullHeight\",\n actions: /* @__PURE__ */ React.createElement(Button$1, { color: \"primary\", variant: \"outlined\", onClick: handle }, t(\"signIn.guestProvider.enter\"))\n },\n /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\", style: { whiteSpace: \"pre-line\" } }, t(\"signIn.guestProvider.subtitle\"))\n ));\n};\nconst loader$1 = async (apis) => {\n const useLegacyGuestToken = localStorage.getItem(\"enableLegacyGuestToken\") === \"true\";\n const identity = new ProxiedSignInIdentity({\n provider: \"guest\",\n discoveryApi: apis.get(discoveryApiRef)\n });\n const identityResponse = await getIdentity(identity).catch((error) => {\n console.warn(`Failed to sign in as a guest, ${error}`);\n return void 0;\n });\n if (!identityResponse && !useLegacyGuestToken) {\n return void 0;\n } else if (identityResponse && useLegacyGuestToken) {\n const switchToNewGuestToken = confirm(\n \"You are currently using the legacy guest token, but you have the new guest backend module installed. Do you want to use the new module?\"\n );\n if (switchToNewGuestToken) {\n localStorage.removeItem(\"enableLegacyGuestToken\");\n } else {\n return new GuestUserIdentity();\n }\n } else if (useLegacyGuestToken) {\n return new GuestUserIdentity();\n }\n return identity;\n};\nconst guestProvider = { Component: Component$1, loader: loader$1 };\n\nconst ID_TOKEN_REGEX = /^[a-z0-9_\\-]+\\.[a-z0-9_\\-]+\\.[a-z0-9_\\-]+$/i;\nconst useFormStyles = makeStyles(\n (theme) => ({\n form: {\n display: \"flex\",\n flexFlow: \"column nowrap\"\n },\n button: {\n alignSelf: \"center\",\n marginTop: theme.spacing(2)\n },\n subTitle: {\n whiteSpace: \"pre-line\"\n }\n }),\n { name: \"BackstageCustomProvider\" }\n);\nconst asInputRef = (renderResult) => {\n const { ref, ...rest } = renderResult;\n return {\n inputRef: ref,\n ...rest\n };\n};\nconst Component = ({ onSignInStarted, onSignInSuccess }) => {\n const classes = useFormStyles();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const { register, handleSubmit, formState } = useForm({\n mode: \"onChange\"\n });\n const { errors } = formState;\n const handleResult = ({ userId, idToken }) => {\n onSignInStarted();\n onSignInSuccess(\n UserIdentity.fromLegacy({\n userId,\n getIdToken: idToken !== void 0 ? async () => idToken : void 0,\n profile: {\n email: `${userId}@example.com`\n }\n })\n );\n };\n return /* @__PURE__ */ React.createElement(GridItem, null, /* @__PURE__ */ React.createElement(InfoCard, { title: t(\"signIn.customProvider.title\"), variant: \"fullHeight\" }, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\", className: classes.subTitle }, t(\"signIn.customProvider.subtitle\")), /* @__PURE__ */ React.createElement(\"form\", { className: classes.form, onSubmit: handleSubmit(handleResult) }, /* @__PURE__ */ React.createElement(FormControl, null, /* @__PURE__ */ React.createElement(\n TextField,\n {\n ...asInputRef(register(\"userId\", { required: true })),\n label: t(\"signIn.customProvider.userId\"),\n margin: \"normal\",\n error: Boolean(errors.userId)\n }\n ), errors.userId && /* @__PURE__ */ React.createElement(FormHelperText, { error: true }, errors.userId.message)), /* @__PURE__ */ React.createElement(FormControl, null, /* @__PURE__ */ React.createElement(\n TextField,\n {\n ...asInputRef(\n register(\"idToken\", {\n required: false,\n validate: (token) => !token || ID_TOKEN_REGEX.test(token) || t(\"signIn.customProvider.tokenInvalid\")\n })\n ),\n label: t(\"signIn.customProvider.idToken\"),\n margin: \"normal\",\n autoComplete: \"off\",\n error: Boolean(errors.idToken)\n }\n ), errors.idToken && /* @__PURE__ */ React.createElement(FormHelperText, { error: true }, errors.idToken.message)), /* @__PURE__ */ React.createElement(\n Button$1,\n {\n type: \"submit\",\n color: \"primary\",\n variant: \"outlined\",\n className: classes.button,\n disabled: !(formState == null ? void 0 : formState.isDirty) || !isEmpty(errors)\n },\n t(\"signIn.customProvider.continue\")\n ))));\n};\nconst loader = async () => void 0;\nconst customProvider = { Component, loader };\n\nclass IdentityApiSignOutProxy {\n constructor(config) {\n this.config = config;\n }\n static from(config) {\n return new IdentityApiSignOutProxy(config);\n }\n getUserId() {\n if (!this.config.identityApi.getUserId) {\n throw new Error(`SignOutProxy IdentityApi.getUserId is not implemented`);\n }\n return this.config.identityApi.getUserId();\n }\n getIdToken() {\n if (!this.config.identityApi.getIdToken) {\n throw new Error(`SignOutProxy IdentityApi.getIdToken is not implemented`);\n }\n return this.config.identityApi.getIdToken();\n }\n getProfile() {\n if (!this.config.identityApi.getProfile) {\n throw new Error(`SignOutProxy IdentityApi.getProfile is not implemented`);\n }\n return this.config.identityApi.getProfile();\n }\n getProfileInfo() {\n return this.config.identityApi.getProfileInfo();\n }\n getBackstageIdentity() {\n return this.config.identityApi.getBackstageIdentity();\n }\n getCredentials() {\n return this.config.identityApi.getCredentials();\n }\n signOut() {\n return this.config.signOut();\n }\n}\n\nconst PROVIDER_STORAGE_KEY = \"@backstage/core:SignInPage:provider\";\nconst signInProviders = {\n guest: guestProvider,\n custom: customProvider,\n common: commonProvider\n};\nfunction validateIDs(id, providers) {\n if (id in providers)\n throw new Error(\n `\"${id}\" ID is duplicated. IDs of identity providers have to be unique.`\n );\n}\nfunction getSignInProviders(identityProviders) {\n const providers = identityProviders.reduce(\n (acc, config) => {\n if (typeof config === \"string\") {\n validateIDs(config, acc);\n acc[config] = { components: signInProviders[config], id: config };\n return acc;\n }\n const { id } = config;\n validateIDs(id, acc);\n acc[id] = { components: signInProviders.common, id, config };\n return acc;\n },\n {}\n );\n return providers;\n}\nconst useSignInProviders = (providers, onSignInSuccess) => {\n const errorApi = useApi(errorApiRef);\n const apiHolder = useApiHolder();\n const [loading, setLoading] = useState(true);\n const handleWrappedResult = useCallback(\n (identityApi) => {\n onSignInSuccess(\n IdentityApiSignOutProxy.from({\n identityApi,\n signOut: async () => {\n var _a;\n localStorage.removeItem(PROVIDER_STORAGE_KEY);\n await ((_a = identityApi.signOut) == null ? void 0 : _a.call(identityApi));\n }\n })\n );\n },\n [onSignInSuccess]\n );\n useLayoutEffect(() => {\n var _a;\n if (!loading) {\n return void 0;\n }\n const selectedProviderId = localStorage.getItem(\n PROVIDER_STORAGE_KEY\n );\n if (selectedProviderId === null) {\n setLoading(false);\n return void 0;\n }\n const provider = providers[selectedProviderId];\n if (!provider) {\n setLoading(false);\n return void 0;\n }\n let didCancel = false;\n provider.components.loader(apiHolder, (_a = provider.config) == null ? void 0 : _a.apiRef).then((result) => {\n if (didCancel) {\n localStorage.removeItem(PROVIDER_STORAGE_KEY);\n return;\n }\n if (result) {\n handleWrappedResult(result);\n } else {\n setLoading(false);\n }\n }).catch((error) => {\n localStorage.removeItem(PROVIDER_STORAGE_KEY);\n if (didCancel) {\n return;\n }\n errorApi.post(error);\n setLoading(false);\n });\n return () => {\n didCancel = true;\n };\n }, [\n loading,\n errorApi,\n onSignInSuccess,\n apiHolder,\n providers,\n handleWrappedResult\n ]);\n const elements = useMemo(\n () => Object.keys(providers).map((key) => {\n const provider = providers[key];\n const { Component } = provider.components;\n const handleSignInSuccess = (result) => {\n handleWrappedResult(result);\n };\n const handleSignInStarted = () => {\n var _a;\n localStorage.setItem(\n PROVIDER_STORAGE_KEY,\n ((_a = provider == null ? void 0 : provider.config) == null ? void 0 : _a.id) || provider.id\n );\n };\n const handleSignInFailure = () => {\n localStorage.removeItem(PROVIDER_STORAGE_KEY);\n };\n return /* @__PURE__ */ React.createElement(\n Component,\n {\n key: provider.id,\n config: provider.config,\n onSignInStarted: handleSignInStarted,\n onSignInSuccess: handleSignInSuccess,\n onSignInFailure: handleSignInFailure\n }\n );\n }),\n [providers, handleWrappedResult]\n );\n return [loading, elements];\n};\n\nconst MultiSignInPage = ({\n onSignInSuccess,\n providers = [],\n title,\n align = \"left\"\n}) => {\n const configApi = useApi(configApiRef);\n const classes = useStyles();\n const signInProviders = getSignInProviders(providers);\n const [loading, providerElements] = useSignInProviders(\n signInProviders,\n onSignInSuccess\n );\n if (loading) {\n return /* @__PURE__ */ React.createElement(Progress, null);\n }\n return /* @__PURE__ */ React.createElement(Page, { themeId: \"home\" }, /* @__PURE__ */ React.createElement(Header, { title: configApi.getString(\"app.title\") }), /* @__PURE__ */ React.createElement(Content, null, title && /* @__PURE__ */ React.createElement(ContentHeader, { title, textAlign: align }), /* @__PURE__ */ React.createElement(\n Grid,\n {\n container: true,\n justifyContent: align === \"center\" ? align : \"flex-start\",\n spacing: 2,\n component: \"ul\",\n classes\n },\n providerElements\n )));\n};\nconst SingleSignInPage = ({\n provider,\n auto,\n onSignInSuccess\n}) => {\n const classes = useStyles();\n const authApi = useApi(provider.apiRef);\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const [error, setError] = useState();\n const [showLoginPage, setShowLoginPage] = useState(false);\n const login = async ({ checkExisting, showPopup }) => {\n try {\n let identityResponse;\n if (checkExisting) {\n identityResponse = await authApi.getBackstageIdentity({\n optional: true\n });\n }\n if (!identityResponse && (showPopup || auto)) {\n setShowLoginPage(true);\n identityResponse = await authApi.getBackstageIdentity({\n instantPopup: true\n });\n if (!identityResponse) {\n throw new Error(\n `The ${provider.title} provider is not configured to support sign-in`\n );\n }\n }\n if (!identityResponse) {\n setShowLoginPage(true);\n return;\n }\n const profile = await authApi.getProfile();\n onSignInSuccess(\n UserIdentity.create({\n identity: identityResponse.identity,\n authApi,\n profile\n })\n );\n } catch (err) {\n setError(err);\n setShowLoginPage(true);\n }\n };\n useMountEffect(() => login({ checkExisting: true }));\n return showLoginPage ? /* @__PURE__ */ React.createElement(Page, { themeId: \"home\" }, /* @__PURE__ */ React.createElement(Header, { title: configApi.getString(\"app.title\") }), /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(\n Grid,\n {\n container: true,\n justifyContent: \"center\",\n spacing: 2,\n component: \"ul\",\n classes\n },\n /* @__PURE__ */ React.createElement(GridItem, null, /* @__PURE__ */ React.createElement(\n InfoCard,\n {\n variant: \"fullHeight\",\n title: provider.title,\n actions: /* @__PURE__ */ React.createElement(\n Button$1,\n {\n color: \"primary\",\n variant: \"outlined\",\n onClick: () => {\n login({ showPopup: true });\n }\n },\n t(\"signIn.title\")\n )\n },\n /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, provider.message),\n error && error.name !== \"PopupRejectedError\" && /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\", color: \"error\" }, error.message)\n ))\n ))) : /* @__PURE__ */ React.createElement(Progress, null);\n};\nfunction SignInPage(props) {\n if (\"provider\" in props) {\n return /* @__PURE__ */ React.createElement(SingleSignInPage, { ...props });\n }\n return /* @__PURE__ */ React.createElement(MultiSignInPage, { ...props });\n}\n\nconst useTabsStyles = makeStyles(\n (theme) => ({\n root: {\n padding: theme.spacing(0, 2, 0, 2.5),\n minHeight: theme.spacing(3)\n },\n indicator: {\n backgroundColor: theme.palette.info.main,\n height: theme.spacing(0.3)\n }\n }),\n { name: \"BackstageTabbedCard\" }\n);\nconst BoldHeader = withStyles(\n (theme) => ({\n root: { padding: theme.spacing(2, 2, 2, 2.5), display: \"inline-block\" },\n title: { fontWeight: 700 },\n subheader: { paddingTop: theme.spacing(1) }\n }),\n { name: \"BackstageTabbedCardBoldHeader\" }\n)(CardHeader);\nfunction TabbedCard(props) {\n const {\n slackChannel,\n errorBoundaryProps,\n children,\n title,\n deepLink,\n value,\n onChange\n } = props;\n const tabsClasses = useTabsStyles();\n const [selectedIndex, selectIndex] = useState(0);\n const handleChange = onChange ? onChange : (_ev, newSelectedIndex) => selectIndex(newSelectedIndex);\n let selectedTabContent;\n if (!value) {\n React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && index === selectedIndex) {\n selectedTabContent = child == null ? void 0 : child.props.children;\n }\n });\n } else {\n React.Children.map(children, (child) => {\n if (React.isValidElement(\n child\n ) && (child == null ? void 0 : child.props.value) === value) {\n selectedTabContent = child == null ? void 0 : child.props.children;\n }\n });\n }\n const errProps = errorBoundaryProps || (slackChannel ? { slackChannel } : {});\n return /* @__PURE__ */ React.createElement(Card, null, /* @__PURE__ */ React.createElement(ErrorBoundary, { ...errProps }, title && /* @__PURE__ */ React.createElement(BoldHeader, { title }), /* @__PURE__ */ React.createElement(\n Tabs,\n {\n classes: tabsClasses,\n value: value || selectedIndex,\n onChange: handleChange\n },\n children\n ), /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(CardContent, null, selectedTabContent), deepLink && /* @__PURE__ */ React.createElement(BottomLink, { ...deepLink })));\n}\nconst useCardTabStyles = makeStyles(\n (theme) => ({\n root: {\n minWidth: theme.spacing(6),\n minHeight: theme.spacing(3),\n margin: theme.spacing(0, 2, 0, 0),\n padding: theme.spacing(0.5, 0, 0.5, 0),\n textTransform: \"none\",\n \"&:hover\": {\n opacity: 1,\n backgroundColor: \"transparent\",\n color: theme.palette.text.primary\n }\n },\n selected: {\n fontWeight: theme.typography.fontWeightBold\n }\n }),\n { name: \"BackstageCardTab\" }\n);\nfunction CardTab(props) {\n const { children, ...restProps } = props;\n const classes = useCardTabStyles();\n return /* @__PURE__ */ React.createElement(TabUI, { disableRipple: true, classes, ...restProps });\n}\n\nexport { AlertDisplay, AppIcon, AutoLogout, Avatar, BottomLink, Breadcrumbs, BrokenImageIcon, Button, CardTab, CatalogIcon, ChatIcon, CodeSnippet, Content, ContentHeader, CopyTextButton, CreateButton, DashboardIcon, DependencyGraph, DependencyGraphTypes, DismissableBanner, DocsIcon, EmailIcon, EmptyState, ErrorBoundary, ErrorPage, ErrorPanel, FeatureCalloutCircular, Gauge, GaugeCard, GitHubIcon, GroupIcon, Header, HeaderActionMenu, HeaderIconLinkRow, HeaderLabel, HeaderTabs, HelpIcon, HorizontalScrollGrid, IconLinkVertical, InfoCard, ItemCard, ItemCardGrid, ItemCardHeader, Lifecycle, LinearGauge, Link, LinkButton, LogViewer, MarkdownContent, MissingAnnotationEmptyState, MobileSidebar, OAuthRequestDialog, OverflowTooltip, Page, PageWithHeader, Progress, ProxiedSignInPage, ResponseErrorPanel, RoutedTabs, SIDEBAR_INTRO_LOCAL_STORAGE, SelectComponent as Select, Sidebar, LegacySidebarContext as SidebarContext, SidebarDivider, SidebarExpandButton, SidebarGroup, SidebarItem, SidebarOpenStateProvider, SidebarPage, LegacySidebarPinStateContext as SidebarPinStateContext, SidebarPinStateProvider, SidebarScrollWrapper, SidebarSearchField, SidebarSpace, SidebarSpacer, SidebarSubmenu, SidebarSubmenuItem, SignInPage, SimpleStepper, SimpleStepperStep, StatusAborted, StatusError, StatusOK, StatusPending, StatusRunning, StatusWarning, StructuredMetadataTable, SubvalueCell, SupportButton, TabbedCard, TabbedLayout, Table, TrendLine, UserIcon, UserIdentity, WarningIcon, WarningPanel, sidebarConfig, useContent, useQueryParamState, useSidebarOpenState, useSidebarPinState, useSupportConfig };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the âś“ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the âś“ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('âś“')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && leaf === '' ? [] : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('âś“')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","import { useState, useMemo, useCallback, useEffect, useRef } from 'react';\nimport { u as useApi, r as errorApiRef } from './esm/StorageApi-DgJQFdRp.esm.js';\nimport { createApiRef } from '@backstage/core-plugin-api';\nimport '@backstage/version-bridge';\nimport '@backstage/errors';\n\nfunction createTranslationMessages(options) {\n return {\n $$type: \"@backstage/TranslationMessages\",\n id: options.ref.id,\n full: Boolean(options.full),\n messages: options.messages\n };\n}\n\nfunction createTranslationResource(options) {\n return {\n $$type: \"@backstage/TranslationResource\",\n version: \"v1\",\n id: options.ref.id,\n resources: Object.entries(options.translations).map(\n ([language, loader]) => ({\n language,\n loader: () => loader().then((m) => {\n const value = m.default;\n return {\n messages: (value == null ? void 0 : value.$$type) === \"@backstage/TranslationMessages\" ? value.messages : value\n };\n })\n })\n )\n };\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar _id, _messages, _resources;\nfunction flattenMessages(nested) {\n const entries = new Array();\n function visit(obj, prefix) {\n for (const [key, value] of Object.entries(obj)) {\n if (typeof value === \"string\") {\n entries.push([prefix + key, value]);\n } else {\n visit(value, `${prefix}${key}.`);\n }\n }\n }\n visit(nested, \"\");\n return Object.fromEntries(entries);\n}\nclass TranslationRefImpl {\n constructor(options) {\n __privateAdd(this, _id, void 0);\n __privateAdd(this, _messages, void 0);\n __privateAdd(this, _resources, void 0);\n __publicField(this, \"$$type\", \"@backstage/TranslationRef\");\n __publicField(this, \"version\", \"v1\");\n __privateSet(this, _id, options.id);\n __privateSet(this, _messages, flattenMessages(\n options.messages\n ));\n }\n get id() {\n return __privateGet(this, _id);\n }\n get T() {\n throw new Error(\"Not implemented\");\n }\n getDefaultMessages() {\n return __privateGet(this, _messages);\n }\n setDefaultResource(resources) {\n __privateSet(this, _resources, resources);\n }\n getDefaultResource() {\n return __privateGet(this, _resources);\n }\n toString() {\n return `TranslationRef{id=${this.id}}`;\n }\n}\n_id = new WeakMap();\n_messages = new WeakMap();\n_resources = new WeakMap();\nfunction createTranslationRef(config) {\n const ref = new TranslationRefImpl(config);\n if (config.translations) {\n ref.setDefaultResource(\n createTranslationResource({\n ref,\n translations: config.translations\n })\n );\n }\n return ref;\n}\n\nconst translationApiRef = createApiRef({\n id: \"core.translation\"\n});\n\nconst appLanguageApiRef = createApiRef({\n id: \"core.applanguage\"\n});\n\nconst loggedRefs = /* @__PURE__ */ new WeakSet();\nconst useTranslationRef = (translationRef) => {\n const errorApi = useApi(errorApiRef);\n const translationApi = useApi(translationApiRef);\n const [snapshot, setSnapshot] = useState(\n () => translationApi.getTranslation(translationRef)\n );\n const observable = useMemo(\n () => translationApi.translation$(translationRef),\n [translationApi, translationRef]\n );\n const onError = useCallback(\n (error) => {\n if (!loggedRefs.has(translationRef)) {\n const errMsg = `Failed to load translation resource '${translationRef.id}'; caused by ${error}`;\n console.error(errMsg);\n errorApi.post(new Error(errMsg));\n loggedRefs.add(translationRef);\n }\n },\n [errorApi, translationRef]\n );\n useEffect(() => {\n const subscription = observable.subscribe({\n next(next) {\n if (next.ready) {\n setSnapshot(next);\n }\n },\n error(error) {\n onError(error);\n }\n });\n return () => {\n subscription.unsubscribe();\n };\n }, [observable, onError]);\n const initialRenderRef = useRef(true);\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false;\n } else {\n setSnapshot(translationApi.getTranslation(translationRef));\n }\n }, [translationApi, translationRef]);\n if (!snapshot.ready) {\n throw new Promise((resolve) => {\n const subscription = observable.subscribe({\n next(next) {\n if (next.ready) {\n subscription.unsubscribe();\n resolve();\n }\n },\n error(error) {\n subscription.unsubscribe();\n onError(error);\n resolve();\n }\n });\n });\n }\n return { t: snapshot.t };\n};\n\nexport { appLanguageApiRef, createTranslationMessages, createTranslationRef, createTranslationResource, translationApiRef, useTranslationRef };\n//# sourceMappingURL=alpha.esm.js.map\n","import React from 'react';\nimport { useVersionedContext } from '@backstage/version-bridge';\nimport { NotImplementedError } from '@backstage/errors';\n\nfunction useApiHolder() {\n const versionedHolder = useVersionedContext(\"api-context\");\n if (!versionedHolder) {\n throw new NotImplementedError(\"API context is not available\");\n }\n const apiHolder = versionedHolder.atVersion(1);\n if (!apiHolder) {\n throw new NotImplementedError(\"ApiContext v1 not available\");\n }\n return apiHolder;\n}\nfunction useApi(apiRef) {\n const apiHolder = useApiHolder();\n const api = apiHolder.get(apiRef);\n if (!api) {\n throw new NotImplementedError(`No implementation available for ${apiRef}`);\n }\n return api;\n}\nfunction withApis(apis) {\n return function withApisWrapper(WrappedComponent) {\n const Hoc = (props) => {\n const apiHolder = useApiHolder();\n const impls = {};\n for (const key in apis) {\n if (apis.hasOwnProperty(key)) {\n const ref = apis[key];\n const api = apiHolder.get(ref);\n if (!api) {\n throw new NotImplementedError(\n `No implementation available for ${ref}`\n );\n }\n impls[key] = api;\n }\n }\n return /* @__PURE__ */ React.createElement(WrappedComponent, { ...props, ...impls });\n };\n const displayName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n Hoc.displayName = `withApis(${displayName})`;\n return Hoc;\n };\n}\n\nclass ApiRefImpl {\n constructor(config) {\n this.config = config;\n const valid = config.id.split(\".\").flatMap((part) => part.split(\"-\")).every((part) => part.match(/^[a-z][a-z0-9]*$/));\n if (!valid) {\n throw new Error(\n `API id must only contain period separated lowercase alphanum tokens with dashes, got '${config.id}'`\n );\n }\n }\n get id() {\n return this.config.id;\n }\n // Utility for getting type of an api, using `typeof apiRef.T`\n get T() {\n throw new Error(`tried to read ApiRef.T of ${this}`);\n }\n toString() {\n return `apiRef{${this.config.id}}`;\n }\n}\nfunction createApiRef(config) {\n return new ApiRefImpl(config);\n}\n\nvar SessionState = /* @__PURE__ */ ((SessionState2) => {\n SessionState2[\"SignedIn\"] = \"SignedIn\";\n SessionState2[\"SignedOut\"] = \"SignedOut\";\n return SessionState2;\n})(SessionState || {});\nconst googleAuthApiRef = createApiRef({\n id: \"core.auth.google\"\n});\nconst githubAuthApiRef = createApiRef({\n id: \"core.auth.github\"\n});\nconst oktaAuthApiRef = createApiRef({\n id: \"core.auth.okta\"\n});\nconst gitlabAuthApiRef = createApiRef({\n id: \"core.auth.gitlab\"\n});\nconst microsoftAuthApiRef = createApiRef({\n id: \"core.auth.microsoft\"\n});\nconst oneloginAuthApiRef = createApiRef({\n id: \"core.auth.onelogin\"\n});\nconst bitbucketAuthApiRef = createApiRef({\n id: \"core.auth.bitbucket\"\n});\nconst bitbucketServerAuthApiRef = createApiRef({\n id: \"core.auth.bitbucket-server\"\n});\nconst atlassianAuthApiRef = createApiRef({\n id: \"core.auth.atlassian\"\n});\nconst vmwareCloudAuthApiRef = createApiRef({\n id: \"core.auth.vmware-cloud\"\n});\n\nconst alertApiRef = createApiRef({\n id: \"core.alert\"\n});\n\nconst analyticsApiRef = createApiRef({\n id: \"core.analytics\"\n});\n\nconst appThemeApiRef = createApiRef({\n id: \"core.apptheme\"\n});\n\nconst configApiRef = createApiRef({\n id: \"core.config\"\n});\n\nconst discoveryApiRef = createApiRef({\n id: \"core.discovery\"\n});\n\nconst errorApiRef = createApiRef({\n id: \"core.error\"\n});\n\nvar FeatureFlagState = /* @__PURE__ */ ((FeatureFlagState2) => {\n FeatureFlagState2[FeatureFlagState2[\"None\"] = 0] = \"None\";\n FeatureFlagState2[FeatureFlagState2[\"Active\"] = 1] = \"Active\";\n return FeatureFlagState2;\n})(FeatureFlagState || {});\nconst featureFlagsApiRef = createApiRef({\n id: \"core.featureflags\"\n});\n\nconst fetchApiRef = createApiRef({\n id: \"core.fetch\"\n});\n\nconst identityApiRef = createApiRef({\n id: \"core.identity\"\n});\n\nconst oauthRequestApiRef = createApiRef({\n id: \"core.oauthrequest\"\n});\n\nconst storageApiRef = createApiRef({\n id: \"core.storage\"\n});\n\nexport { FeatureFlagState as F, SessionState as S, analyticsApiRef as a, useApiHolder as b, createApiRef as c, githubAuthApiRef as d, gitlabAuthApiRef as e, featureFlagsApiRef as f, googleAuthApiRef as g, oneloginAuthApiRef as h, bitbucketAuthApiRef as i, bitbucketServerAuthApiRef as j, atlassianAuthApiRef as k, alertApiRef as l, microsoftAuthApiRef as m, appThemeApiRef as n, oktaAuthApiRef as o, configApiRef as p, discoveryApiRef as q, errorApiRef as r, fetchApiRef as s, identityApiRef as t, useApi as u, vmwareCloudAuthApiRef as v, withApis as w, oauthRequestApiRef as x, storageApiRef as y };\n//# sourceMappingURL=StorageApi-DgJQFdRp.esm.js.map\n","import { createVersionedContext, createVersionedValueMap, getOrCreateGlobalSingleton, useVersionedContext } from '@backstage/version-bridge';\nimport React, { useContext, useRef, useMemo, lazy, Suspense, useEffect, Children, isValidElement, Fragment } from 'react';\nimport { u as useApi, a as analyticsApiRef, f as featureFlagsApiRef } from './esm/StorageApi-DgJQFdRp.esm.js';\nexport { F as FeatureFlagState, S as SessionState, l as alertApiRef, n as appThemeApiRef, k as atlassianAuthApiRef, i as bitbucketAuthApiRef, j as bitbucketServerAuthApiRef, p as configApiRef, c as createApiRef, q as discoveryApiRef, r as errorApiRef, s as fetchApiRef, d as githubAuthApiRef, e as gitlabAuthApiRef, g as googleAuthApiRef, t as identityApiRef, m as microsoftAuthApiRef, x as oauthRequestApiRef, o as oktaAuthApiRef, h as oneloginAuthApiRef, y as storageApiRef, b as useApiHolder, v as vmwareCloudAuthApiRef, w as withApis } from './esm/StorageApi-DgJQFdRp.esm.js';\nimport { useLocation, useParams } from 'react-router-dom';\nimport '@backstage/errors';\n\nconst AnalyticsReactContext = createVersionedContext(\"analytics-context\");\nconst useAnalyticsContext = () => {\n const theContext = useContext(AnalyticsReactContext);\n if (theContext === void 0) {\n return {\n routeRef: \"unknown\",\n pluginId: \"root\",\n extension: \"App\"\n };\n }\n const theValue = theContext.atVersion(1);\n if (theValue === void 0) {\n throw new Error(\"No context found for version 1.\");\n }\n return theValue;\n};\nconst AnalyticsContext = (options) => {\n const { attributes, children } = options;\n const parentValues = useAnalyticsContext();\n const combinedValue = {\n ...parentValues,\n ...attributes\n };\n const versionedCombinedValue = createVersionedValueMap({ 1: combinedValue });\n return /* @__PURE__ */ React.createElement(AnalyticsReactContext.Provider, { value: versionedCombinedValue }, children);\n};\n\nfunction createApiFactory(factory, instance) {\n if (\"id\" in factory) {\n return {\n api: factory,\n deps: {},\n factory: () => instance\n };\n }\n return factory;\n}\n\nconst globalEvents = getOrCreateGlobalSingleton(\n \"core-plugin-api:analytics-tracker-events\",\n () => ({\n mostRecentGatheredNavigation: void 0,\n mostRecentRoutableExtensionRender: void 0,\n beforeUnloadRegistered: false\n })\n);\nconst routableExtensionRenderedEvent = \"_ROUTABLE-EXTENSION-RENDERED\";\nclass Tracker {\n constructor(analyticsApi, context = {\n routeRef: \"unknown\",\n pluginId: \"root\",\n extension: \"App\"\n }) {\n this.analyticsApi = analyticsApi;\n this.context = context;\n if (!globalEvents.beforeUnloadRegistered) {\n addEventListener(\n \"beforeunload\",\n () => {\n if (globalEvents.mostRecentGatheredNavigation) {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n },\n { once: true, passive: true }\n );\n globalEvents.beforeUnloadRegistered = true;\n }\n }\n setContext(context) {\n this.context = context;\n }\n captureEvent(action, subject, {\n value,\n attributes\n } = {}) {\n const { _routeNodeType, ...context } = this.context;\n if (action === routableExtensionRenderedEvent) {\n if (globalEvents.mostRecentGatheredNavigation) {\n globalEvents.mostRecentRoutableExtensionRender = {\n context: {\n ...context,\n extension: \"App\"\n }\n };\n }\n return;\n }\n if (globalEvents.mostRecentGatheredNavigation) {\n try {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n if (action === \"navigate\" && _routeNodeType === \"gathered\" && context.pluginId === \"root\") {\n globalEvents.mostRecentGatheredNavigation = {\n action,\n subject,\n value,\n attributes,\n context\n };\n return;\n }\n try {\n this.analyticsApi.captureEvent({\n action,\n subject,\n value,\n attributes,\n context\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n }\n}\n\nfunction useAnalyticsApi() {\n try {\n return useApi(analyticsApiRef);\n } catch {\n return { captureEvent: () => {\n } };\n }\n}\nfunction useAnalytics() {\n const trackerRef = useRef(null);\n const context = useAnalyticsContext();\n const analyticsApi = useAnalyticsApi();\n function getTracker() {\n if (trackerRef.current === null) {\n trackerRef.current = new Tracker(analyticsApi);\n }\n return trackerRef.current;\n }\n const tracker = getTracker();\n tracker.setContext(context);\n return tracker;\n}\n\nconst useApp = () => {\n const versionedContext = useVersionedContext(\n \"app-context\"\n );\n if (!versionedContext) {\n throw new Error(\"App context is not available\");\n }\n const appContext = versionedContext.atVersion(1);\n if (!appContext) {\n throw new Error(\"AppContext v1 not available\");\n }\n return appContext;\n};\n\nconst globalStore = getOrCreateGlobalSingleton(\n \"component-data-store\",\n () => /* @__PURE__ */ new WeakMap()\n);\nconst componentDataKey = \"__backstage_data\";\nfunction attachComponentData(component, type, data) {\n var _a;\n const dataComponent = component;\n let container = (_a = dataComponent[componentDataKey]) != null ? _a : globalStore.get(component);\n if (!container) {\n container = { map: /* @__PURE__ */ new Map() };\n Object.defineProperty(dataComponent, componentDataKey, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: container\n });\n globalStore.set(component, container);\n }\n if (container.map.has(type)) {\n const name = component.displayName || component.name;\n throw new Error(\n `Attempted to attach duplicate data \"${type}\" to component \"${name}\"`\n );\n }\n container.map.set(type, data);\n}\nfunction getComponentData(node, type) {\n var _a;\n if (!node) {\n return void 0;\n }\n const component = node.type;\n if (!component) {\n return void 0;\n }\n const container = (_a = component[componentDataKey]) != null ? _a : globalStore.get(component);\n if (!container) {\n return void 0;\n }\n return container.map.get(type);\n}\n\nconst routeRefType = getOrCreateGlobalSingleton(\n \"route-ref-type\",\n () => Symbol(\"route-ref-type\")\n);\n\nvar __defProp$3 = Object.defineProperty;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$3 = (obj, key, value) => {\n __defNormalProp$3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar _a$2;\nclass RouteRefImpl {\n constructor(id, params) {\n this.id = id;\n this.params = params;\n __publicField$3(this, _a$2, \"absolute\");\n }\n get title() {\n return this.id;\n }\n toString() {\n return `routeRef{type=absolute,id=${this.id}}`;\n }\n}\n_a$2 = routeRefType;\nfunction createRouteRef(config) {\n var _a2;\n return new RouteRefImpl(\n config.id,\n (_a2 = config.params) != null ? _a2 : []\n );\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => {\n __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar _a$1;\nconst PARAM_PATTERN = /^\\w+$/;\nclass SubRouteRefImpl {\n constructor(id, path, parent, params) {\n this.id = id;\n this.path = path;\n this.parent = parent;\n this.params = params;\n __publicField$2(this, _a$1, \"sub\");\n }\n toString() {\n return `routeRef{type=sub,id=${this.id}}`;\n }\n}\n_a$1 = routeRefType;\nfunction createSubRouteRef(config) {\n const { id, path, parent } = config;\n const pathParams = path.split(\"/\").filter((p) => p.startsWith(\":\")).map((p) => p.substring(1));\n const params = [...parent.params, ...pathParams];\n if (parent.params.some((p) => pathParams.includes(p))) {\n throw new Error(\n \"SubRouteRef may not have params that overlap with its parent\"\n );\n }\n if (!path.startsWith(\"/\")) {\n throw new Error(`SubRouteRef path must start with '/', got '${path}'`);\n }\n if (path.endsWith(\"/\")) {\n throw new Error(`SubRouteRef path must not end with '/', got '${path}'`);\n }\n for (const param of pathParams) {\n if (!PARAM_PATTERN.test(param)) {\n throw new Error(`SubRouteRef path has invalid param, got '${param}'`);\n }\n }\n const subRouteRef = new SubRouteRefImpl(\n id,\n path,\n parent,\n params\n );\n return subRouteRef;\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar _a;\nclass ExternalRouteRefImpl {\n constructor(id, params, optional) {\n this.id = id;\n this.params = params;\n this.optional = optional;\n __publicField$1(this, _a, \"external\");\n }\n toString() {\n return `routeRef{type=external,id=${this.id}}`;\n }\n}\n_a = routeRefType;\nfunction createExternalRouteRef(options) {\n var _a2;\n return new ExternalRouteRefImpl(\n options.id,\n (_a2 = options.params) != null ? _a2 : [],\n Boolean(options.optional)\n );\n}\n\nfunction useRouteRef(routeRef) {\n const { pathname } = useLocation();\n const versionedContext = useVersionedContext(\n \"routing-context\"\n );\n if (!versionedContext) {\n throw new Error(\"Routing context is not available\");\n }\n const resolver = versionedContext.atVersion(1);\n const routeFunc = useMemo(\n () => resolver && resolver.resolve(routeRef, { pathname }),\n [resolver, routeRef, pathname]\n );\n if (!versionedContext) {\n throw new Error(\"useRouteRef used outside of routing context\");\n }\n if (!resolver) {\n throw new Error(\"RoutingContext v1 not available\");\n }\n const isOptional = \"optional\" in routeRef && routeRef.optional;\n if (!routeFunc && !isOptional) {\n throw new Error(`No path for ${routeRef}`);\n }\n return routeFunc;\n}\n\nfunction useRouteRefParams(_routeRef) {\n return useParams();\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass PluginErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n __publicField(this, \"state\", { error: void 0 });\n __publicField(this, \"handleErrorReset\", () => {\n this.setState({ error: void 0 });\n });\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n render() {\n const { error } = this.state;\n const { app, plugin } = this.props;\n const { ErrorBoundaryFallback } = app.getComponents();\n if (error) {\n return /* @__PURE__ */ React.createElement(\n ErrorBoundaryFallback,\n {\n error,\n resetError: this.handleErrorReset,\n plugin\n }\n );\n }\n return this.props.children;\n }\n}\n\nfunction createRoutableExtension(options) {\n const { component, mountPoint, name } = options;\n return createReactExtension({\n component: {\n lazy: () => component().then(\n (InnerComponent) => {\n const RoutableExtensionWrapper = (props) => {\n const analytics = useAnalytics();\n try {\n useRouteRef(mountPoint);\n } catch (error) {\n if (typeof error === \"object\" && error !== null) {\n const { message } = error;\n if (typeof message === \"string\" && message.startsWith(\"No path for \")) {\n throw new Error(\n `Routable extension component with mount point ${mountPoint} was not discovered in the app element tree. Routable extension components may not be rendered by other components and must be directly available as an element within the App provider component.`\n );\n }\n }\n throw error;\n }\n useEffect(() => {\n analytics.captureEvent(routableExtensionRenderedEvent, \"\");\n }, [analytics]);\n return /* @__PURE__ */ React.createElement(InnerComponent, { ...props });\n };\n const componentName = name || InnerComponent.displayName || InnerComponent.name || \"LazyComponent\";\n RoutableExtensionWrapper.displayName = `RoutableExtension(${componentName})`;\n return RoutableExtensionWrapper;\n },\n (error) => {\n const RoutableExtensionWrapper = (_) => {\n const app = useApp();\n const { BootErrorPage } = app.getComponents();\n return /* @__PURE__ */ React.createElement(BootErrorPage, { step: \"load-chunk\", error });\n };\n return RoutableExtensionWrapper;\n }\n )\n },\n data: {\n \"core.mountPoint\": mountPoint\n },\n name\n });\n}\nfunction createComponentExtension(options) {\n const { component, name } = options;\n return createReactExtension({ component, name });\n}\nfunction createReactExtension(options) {\n const { data = {}, name } = options;\n if (!name) {\n console.warn(\n \"Declaring extensions without name is DEPRECATED. Make sure that all usages of createReactExtension, createComponentExtension and createRoutableExtension provide a name.\"\n );\n }\n let Component;\n if (\"lazy\" in options.component) {\n const lazyLoader = options.component.lazy;\n Component = lazy(\n () => lazyLoader().then((component) => ({ default: component }))\n );\n } else {\n Component = options.component.sync;\n }\n const componentName = name || Component.displayName || Component.name || \"Component\";\n return {\n expose(plugin) {\n const Result = (props) => {\n const app = useApp();\n const { Progress } = app.getComponents();\n const mountPoint = data == null ? void 0 : data[\"core.mountPoint\"];\n return /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement(Progress, null) }, /* @__PURE__ */ React.createElement(PluginErrorBoundary, { app, plugin }, /* @__PURE__ */ React.createElement(\n AnalyticsContext,\n {\n attributes: {\n pluginId: plugin.getId(),\n ...name && { extension: name },\n ...mountPoint && { routeRef: mountPoint.id }\n }\n },\n /* @__PURE__ */ React.createElement(Component, { ...props })\n )));\n };\n attachComponentData(Result, \"core.plugin\", plugin);\n attachComponentData(Result, \"core.extensionName\", name);\n for (const [key, value] of Object.entries(data)) {\n attachComponentData(Result, key, value);\n }\n Result.displayName = `Extension(${componentName})`;\n return Result;\n }\n };\n}\n\nfunction selectChildren(rootNode, featureFlagsApi, selector, strictError) {\n return Children.toArray(rootNode).flatMap((node) => {\n if (!isValidElement(node)) {\n return [];\n }\n if (node.type === Fragment) {\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n }\n if (getComponentData(node, \"core.featureFlagged\")) {\n const props = node.props;\n const isEnabled = \"with\" in props ? featureFlagsApi.isActive(props.with) : !featureFlagsApi.isActive(props.without);\n if (isEnabled) {\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n }\n return [];\n }\n if (selector === void 0 || selector(node)) {\n return [node];\n }\n if (strictError) {\n throw new Error(strictError);\n }\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n });\n}\nclass Collection {\n constructor(node, featureFlagsApi) {\n this.node = node;\n this.featureFlagsApi = featureFlagsApi;\n }\n selectByComponentData(query) {\n const selection = selectChildren(\n this.node,\n this.featureFlagsApi,\n (node) => getComponentData(node, query.key) !== void 0,\n query.withStrictError\n );\n return new Collection(selection, this.featureFlagsApi);\n }\n findComponentData(query) {\n const selection = selectChildren(\n this.node,\n this.featureFlagsApi,\n (node) => getComponentData(node, query.key) !== void 0\n );\n return selection.map((node) => getComponentData(node, query.key)).filter((data) => data !== void 0);\n }\n getElements() {\n return selectChildren(this.node, this.featureFlagsApi);\n }\n}\nfunction useElementFilter(node, filterFn, dependencies = []) {\n const featureFlagsApi = useApi(featureFlagsApiRef);\n const elements = new Collection(node, featureFlagsApi);\n return useMemo(() => filterFn(elements), [node, ...dependencies]);\n}\n\nclass PluginImpl {\n constructor(config) {\n this.config = config;\n }\n getId() {\n return this.config.id;\n }\n getApis() {\n var _a;\n return (_a = this.config.apis) != null ? _a : [];\n }\n getFeatureFlags() {\n var _a, _b;\n return (_b = (_a = this.config.featureFlags) == null ? void 0 : _a.slice()) != null ? _b : [];\n }\n get routes() {\n var _a;\n return (_a = this.config.routes) != null ? _a : {};\n }\n get externalRoutes() {\n var _a;\n return (_a = this.config.externalRoutes) != null ? _a : {};\n }\n provide(extension) {\n return extension.expose(this);\n }\n toString() {\n return `plugin{${this.config.id}}`;\n }\n}\nfunction createPlugin(config) {\n return new PluginImpl(config);\n}\n\nexport { AnalyticsContext, analyticsApiRef, attachComponentData, createApiFactory, createComponentExtension, createExternalRouteRef, createPlugin, createReactExtension, createRoutableExtension, createRouteRef, createSubRouteRef, featureFlagsApiRef, getComponentData, useAnalytics, useApi, useApp, useElementFilter, useRouteRef, useRouteRefParams };\n//# sourceMappingURL=index.esm.js.map\n","import { serializeError as serializeError$1, deserializeError as deserializeError$1 } from 'serialize-error';\n\nfunction isError(value) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const maybe = value;\n if (typeof maybe.name !== \"string\" || maybe.name === \"\") {\n return false;\n }\n if (typeof maybe.message !== \"string\") {\n return false;\n }\n return true;\n}\nfunction assertError(value) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(`Encountered invalid error, not an object, got '${value}'`);\n }\n const maybe = value;\n if (typeof maybe.name !== \"string\" || maybe.name === \"\") {\n throw new Error(`Encountered error object without a name, got '${value}'`);\n }\n if (typeof maybe.message !== \"string\") {\n throw new Error(\n `Encountered error object without a message, got '${value}'`\n );\n }\n}\n\nfunction serializeError(error, options) {\n const serialized = serializeError$1(error);\n const result = {\n name: \"Unknown\",\n message: \"\",\n ...serialized\n };\n if (!(options == null ? void 0 : options.includeStack)) {\n delete result.stack;\n }\n return result;\n}\nfunction deserializeError(data) {\n const result = deserializeError$1(data);\n if (!data.stack) {\n result.stack = void 0;\n }\n return result;\n}\nfunction stringifyError(error) {\n if (isError(error)) {\n const str = String(error);\n return str !== \"[object Object]\" ? str : `${error.name}: ${error.message}`;\n }\n return `unknown error '${error}'`;\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => {\n __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass CustomErrorBase extends Error {\n constructor(message, cause) {\n var _a;\n let fullMessage = message;\n if (cause !== void 0) {\n const causeStr = stringifyError(cause);\n if (fullMessage) {\n fullMessage += `; caused by ${causeStr}`;\n } else {\n fullMessage = `caused by ${causeStr}`;\n }\n }\n super(fullMessage);\n /**\n * An inner error that caused this error to be thrown, if any.\n */\n __publicField$2(this, \"cause\");\n (_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, this, this.constructor);\n if (!this.name || this.name === \"Error\") {\n const baseName = this.constructor.name;\n if (baseName !== \"Error\") {\n this.name = this.constructor.name;\n }\n }\n this.cause = isError(cause) ? cause : void 0;\n }\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass InputError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"InputError\");\n }\n}\nclass AuthenticationError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"AuthenticationError\");\n }\n}\nclass NotAllowedError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"NotAllowedError\");\n }\n}\nclass NotFoundError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"NotFoundError\");\n }\n}\nclass ConflictError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"ConflictError\");\n }\n}\nclass NotModifiedError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"NotModifiedError\");\n }\n}\nclass NotImplementedError extends CustomErrorBase {\n constructor() {\n super(...arguments);\n __publicField$1(this, \"name\", \"NotImplementedError\");\n }\n}\nclass ServiceUnavailableError extends CustomErrorBase {\n}\nclass ForwardedError extends CustomErrorBase {\n constructor(message, cause) {\n super(message, cause);\n this.name = isError(cause) ? cause.name : \"Error\";\n }\n}\n\nasync function parseErrorResponseBody(response) {\n var _a;\n try {\n const text = await response.text();\n if (text) {\n if ((_a = response.headers.get(\"content-type\")) == null ? void 0 : _a.startsWith(\"application/json\")) {\n try {\n const body = JSON.parse(text);\n if (body.error && body.response) {\n return body;\n }\n } catch {\n }\n }\n return {\n error: {\n name: \"Error\",\n message: `Request failed with status ${response.status} ${response.statusText}, ${text}`\n },\n response: {\n statusCode: response.status\n }\n };\n }\n } catch {\n }\n return {\n error: {\n name: \"Error\",\n message: `Request failed with status ${response.status} ${response.statusText}`\n },\n response: {\n statusCode: response.status\n }\n };\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ResponseError extends Error {\n constructor(opts) {\n super(opts.message);\n /**\n * The actual response, as seen by the client.\n *\n * Note that the body of this response is always consumed. Its parsed form is\n * in the `body` field.\n */\n __publicField(this, \"response\");\n /**\n * The parsed JSON error body, as sent by the server.\n */\n __publicField(this, \"body\");\n /**\n * The Error cause, as seen by the remote server. This is parsed out of the\n * JSON error body.\n *\n * This error always has the plain Error constructor, however all\n * serializable enumerable fields on the remote error including its name are\n * preserved. Therefore, if you want to check the error type, use its name\n * property rather than checking typeof or its constructor or prototype.\n */\n __publicField(this, \"cause\");\n __publicField(this, \"statusCode\");\n __publicField(this, \"statusText\");\n this.name = \"ResponseError\";\n this.response = opts.response;\n this.body = opts.data;\n this.cause = opts.cause;\n this.statusCode = opts.statusCode;\n this.statusText = opts.statusText;\n }\n /**\n * Constructs a ResponseError based on a failed response.\n *\n * Assumes that the response has already been checked to be not ok. This\n * function consumes the body of the response, and assumes that it hasn't\n * been consumed before.\n */\n static async fromResponse(response) {\n const data = await parseErrorResponseBody(response);\n const statusCode = data.response.statusCode || response.status;\n const statusText = response.statusText;\n const message = `Request failed with ${statusCode} ${statusText}`;\n const cause = deserializeError(data.error);\n return new ResponseError({\n message,\n response,\n data,\n cause,\n statusCode,\n statusText\n });\n }\n}\n\nexport { AuthenticationError, ConflictError, CustomErrorBase, ForwardedError, InputError, NotAllowedError, NotFoundError, NotImplementedError, NotModifiedError, ResponseError, ServiceUnavailableError, assertError, deserializeError, isError, parseErrorResponseBody, serializeError, stringifyError };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(NonError._prepareSuperMessage(message));\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tvalue: 'NonError',\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, NonError);\n\t\t}\n\t}\n\n\tstatic _prepareSuperMessage(message) {\n\t\ttry {\n\t\t\treturn JSON.stringify(message);\n\t\t} catch {\n\t\t\treturn String(message);\n\t\t}\n\t}\n}\n\nconst commonProperties = [\n\t{property: 'name', enumerable: false},\n\t{property: 'message', enumerable: false},\n\t{property: 'stack', enumerable: false},\n\t{property: 'code', enumerable: true}\n];\n\nconst isCalled = Symbol('.toJSON called');\n\nconst toJSON = from => {\n\tfrom[isCalled] = true;\n\tconst json = from.toJSON();\n\tdelete from[isCalled];\n\treturn json;\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto_,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth\n}) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tif (depth >= maxDepth) {\n\t\treturn to;\n\t}\n\n\tif (typeof from.toJSON === 'function' && from[isCalled] !== true) {\n\t\treturn toJSON(from);\n\t}\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n\t\t\tto[key] = '[object Buffer]';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tdepth++;\n\n\t\t\tto[key] = destroyCircular({\n\t\t\t\tfrom: from[key],\n\t\t\t\tseen: seen.slice(),\n\t\t\t\tforceEnumerable,\n\t\t\t\tmaxDepth,\n\t\t\t\tdepth\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const {property, enumerable} of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: from[property],\n\t\t\t\tenumerable: forceEnumerable ? true : enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error(); // eslint-disable-line unicorn/error-message\n\t\tdestroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tto_: newError,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n","import lodash from 'lodash';\nimport Ajv from 'ajv';\n\nfunction isApiEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"API\";\n}\nfunction isComponentEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"COMPONENT\";\n}\nfunction isDomainEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"DOMAIN\";\n}\nfunction isGroupEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"GROUP\";\n}\nfunction isLocationEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"LOCATION\";\n}\nfunction isResourceEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"RESOURCE\";\n}\nfunction isSystemEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"SYSTEM\";\n}\nfunction isUserEntity(entity) {\n return entity.kind.toLocaleUpperCase(\"en-US\") === \"USER\";\n}\n\nconst DEFAULT_NAMESPACE = \"default\";\nconst ANNOTATION_VIEW_URL = \"backstage.io/view-url\";\nconst ANNOTATION_EDIT_URL = \"backstage.io/edit-url\";\nconst ANNOTATION_KUBERNETES_API_SERVER = \"kubernetes.io/api-server\";\nconst ANNOTATION_KUBERNETES_API_SERVER_CA = \"kubernetes.io/api-server-certificate-authority\";\nconst ANNOTATION_KUBERNETES_AUTH_PROVIDER = \"kubernetes.io/auth-provider\";\n\nvar __defProp$4 = Object.defineProperty;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$4 = (obj, key, value) => {\n __defNormalProp$4(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass DefaultNamespaceEntityPolicy {\n constructor(namespace = DEFAULT_NAMESPACE) {\n __publicField$4(this, \"namespace\");\n this.namespace = namespace;\n }\n async enforce(entity) {\n if (entity.metadata.namespace) {\n return entity;\n }\n return lodash.merge({ metadata: { namespace: this.namespace } }, entity);\n }\n}\n\nfunction parseRefString(ref) {\n let colonI = ref.indexOf(\":\");\n const slashI = ref.indexOf(\"/\");\n if (slashI !== -1 && slashI < colonI) {\n colonI = -1;\n }\n const kind = colonI === -1 ? void 0 : ref.slice(0, colonI);\n const namespace = slashI === -1 ? void 0 : ref.slice(colonI + 1, slashI);\n const name = ref.slice(Math.max(colonI + 1, slashI + 1));\n if (kind === \"\" || namespace === \"\" || name === \"\") {\n throw new TypeError(\n `Entity reference \"${ref}\" was not on the form [:][/]`\n );\n }\n return { kind, namespace, name };\n}\nfunction getCompoundEntityRef(entity) {\n return {\n kind: entity.kind,\n namespace: entity.metadata.namespace || DEFAULT_NAMESPACE,\n name: entity.metadata.name\n };\n}\nfunction parseEntityRef(ref, context) {\n var _a, _b, _c, _d;\n if (!ref) {\n throw new Error(`Entity reference must not be empty`);\n }\n const defaultKind = context == null ? void 0 : context.defaultKind;\n const defaultNamespace = (context == null ? void 0 : context.defaultNamespace) || DEFAULT_NAMESPACE;\n let kind;\n let namespace;\n let name;\n if (typeof ref === \"string\") {\n const parsed = parseRefString(ref);\n kind = (_a = parsed.kind) != null ? _a : defaultKind;\n namespace = (_b = parsed.namespace) != null ? _b : defaultNamespace;\n name = parsed.name;\n } else {\n kind = (_c = ref.kind) != null ? _c : defaultKind;\n namespace = (_d = ref.namespace) != null ? _d : defaultNamespace;\n name = ref.name;\n }\n if (!kind) {\n const textual = JSON.stringify(ref);\n throw new Error(\n `Entity reference ${textual} had missing or empty kind (e.g. did not start with \"component:\" or similar)`\n );\n } else if (!namespace) {\n const textual = JSON.stringify(ref);\n throw new Error(\n `Entity reference ${textual} had missing or empty namespace`\n );\n } else if (!name) {\n const textual = JSON.stringify(ref);\n throw new Error(`Entity reference ${textual} had missing or empty name`);\n }\n return { kind, namespace, name };\n}\nfunction stringifyEntityRef(ref) {\n var _a, _b;\n let kind;\n let namespace;\n let name;\n if (\"metadata\" in ref) {\n kind = ref.kind;\n namespace = (_a = ref.metadata.namespace) != null ? _a : DEFAULT_NAMESPACE;\n name = ref.metadata.name;\n } else {\n kind = ref.kind;\n namespace = (_b = ref.namespace) != null ? _b : DEFAULT_NAMESPACE;\n name = ref.name;\n }\n return `${kind.toLocaleLowerCase(\"en-US\")}:${namespace.toLocaleLowerCase(\n \"en-US\"\n )}/${name.toLocaleLowerCase(\"en-US\")}`;\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$3 = (obj, key, value) => {\n __defNormalProp$3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass GroupDefaultParentEntityPolicy {\n constructor(parentEntityRef) {\n __publicField$3(this, \"parentRef\");\n const { kind, namespace, name } = parseEntityRef(parentEntityRef, {\n defaultKind: \"Group\",\n defaultNamespace: DEFAULT_NAMESPACE\n });\n if (kind.toLocaleUpperCase(\"en-US\") !== \"GROUP\") {\n throw new TypeError(\"group parent must be a group\");\n }\n this.parentRef = stringifyEntityRef({\n kind,\n namespace,\n name\n });\n }\n async enforce(entity) {\n if (entity.kind !== \"Group\") {\n return entity;\n }\n const group = entity;\n if (group.spec.parent) {\n return group;\n }\n if (stringifyEntityRef(group) !== this.parentRef) {\n group.spec.parent = this.parentRef;\n }\n return group;\n }\n}\n\nclass CommonValidatorFunctions {\n /**\n * Checks that the value is on the form `` or ``, and validates\n * those parts separately.\n *\n * @param value - The value to check\n * @param separator - The separator between parts\n * @param isValidPrefix - Checks that the part before the separator is valid, if present\n * @param isValidSuffix - Checks that the part after the separator (or the entire value if there is no separator) is valid\n */\n static isValidPrefixAndOrSuffix(value, separator, isValidPrefix, isValidSuffix) {\n if (typeof value !== \"string\") {\n return false;\n }\n const parts = value.split(separator);\n if (parts.length === 1) {\n return isValidSuffix(parts[0]);\n } else if (parts.length === 2) {\n return isValidPrefix(parts[0]) && isValidSuffix(parts[1]);\n }\n return false;\n }\n /**\n * Checks that the value can be safely transferred as JSON.\n *\n * @param value - The value to check\n */\n static isJsonSafe(value) {\n try {\n return lodash.isEqual(value, JSON.parse(JSON.stringify(value)));\n } catch {\n return false;\n }\n }\n /**\n * Checks that the value is a valid DNS subdomain name.\n *\n * @param value - The value to check\n * @see https://tools.ietf.org/html/rfc1123\n */\n static isValidDnsSubdomain(value) {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 253 && value.split(\".\").every(CommonValidatorFunctions.isValidDnsLabel);\n }\n /**\n * Checks that the value is a valid DNS label.\n *\n * @param value - The value to check\n * @see https://tools.ietf.org/html/rfc1123\n */\n static isValidDnsLabel(value) {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 63 && /^[a-z0-9]+(?:\\-+[a-z0-9]+)*$/.test(value);\n }\n /**\n * Checks that the value is a valid tag.\n *\n * @deprecated This will be removed in a future release\n * @param value - The value to check\n */\n static isValidTag(value) {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 63 && /^[a-z0-9+#]+(\\-[a-z0-9+#]+)*$/.test(value);\n }\n /**\n * Checks that the value is a valid string URL.\n *\n * @param value - The value to check\n */\n static isValidUrl(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n }\n /**\n * Checks that the value is a non empty string value.\n *\n * @deprecated use isNonEmptyString instead\n * @param value - The value to check\n */\n static isValidString(value) {\n var _a;\n return typeof value === \"string\" && ((_a = value == null ? void 0 : value.trim()) == null ? void 0 : _a.length) >= 1;\n }\n /**\n * Checks that the value is a string value that's not empty.\n *\n * @param value - The value to check\n */\n static isNonEmptyString(value) {\n var _a;\n return typeof value === \"string\" && ((_a = value == null ? void 0 : value.trim()) == null ? void 0 : _a.length) >= 1;\n }\n}\n\nvar $schema$b = \"http://json-schema.org/draft-07/schema\";\nvar $id$b = \"EntityEnvelope\";\nvar description$b = \"The envelope skeleton parts of an entity - whatever is necessary to be able to give it a ref and pass to further validation / policy checking.\";\nvar examples$a = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Component\",\n\t\tmetadata: {\n\t\t\tname: \"LoremService\"\n\t\t}\n\t}\n];\nvar type$3 = \"object\";\nvar required$2 = [\n\t\"apiVersion\",\n\t\"kind\",\n\t\"metadata\"\n];\nvar additionalProperties$2 = true;\nvar properties$2 = {\n\tapiVersion: {\n\t\ttype: \"string\",\n\t\tdescription: \"The version of specification format for this particular entity that this is written against.\",\n\t\tminLength: 1,\n\t\texamples: [\n\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\"my-company.net/v1\",\n\t\t\t\"1.0\"\n\t\t]\n\t},\n\tkind: {\n\t\ttype: \"string\",\n\t\tdescription: \"The high level entity type being described.\",\n\t\tminLength: 1,\n\t\texamples: [\n\t\t\t\"API\",\n\t\t\t\"Component\",\n\t\t\t\"Domain\",\n\t\t\t\"Group\",\n\t\t\t\"Location\",\n\t\t\t\"Resource\",\n\t\t\t\"System\",\n\t\t\t\"Template\",\n\t\t\t\"User\"\n\t\t]\n\t},\n\tmetadata: {\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"name\"\n\t\t],\n\t\tadditionalProperties: true,\n\t\tproperties: {\n\t\t\tname: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The name of the entity. Must be unique within the catalog at any given point in time, for any given namespace + kind pair.\",\n\t\t\t\texamples: [\n\t\t\t\t\t\"metadata-proxy\"\n\t\t\t\t],\n\t\t\t\tminLength: 1\n\t\t\t},\n\t\t\tnamespace: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The namespace that the entity belongs to.\",\n\t\t\t\t\"default\": \"default\",\n\t\t\t\texamples: [\n\t\t\t\t\t\"default\",\n\t\t\t\t\t\"admin\"\n\t\t\t\t],\n\t\t\t\tminLength: 1\n\t\t\t}\n\t\t}\n\t}\n};\nvar entityEnvelopeSchema = {\n\t$schema: $schema$b,\n\t$id: $id$b,\n\tdescription: description$b,\n\texamples: examples$a,\n\ttype: type$3,\n\trequired: required$2,\n\tadditionalProperties: additionalProperties$2,\n\tproperties: properties$2\n};\n\nvar $schema$a = \"http://json-schema.org/draft-07/schema\";\nvar $id$a = \"Entity\";\nvar description$a = \"The parts of the format that's common to all versions/kinds of entity.\";\nvar examples$9 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Component\",\n\t\tmetadata: {\n\t\t\tname: \"LoremService\",\n\t\t\tdescription: \"Creates Lorems like a pro.\",\n\t\t\tlabels: {\n\t\t\t\tproduct_name: \"Random value Generator\"\n\t\t\t},\n\t\t\tannotations: {\n\t\t\t\tdocs: \"https://github.com/..../tree/develop/doc\"\n\t\t\t}\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"service\",\n\t\t\tlifecycle: \"production\",\n\t\t\towner: \"tools\"\n\t\t}\n\t}\n];\nvar type$2 = \"object\";\nvar required$1 = [\n\t\"apiVersion\",\n\t\"kind\",\n\t\"metadata\"\n];\nvar additionalProperties$1 = false;\nvar properties$1 = {\n\tapiVersion: {\n\t\ttype: \"string\",\n\t\tdescription: \"The version of specification format for this particular entity that this is written against.\",\n\t\tminLength: 1,\n\t\texamples: [\n\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\"my-company.net/v1\",\n\t\t\t\"1.0\"\n\t\t]\n\t},\n\tkind: {\n\t\ttype: \"string\",\n\t\tdescription: \"The high level entity type being described.\",\n\t\tminLength: 1,\n\t\texamples: [\n\t\t\t\"API\",\n\t\t\t\"Component\",\n\t\t\t\"Domain\",\n\t\t\t\"Group\",\n\t\t\t\"Location\",\n\t\t\t\"Resource\",\n\t\t\t\"System\",\n\t\t\t\"Template\",\n\t\t\t\"User\"\n\t\t]\n\t},\n\tmetadata: {\n\t\t$ref: \"EntityMeta\"\n\t},\n\tspec: {\n\t\ttype: \"object\",\n\t\tdescription: \"The specification data describing the entity itself.\"\n\t},\n\trelations: {\n\t\ttype: \"array\",\n\t\tdescription: \"The relations that this entity has with other entities.\",\n\t\titems: {\n\t\t\t$ref: \"common#relation\"\n\t\t}\n\t},\n\tstatus: {\n\t\t$ref: \"common#status\"\n\t}\n};\nvar entitySchema = {\n\t$schema: $schema$a,\n\t$id: $id$a,\n\tdescription: description$a,\n\texamples: examples$9,\n\ttype: type$2,\n\trequired: required$1,\n\tadditionalProperties: additionalProperties$1,\n\tproperties: properties$1\n};\n\nvar $schema$9 = \"http://json-schema.org/draft-07/schema\";\nvar $id$9 = \"EntityMeta\";\nvar description$9 = \"Metadata fields common to all versions/kinds of entity.\";\nvar examples$8 = [\n\t{\n\t\tuid: \"e01199ab-08cc-44c2-8e19-5c29ded82521\",\n\t\tetag: \"lsndfkjsndfkjnsdfkjnsd==\",\n\t\tname: \"my-component-yay\",\n\t\tnamespace: \"the-namespace\",\n\t\tlabels: {\n\t\t\t\"backstage.io/custom\": \"ValueStuff\"\n\t\t},\n\t\tannotations: {\n\t\t\t\"example.com/bindings\": \"are-secret\"\n\t\t},\n\t\ttags: [\n\t\t\t\"java\",\n\t\t\t\"data\"\n\t\t]\n\t}\n];\nvar type$1 = \"object\";\nvar required = [\n\t\"name\"\n];\nvar additionalProperties = true;\nvar properties = {\n\tuid: {\n\t\ttype: \"string\",\n\t\tdescription: \"A globally unique ID for the entity. This field can not be set by the user at creation time, and the server will reject an attempt to do so. The field will be populated in read operations. The field can (optionally) be specified when performing update or delete operations, but the server is free to reject requests that do so in such a way that it breaks semantics.\",\n\t\texamples: [\n\t\t\t\"e01199ab-08cc-44c2-8e19-5c29ded82521\"\n\t\t],\n\t\tminLength: 1\n\t},\n\tetag: {\n\t\ttype: \"string\",\n\t\tdescription: \"An opaque string that changes for each update operation to any part of the entity, including metadata. This field can not be set by the user at creation time, and the server will reject an attempt to do so. The field will be populated in read operations. The field can (optionally) be specified when performing update or delete operations, and the server will then reject the operation if it does not match the current stored value.\",\n\t\texamples: [\n\t\t\t\"lsndfkjsndfkjnsdfkjnsd==\"\n\t\t],\n\t\tminLength: 1\n\t},\n\tname: {\n\t\ttype: \"string\",\n\t\tdescription: \"The name of the entity. Must be unique within the catalog at any given point in time, for any given namespace + kind pair.\",\n\t\texamples: [\n\t\t\t\"metadata-proxy\"\n\t\t],\n\t\tminLength: 1\n\t},\n\tnamespace: {\n\t\ttype: \"string\",\n\t\tdescription: \"The namespace that the entity belongs to.\",\n\t\t\"default\": \"default\",\n\t\texamples: [\n\t\t\t\"default\",\n\t\t\t\"admin\"\n\t\t],\n\t\tminLength: 1\n\t},\n\ttitle: {\n\t\ttype: \"string\",\n\t\tdescription: \"A display name of the entity, to be presented in user interfaces instead of the name property, when available.\",\n\t\texamples: [\n\t\t\t\"React SSR Template\"\n\t\t],\n\t\tminLength: 1\n\t},\n\tdescription: {\n\t\ttype: \"string\",\n\t\tdescription: \"A short (typically relatively few words, on one line) description of the entity.\"\n\t},\n\tlabels: {\n\t\ttype: \"object\",\n\t\tdescription: \"Key/value pairs of identifying information attached to the entity.\",\n\t\tadditionalProperties: true,\n\t\tpatternProperties: {\n\t\t\t\"^.+$\": {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\tannotations: {\n\t\ttype: \"object\",\n\t\tdescription: \"Key/value pairs of non-identifying auxiliary information attached to the entity.\",\n\t\tadditionalProperties: true,\n\t\tpatternProperties: {\n\t\t\t\"^.+$\": {\n\t\t\t\ttype: \"string\"\n\t\t\t}\n\t\t}\n\t},\n\ttags: {\n\t\ttype: \"array\",\n\t\tdescription: \"A list of single-valued strings, to for example classify catalog entities in various ways.\",\n\t\titems: {\n\t\t\ttype: \"string\",\n\t\t\tminLength: 1\n\t\t}\n\t},\n\tlinks: {\n\t\ttype: \"array\",\n\t\tdescription: \"A list of external hyperlinks related to the entity. Links can provide additional contextual information that may be located outside of Backstage itself. For example, an admin dashboard or external CMS page.\",\n\t\titems: {\n\t\t\ttype: \"object\",\n\t\t\trequired: [\n\t\t\t\t\"url\"\n\t\t\t],\n\t\t\tproperties: {\n\t\t\t\turl: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"A url in a standard uri format.\",\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t\"https://admin.example-org.com\"\n\t\t\t\t\t],\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\ttitle: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"A user friendly display name for the link.\",\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t\"Admin Dashboard\"\n\t\t\t\t\t],\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\ticon: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"A key representing a visual icon to be displayed in the UI.\",\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t\"dashboard\"\n\t\t\t\t\t],\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\ttype: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"An optional value to categorize links into specific groups.\",\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t\"runbook\",\n\t\t\t\t\t\t\"documentation\",\n\t\t\t\t\t\t\"logs\",\n\t\t\t\t\t\t\"dashboard\"\n\t\t\t\t\t],\n\t\t\t\t\tminLength: 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar entityMetaSchema = {\n\t$schema: $schema$9,\n\t$id: $id$9,\n\tdescription: description$9,\n\texamples: examples$8,\n\ttype: type$1,\n\trequired: required,\n\tadditionalProperties: additionalProperties,\n\tproperties: properties\n};\n\nvar $schema$8 = \"http://json-schema.org/draft-07/schema\";\nvar $id$8 = \"common\";\nvar type = \"object\";\nvar description$8 = \"Common definitions to import from other schemas\";\nvar definitions = {\n\treference: {\n\t\t$id: \"#reference\",\n\t\ttype: \"object\",\n\t\tdescription: \"A reference by name to another entity.\",\n\t\trequired: [\n\t\t\t\"kind\",\n\t\t\t\"namespace\",\n\t\t\t\"name\"\n\t\t],\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\tkind: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The kind field of the entity.\",\n\t\t\t\tminLength: 1\n\t\t\t},\n\t\t\tnamespace: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The metadata.namespace field of the entity.\",\n\t\t\t\tminLength: 1\n\t\t\t},\n\t\t\tname: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The metadata.name field of the entity.\",\n\t\t\t\tminLength: 1\n\t\t\t}\n\t\t}\n\t},\n\trelation: {\n\t\t$id: \"#relation\",\n\t\ttype: \"object\",\n\t\tdescription: \"A directed relation from one entity to another.\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"targetRef\"\n\t\t],\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tminLength: 1,\n\t\t\t\tpattern: \"^\\\\w+$\",\n\t\t\t\tdescription: \"The type of relation.\"\n\t\t\t},\n\t\t\ttarget: {\n\t\t\t\t$ref: \"#reference\",\n\t\t\t\tdeprecated: true\n\t\t\t},\n\t\t\ttargetRef: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tminLength: 1,\n\t\t\t\tdescription: \"The entity ref of the target of this relation.\"\n\t\t\t}\n\t\t}\n\t},\n\tstatus: {\n\t\t$id: \"#status\",\n\t\ttype: \"object\",\n\t\tdescription: \"The current status of the entity, as claimed by various sources.\",\n\t\trequired: [\n\t\t],\n\t\tadditionalProperties: true,\n\t\tproperties: {\n\t\t\titems: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\t$ref: \"#statusItem\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tstatusItem: {\n\t\t$id: \"#statusItem\",\n\t\ttype: \"object\",\n\t\tdescription: \"A specific status item on a well known format.\",\n\t\trequired: [\n\t\t\t\"type\",\n\t\t\t\"level\",\n\t\t\t\"message\"\n\t\t],\n\t\tadditionalProperties: true,\n\t\tproperties: {\n\t\t\ttype: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tminLength: 1\n\t\t\t},\n\t\t\tlevel: {\n\t\t\t\t$ref: \"#statusLevel\",\n\t\t\t\tdescription: \"The status level / severity of the status item.\"\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"A brief message describing the status, intended for human consumption.\"\n\t\t\t},\n\t\t\terror: {\n\t\t\t\t$ref: \"#error\",\n\t\t\t\tdescription: \"An optional serialized error object related to the status.\"\n\t\t\t}\n\t\t}\n\t},\n\tstatusLevel: {\n\t\t$id: \"#statusLevel\",\n\t\ttype: \"string\",\n\t\tdescription: \"A status level / severity.\",\n\t\t\"enum\": [\n\t\t\t\"info\",\n\t\t\t\"warning\",\n\t\t\t\"error\"\n\t\t]\n\t},\n\terror: {\n\t\t$id: \"#error\",\n\t\ttype: \"object\",\n\t\tdescription: \"A serialized error object.\",\n\t\trequired: [\n\t\t\t\"name\",\n\t\t\t\"message\"\n\t\t],\n\t\tadditionalProperties: true,\n\t\tproperties: {\n\t\t\tname: {\n\t\t\t\ttype: \"string\",\n\t\t\t\texamples: [\n\t\t\t\t\t\"Error\",\n\t\t\t\t\t\"InputError\"\n\t\t\t\t],\n\t\t\t\tdescription: \"The type name of the error\",\n\t\t\t\tminLength: 1\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"The message of the error\"\n\t\t\t},\n\t\t\tcode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"An error code associated with the error\"\n\t\t\t},\n\t\t\tstack: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"An error stack trace\"\n\t\t\t}\n\t\t}\n\t}\n};\nvar commonSchema = {\n\t$schema: $schema$8,\n\t$id: $id$8,\n\ttype: type,\n\tdescription: description$8,\n\tdefinitions: definitions\n};\n\nconst compiledSchemaCache = /* @__PURE__ */ new Map();\nconst refDependencyCandidates = [\n entityEnvelopeSchema,\n entitySchema,\n entityMetaSchema,\n commonSchema\n];\nfunction throwAjvError(errors) {\n if (!(errors == null ? void 0 : errors.length)) {\n throw new TypeError(\"Unknown error\");\n }\n const error = errors[0];\n throw new TypeError(\n `${error.instancePath || \"\"} ${error.message}${error.params ? ` - ${Object.entries(error.params).map(([key, val]) => `${key}: ${val}`).join(\", \")}` : \"\"}`\n );\n}\nfunction compileAjvSchema(schema, options = {}) {\n var _a;\n const disableCache = (_a = options == null ? void 0 : options.disableCache) != null ? _a : false;\n const cacheKey = disableCache ? \"\" : JSON.stringify(schema);\n if (!disableCache) {\n const cached = compiledSchemaCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n }\n const extraSchemas = getExtraSchemas(schema);\n const ajv = new Ajv({\n allowUnionTypes: true,\n allErrors: true,\n validateSchema: true\n });\n if (extraSchemas.length) {\n ajv.addSchema(extraSchemas, void 0, void 0, true);\n }\n const compiled = ajv.compile(schema);\n if (!disableCache) {\n compiledSchemaCache.set(cacheKey, compiled);\n }\n return compiled;\n}\nfunction getExtraSchemas(schema) {\n if (typeof schema !== \"object\") {\n return [];\n }\n const seen = /* @__PURE__ */ new Set();\n if (schema.$id) {\n seen.add(schema.$id);\n }\n const selected = new Array();\n const todo = [schema];\n while (todo.length) {\n const current = todo.pop();\n for (const ref of getAllRefs(current)) {\n if (!seen.has(ref)) {\n seen.add(ref);\n const match = refDependencyCandidates.find((c) => c.$id === ref);\n if (match) {\n selected.push(match);\n todo.push(match);\n }\n }\n }\n }\n return selected;\n}\nfunction* getAllRefs(schema) {\n const todo = [schema];\n while (todo.length) {\n const current = todo.pop();\n if (typeof current === \"object\" && current) {\n for (const [key, value] of Object.entries(current)) {\n if (key === \"$ref\" && typeof value === \"string\") {\n yield value.split(\"#\")[0];\n } else {\n todo.push(value);\n }\n }\n }\n }\n}\n\nfunction entityEnvelopeSchemaValidator(schema) {\n const validate = compileAjvSchema(\n schema ? schema : entityEnvelopeSchema\n );\n return (data) => {\n const result = validate(data);\n if (result === true) {\n return data;\n }\n throw throwAjvError(validate.errors);\n };\n}\n\nfunction entityKindSchemaValidator(schema) {\n const validate = compileAjvSchema(schema);\n return (data) => {\n var _a;\n const result = validate(data);\n if (result === true) {\n return data;\n }\n const softCandidates = (_a = validate.errors) == null ? void 0 : _a.filter(\n (e) => [\"/kind\", \"/apiVersion\"].includes(e.instancePath)\n );\n if ((softCandidates == null ? void 0 : softCandidates.length) && softCandidates.every((e) => e.keyword === \"enum\")) {\n return false;\n }\n throw throwAjvError(validate.errors);\n };\n}\n\nfunction entitySchemaValidator(schema) {\n const validate = compileAjvSchema(schema ? schema : entitySchema);\n return (data) => {\n const result = validate(data);\n if (result === true) {\n return data;\n }\n throw throwAjvError(validate.errors);\n };\n}\n\nclass KubernetesValidatorFunctions {\n static isValidApiVersion(value) {\n return CommonValidatorFunctions.isValidPrefixAndOrSuffix(\n value,\n \"/\",\n CommonValidatorFunctions.isValidDnsSubdomain,\n (n) => n.length >= 1 && n.length <= 63 && /^[a-z0-9A-Z]+$/.test(n)\n );\n }\n static isValidKind(value) {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 63 && /^[a-zA-Z][a-z0-9A-Z]*$/.test(value);\n }\n static isValidObjectName(value) {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 63 && /^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$/.test(value);\n }\n static isValidNamespace(value) {\n return CommonValidatorFunctions.isValidDnsLabel(value);\n }\n static isValidLabelKey(value) {\n return CommonValidatorFunctions.isValidPrefixAndOrSuffix(\n value,\n \"/\",\n CommonValidatorFunctions.isValidDnsSubdomain,\n KubernetesValidatorFunctions.isValidObjectName\n );\n }\n static isValidLabelValue(value) {\n return value === \"\" || KubernetesValidatorFunctions.isValidObjectName(value);\n }\n static isValidAnnotationKey(value) {\n return CommonValidatorFunctions.isValidPrefixAndOrSuffix(\n value,\n \"/\",\n CommonValidatorFunctions.isValidDnsSubdomain,\n KubernetesValidatorFunctions.isValidObjectName\n );\n }\n static isValidAnnotationValue(value) {\n return typeof value === \"string\";\n }\n}\n\nconst defaultValidators = {\n isValidApiVersion: KubernetesValidatorFunctions.isValidApiVersion,\n isValidKind: KubernetesValidatorFunctions.isValidKind,\n isValidEntityName: KubernetesValidatorFunctions.isValidObjectName,\n isValidNamespace: KubernetesValidatorFunctions.isValidNamespace,\n isValidLabelKey: KubernetesValidatorFunctions.isValidLabelKey,\n isValidLabelValue: KubernetesValidatorFunctions.isValidLabelValue,\n isValidAnnotationKey: KubernetesValidatorFunctions.isValidAnnotationKey,\n isValidAnnotationValue: KubernetesValidatorFunctions.isValidAnnotationValue,\n isValidTag: (value) => {\n return typeof value === \"string\" && value.length >= 1 && value.length <= 63 && /^[a-z0-9:+#]+(\\-[a-z0-9:+#]+)*$/.test(value);\n }\n};\nfunction makeValidator(overrides = {}) {\n return {\n ...defaultValidators,\n ...overrides\n };\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => {\n __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass FieldFormatEntityPolicy {\n constructor(validators = makeValidator()) {\n __publicField$2(this, \"validators\");\n this.validators = validators;\n }\n async enforce(entity) {\n var _a, _b, _c, _d, _e, _f, _g;\n function require2(field, value, validator) {\n if (value === void 0 || value === null) {\n throw new Error(`${field} must have a value`);\n }\n let isValid;\n try {\n isValid = validator(value);\n } catch (e) {\n throw new Error(`${field} could not be validated, ${e}`);\n }\n if (!isValid) {\n let expectation;\n switch (validator.name) {\n case \"isValidLabelValue\":\n case \"isValidObjectName\":\n expectation = \"a string that is sequences of [a-zA-Z0-9] separated by any of [-_.], at most 63 characters in total\";\n break;\n case \"isValidLabelKey\":\n case \"isValidApiVersion\":\n case \"isValidAnnotationKey\":\n expectation = \"a valid prefix and/or suffix\";\n break;\n case \"isValidNamespace\":\n case \"isValidDnsLabel\":\n expectation = \"a string that is sequences of [a-z0-9] separated by [-], at most 63 characters in total\";\n break;\n case \"isValidTag\":\n expectation = \"a string that is sequences of [a-z0-9+#] separated by [-], at most 63 characters in total\";\n break;\n case \"isValidAnnotationValue\":\n expectation = \"a string\";\n break;\n case \"isValidKind\":\n expectation = \"a string that is a sequence of [a-zA-Z][a-z0-9A-Z], at most 63 characters in total\";\n break;\n case \"isValidUrl\":\n expectation = \"a string that is a valid url\";\n break;\n case \"isValidString\":\n case \"isNonEmptyString\":\n expectation = \"a non empty string\";\n break;\n default:\n expectation = void 0;\n break;\n }\n const message = expectation ? ` expected ${expectation} but found \"${value}\".` : \"\";\n throw new Error(\n `\"${field}\" is not valid;${message} To learn more about catalog file format, visit: https://github.com/backstage/backstage/blob/master/docs/architecture-decisions/adr002-default-catalog-file-format.md`\n );\n }\n }\n function optional(field, value, validator) {\n return value === void 0 || require2(field, value, validator);\n }\n require2(\"apiVersion\", entity.apiVersion, this.validators.isValidApiVersion);\n require2(\"kind\", entity.kind, this.validators.isValidKind);\n require2(\"metadata.name\", entity.metadata.name, this.validators.isValidEntityName);\n optional(\n \"metadata.namespace\",\n entity.metadata.namespace,\n this.validators.isValidNamespace\n );\n for (const [k, v] of Object.entries((_a = entity.metadata.labels) != null ? _a : [])) {\n require2(`labels.${k}`, k, this.validators.isValidLabelKey);\n require2(`labels.${k}`, v, this.validators.isValidLabelValue);\n }\n for (const [k, v] of Object.entries((_b = entity.metadata.annotations) != null ? _b : [])) {\n require2(`annotations.${k}`, k, this.validators.isValidAnnotationKey);\n require2(`annotations.${k}`, v, this.validators.isValidAnnotationValue);\n }\n const tags = (_c = entity.metadata.tags) != null ? _c : [];\n for (let i = 0; i < tags.length; ++i) {\n require2(`tags.${i}`, tags[i], this.validators.isValidTag);\n }\n const links = (_d = entity.metadata.links) != null ? _d : [];\n for (let i = 0; i < links.length; ++i) {\n require2(`links.${i}.url`, (_e = links[i]) == null ? void 0 : _e.url, CommonValidatorFunctions.isValidUrl);\n optional(\n `links.${i}.title`,\n (_f = links[i]) == null ? void 0 : _f.title,\n CommonValidatorFunctions.isNonEmptyString\n );\n optional(\n `links.${i}.icon`,\n (_g = links[i]) == null ? void 0 : _g.icon,\n KubernetesValidatorFunctions.isValidObjectName\n );\n }\n return entity;\n }\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst defaultKnownFields = [\"apiVersion\", \"kind\", \"metadata\", \"spec\"];\nclass NoForeignRootFieldsEntityPolicy {\n constructor(knownFields = defaultKnownFields) {\n __publicField$1(this, \"knownFields\");\n this.knownFields = knownFields;\n }\n async enforce(entity) {\n for (const field of Object.keys(entity)) {\n if (!this.knownFields.includes(field)) {\n throw new Error(`Unknown field ${field}`);\n }\n }\n return entity;\n }\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass SchemaValidEntityPolicy {\n constructor() {\n __publicField(this, \"validate\");\n }\n async enforce(entity) {\n if (!this.validate) {\n const ajv = new Ajv({ allowUnionTypes: true });\n this.validate = ajv.addSchema([commonSchema, entityMetaSchema], void 0, void 0, true).compile(entitySchema);\n }\n const result = this.validate(entity);\n if (result === true) {\n return entity;\n }\n const [error] = this.validate.errors || [];\n if (!error) {\n throw new Error(`Malformed envelope, Unknown error`);\n }\n throw new Error(\n `Malformed envelope, ${error.instancePath || \"\"} ${error.message}`\n );\n }\n}\n\nclass AllEntityPolicies {\n constructor(policies) {\n this.policies = policies;\n }\n async enforce(entity) {\n let result = entity;\n for (const policy of this.policies) {\n const output = await policy.enforce(result);\n if (!output) {\n throw new Error(\n `Policy ${policy.constructor.name} did not return a result`\n );\n }\n result = output;\n }\n return result;\n }\n}\nclass AnyEntityPolicy {\n constructor(policies) {\n this.policies = policies;\n }\n async enforce(entity) {\n for (const policy of this.policies) {\n const output = await policy.enforce(entity);\n if (output) {\n return output;\n }\n }\n throw new Error(`The entity did not match any known policy`);\n }\n}\nconst EntityPolicies = {\n allOf(policies) {\n return new AllEntityPolicies(policies);\n },\n oneOf(policies) {\n return new AnyEntityPolicy(policies);\n }\n};\n\nvar $schema$7 = \"http://json-schema.org/draft-07/schema\";\nvar $id$7 = \"ApiV1alpha1\";\nvar description$7 = \"An API describes an interface that can be exposed by a component. The API can be defined in different formats, like OpenAPI, AsyncAPI, GraphQL, gRPC, or other formats.\";\nvar examples$7 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"API\",\n\t\tmetadata: {\n\t\t\tname: \"artist-api\",\n\t\t\tdescription: \"Retrieve artist details\",\n\t\t\tlabels: {\n\t\t\t\tproduct_name: \"Random value Generator\"\n\t\t\t},\n\t\t\tannotations: {\n\t\t\t\tdocs: \"https://github.com/..../tree/develop/doc\"\n\t\t\t}\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"openapi\",\n\t\t\tlifecycle: \"production\",\n\t\t\towner: \"artist-relations-team\",\n\t\t\tsystem: \"artist-engagement-portal\",\n\t\t\tdefinition: \"openapi: \\\"3.0.0\\\"\\ninfo:...\"\n\t\t}\n\t}\n];\nvar allOf$7 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"API\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"type\",\n\t\t\t\t\t\"lifecycle\",\n\t\t\t\t\t\"owner\",\n\t\t\t\t\t\"definition\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The type of the API definition.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"openapi\",\n\t\t\t\t\t\t\t\"asyncapi\",\n\t\t\t\t\t\t\t\"graphql\",\n\t\t\t\t\t\t\t\"grpc\",\n\t\t\t\t\t\t\t\"trpc\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tlifecycle: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The lifecycle state of the API.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"experimental\",\n\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\"deprecated\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the owner of the API.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artist-relations-team\",\n\t\t\t\t\t\t\t\"user:john.johnson\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the system that the API belongs to.\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tdefinition: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The definition of the API, based on the format defined by the type.\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$7 = {\n\t$schema: $schema$7,\n\t$id: $id$7,\n\tdescription: description$7,\n\texamples: examples$7,\n\tallOf: allOf$7\n};\n\nfunction ajvCompiledJsonSchemaValidator(schema) {\n let validator;\n return {\n async check(data) {\n if (!validator) {\n validator = entityKindSchemaValidator(schema);\n }\n return validator(data) === data;\n }\n };\n}\n\nconst apiEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$7);\n\nvar $schema$6 = \"http://json-schema.org/draft-07/schema\";\nvar $id$6 = \"ComponentV1alpha1\";\nvar description$6 = \"A Component describes a software component. It is typically intimately linked to the source code that constitutes the component, and should be what a developer may regard a \\\"unit of software\\\", usually with a distinct deployable or linkable artifact.\";\nvar examples$6 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Component\",\n\t\tmetadata: {\n\t\t\tname: \"LoremService\",\n\t\t\tdescription: \"Creates Lorems like a pro.\",\n\t\t\tlabels: {\n\t\t\t\tproduct_name: \"Random value Generator\"\n\t\t\t},\n\t\t\tannotations: {\n\t\t\t\tdocs: \"https://github.com/..../tree/develop/doc\"\n\t\t\t}\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"service\",\n\t\t\tlifecycle: \"production\",\n\t\t\towner: \"tools\"\n\t\t}\n\t}\n];\nvar allOf$6 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"Component\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"type\",\n\t\t\t\t\t\"lifecycle\",\n\t\t\t\t\t\"owner\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The type of component.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"service\",\n\t\t\t\t\t\t\t\"website\",\n\t\t\t\t\t\t\t\"library\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tlifecycle: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The lifecycle state of the component.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"experimental\",\n\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\"deprecated\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the owner of the component.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artist-relations-team\",\n\t\t\t\t\t\t\t\"user:john.johnson\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the system that the component belongs to.\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tsubcomponentOf: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to another component of which the component is a part.\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tprovidesApis: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"An array of entity references to the APIs that are provided by the component.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tconsumesApis: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"An array of entity references to the APIs that are consumed by the component.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdependsOn: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"An array of references to other entities that the component depends on to function.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$6 = {\n\t$schema: $schema$6,\n\t$id: $id$6,\n\tdescription: description$6,\n\texamples: examples$6,\n\tallOf: allOf$6\n};\n\nconst componentEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$6);\n\nvar $schema$5 = \"http://json-schema.org/draft-07/schema\";\nvar $id$5 = \"DomainV1alpha1\";\nvar description$5 = \"A Domain groups a collection of systems that share terminology, domain models, business purpose, or documentation, i.e. form a bounded context.\";\nvar examples$5 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Domain\",\n\t\tmetadata: {\n\t\t\tname: \"artists\",\n\t\t\tdescription: \"Everything about artists\"\n\t\t},\n\t\tspec: {\n\t\t\towner: \"artist-relations-team\"\n\t\t}\n\t}\n];\nvar allOf$5 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"Domain\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"owner\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the owner of the component.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artist-relations-team\",\n\t\t\t\t\t\t\t\"user:john.johnson\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$5 = {\n\t$schema: $schema$5,\n\t$id: $id$5,\n\tdescription: description$5,\n\texamples: examples$5,\n\tallOf: allOf$5\n};\n\nconst domainEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$5);\n\nvar $schema$4 = \"http://json-schema.org/draft-07/schema\";\nvar $id$4 = \"GroupV1alpha1\";\nvar description$4 = \"A group describes an organizational entity, such as for example a team, a business unit, or a loose collection of people in an interest group. Members of these groups are modeled in the catalog as kind User.\";\nvar examples$4 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Group\",\n\t\tmetadata: {\n\t\t\tname: \"infrastructure\",\n\t\t\tdescription: \"The infra business unit\"\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"business-unit\",\n\t\t\tprofile: {\n\t\t\t\tdisplayName: \"Infrastructure\",\n\t\t\t\temail: \"infrastructure@example.com\",\n\t\t\t\tpicture: \"https://example.com/groups/bu-infrastructure.jpeg\"\n\t\t\t},\n\t\t\tparent: \"ops\",\n\t\t\tchildren: [\n\t\t\t\t\"backstage\",\n\t\t\t\t\"other\"\n\t\t\t]\n\t\t}\n\t}\n];\nvar allOf$4 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"Group\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"type\",\n\t\t\t\t\t\"children\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The type of group. There is currently no enforced set of values for this field, so it is left up to the adopting organization to choose a nomenclature that matches their org hierarchy.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"team\",\n\t\t\t\t\t\t\t\"business-unit\",\n\t\t\t\t\t\t\t\"product-area\",\n\t\t\t\t\t\t\t\"root\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tprofile: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tdescription: \"Optional profile information about the group, mainly for display purposes. All fields of this structure are also optional. The email would be a group email of some form, that the group may wish to be used for contacting them. The picture is expected to be a URL pointing to an image that's representative of the group, and that a browser could fetch and render on a group page or similar.\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tdisplayName: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"A simple display name to present to users.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"Infrastructure\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\temail: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"An email where this entity can be reached.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"infrastructure@example.com\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpicture: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"The URL of an image that represents this entity.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"https://example.com/groups/bu-infrastructure.jpeg\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tparent: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The immediate parent group in the hierarchy, if any. Not all groups must have a parent; the catalog supports multi-root hierarchies. Groups may however not have more than one parent. This field is an entity reference.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"ops\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tchildren: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"The immediate child groups of this group in the hierarchy (whose parent field points to this group). The list must be present, but may be empty if there are no child groups. The items are not guaranteed to be ordered in any particular way. The entries of this array are entity references.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\"backstage\",\n\t\t\t\t\t\t\t\t\"other\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tmembers: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"The users that are members of this group. The entries of this array are entity references.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\"jdoe\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$4 = {\n\t$schema: $schema$4,\n\t$id: $id$4,\n\tdescription: description$4,\n\texamples: examples$4,\n\tallOf: allOf$4\n};\n\nconst groupEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$4);\n\nvar $schema$3 = \"http://json-schema.org/draft-07/schema\";\nvar $id$3 = \"LocationV1alpha1\";\nvar description$3 = \"A location is a marker that references other places to look for catalog data.\";\nvar examples$3 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Location\",\n\t\tmetadata: {\n\t\t\tname: \"org-data\"\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"url\",\n\t\t\ttargets: [\n\t\t\t\t\"http://github.com/myorg/myproject/org-data-dump/catalog-info-staff.yaml\",\n\t\t\t\t\"http://github.com/myorg/myproject/org-data-dump/catalog-info-consultants.yaml\"\n\t\t\t]\n\t\t}\n\t}\n];\nvar allOf$3 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"Location\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The single location type, that's common to the targets specified in the spec. If it is left out, it is inherited from the location type that originally read the entity data.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"url\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"A single target as a string. Can be either an absolute path/URL (depending on the type), or a relative path such as ./details/catalog-info.yaml which is resolved relative to the location of this Location entity itself.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"./details/catalog-info.yaml\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\ttargets: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"A list of targets as strings. They can all be either absolute paths/URLs (depending on the type), or relative paths such as ./details/catalog-info.yaml which are resolved relative to the location of this Location entity itself.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\"./details/catalog-info.yaml\",\n\t\t\t\t\t\t\t\t\"http://github.com/myorg/myproject/org-data-dump/catalog-info-staff.yaml\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpresence: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"Whether the presence of the location target is required and it should be considered an error if it can not be found\",\n\t\t\t\t\t\t\"default\": \"required\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"required\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"required\",\n\t\t\t\t\t\t\t\"optional\"\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$3 = {\n\t$schema: $schema$3,\n\t$id: $id$3,\n\tdescription: description$3,\n\texamples: examples$3,\n\tallOf: allOf$3\n};\n\nconst locationEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$3);\n\nconst RELATION_OWNED_BY = \"ownedBy\";\nconst RELATION_OWNER_OF = \"ownerOf\";\nconst RELATION_CONSUMES_API = \"consumesApi\";\nconst RELATION_API_CONSUMED_BY = \"apiConsumedBy\";\nconst RELATION_PROVIDES_API = \"providesApi\";\nconst RELATION_API_PROVIDED_BY = \"apiProvidedBy\";\nconst RELATION_DEPENDS_ON = \"dependsOn\";\nconst RELATION_DEPENDENCY_OF = \"dependencyOf\";\nconst RELATION_PARENT_OF = \"parentOf\";\nconst RELATION_CHILD_OF = \"childOf\";\nconst RELATION_MEMBER_OF = \"memberOf\";\nconst RELATION_HAS_MEMBER = \"hasMember\";\nconst RELATION_PART_OF = \"partOf\";\nconst RELATION_HAS_PART = \"hasPart\";\n\nvar $schema$2 = \"http://json-schema.org/draft-07/schema\";\nvar $id$2 = \"ResourceV1alpha1\";\nvar description$2 = \"A resource describes the infrastructure a system needs to operate, like BigTable databases, Pub/Sub topics, S3 buckets or CDNs. Modelling them together with components and systems allows to visualize resource footprint, and create tooling around them.\";\nvar examples$2 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"Resource\",\n\t\tmetadata: {\n\t\t\tname: \"artists-db\",\n\t\t\tdescription: \"Stores artist details\"\n\t\t},\n\t\tspec: {\n\t\t\ttype: \"database\",\n\t\t\towner: \"artist-relations-team\",\n\t\t\tsystem: \"artist-engagement-portal\"\n\t\t}\n\t}\n];\nvar allOf$2 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"Resource\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"type\",\n\t\t\t\t\t\"owner\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"The type of resource.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"database\",\n\t\t\t\t\t\t\t\"s3-bucket\",\n\t\t\t\t\t\t\t\"cluster\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the owner of the resource.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artist-relations-team\",\n\t\t\t\t\t\t\t\"user:john.johnson\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tdependsOn: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"An array of references to other entities that the resource depends on to function.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the system that the resource belongs to.\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$2 = {\n\t$schema: $schema$2,\n\t$id: $id$2,\n\tdescription: description$2,\n\texamples: examples$2,\n\tallOf: allOf$2\n};\n\nconst resourceEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$2);\n\nvar $schema$1 = \"http://json-schema.org/draft-07/schema\";\nvar $id$1 = \"SystemV1alpha1\";\nvar description$1 = \"A system is a collection of resources and components. The system may expose or consume one or several APIs. It is viewed as abstraction level that provides potential consumers insights into exposed features without needing a too detailed view into the details of all components. This also gives the owning team the possibility to decide about published artifacts and APIs.\";\nvar examples$1 = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"System\",\n\t\tmetadata: {\n\t\t\tname: \"artist-engagement-portal\",\n\t\t\tdescription: \"Handy tools to keep artists in the loop\"\n\t\t},\n\t\tspec: {\n\t\t\towner: \"artist-relations-team\",\n\t\t\tdomain: \"artists\"\n\t\t}\n\t}\n];\nvar allOf$1 = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"System\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"owner\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the owner of the component.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artist-relations-team\",\n\t\t\t\t\t\t\t\"user:john.johnson\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tdomain: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"An entity reference to the domain that the system belongs to.\",\n\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\"artists\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema$1 = {\n\t$schema: $schema$1,\n\t$id: $id$1,\n\tdescription: description$1,\n\texamples: examples$1,\n\tallOf: allOf$1\n};\n\nconst systemEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema$1);\n\nvar $schema = \"http://json-schema.org/draft-07/schema\";\nvar $id = \"UserV1alpha1\";\nvar description = \"A user describes a person, such as an employee, a contractor, or similar. Users belong to Group entities in the catalog. These catalog user entries are connected to the way that authentication within the Backstage ecosystem works. See the auth section of the docs for a discussion of these concepts.\";\nvar examples = [\n\t{\n\t\tapiVersion: \"backstage.io/v1alpha1\",\n\t\tkind: \"User\",\n\t\tmetadata: {\n\t\t\tname: \"jdoe\"\n\t\t},\n\t\tspec: {\n\t\t\tprofile: {\n\t\t\t\tdisplayName: \"Jenny Doe\",\n\t\t\t\temail: \"jenny-doe@example.com\",\n\t\t\t\tpicture: \"https://example.com/staff/jenny-with-party-hat.jpeg\"\n\t\t\t},\n\t\t\tmemberOf: [\n\t\t\t\t\"team-b\",\n\t\t\t\t\"employees\"\n\t\t\t]\n\t\t}\n\t}\n];\nvar allOf = [\n\t{\n\t\t$ref: \"Entity\"\n\t},\n\t{\n\t\ttype: \"object\",\n\t\trequired: [\n\t\t\t\"spec\"\n\t\t],\n\t\tproperties: {\n\t\t\tapiVersion: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"backstage.io/v1alpha1\",\n\t\t\t\t\t\"backstage.io/v1beta1\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\t\"enum\": [\n\t\t\t\t\t\"User\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tspec: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"memberOf\"\n\t\t\t\t],\n\t\t\t\tproperties: {\n\t\t\t\t\tprofile: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tdescription: \"Optional profile information about the user, mainly for display purposes. All fields of this structure are also optional. The email would be a primary email of some form, that the user may wish to be used for contacting them. The picture is expected to be a URL pointing to an image that's representative of the user, and that a browser could fetch and render on a profile page or similar.\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tdisplayName: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"A simple display name to present to users.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"Jenny Doe\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\temail: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"An email where this user can be reached.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"jenny-doe@example.com\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpicture: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription: \"The URL of an image that represents this user.\",\n\t\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\t\"https://example.com/staff/jenny-with-party-hat.jpeg\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tmemberOf: {\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tdescription: \"The list of groups that the user is a direct member of (i.e., no transitive memberships are listed here). The list must be present, but may be empty if the user is not member of any groups. The items are not guaranteed to be ordered in any particular way. The entries of this array are entity references.\",\n\t\t\t\t\t\titems: {\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\texamples: [\n\t\t\t\t\t\t\t\t\"team-b\",\n\t\t\t\t\t\t\t\t\"employees\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n];\nvar schema = {\n\t$schema: $schema,\n\t$id: $id,\n\tdescription: description,\n\texamples: examples,\n\tallOf: allOf\n};\n\nconst userEntityV1alpha1Validator = ajvCompiledJsonSchemaValidator(schema);\n\nconst ANNOTATION_LOCATION = \"backstage.io/managed-by-location\";\nconst ANNOTATION_ORIGIN_LOCATION = \"backstage.io/managed-by-origin-location\";\nconst ANNOTATION_SOURCE_LOCATION = \"backstage.io/source-location\";\n\nconst scriptProtocolPattern = (\n // eslint-disable-next-line no-control-regex\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i\n);\nfunction parseLocationRef(ref) {\n if (typeof ref !== \"string\") {\n throw new TypeError(\n `Unable to parse location ref '${ref}', unexpected argument ${typeof ref}`\n );\n }\n const splitIndex = ref.indexOf(\":\");\n if (splitIndex < 0) {\n throw new TypeError(\n `Unable to parse location ref '${ref}', expected ':', e.g. 'url:https://host/path'`\n );\n }\n const type = ref.substring(0, splitIndex).trim();\n const target = ref.substring(splitIndex + 1).trim();\n if (!type || !target) {\n throw new TypeError(\n `Unable to parse location ref '${ref}', expected ':', e.g. 'url:https://host/path'`\n );\n }\n if (type === \"http\" || type === \"https\") {\n throw new TypeError(\n `Invalid location ref '${ref}', please prefix it with 'url:', e.g. 'url:${ref}'`\n );\n }\n if (scriptProtocolPattern.test(target)) {\n throw new TypeError(\n `Invalid location ref '${ref}', target is a javascript: URL`\n );\n }\n return { type, target };\n}\nfunction stringifyLocationRef(ref) {\n const { type, target } = ref;\n if (!type) {\n throw new TypeError(`Unable to stringify location ref, empty type`);\n } else if (!target) {\n throw new TypeError(`Unable to stringify location ref, empty target`);\n }\n if (scriptProtocolPattern.test(target)) {\n throw new TypeError(\n `Invalid location ref '${type}:${target}', target is a javascript: URL`\n );\n }\n return `${type}:${target}`;\n}\nfunction getEntitySourceLocation(entity) {\n var _a, _b, _c, _d, _e;\n const locationRef = (_e = (_b = (_a = entity.metadata) == null ? void 0 : _a.annotations) == null ? void 0 : _b[ANNOTATION_SOURCE_LOCATION]) != null ? _e : (_d = (_c = entity.metadata) == null ? void 0 : _c.annotations) == null ? void 0 : _d[ANNOTATION_LOCATION];\n if (!locationRef) {\n throw new Error(\n `Entity '${stringifyEntityRef(entity)}' is missing location`\n );\n }\n return parseLocationRef(locationRef);\n}\n\nexport { ANNOTATION_EDIT_URL, ANNOTATION_KUBERNETES_API_SERVER, ANNOTATION_KUBERNETES_API_SERVER_CA, ANNOTATION_KUBERNETES_AUTH_PROVIDER, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, ANNOTATION_SOURCE_LOCATION, ANNOTATION_VIEW_URL, CommonValidatorFunctions, DEFAULT_NAMESPACE, DefaultNamespaceEntityPolicy, EntityPolicies, FieldFormatEntityPolicy, GroupDefaultParentEntityPolicy, KubernetesValidatorFunctions, NoForeignRootFieldsEntityPolicy, RELATION_API_CONSUMED_BY, RELATION_API_PROVIDED_BY, RELATION_CHILD_OF, RELATION_CONSUMES_API, RELATION_DEPENDENCY_OF, RELATION_DEPENDS_ON, RELATION_HAS_MEMBER, RELATION_HAS_PART, RELATION_MEMBER_OF, RELATION_OWNED_BY, RELATION_OWNER_OF, RELATION_PARENT_OF, RELATION_PART_OF, RELATION_PROVIDES_API, SchemaValidEntityPolicy, apiEntityV1alpha1Validator, componentEntityV1alpha1Validator, domainEntityV1alpha1Validator, entityEnvelopeSchemaValidator, entityKindSchemaValidator, entitySchemaValidator, getCompoundEntityRef, getEntitySourceLocation, groupEntityV1alpha1Validator, isApiEntity, isComponentEntity, isDomainEntity, isGroupEntity, isLocationEntity, isResourceEntity, isSystemEntity, isUserEntity, locationEntityV1alpha1Validator, makeValidator, parseEntityRef, parseLocationRef, resourceEntityV1alpha1Validator, stringifyEntityRef, stringifyLocationRef, systemEntityV1alpha1Validator, userEntityV1alpha1Validator };\n//# sourceMappingURL=index.esm.js.map\n","import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model';\nimport { AnalyticsContext } from '@backstage/core-plugin-api';\nimport { createVersionedContext, createVersionedValueMap, useVersionedContext } from '@backstage/version-bridge';\nimport React from 'react';\n\nfunction getEntityRelations(entity, relationType, filter) {\n var _a;\n let entityNames = ((_a = entity == null ? void 0 : entity.relations) == null ? void 0 : _a.filter((r) => r.type === relationType).map((r) => parseEntityRef(r.targetRef))) || [];\n if (filter == null ? void 0 : filter.kind) {\n entityNames = entityNames.filter(\n (e) => e.kind.toLocaleLowerCase(\"en-US\") === filter.kind.toLocaleLowerCase(\"en-US\")\n );\n }\n return entityNames;\n}\n\nconst NewEntityContext = createVersionedContext(\n \"entity-context\"\n);\nconst AsyncEntityProvider = (props) => {\n const { children, entity, loading, error, refresh } = props;\n const value = { entity, loading, error, refresh };\n return /* @__PURE__ */ React.createElement(NewEntityContext.Provider, { value: createVersionedValueMap({ 1: value }) }, /* @__PURE__ */ React.createElement(\n AnalyticsContext,\n {\n attributes: {\n ...entity ? { entityRef: stringifyEntityRef(entity) } : void 0\n }\n },\n children\n ));\n};\nconst EntityProvider = (props) => /* @__PURE__ */ React.createElement(\n AsyncEntityProvider,\n {\n entity: props.entity,\n loading: !Boolean(props.entity),\n error: void 0,\n refresh: void 0,\n children: props.children\n }\n);\nfunction useEntity() {\n const versionedHolder = useVersionedContext(\n \"entity-context\"\n );\n if (!versionedHolder) {\n throw new Error(\"Entity context is not available\");\n }\n const value = versionedHolder.atVersion(1);\n if (!value) {\n throw new Error(\"EntityContext v1 not available\");\n }\n if (!value.entity) {\n throw new Error(\n \"useEntity hook is being called outside of an EntityLayout where the entity has not been loaded. If this is intentional, please use useAsyncEntity instead.\"\n );\n }\n return { entity: value.entity };\n}\nfunction useAsyncEntity() {\n const versionedHolder = useVersionedContext(\n \"entity-context\"\n );\n if (!versionedHolder) {\n throw new Error(\"Entity context is not available\");\n }\n const value = versionedHolder.atVersion(1);\n if (!value) {\n throw new Error(\"EntityContext v1 not available\");\n }\n const { entity, loading, error, refresh } = value;\n return { entity, loading, error, refresh };\n}\n\nexport { AsyncEntityProvider as A, EntityProvider as E, useAsyncEntity as a, getEntityRelations as g, useEntity as u };\n//# sourceMappingURL=useEntity-DuPQWZpR.esm.js.map\n","const ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexport { ALIAS, DOC, MAP, NODE_TYPE, PAIR, SCALAR, SEQ, hasAnchor, isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq };\n","import { isDocument, isNode, isPair, isCollection, isMap, isSeq, isScalar, isAlias } from './nodes/identity.js';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (isMap(node))\n return visitor.Map?.(key, node, path);\n if (isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (isPair(node))\n return visitor.Pair?.(key, node, path);\n if (isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexport { visit, visitAsync };\n","import { isNode } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && isNode(doc.contents)) {\n const tags = {};\n visit(doc.contents, (_key, node) => {\n if (isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexport { Directives };\n","import { isScalar, isCollection } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n if (!prevAnchors)\n prevAnchors = anchorNames(doc);\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (isScalar(ref.node) || isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexport { anchorIsValid, anchorNames, createNodeAnchors, findNewAnchor };\n","/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexport { applyReviver };\n","import { hasAnchor } from './identity.js';\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexport { toJS };\n","import { applyReviver } from '../doc/applyReviver.js';\nimport { NODE_TYPE, isDocument } from './identity.js';\nimport { toJS } from './toJS.js';\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexport { NodeBase };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { visit } from '../visit.js';\nimport { ALIAS, isAlias, isCollection, isPair } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nclass Alias extends NodeBase {\n constructor(source) {\n super(ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc) {\n let found = undefined;\n visit(doc, {\n Node: (_key, node) => {\n if (node === this)\n return visit.BREAK;\n if (node.anchor === this.source)\n found = node;\n }\n });\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexport { Alias };\n","import { SCALAR } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends NodeBase {\n constructor(value) {\n super(SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexport { Scalar, isScalarValue };\n","import { Alias } from '../nodes/Alias.js';\nimport { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (isDocument(value))\n value = value.contents;\n if (isNode(value))\n return value;\n if (isPair(value)) {\n const map = ctx.schema[MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n if (!ref.anchor)\n ref.anchor = onAnchor(value);\n return new Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[MAP]\n : Symbol.iterator in Object(value)\n ? schema[SEQ]\n : schema[MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexport { createNode };\n","import { createNode } from '../doc/createNode.js';\nimport { isNode, isPair, isCollection, isScalar } from './identity.js';\nimport { NodeBase } from './Node.js';\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && isScalar(node) ? node.value : node;\n else\n return isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\nCollection.maxFlowStringSingleLineLength = 60;\n\nexport { Collection, collectionFromPath, isEmptyPath };\n","/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexport { indentComment, lineComment, stringifyComment };\n","const FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexport { FOLD_BLOCK, FOLD_FLOW, FOLD_QUOTED, foldFlowLines };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { foldFlowLines, FOLD_QUOTED, FOLD_FLOW, FOLD_BLOCK } from './foldFlowLines.js';\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n let header = (literal ? '|' : '>') + (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (literal) {\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `${header}\\n${indent}${start}${value}${end}`;\n }\n value = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n const body = foldFlowLines(`${start}${value}${end}`, indent, FOLD_BLOCK, getFoldOptions(ctx, true));\n return `${header}\\n${indent}${body}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (!value ||\n /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.BLOCK_FOLDED:\n case Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexport { stringifyString };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { isPair, isAlias, isNode, isScalar, isCollection } from '../nodes/identity.js';\nimport { stringifyComment } from './stringifyComment.js';\nimport { stringifyString } from './stringifyString.js';\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (isScalar(item)) {\n obj = item.value;\n const match = tags.filter(t => t.identify?.(obj));\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (isScalar(node) || isCollection(node)) && node.anchor;\n if (anchor && anchorIsValid(anchor)) {\n anchors.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : isScalar(node)\n ? stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexport { createStringifyContext, stringify };\n","import { isCollection, isNode, isScalar, isSeq } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (isCollection(key)) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n isCollection(key) ||\n (isScalar(key)\n ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexport { stringifyPair };\n","function debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n // https://github.com/typescript-eslint/typescript-eslint/issues/7478\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof process !== 'undefined' && process.emitWarning)\n process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexport { debug, warn };\n","import { warn } from '../log.js';\nimport { createStringifyContext } from '../stringify/stringify.js';\nimport { isAlias, isSeq, isScalar, isMap, isNode } from './identity.js';\nimport { Scalar } from './Scalar.js';\nimport { toJS } from './toJS.js';\n\nconst MERGE_KEY = '<<';\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (ctx?.doc.schema.merge && isMergeKey(key)) {\n value = isAlias(value) ? value.resolve(ctx.doc) : value;\n if (isSeq(value))\n for (const it of value.items)\n mergeToJSMap(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeToJSMap(ctx, map, it);\n else\n mergeToJSMap(ctx, map, value);\n }\n else {\n const jsKey = toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nconst isMergeKey = (key) => key === MERGE_KEY ||\n (isScalar(key) &&\n key.value === MERGE_KEY &&\n (!key.type || key.type === Scalar.PLAIN));\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nfunction mergeToJSMap(ctx, map, value) {\n const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (isNode(key) && ctx?.doc) {\n const strCtx = createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexport { addPairToJSMap };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyPair } from '../stringify/stringifyPair.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { NODE_TYPE, PAIR, isNode } from './identity.js';\n\nfunction createPair(key, value, ctx) {\n const k = createNode(key, undefined, ctx);\n const v = createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, NODE_TYPE, { value: PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (isNode(key))\n key = key.clone(schema);\n if (isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexport { Pair, createPair };\n","import { isNode, isPair } from '../nodes/identity.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexport { stringifyCollection };\n","import { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { Collection } from './Collection.js';\nimport { isPair, isScalar, MAP } from './identity.js';\nimport { Pair, createPair } from './Pair.js';\nimport { isScalarValue } from './Scalar.js';\n\nfunction findPair(items, key) {\n const k = isScalar(key) ? key.value : key;\n for (const it of items) {\n if (isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair(pair, pair?.value);\n }\n else\n _pair = new Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (isScalar(prev.value) && isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexport { YAMLMap, findPair };\n","import { isMap } from '../../nodes/identity.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)\n};\n\nexport { map };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { Collection } from './Collection.js';\nimport { SEQ, isScalar } from './identity.js';\nimport { isScalarValue } from './Scalar.js';\nimport { toJS } from './toJS.js';\n\nclass YAMLSeq extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (isScalar(prev) && isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexport { YAMLSeq };\n","import { isSeq } from '../../nodes/identity.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)\n};\n\nexport { seq };\n","import { stringifyString } from '../../stringify/stringifyString.js';\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexport { string };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexport { nullTag };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexport { boolTag };\n","function stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexport { stringifyNumber };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF|nan|NaN|NAN))$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intHex, intOct };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { boolTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intOct, int, intHex } from './int.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n boolTag,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float\n];\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { map } from '../common/map.js';\nimport { seq } from '../common/seq.js';\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true|false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map, seq].concat(jsonScalars, jsonError);\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyString } from '../../stringify/stringifyString.js';\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof Buffer === 'function') {\n return Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof Buffer === 'function') {\n str =\n buf instanceof Buffer\n ? buf.toString('base64')\n : Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n if (!type)\n type = Scalar.BLOCK_LITERAL;\n if (type !== Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexport { binary };\n","import { isSeq, isPair, isMap } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { Scalar } from '../../nodes/Scalar.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nfunction resolvePairs(seq, onError) {\n if (isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (isPair(item))\n continue;\n else if (isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair(new Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = isPair(item) ? item : new Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexport { createPairs, pairs, resolvePairs };\n","import { isScalar, isPair } from '../../nodes/identity.js';\nimport { toJS } from '../../nodes/toJS.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\nimport { resolvePairs, createPairs } from './pairs.js';\n\nclass YAMLOMap extends YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (isPair(pair)) {\n key = toJS(pair.key, '', ctx);\n value = toJS(pair.value, key, ctx);\n }\n else {\n key = toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs = createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs = resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs.items) {\n if (isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexport { YAMLOMap, omap };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,\n resolve: () => new Scalar(false),\n stringify: boolStringify\n};\n\nexport { falseTag, trueTag };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?\\.(?:inf|Inf|INF|nan|NaN|NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intBin, intHex, intOct };\n","import { isMap, isPair, isScalar } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { YAMLMap, findPair } from '../../nodes/YAMLMap.js';\n\nclass YAMLSet extends YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair(key.key, null);\n else\n pair = new Pair(key, null);\n const prev = findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = findPair(this.items, key);\n return !keepPair && isPair(pair)\n ? isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexport { YAMLSet, set };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value.toISOString().replace(/((T00:00)?:00)?\\.000Z$/, '')\n};\n\nexport { floatTime, intTime, timestamp };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { binary } from './binary.js';\nimport { trueTag, falseTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intBin, intOct, int, intHex } from './int.js';\nimport { omap } from './omap.js';\nimport { pairs } from './pairs.js';\nimport { set } from './set.js';\nimport { intTime, floatTime, timestamp } from './timestamp.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n trueTag,\n falseTag,\n intBin,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float,\n binary,\n omap,\n pairs,\n set,\n intTime,\n floatTime,\n timestamp\n];\n\nexport { schema };\n","import { map } from './common/map.js';\nimport { nullTag } from './common/null.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { boolTag } from './core/bool.js';\nimport { float, floatExp, floatNaN } from './core/float.js';\nimport { int, intHex, intOct } from './core/int.js';\nimport { schema } from './core/schema.js';\nimport { schema as schema$1 } from './json/schema.js';\nimport { binary } from './yaml-1.1/binary.js';\nimport { omap } from './yaml-1.1/omap.js';\nimport { pairs } from './yaml-1.1/pairs.js';\nimport { schema as schema$2 } from './yaml-1.1/schema.js';\nimport { set } from './yaml-1.1/set.js';\nimport { timestamp, floatTime, intTime } from './yaml-1.1/timestamp.js';\n\nconst schemas = new Map([\n ['core', schema],\n ['failsafe', [map, seq, string]],\n ['json', schema$1],\n ['yaml11', schema$2],\n ['yaml-1.1', schema$2]\n]);\nconst tagsByName = {\n binary,\n bool: boolTag,\n float,\n floatExp,\n floatNaN,\n floatTime,\n int,\n intHex,\n intOct,\n intTime,\n map,\n null: nullTag,\n omap,\n pairs,\n seq,\n set,\n timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary,\n 'tag:yaml.org,2002:omap': omap,\n 'tag:yaml.org,2002:pairs': pairs,\n 'tag:yaml.org,2002:set': set,\n 'tag:yaml.org,2002:timestamp': timestamp\n};\nfunction getTags(customTags, schemaName) {\n let tags = schemas.get(schemaName);\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n return tags.map(tag => {\n if (typeof tag !== 'string')\n return tag;\n const tagObj = tagsByName[tag];\n if (tagObj)\n return tagObj;\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag \"${tag}\"; use one of ${keys}`);\n });\n}\n\nexport { coreKnownTags, getTags };\n","import { MAP, SCALAR, SEQ } from '../nodes/identity.js';\nimport { map } from './common/map.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { getTags, coreKnownTags } from './tags.js';\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? getTags(compat, 'compat')\n : compat\n ? getTags(null, compat)\n : null;\n this.merge = !!merge;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? coreKnownTags : {};\n this.tags = getTags(customTags, this.name);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, MAP, { value: map });\n Object.defineProperty(this, SCALAR, { value: string });\n Object.defineProperty(this, SEQ, { value: seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexport { Schema };\n","import { isNode } from '../nodes/identity.js';\nimport { createStringifyContext, stringify } from './stringify.js';\nimport { indentComment, lineComment } from './stringifyComment.js';\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexport { stringifyDocument };\n","import { Alias } from '../nodes/Alias.js';\nimport { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';\nimport { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { toJS } from '../nodes/toJS.js';\nimport { Schema } from '../schema/Schema.js';\nimport { stringifyDocument } from '../stringify/stringifyDocument.js';\nimport { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';\nimport { applyReviver } from './applyReviver.js';\nimport { createNode } from './createNode.js';\nimport { Directives } from './directives.js';\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, NODE_TYPE, { value: DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [NODE_TYPE]: { value: DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode(value, tag, ctx);\n if (flow && isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (isEmptyPath(path))\n return !keepScalar && isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (isEmptyPath(path))\n return this.contents !== undefined;\n return isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new Directives({ version: '1.1' });\n opt = { merge: true, resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new Directives({ version });\n opt = { merge: false, resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexport { Document };\n","class YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexport { YAMLError, YAMLParseError, YAMLWarning, prettifyError };\n","function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let hasNewlineAfterProp = false;\n let reqSpace = false;\n let anchor = null;\n let tag = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n atNewline &&\n indicator !== 'doc-start' &&\n token.source[0] === '\\t')\n onError(token, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n hasNewlineAfterProp = true;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline = false;\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== ''))\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n hasNewlineAfterProp,\n anchor,\n tag,\n end,\n start: start ?? end\n };\n}\n\nexport { resolveProps };\n","function containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexport { containsNewline };\n","import { containsNewline } from './util-contains-newline.js';\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexport { flowIndentCheck };\n","import { isScalar } from '../nodes/identity.js';\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b ||\n (isScalar(a) &&\n isScalar(b) &&\n a.value === b.value &&\n !(a.value === '<<' && ctx.schema.merge));\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexport { mapIncludes };\n","import { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.hasNewlineAfterProp || containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, key, onError);\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexport { resolveBlockMap };\n","import { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveProps } from './resolve-props.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexport { resolveBlockSeq };\n","function resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexport { resolveEnd };\n","import { isPair } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexport { resolveFlowCollection };\n","import { isNode } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveBlockMap } from './resolve-block-map.js';\nimport { resolveBlockSeq } from './resolve-block-seq.js';\nimport { resolveFlowCollection } from './resolve-flow-collection.js';\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, tagToken, onError) {\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.tagName && expType === 'seq') ||\n !expType) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt?.collection) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = isNode(res)\n ? res\n : new Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexport { composeCollection };\n","import { Scalar } from '../nodes/Scalar.js';\n\nfunction resolveBlockScalar(scalar, strict, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexport { resolveBlockScalar };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexport { resolveFlowScalar };\n","import { SCALAR, isScalar } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { resolveBlockScalar } from './resolve-block-scalar.js';\nimport { resolveFlowScalar } from './resolve-flow-scalar.js';\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar(token, ctx.options.strict, onError)\n : resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n const tag = tagToken && tagName\n ? findScalarTagByName(ctx.schema, value, tagName, tagToken, onError)\n : token.type === 'scalar'\n ? findScalarTagByTest(ctx, value, token, onError)\n : ctx.schema[SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = isScalar(res) ? res : new Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[SCALAR];\n}\nfunction findScalarTagByTest({ directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => tag.default && tag.test?.test(value)) || schema[SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexport { composeScalar };\n","function emptyScalarPosition(offset, before, pos) {\n if (before) {\n if (pos === null)\n pos = before.length;\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexport { emptyScalarPosition };\n","import { Alias } from '../nodes/Alias.js';\nimport { composeCollection } from './compose-collection.js';\nimport { composeScalar } from './compose-scalar.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { emptyScalarPosition } from './util-empty-scalar-position.js';\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection(CN, ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexport { composeEmptyNode, composeNode };\n","import { Document } from '../doc/Document.js';\nimport { composeNode, composeEmptyNode } from './compose-node.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document(undefined, opts);\n const ctx = {\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexport { composeDoc };\n","import { Directives } from '../doc/directives.js';\nimport { Document } from '../doc/Document.js';\nimport { YAMLWarning, YAMLParseError } from '../errors.js';\nimport { isCollection, isPair } from '../nodes/identity.js';\nimport { composeDoc } from './compose-doc.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new YAMLWarning(pos, code, message));\n else\n this.errors.push(new YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexport { Composer };\n","import { resolveBlockScalar } from '../compose/resolve-block-scalar.js';\nimport { resolveFlowScalar } from '../compose/resolve-flow-scalar.js';\nimport { YAMLParseError } from '../errors.js';\nimport { stringifyString } from '../stringify/stringifyString.js';\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar(token, strict, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexport { createScalarToken, resolveAsScalar, setScalarValue };\n","const BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexport { visit };\n","export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar.js';\nexport { stringify } from './cst-stringify.js';\nexport { visit } from './cst-visit.js';\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexport { BOM, DOCUMENT, FLOW_END, SCALAR, isCollection, isScalar, prettyToken, tokenType };\n","import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = '0123456789ABCDEFabcdef'.split('');\nconst tagChars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\".split('');\nconst invalidFlowScalarChars = ',[]{}'.split('');\nconst invalidAnchorChars = ' ,[]{}\\n\\r\\t'.split('');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.includes(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n const cs = line.indexOf('#');\n if (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd = cs - 1;\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if (s === '---' && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return 'doc';\n }\n else if (s === '...' && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n return 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else\n this.indentNext += this.blockScalarIndent;\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && next === ','))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && invalidFlowScalarChars.includes(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && invalidFlowScalarChars.includes(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && invalidFlowScalarChars.includes(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.includes(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.includes(this.buffer[i + 1]) &&\n hexDigits.includes(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexport { Lexer };\n","import { tokenType } from './cst.js';\nimport { Lexer } from './lexer.js';\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !includesToken(it.start, 'explicit-key-ind');\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atNextItem = !this.onKeyLine &&\n this.indent === map.indent &&\n it.sep &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !includesToken(it.start, 'explicit-key-ind')) {\n it.start.push(this.sourceToken);\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (includesToken(it.start, 'explicit-key-ind')) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key, delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (atNextItem &&\n bv.type !== 'block-seq' &&\n includesToken(it.start, 'explicit-key-ind')) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexport { Parser };\n","import { Composer } from './compose/composer.js';\nimport { Document } from './doc/Document.js';\nimport { prettifyError, YAMLParseError } from './errors.js';\nimport { warn } from './log.js';\nimport { LineCounter } from './parse/line-counter.js';\nimport { Parser } from './parse/parser.js';\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;\n return { lineCounter, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n const docs = Array.from(composer.compose(parser.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer.compose(parser.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n return new Document(value, _replacer, options).toString(options);\n}\n\nexport { parse, parseAllDocuments, parseDocument, stringify };\n","// `export * as default from ...` fails on Webpack v4\n// https://github.com/eemeli/yaml/issues/228\nimport * as YAML from './dist/index.js'\nexport default YAML\nexport * from './dist/index.js'\n","export { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client';\nimport { createApiRef, useApiHolder, useApi, identityApiRef, alertApiRef, configApiRef, createRouteRef, useRouteRef, useApp } from '@backstage/core-plugin-api';\nimport { stringifyEntityRef, DEFAULT_NAMESPACE, ANNOTATION_SOURCE_LOCATION, parseLocationRef, parseEntityRef, RELATION_OWNED_BY, getCompoundEntityRef, isUserEntity, isGroupEntity, RELATION_PART_OF, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION } from '@backstage/catalog-model';\nimport get from 'lodash/get';\nimport React, { useState, useEffect, useMemo, createContext, useCallback, useContext, useRef, memo, Fragment, forwardRef, useLayoutEffect } from 'react';\nimport ObservableImpl from 'zen-observable';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport Drawer from '@material-ui/core/Drawer';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTheme, makeStyles, withStyles } from '@material-ui/core/styles';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport { Select, Link, ResponseErrorPanel, Progress, OverflowTooltip, Table, DependencyGraph, DependencyGraphTypes, CodeSnippet, CopyTextButton, EmptyState } from '@backstage/core-components';\nimport { g as getEntityRelations, u as useEntity } from './esm/useEntity-DuPQWZpR.esm.js';\nexport { A as AsyncEntityProvider, E as EntityProvider, a as useAsyncEntity } from './esm/useEntity-DuPQWZpR.esm.js';\nimport { compact, isEqual, intersection, debounce } from 'lodash';\nimport qs from 'qs';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport useAsyncFn from 'react-use/esm/useAsyncFn';\nimport useDebounce from 'react-use/esm/useDebounce';\nimport useMountedState from 'react-use/esm/useMountedState';\nimport useAsync from 'react-use/esm/useAsync';\nimport isEqual$1 from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport useObservable from 'react-use/esm/useObservable';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { useMountEffect, useDebouncedEffect } from '@react-hookz/web';\nimport PersonIcon from '@material-ui/icons/Person';\nimport GroupIcon from '@material-ui/icons/Group';\nimport Card from '@material-ui/core/Card';\nimport List from '@material-ui/core/List';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText$1 from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport StarIcon from '@material-ui/icons/Star';\nimport useDeepCompareEffect from 'react-use/esm/useDeepCompareEffect';\nimport { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\nimport HoverPopover from 'material-ui-popup-state/HoverPopover';\nimport { usePopupState, bindHover, bindPopover } from 'material-ui-popup-state/hooks';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Chip from '@material-ui/core/Chip';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/Info';\nimport EmailIcon from '@material-ui/icons/Email';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Clear from '@material-ui/icons/Clear';\nimport Search from '@material-ui/icons/Search';\nimport useDebounce$1 from 'react-use/lib/useDebounce';\nimport StarBorder from '@material-ui/icons/StarBorder';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Tab from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport ListItem from '@material-ui/core/ListItem';\nimport Alert from '@material-ui/lab/Alert';\nimport MuiListSubheader from '@material-ui/core/ListSubheader';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport groupBy from 'lodash/groupBy';\nimport YAML from 'yaml';\nimport Divider from '@material-ui/core/Divider';\nimport { assertError } from '@backstage/errors';\n\nconst catalogApiRef = createApiRef({\n id: \"plugin.catalog.service\"\n});\n\nconst entityPresentationApiRef = createApiRef({\n id: \"plugin.catalog.entity-presentation\"\n});\n\nfunction defaultEntityPresentation(entityOrRef, context) {\n const { kind, namespace, name, title, description, displayName, type } = getParts(entityOrRef);\n const entityRef = stringifyEntityRef({\n kind: kind || \"unknown\",\n namespace: namespace || DEFAULT_NAMESPACE,\n name: name || \"unknown\"\n });\n const shortRef = getShortRef({ kind, namespace, name, context });\n const primary = [displayName, title, shortRef].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n const secondary = [\n primary !== entityRef ? entityRef : void 0,\n type,\n description\n ].filter((candidate) => candidate && typeof candidate === \"string\").join(\" | \");\n return {\n entityRef,\n primaryTitle: primary,\n secondaryTitle: secondary || void 0,\n Icon: void 0\n // leave it up to the presentation API to handle\n };\n}\nfunction getParts(entityOrRef) {\n if (typeof entityOrRef === \"string\") {\n let colonI = entityOrRef.indexOf(\":\");\n const slashI = entityOrRef.indexOf(\"/\");\n if (slashI !== -1 && slashI < colonI) {\n colonI = -1;\n }\n const kind = colonI === -1 ? void 0 : entityOrRef.slice(0, colonI);\n const namespace = slashI === -1 ? void 0 : entityOrRef.slice(colonI + 1, slashI);\n const name = entityOrRef.slice(Math.max(colonI + 1, slashI + 1));\n return { kind, namespace, name };\n }\n if (typeof entityOrRef === \"object\" && entityOrRef !== null) {\n const kind = [get(entityOrRef, \"kind\")].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n const namespace = [\n get(entityOrRef, \"metadata.namespace\"),\n get(entityOrRef, \"namespace\")\n ].find((candidate) => candidate && typeof candidate === \"string\");\n const name = [\n get(entityOrRef, \"metadata.name\"),\n get(entityOrRef, \"name\")\n ].find((candidate) => candidate && typeof candidate === \"string\");\n const title = [get(entityOrRef, \"metadata.title\")].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n const description = [get(entityOrRef, \"metadata.description\")].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n const displayName = [get(entityOrRef, \"spec.profile.displayName\")].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n const type = [get(entityOrRef, \"spec.type\")].find(\n (candidate) => candidate && typeof candidate === \"string\"\n );\n return { kind, namespace, name, title, description, displayName, type };\n }\n return {};\n}\nfunction getShortRef(options) {\n var _a, _b, _c, _d, _e;\n const kind = ((_a = options.kind) == null ? void 0 : _a.toLocaleLowerCase(\"en-US\")) || \"unknown\";\n const namespace = options.namespace || DEFAULT_NAMESPACE;\n const name = options.name || \"unknown\";\n const defaultKindLower = (_c = (_b = options.context) == null ? void 0 : _b.defaultKind) == null ? void 0 : _c.toLocaleLowerCase(\"en-US\");\n const defaultNamespaceLower = (_e = (_d = options.context) == null ? void 0 : _d.defaultNamespace) == null ? void 0 : _e.toLocaleLowerCase(\"en-US\");\n let result = name;\n if (defaultNamespaceLower && namespace.toLocaleLowerCase(\"en-US\") !== defaultNamespaceLower || namespace !== DEFAULT_NAMESPACE) {\n result = `${namespace}/${result}`;\n }\n if (defaultKindLower && kind.toLocaleLowerCase(\"en-US\") !== defaultKindLower) {\n result = `${kind}:${result}`;\n }\n return result;\n}\n\nfunction useUpdatingObservable(value, observable, deps) {\n const [snapshot, setSnapshot] = useState(value);\n useEffect(() => {\n setSnapshot(value);\n const subscription = observable == null ? void 0 : observable.subscribe({\n next: (updatedValue) => {\n setSnapshot(updatedValue);\n },\n complete: () => {\n subscription == null ? void 0 : subscription.unsubscribe();\n }\n });\n return () => {\n subscription == null ? void 0 : subscription.unsubscribe();\n };\n }, deps);\n return snapshot;\n}\n\nfunction useEntityPresentation(entityOrRef, context) {\n const apis = useApiHolder();\n const entityPresentationApi = apis.get(entityPresentationApiRef);\n const deps = [\n entityPresentationApi,\n JSON.stringify(entityOrRef),\n JSON.stringify(context || null)\n ];\n const presentation = useMemo(\n () => {\n if (!entityPresentationApi) {\n return { snapshot: defaultEntityPresentation(entityOrRef, context) };\n }\n return entityPresentationApi.forEntity(\n typeof entityOrRef === \"string\" || \"metadata\" in entityOrRef ? entityOrRef : stringifyEntityRef(entityOrRef),\n context\n );\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps\n );\n return useUpdatingObservable(presentation.snapshot, presentation.update$, [\n presentation\n ]);\n}\n\nconst starredEntitiesApiRef = createApiRef({\n id: \"catalog-react.starred-entities\"\n});\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass MockStarredEntitiesApi {\n constructor() {\n __publicField$1(this, \"starredEntities\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"subscribers\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"observable\", new ObservableImpl((subscriber) => {\n subscriber.next(new Set(this.starredEntities));\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n }));\n }\n async toggleStarred(entityRef) {\n if (!this.starredEntities.delete(entityRef)) {\n this.starredEntities.add(entityRef);\n }\n for (const subscription of this.subscribers) {\n subscription.next(new Set(this.starredEntities));\n }\n }\n starredEntitie$() {\n return this.observable;\n }\n}\n\nconst Filters = (props) => {\n var _a, _b;\n const isScreenSmallerThanBreakpoint = useMediaQuery(\n (theme2) => {\n var _a2, _b2;\n return theme2.breakpoints.down((_b2 = (_a2 = props.options) == null ? void 0 : _a2.drawerBreakpoint) != null ? _b2 : \"md\");\n }\n );\n const theme = useTheme();\n const [filterDrawerOpen, setFilterDrawerOpen] = useState(false);\n return isScreenSmallerThanBreakpoint ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n Button,\n {\n style: { marginTop: theme.spacing(1), marginLeft: theme.spacing(1) },\n onClick: () => setFilterDrawerOpen(true),\n startIcon: /* @__PURE__ */ React.createElement(FilterListIcon, null)\n },\n \"Filters\"\n ), /* @__PURE__ */ React.createElement(\n Drawer,\n {\n open: filterDrawerOpen,\n onClose: () => setFilterDrawerOpen(false),\n anchor: (_b = (_a = props.options) == null ? void 0 : _a.drawerAnchor) != null ? _b : \"left\",\n disableAutoFocus: true,\n keepMounted: true,\n variant: \"temporary\"\n },\n /* @__PURE__ */ React.createElement(Box, { m: 2 }, /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"h6\",\n component: \"h2\",\n style: { marginBottom: theme.spacing(1) }\n },\n \"Filters\"\n ), props.children)\n )) : /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 2 }, props.children);\n};\nconst Content = (props) => {\n return /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, lg: 10 }, props.children);\n};\nconst CatalogFilterLayout = (props) => {\n return /* @__PURE__ */ React.createElement(Grid, { container: true, style: { position: \"relative\" } }, props.children);\n};\nCatalogFilterLayout.Filters = Filters;\nCatalogFilterLayout.Content = Content;\n\nfunction isEntityTextFilter(t) {\n return !!t.getFullTextFilters;\n}\nfunction reduceCatalogFilters(filters) {\n var _a;\n const condensedFilters = filters.reduce(\n (compoundFilter, filter) => {\n return {\n ...compoundFilter,\n ...filter.getCatalogFilters ? filter.getCatalogFilters() : {}\n };\n },\n {}\n );\n const fullTextFilter = (_a = filters.find(isEntityTextFilter)) == null ? void 0 : _a.getFullTextFilters();\n return { filter: condensedFilters, fullTextFilter };\n}\nfunction reduceBackendCatalogFilters(filters) {\n const backendCatalogFilters = {};\n filters.forEach((filter) => {\n var _a;\n if (filter instanceof EntityTagFilter || filter instanceof EntityOwnerFilter || filter instanceof EntityLifecycleFilter || filter instanceof EntityNamespaceFilter || filter instanceof EntityUserFilter || filter instanceof EntityOrphanFilter || filter instanceof EntityTextFilter || filter instanceof UserListFilter) {\n return;\n }\n Object.assign(backendCatalogFilters, ((_a = filter.getCatalogFilters) == null ? void 0 : _a.call(filter)) || {});\n });\n return backendCatalogFilters;\n}\nfunction reduceEntityFilters(filters) {\n return (entity) => filters.every(\n (filter) => !filter.filterEntity || filter.filterEntity(entity)\n );\n}\n\nfunction getEntitySourceLocation(entity, scmIntegrationsApi) {\n var _a;\n const sourceLocation = (_a = entity.metadata.annotations) == null ? void 0 : _a[ANNOTATION_SOURCE_LOCATION];\n if (!sourceLocation) {\n return void 0;\n }\n try {\n const sourceLocationRef = parseLocationRef(sourceLocation);\n const integration = scmIntegrationsApi.byUrl(sourceLocationRef.target);\n return {\n locationTargetUrl: sourceLocationRef.target,\n integrationType: integration == null ? void 0 : integration.type\n };\n } catch {\n return void 0;\n }\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass EntityKindFilter {\n constructor(value) {\n this.value = value;\n }\n getCatalogFilters() {\n return { kind: this.value };\n }\n toQueryValue() {\n return this.value;\n }\n}\nclass EntityTypeFilter {\n constructor(value) {\n this.value = value;\n }\n // Simplify `string | string[]` for consumers, always returns an array\n getTypes() {\n return Array.isArray(this.value) ? this.value : [this.value];\n }\n getCatalogFilters() {\n return { \"spec.type\": this.getTypes() };\n }\n toQueryValue() {\n return this.getTypes();\n }\n}\nclass EntityTagFilter {\n constructor(values) {\n this.values = values;\n }\n filterEntity(entity) {\n return this.values.every((v) => {\n var _a;\n return ((_a = entity.metadata.tags) != null ? _a : []).includes(v);\n });\n }\n getCatalogFilters() {\n return { \"metadata.tags\": this.values };\n }\n toQueryValue() {\n return this.values;\n }\n}\nclass EntityTextFilter {\n constructor(value) {\n this.value = value;\n }\n filterEntity(entity) {\n const words = this.toUpperArray(this.value.split(/\\s/));\n const exactMatch = this.toUpperArray([entity.metadata.tags]);\n const partialMatch = this.toUpperArray([\n entity.metadata.name,\n entity.metadata.title\n ]);\n for (const word of words) {\n if (exactMatch.every((m) => m !== word) && partialMatch.every((m) => !m.includes(word))) {\n return false;\n }\n }\n return true;\n }\n getFullTextFilters() {\n return {\n term: this.value,\n // Update this to be more dynamic based on table columns.\n fields: [\"metadata.name\", \"metadata.title\", \"spec.profile.displayName\"]\n };\n }\n toQueryValue() {\n return this.value;\n }\n toUpperArray(value) {\n return value.flat().filter((m) => Boolean(m)).map((m) => m.toLocaleUpperCase(\"en-US\"));\n }\n}\nclass EntityOwnerFilter {\n constructor(values) {\n __publicField(this, \"values\");\n this.values = values.reduce((fullRefs, ref) => {\n try {\n fullRefs.push(\n stringifyEntityRef(parseEntityRef(ref, { defaultKind: \"Group\" }))\n );\n return fullRefs;\n } catch (err) {\n return fullRefs;\n }\n }, []);\n }\n getCatalogFilters() {\n return { \"relations.ownedBy\": this.values };\n }\n filterEntity(entity) {\n return this.values.some(\n (v) => getEntityRelations(entity, RELATION_OWNED_BY).some(\n (o) => stringifyEntityRef(o) === v\n )\n );\n }\n /**\n * Get the URL query parameter value. May be a mix of full and humanized entity refs.\n * @returns list of entity refs.\n */\n toQueryValue() {\n return this.values;\n }\n}\nclass EntityLifecycleFilter {\n constructor(values) {\n this.values = values;\n }\n getCatalogFilters() {\n return { \"spec.lifecycle\": this.values };\n }\n filterEntity(entity) {\n return this.values.some((v) => {\n var _a;\n return ((_a = entity.spec) == null ? void 0 : _a.lifecycle) === v;\n });\n }\n toQueryValue() {\n return this.values;\n }\n}\nclass EntityNamespaceFilter {\n constructor(values) {\n this.values = values;\n }\n getCatalogFilters() {\n return { \"metadata.namespace\": this.values };\n }\n filterEntity(entity) {\n return this.values.some((v) => entity.metadata.namespace === v);\n }\n toQueryValue() {\n return this.values;\n }\n}\nclass EntityUserFilter {\n constructor(value, refs) {\n this.value = value;\n this.refs = refs;\n }\n static owned(ownershipEntityRefs) {\n return new EntityUserFilter(\"owned\", ownershipEntityRefs);\n }\n static all() {\n return new EntityUserFilter(\"all\");\n }\n static starred(starredEntityRefs) {\n return new EntityUserFilter(\"starred\", starredEntityRefs);\n }\n getCatalogFilters() {\n var _a, _b, _c;\n if (this.value === \"owned\") {\n return { \"relations.ownedBy\": (_a = this.refs) != null ? _a : [] };\n }\n if (this.value === \"starred\") {\n return {\n \"metadata.name\": (_c = (_b = this.refs) == null ? void 0 : _b.map((e) => parseEntityRef(e).name)) != null ? _c : []\n };\n }\n return {};\n }\n filterEntity(entity) {\n var _a, _b, _c, _d;\n if (this.value === \"starred\") {\n return (_b = (_a = this.refs) == null ? void 0 : _a.includes(stringifyEntityRef(entity))) != null ? _b : true;\n }\n if (this.value === \"owned\") {\n const relations = getEntityRelations(entity, RELATION_OWNED_BY);\n return (_d = (_c = this.refs) == null ? void 0 : _c.some(\n (v) => relations.some((o) => stringifyEntityRef(o) === v)\n )) != null ? _d : false;\n }\n return true;\n }\n toQueryValue() {\n return this.value;\n }\n}\nclass UserListFilter {\n constructor(value, isOwnedEntity, isStarredEntity) {\n this.value = value;\n this.isOwnedEntity = isOwnedEntity;\n this.isStarredEntity = isStarredEntity;\n }\n filterEntity(entity) {\n switch (this.value) {\n case \"owned\":\n return this.isOwnedEntity(entity);\n case \"starred\":\n return this.isStarredEntity(entity);\n default:\n return true;\n }\n }\n toQueryValue() {\n return this.value;\n }\n}\nclass EntityOrphanFilter {\n constructor(value) {\n this.value = value;\n }\n getCatalogFilters() {\n if (this.value) {\n return { \"metadata.annotations.backstage.io/orphan\": String(this.value) };\n }\n return {};\n }\n filterEntity(entity) {\n var _a;\n const orphan = (_a = entity.metadata.annotations) == null ? void 0 : _a[\"backstage.io/orphan\"];\n return orphan !== void 0 && this.value.toString() === orphan;\n }\n}\nclass EntityErrorFilter {\n constructor(value) {\n this.value = value;\n }\n filterEntity(entity) {\n var _a, _b;\n const error = ((_b = (_a = entity == null ? void 0 : entity.status) == null ? void 0 : _a.items) == null ? void 0 : _b.length) > 0;\n return error !== void 0 && this.value === error;\n }\n}\n\nconst EntityListContext = createContext(void 0);\nconst EntityListProvider = (props) => {\n const isMounted = useMountedState();\n const catalogApi = useApi(catalogApiRef);\n const [requestedFilters, setRequestedFilters] = useState(\n {}\n );\n const location = useLocation();\n const enablePagination = props.pagination === true || typeof props.pagination === \"object\";\n const limit = props.pagination && typeof props.pagination === \"object\" && typeof props.pagination.limit === \"number\" ? props.pagination.limit : 20;\n const { queryParameters, cursor: initialCursor } = useMemo(() => {\n var _a;\n const parsed = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n return {\n queryParameters: (_a = parsed.filters) != null ? _a : {},\n cursor: typeof parsed.cursor === \"string\" ? parsed.cursor : void 0\n };\n }, [location]);\n const [cursor, setCursor] = useState(initialCursor);\n const [outputState, setOutputState] = useState(\n () => {\n return {\n appliedFilters: {},\n entities: [],\n backendEntities: [],\n pageInfo: enablePagination ? {} : void 0\n };\n }\n );\n const [{ loading, error }, refresh] = useAsyncFn(\n async () => {\n var _a;\n const compacted = compact(Object.values(requestedFilters));\n const queryParams = Object.keys(requestedFilters).reduce(\n (params, key) => {\n const filter = requestedFilters[key];\n if (filter == null ? void 0 : filter.toQueryValue) {\n params[key] = filter.toQueryValue();\n }\n return params;\n },\n {}\n );\n if (enablePagination) {\n if (cursor) {\n if (cursor !== outputState.appliedCursor) {\n const entityFilter = reduceEntityFilters(compacted);\n const response = await catalogApi.queryEntities({\n cursor,\n limit\n });\n setOutputState({\n appliedFilters: requestedFilters,\n appliedCursor: cursor,\n backendEntities: response.items,\n entities: response.items.filter(entityFilter),\n pageInfo: response.pageInfo,\n totalItems: response.totalItems\n });\n }\n } else {\n const entityFilter = reduceEntityFilters(compacted);\n const backendFilter = reduceCatalogFilters(compacted);\n const previousBackendFilter = reduceCatalogFilters(\n compact(Object.values(outputState.appliedFilters))\n );\n if (!isEqual(previousBackendFilter, backendFilter)) {\n const response = await catalogApi.queryEntities({\n ...backendFilter,\n limit,\n orderFields: [{ field: \"metadata.name\", order: \"asc\" }]\n });\n setOutputState({\n appliedFilters: requestedFilters,\n backendEntities: response.items,\n entities: response.items.filter(entityFilter),\n pageInfo: response.pageInfo,\n totalItems: response.totalItems\n });\n }\n }\n } else {\n const entityFilter = reduceEntityFilters(compacted);\n const backendFilter = reduceBackendCatalogFilters(compacted);\n const previousBackendFilter = reduceBackendCatalogFilters(\n compact(Object.values(outputState.appliedFilters))\n );\n if (!isEqual(previousBackendFilter, backendFilter)) {\n const response = await catalogApi.getEntities({\n filter: backendFilter\n });\n const entities = response.items.filter(entityFilter);\n setOutputState({\n appliedFilters: requestedFilters,\n backendEntities: response.items,\n entities,\n totalItems: entities.length\n });\n } else {\n const entities = outputState.backendEntities.filter(entityFilter);\n setOutputState({\n appliedFilters: requestedFilters,\n backendEntities: outputState.backendEntities,\n entities,\n totalItems: entities.length\n });\n }\n }\n if (isMounted()) {\n const oldParams = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n const newParams = qs.stringify(\n { ...oldParams, filters: queryParams, cursor },\n { addQueryPrefix: true, arrayFormat: \"repeat\" }\n );\n const newUrl = `${window.location.pathname}${newParams}`;\n (_a = window.history) == null ? void 0 : _a.replaceState(null, document.title, newUrl);\n }\n },\n [\n catalogApi,\n queryParameters,\n requestedFilters,\n outputState,\n cursor,\n enablePagination\n ],\n { loading: true }\n );\n useDebounce(refresh, 10, [requestedFilters, cursor]);\n const updateFilters = useCallback(\n (update) => {\n setCursor(void 0);\n setRequestedFilters((prevFilters) => {\n const newFilters = typeof update === \"function\" ? update(prevFilters) : update;\n return { ...prevFilters, ...newFilters };\n });\n },\n []\n );\n const pageInfo = useMemo(() => {\n var _a, _b;\n if (!enablePagination) {\n return void 0;\n }\n const prevCursor = (_a = outputState.pageInfo) == null ? void 0 : _a.prevCursor;\n const nextCursor = (_b = outputState.pageInfo) == null ? void 0 : _b.nextCursor;\n return {\n prev: prevCursor ? () => setCursor(prevCursor) : void 0,\n next: nextCursor ? () => setCursor(nextCursor) : void 0\n };\n }, [enablePagination, outputState.pageInfo]);\n const value = useMemo(\n () => ({\n filters: outputState.appliedFilters,\n entities: outputState.entities,\n backendEntities: outputState.backendEntities,\n updateFilters,\n queryParameters,\n loading,\n error,\n pageInfo,\n totalItems: outputState.totalItems\n }),\n [outputState, updateFilters, queryParameters, loading, error, pageInfo]\n );\n return /* @__PURE__ */ React.createElement(EntityListContext.Provider, { value }, props.children);\n};\nfunction useEntityList() {\n const context = useContext(EntityListContext);\n if (!context)\n throw new Error(\"useEntityList must be used within EntityListProvider\");\n return context;\n}\n\nfunction useEntityTypeFilter() {\n var _a;\n const catalogApi = useApi(catalogApiRef);\n const {\n filters: { kind: kindFilter, type: typeFilter },\n queryParameters: { type: typeParameter },\n updateFilters\n } = useEntityList();\n const flattenedQueryTypes = useMemo(\n () => [typeParameter].flat().filter(Boolean),\n [typeParameter]\n );\n const [selectedTypes, setSelectedTypes] = useState(\n flattenedQueryTypes.length ? flattenedQueryTypes : (_a = typeFilter == null ? void 0 : typeFilter.getTypes()) != null ? _a : []\n );\n useEffect(() => {\n if (flattenedQueryTypes.length) {\n setSelectedTypes(flattenedQueryTypes);\n }\n }, [flattenedQueryTypes]);\n const [availableTypes, setAvailableTypes] = useState([]);\n const kind = useMemo(() => kindFilter == null ? void 0 : kindFilter.value, [kindFilter]);\n const {\n error,\n loading,\n value: facets\n } = useAsync(async () => {\n if (kind) {\n const items = await catalogApi.getEntityFacets({\n filter: { kind },\n facets: [\"spec.type\"]\n }).then((response) => response.facets[\"spec.type\"] || []);\n return items;\n }\n return [];\n }, [kind, catalogApi]);\n const facetsRef = useRef(facets);\n useEffect(() => {\n const oldFacets = facetsRef.current;\n facetsRef.current = facets;\n if (loading || !kind || oldFacets === facets || !facets) {\n return;\n }\n const newTypes = [\n ...new Set(\n sortBy(facets, (f) => -f.count).map(\n (f) => f.value.toLocaleLowerCase(\"en-US\")\n )\n )\n ];\n setAvailableTypes(newTypes);\n const stillValidTypes = selectedTypes.filter(\n (value) => newTypes.includes(value)\n );\n if (!isEqual$1(selectedTypes, stillValidTypes)) {\n setSelectedTypes(stillValidTypes);\n }\n }, [loading, kind, selectedTypes, setSelectedTypes, facets]);\n useEffect(() => {\n updateFilters({\n type: selectedTypes.length ? new EntityTypeFilter(selectedTypes) : void 0\n });\n }, [selectedTypes, updateFilters]);\n return {\n loading,\n error,\n availableTypes,\n selectedTypes,\n setSelectedTypes\n };\n}\n\nfunction useRelatedEntities(entity, relationFilter) {\n var _a, _b;\n const filterByTypeLower = (_a = relationFilter == null ? void 0 : relationFilter.type) == null ? void 0 : _a.toLocaleLowerCase(\"en-US\");\n const filterByKindLower = (_b = relationFilter == null ? void 0 : relationFilter.kind) == null ? void 0 : _b.toLocaleLowerCase(\"en-US\");\n const catalogApi = useApi(catalogApiRef);\n const {\n loading,\n value: entities,\n error\n } = useAsync(async () => {\n var _a2;\n const relations = (_a2 = entity.relations) == null ? void 0 : _a2.filter(\n (r) => (!filterByTypeLower || r.type.toLocaleLowerCase(\"en-US\") === filterByTypeLower) && (!filterByKindLower || parseEntityRef(r.targetRef).kind === filterByKindLower)\n );\n if (!(relations == null ? void 0 : relations.length)) {\n return [];\n }\n const { items } = await catalogApi.getEntitiesByRefs({\n entityRefs: relations.map((r) => r.targetRef)\n });\n return items.filter((x) => Boolean(x));\n }, [entity, filterByTypeLower, filterByKindLower]);\n return {\n entities,\n loading,\n error\n };\n}\n\nfunction getEntityRef$1(entityOrRef) {\n return typeof entityOrRef === \"string\" ? entityOrRef : stringifyEntityRef(entityOrRef);\n}\nfunction useStarredEntities() {\n const starredEntitiesApi = useApi(starredEntitiesApiRef);\n const starredEntities = useObservable(\n useMemo(() => starredEntitiesApi.starredEntitie$(), [starredEntitiesApi]),\n /* @__PURE__ */ new Set()\n );\n const isStarredEntity = useCallback(\n (entityOrRef) => starredEntities.has(getEntityRef$1(entityOrRef)),\n [starredEntities]\n );\n const toggleStarredEntity = useCallback(\n (entityOrRef) => starredEntitiesApi.toggleStarred(getEntityRef$1(entityOrRef)).then(),\n [starredEntitiesApi]\n );\n return {\n starredEntities,\n toggleStarredEntity,\n isStarredEntity\n };\n}\n\nfunction getEntityRef(entityOrRef) {\n return typeof entityOrRef === \"string\" ? entityOrRef : stringifyEntityRef(entityOrRef);\n}\nfunction useStarredEntity(entityOrRef) {\n const starredEntitiesApi = useApi(starredEntitiesApiRef);\n const [isStarredEntity, setIsStarredEntity] = useState(false);\n useEffect(() => {\n const subscription = starredEntitiesApi.starredEntitie$().subscribe({\n next(starredEntities) {\n setIsStarredEntity(starredEntities.has(getEntityRef(entityOrRef)));\n }\n });\n return () => {\n subscription.unsubscribe();\n };\n }, [entityOrRef, starredEntitiesApi]);\n const toggleStarredEntity = useCallback(\n () => starredEntitiesApi.toggleStarred(getEntityRef(entityOrRef)).then(),\n [entityOrRef, starredEntitiesApi]\n );\n return {\n toggleStarredEntity,\n isStarredEntity\n };\n}\n\nfunction useEntityOwnership() {\n const identityApi = useApi(identityApiRef);\n const { loading, value: refs } = useAsync(\n async () => {\n const { ownershipEntityRefs } = await identityApi.getBackstageIdentity();\n return ownershipEntityRefs;\n },\n // load only on mount\n []\n );\n const isOwnedEntity = useMemo(() => {\n const myOwnerRefs = new Set(refs != null ? refs : []);\n return (entity) => {\n const entityOwnerRefs = getEntityRelations(entity, RELATION_OWNED_BY).map(\n stringifyEntityRef\n );\n for (const ref of entityOwnerRefs) {\n if (myOwnerRefs.has(ref)) {\n return true;\n }\n }\n return false;\n };\n }, [refs]);\n return { loading, isOwnedEntity };\n}\n\nfunction useAllKinds() {\n const catalogApi = useApi(catalogApiRef);\n const {\n error,\n loading,\n value: allKinds\n } = useAsync(async () => {\n const items = await catalogApi.getEntityFacets({ facets: [\"kind\"] }).then((response) => {\n var _a;\n return ((_a = response.facets.kind) == null ? void 0 : _a.map((f) => f.value).sort()) || [];\n });\n return items;\n }, [catalogApi]);\n return { loading, error, allKinds: allKinds != null ? allKinds : [] };\n}\nfunction filterKinds(allKinds, allowedKinds, forcedKinds) {\n let availableKinds = allKinds;\n if (allowedKinds) {\n availableKinds = availableKinds.filter(\n (k) => allowedKinds.some(\n (a) => a.toLocaleLowerCase(\"en-US\") === k.toLocaleLowerCase(\"en-US\")\n )\n );\n }\n if (forcedKinds && !allKinds.some(\n (a) => a.toLocaleLowerCase(\"en-US\") === forcedKinds.toLocaleLowerCase(\"en-US\")\n )) {\n availableKinds = availableKinds.concat([forcedKinds]);\n }\n const kindsMap = availableKinds.sort().reduce((acc, kind) => {\n acc[kind.toLocaleLowerCase(\"en-US\")] = kind;\n return acc;\n }, {});\n return kindsMap;\n}\n\nfunction useEntityKindFilter(opts) {\n var _a, _b;\n const {\n filters,\n queryParameters: { kind: kindParameter },\n updateFilters\n } = useEntityList();\n const queryParamKind = useMemo(\n () => [kindParameter].flat()[0],\n [kindParameter]\n );\n const [selectedKind, setSelectedKind] = useState(\n (_b = queryParamKind != null ? queryParamKind : (_a = filters.kind) == null ? void 0 : _a.value) != null ? _b : opts.initialFilter\n );\n useEffect(() => {\n if (queryParamKind) {\n setSelectedKind(queryParamKind);\n }\n }, [queryParamKind]);\n useEffect(() => {\n var _a2, _b2;\n if ((_a2 = filters.kind) == null ? void 0 : _a2.value) {\n setSelectedKind((_b2 = filters.kind) == null ? void 0 : _b2.value);\n }\n }, [filters.kind]);\n useEffect(() => {\n updateFilters({\n kind: selectedKind ? new EntityKindFilter(selectedKind) : void 0\n });\n }, [selectedKind, updateFilters]);\n const { allKinds, loading, error } = useAllKinds();\n return {\n loading,\n error,\n allKinds: allKinds != null ? allKinds : [],\n selectedKind,\n setSelectedKind\n };\n}\nconst EntityKindPicker = (props) => {\n const { allowedKinds, hidden, initialFilter = \"component\" } = props;\n const alertApi = useApi(alertApiRef);\n const { error, allKinds, selectedKind, setSelectedKind } = useEntityKindFilter({\n initialFilter\n });\n useEffect(() => {\n if (error) {\n alertApi.post({\n message: `Failed to load entity kinds`,\n severity: \"error\"\n });\n }\n }, [error, alertApi]);\n if (error)\n return null;\n const options = filterKinds(allKinds, allowedKinds, selectedKind);\n const items = Object.keys(options).map((key) => ({\n value: key,\n label: options[key]\n }));\n return hidden ? null : /* @__PURE__ */ React.createElement(Box, { pb: 1, pt: 1 }, /* @__PURE__ */ React.createElement(\n Select,\n {\n label: \"Kind\",\n items,\n selected: selectedKind.toLocaleLowerCase(\"en-US\"),\n onChange: (value) => setSelectedKind(String(value))\n }\n ));\n};\n\nconst icon$2 = /* @__PURE__ */ React.createElement(CheckBoxOutlineBlankIcon, { fontSize: \"small\" });\nconst checkedIcon$2 = /* @__PURE__ */ React.createElement(CheckBoxIcon, { fontSize: \"small\" });\nfunction OptionCheckbox({ selected }) {\n return /* @__PURE__ */ React.createElement(Checkbox, { icon: icon$2, checkedIcon: checkedIcon$2, checked: selected });\n}\nconst EntityAutocompletePickerOption = memo((props) => {\n const { selected, value, availableOptions, showCounts } = props;\n const label = showCounts ? `${value} (${availableOptions == null ? void 0 : availableOptions[value]})` : value;\n return /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n control: /* @__PURE__ */ React.createElement(OptionCheckbox, { selected }),\n label,\n onClick: (event) => event.preventDefault()\n }\n );\n});\n\nconst useStyles$i = makeStyles(\n {\n input: {}\n },\n {\n name: \"CatalogReactEntityAutocompletePickerInput\"\n }\n);\nfunction EntityAutocompletePickerInput(params) {\n const classes = useStyles$i();\n return /* @__PURE__ */ React.createElement(\n TextField,\n {\n variant: \"outlined\",\n ...params,\n className: classNames(classes.input, params.className)\n }\n );\n}\n\nconst useStyles$h = makeStyles(\n {\n root: {},\n label: {}\n },\n { name: \"CatalogReactEntityAutocompletePicker\" }\n);\nfunction EntityAutocompletePicker(props) {\n var _a, _b;\n const {\n label,\n name,\n path,\n showCounts,\n Filter,\n InputProps,\n initialSelectedOptions = [],\n filtersForAvailableValues = [\"kind\"]\n } = props;\n const classes = useStyles$h();\n const {\n updateFilters,\n filters,\n queryParameters: { [name]: queryParameter }\n } = useEntityList();\n const catalogApi = useApi(catalogApiRef);\n const availableValuesFilters = filtersForAvailableValues.map(\n (f) => filters[f]\n );\n const { value: availableValues } = useAsync(async () => {\n const facet = path;\n const { facets } = await catalogApi.getEntityFacets({\n facets: [facet],\n filter: reduceBackendCatalogFilters(\n availableValuesFilters.filter(Boolean)\n )\n });\n return Object.fromEntries(\n facets[facet].map(({ value, count }) => [value, count])\n );\n }, [...availableValuesFilters]);\n const queryParameters = useMemo(\n () => [queryParameter].flat().filter(Boolean),\n [queryParameter]\n );\n const [selectedOptions, setSelectedOptions] = useState(\n queryParameters.length ? queryParameters : (_b = (_a = filters[name]) == null ? void 0 : _a.values) != null ? _b : initialSelectedOptions\n );\n useEffect(() => {\n if (queryParameters.length) {\n setSelectedOptions(queryParameters);\n }\n }, [queryParameters]);\n const availableOptions = Object.keys(availableValues != null ? availableValues : {});\n const shouldAddFilter = selectedOptions.length && availableOptions.length;\n useEffect(() => {\n updateFilters({\n [name]: shouldAddFilter ? new Filter(selectedOptions) : void 0\n });\n }, [name, shouldAddFilter, selectedOptions, Filter, updateFilters]);\n const filter = filters[name];\n if (filter && typeof filter === \"object\" && !(\"values\" in filter) || !availableOptions.length) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root, pb: 1, pt: 1 }, /* @__PURE__ */ React.createElement(Typography, { className: classes.label, variant: \"button\", component: \"label\" }, label, /* @__PURE__ */ React.createElement(\n Autocomplete,\n {\n multiple: true,\n disableCloseOnSelect: true,\n options: availableOptions,\n value: selectedOptions,\n onChange: (_event, options) => setSelectedOptions(options),\n renderOption: (option, { selected }) => /* @__PURE__ */ React.createElement(\n EntityAutocompletePickerOption,\n {\n selected,\n value: option,\n availableOptions: availableValues,\n showCounts: !!showCounts\n }\n ),\n size: \"small\",\n popupIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { \"data-testid\": `${String(name)}-picker-expand` }),\n renderInput: (params) => /* @__PURE__ */ React.createElement(EntityAutocompletePickerInput, { ...params, ...InputProps })\n }\n )));\n}\n\nconst useStyles$g = makeStyles(\n {\n input: {}\n },\n {\n name: \"CatalogReactEntityLifecyclePicker\"\n }\n);\nconst EntityLifecyclePicker = (props) => {\n const { initialFilter = [] } = props;\n const classes = useStyles$g();\n return /* @__PURE__ */ React.createElement(\n EntityAutocompletePicker,\n {\n label: \"Lifecycle\",\n name: \"lifecycles\",\n path: \"spec.lifecycle\",\n Filter: EntityLifecycleFilter,\n InputProps: { className: classes.input },\n initialSelectedOptions: initialFilter\n }\n );\n};\n\nconst useStyles$f = makeStyles(\n {\n input: {}\n },\n {\n name: \"CatalogReactEntityNamespacePicker\"\n }\n);\nconst EntityNamespacePicker = (props) => {\n const { initiallySelectedNamespaces } = props;\n const classes = useStyles$f();\n return /* @__PURE__ */ React.createElement(\n EntityAutocompletePicker,\n {\n label: \"Namespace\",\n name: \"namespace\",\n path: \"metadata.namespace\",\n Filter: EntityNamespaceFilter,\n InputProps: { className: classes.input },\n initialSelectedOptions: initiallySelectedNamespaces\n }\n );\n};\n\nfunction humanizeEntityRef(entityRef, opts) {\n const defaultKind = opts == null ? void 0 : opts.defaultKind;\n let kind;\n let namespace;\n let name;\n if (\"metadata\" in entityRef) {\n kind = entityRef.kind;\n namespace = entityRef.metadata.namespace;\n name = entityRef.metadata.name;\n } else {\n kind = entityRef.kind;\n namespace = entityRef.namespace;\n name = entityRef.name;\n }\n if (namespace === void 0 || namespace === \"\") {\n namespace = DEFAULT_NAMESPACE;\n }\n if ((opts == null ? void 0 : opts.defaultNamespace) !== void 0) {\n if ((opts == null ? void 0 : opts.defaultNamespace) === namespace) {\n namespace = void 0;\n }\n } else if (namespace === DEFAULT_NAMESPACE) {\n namespace = void 0;\n }\n kind = kind.toLocaleLowerCase(\"en-US\");\n kind = defaultKind && defaultKind.toLocaleLowerCase(\"en-US\") === kind ? void 0 : kind;\n return `${kind ? `${kind}:` : \"\"}${namespace ? `${namespace}/` : \"\"}${name}`;\n}\nfunction humanizeEntity(entity, defaultName) {\n for (const path of [\"spec.profile.displayName\", \"metadata.title\"]) {\n const value = get(entity, path);\n if (value && typeof value === \"string\") {\n return value;\n }\n }\n return defaultName;\n}\n\nfunction useFacetsEntities({ enabled }) {\n const catalogApi = useApi(catalogApiRef);\n const [facetsPromise] = useState(async () => {\n if (!enabled) {\n return [];\n }\n const facet = \"relations.ownedBy\";\n return catalogApi.getEntityFacets({ facets: [facet] }).then(\n (response) => response.facets[facet].map((e) => e.value).map((ref) => {\n const { kind, name, namespace } = parseEntityRef(ref);\n return {\n apiVersion: \"backstage.io/v1beta1\",\n kind,\n metadata: { name, namespace }\n };\n }).sort(\n (a, b) => (a.metadata.namespace || \"\").localeCompare(\n b.metadata.namespace || \"\",\n \"en-US\"\n ) || a.metadata.name.localeCompare(b.metadata.name, \"en-US\") || a.kind.localeCompare(b.kind, \"en-US\")\n )\n ).catch(() => []);\n });\n return useAsyncFn(\n async (request, options) => {\n var _a;\n const facets = await facetsPromise;\n if (!facets) {\n return {\n items: []\n };\n }\n const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 20;\n const { text, start } = decodeCursor(request);\n const filteredRefs = facets.filter((e) => filterEntity(text, e));\n const end = start + limit;\n return {\n items: filteredRefs.slice(0, end),\n ...encodeCursor({\n entities: filteredRefs,\n limit: end,\n payload: {\n text,\n start: end\n }\n })\n };\n },\n [facetsPromise],\n { loading: true, value: { items: [] } }\n );\n}\nfunction decodeCursor(request) {\n if (isFacetsResponse(request) && request.cursor) {\n return JSON.parse(atob(request.cursor));\n }\n return {\n text: request.text || \"\",\n start: 0\n };\n}\nfunction isFacetsResponse(request) {\n return !!request.cursor;\n}\nfunction encodeCursor({\n entities,\n limit,\n payload\n}) {\n if (entities.length > limit) {\n return { cursor: btoa(JSON.stringify(payload)) };\n }\n return {};\n}\nfunction filterEntity(text, entity) {\n var _a;\n const normalizedText = text.trim();\n return entity.kind.includes(normalizedText) || ((_a = entity.metadata.namespace) == null ? void 0 : _a.includes(normalizedText)) || entity.metadata.name.includes(normalizedText);\n}\n\nfunction useQueryEntities() {\n const catalogApi = useApi(catalogApiRef);\n return useAsyncFn(\n async (request, options) => {\n var _a;\n const initialRequest = request;\n const cursorRequest = request;\n const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 20;\n if (cursorRequest.cursor) {\n const response2 = await catalogApi.queryEntities({\n cursor: cursorRequest.cursor,\n limit\n });\n return {\n cursor: response2.pageInfo.nextCursor,\n items: [...cursorRequest.items, ...response2.items]\n };\n }\n const response = await catalogApi.queryEntities({\n fullTextFilter: {\n term: initialRequest.text || \"\",\n fields: [\n \"metadata.name\",\n \"kind\",\n \"spec.profile.displayname\",\n \"metadata.title\"\n ]\n },\n filter: { kind: [\"User\", \"Group\"] },\n orderFields: [{ field: \"metadata.name\", order: \"asc\" }],\n limit\n });\n return {\n cursor: response.pageInfo.nextCursor,\n items: response.items\n };\n },\n [],\n { loading: true }\n );\n}\n\nfunction useFetchEntities({\n mode,\n initialSelectedOwnersRefs\n}) {\n const isOwnersOnlyMode = mode === \"owners-only\";\n const queryEntitiesResponse = useQueryEntities();\n const facetsEntitiesResponse = useFacetsEntities({\n enabled: isOwnersOnlyMode\n });\n const [state, handleFetch] = isOwnersOnlyMode ? facetsEntitiesResponse : queryEntitiesResponse;\n return [\n state,\n handleFetch,\n useSelectedOwners({\n enabled: !isOwnersOnlyMode,\n initialSelectedOwnersRefs\n })\n ];\n}\nfunction useSelectedOwners({\n enabled,\n initialSelectedOwnersRefs\n}) {\n const allEntities = useRef({});\n const catalogApi = useApi(catalogApiRef);\n const [, handleFetch] = useAsyncFn(async () => {\n const initialSelectedEntities = await catalogApi.getEntitiesByRefs({\n entityRefs: initialSelectedOwnersRefs\n });\n initialSelectedEntities.items.forEach((e) => {\n if (e) {\n allEntities.current[stringifyEntityRef(e)] = e;\n }\n });\n }, []);\n useMountEffect(() => {\n if (enabled && initialSelectedOwnersRefs.length > 0) {\n handleFetch();\n }\n });\n return {\n getEntity: (entityRef) => allEntities.current[entityRef],\n setEntity: (entity) => {\n allEntities.current[stringifyEntityRef(entity)] = entity;\n }\n };\n}\n\nconst useStyles$e = makeStyles(\n {\n root: {},\n label: {},\n input: {},\n fullWidth: { width: \"100%\" },\n boxLabel: {\n width: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\"\n }\n },\n {\n name: \"CatalogReactEntityOwnerPicker\"\n }\n);\nconst FixedWidthFormControlLabel = withStyles(\n (_theme) => ({\n label: {\n width: \"100%\"\n },\n root: {\n width: \"90%\"\n }\n }),\n { name: \"FixedWidthFormControlLabel\" }\n)(FormControlLabel);\nconst icon$1 = /* @__PURE__ */ React.createElement(CheckBoxOutlineBlankIcon, { fontSize: \"small\" });\nconst checkedIcon$1 = /* @__PURE__ */ React.createElement(CheckBoxIcon, { fontSize: \"small\" });\nfunction RenderOptionLabel(props) {\n const classes = useStyles$e();\n const isGroup = props.entity.kind.toLocaleLowerCase(\"en-US\") === \"group\";\n const { primaryTitle: title } = useEntityPresentation(props.entity);\n return /* @__PURE__ */ React.createElement(Box, { className: classes.fullWidth }, /* @__PURE__ */ React.createElement(\n FixedWidthFormControlLabel,\n {\n className: classes.fullWidth,\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n icon: icon$1,\n checkedIcon: checkedIcon$1,\n checked: props.isSelected\n }\n ),\n onClick: (event) => event.preventDefault(),\n label: /* @__PURE__ */ React.createElement(Tooltip, { title }, /* @__PURE__ */ React.createElement(Box, { display: \"flex\", alignItems: \"center\" }, isGroup ? /* @__PURE__ */ React.createElement(GroupIcon, { fontSize: \"small\" }) : /* @__PURE__ */ React.createElement(PersonIcon, { fontSize: \"small\" }), \"\\xA0\", /* @__PURE__ */ React.createElement(Box, { className: classes.boxLabel }, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, title))))\n }\n ));\n}\nconst EntityOwnerPicker = (props) => {\n var _a, _b, _c;\n const classes = useStyles$e();\n const { mode = \"owners-only\" } = props || {};\n const {\n updateFilters,\n filters,\n queryParameters: { owners: ownersParameter }\n } = useEntityList();\n const [text, setText] = useState(\"\");\n const queryParamOwners = useMemo(\n () => [ownersParameter].flat().filter(Boolean),\n [ownersParameter]\n );\n const [selectedOwners, setSelectedOwners] = useState(\n queryParamOwners.length ? queryParamOwners : (_b = (_a = filters.owners) == null ? void 0 : _a.values) != null ? _b : []\n );\n const [{ value, loading }, handleFetch, cache] = useFetchEntities({\n mode,\n initialSelectedOwnersRefs: selectedOwners\n });\n useDebouncedEffect(() => handleFetch({ text }), [text, handleFetch], 250);\n const availableOwners = (value == null ? void 0 : value.items) || [];\n useEffect(() => {\n if (queryParamOwners.length) {\n const filter = new EntityOwnerFilter(queryParamOwners);\n setSelectedOwners(filter.values);\n }\n }, [queryParamOwners]);\n useEffect(() => {\n updateFilters({\n owners: selectedOwners.length ? new EntityOwnerFilter(selectedOwners) : void 0\n });\n }, [selectedOwners, updateFilters]);\n if ([\"user\", \"group\"].includes(\n ((_c = filters.kind) == null ? void 0 : _c.value.toLocaleLowerCase(\"en-US\")) || \"\"\n )) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root, pb: 1, pt: 1 }, /* @__PURE__ */ React.createElement(Typography, { className: classes.label, variant: \"button\", component: \"label\" }, \"Owner\", /* @__PURE__ */ React.createElement(\n Autocomplete,\n {\n multiple: true,\n disableCloseOnSelect: true,\n loading,\n options: availableOwners,\n value: selectedOwners,\n getOptionSelected: (o, v) => {\n if (typeof v === \"string\") {\n return stringifyEntityRef(o) === v;\n }\n return o === v;\n },\n getOptionLabel: (o) => {\n const entity = typeof o === \"string\" ? cache.getEntity(o) || parseEntityRef(o, {\n defaultKind: \"group\",\n defaultNamespace: \"default\"\n }) : o;\n return humanizeEntity(entity, humanizeEntityRef(entity));\n },\n onChange: (_, owners) => {\n setText(\"\");\n setSelectedOwners(\n owners.map((e) => {\n const entityRef = typeof e === \"string\" ? e : stringifyEntityRef(e);\n if (typeof e !== \"string\") {\n cache.setEntity(e);\n }\n return entityRef;\n })\n );\n },\n filterOptions: (x) => x,\n renderOption: (entity, { selected }) => {\n return /* @__PURE__ */ React.createElement(RenderOptionLabel, { entity, isSelected: selected });\n },\n size: \"small\",\n popupIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { \"data-testid\": \"owner-picker-expand\" }),\n renderInput: (params) => /* @__PURE__ */ React.createElement(\n TextField,\n {\n ...params,\n className: classes.input,\n onChange: (e) => {\n setText(e.currentTarget.value);\n },\n variant: \"outlined\"\n }\n ),\n ListboxProps: {\n onScroll: (e) => {\n const element = e.currentTarget;\n const hasReachedEnd = Math.abs(\n element.scrollHeight - element.clientHeight - element.scrollTop\n ) < 1;\n if (hasReachedEnd && (value == null ? void 0 : value.cursor)) {\n handleFetch({ items: value.items, cursor: value.cursor });\n }\n },\n \"data-testid\": \"owner-picker-listbox\"\n }\n }\n )));\n};\n\nconst useStyles$d = makeStyles(\n {\n root: {},\n input: {},\n label: {}\n },\n {\n name: \"CatalogReactEntityProcessingStatusPickerPicker\"\n }\n);\nconst icon = /* @__PURE__ */ React.createElement(CheckBoxOutlineBlankIcon, { fontSize: \"small\" });\nconst checkedIcon = /* @__PURE__ */ React.createElement(CheckBoxIcon, { fontSize: \"small\" });\nconst EntityProcessingStatusPicker = () => {\n const classes = useStyles$d();\n const { updateFilters } = useEntityList();\n const [selectedAdvancedItems, setSelectedAdvancedItems] = useState(\n []\n );\n function orphanChange(value) {\n updateFilters({\n orphan: value ? new EntityOrphanFilter(value) : void 0\n });\n }\n function errorChange(value) {\n updateFilters({\n error: value ? new EntityErrorFilter(value) : void 0\n });\n }\n const availableAdvancedItems = [\"Is Orphan\", \"Has Error\"];\n return /* @__PURE__ */ React.createElement(Box, { className: classes.root, pb: 1, pt: 1 }, /* @__PURE__ */ React.createElement(Typography, { className: classes.label, variant: \"button\", component: \"label\" }, \"Processing Status\", /* @__PURE__ */ React.createElement(\n Autocomplete,\n {\n multiple: true,\n disableCloseOnSelect: true,\n options: availableAdvancedItems,\n value: selectedAdvancedItems,\n onChange: (_, value) => {\n setSelectedAdvancedItems(value);\n orphanChange(value.includes(\"Is Orphan\"));\n errorChange(value.includes(\"Has Error\"));\n },\n renderOption: (option, { selected }) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n icon,\n checkedIcon,\n checked: selected\n }\n ),\n onClick: (event) => event.preventDefault(),\n label: option\n }\n ),\n size: \"small\",\n popupIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { \"data-testid\": \"processing-status-picker-expand\" }),\n renderInput: (params) => /* @__PURE__ */ React.createElement(\n TextField,\n {\n ...params,\n className: classes.input,\n variant: \"outlined\"\n }\n )\n }\n )));\n};\n\nconst useStyles$c = makeStyles(\n { input: {} },\n { name: \"CatalogReactEntityTagPicker\" }\n);\nconst EntityTagPicker = (props) => {\n const classes = useStyles$c();\n return /* @__PURE__ */ React.createElement(\n EntityAutocompletePicker,\n {\n label: \"Tags\",\n name: \"tags\",\n path: \"metadata.tags\",\n Filter: EntityTagFilter,\n showCounts: props.showCounts,\n InputProps: { className: classes.input }\n }\n );\n};\n\nconst EntityTypePicker = (props) => {\n var _a;\n const { hidden, initialFilter } = props;\n const alertApi = useApi(alertApiRef);\n const { error, availableTypes, selectedTypes, setSelectedTypes } = useEntityTypeFilter();\n useEffect(() => {\n if (error) {\n alertApi.post({\n message: `Failed to load entity types`,\n severity: \"error\"\n });\n }\n if (initialFilter) {\n setSelectedTypes([initialFilter]);\n }\n }, [error, alertApi, initialFilter, setSelectedTypes]);\n if (availableTypes.length === 0 || error)\n return null;\n const items = [\n { value: \"all\", label: \"all\" },\n ...availableTypes.map((type) => ({\n value: type,\n label: type\n }))\n ];\n return hidden ? null : /* @__PURE__ */ React.createElement(Box, { pb: 1, pt: 1 }, /* @__PURE__ */ React.createElement(\n Select,\n {\n label: \"Type\",\n items,\n selected: (_a = items.length > 1 ? selectedTypes[0] : void 0) != null ? _a : \"all\",\n onChange: (value) => setSelectedTypes(value === \"all\" ? [] : [String(value)])\n }\n ));\n};\n\nfunction useOwnedEntitiesCount() {\n const identityApi = useApi(identityApiRef);\n const catalogApi = useApi(catalogApiRef);\n const { filters } = useEntityList();\n const { value: ownershipEntityRefs, loading: loadingEntityRefs } = useAsync(\n async () => (await identityApi.getBackstageIdentity()).ownershipEntityRefs,\n // load only on mount\n []\n );\n const { user, owners, ...allFilters } = filters;\n const catalogFilters = reduceCatalogFilters(\n compact(Object.values(allFilters))\n );\n const [{ value: count, loading: loadingEntityOwnership }, fetchEntities] = useAsyncFn(\n async (req) => {\n const ownedClaims = getOwnedCountClaims(\n req.owners,\n req.ownershipEntityRefs\n );\n if (ownedClaims === void 0) {\n return 0;\n }\n const { [\"metadata.name\"]: metadata, ...filter } = req.filter.filter;\n const { totalItems } = await catalogApi.queryEntities({\n ...req.filter,\n filter: {\n ...filter,\n \"relations.ownedBy\": ownedClaims\n },\n limit: 0\n });\n return totalItems;\n },\n [],\n { loading: true }\n );\n useDeepCompareEffect(() => {\n if (Object.keys(catalogFilters.filter).length === 0) {\n return;\n }\n if (ownershipEntityRefs === void 0) {\n return;\n }\n fetchEntities({\n ownershipEntityRefs,\n owners,\n filter: catalogFilters\n });\n }, [ownershipEntityRefs, owners, catalogFilters]);\n const loading = loadingEntityRefs || loadingEntityOwnership;\n return {\n count,\n loading,\n filter: useMemo(\n () => EntityUserFilter.owned(ownershipEntityRefs != null ? ownershipEntityRefs : []),\n [ownershipEntityRefs]\n ),\n ownershipEntityRefs\n };\n}\nfunction getOwnedCountClaims(owners, ownershipEntityRefs) {\n var _a;\n if (ownershipEntityRefs === void 0) {\n return void 0;\n }\n const ownersRefs = (_a = owners == null ? void 0 : owners.values) != null ? _a : [];\n if (ownersRefs.length) {\n const commonOwnedBy = intersection(ownersRefs, ownershipEntityRefs);\n if (commonOwnedBy.length === 0) {\n return void 0;\n }\n return commonOwnedBy;\n }\n return ownershipEntityRefs;\n}\n\nfunction useAllEntitiesCount() {\n const catalogApi = useApi(catalogApiRef);\n const { filters } = useEntityList();\n const prevRequest = useRef();\n const request = useMemo(() => {\n const { user, ...allFilters } = filters;\n const compacted = compact(Object.values(allFilters));\n const catalogFilters = reduceCatalogFilters(compacted);\n const newRequest = {\n ...catalogFilters,\n limit: 0\n };\n if (Object.keys(catalogFilters.filter).length === 0) {\n prevRequest.current = void 0;\n return prevRequest.current;\n }\n if (isEqual(newRequest, prevRequest.current)) {\n return prevRequest.current;\n }\n prevRequest.current = newRequest;\n return newRequest;\n }, [filters]);\n const { value: count, loading } = useAsync(async () => {\n if (request === void 0) {\n return 0;\n }\n const { totalItems } = await catalogApi.queryEntities(request);\n return totalItems;\n }, [request]);\n return { count, loading };\n}\n\nfunction useStarredEntitiesCount() {\n const catalogApi = useApi(catalogApiRef);\n const { filters } = useEntityList();\n const { starredEntities } = useStarredEntities();\n const prevRequest = useRef();\n const request = useMemo(() => {\n const { user, ...allFilters } = filters;\n const compacted = compact(Object.values(allFilters));\n const catalogFilters = reduceCatalogFilters(compacted);\n const facet = \"metadata.name\";\n const newRequest = {\n ...catalogFilters,\n filter: {\n ...catalogFilters.filter,\n /**\n * here we are filtering entities by `name`. Given this filter,\n * the response might contain more entities than expected, in case multiple entities\n * of different kind or namespace share the same name. Those extra entities are filtered out\n * client side by `EntityUserFilter`, so they won't be visible to the user.\n */\n [facet]: Array.from(starredEntities).map((e) => parseEntityRef(e).name)\n },\n /**\n * limit is set to a high value as we are not expecting many starred entities\n */\n limit: 1e3\n };\n if (isEqual(newRequest, prevRequest.current)) {\n return prevRequest.current;\n }\n prevRequest.current = newRequest;\n return newRequest;\n }, [filters, starredEntities]);\n const { value: count, loading } = useAsync(async () => {\n if (!starredEntities.size) {\n return 0;\n }\n const response = await catalogApi.queryEntities(request);\n return response.items.map(\n (e) => stringifyEntityRef({\n kind: e.kind,\n namespace: e.metadata.namespace,\n name: e.metadata.name\n })\n ).filter((e) => starredEntities.has(e)).length;\n }, [request, starredEntities]);\n const filter = useMemo(\n () => EntityUserFilter.starred(Array.from(starredEntities)),\n [starredEntities]\n );\n return { count, loading, filter };\n}\n\nconst useStyles$b = makeStyles(\n (theme) => ({\n root: {\n backgroundColor: \"rgba(0, 0, 0, .11)\",\n boxShadow: \"none\",\n margin: theme.spacing(1, 0, 1, 0)\n },\n title: {\n margin: theme.spacing(1, 0, 0, 1),\n textTransform: \"uppercase\",\n fontSize: 12,\n fontWeight: \"bold\"\n },\n listIcon: {\n minWidth: 30,\n color: theme.palette.text.primary\n },\n menuItem: {\n minHeight: theme.spacing(6)\n },\n groupWrapper: {\n margin: theme.spacing(1, 1, 2, 1)\n }\n }),\n {\n name: \"CatalogReactUserListPicker\"\n }\n);\nfunction getFilterGroups(orgName) {\n return [\n {\n name: \"Personal\",\n items: [\n {\n id: \"owned\",\n label: \"Owned\",\n icon: SettingsIcon\n },\n {\n id: \"starred\",\n label: \"Starred\",\n icon: StarIcon\n }\n ]\n },\n {\n name: orgName != null ? orgName : \"Company\",\n items: [\n {\n id: \"all\",\n label: \"All\"\n }\n ]\n }\n ];\n}\nconst UserListPicker = (props) => {\n var _a;\n const { initialFilter, availableFilters } = props;\n const classes = useStyles$b();\n const configApi = useApi(configApiRef);\n const orgName = (_a = configApi.getOptionalString(\"organization.name\")) != null ? _a : \"Company\";\n const {\n filters,\n updateFilters,\n queryParameters: { kind: kindParameter, user: userParameter }\n } = useEntityList();\n const userAndGroupFilterIds = [\"starred\", \"all\"];\n const filterGroups = getFilterGroups(orgName).map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.filter(\n ({ id }) => (\n // TODO: avoid hardcoding kinds here\n [\"group\", \"user\"].some((kind) => kind === kindParameter) ? userAndGroupFilterIds.includes(id) : !availableFilters || availableFilters.includes(id)\n )\n )\n })).filter(({ items }) => !!items.length);\n const {\n count: ownedEntitiesCount,\n loading: loadingOwnedEntities,\n filter: ownedEntitiesFilter\n } = useOwnedEntitiesCount();\n const { count: allCount } = useAllEntitiesCount();\n const {\n count: starredEntitiesCount,\n filter: starredEntitiesFilter,\n loading: loadingStarredEntities\n } = useStarredEntitiesCount();\n const queryParamUserFilter = useMemo(\n () => [userParameter].flat()[0],\n [userParameter]\n );\n const [selectedUserFilter, setSelectedUserFilter] = useState(\n queryParamUserFilter != null ? queryParamUserFilter : initialFilter\n );\n const filterCounts = useMemo(() => {\n return {\n all: allCount,\n starred: starredEntitiesCount,\n owned: ownedEntitiesCount\n };\n }, [starredEntitiesCount, ownedEntitiesCount, allCount]);\n useEffect(() => {\n if (queryParamUserFilter) {\n setSelectedUserFilter(queryParamUserFilter);\n }\n }, [queryParamUserFilter]);\n const loading = loadingOwnedEntities || loadingStarredEntities;\n useEffect(() => {\n if (!loading && !!selectedUserFilter && selectedUserFilter !== \"all\" && filterCounts[selectedUserFilter] === 0) {\n setSelectedUserFilter(\"all\");\n }\n }, [loading, filterCounts, selectedUserFilter, setSelectedUserFilter]);\n useEffect(() => {\n if (!selectedUserFilter) {\n return;\n }\n if (loading) {\n return;\n }\n const getFilter = () => {\n if (selectedUserFilter === \"owned\") {\n return ownedEntitiesFilter;\n }\n if (selectedUserFilter === \"starred\") {\n return starredEntitiesFilter;\n }\n return EntityUserFilter.all();\n };\n updateFilters({ user: getFilter() });\n }, [\n selectedUserFilter,\n starredEntitiesFilter,\n ownedEntitiesFilter,\n updateFilters,\n loading\n ]);\n return /* @__PURE__ */ React.createElement(Card, { className: classes.root }, filterGroups.map((group) => /* @__PURE__ */ React.createElement(Fragment, { key: group.name }, /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"subtitle2\",\n component: \"span\",\n className: classes.title\n },\n group.name\n ), /* @__PURE__ */ React.createElement(Card, { className: classes.groupWrapper }, /* @__PURE__ */ React.createElement(List, { disablePadding: true, dense: true, role: \"menu\", \"aria-label\": group.name }, group.items.map((item) => {\n var _a2, _b;\n return /* @__PURE__ */ React.createElement(\n MenuItem,\n {\n role: \"none presentation\",\n key: item.id,\n divider: true,\n onClick: () => setSelectedUserFilter(item.id),\n selected: item.id === ((_a2 = filters.user) == null ? void 0 : _a2.value),\n className: classes.menuItem,\n disabled: filterCounts[item.id] === 0,\n \"data-testid\": `user-picker-${item.id}`,\n tabIndex: 0,\n ContainerProps: { role: \"menuitem\" }\n },\n item.icon && /* @__PURE__ */ React.createElement(ListItemIcon, { className: classes.listIcon }, /* @__PURE__ */ React.createElement(item.icon, { fontSize: \"small\" })),\n /* @__PURE__ */ React.createElement(ListItemText$1, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, item.label, \" \")),\n /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, (_b = filterCounts[item.id]) != null ? _b : \"-\")\n );\n }))))));\n};\n\nconst DefaultFilters = (props) => {\n const {\n initialKind,\n initiallySelectedFilter,\n ownerPickerMode,\n initiallySelectedNamespaces\n } = props;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EntityKindPicker, { initialFilter: initialKind }), /* @__PURE__ */ React.createElement(EntityTypePicker, null), /* @__PURE__ */ React.createElement(UserListPicker, { initialFilter: initiallySelectedFilter }), /* @__PURE__ */ React.createElement(EntityOwnerPicker, { mode: ownerPickerMode }), /* @__PURE__ */ React.createElement(EntityLifecyclePicker, null), /* @__PURE__ */ React.createElement(EntityTagPicker, null), /* @__PURE__ */ React.createElement(EntityProcessingStatusPicker, null), /* @__PURE__ */ React.createElement(\n EntityNamespacePicker,\n {\n initiallySelectedNamespaces\n }\n ));\n};\n\nconst useStyles$a = makeStyles(\n (theme) => ({\n root: {\n display: \"inline-flex\",\n alignItems: \"center\"\n },\n icon: {\n marginRight: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n lineHeight: 0\n }\n }),\n { name: \"CatalogReactEntityDisplayName\" }\n);\nconst EntityDisplayName = (props) => {\n const { entityRef, hideIcon, disableTooltip, defaultKind, defaultNamespace } = props;\n const classes = useStyles$a();\n const { primaryTitle, secondaryTitle, Icon } = useEntityPresentation(\n entityRef,\n { defaultKind, defaultNamespace }\n );\n let content = /* @__PURE__ */ React.createElement(React.Fragment, null, primaryTitle);\n content = /* @__PURE__ */ React.createElement(Box, { component: \"span\", className: classes.root }, Icon && !hideIcon ? /* @__PURE__ */ React.createElement(Box, { component: \"span\", className: classes.icon }, /* @__PURE__ */ React.createElement(Icon, { fontSize: \"inherit\" })) : null, content);\n if (secondaryTitle && !disableTooltip) {\n content = /* @__PURE__ */ React.createElement(Tooltip, { enterDelay: 1500, title: secondaryTitle }, content);\n }\n return content;\n};\n\nconst entityRouteRef = getOrCreateGlobalSingleton(\n \"catalog:entity-route-ref\",\n () => createRouteRef({\n id: \"catalog:entity\",\n params: [\"namespace\", \"kind\", \"name\"]\n })\n);\nfunction entityRouteParams(entity) {\n var _a, _b;\n return {\n kind: entity.kind.toLocaleLowerCase(\"en-US\"),\n namespace: (_b = (_a = entity.metadata.namespace) == null ? void 0 : _a.toLocaleLowerCase(\"en-US\")) != null ? _b : DEFAULT_NAMESPACE,\n name: entity.metadata.name\n };\n}\n\nconst EntityRefLink = forwardRef(\n (props, ref) => {\n var _a;\n const {\n entityRef,\n defaultKind,\n defaultNamespace,\n title,\n children,\n hideIcon,\n ...linkProps\n } = props;\n const entityRoute = useEntityRoute(props.entityRef);\n const content = (_a = children != null ? children : title) != null ? _a : /* @__PURE__ */ React.createElement(\n EntityDisplayName,\n {\n entityRef,\n defaultKind,\n defaultNamespace,\n hideIcon\n }\n );\n return /* @__PURE__ */ React.createElement(Link, { ...linkProps, ref, to: entityRoute }, content);\n }\n);\nfunction useEntityRoute(entityRef) {\n var _a;\n const entityRoute = useRouteRef(entityRouteRef);\n let kind;\n let namespace;\n let name;\n if (typeof entityRef === \"string\") {\n const parsed = parseEntityRef(entityRef);\n kind = parsed.kind;\n namespace = parsed.namespace;\n name = parsed.name;\n } else if (\"metadata\" in entityRef) {\n kind = entityRef.kind;\n namespace = entityRef.metadata.namespace;\n name = entityRef.metadata.name;\n } else {\n kind = entityRef.kind;\n namespace = entityRef.namespace;\n name = entityRef.name;\n }\n kind = kind.toLocaleLowerCase(\"en-US\");\n namespace = (_a = namespace == null ? void 0 : namespace.toLocaleLowerCase(\"en-US\")) != null ? _a : DEFAULT_NAMESPACE;\n const routeParams = {\n kind: encodeURIComponent(kind),\n namespace: encodeURIComponent(namespace),\n name: encodeURIComponent(name)\n };\n return entityRoute(routeParams);\n}\n\nfunction EntityRefLinks(props) {\n const { entityRefs, hideIcons, ...linkProps } = props;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, entityRefs.map((r, i) => {\n const entityRefString = typeof r === \"string\" ? r : stringifyEntityRef(r);\n return /* @__PURE__ */ React.createElement(React.Fragment, { key: `${i}.${entityRefString}` }, i > 0 && \", \", /* @__PURE__ */ React.createElement(EntityRefLink, { ...linkProps, entityRef: r, hideIcon: hideIcons }));\n }));\n}\n\nconst EntityCardActions = (props) => {\n const entityRoute = useRouteRef(entityRouteRef);\n return /* @__PURE__ */ React.createElement(\n IconButton,\n {\n component: Link,\n \"aria-label\": \"Show\",\n title: \"Show details\",\n to: entityRoute(getCompoundEntityRef(props.entity))\n },\n /* @__PURE__ */ React.createElement(InfoIcon, null)\n );\n};\n\nconst EmailCardAction = (props) => {\n return /* @__PURE__ */ React.createElement(\n IconButton,\n {\n component: Link,\n \"aria-label\": \"Email\",\n title: `Email ${props.email}`,\n to: `mailto:${props.email}`\n },\n /* @__PURE__ */ React.createElement(EmailIcon, null)\n );\n};\n\nconst GroupCardActions = (props) => {\n var _a;\n const email = (_a = props.entity.spec.profile) == null ? void 0 : _a.email;\n return email ? /* @__PURE__ */ React.createElement(EmailCardAction, { email }) : null;\n};\n\nconst UserCardActions = (props) => {\n var _a;\n const email = (_a = props.entity.spec.profile) == null ? void 0 : _a.email;\n return email ? /* @__PURE__ */ React.createElement(EmailCardAction, { email }) : null;\n};\n\nconst useStyles$9 = makeStyles(() => {\n return {\n popoverPaper: {\n width: \"30em\"\n },\n descriptionTypography: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n WebkitLineClamp: 2,\n WebkitBoxOrient: \"vertical\"\n }\n };\n});\nconst maxTagChips = 4;\nconst EntityPeekAheadPopover = (props) => {\n var _a, _b, _c, _d;\n const { entityRef, children, delayTime = 500 } = props;\n const classes = useStyles$9();\n const apiHolder = useApiHolder();\n const popupState = usePopupState({\n variant: \"popover\",\n popupId: \"entity-peek-ahead\"\n });\n const [isHovered, setIsHovered] = useState(false);\n const debouncedHandleMouseEnter = useMemo(\n () => debounce(() => setIsHovered(true), delayTime),\n [delayTime]\n );\n const [{ loading, error, value: entity }, load] = useAsyncFn(async () => {\n const catalogApi = apiHolder.get(catalogApiRef);\n if (catalogApi) {\n const retrievedEntity = await catalogApi.getEntityByRef(entityRef);\n if (!retrievedEntity) {\n throw new Error(`${entityRef} not found`);\n }\n return retrievedEntity;\n }\n return void 0;\n }, [apiHolder, entityRef]);\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n debouncedHandleMouseEnter.cancel();\n };\n useEffect(() => {\n if (popupState.isOpen && !entity && !error && !loading) {\n load();\n }\n }, [popupState.isOpen, load, entity, error, loading]);\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { component: \"span\", onMouseEnter: debouncedHandleMouseEnter }, /* @__PURE__ */ React.createElement(\n Typography,\n {\n component: \"span\",\n \"data-testid\": \"trigger\",\n ...bindHover(popupState)\n },\n children\n )), isHovered && /* @__PURE__ */ React.createElement(\n HoverPopover,\n {\n PaperProps: {\n className: classes.popoverPaper\n },\n ...bindPopover(popupState),\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"center\"\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"center\"\n },\n onMouseLeave: handleOnMouseLeave\n },\n /* @__PURE__ */ React.createElement(Card, null, /* @__PURE__ */ React.createElement(CardContent, null, error && /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error }), loading && /* @__PURE__ */ React.createElement(Progress, null), entity && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { color: \"textSecondary\" }, entity.metadata.namespace), /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\", component: \"div\" }, entity.metadata.name), /* @__PURE__ */ React.createElement(Typography, { color: \"textSecondary\", gutterBottom: true }, entity.kind), entity.metadata.description && /* @__PURE__ */ React.createElement(\n Typography,\n {\n className: classes.descriptionTypography,\n paragraph: true\n },\n entity.metadata.description\n ), /* @__PURE__ */ React.createElement(Typography, null, (_b = (_a = entity.spec) == null ? void 0 : _a.type) == null ? void 0 : _b.toString()), /* @__PURE__ */ React.createElement(Box, { marginTop: \"0.5em\" }, (entity.metadata.tags || []).slice(0, maxTagChips).map((tag) => {\n return /* @__PURE__ */ React.createElement(Chip, { key: tag, size: \"small\", label: tag });\n }), ((_c = entity.metadata.tags) == null ? void 0 : _c.length) && ((_d = entity.metadata.tags) == null ? void 0 : _d.length) > maxTagChips && /* @__PURE__ */ React.createElement(Tooltip, { title: \"Drill into the entity to see all of the tags.\" }, /* @__PURE__ */ React.createElement(Chip, { key: \"other-tags\", size: \"small\", label: \"...\" }))))), !error && entity && /* @__PURE__ */ React.createElement(CardActions, null, /* @__PURE__ */ React.createElement(React.Fragment, null, isUserEntity(entity) && /* @__PURE__ */ React.createElement(UserCardActions, { entity }), isGroupEntity(entity) && /* @__PURE__ */ React.createElement(GroupCardActions, { entity }), /* @__PURE__ */ React.createElement(EntityCardActions, { entity }))))\n ));\n};\n\nconst useStyles$8 = makeStyles(\n (_theme) => ({\n searchToolbar: {\n paddingLeft: 0,\n paddingRight: 0\n },\n input: {}\n }),\n {\n name: \"CatalogReactEntitySearchBar\"\n }\n);\nconst EntitySearchBar = () => {\n const classes = useStyles$8();\n const {\n updateFilters,\n queryParameters: { text: textParameter }\n } = useEntityList();\n const queryParamTextFilter = useMemo(\n () => [textParameter].flat()[0],\n [textParameter]\n );\n const [search, setSearch] = useState(queryParamTextFilter != null ? queryParamTextFilter : \"\");\n useDebounce$1(\n () => {\n updateFilters({\n text: search.length ? new EntityTextFilter(search) : void 0\n });\n },\n 250,\n [search, updateFilters]\n );\n useEffect(() => {\n if (queryParamTextFilter) {\n setSearch(queryParamTextFilter);\n }\n }, [queryParamTextFilter]);\n return /* @__PURE__ */ React.createElement(Toolbar, { className: classes.searchToolbar }, /* @__PURE__ */ React.createElement(FormControl, null, /* @__PURE__ */ React.createElement(\n Input,\n {\n \"aria-label\": \"search\",\n id: \"input-with-icon-adornment\",\n className: classes.input,\n placeholder: \"Search\",\n autoComplete: \"off\",\n onChange: (event) => setSearch(event.target.value),\n value: search,\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(Search, null)),\n endAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"end\" }, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n \"aria-label\": \"clear search\",\n onClick: () => setSearch(\"\"),\n edge: \"end\",\n disabled: search.length === 0\n },\n /* @__PURE__ */ React.createElement(Clear, null)\n ))\n }\n )));\n};\n\nconst columnFactories = Object.freeze({\n createEntityRefColumn(options) {\n const { defaultKind } = options;\n function formatContent(entity) {\n var _a;\n return ((_a = entity.metadata) == null ? void 0 : _a.title) || humanizeEntityRef(entity, {\n defaultKind\n });\n }\n return {\n title: \"Name\",\n highlight: true,\n customFilterAndSearch(filter, entity) {\n return formatContent(entity).includes(filter);\n },\n customSort(entity1, entity2) {\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: (entity) => {\n var _a;\n return /* @__PURE__ */ React.createElement(\n EntityRefLink,\n {\n entityRef: entity,\n defaultKind,\n title: (_a = entity.metadata) == null ? void 0 : _a.title\n }\n );\n }\n };\n },\n createEntityRelationColumn(options) {\n const { title, relation, defaultKind, filter: entityFilter } = options;\n function getRelations(entity) {\n return getEntityRelations(entity, relation, entityFilter);\n }\n function formatContent(entity) {\n return getRelations(entity).map((r) => humanizeEntityRef(r, { defaultKind })).join(\", \");\n }\n return {\n title,\n customFilterAndSearch(filter, entity) {\n return formatContent(entity).includes(filter);\n },\n customSort(entity1, entity2) {\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: (entity) => {\n return /* @__PURE__ */ React.createElement(\n EntityRefLinks,\n {\n entityRefs: getRelations(entity),\n defaultKind\n }\n );\n }\n };\n },\n createOwnerColumn() {\n return this.createEntityRelationColumn({\n title: \"Owner\",\n relation: RELATION_OWNED_BY,\n defaultKind: \"group\"\n });\n },\n createDomainColumn() {\n return this.createEntityRelationColumn({\n title: \"Domain\",\n relation: RELATION_PART_OF,\n defaultKind: \"domain\",\n filter: {\n kind: \"domain\"\n }\n });\n },\n createSystemColumn() {\n return this.createEntityRelationColumn({\n title: \"System\",\n relation: RELATION_PART_OF,\n defaultKind: \"system\",\n filter: {\n kind: \"system\"\n }\n });\n },\n createMetadataDescriptionColumn() {\n return {\n title: \"Description\",\n field: \"metadata.description\",\n render: (entity) => /* @__PURE__ */ React.createElement(\n OverflowTooltip,\n {\n text: entity.metadata.description,\n placement: \"bottom-start\",\n line: 2\n }\n )\n };\n },\n createSpecLifecycleColumn() {\n return {\n title: \"Lifecycle\",\n field: \"spec.lifecycle\"\n };\n },\n createSpecTypeColumn() {\n return {\n title: \"Type\",\n field: \"spec.type\"\n };\n }\n});\n\nconst systemEntityColumns = [\n columnFactories.createEntityRefColumn({ defaultKind: \"system\" }),\n columnFactories.createDomainColumn(),\n columnFactories.createOwnerColumn(),\n columnFactories.createMetadataDescriptionColumn()\n];\nconst componentEntityColumns = [\n columnFactories.createEntityRefColumn({ defaultKind: \"component\" }),\n columnFactories.createSystemColumn(),\n columnFactories.createOwnerColumn(),\n columnFactories.createSpecTypeColumn(),\n columnFactories.createSpecLifecycleColumn(),\n columnFactories.createMetadataDescriptionColumn()\n];\n\nconst useStyles$7 = makeStyles((theme) => ({\n empty: {\n padding: theme.spacing(2),\n display: \"flex\",\n justifyContent: \"center\"\n }\n}));\nconst EntityTable = (props) => {\n const {\n entities,\n title,\n emptyContent,\n variant = \"gridItem\",\n columns,\n tableOptions = {}\n } = props;\n const classes = useStyles$7();\n const tableStyle = {\n minWidth: \"0\",\n width: \"100%\"\n };\n if (variant === \"gridItem\") {\n tableStyle.height = \"calc(100% - 10px)\";\n }\n return /* @__PURE__ */ React.createElement(\n Table,\n {\n columns,\n title,\n style: tableStyle,\n emptyContent: emptyContent && /* @__PURE__ */ React.createElement(\"div\", { className: classes.empty }, emptyContent),\n options: {\n // TODO: Toolbar padding if off compared to other cards, should be: padding: 16px 24px;\n search: false,\n paging: false,\n actionsColumnIndex: -1,\n padding: \"dense\",\n draggable: false,\n ...tableOptions\n },\n data: entities\n }\n );\n};\nEntityTable.columns = columnFactories;\nEntityTable.systemEntityColumns = systemEntityColumns;\nEntityTable.componentEntityColumns = componentEntityColumns;\n\nconst YellowStar = withStyles({\n root: {\n color: \"#f3ba37\"\n }\n})(StarIcon);\nconst FavoriteEntity = (props) => {\n const { toggleStarredEntity, isStarredEntity } = useStarredEntity(\n props.entity\n );\n return /* @__PURE__ */ React.createElement(\n IconButton,\n {\n \"aria-label\": \"favorite\",\n color: \"inherit\",\n ...props,\n onClick: () => toggleStarredEntity()\n },\n /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n title: isStarredEntity ? \"Remove from favorites\" : \"Add to favorites\"\n },\n isStarredEntity ? /* @__PURE__ */ React.createElement(YellowStar, null) : /* @__PURE__ */ React.createElement(StarBorder, null)\n )\n );\n};\n\nconst DEFAULT_ICON = SvgIcon;\nfunction getKind(kind, entityRef) {\n if (kind) {\n return kind.toLocaleLowerCase(\"en-US\");\n }\n if (entityRef) {\n try {\n return parseEntityRef(entityRef).kind.toLocaleLowerCase(\"en-US\");\n } catch {\n return void 0;\n }\n }\n return void 0;\n}\nfunction useIcon(kind, entityRef) {\n const app = useApp();\n const actualKind = getKind(kind, entityRef);\n if (!actualKind) {\n return DEFAULT_ICON;\n }\n const icon = app.getSystemIcon(`kind:${actualKind}`);\n return icon || DEFAULT_ICON;\n}\nfunction EntityKindIcon(props) {\n const { kind, entityRef, ...otherProps } = props;\n const Icon = useIcon(kind, entityRef);\n return /* @__PURE__ */ React.createElement(Icon, { ...otherProps });\n}\n\nconst useStyles$6 = makeStyles((theme) => ({\n node: {\n fill: theme.palette.grey[300],\n stroke: theme.palette.grey[300],\n \"&.primary\": {\n fill: theme.palette.primary.light,\n stroke: theme.palette.primary.light\n },\n \"&.secondary\": {\n fill: theme.palette.secondary.light,\n stroke: theme.palette.secondary.light\n }\n },\n text: {\n fill: theme.palette.getContrastText(theme.palette.grey[300]),\n \"&.primary\": {\n fill: theme.palette.primary.contrastText\n },\n \"&.secondary\": {\n fill: theme.palette.secondary.contrastText\n },\n \"&.focused\": {\n fontWeight: \"bold\"\n }\n },\n clickable: {\n cursor: \"pointer\"\n }\n}));\nfunction useAncestry(root) {\n const catalogClient = useApi(catalogApiRef);\n const entityRef = stringifyEntityRef(root);\n const { loading, error, value } = useAsync(async () => {\n const response = await catalogClient.getEntityAncestors({ entityRef });\n const nodes = new Array();\n const edges = new Array();\n for (const current of response.items) {\n const currentRef = stringifyEntityRef(current.entity);\n const isRootNode = currentRef === response.rootEntityRef;\n nodes.push({ id: currentRef, root: isRootNode, ...current.entity });\n for (const parentRef of current.parentEntityRefs) {\n edges.push({ from: currentRef, to: parentRef });\n }\n }\n return { nodes, edges };\n }, [entityRef]);\n return {\n loading,\n error,\n nodes: (value == null ? void 0 : value.nodes) || [],\n edges: (value == null ? void 0 : value.edges) || []\n };\n}\nfunction CustomNode({ node }) {\n const classes = useStyles$6();\n const navigate = useNavigate();\n const entityRoute = useRouteRef(entityRouteRef);\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const app = useApp();\n const idRef = useRef(null);\n useLayoutEffect(() => {\n if (idRef.current) {\n let { height: renderedHeight, width: renderedWidth } = idRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n if (renderedHeight !== height || renderedWidth !== width) {\n setWidth(renderedWidth);\n setHeight(renderedHeight);\n }\n }\n }, [width, height]);\n const hasKindIcon = app.getSystemIcon(\n `kind:${node.kind.toLocaleLowerCase(\"en-US\")}`\n );\n const padding = 10;\n const iconSize = height;\n const paddedIconWidth = hasKindIcon ? iconSize + padding : 0;\n const paddedWidth = paddedIconWidth + width + padding * 2;\n const paddedHeight = height + padding * 2;\n const displayTitle = node.metadata.title || (node.kind && node.metadata.name && node.metadata.namespace ? humanizeEntityRef({\n kind: node.kind,\n name: node.metadata.name,\n namespace: node.metadata.namespace || \"\"\n }) : node.id);\n const onClick = () => {\n navigate(\n entityRoute({\n kind: node.kind,\n namespace: node.metadata.namespace || DEFAULT_NAMESPACE,\n name: node.metadata.name\n })\n );\n };\n return /* @__PURE__ */ React.createElement(\"g\", { onClick, className: classes.clickable }, /* @__PURE__ */ React.createElement(\n \"rect\",\n {\n className: classNames(\n classes.node,\n node.root ? \"secondary\" : \"primary\"\n ),\n width: paddedWidth,\n height: paddedHeight,\n rx: 10\n }\n ), hasKindIcon && /* @__PURE__ */ React.createElement(\n EntityKindIcon,\n {\n kind: node.kind,\n y: padding,\n x: padding,\n width: iconSize,\n height: iconSize,\n className: classNames(\n classes.text,\n node.root ? \"secondary\" : \"primary\"\n )\n }\n ), /* @__PURE__ */ React.createElement(\n \"text\",\n {\n ref: idRef,\n className: classNames(\n classes.text,\n node.root ? \"secondary\" : \"primary\"\n ),\n y: paddedHeight / 2,\n x: paddedIconWidth + (width + padding * 2) / 2,\n textAnchor: \"middle\",\n alignmentBaseline: \"middle\"\n },\n displayTitle\n ));\n}\nfunction AncestryPage(props) {\n const { loading, error, nodes, edges } = useAncestry(props.entity);\n if (loading) {\n return /* @__PURE__ */ React.createElement(Progress, null);\n } else if (error) {\n return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, { variant: \"h2\" }, \"Ancestry\"), /* @__PURE__ */ React.createElement(DialogContentText, { gutterBottom: true }, \"This is the ancestry of entities above the current one - as in, the chain(s) of entities down to the current one, where\", \" \", /* @__PURE__ */ React.createElement(Link, { to: \"https://backstage.io/docs/features/software-catalog/life-of-an-entity\" }, \"processors emitted\"), \" \", \"child entities that ultimately led to the current one existing. Note that this is a completely different mechanism from relations.\"), /* @__PURE__ */ React.createElement(Box, { mt: 4 }, /* @__PURE__ */ React.createElement(\n DependencyGraph,\n {\n nodes,\n edges,\n renderNode: CustomNode,\n direction: DependencyGraphTypes.Direction.BOTTOM_TOP,\n zoom: \"enable-on-click\"\n }\n )));\n}\n\nconst useStyles$5 = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n marginTop: {\n marginTop: theme.spacing(2)\n },\n helpIcon: {\n marginLeft: theme.spacing(1),\n color: theme.palette.text.disabled\n },\n monospace: {\n fontFamily: \"monospace\"\n }\n}));\nfunction ListItemText(props) {\n const classes = useStyles$5();\n return /* @__PURE__ */ React.createElement(\n ListItemText$1,\n {\n ...props,\n primaryTypographyProps: { className: classes.monospace },\n secondaryTypographyProps: { className: classes.monospace }\n }\n );\n}\nfunction ListSubheader(props) {\n const classes = useStyles$5();\n return /* @__PURE__ */ React.createElement(MuiListSubheader, { className: classes.monospace }, props.children);\n}\nfunction Container(props) {\n return /* @__PURE__ */ React.createElement(Box, { mt: 2 }, /* @__PURE__ */ React.createElement(Card, { variant: \"outlined\" }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"h6\", gutterBottom: true }, props.title, props.helpLink && /* @__PURE__ */ React.createElement(HelpIcon, { to: props.helpLink })), props.children)));\n}\nfunction findLink(value) {\n if (value.match(/^url:https?:\\/\\//)) {\n return value.slice(\"url:\".length);\n }\n if (value.match(/^https?:\\/\\//)) {\n return value;\n }\n return void 0;\n}\nfunction KeyValueListItem(props) {\n const [key, value] = props.entry;\n const link = findLink(value);\n return /* @__PURE__ */ React.createElement(ListItem, null, props.indent && /* @__PURE__ */ React.createElement(ListItemIcon, null), /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: key,\n secondary: link ? /* @__PURE__ */ React.createElement(Link, { to: link }, value) : value\n }\n ));\n}\nfunction HelpIcon(props) {\n const classes = useStyles$5();\n return /* @__PURE__ */ React.createElement(Link, { to: props.to, className: classes.helpIcon }, /* @__PURE__ */ React.createElement(HelpOutlineIcon, { fontSize: \"inherit\" }));\n}\n\nconst useStyles$4 = makeStyles({\n root: {\n display: \"flex\",\n flexDirection: \"column\"\n }\n});\nfunction useColocated(entity) {\n var _a, _b;\n const catalogApi = useApi(catalogApiRef);\n const currentEntityRef = stringifyEntityRef(entity);\n const location = (_a = entity.metadata.annotations) == null ? void 0 : _a[ANNOTATION_LOCATION];\n const origin = (_b = entity.metadata.annotations) == null ? void 0 : _b[ANNOTATION_ORIGIN_LOCATION];\n const { loading, error, value } = useAsync(async () => {\n if (!location && !origin) {\n return [];\n }\n const response = await catalogApi.getEntities({\n filter: [\n ...location ? [{ [`metadata.annotations.${ANNOTATION_LOCATION}`]: location }] : [],\n ...origin ? [{ [`metadata.annotations.${ANNOTATION_ORIGIN_LOCATION}`]: origin }] : []\n ]\n });\n return response.items;\n }, [location, origin]);\n return {\n loading,\n error,\n location,\n originLocation: origin,\n colocatedEntities: value == null ? void 0 : value.filter(\n (colocated) => stringifyEntityRef(colocated) !== currentEntityRef\n )\n };\n}\nfunction EntityList(props) {\n return /* @__PURE__ */ React.createElement(List, { dense: true }, props.header && /* @__PURE__ */ React.createElement(KeyValueListItem, { key: \"header\", entry: props.header }), props.entities.map((entity) => /* @__PURE__ */ React.createElement(ListItem, { key: stringifyEntityRef(entity) }, /* @__PURE__ */ React.createElement(ListItemText, { primary: /* @__PURE__ */ React.createElement(EntityRefLink, { entityRef: entity }) }))));\n}\nfunction Contents$1(props) {\n const { entity } = props;\n const { loading, error, location, originLocation, colocatedEntities } = useColocated(entity);\n if (loading) {\n return /* @__PURE__ */ React.createElement(Progress, null);\n } else if (error) {\n return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });\n }\n if (!location && !originLocation) {\n return /* @__PURE__ */ React.createElement(Alert, { severity: \"warning\" }, \"Entity had no location information.\");\n } else if (!(colocatedEntities == null ? void 0 : colocatedEntities.length)) {\n return /* @__PURE__ */ React.createElement(Alert, { severity: \"info\" }, \"There were no other entities on this location.\");\n }\n if (location === originLocation) {\n return /* @__PURE__ */ React.createElement(EntityList, { entities: colocatedEntities });\n }\n const atLocation = colocatedEntities.filter(\n (e) => {\n var _a;\n return ((_a = e.metadata.annotations) == null ? void 0 : _a[ANNOTATION_LOCATION]) === location;\n }\n );\n const atOrigin = colocatedEntities.filter(\n (e) => {\n var _a;\n return ((_a = e.metadata.annotations) == null ? void 0 : _a[ANNOTATION_ORIGIN_LOCATION]) === originLocation;\n }\n );\n return /* @__PURE__ */ React.createElement(React.Fragment, null, atLocation.length > 0 && /* @__PURE__ */ React.createElement(\n EntityList,\n {\n entities: atLocation,\n header: [\"At the same location\", location]\n }\n ), atOrigin.length > 0 && /* @__PURE__ */ React.createElement(\n EntityList,\n {\n entities: atOrigin,\n header: [\"At the same origin\", originLocation]\n }\n ));\n}\nfunction ColocatedPage(props) {\n const classes = useStyles$4();\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, { variant: \"h2\" }, \"Colocated\"), /* @__PURE__ */ React.createElement(DialogContentText, null, \"These are the entities that are colocated with this entity - as in, they originated from the same data source (e.g. came from the same YAML file), or from the same origin (e.g. the originally registered URL).\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(Contents$1, { entity: props.entity })));\n}\n\nfunction sortKeys(data) {\n return Object.fromEntries(\n [...Object.entries(data)].sort((a, b) => a[0] < b[0] ? -1 : 1)\n );\n}\n\nfunction JsonPage(props) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, { variant: \"h2\" }, \"Entity as JSON\"), /* @__PURE__ */ React.createElement(DialogContentText, null, \"This is the raw entity data as received from the catalog, on JSON form.\"), /* @__PURE__ */ React.createElement(DialogContentText, null, /* @__PURE__ */ React.createElement(\"div\", { style: { fontSize: \"75%\" }, \"data-testid\": \"code-snippet\" }, /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: JSON.stringify(sortKeys(props.entity), void 0, 2),\n language: \"json\",\n showCopyCodeButton: true\n }\n ))));\n}\n\nconst useStyles$3 = makeStyles({\n root: {\n display: \"flex\",\n flexDirection: \"column\"\n }\n});\nfunction OverviewPage(props) {\n var _a, _b, _c;\n const classes = useStyles$3();\n const {\n apiVersion,\n kind,\n metadata,\n spec,\n relations = [],\n status = {}\n } = props.entity;\n const groupedRelations = groupBy(\n sortBy(relations, (r) => r.targetRef),\n \"type\"\n );\n const entityRef = stringifyEntityRef(props.entity);\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, { variant: \"h2\" }, \"Overview\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(Container, { title: \"Identity\" }, /* @__PURE__ */ React.createElement(List, { dense: true }, /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemText, { primary: \"apiVersion\", secondary: apiVersion })), /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemText, { primary: \"kind\", secondary: kind })), (spec == null ? void 0 : spec.type) && /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: \"spec.type\",\n secondary: (_a = spec.type) == null ? void 0 : _a.toString()\n }\n )), metadata.uid && /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemText, { primary: \"uid\", secondary: metadata.uid }), /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, /* @__PURE__ */ React.createElement(CopyTextButton, { text: metadata.uid }))), metadata.etag && /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemText, { primary: \"etag\", secondary: metadata.etag }), /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, /* @__PURE__ */ React.createElement(CopyTextButton, { text: metadata.etag }))), /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemText, { primary: \"entityRef\", secondary: entityRef }), /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, /* @__PURE__ */ React.createElement(CopyTextButton, { text: entityRef }))))), /* @__PURE__ */ React.createElement(Container, { title: \"Metadata\" }, !!Object.keys(metadata.annotations || {}).length && /* @__PURE__ */ React.createElement(\n List,\n {\n dense: true,\n subheader: /* @__PURE__ */ React.createElement(ListSubheader, null, \"Annotations\", /* @__PURE__ */ React.createElement(HelpIcon, { to: \"https://backstage.io/docs/features/software-catalog/well-known-annotations\" }))\n },\n Object.entries(metadata.annotations).map((entry) => /* @__PURE__ */ React.createElement(KeyValueListItem, { key: entry[0], indent: true, entry }))\n ), !!Object.keys(metadata.labels || {}).length && /* @__PURE__ */ React.createElement(List, { dense: true, subheader: /* @__PURE__ */ React.createElement(ListSubheader, null, \"Labels\") }, Object.entries(metadata.labels).map((entry) => /* @__PURE__ */ React.createElement(KeyValueListItem, { key: entry[0], indent: true, entry }))), !!((_b = metadata.tags) == null ? void 0 : _b.length) && /* @__PURE__ */ React.createElement(List, { dense: true, subheader: /* @__PURE__ */ React.createElement(ListSubheader, null, \"Tags\") }, metadata.tags.map((tag, index) => /* @__PURE__ */ React.createElement(ListItem, { key: `${tag}-${index}` }, /* @__PURE__ */ React.createElement(ListItemIcon, null), /* @__PURE__ */ React.createElement(ListItemText, { primary: tag }))))), !!relations.length && /* @__PURE__ */ React.createElement(\n Container,\n {\n title: \"Relations\",\n helpLink: \"https://backstage.io/docs/features/software-catalog/well-known-relations\"\n },\n Object.entries(groupedRelations).map(\n ([type, groupRelations], index) => /* @__PURE__ */ React.createElement(\"div\", { key: index }, /* @__PURE__ */ React.createElement(List, { dense: true, subheader: /* @__PURE__ */ React.createElement(ListSubheader, null, type) }, groupRelations.map((group) => /* @__PURE__ */ React.createElement(ListItem, { key: group.targetRef }, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: /* @__PURE__ */ React.createElement(EntityRefLink, { entityRef: group.targetRef })\n }\n )))))\n )\n ), !!((_c = status.items) == null ? void 0 : _c.length) && /* @__PURE__ */ React.createElement(\n Container,\n {\n title: \"Status\",\n helpLink: \"https://backstage.io/docs/features/software-catalog/well-known-statuses\"\n },\n status.items.map((item, index) => /* @__PURE__ */ React.createElement(\"div\", { key: index }, /* @__PURE__ */ React.createElement(Typography, null, item.level, \": \", item.type), /* @__PURE__ */ React.createElement(Box, { ml: 2 }, item.message)))\n )));\n}\n\nfunction YamlPage(props) {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, { variant: \"h2\" }, \"Entity as YAML\"), /* @__PURE__ */ React.createElement(DialogContentText, null, \"This is the raw entity data as received from the catalog, on YAML form.\"), /* @__PURE__ */ React.createElement(DialogContentText, null, /* @__PURE__ */ React.createElement(\"div\", { style: { fontSize: \"75%\" }, \"data-testid\": \"code-snippet\" }, /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: YAML.stringify(sortKeys(props.entity)),\n language: \"yaml\",\n showCopyCodeButton: true\n }\n ))));\n}\n\nconst useStyles$2 = makeStyles((theme) => ({\n fullHeightDialog: {\n height: \"calc(100% - 64px)\"\n },\n root: {\n display: \"flex\",\n flexGrow: 1,\n width: \"100%\",\n backgroundColor: theme.palette.background.paper\n },\n tabs: {\n borderRight: `1px solid ${theme.palette.divider}`,\n flexShrink: 0\n },\n tabContents: {\n flexGrow: 1,\n overflowX: \"auto\"\n }\n}));\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n const classes = useStyles$2();\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n role: \"tabpanel\",\n hidden: value !== index,\n id: `vertical-tabpanel-${index}`,\n \"aria-labelledby\": `vertical-tab-${index}`,\n className: classes.tabContents,\n ...other\n },\n value === index && /* @__PURE__ */ React.createElement(Box, { pl: 3, pr: 3 }, children)\n );\n}\nfunction a11yProps(index) {\n return {\n id: `vertical-tab-${index}`,\n \"aria-controls\": `vertical-tabpanel-${index}`\n };\n}\nfunction InspectEntityDialog(props) {\n const classes = useStyles$2();\n const [activeTab, setActiveTab] = React.useState(0);\n useEffect(() => {\n setActiveTab(0);\n }, [props.open]);\n if (!props.entity) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(\n Dialog,\n {\n fullWidth: true,\n maxWidth: \"xl\",\n open: props.open,\n onClose: props.onClose,\n \"aria-labelledby\": \"entity-inspector-dialog-title\",\n PaperProps: { className: classes.fullHeightDialog }\n },\n /* @__PURE__ */ React.createElement(DialogTitle, { id: \"entity-inspector-dialog-title\" }, \"Entity Inspector\"),\n /* @__PURE__ */ React.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\n Tabs,\n {\n orientation: \"vertical\",\n variant: \"scrollable\",\n value: activeTab,\n onChange: (_, newValue) => setActiveTab(newValue),\n \"aria-label\": \"Inspector options\",\n className: classes.tabs\n },\n /* @__PURE__ */ React.createElement(Tab, { label: \"Overview\", ...a11yProps(0) }),\n /* @__PURE__ */ React.createElement(Tab, { label: \"Ancestry\", ...a11yProps(1) }),\n /* @__PURE__ */ React.createElement(Tab, { label: \"Colocated\", ...a11yProps(2) }),\n /* @__PURE__ */ React.createElement(Tab, { label: \"Raw JSON\", ...a11yProps(3) }),\n /* @__PURE__ */ React.createElement(Tab, { label: \"Raw YAML\", ...a11yProps(4) })\n ), /* @__PURE__ */ React.createElement(TabPanel, { value: activeTab, index: 0 }, /* @__PURE__ */ React.createElement(OverviewPage, { entity: props.entity })), /* @__PURE__ */ React.createElement(TabPanel, { value: activeTab, index: 1 }, /* @__PURE__ */ React.createElement(AncestryPage, { entity: props.entity })), /* @__PURE__ */ React.createElement(TabPanel, { value: activeTab, index: 2 }, /* @__PURE__ */ React.createElement(ColocatedPage, { entity: props.entity })), /* @__PURE__ */ React.createElement(TabPanel, { value: activeTab, index: 3 }, /* @__PURE__ */ React.createElement(JsonPage, { entity: props.entity })), /* @__PURE__ */ React.createElement(TabPanel, { value: activeTab, index: 4 }, /* @__PURE__ */ React.createElement(YamlPage, { entity: props.entity })))),\n /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(Button, { onClick: props.onClose, color: \"primary\" }, \"Close\"))\n );\n}\n\nfunction useUnregisterEntityDialogState(entity) {\n var _a;\n const catalogApi = useApi(catalogApiRef);\n const locationRef = (_a = entity.metadata.annotations) == null ? void 0 : _a[ANNOTATION_ORIGIN_LOCATION];\n const uid = entity.metadata.uid;\n const isBootstrap = locationRef === \"bootstrap:bootstrap\";\n const prerequisites = useAsync(async () => {\n const locationPromise = catalogApi.getLocationByRef(locationRef);\n let colocatedEntitiesPromise;\n if (!locationRef) {\n colocatedEntitiesPromise = Promise.resolve([]);\n } else {\n const locationAnnotationFilter = `metadata.annotations.${ANNOTATION_ORIGIN_LOCATION}`;\n colocatedEntitiesPromise = catalogApi.getEntities({\n filter: { [locationAnnotationFilter]: locationRef },\n fields: [\n \"kind\",\n \"metadata.uid\",\n \"metadata.name\",\n \"metadata.namespace\"\n ]\n }).then((response) => response.items);\n }\n return Promise.all([locationPromise, colocatedEntitiesPromise]).then(\n ([location2, colocatedEntities2]) => ({\n location: location2,\n colocatedEntities: colocatedEntities2\n })\n );\n }, [catalogApi, entity]);\n const unregisterLocation = useCallback(\n async function unregisterLocationFn() {\n const { location: location2 } = prerequisites.value;\n await catalogApi.removeLocationById(location2.id);\n },\n [catalogApi, prerequisites]\n );\n const deleteEntity = useCallback(\n async function deleteEntityFn() {\n await catalogApi.removeEntityByUid(uid);\n },\n [catalogApi, uid]\n );\n if (isBootstrap) {\n return { type: \"bootstrap\", location: locationRef, deleteEntity };\n }\n const { loading, error, value } = prerequisites;\n if (loading) {\n return { type: \"loading\" };\n } else if (error) {\n return { type: \"error\", error };\n }\n const { location, colocatedEntities } = value;\n if (!location) {\n return { type: \"only-delete\", deleteEntity };\n }\n return {\n type: \"unregister\",\n location: locationRef,\n colocatedEntities: colocatedEntities.map(getCompoundEntityRef),\n unregisterLocation,\n deleteEntity\n };\n}\n\nconst useStyles$1 = makeStyles({\n advancedButton: {\n fontSize: \"0.7em\"\n },\n dialogActions: {\n display: \"inline-block\"\n }\n});\nconst Contents = ({\n entity,\n onConfirm,\n onClose\n}) => {\n var _a;\n const alertApi = useApi(alertApiRef);\n const configApi = useApi(configApiRef);\n const classes = useStyles$1();\n const state = useUnregisterEntityDialogState(entity);\n const [showDelete, setShowDelete] = useState(false);\n const [busy, setBusy] = useState(false);\n const appTitle = (_a = configApi.getOptionalString(\"app.title\")) != null ? _a : \"Backstage\";\n const onUnregister = useCallback(\n async function onUnregisterFn() {\n if (\"unregisterLocation\" in state) {\n setBusy(true);\n try {\n await state.unregisterLocation();\n onConfirm();\n } catch (err) {\n assertError(err);\n alertApi.post({ message: err.message });\n } finally {\n setBusy(false);\n }\n }\n },\n [alertApi, onConfirm, state]\n );\n const onDelete = useCallback(\n async function onDeleteFn() {\n var _a2;\n if (\"deleteEntity\" in state) {\n setBusy(true);\n try {\n await state.deleteEntity();\n const entityName = (_a2 = entity.metadata.title) != null ? _a2 : entity.metadata.name;\n onConfirm();\n alertApi.post({\n message: `Removed entity ${entityName}`,\n severity: \"success\",\n display: \"transient\"\n });\n } catch (err) {\n assertError(err);\n alertApi.post({ message: err.message });\n } finally {\n setBusy(false);\n }\n }\n },\n [alertApi, onConfirm, state, entity]\n );\n const DialogActionsPanel = () => /* @__PURE__ */ React.createElement(DialogActions, { className: classes.dialogActions }, /* @__PURE__ */ React.createElement(Button, { onClick: onClose, color: \"primary\" }, \"Cancel\"));\n if (state.type === \"loading\") {\n return /* @__PURE__ */ React.createElement(Progress, null);\n }\n if (state.type === \"error\") {\n return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error: state.error });\n }\n if (state.type === \"bootstrap\") {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Alert, { severity: \"info\" }, 'You cannot unregister this entity, since it originates from a protected Backstage configuration (location \"', state.location, '\"). If you believe this is in error, please contact the ', appTitle, \" \", \"integrator.\"), /* @__PURE__ */ React.createElement(Box, { marginTop: 2 }, !showDelete && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"text\",\n size: \"small\",\n color: \"primary\",\n className: classes.advancedButton,\n onClick: () => setShowDelete(true)\n },\n \"Advanced Options\"\n ), /* @__PURE__ */ React.createElement(DialogActionsPanel, null)), showDelete && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, null, \"You have the option to delete the entity itself from the catalog. Note that this should only be done if you know that the catalog file has been deleted at, or moved from, its origin location. If that is not the case, the entity will reappear shortly as the next refresh round is performed by the catalog.\"), /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"secondary\",\n disabled: busy,\n onClick: onDelete\n },\n \"Delete Entity\"\n ), /* @__PURE__ */ React.createElement(DialogActionsPanel, null))));\n }\n if (state.type === \"only-delete\") {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, null, \"This entity does not seem to originate from a registered location. You therefore only have the option to delete it outright from the catalog.\"), /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"secondary\",\n disabled: busy,\n onClick: onDelete\n },\n \"Delete Entity\"\n ), /* @__PURE__ */ React.createElement(DialogActionsPanel, null));\n }\n if (state.type === \"unregister\") {\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogContentText, null, \"This action will unregister the following entities:\"), /* @__PURE__ */ React.createElement(DialogContentText, { component: \"ul\" }, state.colocatedEntities.map((e) => /* @__PURE__ */ React.createElement(\"li\", { key: `${e.kind}:${e.namespace}/${e.name}` }, /* @__PURE__ */ React.createElement(EntityRefLink, { entityRef: e })))), /* @__PURE__ */ React.createElement(DialogContentText, null, \"Located at the following location:\"), /* @__PURE__ */ React.createElement(DialogContentText, { component: \"ul\" }, /* @__PURE__ */ React.createElement(\"li\", null, state.location)), /* @__PURE__ */ React.createElement(DialogContentText, null, \"To undo, just re-register the entity in \", appTitle, \".\"), /* @__PURE__ */ React.createElement(Box, { marginTop: 2 }, /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"secondary\",\n disabled: busy,\n onClick: onUnregister\n },\n \"Unregister Location\"\n ), !showDelete && /* @__PURE__ */ React.createElement(Box, { component: \"span\", marginLeft: 2 }, /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"text\",\n size: \"small\",\n color: \"primary\",\n className: classes.advancedButton,\n onClick: () => setShowDelete(true)\n },\n \"Advanced Options\"\n ))), showDelete && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { paddingTop: 4, paddingBottom: 4 }, /* @__PURE__ */ React.createElement(Divider, null)), /* @__PURE__ */ React.createElement(DialogContentText, null, \"You also have the option to delete the entity itself from the catalog. Note that this should only be done if you know that the catalog file has been deleted at, or moved from, its origin location. If that is not the case, the entity will reappear shortly as the next refresh round is performed by the catalog.\"), /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"secondary\",\n disabled: busy,\n onClick: onDelete\n },\n \"Delete Entity\"\n )));\n }\n return /* @__PURE__ */ React.createElement(Alert, { severity: \"error\" }, \"Internal error: Unknown state\");\n};\nconst UnregisterEntityDialog = (props) => {\n const { open, onConfirm, onClose, entity } = props;\n return /* @__PURE__ */ React.createElement(Dialog, { open, onClose }, /* @__PURE__ */ React.createElement(DialogTitle, { id: \"responsive-dialog-title\" }, \"Are you sure you want to unregister this entity?\"), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(Contents, { entity, onConfirm, onClose })));\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n code: {\n borderRadius: 6,\n margin: theme.spacing(2, 0),\n background: theme.palette.type === \"dark\" ? \"#444\" : theme.palette.common.white\n }\n }),\n { name: \"BackstageMissingAnnotationEmptyState\" }\n);\nfunction generateYamlExample(annotations, entity) {\n var _a, _b;\n const kind = (entity == null ? void 0 : entity.kind) || \"Component\";\n const name = (entity == null ? void 0 : entity.metadata.name) || \"example\";\n const type = ((_a = entity == null ? void 0 : entity.spec) == null ? void 0 : _a.type) || \"website\";\n const owner = ((_b = entity == null ? void 0 : entity.spec) == null ? void 0 : _b.owner) || \"user:default/guest\";\n const yamlText = `apiVersion: backstage.io/v1alpha1\nkind: ${kind}\nmetadata:\n name: ${name}\n annotations:${annotations.map((ann) => `\n ${ann}: value`).join(\"\")}\nspec:\n type: ${type}\n owner: ${owner}`;\n let line = 6;\n const lineNumbers = [];\n annotations.forEach(() => {\n lineNumbers.push(line);\n line++;\n });\n return {\n yamlText,\n lineNumbers\n };\n}\nfunction generateDescription(annotations, entityKind = \"Component\") {\n const isSingular = annotations.length <= 1;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, \"The \", isSingular ? \"annotation\" : \"annotations\", \" \", annotations.map((ann) => /* @__PURE__ */ React.createElement(\"code\", null, ann)).reduce((prev, curr) => /* @__PURE__ */ React.createElement(React.Fragment, null, prev, \", \", curr)), \" \", isSingular ? \"is\" : \"are\", \" missing. You need to add the\", \" \", isSingular ? \"annotation\" : \"annotations\", \" to your \", entityKind, \" if you want to enable this tool.\");\n}\nfunction MissingAnnotationEmptyState(props) {\n let entity;\n try {\n const entityContext = useEntity();\n entity = entityContext.entity;\n } catch (err) {\n }\n const { annotation, readMoreUrl } = props;\n const annotations = Array.isArray(annotation) ? annotation : [annotation];\n const url = readMoreUrl || \"https://backstage.io/docs/features/software-catalog/well-known-annotations\";\n const classes = useStyles();\n const entityKind = (entity == null ? void 0 : entity.kind) || \"Component\";\n const { yamlText, lineNumbers } = generateYamlExample(annotations, entity);\n return /* @__PURE__ */ React.createElement(\n EmptyState,\n {\n missing: \"field\",\n title: \"Missing Annotation\",\n description: generateDescription(annotations, entityKind),\n action: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, \"Add the annotation to your \", entityKind, \" YAML as shown in the highlighted example below:\"), /* @__PURE__ */ React.createElement(Box, { className: classes.code }, /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: yamlText,\n language: \"yaml\",\n showLineNumbers: true,\n highlightedNumbers: lineNumbers,\n customStyle: { background: \"inherit\", fontSize: \"115%\" }\n }\n )), /* @__PURE__ */ React.createElement(Button, { color: \"primary\", component: Link, to: url }, \"Read more\"))\n }\n );\n}\n\nfunction MockEntityListContextProvider(props) {\n var _a;\n const { children, value } = props;\n const [filters, setFilters] = useState((_a = value == null ? void 0 : value.filters) != null ? _a : {});\n const updateFilters = useCallback(\n (update) => {\n setFilters((prevFilters) => {\n const newFilters = typeof update === \"function\" ? update(prevFilters) : update;\n return { ...prevFilters, ...newFilters };\n });\n },\n []\n );\n const defaultValues = useMemo(\n () => ({\n entities: [],\n backendEntities: [],\n queryParameters: {}\n }),\n []\n );\n const resolvedValue = useMemo(\n () => {\n var _a2, _b, _c, _d, _e, _f, _g;\n return {\n entities: (_a2 = value == null ? void 0 : value.entities) != null ? _a2 : defaultValues.entities,\n backendEntities: (_b = value == null ? void 0 : value.backendEntities) != null ? _b : defaultValues.backendEntities,\n updateFilters: (_c = value == null ? void 0 : value.updateFilters) != null ? _c : updateFilters,\n filters,\n loading: (_d = value == null ? void 0 : value.loading) != null ? _d : false,\n queryParameters: (_e = value == null ? void 0 : value.queryParameters) != null ? _e : defaultValues.queryParameters,\n error: value == null ? void 0 : value.error,\n totalItems: (_g = value == null ? void 0 : value.totalItems) != null ? _g : ((_f = value == null ? void 0 : value.entities) != null ? _f : defaultValues.entities).length\n };\n },\n [value, defaultValues, filters, updateFilters]\n );\n return /* @__PURE__ */ React.createElement(EntityListContext.Provider, { value: resolvedValue }, children);\n}\n\nexport { CatalogFilterLayout, DefaultFilters, EntityAutocompletePicker, EntityDisplayName, EntityErrorFilter, EntityKindFilter, EntityKindPicker, EntityLifecycleFilter, EntityLifecyclePicker, EntityListContext, EntityListProvider, EntityNamespaceFilter, EntityNamespacePicker, EntityOrphanFilter, EntityOwnerFilter, EntityOwnerPicker, EntityPeekAheadPopover, EntityProcessingStatusPicker, EntityRefLink, EntityRefLinks, EntitySearchBar, EntityTable, EntityTagFilter, EntityTagPicker, EntityTextFilter, EntityTypeFilter, EntityTypePicker, EntityUserFilter, FavoriteEntity, InspectEntityDialog, MissingAnnotationEmptyState, MockEntityListContextProvider, MockStarredEntitiesApi, UnregisterEntityDialog, UserListFilter, UserListPicker, catalogApiRef, columnFactories, defaultEntityPresentation, entityPresentationApiRef, entityRouteParams, entityRouteRef, getEntityRelations, getEntitySourceLocation, humanizeEntityRef, starredEntitiesApiRef, useEntity, useEntityList, useEntityOwnership, useEntityPresentation, useEntityTypeFilter, useRelatedEntities, useStarredEntities, useStarredEntity };\n//# sourceMappingURL=index.esm.js.map\n","import { useOutlet } from 'react-router-dom';\nimport React, { useState, useEffect, useCallback, cloneElement } from 'react';\nimport List from '@material-ui/core/List';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport { EmptyState, CodeSnippet, sidebarConfig, InfoCard, useSidebarPinState, Select, Page, Header, RoutedTabs } from '@backstage/core-components';\nimport Star from '@material-ui/icons/Star';\nimport Grid from '@material-ui/core/Grid';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { useApi, errorApiRef, SessionState, googleAuthApiRef, microsoftAuthApiRef, githubAuthApiRef, gitlabAuthApiRef, oktaAuthApiRef, bitbucketAuthApiRef, oneloginAuthApiRef, atlassianAuthApiRef, bitbucketServerAuthApiRef, configApiRef, featureFlagsApiRef, FeatureFlagState, identityApiRef, alertApiRef, appThemeApiRef, attachComponentData, useElementFilter } from '@backstage/core-plugin-api';\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport IconButton from '@material-ui/core/IconButton';\nimport Switch from '@material-ui/core/Switch';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport useAsync from 'react-use/esm/useAsync';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport SignOutIcon from '@material-ui/icons/MeetingRoom';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport useObservable from 'react-use/esm/useObservable';\nimport AutoIcon from '@material-ui/icons/BrightnessAuto';\nimport ToggleButton from '@material-ui/lab/ToggleButton';\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\nimport { useTranslationRef, appLanguageApiRef } from '@backstage/core-plugin-api/alpha';\nimport { u as userSettingsTranslationRef } from './translation-CSRNIDi0.esm.js';\nimport { EntityRefLinks } from '@backstage/plugin-catalog-react';\n\nconst EXAMPLE$1 = `auth:\n providers:\n google:\n development:\n clientId: \\${AUTH_GOOGLE_CLIENT_ID}\n clientSecret: \\${AUTH_GOOGLE_CLIENT_SECRET}\n`;\nconst EmptyProviders = () => /* @__PURE__ */ React.createElement(\n EmptyState,\n {\n missing: \"content\",\n title: \"No Authentication Providers\",\n description: \"You can add Authentication Providers to Backstage which allows you to use these providers to authenticate yourself.\",\n action: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, \"Open \", /* @__PURE__ */ React.createElement(\"code\", null, \"app-config.yaml\"), \" and make the changes as highlighted below:\"), /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: EXAMPLE$1,\n language: \"yaml\",\n showLineNumbers: true,\n highlightedNumbers: [3, 4, 5, 6, 7, 8],\n customStyle: { background: \"inherit\", fontSize: \"115%\" }\n }\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"primary\",\n href: \"https://backstage.io/docs/auth/add-auth-provider\"\n },\n \"Read More\"\n ))\n }\n);\n\nconst useStyles$3 = makeStyles((theme) => ({\n avatar: {\n width: ({ size }) => size,\n height: ({ size }) => size,\n fontSize: ({ size }) => size * 0.7,\n border: `1px solid ${theme.palette.textSubtle}`\n }\n}));\nconst ProviderSettingsAvatar = ({ size, picture }) => {\n const { iconSize } = sidebarConfig;\n const classes = useStyles$3(size ? { size } : { size: iconSize });\n return /* @__PURE__ */ React.createElement(Avatar, { src: picture, className: classes.avatar });\n};\n\nconst emptyProfile = {};\nconst ProviderSettingsItem = (props) => {\n const { title, description, icon: Icon, apiRef } = props;\n const api = useApi(apiRef);\n const errorApi = useApi(errorApiRef);\n const [signedIn, setSignedIn] = useState(false);\n const [profile, setProfile] = useState(emptyProfile);\n useEffect(() => {\n let didCancel = false;\n const subscription = api.sessionState$().subscribe((sessionState) => {\n if (sessionState !== SessionState.SignedIn) {\n setProfile(emptyProfile);\n setSignedIn(false);\n }\n if (!didCancel) {\n api.getProfile({ optional: true }).then((profileResponse) => {\n if (!didCancel) {\n if (sessionState === SessionState.SignedIn) {\n setSignedIn(true);\n }\n if (profileResponse) {\n setProfile(profileResponse);\n }\n }\n });\n }\n });\n return () => {\n didCancel = true;\n subscription.unsubscribe();\n };\n }, [api]);\n return /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(ListItemIcon, null, /* @__PURE__ */ React.createElement(Icon, null)), /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: title,\n secondary: /* @__PURE__ */ React.createElement(Tooltip, { placement: \"top\", arrow: true, title: description }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 6 }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(ProviderSettingsAvatar, { size: 48, picture: profile.picture })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: true, container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, container: true, direction: \"column\", spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, profile.displayName && /* @__PURE__ */ React.createElement(\n Typography,\n {\n variant: \"subtitle1\",\n color: \"textPrimary\",\n gutterBottom: true\n },\n profile.displayName\n ), profile.email && /* @__PURE__ */ React.createElement(Typography, { variant: \"body2\", color: \"textSecondary\" }, profile.email), /* @__PURE__ */ React.createElement(Typography, { variant: \"body2\", color: \"textSecondary\" }, description)))))),\n secondaryTypographyProps: { noWrap: true, style: { width: \"80%\" } }\n }\n ), /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n placement: \"top\",\n arrow: true,\n title: signedIn ? `Sign out from ${title}` : `Sign in to ${title}`\n },\n /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"outlined\",\n color: \"primary\",\n onClick: () => {\n const action = signedIn ? api.signOut() : api.signIn();\n action.catch((error) => errorApi.post(error));\n }\n },\n signedIn ? `Sign out` : `Sign in`\n )\n )));\n};\n\nconst DefaultProviderSettings = (props) => {\n const { configuredProviders } = props;\n return /* @__PURE__ */ React.createElement(React.Fragment, null, configuredProviders.includes(\"google\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Google\",\n description: \"Provides authentication towards Google APIs and identities\",\n apiRef: googleAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"microsoft\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Microsoft\",\n description: \"Provides authentication towards Microsoft APIs and identities\",\n apiRef: microsoftAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"github\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"GitHub\",\n description: \"Provides authentication towards GitHub APIs\",\n apiRef: githubAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"gitlab\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"GitLab\",\n description: \"Provides authentication towards GitLab APIs\",\n apiRef: gitlabAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"okta\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Okta\",\n description: \"Provides authentication towards Okta APIs\",\n apiRef: oktaAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"bitbucket\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Bitbucket\",\n description: \"Provides authentication towards Bitbucket APIs\",\n apiRef: bitbucketAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"onelogin\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"OneLogin\",\n description: \"Provides authentication towards OneLogin APIs\",\n apiRef: oneloginAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"atlassian\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Atlassian\",\n description: \"Provides authentication towards Atlassian APIs\",\n apiRef: atlassianAuthApiRef,\n icon: Star\n }\n ), configuredProviders.includes(\"bitbucketServer\") && /* @__PURE__ */ React.createElement(\n ProviderSettingsItem,\n {\n title: \"Bitbucket Server\",\n description: \"Provides authentication towards Bitbucket Server APIs\",\n apiRef: bitbucketServerAuthApiRef,\n icon: Star\n }\n ));\n};\n\nconst UserSettingsAuthProviders = (props) => {\n const { providerSettings } = props;\n const configApi = useApi(configApiRef);\n const providersConfig = configApi.getOptionalConfig(\"auth.providers\");\n const configuredProviders = (providersConfig == null ? void 0 : providersConfig.keys()) || [];\n const providers = providerSettings != null ? providerSettings : /* @__PURE__ */ React.createElement(DefaultProviderSettings, { configuredProviders });\n if (!providerSettings && !(configuredProviders == null ? void 0 : configuredProviders.length)) {\n return /* @__PURE__ */ React.createElement(EmptyProviders, null);\n }\n return /* @__PURE__ */ React.createElement(InfoCard, { title: \"Available Providers\" }, /* @__PURE__ */ React.createElement(List, { dense: true }, providers));\n};\n\nconst EXAMPLE = `import { createPlugin } from '@backstage/core-plugin-api';\n\nexport default createPlugin({\n id: 'plugin-name',\n featureFlags: [{ name: 'enable-example-feature' }],\n});\n`;\nconst EmptyFlags = () => /* @__PURE__ */ React.createElement(\n EmptyState,\n {\n missing: \"content\",\n title: \"No Feature Flags\",\n description: \"Feature Flags make it possible for plugins to register features in Backstage for users to opt into. You can use this to split out logic in your code for manual A/B testing, etc.\",\n action: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: \"body1\" }, \"An example for how to add a feature flag is highlighted below:\"), /* @__PURE__ */ React.createElement(\n CodeSnippet,\n {\n text: EXAMPLE,\n language: \"typescript\",\n showLineNumbers: true,\n highlightedNumbers: [6],\n customStyle: { background: \"inherit\", fontSize: \"115%\" }\n }\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"primary\",\n href: \"https://backstage.io/docs/api/utility-apis\"\n },\n \"Read More\"\n ))\n }\n);\n\nconst getSecondaryText = (flag) => {\n if (flag.description) {\n return flag.description;\n }\n return flag.pluginId ? `Registered in ${flag.pluginId} plugin` : \"Registered in the application\";\n};\nconst FlagItem = ({ flag, enabled, toggleHandler }) => /* @__PURE__ */ React.createElement(ListItem, { divider: true, button: true, onClick: () => toggleHandler(flag.name) }, /* @__PURE__ */ React.createElement(ListItemIcon, null, /* @__PURE__ */ React.createElement(Tooltip, { placement: \"top\", arrow: true, title: enabled ? \"Disable\" : \"Enable\" }, /* @__PURE__ */ React.createElement(Switch, { color: \"primary\", checked: enabled, name: flag.name }))), /* @__PURE__ */ React.createElement(ListItemText, { primary: flag.name, secondary: getSecondaryText(flag) }));\n\nconst sortFlags = (flags, featureFlagsApi) => {\n const activeFlags = flags.filter((flag) => featureFlagsApi.isActive(flag.name));\n const idleFlags = flags.filter((flag) => !featureFlagsApi.isActive(flag.name));\n return [...activeFlags, ...idleFlags];\n};\nconst UserSettingsFeatureFlags = () => {\n const featureFlagsApi = useApi(featureFlagsApiRef);\n const inputRef = React.useRef();\n const initialFeatureFlags = featureFlagsApi.getRegisteredFlags();\n const initialFeatureFlagsSorted = sortFlags(\n initialFeatureFlags,\n featureFlagsApi\n );\n const [featureFlags] = useState(initialFeatureFlagsSorted);\n const initialFlagState = Object.fromEntries(\n featureFlags.map(({ name }) => [name, featureFlagsApi.isActive(name)])\n );\n const [state, setState] = useState(initialFlagState);\n const [filterInput, setFilterInput] = useState(\"\");\n const toggleFlag = useCallback(\n (flagName) => {\n const newState = featureFlagsApi.isActive(flagName) ? FeatureFlagState.None : FeatureFlagState.Active;\n featureFlagsApi.save({\n states: { [flagName]: newState },\n merge: true\n });\n setState((prevState) => ({\n ...prevState,\n [flagName]: newState === FeatureFlagState.Active\n }));\n },\n [featureFlagsApi]\n );\n if (!featureFlags.length) {\n return /* @__PURE__ */ React.createElement(EmptyFlags, null);\n }\n const clearFilterInput = () => {\n var _a;\n setFilterInput(\"\");\n (_a = inputRef == null ? void 0 : inputRef.current) == null ? void 0 : _a.focus();\n };\n const filteredFeatureFlags = featureFlags.filter((featureFlag) => {\n const featureFlagName = featureFlag.name.toLocaleLowerCase(\"en-US\");\n return featureFlagName.includes(filterInput.toLocaleLowerCase(\"en-US\"));\n });\n const Header = () => /* @__PURE__ */ React.createElement(Grid, { container: true, style: { justifyContent: \"space-between\" } }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6, md: 8 }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\" }, \"Feature Flags\"), /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle1\" }, \"Please refresh the page when toggling feature flags\")), featureFlags.length >= 10 && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6, md: 4 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n label: \"Filter\",\n style: { display: \"flex\", justifyContent: \"flex-end\" },\n inputRef: (ref) => ref && ref.focus(),\n InputProps: {\n ...filterInput.length && {\n endAdornment: /* @__PURE__ */ React.createElement(\n IconButton,\n {\n \"aria-label\": \"Clear filter\",\n onClick: clearFilterInput,\n edge: \"end\"\n },\n /* @__PURE__ */ React.createElement(ClearIcon, null)\n )\n }\n },\n onChange: (e) => setFilterInput(e.target.value),\n value: filterInput\n }\n )));\n return /* @__PURE__ */ React.createElement(InfoCard, { title: /* @__PURE__ */ React.createElement(Header, null) }, /* @__PURE__ */ React.createElement(List, { dense: true }, filteredFeatureFlags.map((featureFlag) => {\n const enabled = Boolean(state[featureFlag.name]);\n return /* @__PURE__ */ React.createElement(\n FlagItem,\n {\n key: featureFlag.name,\n flag: featureFlag,\n enabled,\n toggleHandler: toggleFlag\n }\n );\n })));\n};\n\nconst useUserProfile = () => {\n var _a;\n const identityApi = useApi(identityApiRef);\n const alertApi = useApi(alertApiRef);\n const { value, loading, error } = useAsync(async () => {\n return {\n profile: await identityApi.getProfileInfo(),\n identity: await identityApi.getBackstageIdentity()\n };\n }, []);\n useEffect(() => {\n if (error) {\n alertApi.post({\n message: `Failed to load user identity: ${error}`,\n severity: \"error\"\n });\n }\n }, [error, alertApi]);\n if (loading || error) {\n return {\n profile: {},\n displayName: \"\",\n loading\n };\n }\n return {\n profile: value.profile,\n backstageIdentity: value.identity,\n displayName: (_a = value.profile.displayName) != null ? _a : value.identity.userEntityRef,\n loading\n };\n};\n\nconst useStyles$2 = makeStyles((theme) => ({\n avatar: {\n width: ({ size }) => size,\n height: ({ size }) => size,\n fontSize: ({ size }) => size * 0.7,\n border: `1px solid ${theme.palette.textSubtle}`\n }\n}));\nconst UserSettingsSignInAvatar = (props) => {\n const { size } = props;\n const { iconSize } = sidebarConfig;\n const classes = useStyles$2(size ? { size } : { size: iconSize });\n const { profile } = useUserProfile();\n return /* @__PURE__ */ React.createElement(\n Avatar,\n {\n src: profile.picture,\n className: classes.avatar,\n alt: \"Profile picture\"\n }\n );\n};\n\nconst UserSettingsMenu = () => {\n const errorApi = useApi(errorApiRef);\n const identityApi = useApi(identityApiRef);\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(\n void 0\n );\n const handleOpen = (event) => {\n setAnchorEl(event.currentTarget);\n setOpen(true);\n };\n const handleClose = () => {\n setAnchorEl(void 0);\n setOpen(false);\n };\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n \"data-testid\": \"user-settings-menu\",\n \"aria-label\": \"more\",\n onClick: handleOpen\n },\n /* @__PURE__ */ React.createElement(MoreVertIcon, null)\n ), /* @__PURE__ */ React.createElement(Menu, { anchorEl, open, onClose: handleClose }, /* @__PURE__ */ React.createElement(\n MenuItem,\n {\n \"data-testid\": \"sign-out\",\n onClick: () => identityApi.signOut().catch((error) => errorApi.post(error))\n },\n /* @__PURE__ */ React.createElement(ListItemIcon, null, /* @__PURE__ */ React.createElement(SignOutIcon, null)),\n \"Sign Out\"\n )));\n};\n\nconst UserSettingsProfileCard = () => {\n const { profile, displayName } = useUserProfile();\n return /* @__PURE__ */ React.createElement(InfoCard, { title: \"Profile\", variant: \"gridItem\" }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 6 }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(UserSettingsSignInAvatar, { size: 96 })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: true, container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, container: true, direction: \"column\", spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle1\", gutterBottom: true }, displayName), profile.email && /* @__PURE__ */ React.createElement(Typography, { variant: \"body2\", color: \"textSecondary\" }, profile.email))), /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(UserSettingsMenu, null)))));\n};\n\nconst UserSettingsPinToggle = () => {\n const { isPinned, toggleSidebarPinState } = useSidebarPinState();\n return /* @__PURE__ */ React.createElement(ListItem, null, /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n primary: \"Pin Sidebar\",\n secondary: \"Prevent the sidebar from collapsing\"\n }\n ), /* @__PURE__ */ React.createElement(ListItemSecondaryAction, null, /* @__PURE__ */ React.createElement(\n Tooltip,\n {\n placement: \"top\",\n arrow: true,\n title: `${isPinned ? \"Unpin\" : \"Pin\"} Sidebar`\n },\n /* @__PURE__ */ React.createElement(\n Switch,\n {\n color: \"primary\",\n checked: isPinned,\n onChange: () => toggleSidebarPinState(),\n name: \"pin\",\n inputProps: { \"aria-label\": \"Pin Sidebar Switch\" }\n }\n )\n )));\n};\n\nconst ThemeIcon = ({ id, activeId, icon }) => icon ? cloneElement(icon, {\n color: activeId === id ? \"primary\" : void 0\n}) : /* @__PURE__ */ React.createElement(AutoIcon, { color: activeId === id ? \"primary\" : void 0 });\nconst useStyles$1 = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"100%\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 8,\n paddingRight: 16\n },\n list: {\n width: \"initial\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100%\",\n padding: `0 0 12px`\n }\n },\n listItemText: {\n paddingRight: 0,\n paddingLeft: 0\n },\n listItemSecondaryAction: {\n position: \"relative\",\n transform: \"unset\",\n top: \"auto\",\n right: \"auto\",\n paddingLeft: 16,\n [theme.breakpoints.down(\"xs\")]: {\n paddingLeft: 0\n }\n }\n}));\nconst TooltipToggleButton = ({\n children,\n title,\n value,\n ...props\n}) => /* @__PURE__ */ React.createElement(Tooltip, { placement: \"top\", arrow: true, title }, /* @__PURE__ */ React.createElement(ToggleButton, { value, ...props }, children));\nconst UserSettingsThemeToggle = () => {\n const classes = useStyles$1();\n const appThemeApi = useApi(appThemeApiRef);\n const activeThemeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId()\n );\n const themeIds = appThemeApi.getInstalledThemes();\n const { t } = useTranslationRef(userSettingsTranslationRef);\n const handleSetTheme = (_event, newThemeId) => {\n if (themeIds.some((it) => it.id === newThemeId)) {\n appThemeApi.setActiveThemeId(newThemeId);\n } else {\n appThemeApi.setActiveThemeId(void 0);\n }\n };\n return /* @__PURE__ */ React.createElement(\n ListItem,\n {\n className: classes.list,\n classes: { container: classes.container }\n },\n /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n className: classes.listItemText,\n primary: t(\"themeToggle.title\"),\n secondary: t(\"themeToggle.description\")\n }\n ),\n /* @__PURE__ */ React.createElement(ListItemSecondaryAction, { className: classes.listItemSecondaryAction }, /* @__PURE__ */ React.createElement(\n ToggleButtonGroup,\n {\n exclusive: true,\n size: \"small\",\n value: activeThemeId != null ? activeThemeId : \"auto\",\n onChange: handleSetTheme\n },\n themeIds.map((theme) => {\n const themeId = theme.id;\n const themeIcon = theme.icon;\n const themeTitle = theme.title || (themeId === \"light\" || themeId === \"dark\" ? t(`themeToggle.names.${themeId}`) : themeId);\n return /* @__PURE__ */ React.createElement(\n TooltipToggleButton,\n {\n key: themeId,\n title: t(\"themeToggle.select\", { theme: themeTitle }),\n value: themeId\n },\n /* @__PURE__ */ React.createElement(React.Fragment, null, themeTitle, \"\\xA0\", /* @__PURE__ */ React.createElement(\n ThemeIcon,\n {\n id: themeId,\n icon: themeIcon,\n activeId: activeThemeId\n }\n ))\n );\n }),\n /* @__PURE__ */ React.createElement(Tooltip, { placement: \"top\", arrow: true, title: t(\"themeToggle.selectAuto\") }, /* @__PURE__ */ React.createElement(ToggleButton, { value: \"auto\", selected: activeThemeId === void 0 }, t(\"themeToggle.names.auto\"), \"\\xA0\", /* @__PURE__ */ React.createElement(\n AutoIcon,\n {\n color: activeThemeId === void 0 ? \"primary\" : void 0\n }\n )))\n ))\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"100%\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 8,\n paddingRight: 16\n },\n list: {\n width: \"initial\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100%\",\n padding: `0 0 12px`\n }\n },\n listItemText: {\n paddingRight: 0,\n paddingLeft: 0\n },\n listItemSecondaryAction: {\n position: \"relative\",\n transform: \"unset\",\n top: \"auto\",\n right: \"auto\",\n paddingLeft: 16,\n [theme.breakpoints.down(\"xs\")]: {\n paddingLeft: 0\n }\n }\n}));\nconst UserSettingsLanguageToggle = () => {\n const classes = useStyles();\n const languageApi = useApi(appLanguageApiRef);\n const { t } = useTranslationRef(userSettingsTranslationRef);\n const [languageObservable] = useState(() => languageApi.language$());\n const { language: currentLanguage } = useObservable(\n languageObservable,\n languageApi.getLanguage()\n );\n const { languages } = languageApi.getAvailableLanguages();\n if (languages.length <= 1) {\n return null;\n }\n const handleSetLanguage = (newLanguage) => {\n languageApi.setLanguage(newLanguage);\n };\n const getLanguageDisplayName = (language) => {\n try {\n const names = new Intl.DisplayNames([language], {\n type: \"language\"\n });\n return names.of(language) || language;\n } catch (err) {\n return language;\n }\n };\n return /* @__PURE__ */ React.createElement(\n ListItem,\n {\n className: classes.list,\n classes: { container: classes.container }\n },\n /* @__PURE__ */ React.createElement(\n ListItemText,\n {\n className: classes.listItemText,\n primary: t(\"languageToggle.title\"),\n secondary: t(\"languageToggle.description\")\n }\n ),\n /* @__PURE__ */ React.createElement(ListItemSecondaryAction, { className: classes.listItemSecondaryAction }, /* @__PURE__ */ React.createElement(\n Select,\n {\n label: \"\",\n selected: currentLanguage,\n items: languages.map((language) => ({\n label: getLanguageDisplayName(language),\n value: language\n })),\n onChange: (selectedItems) => handleSetLanguage(selectedItems)\n }\n ))\n );\n};\n\nconst UserSettingsAppearanceCard = () => {\n const { isMobile } = useSidebarPinState();\n return /* @__PURE__ */ React.createElement(InfoCard, { title: \"Appearance\", variant: \"gridItem\" }, /* @__PURE__ */ React.createElement(List, { dense: true }, /* @__PURE__ */ React.createElement(UserSettingsThemeToggle, null), /* @__PURE__ */ React.createElement(UserSettingsLanguageToggle, null), !isMobile && /* @__PURE__ */ React.createElement(UserSettingsPinToggle, null)));\n};\n\nconst Contents = () => {\n const { backstageIdentity } = useUserProfile();\n if (!backstageIdentity) {\n return /* @__PURE__ */ React.createElement(Typography, null, \"No Backstage Identity\");\n }\n return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle1\", gutterBottom: true }, \"User Entity:\", \" \", /* @__PURE__ */ React.createElement(EntityRefLinks, { entityRefs: [backstageIdentity.userEntityRef] }))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: \"subtitle1\" }, \"Ownership Entities:\", \" \", /* @__PURE__ */ React.createElement(EntityRefLinks, { entityRefs: backstageIdentity.ownershipEntityRefs }))));\n};\nconst UserSettingsIdentityCard = () => /* @__PURE__ */ React.createElement(InfoCard, { title: \"Backstage Identity\" }, /* @__PURE__ */ React.createElement(Contents, null));\n\nconst UserSettingsGeneral = () => {\n return /* @__PURE__ */ React.createElement(Grid, { container: true, direction: \"row\", spacing: 3 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(UserSettingsProfileCard, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(UserSettingsAppearanceCard, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(UserSettingsIdentityCard, null)));\n};\n\nconst LAYOUT_DATA_KEY = \"plugin.user-settings.settingsLayout\";\nconst LAYOUT_ROUTE_DATA_KEY = \"plugin.user-settings.settingsLayoutRoute\";\nconst Route = () => null;\nattachComponentData(Route, LAYOUT_ROUTE_DATA_KEY, true);\nattachComponentData(Route, \"core.gatherMountPoints\", true);\nconst SettingsLayout = (props) => {\n const { title, children } = props;\n const { isMobile } = useSidebarPinState();\n const routes = useElementFilter(\n children,\n (elements) => elements.selectByComponentData({\n key: LAYOUT_ROUTE_DATA_KEY,\n withStrictError: \"Child of SettingsLayout must be an SettingsLayout.Route\"\n }).getElements().map((child) => child.props)\n );\n return /* @__PURE__ */ React.createElement(Page, { themeId: \"home\" }, !isMobile && /* @__PURE__ */ React.createElement(Header, { title: title != null ? title : \"Settings\" }), /* @__PURE__ */ React.createElement(RoutedTabs, { routes }));\n};\nattachComponentData(SettingsLayout, LAYOUT_DATA_KEY, true);\nSettingsLayout.Route = Route;\n\nconst DefaultSettingsPage = (props) => {\n const { providerSettings, tabs } = props;\n return /* @__PURE__ */ React.createElement(SettingsLayout, null, /* @__PURE__ */ React.createElement(SettingsLayout.Route, { path: \"general\", title: \"General\" }, /* @__PURE__ */ React.createElement(UserSettingsGeneral, null)), /* @__PURE__ */ React.createElement(\n SettingsLayout.Route,\n {\n path: \"auth-providers\",\n title: \"Authentication Providers\"\n },\n /* @__PURE__ */ React.createElement(UserSettingsAuthProviders, { providerSettings })\n ), /* @__PURE__ */ React.createElement(SettingsLayout.Route, { path: \"feature-flags\", title: \"Feature Flags\" }, /* @__PURE__ */ React.createElement(UserSettingsFeatureFlags, null)), tabs);\n};\n\nconst SettingsPage = (props) => {\n const { providerSettings } = props;\n const outlet = useOutlet();\n const layout = useElementFilter(\n outlet,\n (elements) => elements.selectByComponentData({\n key: LAYOUT_DATA_KEY\n }).getElements()\n );\n const tabs = useElementFilter(\n outlet,\n (elements) => elements.selectByComponentData({\n key: LAYOUT_ROUTE_DATA_KEY\n }).getElements()\n );\n return /* @__PURE__ */ React.createElement(React.Fragment, null, layout.length !== 0 && layout || /* @__PURE__ */ React.createElement(DefaultSettingsPage, { tabs, providerSettings }));\n};\n\nexport { DefaultProviderSettings as D, LAYOUT_ROUTE_DATA_KEY as L, ProviderSettingsItem as P, SettingsPage as S, UserSettingsAuthProviders as U, SettingsLayout as a, UserSettingsGeneral as b, UserSettingsProfileCard as c, UserSettingsMenu as d, UserSettingsSignInAvatar as e, UserSettingsAppearanceCard as f, UserSettingsThemeToggle as g, UserSettingsPinToggle as h, UserSettingsIdentityCard as i, UserSettingsLanguageToggle as j, UserSettingsFeatureFlags as k, useUserProfile as u };\n//# sourceMappingURL=SettingsPage-CeSuiezj.esm.js.map\n","import { createRouteRef, createPlugin, createRoutableExtension } from '@backstage/core-plugin-api';\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst settingsRouteRef = createRouteRef({\n id: \"user-settings\"\n});\nconst userSettingsPlugin = createPlugin({\n id: \"user-settings\",\n routes: {\n settingsPage: settingsRouteRef\n }\n});\nconst UserSettingsPage = userSettingsPlugin.provide(\n createRoutableExtension({\n name: \"UserSettingsPage\",\n component: () => import('./index-Cq4DqL_j.esm.js').then((m) => m.SettingsPage),\n mountPoint: settingsRouteRef\n })\n);\n\nconst userSettingsTranslationRef = createTranslationRef({\n id: \"user-settings\",\n messages: {\n languageToggle: {\n title: \"Language\",\n description: \"Change the language\",\n select: \"Select language {{language}}\"\n },\n themeToggle: {\n title: \"Theme\",\n description: \"Change the theme mode\",\n select: \"Select theme {{theme}}\",\n selectAuto: \"Select Auto Theme\",\n names: {\n light: \"Light\",\n dark: \"Dark\",\n auto: \"Auto\"\n }\n }\n }\n});\n\nexport { UserSettingsPage as U, userSettingsPlugin as a, settingsRouteRef as s, userSettingsTranslationRef as u };\n//# sourceMappingURL=translation-CSRNIDi0.esm.js.map\n","import { createTheme as createTheme$2, createGenerateClassName, StylesProvider, ThemeProvider } from '@material-ui/core/styles';\nimport { darken, lighten, createTheme as createTheme$1, adaptV4Theme, StyledEngineProvider, ThemeProvider as ThemeProvider$1 } from '@mui/material/styles';\nimport React from 'react';\nimport { unstable_ClassNameGenerator } from '@mui/material/className';\nimport { CssBaseline } from '@material-ui/core';\n\nconst __v5Spacing = (defaultSpacing) => (...argsInput) => {\n const args = argsInput.length === 0 ? [1] : argsInput;\n const transform = (argument, themeSpacing) => {\n if (typeof argument === \"string\") {\n return argument;\n }\n return themeSpacing * argument;\n };\n return args.map((argument) => {\n const output = transform(argument, defaultSpacing);\n return typeof output === \"number\" ? `${output}px` : output;\n }).join(\" \");\n};\nfunction adaptV5CssBaselineOverride(theme, overrides) {\n if (!overrides || typeof overrides === \"string\") {\n return void 0;\n }\n const styles = typeof overrides === \"function\" ? overrides(theme) : overrides;\n if (styles) {\n return { \"@global\": styles };\n }\n return void 0;\n}\nfunction adaptV5Override(theme, overrides) {\n if (!overrides || typeof overrides === \"string\") {\n return void 0;\n }\n if (typeof overrides === \"object\") {\n const _theme = { ...theme };\n const defaultSpacing = theme.spacing(1);\n if (typeof defaultSpacing === \"number\") {\n _theme.spacing = __v5Spacing(defaultSpacing);\n }\n return Object.fromEntries(\n Object.entries(overrides).map(([className, style]) => {\n if (typeof style === \"function\") {\n return [className, style({ theme: _theme })];\n }\n return [className, style];\n })\n );\n }\n return overrides;\n}\nconst stateStyleKeyPattern = /^&.Mui-([\\w-]+)$/;\nfunction extractV5StateOverrides(overrides) {\n let output = overrides;\n if (!overrides || typeof overrides !== \"object\") {\n return output;\n }\n for (const className of Object.keys(overrides)) {\n const styles = overrides[className];\n if (!styles || typeof styles !== \"object\") {\n continue;\n }\n for (const _styleKey of Object.keys(styles)) {\n const styleKey = _styleKey;\n const match = styleKey.match(stateStyleKeyPattern);\n if (match) {\n const [, state] = match;\n const { [styleKey]: stateStyles, ...restStyles } = styles;\n if (stateStyles) {\n output = {\n ...output,\n [className]: restStyles,\n [state]: stateStyles\n };\n }\n }\n }\n }\n return output;\n}\nfunction transformV5ComponentThemesToV4(theme, components = {}) {\n const overrides = {};\n const props = {};\n for (const name of Object.keys(components)) {\n const component = components[name];\n if (!component) {\n continue;\n }\n if (\"styleOverrides\" in component) {\n if (name === \"MuiCssBaseline\") {\n overrides[name] = adaptV5CssBaselineOverride(\n theme,\n component.styleOverrides\n );\n } else {\n overrides[name] = extractV5StateOverrides(\n adaptV5Override(theme, component.styleOverrides)\n );\n }\n }\n if (\"defaultProps\" in component) {\n props[name] = component.defaultProps;\n }\n }\n return { overrides, props };\n}\n\nconst shapes = {\n wave: `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\")`,\n wave2: `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1764' height='479' x='-229' y='-6' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M0 400h1350C1321 336 525 33 179-2c-345-34-395 236-408 402H0z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1378 177v223H0V217s219 75 327 52C436 246 717-35 965 45s254 144 413 132z'/%3e%3cpath fill='url(%23paint2_linear)' d='M26 400l-78-16c-170 205-44-6-137-30l-4-1 4 1 137 30c37-45 89-110 159-201 399-514-45 238 1176-50 275-65 354-39 91 267H26z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='431' x2='397.3' y1='-599' y2='372.8' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='236.5' x2='446.6' y1='-586' y2='381.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='851.8' x2='640.4' y1='-867.2' y2='363.7' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\")`,\n round: `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='2269' height='1408' x='-610' y='-509' maskUnits='userSpaceOnUse'%3e%3ccircle cx='1212.8' cy='74.8' r='317.5' fill='url(%23paint0_linear)' transform='rotate(-52 1213 75)'/%3e%3ccircle cx='737.8' cy='445.8' r='317.5' fill='url(%23paint1_linear)' transform='rotate(-116 738 446)'/%3e%3ccircle cx='601.8' cy='52.8' r='418.6' fill='url(%23paint2_linear)' transform='rotate(-117 602 53)'/%3e%3ccircle cx='999.8' cy='364' r='389.1' fill='url(%23paint3_linear)' transform='rotate(31 1000 364)'/%3e%3cellipse cx='-109.2' cy='263.5' fill='url(%23paint4_linear)' rx='429.2' ry='465.8' transform='rotate(-85 -109 264)'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='1301.2' x2='161.4' y1='-1879.7' y2='-969.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='826.2' x2='-313.6' y1='-1508.7' y2='-598.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='718.4' x2='-784.3' y1='-2524' y2='-1324.2' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='1108.2' x2='-288.6' y1='-2031.1' y2='-915.9' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint4_linear' x1='10.4' x2='-1626.5' y1='-2603.8' y2='-1399.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\")`\n};\nconst colorVariants = {\n darkGrey: [\"#171717\", \"#383838\"],\n marineBlue: [\"#006D8F\", \"#0049A1\"],\n veryBlue: [\"#0027AF\", \"#270094\"],\n rubyRed: [\"#98002B\", \"#8D1134\"],\n toastyOrange: [\"#BE2200\", \"#A41D00\"],\n purpleSky: [\"#8912CA\", \"#3E00EA\"],\n eveningSea: [\"#00FFF2\", \"#035355\"],\n teal: [\"#005B4B\"],\n pinkSea: [\"#C8077A\", \"#C2297D\"],\n greens: [\"#4BB8A5\", \"#187656\"]\n};\nfunction genPageTheme(props) {\n var _a;\n const { colors, shape, options } = props;\n const gradientColors = colors.length === 1 ? [colors[0], colors[0]] : colors;\n const gradient = `linear-gradient(90deg, ${gradientColors.join(\", \")})`;\n const backgroundImage = `${shape}, ${gradient}`;\n const fontColor = (_a = options == null ? void 0 : options.fontColor) != null ? _a : \"#FFFFFF\";\n return {\n colors,\n shape,\n backgroundImage,\n fontColor\n };\n}\nconst pageTheme = {\n home: genPageTheme({ colors: colorVariants.teal, shape: shapes.wave }),\n documentation: genPageTheme({\n colors: colorVariants.pinkSea,\n shape: shapes.wave2\n }),\n tool: genPageTheme({ colors: colorVariants.purpleSky, shape: shapes.round }),\n service: genPageTheme({\n colors: colorVariants.marineBlue,\n shape: shapes.wave\n }),\n website: genPageTheme({ colors: colorVariants.veryBlue, shape: shapes.wave }),\n library: genPageTheme({ colors: colorVariants.rubyRed, shape: shapes.wave }),\n other: genPageTheme({ colors: colorVariants.darkGrey, shape: shapes.wave }),\n app: genPageTheme({ colors: colorVariants.toastyOrange, shape: shapes.wave }),\n apis: genPageTheme({ colors: colorVariants.teal, shape: shapes.wave2 }),\n card: genPageTheme({ colors: colorVariants.greens, shape: shapes.wave })\n};\n\nconst DEFAULT_HTML_FONT_SIZE = 16;\nconst DEFAULT_FONT_FAMILY = '\"Helvetica Neue\", Helvetica, Roboto, Arial, sans-serif';\nconst DEFAULT_PAGE_THEME = \"home\";\nconst defaultTypography = {\n htmlFontSize: DEFAULT_HTML_FONT_SIZE,\n fontFamily: DEFAULT_FONT_FAMILY,\n h1: {\n fontSize: 54,\n fontWeight: 700,\n marginBottom: 10\n },\n h2: {\n fontSize: 40,\n fontWeight: 700,\n marginBottom: 8\n },\n h3: {\n fontSize: 32,\n fontWeight: 700,\n marginBottom: 6\n },\n h4: {\n fontWeight: 700,\n fontSize: 28,\n marginBottom: 6\n },\n h5: {\n fontWeight: 700,\n fontSize: 24,\n marginBottom: 4\n },\n h6: {\n fontWeight: 700,\n fontSize: 20,\n marginBottom: 2\n }\n};\nfunction createBaseThemeOptions(options) {\n const {\n palette,\n htmlFontSize = DEFAULT_HTML_FONT_SIZE,\n fontFamily = DEFAULT_FONT_FAMILY,\n defaultPageTheme = DEFAULT_PAGE_THEME,\n pageTheme: pageTheme$1 = pageTheme,\n typography\n } = options;\n if (!pageTheme$1[defaultPageTheme]) {\n throw new Error(`${defaultPageTheme} is not defined in pageTheme.`);\n }\n defaultTypography.htmlFontSize = htmlFontSize;\n defaultTypography.fontFamily = fontFamily;\n return {\n palette,\n typography: typography != null ? typography : defaultTypography,\n page: pageTheme$1[defaultPageTheme],\n getPageTheme: ({ themeId }) => {\n var _a;\n return (_a = pageTheme$1[themeId]) != null ? _a : pageTheme$1[defaultPageTheme];\n }\n };\n}\n\nconst defaultComponentThemes = {\n MuiCssBaseline: {\n styleOverrides: (theme) => ({\n html: {\n height: \"100%\",\n fontFamily: theme.typography.fontFamily\n },\n body: {\n height: \"100%\",\n fontFamily: theme.typography.fontFamily,\n overscrollBehaviorY: \"none\",\n fontSize: \"0.875rem\",\n lineHeight: 1.43\n },\n a: {\n color: \"inherit\",\n textDecoration: \"none\"\n }\n })\n },\n MuiGrid: {\n defaultProps: {\n spacing: 2\n }\n },\n MuiSwitch: {\n defaultProps: {\n color: \"primary\"\n }\n },\n MuiTableRow: {\n styleOverrides: {\n // Alternating row backgrounds\n root: ({ theme }) => ({\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.background.default\n }\n }),\n // Use pointer for hoverable rows\n hover: {\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n // Alternating head backgrounds\n head: ({ theme }) => ({\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.background.paper\n }\n })\n }\n },\n // Tables are more dense than default mui tables\n MuiTableCell: {\n styleOverrides: {\n root: ({ theme }) => ({\n wordBreak: \"break-word\",\n overflow: \"hidden\",\n verticalAlign: \"middle\",\n lineHeight: \"1\",\n margin: 0,\n padding: theme.spacing(3, 2, 3, 2.5),\n borderBottom: 0\n }),\n sizeSmall: ({ theme }) => ({\n padding: theme.spacing(1.5, 2, 1.5, 2.5)\n }),\n head: ({ theme }) => ({\n wordBreak: \"break-word\",\n overflow: \"hidden\",\n color: theme.palette.textSubtle,\n fontWeight: \"normal\",\n lineHeight: \"1\"\n })\n }\n },\n MuiTabs: {\n styleOverrides: {\n // Tabs are smaller than default mui tab rows\n root: {\n minHeight: 24\n }\n }\n },\n MuiTab: {\n styleOverrides: {\n // Tabs are smaller and have a hover background\n root: ({ theme }) => ({\n color: theme.palette.link,\n minHeight: 24,\n textTransform: \"initial\",\n letterSpacing: \"0.07em\",\n \"&:hover\": {\n color: darken(theme.palette.link, 0.3),\n background: lighten(theme.palette.link, 0.95)\n },\n [theme.breakpoints.up(\"md\")]: {\n minWidth: 120,\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 500\n }\n }),\n textColorPrimary: ({ theme }) => ({\n color: theme.palette.link\n })\n }\n },\n MuiTableSortLabel: {\n styleOverrides: {\n // No color change on hover, just rely on the arrow showing up instead.\n root: {\n color: \"inherit\",\n \"&:hover\": {\n color: \"inherit\"\n },\n \"&:focus\": {\n color: \"inherit\"\n },\n // Bold font for highlighting selected column\n \"&.Mui-active\": {\n fontWeight: \"bold\",\n color: \"inherit\"\n }\n }\n }\n },\n MuiListItemText: {\n styleOverrides: {\n dense: {\n // Default dense list items to adding ellipsis for really long str...\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n }\n }\n },\n MuiButton: {\n styleOverrides: {\n text: {\n // Text buttons have less padding by default, but we want to keep the original padding\n padding: void 0\n }\n }\n },\n MuiChip: {\n styleOverrides: {\n root: ({ theme }) => ({\n // By default there's no margin, but it's usually wanted, so we add some trailing margin\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }),\n label: ({ theme }) => ({\n lineHeight: theme.spacing(2.5),\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.spacing(1.75)\n }),\n labelSmall: ({ theme }) => ({\n fontSize: theme.spacing(1.5)\n }),\n deleteIcon: ({ theme }) => ({\n width: theme.spacing(3),\n height: theme.spacing(3),\n margin: theme.spacing(0, 0.75, 0, -0.75)\n }),\n deleteIconSmall: ({ theme }) => ({\n width: theme.spacing(2),\n height: theme.spacing(2),\n margin: theme.spacing(0, 0.5, 0, -0.5)\n })\n }\n },\n MuiCard: {\n styleOverrides: {\n root: {\n // When cards have a forced size, such as when they are arranged in a\n // CSS grid, the content needs to flex such that the actions (buttons\n // etc) end up at the bottom of the card instead of just below the body\n // contents.\n display: \"flex\",\n flexDirection: \"column\"\n }\n }\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n // Reduce padding between header and content\n paddingBottom: 0\n }\n }\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n // When cards have a forced size, such as when they are arranged in a\n // CSS grid, the content needs to flex such that the actions (buttons\n // etc) end up at the bottom of the card instead of just below the body\n // contents.\n flexGrow: 1,\n \"&:last-child\": {\n paddingBottom: void 0\n }\n }\n }\n },\n MuiCardActions: {\n styleOverrides: {\n root: {\n // We default to putting the card actions at the end\n justifyContent: \"flex-end\"\n }\n }\n },\n MuiLink: {\n defaultProps: {\n underline: \"hover\"\n }\n },\n MuiPaper: {\n styleOverrides: { root: { backgroundImage: \"unset\" } }\n }\n};\n\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar _themes;\nclass UnifiedThemeHolder {\n constructor(v4, v5) {\n __privateAdd(this, _themes, /* @__PURE__ */ new Map());\n __privateSet(this, _themes, /* @__PURE__ */ new Map());\n if (v4) {\n __privateGet(this, _themes).set(\"v4\", v4);\n }\n if (v5) {\n __privateGet(this, _themes).set(\"v5\", v5);\n }\n }\n getTheme(version) {\n return __privateGet(this, _themes).get(version);\n }\n}\n_themes = new WeakMap();\nfunction createUnifiedTheme(options) {\n const themeOptions = createBaseThemeOptions(options);\n const components = { ...defaultComponentThemes, ...options.components };\n const v5Theme = createTheme$1({ ...themeOptions, components });\n const v4Overrides = transformV5ComponentThemesToV4(v5Theme, components);\n const v4Theme = { ...createTheme$2(themeOptions), ...v4Overrides };\n return new UnifiedThemeHolder(v4Theme, v5Theme);\n}\nfunction createUnifiedThemeFromV4(options) {\n const v5Theme = adaptV4Theme(options);\n const v4Theme = createTheme$2(options);\n return new UnifiedThemeHolder(v4Theme, createTheme$1(v5Theme));\n}\n\nconst palettes = {\n light: {\n type: \"light\",\n mode: \"light\",\n background: {\n default: \"#F8F8F8\",\n paper: \"#FFFFFF\"\n },\n status: {\n ok: \"#1DB954\",\n warning: \"#FF9800\",\n error: \"#E22134\",\n running: \"#1F5493\",\n pending: \"#FFED51\",\n aborted: \"#757575\"\n },\n bursts: {\n fontColor: \"#FEFEFE\",\n slackChannelText: \"#ddd\",\n backgroundColor: {\n default: \"#7C3699\"\n },\n gradient: {\n linear: \"linear-gradient(-137deg, #4BB8A5 0%, #187656 100%)\"\n }\n },\n primary: {\n main: \"#1F5493\"\n },\n banner: {\n info: \"#2E77D0\",\n error: \"#E22134\",\n text: \"#FFFFFF\",\n link: \"#000000\",\n closeButtonColor: \"#FFFFFF\",\n warning: \"#FF9800\"\n },\n border: \"#E6E6E6\",\n textContrast: \"#000000\",\n textVerySubtle: \"#DDD\",\n textSubtle: \"#6E6E6E\",\n highlight: \"#FFFBCC\",\n errorBackground: \"#FFEBEE\",\n warningBackground: \"#F59B23\",\n infoBackground: \"#ebf5ff\",\n errorText: \"#CA001B\",\n infoText: \"#004e8a\",\n warningText: \"#000000\",\n linkHover: \"#2196F3\",\n link: \"#0A6EBE\",\n gold: \"#FFD600\",\n navigation: {\n background: \"#171717\",\n indicator: \"#9BF0E1\",\n color: \"#b5b5b5\",\n selectedColor: \"#FFF\",\n navItem: {\n hoverBackground: \"#404040\"\n },\n submenu: {\n background: \"#404040\"\n }\n },\n pinSidebarButton: {\n icon: \"#181818\",\n background: \"#BDBDBD\"\n },\n tabbar: {\n indicator: \"#9BF0E1\"\n }\n },\n dark: {\n type: \"dark\",\n mode: \"dark\",\n background: {\n default: \"#333333\",\n paper: \"#424242\"\n },\n status: {\n ok: \"#71CF88\",\n warning: \"#FFB84D\",\n error: \"#F84C55\",\n running: \"#3488E3\",\n pending: \"#FEF071\",\n aborted: \"#9E9E9E\"\n },\n bursts: {\n fontColor: \"#FEFEFE\",\n slackChannelText: \"#ddd\",\n backgroundColor: {\n default: \"#7C3699\"\n },\n gradient: {\n linear: \"linear-gradient(-137deg, #4BB8A5 0%, #187656 100%)\"\n }\n },\n primary: {\n main: \"#9CC9FF\",\n dark: \"#82BAFD\"\n },\n secondary: {\n main: \"#FF88B2\"\n },\n banner: {\n info: \"#2E77D0\",\n error: \"#E22134\",\n text: \"#FFFFFF\",\n link: \"#000000\",\n closeButtonColor: \"#FFFFFF\",\n warning: \"#FF9800\"\n },\n border: \"#E6E6E6\",\n textContrast: \"#FFFFFF\",\n textVerySubtle: \"#727272\",\n textSubtle: \"#CCCCCC\",\n highlight: \"#FFFBCC\",\n errorBackground: \"#FFEBEE\",\n warningBackground: \"#F59B23\",\n infoBackground: \"#ebf5ff\",\n errorText: \"#CA001B\",\n infoText: \"#004e8a\",\n warningText: \"#000000\",\n linkHover: \"#82BAFD\",\n link: \"#9CC9FF\",\n gold: \"#FFD600\",\n navigation: {\n background: \"#424242\",\n indicator: \"#9BF0E1\",\n color: \"#b5b5b5\",\n selectedColor: \"#FFF\",\n navItem: {\n hoverBackground: \"#404040\"\n },\n submenu: {\n background: \"#404040\"\n }\n },\n pinSidebarButton: {\n icon: \"#404040\",\n background: \"#BDBDBD\"\n },\n tabbar: {\n indicator: \"#9BF0E1\"\n }\n }\n};\n\nconst themes = {\n light: createUnifiedTheme({ palette: palettes.light }),\n dark: createUnifiedTheme({ palette: palettes.dark })\n};\n\nunstable_ClassNameGenerator.configure((componentName) => {\n return `v5-${componentName}`;\n});\n\nconst generateV4ClassName = createGenerateClassName({\n productionPrefix: \"jss4-\"\n});\nfunction UnifiedThemeProvider(props) {\n const { children, theme, noCssBaseline = false } = props;\n const v4Theme = theme.getTheme(\"v4\");\n const v5Theme = theme.getTheme(\"v5\");\n let cssBaseline = void 0;\n if (!noCssBaseline) {\n cssBaseline = /* @__PURE__ */ React.createElement(CssBaseline, null);\n }\n let result = /* @__PURE__ */ React.createElement(React.Fragment, null, cssBaseline, children);\n if (v4Theme) {\n result = /* @__PURE__ */ React.createElement(StylesProvider, { generateClassName: generateV4ClassName }, /* @__PURE__ */ React.createElement(ThemeProvider, { theme: v4Theme }, result));\n }\n if (v5Theme) {\n result = /* @__PURE__ */ React.createElement(StyledEngineProvider, { injectFirst: true }, /* @__PURE__ */ React.createElement(ThemeProvider$1, { theme: v5Theme }, result));\n }\n return result;\n}\n\nfunction createThemeOptions(options) {\n var _a, _b, _c, _d;\n return {\n props: {\n MuiGrid: (_b = (_a = defaultComponentThemes) == null ? void 0 : _a.MuiGrid) == null ? void 0 : _b.defaultProps,\n MuiSwitch: (_d = (_c = defaultComponentThemes) == null ? void 0 : _c.MuiSwitch) == null ? void 0 : _d.defaultProps\n },\n ...createBaseThemeOptions(options)\n };\n}\nfunction createThemeOverrides(theme) {\n return transformV5ComponentThemesToV4(\n // Safe but we have to make sure we don't use mui5 specific stuff in the default component themes\n theme,\n defaultComponentThemes\n ).overrides;\n}\nfunction createTheme(options) {\n const themeOptions = createThemeOptions(options);\n const baseTheme = createTheme$2(themeOptions);\n const overrides = createThemeOverrides(baseTheme);\n const theme = { ...baseTheme, overrides };\n return theme;\n}\n\nconst lightTheme = createTheme({\n palette: palettes.light\n});\nconst darkTheme = createTheme({\n palette: palettes.dark\n});\n\nexport { UnifiedThemeProvider, colorVariants, createBaseThemeOptions, createTheme, createThemeOptions, createThemeOverrides, createUnifiedTheme, createUnifiedThemeFromV4, darkTheme, defaultComponentThemes, defaultTypography, genPageTheme, lightTheme, pageTheme, palettes, shapes, themes, transformV5ComponentThemesToV4 };\n//# sourceMappingURL=index.esm.js.map\n","import { createContext, useContext } from 'react';\n\nfunction getGlobalObject() {\n if (typeof window !== \"undefined\" && window.Math === Math) {\n return window;\n }\n if (typeof self !== \"undefined\" && self.Math === Math) {\n return self;\n }\n return Function(\"return this\")();\n}\nconst globalObject = getGlobalObject();\nconst makeKey = (id) => `__@backstage/${id}__`;\nfunction getOrCreateGlobalSingleton(id, supplier) {\n const key = makeKey(id);\n let value = globalObject[key];\n if (value) {\n return value;\n }\n value = supplier();\n globalObject[key] = value;\n return value;\n}\n\nfunction createVersionedValueMap(versions) {\n Object.freeze(versions);\n const versionedValue = {\n atVersion(version) {\n return versions[version];\n }\n };\n Object.defineProperty(versionedValue, \"$map\", {\n configurable: true,\n enumerable: true,\n get() {\n return versions;\n }\n });\n return versionedValue;\n}\n\nfunction createVersionedContext(key) {\n return getOrCreateGlobalSingleton(\n key,\n () => createContext(void 0)\n );\n}\nfunction useVersionedContext(key) {\n return useContext(createVersionedContext(key));\n}\nfunction createVersionedContextForTesting(key) {\n return {\n set(versions) {\n globalThis[`__@backstage/${key}__`] = createContext(\n createVersionedValueMap(versions)\n );\n },\n reset() {\n delete globalThis[`__@backstage/${key}__`];\n }\n };\n}\n\nexport { createVersionedContext, createVersionedContextForTesting, createVersionedValueMap, getOrCreateGlobalSingleton, useVersionedContext };\n//# sourceMappingURL=index.esm.js.map\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n"],"names":["getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","stringify","uuid","v4","options","buf","rnds","AuthorizeResult2","isPermission","permission","comparedPermission","resourceType","isCreatePermission","isReadPermission","isUpdatePermission","isDeletePermission","toPermissionEvaluator","permissionAuthorizer","requests","parsedRequests","createPermission","name","attributes","__defProp","__defNormalProp","obj","key","value","__publicField","permissionCriteriaSchema","authorizePermissionResponseSchema","queryPermissionResponseSchema","responseSchema","itemSchema","ids","items","id","PermissionClient","_a","queries","_","request","query","permissionApi","response","responseBody","responsesById","acc","r","token","permissionApiRef","IdentityPermissionApi","permissionClient","identityApi","config","discovery","identity","usePermission","input","data","error","args","result","PermissionedRoute","props","resourceRef","errorComponent","otherProps","permissionResult","app","NotFoundErrorPage","shownElement","RequirePermission","apis","configApi","alertApi","errorApi","discoveryApi","oauthRequestApi","OptionallyWrapInRouter","children","DefaultNotFoundPage","DefaultBootErrorPage","step","message","DefaultErrorBoundaryFallback","resetError","plugin","Button","components","icons","themes","createApp","_b","_c","_d","propsOfHumanDuration","readDurationFromConfig","root","found","prop","good","p","invalidProps","what","bad","prefix","CONFIG_KEY_PART_PATTERN","isObject","cloneDeep","k","v","merge","into","from","fromObj","out","val","typeOf","type","errors","context","typeName","expected","ConfigReader","fallback","configs","previousReader","filteredKeys","deprecatedKeys","reader","description","localKeys","fallbackKeys","_a2","fallbackValue","fallbackConfig","values","index","number","valueString","validate","keyName","theValue","parts","part","badKey","__defProp$l","__defNormalProp$l","__publicField$l","ApiAggregator","holders","apiRef","holder","api","ApiContext","ApiProvider","parentHolder","__defProp$k","__defNormalProp$k","__publicField$k","ApiResolver","factories","heap","allDeps","factory","dep","ref","loading","impl","deps","dependent","impls","__defProp$j","__defNormalProp$j","__publicField$j","ScopePriority","ScopePriority2","ApiFactoryRegistry","scope","priority","existing","tuple","refs","showLoginPopup","resolve","reject","width","height","left","top","popup","targetOrigin","messageListener","event","authResult","done","intervalId","errMessage","__defProp$i","__defNormalProp$i","__publicField$i","warned$1","defaultJoinScopes","scopes","DefaultAuthConnector","environment","provider","joinScopes","sessionTransform","popupOptions","res","authInfo","_e","_f","_g","_h","popupUrl","payload","path","baseUrl","queryString","__defProp$h","__defNormalProp$h","__publicField$h","DirectAuthConnector","hasScopes$1","searched","searchFor","SessionScopeHelper","session","sessionScopes","newScope","__defProp$g","__defNormalProp$g","__publicField$g","PublishSubject","subscriber","onNext","onError","onComplete","observer","BehaviorSubject","__defProp$f","__defNormalProp$f","__publicField$f","SessionStateTracker","isSignedIn","__defProp$e","__defNormalProp$e","__publicField$e","RefreshingAuthSessionManager","connector","defaultScopes","sessionShouldRefresh","refreshedSession","currentScopes","refreshedScopes","newSession","__defProp$d","__defNormalProp$d","__publicField$d","StaticAuthSessionManager","__defProp$c","__defNormalProp$c","__publicField$c","AuthSessionStore","manager","storageKey","schema","sessionJson","_key","e","__defProp$b","__defNormalProp$b","__publicField$b","DEFAULT_PROVIDER$b","OAuth2","scopeTransform","x","backstageIdentity","expInSec","sessionManager","min","normalizedScopes","scopeList","DEFAULT_PROVIDER$a","GithubAuth","DEFAULT_PROVIDER$9","GitlabAuth","DEFAULT_PROVIDER$8","SCOPE_PREFIX$1","GoogleAuth","DEFAULT_PROVIDER$7","OKTA_OIDC_SCOPES","OKTA_SCOPE_PREFIX","OktaAuth","samlSessionSchema","DEFAULT_PROVIDER$6","SamlAuth","authSessionStore","__defProp$a","__defNormalProp$a","__publicField$a","DEFAULT_PROVIDER$5","_MicrosoftAuth","audiences","aud","audience","groups","resourceURI","MicrosoftAuth","DEFAULT_PROVIDER$4","OIDC_SCOPES","SCOPE_PREFIX","OneLoginAuth","DEFAULT_PROVIDER$3","BitbucketAuth","DEFAULT_PROVIDER$2","BitbucketServerAuth","DEFAULT_PROVIDER$1","AtlassianAuth","DEFAULT_PROVIDER","VMwareCloudAuth","__defProp$9","__defNormalProp$9","__publicField$9","AlertApiForwarder","alert","MultipleAnalyticsApi","actualApis","analyticsApi","NoOpAnalyticsApi","_event","__defProp$8","__defNormalProp$8","__publicField$8","STORAGE_KEY$1","AppThemeSelector","selector","initialThemeId","themeId","ERROR_PREFIX","UrlPatternDiscovery","pattern","urlStr","url","pluginId","FrontendHostDiscovery","endpoints","defaultEndpoint","target","endpoint","ErrorAlerter","__defProp$7","__defNormalProp$7","__publicField$7","ErrorApiForwarder","UnhandledErrorForwarder","errorContext","__defProp$6","__defNormalProp$6","__publicField$6","validateFlagName","LocalStorageFeatureFlags","flag","state","enabled","jsonStr","json","entries","createFetchApi","middleware","m","IdentityAuthInjectorFetchMiddleware","allowUrl","headerName","headerValue","matcher","buildMatcher","next","init","buildPrefixMatcher","prefixes","trimmedPrefixes","join","right","PluginProtocolResolverFetchMiddleware","hostname","pathname","search","hash","username","password","base","authority","isUrl","a","FetchMiddlewares","__defProp$5","__defNormalProp$5","__publicField$5","hasScopes","moreScopess","moreScopes","OAuthPendingRequests","current","reason","__defProp$4","__defNormalProp$4","__publicField$4","OAuthRequestManager","handler","scopeRequest","newRequests","__defProp$3","__defNormalProp$3","__publicField$3","buckets","_WebStorage","namespace","bucketPath","webStorage","presence","item","messageKey","eventKey","trimmedKey","snapshot","subscription","WebStorage","InternalAppContext","isReactRouterBeta","getExtensionContext","routes","matches","routeMatch","match","routeObject","routeRef","params","TrackNavigation","analytics","RouteTracker","routeObjects","getBasePath","readBasePath","SignInPageWrapper","Component","appIdentityProxy","setIdentityApi","basePath","AppRouter","RouterComponent","SignInPageComponent","mountPath","internalAppContext","traverseElementTree","collectors","queue","node","parent","contexts","element","nextContexts","collector","discoverer","c","createCollector","accumulatorFactory","visit","childDiscoverer","routeElementDiscoverer","pluginCollector","FeatureFlagged","featureFlagApi","isEnabled","MATCH_ALL_ROUTE","stringifyNode","anyNode","pluginSet","set","collectSubTree","routingV2Collector","ctx","pathProp","mountPoint","parentChildren","elementProp","newObj","extension","others","mountPointPlugin","routingV1Collector","currentObj","currentParentRouteRef","sticky","caseSensitive","currentCtxPath","routePath","featureFlagCollector","routeRefType","isRouteRef","isSubRouteRef","isExternalRouteRef","joinPaths","paths","normalized","resolveTargetRef","anyRouteRef","routePaths","routeBindings","targetRef","subRoutePath","resolvedRoute","resolvedPath","targetPath","resolveBasePath","sourceLocation","routeParents","refDiffList","matchIndex","targetSearchRef","parentPath","diffPaths","RouteResolver","appBasePath","relativeSourceLocation","encodedParams","RoutingContext","RoutingProvider","resolver","versionedValue","validateRouteParameters","notLeafRoutes","route","currentRouteRef","fullPath","j","validateRouteBindings","plugins","externalRouteRef","AppContext","AppContextProvider","appContext","PLUGIN_ID","CHANNEL_ID","MIN_BASE_DELAY_MS","ERROR_BACKOFF_START","ERROR_BACKOFF_FACTOR","ERROR_BACKOFF_MAX","startCookieAuthRefresh","fetchApi","stopped","timeout","firstError","errorBackoff","channel","getDelay","expiresAt","margin","refresh","requestUrl","scheduleRefresh","onMessage","delayMs","__defProp$2","__defNormalProp$2","__publicField$2","__accessCheck$3","member","msg","__privateGet$3","getter","__privateAdd$3","__privateSet$3","setter","_cookieAuthSignOut","mkError","thing","logDeprecation","AppIdentityProxy","targetOptions","stopRefresh","appBaseUrl","resolveTheme","shouldPreferDark","selectedTheme","theme","darkTheme","lightTheme","useShouldPreferDarkTheme","mediaQuery","setPrefersDark","listener","AppThemeProvider","appThemeApi","useObservable","appTheme","defaultConfigLoader","defaultConfigLoaderSync","runtimeConfigJson","appConfig","windowAppConfig","__defProp$1","__defNormalProp$1","__publicField$1","ApiRegistryBuilder","ApiRegistry","resolveRouteBindings","bindRoutes","externalRoutes","targetRoutes","externalRoute","__accessCheck$2","__privateGet$2","__privateAdd$2","__privateSet$2","_languages","_language$1","_subject","STORAGE_KEY","DEFAULT_LANGUAGE","_AppLanguageSelector","languages","initialLanguage","storedLanguage","language","lng","AppLanguageSelector","toInternalTranslationResource","resource","toInternalTranslationRef","__accessCheck$1","__privateGet$1","__privateAdd$1","__privateSet$1","__privateMethod","method","_loaded","_loading","_loaders","_getLoaderKey","getLoaderKey_fn","_i18n","_loader","_language","_registeredRefs","_languageChangeListeners","_changeLanguage","changeLanguage_fn","_createSnapshot","createSnapshot_fn","_registerDefaults","registerDefaults_fn","removeNulls","messages","ResourceLoader","onLoad","internalResource","entry","loader","load","_I18nextTranslationApi","i18n","loaded","resources","instance","translationRef","internalRef","loadTicket","loadResource","ticket","onChange","defaultMessages","defaultResource","I18nextTranslationApi","createLocalBaseUrl","fullUrl","overrideBaseUrlConfigs","inputConfigs","urlConfigReader","backendBaseUrl","newBackendBaseUrl","newAppBaseUrl","appOrigin","backendOrigin","maybeNewBackendBaseUrl","maybeNewAppBaseUrl","isProtectedApp","__accessCheck","__privateGet","__privateAdd","__privateSet","_getProviderCalled","useConfigLoader","configLoader","hasConfig","useAsync","noConfigNode","Progress","BootErrorPage","ThemeProvider","AppContextImpl","AppManager","_i","AppProvider","routesHaveBeenValidated","needsFeatureFlagRegistrationRef","routing","featureFlags","usesReactRouterBeta","loadedConfig","hasConfigApi","featureFlagsApi","output","registeredFlags","flagNames","f","languageApi","pluginIds","createSpecializedApp","warned","FlatRoutes","isBeta","withNotFound","elements","child","b","remarkParse","doc","settings","tree","test","visitor","reverse","overload","parents","rehypeFilter","parent_","remove","parse","protocols","uriTransformer","uri","first","colon","protocol","own","tableElements","childrenToReact","childIndex","toReact","transform","parentSchema","properties","property","addProperty","position","component","basic","getInputElement","getElementsBeforeCount","flattenPosition","count","info","find","parseStyle","iterator","styleReplacer","$1","pos","changelog","deprecated","ReactMarkdown","deprecation","processor","file","hastNode","AlertDisplay","setMessages","t","anchorOrigin","transientTimeoutMs","timeoutMs","msgs","firstMessage","newMsgs","handleClose","Snackbar","Alert","Close","LAST_SEEN_ONLINE_STORAGE_KEY","useLogoutDisconnectedUserEffect","enableEffect","autologoutIsEnabled","idleTimeoutSeconds","lastSeenOnlineStore","lastSeenOnline","nowSeconds","lastSeenOnlineSeconds","StillTherePrompt","idleTimer","setOpen","open","promptTimeoutMillis","remainingTime","setRemainingTime","interval","handleStillHere","seconds","DefaultTimestampStore","date","timestamp","ConditionalAutoLogout","idleTimeoutMinutes","events","useWorkerTimers","logoutIfDisconnected","promptBeforeIdleSeconds","promptOpen","setPromptOpen","remainingTimeCountdown","setRemainingTimeCountdown","promptBeforeIdleMillis","promptBeforeIdle","onPrompt","onIdle","onActive","onAction","_idleTimer","timer","defaultConfig","defaultTrackedEvents","parseConfig","_j","AutoLogout","isLogged","setIsLogged","isLoggedIn","stringToColor","str","color","extractInitials","names","firstName","lastName","useStyles$O","Avatar","displayName","picture","customStyles","styles","fontStyles","classes","avatarClassNames","avatarTextClassNames","useStyles$N","isExternalUri","scriptProtocolPattern","originalWindowOpen","newOpen","useBaseUrl","useBasePath","useResolvedPath","external","startsWithBasePath","getNodeText","onClick","noTrack","to","linkText","newWindow","handleClick","LinkWrapper","LinkButton","CopyTextButton","text","tooltipDelay","tooltipText","ariaLabel","copyToClipboard","useCopyToClipboard","handleCopyClick","CodeSnippet","showLineNumbers","highlightedNumbers","customStyle","showCopyCodeButton","mode","dark","docco","highlightColor","lineNumber","CreateButton","title","isXSScreen","DependencyGraphTypes","DependencyGraphTypes2","Direction2","Alignment2","Ranker2","LabelPosition2","useStyles$M","DefaultNode","setWidth","setHeight","idRef","renderedHeight","renderedWidth","padding","paddedWidth","paddedHeight","ARROW_MARKER_ID","NODE_TEST_ID","EDGE_TEST_ID","LABEL_TEST_ID","useStyles$L","renderDefault$1","Node","render","setNode","y","nodeProps","nodeRef","useStyles$K","DefaultLabel","label","useStyles$J","renderDefault","Edge","setEdge","edge","curve","showArrowHeads","points","labelProps","labelRef","createPath","d","finitePoints","point","WORKSPACE_ID","DependencyGraph","edges","nodes","renderNode","direction","align","nodeMargin","edgeMargin","rankMargin","paddingX","paddingY","acyclicer","ranker","labelPosition","labelOffset","edgeRanks","edgeWeight","renderLabel","defs","zoom","fit","svgProps","containerWidth","setContainerWidth","containerHeight","setContainerHeight","graph","graphWidth","setGraphWidth","graphHeight","setGraphHeight","graphNodes","setGraphNodes","graphEdges","setGraphEdges","maxWidth","maxHeight","minHeight","scalableHeight","containerRef","container","workspace","enableZoom","newContainerWidth","newContainerHeight","setNodesAndEdges","currentGraphNodes","currentGraphEdges","nodeId","existingNode","updateGraph","newHeight","newWidth","useStyles$I","DismissableBanner","variant","fixed","notificationsStore","rawDismissedBanners","dismissedBanners","setDismissedBanners","observedItems","currentValue","SnackbarContent","useStyles$H","EmptyStateImage","missing","useStyles$G","EmptyState","action","COMPONENT_YAML_TEMPLATE","ANNOTATION_REGEXP","ANNOTATION_YAML","ANNOTATION_LINE","line","useStyles$F","generateLineNumbers","lineCount","generateComponentYaml","annotations","annotationYaml","ann","useGenerateDescription","isSingular","prev","curr","MissingAnnotationEmptyState","annotation","readMoreUrl","useStyles$E","flatten","headingRenderer","level","slug","inline","className","MarkdownContent","content","dialect","linkTarget","transformLinkUri","transformImageUri","getWarningTextColor","severity","getWarningBackgroundColor","useErrorOutlineStyles","ErrorOutlineStyled","ErrorOutline","ExpandMoreIconStyled","ExpandMore","useStyles$D","capitalize","s","WarningPanel","titleFormat","defaultExpanded","subTitle","Accordion","AccordionSummary","AccordionDetails","useStyles$C","ErrorList","stack","ErrorPanel","useStyles$B","ResponseErrorPanel","body","cause","errorString","requestString","messageString","stackString","jsonString","createRootElement","rootContainer","addRootElement","rootElem","usePortal","rootElemRef","existingParent","parentElem","getRootElem","STATES_LOCAL_STORAGE_KEY","useCalloutStates","states","setStates","raw","setState","newStates","useCalloutHasBeenSeen","featureId","markSeen","useShowCallout","seen","useStyles$A","FeatureCalloutCircular","show","hide","portalElement","wrapperRef","placement","setPlacement","update","wrapperBounds","longest","borderWidth","dotLeft","dotTop","dotSize","textWidth","textLeft","textTop","useIconStyles","IconLinkVertical","disabled","href","icon","useStyles$z","HeaderIconLinkRow","links","link","generateGradientStops","themeType","luminance","fadeSize","fadePadding","useStyles$y","useScrollDistance","scrollLeft","scrollRight","setScroll","el","handleUpdate","useSmoothScroll","speed","minDistance","scrollTarget","setScrollTarget","startTime","frameTime","frameDuration","scrollDistance","scrollAmount","newScrollTarget","HorizontalScrollGrid","scrollStep","scrollSpeed","minScrollDistance","handleScrollClick","forwards","useStyles$x","Lifecycle","shorthand","alpha","RealLogViewer","LogViewer","useItemStyles","LoginRequestListItem","busy","setBusy","setError","handleContinue","IconComponent","useStyles$w","OAuthRequestDialog","_props","authRedirect","handleRejectAll","useStyles$v","OverflowTooltip","hover","setHover","isMounted","useIsMounted","handleToggled","truncated","isVisible","setIsVisible","handle","LinearProgress","useStyles$u","BottomLink","SlackLink","slackChannel","ErrorBoundary","errorInfo","useStyles$t","CardActionsTopRight","withStyles","VARIANT_STYLES","InfoCard","subheader","divider","deepLink","errorBoundaryProps","headerStyle","headerProps","actionsClassName","actions","cardClassName","actionsTopRight","noPadding","titleTypographyProps","calculatedStyle","calculatedCardStyle","cardSubTitle","errProps","CardHeader","useStyles$s","defaultGaugeProps","getProgressColor","palette","inverse","max","actualMax","actualValue","Gauge","hoverRef","setHoverRef","getColor","fractional","unit","asPercentage","asActual","isHovering","setIsHovering","handleMouseOver","handleMouseOut","useStyles$r","GaugeCard","progress","gaugeProps","LinearGauge","percent","lineWidth","strokeColor","useStyles$q","createStyles","ClosedDropdown","SvgIcon","useStyles$p","OpenedDropdown","BootstrapInput","InputBase","useStyles$o","SelectComponent","multiple","placeholder","selected","triggerReset","native","setValue","isOpen","handleChange","handleOpen","previous","handleDelete","selectedValue","newValue","chip","FormControl","InputLabel","Select","Checkbox","noop","VerticalStepperContext","SimpleStepper","elevated","onStepChange","activeStep","stepIndex","setStepIndex","stepHistory","setStepHistory","steps","endStep","useStyles$n","RestartBtn","NextBtn","last","SkipBtn","BackBtn","SimpleStepperFooter","stepperLength","newIndex","callback","handleNext","handleBack","handleRestart","useStyles$m","SimpleStepperStep","end","muiProps","useStyles$l","StatusOK","StatusWarning","StatusError","StatusPending","StatusRunning","StatusAborted","tableTitleCellStyles","tableContentCellStyles","listStyles","listItemStyles","TitleCell","TableCell","ContentCell","MetadataTable","dense","MetadataTableItem","rest","MetadataList","MetadataListItem","listStyle","nestedListStyle","StyledList","StyledNestedList","renderList","list","nested","toValue","renderMap","map","ItemValue","TableItem","mapToItems","StructuredMetadataTable","metadata","metadataItems","queryParams","extractState","stateName","joinQueryString","useQueryParamState","debounceTime","searchParams","setSearchParams","searchParamsString","queryParamState","setQueryParamState","newState","oldState","useDefaultSupportConfig","useSupportConfig","supportConfig","defaultSupportConfig","itemConf","linkConf","AppIcon","Fallback","Icon","BrokenImageIcon","CatalogIcon","ChatIcon","DashboardIcon","DocsIcon","EmailIcon","GitHubIcon","GroupIcon","HelpIcon","UserIcon","WarningIcon","useStyles$k","SupportIcon","SupportLink","SupportListItem","idx","SupportButton","configItems","popoverOpen","setPopoverOpen","anchorEl","setAnchorEl","isSmallScreen","onClickHandler","popoverCloseHandler","useStyles$j","Content","stretch","restProps","useStyles$i","HeaderTabs","tabs","selectedIndex","selectedTab","setSelectedTab","removeLeadingSlash","tab","Tab","useSelectedSubRoute","subRoutes","sortedRoutes","currentRoute","matchedRoute","foundIndex","RoutedTabs","navigate","headerTabs","onTabChange","tabIndex","Route","createSubRoutesFromChildren","childrenProps","routeType","tabProps","TabbedLayout","useSubvalueCellStyles","SubvalueCell","subvalue","useFilterStyles$1","Filters","onChangeFilters","selectedFilters","setSelectedFilters","reset","filter","TableLoadingBody","CircularProgress","tableIcons","AddBox","Check","Clear","DeleteOutline","Edit","SaveAlt","FilterList","FirstPage","LastPage","ChevronLeft","ArrowUpward","Remove","ViewColumn","extractValueByField","field","StyledMTableHeader","StyledMTableToolbar","useFilterStyles","useTableStyles","convertColumns","columns","column","cellStyle","cellStyleFn","rowData","rowColumn","removeDefaultValues","defaultState","defaultInitialState","TableToolbar","toolbarProps","toolbarRef","setSearch","hasFilters","selectedFiltersLength","toggleFilters","filtersClasses","onSearchChanged","searchText","Table","emptyContent","subtitle","localization","filters","initialState","onStateChange","tableClasses","calculatedInitialState","filtersOpen","setFiltersOpen","getFieldByTitle","titleValue","tableData","selectedFiltersArray","filterValue","fieldValue","Toolbar","hasNoRows","columnCount","Body","makeBody","constructFilters","bodyProps","filterConfig","dataValue","extractDistinctValues","distinctValues","addValue","constructSelect","lastNum","TrendLine","useStyles$h","ContentHeaderTitle","ContentHeader","TitleComponent","textAlign","renderedTitle","useStyles$g","MicDrop","useStyles$f","StackDetails","detailsOpen","setDetailsOpen","useStyles$e","ErrorPage","status","statusMessage","additionalInfo","supportUrl","support","ClickableText","StyledBox","BreadcrumbsCurrentPage","childrenArray","firstPage","secondPage","expandablePages","currentPage","hasHiddenBreadcrumbs","pageLink","drawerWidthClosed","iconPadding","userBadgePadding","sidebarConfig","makeSidebarConfig","customSidebarConfig","submenuConfig","makeSidebarSubmenuConfig","customSubmenuConfig","SIDEBAR_INTRO_LOCAL_STORAGE","SidebarConfigContext","SidebarItemWithSubmenuContext","defaultSidebarOpenStateContext","LegacySidebarContext","VersionedSidebarContext","SidebarOpenStateProvider","useSidebarOpenState","versionedOpenStateContext","legacyOpenStateContext","openStateContext","MobileSidebarContext","defaultSidebarPinStateContext","LegacySidebarPinStateContext","VersionedSidebarPinStateContext","SidebarPinStateProvider","useSidebarPinState","versionedPinStateContext","legacyPinStateContext","pinStateContext","useStyles$d","MobileSidebarGroup","location","selectedMenuItemIndex","setSelectedMenuItemIndex","value2","BottomNavigationAction","SidebarGroup","isMobile","useStyles$c","sortSidebarGroupsForPriority","sidebarGroupType","OverlayMenu","onClose","Drawer","MobileSidebar","sidebarGroups","Menu","shouldShowGroupChildren","BottomNavigation","LocalStorage","useStyles$b","PageContext","SidebarPage","isPinned","setIsPinned","contentRef","pageContext","toggleSidebarPinState","useContent","useStyles$a","DesktopSidebar","openDelayMs","closeDelayMs","disableExpandOnHover","hoverTimerRef","A11ySkipSidebar","Sidebar","focusContent","isLocationMatch","currentLocation","toLocation","exact","toDecodedSearch","toQueryParameters","currentDecodedSearch","currentQueryParameters","queryStringMatcher","useStyles$9","SidebarSubmenuItem","dropdownItems","setIsHoveredOn","closeSubmenu","isActive","showDropDown","setShowDropDown","handleClickDropdown","object","useStyles$8","SidebarSubmenu","isHoveredOn","isSubmenuOpen","setIsSubmenuOpen","useStyles$7","DoubleArrowLeft","useStyles$6","DoubleArrowRight","makeSidebarStyles","useMemoStyles","useLocationMatch","submenu","active","_to","isButtonItem","sidebarSubmenuType","WorkaroundNavLink","style","activeStyle","activeClassName","ariaCurrentProp","locationPathname","toPathname","ariaCurrent","SidebarItemBase","hasNotifications","hasSubmenu","disableHighlight","navLinkProps","divStyle","displayItemIcon","ArrowRight","itemIcon","Badge","openContent","childProps","subject","SidebarItemWithSubmenu","handleMouseEnter","handleMouseLeave","arrowIcon","ArrowDropUp","ArrowDropDown","SidebarItem","SidebarSearchField","setInput","handleEnter","ev","handleInput","handleInputClick","handleItemClick","SidebarSpace","styled","SidebarSpacer","SidebarDivider","styledScrollbar","SidebarScrollWrapper","scrollbarStyles","SidebarExpandButton","useStyles$5","TypeFragment","typeLink","pageTitle","TitleFragment","tooltip","FinalTitle","SubtitleFragment","Header","pageTitleOverride","appTitle","documentTitle","titleTemplate","defaultTitle","ActionItem","secondaryLabel","HeaderActionMenu","white","actionItems","anchorElRef","actionItem","useStyles$4","HeaderLabelContent","typographyRootComponent","HeaderLabel","contentTypograpyRootComponent","styles$1","useStyles$3","ItemCardHeader","ItemCard","tags","tag","useStyles$2","ItemCardGrid","useStyles$1","Page","baseTheme","PageWithHeader","proxiedSessionSchema","DEFAULTS","tokenToExpiry","jwtToken","_header","rawPayload","_signature","ProxiedSignInIdentity","promise","headers","mergedHeaders","ProxiedSignInPage","execute","GuestUserIdentity","userEntityRef","parseJwtPayload","LegacyUserIdentity","sub","ent","UserIdentity","authApi","profile","ex","useStyles","GridItem","commonProvider","onSignInStarted","onSignInSuccess","onSignInFailure","handleLogin","identityResponse","getIdentity","guestProvider","setUseLegacyGuestToken","useLocalStorage","useLegacyGuestToken","ID_TOKEN_REGEX","useFormStyles","asInputRef","renderResult","customProvider","register","handleSubmit","formState","handleResult","userId","idToken","FormHelperText","IdentityApiSignOutProxy","PROVIDER_STORAGE_KEY","signInProviders","validateIDs","providers","getSignInProviders","identityProviders","useSignInProviders","apiHolder","setLoading","handleWrappedResult","selectedProviderId","didCancel","handleSignInSuccess","handleSignInStarted","handleSignInFailure","MultiSignInPage","providerElements","SingleSignInPage","auto","showLoginPage","setShowLoginPage","login","checkExisting","showPopup","err","SignInPage","useTabsStyles","BoldHeader","TabbedCard","tabsClasses","selectIndex","_ev","newSelectedIndex","selectedTabContent","useCardTabStyles","CardTab","replace","percentTwenties","Format","module","formats","utils","has","isArray","defaults","interpretNumericEntities","$0","numberStr","parseArrayValue","isoSentinel","charsetSentinel","parseValues","cleanStr","limit","skipIndex","charset","bracketEqualsPos","encodedVal","parseObject","chain","valuesParsed","leaf","cleanRoot","decodedRoot","parseKeys","givenKey","brackets","segment","keys","normalizeParseOptions","opts","duplicates","allowDots","tempObj","getSideChannel","arrayPrefixGenerators","push","pushToArray","valueOrArray","toISO","defaultFormat","isNonNullishPrimitive","sentinel","generateArrayPrefix","commaRoundTrip","allowEmptyArrays","strictNullHandling","skipNulls","encodeDotInKeys","encoder","sort","serializeDate","format","formatter","encodeValuesOnly","sideChannel","tmpSc","findFlag","keyValue","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","array","compactQueue","compacted","arrayToObject","source","mergeTarget","targetItem","assign","decode","decoder","strWithoutPlus","encode","defaultEncoder","kind","string","compact","isRegExp","isBuffer","combine","maybeMap","fn","mapped","createTranslationMessages","createTranslationResource","_id","_messages","_resources","flattenMessages","TranslationRefImpl","createTranslationRef","translationApiRef","appLanguageApiRef","loggedRefs","useTranslationRef","translationApi","setSnapshot","observable","errMsg","initialRenderRef","useApiHolder","versionedHolder","useApi","withApis","WrappedComponent","Hoc","ApiRefImpl","createApiRef","SessionState","SessionState2","googleAuthApiRef","githubAuthApiRef","oktaAuthApiRef","gitlabAuthApiRef","microsoftAuthApiRef","oneloginAuthApiRef","bitbucketAuthApiRef","bitbucketServerAuthApiRef","atlassianAuthApiRef","vmwareCloudAuthApiRef","alertApiRef","analyticsApiRef","appThemeApiRef","configApiRef","discoveryApiRef","errorApiRef","FeatureFlagState","FeatureFlagState2","featureFlagsApiRef","fetchApiRef","identityApiRef","oauthRequestApiRef","storageApiRef","AnalyticsReactContext","useAnalyticsContext","theContext","AnalyticsContext","combinedValue","versionedCombinedValue","createApiFactory","globalEvents","routableExtensionRenderedEvent","Tracker","_routeNodeType","useAnalyticsApi","useAnalytics","trackerRef","getTracker","tracker","useApp","versionedContext","globalStore","componentDataKey","attachComponentData","dataComponent","getComponentData","_a$2","RouteRefImpl","createRouteRef","_a$1","PARAM_PATTERN","SubRouteRefImpl","createSubRouteRef","pathParams","param","ExternalRouteRefImpl","optional","createExternalRouteRef","useRouteRef","routeFunc","isOptional","useRouteRefParams","_routeRef","PluginErrorBoundary","ErrorBoundaryFallback","createRoutableExtension","createReactExtension","InnerComponent","RoutableExtensionWrapper","componentName","createComponentExtension","lazyLoader","Result","selectChildren","rootNode","strictError","Collection","selection","useElementFilter","filterFn","dependencies","PluginImpl","createPlugin","isError","maybe","assertError","serializeError","deserializeError","stringifyError","CustomErrorBase","fullMessage","causeStr","InputError","AuthenticationError","NotAllowedError","NotFoundError","ConflictError","NotModifiedError","NotImplementedError","ServiceUnavailableError","ForwardedError","parseErrorResponseBody","ResponseError","statusCode","statusText","NonError","commonProperties","isCalled","toJSON","destroyCircular","to_","forceEnumerable","maxDepth","depth","Buffer","enumerable","newError","isApiEntity","entity","isComponentEntity","isDomainEntity","isLocationEntity","isResourceEntity","isSystemEntity","ANNOTATION_VIEW_URL","ANNOTATION_EDIT_URL","ANNOTATION_KUBERNETES_API_SERVER","ANNOTATION_KUBERNETES_API_SERVER_CA","ANNOTATION_KUBERNETES_AUTH_PROVIDER","DefaultNamespaceEntityPolicy","parseRefString","colonI","slashI","defaultKind","defaultNamespace","parsed","textual","GroupDefaultParentEntityPolicy","parentEntityRef","group","CommonValidatorFunctions","separator","isValidPrefix","isValidSuffix","$schema$b","$id$b","description$b","examples$a","type$3","required$2","additionalProperties$2","properties$2","entityEnvelopeSchema","$schema$a","$id$a","description$a","examples$9","type$2","required$1","additionalProperties$1","properties$1","entitySchema","$schema$9","$id$9","description$9","examples$8","type$1","required","additionalProperties","entityMetaSchema","$schema$8","$id$8","description$8","definitions","commonSchema","compiledSchemaCache","refDependencyCandidates","throwAjvError","compileAjvSchema","disableCache","cacheKey","cached","extraSchemas","getExtraSchemas","ajv","compiled","todo","getAllRefs","entityEnvelopeSchemaValidator","entityKindSchemaValidator","softCandidates","entitySchemaValidator","KubernetesValidatorFunctions","n","defaultValidators","makeValidator","overrides","FieldFormatEntityPolicy","validators","require2","validator","isValid","expectation","defaultKnownFields","NoForeignRootFieldsEntityPolicy","knownFields","SchemaValidEntityPolicy","AllEntityPolicies","policies","policy","AnyEntityPolicy","EntityPolicies","$schema$7","$id$7","description$7","examples$7","allOf$7","schema$7","ajvCompiledJsonSchemaValidator","apiEntityV1alpha1Validator","$schema$6","$id$6","description$6","examples$6","allOf$6","schema$6","componentEntityV1alpha1Validator","$schema$5","$id$5","description$5","examples$5","allOf$5","schema$5","domainEntityV1alpha1Validator","$schema$4","$id$4","description$4","examples$4","allOf$4","schema$4","groupEntityV1alpha1Validator","$schema$3","$id$3","description$3","examples$3","allOf$3","schema$3","locationEntityV1alpha1Validator","RELATION_OWNER_OF","RELATION_CONSUMES_API","RELATION_API_CONSUMED_BY","RELATION_PROVIDES_API","RELATION_API_PROVIDED_BY","RELATION_DEPENDS_ON","RELATION_DEPENDENCY_OF","RELATION_PARENT_OF","RELATION_CHILD_OF","RELATION_MEMBER_OF","RELATION_HAS_MEMBER","RELATION_PART_OF","RELATION_HAS_PART","$schema$2","$id$2","description$2","examples$2","allOf$2","schema$2","resourceEntityV1alpha1Validator","$schema$1","$id$1","description$1","examples$1","allOf$1","schema$1","systemEntityV1alpha1Validator","$schema","$id","examples","allOf","userEntityV1alpha1Validator","splitIndex","stringifyLocationRef","getEntitySourceLocation","locationRef","relationType","entityNames","NewEntityContext","AsyncEntityProvider","EntityProvider","useAsyncEntity","ALIAS","PAIR","isAlias","isDocument","isMap","isSeq","hasAnchor","BREAK","SKIP","REMOVE","visitor_","initVisitor","visit_","ctrl","callVisitor","replaceNode","ci","ck","cv","visitAsync","visitAsync_","pt","escapeChars","escapeTagName","tn","ch","yaml","copy","version","verbatim","suffix","lines","tagEntries","tagNames","anchorIsValid","anchor","anchors","exclude","aliasObjects","sourceObjects","prevAnchors","reviver","len","v0","v1","arg","NodeBase","mapAsMap","maxAliasCount","onAnchor","_arg","getAliasCount","_onComment","_onChompKeep","src","kc","vc","isScalarValue","Scalar","defaultTagPrefix","findTagObject","tagName","tagObj","aliasDuplicateObjects","onTagObj","it","keepScalar","allowScalar","stringifyComment","comment","indent","FOLD_FLOW","FOLD_BLOCK","FOLD_QUOTED","foldFlowLines","indentAtStart","minContentWidth","onFold","onOverflow","folds","escapedFolds","split","overflow","escStart","escEnd","consumeMoreIndentedLines","fold","start","getFoldOptions","isBlock","containsDocumentMarker","lineLengthOverLimit","indentLength","strLen","doubleQuotedString","implicitKey","minMultiLineLength","code","singleQuotedString","quotedString","singleQuote","qs","hasDouble","hasSingle","blockEndNewlines","blockString","onComment","onChompKeep","blockQuote","commentString","literal","chomp","endStart","endNlPos","startWithSpace","startEnd","startNlPos","header","plainString","actualString","indentStep","inFlow","compat","ss","_stringify","_type","defaultKeyType","defaultStringType","opt","getTagObject","stringifyProps","o","stringifyPair","allNullValues","indentSeq","simpleKeys","keyComment","explicitKey","keyCommentDone","chompKeep","vsb","vcb","valueComment","valueCommentDone","valueStr","ws","cs","vs0","nl0","hasNewline","flow","hasPropsLine","sp0","debug","logLevel","warning","process","MERGE_KEY","addPairToJSMap","isMergeKey","mergeToJSMap","jsKey","stringKey","stringifyKey","jsValue","srcMap","strCtx","strKey","createPair","pair","stringifyCollection","collection","stringifyFlowCollection","stringifyBlockCollection","blockItemPrefix","flowChars","itemIndent","itemCtx","addCommentBefore","ik","fcPadding","reqNewline","linesAtValue","iv","sum","ic","findPair","YAMLMap","keepUndefined","replacer","add","overwrite","_pair","sortEntries","Type","YAMLSeq","asItemIndex","seq","nullTag","boolTag","sv","stringifyNumber","minFractionDigits","num","floatNaN","floatExp","dot","intIdentify","intResolve","radix","intAsBigInt","intStringify","intOct","_onError","intHex","stringifyJSON","jsonScalars","jsonError","binary","buffer","resolvePairs","cn","createPairs","iterable","pairs","YAMLOMap","omap","seenKeys","boolStringify","trueTag","falseTag","sign","intBin","YAMLSet","keepPair","parseSexagesimal","asBigInt","stringifySexagesimal","_60","intTime","floatTime","year","month","day","hour","minute","second","millisec","tz","schemas","tagsByName","customTags","schemaName","sortMapEntriesByKey","resolveKnownTags","sortMapEntries","toStringDefaults","hasDirectives","dir","contentComment","dc","_replacer","assertCollection","keyToStr","asStr","anchorPrefix","setAnchors","jsonArg","contents","YAMLError","lc","col","lineStr","trimStart","pointer","tokens","indicator","startOnNewline","spaceBefore","atNewline","hasSpace","commentSep","hasNewlineAfterProp","reqSpace","comma","cb","containsNewline","st","flowIndentCheck","fc","mapIncludes","uniqueKeys","isEqual","startColMsg","resolveBlockMap","composeNode","composeEmptyNode","bm","NodeClass","commentEnd","collItem","sep","keyProps","keyStart","keyNode","valueProps","valueNode","resolveBlockSeq","bs","blockMsg","resolveFlowCollection","fcName","coll","atRoot","prevItemComment","loop","expectedEnd","ce","ee","cePos","resolveCollection","CN","Coll","composeCollection","tagToken","expType","kt","scalar","strict","parseBlockScalarHeader","splitLines","chompStart","trimIndent","contentStart","prevMoreIndented","crlf","length","ts","rel","plainValue","singleQuotedValue","doubleQuotedValue","valueEnd","re","badChar","foldLines","foldNewline","cc","escapeCodes","parseCharCode","wsStart","composeScalar","range","findScalarTagByName","findScalarTagByTest","matchWithTest","directives","emptyScalarPosition","before","isSrcToken","composeAlias","alias","contentEnd","getErrorPos","parsePrelude","prelude","atComment","afterEmptyLine","afterDoc","forceDoc","endOffset","resolveAsScalar","createScalarToken","he","head","addEndtoBlockProps","setScalarValue","afterKey","setBlockScalarValue","setFlowScalarValue","oa","tok","nl","cst","_visit","prettyToken","isEmpty","hexDigits","tagChars","invalidFlowScalarChars","invalidAnchorChars","isNotAnchorChar","incomplete","dt","dirEnd","sp","ch0","ch1","quote","qb","lastChar","allowEmpty","allowTabs","includesToken","findNonEmptyIndex","isFlowToken","getPrevProps","getFirstKeyStartProps","fixFlowSeqItems","onNewLine","lexeme","bv","atNextItem","fs","docEnd","parseOptions","prettyErrors","parseAllDocuments","lineCounter","parser","composer","docs","parseDocument","_doc","_reviver","catalogApiRef","entityPresentationApiRef","defaultEntityPresentation","entityOrRef","getParts","entityRef","shortRef","getShortRef","primary","candidate","secondary","defaultKindLower","defaultNamespaceLower","useUpdatingObservable","updatedValue","useEntityPresentation","entityPresentationApi","presentation","starredEntitiesApiRef","MockStarredEntitiesApi","isScreenSmallerThanBreakpoint","useMediaQuery","theme2","_b2","useTheme","filterDrawerOpen","setFilterDrawerOpen","Grid","CatalogFilterLayout","isEntityTextFilter","reduceCatalogFilters","condensedFilters","compoundFilter","fullTextFilter","reduceBackendCatalogFilters","backendCatalogFilters","EntityTagFilter","EntityOwnerFilter","EntityLifecycleFilter","EntityNamespaceFilter","EntityUserFilter","EntityOrphanFilter","EntityTextFilter","UserListFilter","reduceEntityFilters","scmIntegrationsApi","sourceLocationRef","integration","EntityKindFilter","EntityTypeFilter","words","exactMatch","partialMatch","word","fullRefs","ownershipEntityRefs","starredEntityRefs","relations","isOwnedEntity","isStarredEntity","orphan","EntityErrorFilter","EntityListContext","EntityListProvider","catalogApi","requestedFilters","setRequestedFilters","enablePagination","queryParameters","initialCursor","cursor","setCursor","outputState","setOutputState","entityFilter","backendFilter","previousBackendFilter","entities","oldParams","newParams","newUrl","updateFilters","prevFilters","newFilters","pageInfo","prevCursor","nextCursor","useEntityList","useEntityTypeFilter","kindFilter","typeFilter","typeParameter","flattenedQueryTypes","selectedTypes","setSelectedTypes","availableTypes","setAvailableTypes","facets","facetsRef","oldFacets","newTypes","stillValidTypes","useRelatedEntities","relationFilter","filterByTypeLower","filterByKindLower","getEntityRef$1","useStarredEntities","starredEntitiesApi","starredEntities","toggleStarredEntity","getEntityRef","useStarredEntity","setIsStarredEntity","useEntityOwnership","myOwnerRefs","entityOwnerRefs","useAllKinds","allKinds","filterKinds","allowedKinds","forcedKinds","availableKinds","useEntityKindFilter","kindParameter","queryParamKind","selectedKind","setSelectedKind","EntityKindPicker","hidden","initialFilter","icon$2","CheckBoxOutlineBlank","checkedIcon$2","CheckBox","OptionCheckbox","EntityAutocompletePickerOption","availableOptions","showCounts","makeStyles","EntityAutocompletePickerInput","EntityAutocompletePicker","Filter","InputProps","initialSelectedOptions","filtersForAvailableValues","queryParameter","availableValuesFilters","availableValues","facet","selectedOptions","setSelectedOptions","shouldAddFilter","option","EntityLifecyclePicker","EntityNamespacePicker","initiallySelectedNamespaces","humanizeEntityRef","humanizeEntity","defaultName","useFacetsEntities","facetsPromise","decodeCursor","filteredRefs","filterEntity","encodeCursor","isFacetsResponse","normalizedText","useQueryEntities","initialRequest","cursorRequest","response2","useFetchEntities","initialSelectedOwnersRefs","isOwnersOnlyMode","queryEntitiesResponse","facetsEntitiesResponse","handleFetch","useSelectedOwners","allEntities","FixedWidthFormControlLabel","_theme","icon$1","checkedIcon$1","RenderOptionLabel","isGroup","EntityOwnerPicker","ownersParameter","setText","queryParamOwners","selectedOwners","setSelectedOwners","cache","availableOwners","owners","checkedIcon","EntityProcessingStatusPicker","selectedAdvancedItems","setSelectedAdvancedItems","orphanChange","errorChange","availableAdvancedItems","EntityTagPicker","EntityTypePicker","useOwnedEntitiesCount","loadingEntityRefs","user","allFilters","catalogFilters","loadingEntityOwnership","fetchEntities","req","ownedClaims","getOwnedCountClaims","totalItems","ownersRefs","commonOwnedBy","useAllEntitiesCount","prevRequest","newRequest","useStarredEntitiesCount","getFilterGroups","orgName","UserListPicker","availableFilters","userParameter","userAndGroupFilterIds","filterGroups","filterGroup","ownedEntitiesCount","loadingOwnedEntities","ownedEntitiesFilter","allCount","starredEntitiesCount","starredEntitiesFilter","loadingStarredEntities","queryParamUserFilter","selectedUserFilter","setSelectedUserFilter","filterCounts","DefaultFilters","initialKind","initiallySelectedFilter","ownerPickerMode","EntityDisplayName","hideIcon","disableTooltip","primaryTitle","secondaryTitle","entityRouteRef","entityRouteParams","EntityRefLink","linkProps","entityRoute","useEntityRoute","routeParams","EntityRefLinks","entityRefs","hideIcons","entityRefString","EntityCardActions","EmailCardAction","GroupCardActions","email","UserCardActions","maxTagChips","EntityPeekAheadPopover","delayTime","popupState","isHovered","setIsHovered","debouncedHandleMouseEnter","retrievedEntity","handleOnMouseLeave","EntitySearchBar","textParameter","queryParamTextFilter","columnFactories","formatContent","entity1","entity2","relation","getRelations","systemEntityColumns","componentEntityColumns","EntityTable","tableOptions","tableStyle","YellowStar","Star","FavoriteEntity","DEFAULT_ICON","getKind","useIcon","actualKind","EntityKindIcon","useAncestry","catalogClient","currentRef","isRootNode","parentRef","CustomNode","hasKindIcon","iconSize","paddedIconWidth","displayTitle","AncestryPage","ListSubheader","Container","findLink","KeyValueListItem","useColocated","currentEntityRef","origin","colocated","EntityList","Contents$1","originLocation","colocatedEntities","atLocation","atOrigin","ColocatedPage","sortKeys","JsonPage","OverviewPage","apiVersion","spec","groupedRelations","groupRelations","YamlPage","TabPanel","other","a11yProps","InspectEntityDialog","activeTab","setActiveTab","useUnregisterEntityDialogState","uid","isBootstrap","prerequisites","locationPromise","colocatedEntitiesPromise","locationAnnotationFilter","location2","colocatedEntities2","unregisterLocation","deleteEntity","Contents","onConfirm","showDelete","setShowDelete","onUnregister","onDelete","entityName","DialogActionsPanel","UnregisterEntityDialog","generateYamlExample","owner","yamlText","lineNumbers","generateDescription","entityKind","MockEntityListContextProvider","setFilters","defaultValues","resolvedValue","EXAMPLE$1","EmptyProviders","size","ProviderSettingsAvatar","emptyProfile","ProviderSettingsItem","signedIn","setSignedIn","setProfile","sessionState","profileResponse","ListItemText","DefaultProviderSettings","configuredProviders","UserSettingsAuthProviders","providerSettings","providersConfig","EXAMPLE","EmptyFlags","getSecondaryText","FlagItem","toggleHandler","Switch","sortFlags","flags","activeFlags","idleFlags","UserSettingsFeatureFlags","inputRef","initialFeatureFlags","initialFeatureFlagsSorted","initialFlagState","filterInput","setFilterInput","toggleFlag","flagName","prevState","clearFilterInput","filteredFeatureFlags","featureFlag","useUserProfile","UserSettingsSignInAvatar","UserSettingsMenu","MoreVert","UserSettingsProfileCard","UserSettingsPinToggle","ThemeIcon","activeId","TooltipToggleButton","ToggleButton","UserSettingsThemeToggle","activeThemeId","themeIds","handleSetTheme","newThemeId","ToggleButtonGroup","themeIcon","themeTitle","UserSettingsLanguageToggle","languageObservable","currentLanguage","handleSetLanguage","newLanguage","getLanguageDisplayName","selectedItems","UserSettingsAppearanceCard","UserSettingsIdentityCard","UserSettingsGeneral","LAYOUT_DATA_KEY","LAYOUT_ROUTE_DATA_KEY","SettingsLayout","DefaultSettingsPage","SettingsPage","outlet","layout","settingsRouteRef","userSettingsPlugin","UserSettingsPage","userSettingsTranslationRef","__v5Spacing","defaultSpacing","argsInput","argument","themeSpacing","adaptV5CssBaselineOverride","adaptV5Override","stateStyleKeyPattern","extractV5StateOverrides","_styleKey","styleKey","stateStyles","restStyles","transformV5ComponentThemesToV4","shapes","colorVariants","genPageTheme","colors","shape","gradient","backgroundImage","fontColor","pageTheme","DEFAULT_HTML_FONT_SIZE","DEFAULT_FONT_FAMILY","DEFAULT_PAGE_THEME","defaultTypography","createBaseThemeOptions","htmlFontSize","fontFamily","defaultPageTheme","pageTheme$1","typography","defaultComponentThemes","_themes","UnifiedThemeHolder","v5","createUnifiedTheme","themeOptions","v5Theme","v4Overrides","v4Theme","createUnifiedThemeFromV4","palettes","generateV4ClassName","UnifiedThemeProvider","noCssBaseline","cssBaseline","createThemeOptions","createThemeOverrides","createTheme","getGlobalObject","globalObject","makeKey","getOrCreateGlobalSingleton","supplier","createVersionedValueMap","versions","createVersionedContext","useVersionedContext","createVersionedContextForTesting","none","select","subgroups","subgroup","subnode","Selection","empty","arrayAll","selectorAll","childMatcher","childFind","childFirst","childrenFilter","sparse","EnterNode","datum","bindIndex","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compare","ascending","compareNode","sortgroups","sortgroup","xhtml","namespaces","attrRemove","attrRemoveNS","fullname","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","styleConstant","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","creatorInherit","document","creatorFixed","create","creator","constantNull","selection_cloneShallow","clone","selection_cloneDeep","deep","contextListener","parseTypenames","typenames","onRemove","typename","on","onAdd","dispatchEvent","window","dispatchConstant","dispatchFunction","selection_selection","selection_select","selection_filter","selection_empty","selection_text","selection_raise","selection_lower","selection_remove","selection_datum","selection_dispatch","Dispatch","types","T","get","that","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","schedule","self","tween","stop","tick","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","constructor","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","l","rgbn","Rgb","rgba","hsla","g","rgbConvert","rgb","opacity","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","Hsl","hsl","m2","hsl2rgb","clamph","clampt","interpolate","value1","string00","string1","interpolate0","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleInterpolate","styleTween","textInterpolate","textTween","id0","id1","newId","cancel","selection_prototype","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_easeVarying","cubicIn","cubicOut","cubicInOut","defaultTiming","selection_interrupt","selection_transition","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","constrain","wheelDelta","touchable","scaleExtent","duration","listeners","touchstarting","touchfirst","touchending","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","gesture","k0","k1","p0","centroid","p1","translate","scale","w","clean","Gesture","wheelidled","currentTarget","mousemoved","mouseupped","x0","y0","dx","dy","touches","started","l0","l1","dp","dl"],"sourceRoot":""}