{"version":3,"file":"static/js/5551.5dd79126.chunk.js","mappings":"iRAcA,MAAMA,GAAsBC,EAAAA,EAAAA,IAAO,MAAPA,EAAc,QAAC,MAAEC,GAAH,QAAgB,CACxDC,QAAS,cACTC,WAAY,SACZ,CAACF,EAAMG,YAAYC,GAAG,OAAQ,CAC5BC,YAAaL,EAAMM,QAAQ,IAJW,IAQ1C,MAAMC,UAAwBC,EAAAA,cAgB5BC,YAAYC,GACVC,MAAMD,GADW,KATnBE,MAAQ,CACNC,SAAU,KACVC,yBAAyB,EACzBC,iBAAiB,EACjBC,SAAU,GACVC,cAAe,KACfC,MAAO,MAGU,KAuCnBC,mBAAsBC,IACpB,MAAM,MAAEpB,GAAUqB,KAAKX,MAEnBU,EAAUpB,MAAMsB,QAAQC,OAASvB,EAAMsB,QAAQC,MAEjDF,KAAKG,UAAUC,IACN,CACLC,YAAa,IACRD,EAAUC,YACbJ,QAAS,IACJG,EAAUC,YAAYJ,QACzBC,KAAMvB,EAAMsB,QAAQC,UAK7B,EAvDgB,KA0DnBI,+BAAkCD,IAChC,MAAM,MAAE1B,GAAUqB,KAAKX,MAIvB,OAHIgB,EAAYE,YACdP,KAAKQ,sCAAsCH,IAEtCI,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,WAAU/B,EAAO0B,GAApC,EA/DiB,KAwEnBG,sCAAyCG,IACvC,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MAAMC,SAASC,IAErD,GADoBF,EAAqBJ,WAAWM,GACnC,CAAC,IAAD,GACG,UAAGF,EAAqBJ,WAAWM,UAAnC,aAAG,EAAsCC,gBAEzDH,EAAqBJ,WAAWM,GAAKC,aACnCd,KAAKX,MAAMV,MAAMM,QAAQ,IAAM,MAEpC,IARH,EAzEiB,KAqFnB8B,4BAA8B,KAC5B,MAAM,kBAAEC,GAAsBhB,KAAKX,MAAM4B,QACzC,OAAID,EAAkBE,YAElB,iBACEC,IAAI,aACJC,KAAK,WACLC,KAAML,EAAkBE,aAGhB,IAAP,EA/FU,KAkGnBI,2BAA6B,KAC3B,MAAM,kBAAEN,GAAsBhB,KAAKX,MAAM4B,QACzC,OAAID,EAAkBO,WACb,iBAAMJ,IAAI,aAAaE,KAAML,EAAkBO,YAC1C,IAAP,EAtGU,KAyGnBC,oBAAsB,KACpB,MAAM,IAAEC,EAAF,MAAO5B,EAAP,QAAcoB,GAAYjB,KAAKX,MAErC,OACE,SAAC,UAAD,CACEoC,IAAKA,EACLjC,SAAUQ,KAAKT,MAAMC,SACrBK,MAAOA,EACPoB,QAASA,EACTS,cAAe1B,KAAK0B,eANxB,EA5GiB,KAuHnBC,sBAAwB,KACtB,MAAM,IAAEF,EAAF,QAAOR,GAAYjB,KAAKX,MAC9BoC,EAAIG,eAAeC,QAAQ,sBAAuB,CAChD,CAAEC,MAAO,oCAAkCC,KAAM,gBAEnDN,EAAIG,eAAeC,QAAQ,6BAA8B,CACvDG,MAAO,kBACPC,WAAYhB,EAAQiB,iBAChBlC,KAAKmC,QAAQlB,EAAQiB,kBACrBE,EAAAA,EACJC,QAASpB,EAAQqB,mBAAqB,OACtCC,YAAatB,EAAQsB,aAAe,mBACpCC,MAAO,IACPhB,oBAAqBxB,KAAKwB,qBAR5B,EA5HiB,KAwInBiB,aAAgBC,IACd,MAAM,IAAEjB,GAAQzB,KAAKX,MAErB,OAAOW,KAAK2C,kBAAkBD,GAAkBE,MAAK,KACnDnB,EAAIG,eAAeC,QAAQ,4BAA6B,CACtDgB,kBAAkB,IAEpBpB,EAAIG,eAAeC,QAAQ,sBAA3B,GAJF,EA3IiB,KAmJnBiB,aAAe,KACb9C,KAAK0B,cAAcG,QAAQ,sBAAuB,CAChDkB,aAAc,KACdC,iBAAkB,OAEpBhD,KAAK0B,cAAcG,QAAQ,yBACrB,EAzJW,KA4JnBoB,WAAa,KACXjD,KAAKG,SAAS,CAAEV,yBAAyB,GAAzC,EA7JiB,KAgKnByD,WAAa,KACXlD,KAAKG,SAAS,CAAEV,yBAAyB,GAAzC,EAjKiB,KAoKnBkD,kBAAqBD,GACZ,IAAIS,SAAQ,CAACC,EAASC,KAC3B,IAAI7D,EAAW,KACXkD,IACFlD,EAAWQ,KAAKT,MAAMM,MAAMyD,aAAa,CAACZ,IAAmB,IAE3DlD,EACFQ,KAAKG,SACH,CACEX,SAAUA,EACVE,iBAAiB,GAEnB0D,GAGFC,GACD,IApLc,KAwLnBE,kBAAoB,KAClBvD,KAAKG,SAAS,CACZT,iBAAkBM,KAAKT,MAAMG,iBAD/B,EAzLiB,KA8LnByC,QAAWqB,IACT,MAAM,kBAAExC,GAAsBhB,KAAKX,MAAM4B,QACzC,OAAID,EAAkBO,UACZlC,IACN,SAACZ,EAAD,WACE,iBAAMgF,UAAS,yBAAoBpE,EAAMoE,WAAzC,SACGD,MAKA,IACR,EAxMDxD,KAAK0B,cAAgBgC,MAErB1D,KAAK2D,aAAe,IAAIC,EAAAA,QAAa,CACnCC,SAAUxE,EAAMoC,IAChBC,cAAe1B,KAAK0B,cACpBE,eAAgBvC,EAAMoC,IAAIG,eAC1BkC,IAAKzE,EAAMyE,MAGb9D,KAAKX,MAAM0E,gBAAgBC,iBAAmB,IAAIb,SAASC,IACzD,IAAIa,EAAAA,QAAqB,CACvBvC,cAAe1B,KAAK0B,cACpBD,IAAKpC,EAAMoC,IACXqC,IAAKzE,EAAMyE,IACXI,KAAM7E,EAAM4B,QAAQkD,WAAWD,KAC/BE,uBAAwBhB,EACxBnC,QAAS5B,EAAM4B,UAEdoD,OACAzB,MAAM0B,GACEA,EACJC,uBACA3B,MAAMvC,IACLL,KAAKG,SACH,CACEN,MAAOyE,EACPjE,YAAaL,KAAKM,+BAA+BD,KAEnD,KACEL,KAAK2B,uBAAL,GANJ,KAbR,GAyBH,CAwKD6C,SACE,OACE,gCACGxE,KAAKe,8BACLf,KAAKsB,8BACN,SAAC,UAAD,IACMtB,KAAKX,MACT4D,WAAYjD,KAAKiD,WACjBR,aAAczC,KAAKyC,aACnBS,WAAYlD,KAAKkD,WACjB7C,YAAaL,KAAKT,MAAMc,YACxByC,aAAc9C,KAAK8C,aACnBS,kBAAmBvD,KAAKuD,kBACxB/D,SAAUQ,KAAKT,MAAMC,SACrBI,cAAeI,KAAKT,MAAMK,cAC1BH,wBAAyBO,KAAKT,MAAME,wBACpCC,gBAAiBM,KAAKT,MAAMG,gBAC5BC,SAAUK,KAAKT,MAAMI,SACrBE,MAAOG,KAAKT,MAAMM,MAClB6B,cAAe1B,KAAK0B,kBAI3B,EAEH,WAAe+C,EAAAA,EAAAA,GAAUvF,E,gDC5QV,MAAM0E,EACnBxE,YAAYsF,GAAW,KAQvBC,kCAAqCC,IACnC,IACE,MAAMC,EAAS,IAAIC,gBAAgBF,GACnC,IAAIG,EAMJ,OAFEA,EAHGF,EAAOG,IAAI,MAASH,EAAOG,IAAI,KAGzB,CAACH,EAAOI,IAAI,KAAMJ,EAAOI,IAAI,MAF7BjF,KAAK8D,IAAIoB,UAAUC,YAIvB,CACLJ,OAAQA,EACRK,KAAMP,EAAOI,IAAI,MAAQjF,KAAK8D,IAAIoB,UAAUG,UAC5CC,OAAQT,EAAOI,IAAI,KACnBM,YAAaV,EAAOI,IAAI,OAAS,KAYpC,CAVC,MAAOO,GAIP,OAHAC,QAAQD,MAAMA,GAGP,CACLT,OAAQ/E,KAAK8D,IAAIoB,UAAUC,YAC3BC,KAAMpF,KAAK8D,IAAIoB,UAAUG,UACzBC,OAAQ,KACRC,YAAa,KAEhB,GAjCmB,KAoCtBG,kBAAoB,KAClB1F,KAAK0B,cAAciE,UAAU,UAAWC,IACtC5F,KAAK4B,eAAeC,QAAQ,uBAC5B,MAAMgE,EAAc7F,KAAK2E,kCAAkCiB,GAEhC,OAAvBC,EAAYP,QAGdtF,KAAK6D,SAASiC,6BACZD,EAAYP,OACZO,EAAYN,aAMhBvF,KAAK+F,MAAM/F,KAAK8D,IAAIoB,UAAWW,EAAYd,OAAQc,EAAYT,KAA/D,GAfF,EApCApF,KAAK6D,SAAWa,EAASb,SACzB7D,KAAK0B,cAAgBgD,EAAShD,cAC9B1B,KAAK4B,eAAiB8C,EAAS9C,eAC/B5B,KAAK8D,IAAMY,EAASZ,IACpB9D,KAAK0F,mBACN,CAkDDK,MAAMC,EAAMjB,EAAQK,GAClBY,EAAKC,QAAQ,CACXlB,OAAQA,EACRK,KAAMA,EACNc,SAAU,OAEZlG,KAAK0B,cAAcG,QAAQ,yBAC5B,E,wJC5DH,MAAMsE,UAAkBhH,EAAAA,cAAqB,cAAD,yBAC1CiH,gBAAkB,CAACC,EAAMjF,KAErB,SAAC,UAAD,IACMpB,KAAKX,MACT+B,KAAMA,EACN8C,KAAMmC,EAAKnC,KACXoC,KAAMD,EAAKC,KACXC,GAAIF,EAAKE,GACTC,MAAOH,EAAKG,MACZC,MAAOJ,EAAKI,MACZ3E,MAAOuE,EAAKvE,MACZ4E,QAASL,EAAKK,QACdC,cAAY,OAAE3G,KAAF,MAAwBqG,GACpCO,SAAUP,EAAKQ,gBACfC,QAAST,EAAKS,QACdC,SAAUV,EAAKU,WAhBqB,gDAqBtBV,GACXA,EAAKW,YAAYC,QAAO,CAACN,EAAcO,KAC5C,MAAMC,EAAUC,OAAOC,OAAOrH,KAAKX,MAAMiI,OAAOC,MAAMC,GAC7CA,EAAEjB,KAAOW,IAKlB,OAHIC,EAAQH,YAAYS,OAAS,IAC/Bd,EAAe,IAAIA,MAAiB,OAAA3G,KAAH,MAAyBmH,KAErD,IAAIR,EAAcQ,EAAzB,GACC,MA9BqC,gDAiCvBd,GACbA,EAAKW,aAAeX,EAAKW,YAAYS,OAAS,EACzCzH,KAAKoG,gBAAgBC,EAAM,WACzBA,EAAK7G,SACPQ,KAAKoG,gBAAgBC,EAAM,YACzBA,EAAKtE,KACP/B,KAAKoG,gBAAgBC,EAAM,QACzBA,EAAKqB,QACP1H,KAAKoG,gBAAgBC,EAAM,gBAD7B,GAxCiC,CA6C1C7B,SACE,MAAM,MAAE8C,EAAF,MAASd,GAAUxG,KAAKX,MAC9B,OACE,SAAC,IAAD,CACEsI,MAAO,CAAEC,SAAU,UACnBC,gBAAc,EACdtB,GAAE,oBAAeC,GACjBsB,KAAK,aACLC,UAAU,MALZ,SAOGX,OAAOC,OAAOC,GACZU,QAAQ3B,GACAA,EAAKG,QAAUA,IAEvB1C,KAAKuC,IAEF,SAAC,WAAD,kBACGrG,KADH,MACwBqG,EAAMA,EAAKE,KADdF,EAAKE,OAOrC,EAGH,W,o2BC7DA,MAAM0B,UAAsB9I,EAAAA,cAC1BC,YAAYC,GAAQ,IAAD,EACjBC,MAAMD,GADW,YAKnB6I,WAAa,EALM,KAOnB3I,MAAQ,CAAC,EAPU,KASnB4I,kBAAoB,MAClB,OAAAnI,KAAA,SAViB,gDAaE,KACnB,MAAM,cAAE0B,GAAkB1B,KAAKX,MAC/BqC,EAAciE,UAAU,mBAAxB,OAA2C3F,KAA3C,OACA0B,EAAciE,UACZ,yBADF,OAEE3F,KAFF,OAIA0B,EAAciE,UAAU,oBAAxB,OAA4C3F,KAA5C,OACA0B,EAAciE,UAAU,gBAAxB,OAAwC3F,KAAxC,OACA0B,EAAciE,UACZ,4BADF,OAEE3F,KAFF,OAIA0B,EAAciE,UACZ,mBADF,OAEE3F,KAFF,OAIA0B,EAAciE,UAAU,0BAAxB,OAAkD3F,KAAlD,UA9BiB,gDAiCA,KACjB,MAAM,QAAEiB,GAAYjB,KAAKX,MACzB4B,EAAQkD,WAAWD,KAAKtD,SAAxB,OAAgCZ,KAAhC,OACAA,KAAKG,UAASiI,EAAAA,EAAAA,wBAAuBnH,EAAQkD,WAAWD,MAAxD,IApCiB,gDAyCcmE,IAC/B,MAAM,SAAE7I,EAAF,QAAYyB,EAAU,CAAC,GAAMjB,KAAKX,MAKlCiJ,EACH9I,GAAY6I,EAAS7I,WAAaA,EAASkD,kBACf,KAA5BzB,EAAQsH,iBACPtH,EAAQsH,kBAAoBF,EAAS7I,SAEzC4H,OAAOoB,OAAOH,EAAU,CACtB9B,IAAG,OAACvG,KAAF,QACF+G,SAAUuB,EACVxB,QAASwB,KAEPG,EAAAA,EAAAA,YAAWJ,KACbA,EAASI,YAAa,EACtBJ,EAASnE,KAAKtD,SAAS8H,KACrB,OAAA1I,KAAA,MAAmC0I,EAAaL,EAAhD,IAEH,IA9DgB,gDAmEW,IAAyC,IAAxC,aAAEtF,EAAF,iBAAgBC,GAAuB,EACpE,MAAM2F,GAAcC,EAAAA,EAAAA,8BAA6B7F,EAAc/C,KAAKT,QACpE,OAAAS,KAAA,MAAkB+C,EAAcC,IAChC,OAAAhD,KAAA,MAA6B2I,EAAYpC,IAAI3D,MAAK,MAChD,OAAA5C,KAAA,MAAuB2I,EAAYjC,QAAQmC,QAAQC,UAAnD,GADF,IAtEiB,gDA2EiBvC,IAClC,MAAM,IAAE9E,GAAQzB,KAAKX,OACf,SAAEG,GAAaQ,KAAKT,MAAMgH,GAC5B/G,KACF,OAAAQ,KAAA,MAAkBR,EAAU,OAC5B,OAAAQ,KAAA,MAA6BuG,GAAI3D,MAAK,KACpCnB,EAAIG,eAAeC,QAAQ,8BAA3B,IAEH,IAnFgB,gDAwFS0E,KAE1B,OAAAvG,KAAA,MAAsCuG,IACtC,OAAAvG,KAAA,MAAgCuG,IAChC,OAAAvG,KAAA,MAAuCuG,EAAvC,IA5FiB,gDA+FKwC,IACtB,MAAM,QAAE9H,EAAF,cAAWS,EAAX,IAA0BD,GAAQzB,KAAKX,MACzC4B,EAAQ+H,6BACVtH,EAAcG,QAAQ,mBAExBJ,EAAIG,eAAeC,QAAQ,gCAC3B,OAAA7B,KAAA,MAA2B+I,EAA3B,IArGiB,gDAwGI,KACrB,MAAM,IAAEtH,GAAQzB,KAAKX,OACrB,OAAAW,KAAA,QACAyB,EAAIG,eAAeC,QAAQ,6BAA3B,IA3GiB,gDA8Ga6F,KAC1BuB,EAAAA,EAAAA,iBACF,OAAAjJ,KAAA,SAEF,OAAAA,KAAA,MAA0B0H,EAA1B,IAlHiB,gDAqHkBnB,IACnC,MAAM,QAAEtF,GAAYjB,KAAKX,OACnB,QAAEqI,GAAY1H,KAAKT,MAAMgH,GAC3BmB,MAGEuB,EAAAA,EAAAA,gBAAiBhI,EAAQiI,2BAC3B,OAAAlJ,KAAA,SAEF,OAAAA,KAAA,MAA0BA,KAAKT,MAAMgH,GAAImB,SAC1C,IA/HgB,gDAoIMnB,KAEvB,OAAAvG,KAAA,MAAsCuG,IACtC,OAAAvG,KAAA,MAAgCuG,IAChC,OAAAvG,KAAA,MAAuCuG,IACvC,OAAAvG,KAAA,MAA6BuG,EAA7B,IAzIiB,gDA4IWA,IAC5B,MAAM,IAAE9E,GAAQzB,KAAKX,OACf,KAAE0C,GAAS/B,KAAKT,MAAMgH,GACxBxE,IACFoH,OAAOC,KAAKpJ,KAAKT,MAAMgH,GAAIxE,KAAM,UACjCN,EAAIG,eAAeC,QAAQ,+BAC5B,IAlJgB,gDAuJUwH,IAC3B,IAAIC,EAAU,IAAKD,GACnB,MAAO,IACFA,EACHvC,UAAUyC,EAAAA,EAAAA,wBAAuBD,GACjCvC,UAAWuC,EAAQb,WACnB5B,gBAAiByC,EAAQb,YACpBa,EAAQzC,gBACTyC,EAAQzC,gBANd,IAzJiB,gDAmKY,CAACR,EAAMmD,EAAcH,KAClD,MAAMI,GAAaC,EAAAA,EAAAA,mBAAkBL,EAAaG,GAClD,MAAO,IACFnD,EACHS,SAA0C,IAAjC2C,EAAWE,QAAQtD,EAAKE,IACjCM,iBAC+C,IAA7CwC,EAAYO,WAAWD,QAAQtD,EAAKE,KAEhCF,EAAKQ,gBACXE,WAAUsC,EAAYZ,YAAapC,EAAKU,SAP1C,IArKiB,gDAiLQ8C,GAClB,IAAI1G,SAASC,IAClB,MAAMoG,EAAe,IAAKxJ,KAAKT,OACzB8J,EAAcG,EAAaK,GAC3BC,EAAW1C,OAAOC,OAAOmC,GAAcvC,QAAO,CAACK,EAAOjB,IACpCA,EAAKE,KAAOsD,EAEzB,IACFvC,EACH,CAACjB,EAAKE,KAAN,OAAWvG,KAAX,MAA0CqG,IAGrC,IACFiB,EACH,CAACjB,EAAKE,KAAN,OAAWvG,KAAX,MACEqG,EACAmD,EACAH,KAIL,CAAC,GAEJrJ,KAAKG,SAAS2J,EAAU1G,EAAxB,MAxMe,gDA4ML,KACZ,IAAI0G,EAAW1C,OAAOC,OAAO,IAAKrH,KAAKT,QAAS0H,QAAO,CAAC1H,EAAO8G,KAC7D,IAAIiD,EAAU,IAAKjD,GAGnB,OAFAiD,EAAQxC,SAAU,EAClBwC,EAAQvC,UAAW,EACZ,IAAKxH,EAAO,CAAC+J,EAAQ/C,IAAK+C,EAAjC,GACC,CAAC,GAEJtJ,KAAKG,SAAS2J,EAAd,IApNiB,gDAuNCC,UAClBC,EAAAA,GAAAA,SAAgBC,EAAc,CAC5BC,YAAa,mBACbC,QAAQ,EACRC,WAAW,EACXC,MAAO,GAJT,IAxNiB,gDAgOJ,WAAmD,IAAlDtH,EAAiD,uDAAlC,KAAMC,EAA4B,uDAAT,KACtD,MAAM,cAAEtB,GAAkB,EAAKrC,MAC/BqC,EAAcG,QAAQ,sBAAuB,CAC3CkB,aAAcA,EACdC,iBAAkBA,GAErB,IAtOkB,gDA6OK+G,gBAChBM,EAAAA,EAAAA,OAAM,KACZrK,KAAKX,MAAMqC,cAAcG,QAAQ,SAAU6F,EAA3C,IA/OiB,gDAkPA,KACjB1H,KAAKkI,YAAc,EACZlI,KAAKkI,eAlPZ,OAAAlI,KAAA,OACD,CAoPDwE,SACE,MAAM,IAAE/C,EAAF,cAAOC,GAAkB1B,KAAKX,MACpC,OACE,SAAC,IAAD,CACEkH,GAAG,mBACH+D,GAAI,CAAEC,UAAW,OAAQ3C,SAAU,WAAY4C,SAAU,QAF3D,UAIE,SAAC,UAAD,CACE/I,IAAKA,EACLC,cAAeA,EACf8E,MAAO,EACPc,MAAOtH,KAAKT,SAInB,EAGH,W,iMC3QA,MAAMkL,GAAqB/L,EAAAA,EAAAA,IAAOgM,EAAAA,EAAPhM,EAAqB,QAAC,MAAEC,GAAH,QAAgB,CAC9DgM,SAAUhM,EAAMM,QAAQ,GADsB,IAI1C2L,GAAqBlM,EAAAA,EAAAA,IAAOgM,EAAAA,EAAPhM,EAAqB,QAAC,MAAEC,GAAH,QAAgB,CAC9D,wBAAyB,CACvBgM,SAAUhM,EAAMM,QAAQ,IAFoB,IAK1C4L,GAAiBnM,EAAAA,EAAAA,IAAOoM,EAAAA,GAAPpM,EAAiB,QAAC,MAAEC,GAAH,QAAgB,CACtDoM,aAAc,aACd,oBAAqB,CACnBC,WAAW,GAAD,OAAKrM,EAAMM,QAAQ,GAAnB,kBAA+BN,EAAMsB,QAAQgL,WAAWC,OAClE,iBAAkB,CAChBC,gBAAiBxM,EAAMsB,QAAQmL,OAAOrE,UAExC,uBAAwB,CACtBoE,gBAAiBxM,EAAMsB,QAAQmL,OAAOrE,UAExC,UAAW,CACTsE,YAAa1M,EAAMsB,QAAQmL,OAAOE,QAXA,IAAxC,6KAgBA,MAAMC,UAA0BpM,EAAAA,cAAqB,cAAD,oEAClC,KACd,MAAM,MAAE2C,GAAU9B,KAAKX,MACvB,OAAO,SAAC,IAAD,UAAeyC,GAAtB,IAHgD,gDAM/B,KACjB,MAAM,MAAEA,EAAF,SAAS8E,GAAa5G,KAAKX,MAEjC,OAAOuH,GACL,UAACgE,EAAD,YACI9I,IAAS,iBAAM6F,MAAO6D,EAAAA,EAAb,+BACX,SAAC,IAAD,QAGF,UAACZ,EAAD,YACI9I,IAAS,iBAAM6F,MAAO6D,EAAAA,EAAb,+BACX,SAAC,IAAD,MARJ,IATgD,gDAsBnC,KACb,MAAM,MAAE1J,EAAF,KAASwE,GAAStG,KAAKX,MAC7B,OACE,UAACoL,EAAD,YACI3I,IAAS,iBAAM6F,MAAO6D,EAAAA,EAAb,SAA8BlF,EAAKmF,mBAC9C,SAAC,IAAD,CAAM9D,MAAO,CAAE+D,SAAUpF,EAAKoF,UAA9B,SACGpF,EAAKqF,uBAJZ,IAxBgD,gDAkCpC,KACZ,MAAM,aAAEhF,GAAiB3G,KAAKX,MAC9B,OAAOsH,GAAgBA,EAAac,OAAS,CAA7C,IApCgD,gDAuCzB,CAACrG,EAAMmF,KAC9B,MAAM,cAAE7E,GAAkB1B,KAAKX,MAC/BqC,EAAcG,QAAd,UAAyBT,EAAzB,YAAyCmF,EAAzC,IAzCgD,gDA4C9B,KAClB,MAAM,MAAE5H,EAAF,MAAS6H,EAAT,MAAgBC,EAAhB,QAAuBK,GAAY9G,KAAKX,MACxCoJ,GAAU,OAAGzI,KAAH,QAChB,OAAO8G,EACH,CACE8E,YAAajN,EAAMM,QAAQ,EAAY,EAARuH,GAC/BwE,WAAW,GAAD,OAAKrM,EAAMM,QAAQ,GAAnB,kBAA+BwH,GACzCoF,aAAcpD,EAAa,EAAI9J,EAAMM,QAAQ,IAE/C,CACE2M,YAAajN,EAAMM,QAAQ,EAAY,EAARuH,GAC/BqF,aAAcpD,EAAa,EAAI9J,EAAMM,QAAQ,GARnD,GA/CgD,CA2DlDuF,SACE,MAAM,KAAEpD,EAAF,SAAQ2F,EAAR,aAAkBJ,EAAlB,SAAgCC,EAAhC,KAA0CN,EAA1C,MAAgDE,EAAhD,MAAuD1E,EAAvD,GAA8DyE,GAClEvG,KAAKX,MACDoJ,GAAU,OAAGzI,KAAH,QAChB,OACE,iCACE,UAAC6K,EAAD,CACEiB,SAAO,EACP/E,SAAUA,EACVgF,QAAM,EACNC,IAAKhM,KAAKX,MAAMqH,QAChBuF,KAAK,QACLC,gBAAc,EACd,gBAAezD,EAAU,kBAAclC,GAAO,KAC9C,gBAAeK,EACfuF,QAAS,MACP,OAAAnM,KAAA,MAA4BoB,EAAMmF,EAAlC,EAEF+D,IAAE,OAAEtK,KAAF,QAZJ,UAcGsG,GAAI,OAAGtG,KAAH,QAAyB,KAC7B8B,IAAK,OAAI9B,KAAJ,QACLyI,IAAU,OAAIzI,KAAJ,WAEZyI,IACC,SAAC,IAAD,CAAUlC,GAAE,kBAAaA,GAAM6F,GAAIxF,EAAUyF,QAAS,IAAtD,UACE,SAAC,UAAD,IACMrM,KAAKX,MACTmH,MAAOA,EAAQ,EACfc,MAAOX,QAMlB,EAGH,WAAelC,EAAAA,EAAAA,GAAU8G,E,0HCvIzB,MAUa7B,EAAoB,CAACL,EAAaiD,KAC7C,MAAMC,EAXgB,EAAClD,EAAaiD,IAC/BjD,EAAYmD,SAGRpF,OAAOC,OAAOiF,GAAU/E,MAAMlB,GAC5BA,EAAKoG,YAAY9C,QAAQN,EAAY9C,KAAO,IAH9C8C,EASYqD,CAAgBrD,EAAaiD,GAClD,MAAO,CAACC,EAAahG,MAAOgG,EAAaE,YAAzC,EAGWlD,EAA0BlD,GAC9BA,EAAKoC,YAAcpC,EAAKQ,iBAAkC,IAAfR,EAAKG,MAG5CoC,EAA+B,CAAC7F,EAAc4J,IAClDvF,OAAOC,OAAOsF,GAAepF,MAAMlB,GACjCA,EAAK7G,WAAauD,G,sBCnBzB6J,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,kDACD,QACJN,EAAQ,EAAUG,C","sources":["plugins/DocumentHandler/DocumentHandler.js","plugins/DocumentHandler/MapViewModel.js","plugins/DocumentHandler/panelMenu/PanelList.js","plugins/DocumentHandler/panelMenu/PanelMenuContainerView.js","plugins/DocumentHandler/panelMenu/PanelMenuListItem.js","plugins/DocumentHandler/panelMenu/panelMenuUtils.js","../node_modules/@mui/icons-material/Menu.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport DocumentWindowBase from \"./documentWindow/DocumentWindowBase\";\nimport MenuIcon from \"@mui/icons-material/Menu\";\nimport { styled } from \"@mui/material/styles\";\n\nimport DocumentHandlerModel from \"./DocumentHandlerModel\";\nimport PanelMenuContainerView from \"./panelMenu/PanelMenuContainerView\";\nimport Observer from \"react-event-observer\";\nimport MapViewModel from \"./MapViewModel\";\nimport { createTheme } from \"@mui/material/styles\";\nimport { withTheme } from \"@emotion/react\";\nimport { deepMerge } from \"../../utils/DeepMerge\";\n\nconst StyledIconContainer = styled(\"div\")(({ theme }) => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n [theme.breakpoints.up(\"md\")]: {\n marginRight: theme.spacing(1),\n },\n}));\n\nclass DocumentHandler extends React.PureComponent {\n static propTypes = {\n app: PropTypes.object.isRequired,\n map: PropTypes.object.isRequired,\n options: PropTypes.object.isRequired,\n };\n\n state = {\n document: null,\n documentWindowMaximized: true,\n showPrintWindow: false,\n chapters: [],\n documentColor: null,\n model: null,\n };\n\n constructor(props) {\n super(props);\n this.localObserver = Observer();\n\n this.mapViewModel = new MapViewModel({\n appModel: props.app,\n localObserver: this.localObserver,\n globalObserver: props.app.globalObserver,\n map: props.map,\n });\n\n this.props.searchInterface.getSearchMethods = new Promise((resolve) => {\n new DocumentHandlerModel({\n localObserver: this.localObserver,\n app: props.app,\n map: props.map,\n menu: props.options.menuConfig.menu,\n resolveSearchInterface: resolve,\n options: props.options,\n })\n .init()\n .then((loadedDocumentModel) => {\n return loadedDocumentModel\n .fetchCustomThemeJson()\n .then((customTheme) => {\n this.setState(\n {\n model: loadedDocumentModel,\n customTheme: this.getThemeWithCustomThemeApplied(customTheme),\n },\n () => {\n this.addDrawerToggleButton();\n }\n );\n });\n });\n });\n }\n\n componentDidUpdate = (prevProps) => {\n const { theme } = this.props;\n //We need to update the palette.mode in the nested customTheme with dark/light from the main theme\n if (prevProps.theme.palette.mode !== theme.palette.mode) {\n //Spread to not mutate\n this.setState((prevState) => {\n return {\n customTheme: {\n ...prevState.customTheme,\n palette: {\n ...prevState.customTheme.palette,\n mode: theme.palette.mode,\n },\n },\n };\n });\n }\n };\n\n getThemeWithCustomThemeApplied = (customTheme) => {\n const { theme } = this.props;\n if (customTheme.typography) {\n this.setBottomMarginsForTypographyVariants(customTheme);\n }\n return createTheme(deepMerge(theme, customTheme));\n };\n\n /**\n * @summary Loops customTheme and checks if certain typography-variants have marginBottom set\n * in the theme file. If not set, then we inject default value.\n * @param {customTheme} documentHandlerTheme\n * @memberof documenthandler.js\n */\n setBottomMarginsForTypographyVariants = (documentHandlerTheme) => {\n [\"body1\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].forEach((key) => {\n const keyHasValue = documentHandlerTheme.typography[key];\n if (keyHasValue) {\n const marginBottom = documentHandlerTheme.typography[key]?.marginBottom;\n if (!marginBottom) {\n documentHandlerTheme.typography[key].marginBottom =\n this.props.theme.spacing(1) || \"8px\";\n }\n }\n });\n };\n\n dynamicallyImportCustomFont = () => {\n const { dynamicImportUrls } = this.props.options;\n if (dynamicImportUrls.customFont) {\n return (\n \n );\n } else return null;\n };\n\n dynamicallyImportIconFonts = () => {\n const { dynamicImportUrls } = this.props.options;\n if (dynamicImportUrls.iconFonts) {\n return ;\n } else return null;\n };\n\n renderDrawerContent = () => {\n const { app, model, options } = this.props;\n\n return (\n \n );\n };\n\n addDrawerToggleButton = () => {\n const { app, options } = this.props;\n app.globalObserver.publish(\"core.addSrShortcuts\", [\n { title: \"Till huvudmeny för webbplatsen\", link: \"#panelmenu\" },\n ]);\n app.globalObserver.publish(\"core.addDrawerToggleButton\", {\n value: \"documenthandler\",\n ButtonIcon: options.drawerButtonIcon\n ? this.getIcon(options.drawerButtonIcon)\n : MenuIcon,\n caption: options.drawerButtonTitle || \"Meny\",\n drawerTitle: options.drawerTitle || \"Översiktsplan\",\n order: 100,\n renderDrawerContent: this.renderDrawerContent,\n });\n };\n\n showDocument = (documentFileName) => {\n const { app } = this.props;\n\n return this.setActiveDocument(documentFileName).then(() => {\n app.globalObserver.publish(\"documentviewer.showWindow\", {\n hideOtherPlugins: false,\n });\n app.globalObserver.publish(\"core.maximizeWindow\");\n });\n };\n\n onWindowHide = () => {\n this.localObserver.publish(\"set-active-document\", {\n documentName: null,\n headerIdentifier: null,\n });\n this.localObserver.publish(\"document-window-closed\");\n return;\n };\n\n onMinimize = () => {\n this.setState({ documentWindowMaximized: false });\n };\n\n onMaximize = () => {\n this.setState({ documentWindowMaximized: true });\n };\n\n setActiveDocument = (documentFileName) => {\n return new Promise((resolve, reject) => {\n let document = null;\n if (documentFileName) {\n document = this.state.model.getDocuments([documentFileName])[0];\n }\n if (document) {\n this.setState(\n {\n document: document,\n showPrintWindow: false,\n },\n resolve\n );\n } else {\n reject();\n }\n });\n };\n\n togglePrintWindow = () => {\n this.setState({\n showPrintWindow: !this.state.showPrintWindow,\n });\n };\n\n getIcon = (iconName) => {\n const { dynamicImportUrls } = this.props.options;\n if (dynamicImportUrls.iconFonts) {\n return (props) => (\n \n \n {iconName}\n \n \n );\n } else {\n return null;\n }\n };\n\n render() {\n return (\n <>\n {this.dynamicallyImportCustomFont()}\n {this.dynamicallyImportIconFonts()}\n \n >\n );\n }\n}\nexport default withTheme(DocumentHandler);\n","export default class MapViewModel {\n constructor(settings) {\n this.appModel = settings.appModel;\n this.localObserver = settings.localObserver;\n this.globalObserver = settings.globalObserver;\n this.map = settings.map;\n this.bindSubscriptions();\n }\n\n convertMapSettingsUrlToOlSettings = (inputUrl) => {\n try {\n const params = new URLSearchParams(inputUrl);\n let center;\n if (!params.has(\"x\") || !params.has(\"y\")) {\n center = this.map.getView().getCenter();\n } else {\n center = [params.get(\"x\"), params.get(\"y\")];\n }\n return {\n center: center,\n zoom: params.get(\"z\") || this.map.getView().getZoom(),\n layers: params.get(\"l\"), // Allow 'null', we handle it later\n groupLayers: params.get(\"gl\") || \"{}\", // Default to an empty stringified JSON object\n };\n } catch (error) {\n console.error(error);\n // In case parsing the params failed, let's ensure we have\n // a valid return object:\n return {\n center: this.map.getView().getCenter(),\n zoom: this.map.getView().getZoom(),\n layers: null,\n groupLayers: \"{}\", // Default to an empty stringified JSON object\n };\n }\n };\n\n bindSubscriptions = () => {\n this.localObserver.subscribe(\"fly-to\", (url) => {\n this.globalObserver.publish(\"core.minimizeWindow\");\n const mapSettings = this.convertMapSettingsUrlToOlSettings(url);\n\n if (mapSettings.layers !== null) {\n // Let's use Hajk's generic layer visibility\n // mechanism as exposed in AppModel\n this.appModel.setLayerVisibilityFromParams(\n mapSettings.layers,\n mapSettings.groupLayers\n );\n }\n\n // Let's ensure we end up in the correct location, even\n // if no layer's visibility was changed\n this.flyTo(this.map.getView(), mapSettings.center, mapSettings.zoom);\n });\n };\n\n flyTo(view, center, zoom) {\n view.animate({\n center: center,\n zoom: zoom,\n duration: 1500,\n });\n this.localObserver.publish(\"map-animation-complete\");\n }\n}\n","import React from \"react\";\nimport List from \"@mui/material/List\";\nimport PanelMenuListItem from \"./PanelMenuListItem\";\n\nclass PanelList extends React.PureComponent {\n getMenuItemType = (item, type) => {\n return (\n \n );\n };\n\n #getSubMenuItems = (item) => {\n return item.menuItemIds.reduce((subMenuItems, subItemId) => {\n const subItem = Object.values(this.props.items).find((i) => {\n return i.id === subItemId;\n });\n if (subItem.menuItemIds.length > 0) {\n subMenuItems = [...subMenuItems, ...this.#getSubMenuItems(subItem)];\n }\n return [...subMenuItems, subItem];\n }, []);\n };\n\n #renderMenuItem = (item) => {\n if (item.menuItemIds && item.menuItemIds.length > 0) {\n return this.getMenuItemType(item, \"submenu\");\n } else if (item.document) {\n return this.getMenuItemType(item, \"document\");\n } else if (item.link) {\n return this.getMenuItemType(item, \"link\");\n } else if (item.maplink) {\n return this.getMenuItemType(item, \"maplink\");\n }\n };\n\n render() {\n const { items, level } = this.props;\n return (\n \n {Object.values(items)\n .filter((item) => {\n return item.level === level;\n })\n .map((item) => {\n return (\n \n {this.#renderMenuItem(item, item.id)}\n \n );\n })}\n
\n );\n }\n}\n\nexport default PanelList;\n","import React from \"react\";\nimport PanelList from \"./PanelList\";\nimport Box from \"@mui/material/Box\";\nimport { getIsMobile } from \"../../../utils/IsMobile\";\nimport { delay } from \"../../../utils/Delay\";\nimport { animateScroll as scroll } from \"react-scroll\";\nimport { hasSubMenu } from \"../utils/helpers\";\nimport { getNormalizedMenuState } from \"../utils/stateConverter\";\nimport {\n isExpandedTopLevelItem,\n getItemIdsToColor,\n findMenuItemWithDocumentName,\n} from \"../panelMenu/panelMenuUtils\";\n\nclass PanelMenuView extends React.PureComponent {\n constructor(props) {\n super(props);\n this.#bindSubscriptions();\n }\n\n internalId = 0;\n\n state = {};\n\n componentDidMount = () => {\n this.#initializeItems();\n };\n\n #bindSubscriptions = () => {\n const { localObserver } = this.props;\n localObserver.subscribe(\"submenu-clicked\", this.#handleSubMenuClicked);\n localObserver.subscribe(\n \"document-link-clicked\",\n this.#handleOpenDocumentFromLink\n );\n localObserver.subscribe(\"document-clicked\", this.#openEventualConnections);\n localObserver.subscribe(\"link-clicked\", this.#handleExternalLinkClicked);\n localObserver.subscribe(\n \"document-maplink-clicked\",\n this.#handleShowMapLayersFromLink\n );\n localObserver.subscribe(\n \"maplink-clicked\",\n this.#handleShowMapLayersFromPanelMenu\n );\n localObserver.subscribe(\"document-window-closed\", this.#clearPanel);\n };\n\n #initializeItems = () => {\n const { options } = this.props;\n options.menuConfig.menu.forEach(this.#setInitialMenuItemProperties);\n this.setState(getNormalizedMenuState(options.menuConfig.menu));\n };\n\n // Adds highlighting on the selected document by checking if the provided\n // document (from props) matches the current menu-item.\n #setInitialMenuItemProperties = (menuItem) => {\n const { document, options = {} } = this.props;\n // Since this code only runs on mount, we should be allowed to check\n // for the selected document by using \"documentOnStart\" instead of the supplied\n // document. Added this fallback since the document from props is not always\n // defined, probably because of timing issues...\n const itemMatchesOpenDocument =\n (document && menuItem.document === document.documentFileName) ||\n (options.documentOnStart !== \"\" &&\n options.documentOnStart === menuItem.document);\n // Do not use spread because we are mutating original item\n Object.assign(menuItem, {\n id: this.#getNextUniqueId(),\n selected: itemMatchesOpenDocument,\n colored: itemMatchesOpenDocument,\n });\n if (hasSubMenu(menuItem)) {\n menuItem.hasSubMenu = true;\n menuItem.menu.forEach((subMenuItem) => {\n this.#setInitialMenuItemProperties(subMenuItem, menuItem);\n });\n }\n };\n\n //------------------Handle events-------------------------\n\n #handleOpenDocumentFromLink = ({ documentName, headerIdentifier }) => {\n const itemClicked = findMenuItemWithDocumentName(documentName, this.state);\n this.#setDocument(documentName, headerIdentifier);\n this.#setItemStateProperties(itemClicked.id).then(() => {\n this.#scrollToMenuItem(itemClicked.itemRef.current.offsetTop);\n });\n };\n\n #handleOpenDocumentFromPanelMenu = (id) => {\n const { app } = this.props;\n const { document } = this.state[id];\n if (document) {\n this.#setDocument(document, null);\n this.#setItemStateProperties(id).then(() => {\n app.globalObserver.publish(\"core.onlyHideDrawerIfNeeded\");\n });\n }\n };\n\n // The panel-menu buttons can contain several \"connections\" (external-link, map-link, and document)\n // Make sure to fire each handler, the handler itself checks if a connection is present.\n #openEventualConnections = (id) => {\n // Remember, the handlers below wont do anything if the connection value is nullish.\n this.#handleOpenDocumentFromPanelMenu(id);\n this.#handleExternalLinkClicked(id);\n this.#handleShowMapLayersFromPanelMenu(id);\n };\n\n #handleShowMapLayers = (mapLink) => {\n const { options, localObserver, app } = this.props;\n if (options.displayLoadingOnMapLinkOpen) {\n localObserver.publish(\"maplink-loading\");\n }\n app.globalObserver.publish(\"core.onlyHideDrawerIfNeeded\");\n this.#delayAndFlyToMapLink(mapLink);\n };\n\n #closeDocumentWindow = () => {\n const { app } = this.props;\n this.#setDocument();\n app.globalObserver.publish(\"documentviewer.closeWindow\");\n };\n\n #handleShowMapLayersFromLink = (maplink) => {\n if (getIsMobile()) {\n this.#closeDocumentWindow();\n }\n this.#handleShowMapLayers(maplink);\n };\n\n #handleShowMapLayersFromPanelMenu = (id) => {\n const { options } = this.props;\n const { maplink } = this.state[id];\n if (maplink) {\n // If we're on small screen, or the admin option is set (no matter screen size),\n // let's close the DocumentHandler window\n if (getIsMobile() || options.closePanelOnMapLinkOpen) {\n this.#closeDocumentWindow();\n }\n this.#handleShowMapLayers(this.state[id].maplink);\n }\n };\n\n // The panel-menu buttons can contain several \"connections\" (external-link, map-link, and document)\n // Make sure to fire each handler, the handler itself checks if a connection is present.\n #handleSubMenuClicked = (id) => {\n // Remember, the handlers below wont do anything if the connection value is nullish.\n this.#handleOpenDocumentFromPanelMenu(id);\n this.#handleExternalLinkClicked(id);\n this.#handleShowMapLayersFromPanelMenu(id);\n this.#setItemStateProperties(id);\n };\n\n #handleExternalLinkClicked = (id) => {\n const { app } = this.props;\n const { link } = this.state[id];\n if (link) {\n window.open(this.state[id].link, \"_blank\");\n app.globalObserver.publish(\"core.onlyHideDrawerIfNeeded\");\n }\n };\n\n //---------------------------------------------------\n\n #setClickedItemProperties = (clickedItem) => {\n let newItem = { ...clickedItem };\n return {\n ...clickedItem,\n colored: !isExpandedTopLevelItem(newItem),\n selected: !newItem.hasSubMenu,\n expandedSubMenu: newItem.hasSubMenu\n ? !newItem.expandedSubMenu\n : newItem.expandedSubMenu,\n };\n };\n\n #setNonClickedItemProperties = (item, currentState, clickedItem) => {\n const idsToColor = getItemIdsToColor(clickedItem, currentState);\n return {\n ...item,\n colored: idsToColor.indexOf(item.id) !== -1,\n expandedSubMenu:\n clickedItem.allParents.indexOf(item.id) !== -1\n ? true\n : item.expandedSubMenu,\n selected: clickedItem.hasSubMenu ? item.selected : false,\n };\n };\n\n //Important to create new state and items to not mutate state directly\n #setItemStateProperties = (idClicked) => {\n return new Promise((resolve) => {\n const currentState = { ...this.state };\n const clickedItem = currentState[idClicked];\n const newState = Object.values(currentState).reduce((items, item) => {\n const isClickedItem = item.id === idClicked;\n if (isClickedItem) {\n return {\n ...items,\n [item.id]: this.#setClickedItemProperties(item),\n };\n } else {\n return {\n ...items,\n [item.id]: this.#setNonClickedItemProperties(\n item,\n currentState,\n clickedItem\n ),\n };\n }\n }, {});\n\n this.setState(newState, resolve);\n });\n };\n\n #clearPanel = () => {\n let newState = Object.values({ ...this.state }).reduce((state, item) => {\n let newItem = { ...item };\n newItem.colored = false;\n newItem.selected = false;\n return { ...state, [newItem.id]: newItem };\n }, {});\n\n this.setState(newState);\n };\n\n #scrollToMenuItem = async (scrollOffset) => {\n scroll.scrollTo(scrollOffset, {\n containerId: \"panelListWrapper\",\n smooth: false,\n isDynamic: true,\n delay: 0,\n });\n };\n\n #setDocument = (documentName = null, headerIdentifier = null) => {\n const { localObserver } = this.props;\n localObserver.publish(\"set-active-document\", {\n documentName: documentName,\n headerIdentifier: headerIdentifier,\n });\n };\n\n /*\n Large maplinks can be slow and cause the application to hang. This delay is a workaround in order\n allow the other tasks such as closing the document and displaying a snackbar to run before the\n application hangs.\n */\n #delayAndFlyToMapLink = async (maplink) => {\n await delay(100);\n this.props.localObserver.publish(\"fly-to\", maplink);\n };\n\n #getNextUniqueId = () => {\n this.internalId += 1;\n return this.internalId;\n };\n\n render() {\n const { app, localObserver } = this.props;\n return (\n \n \n \n );\n }\n}\n\nexport default PanelMenuView;\n","import React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport { withTheme } from \"@emotion/react\";\nimport Icon from \"@mui/material/Icon\";\nimport ListItem from \"@mui/material/ListItem\";\nimport Collapse from \"@mui/material/Collapse\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\nimport PanelList from \"./PanelList\";\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nconst StyledListItemIcon = styled(ListItemIcon)(({ theme }) => ({\n minWidth: theme.spacing(3),\n}));\n\nconst StyledCollapseIcon = styled(ListItemIcon)(({ theme }) => ({\n \".MuiListItemIcon-root\": {\n minWidth: theme.spacing(4),\n },\n}));\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\n overflowWrap: \"break-word\",\n \".MuiListItem-root\": {\n borderLeft: `${theme.spacing(1)} solid ${theme.palette.background.paper}`,\n \"&.Mui-selected\": {\n borderLeftColor: theme.palette.action.selected,\n },\n \"&.Mui-selected:hover\": {\n borderLeftColor: theme.palette.action.selected,\n },\n \"&:hover\": {\n borderColor: theme.palette.action.hover,\n },\n },\n}));\n\nclass PanelMenuListItem extends React.PureComponent {\n #getListTitle = () => {\n const { title } = this.props;\n return {title};\n };\n\n #getCollapseIcon = () => {\n const { title, expanded } = this.props;\n\n return expanded ? (\n \n {!title && Minimera submeny}\n \n \n ) : (\n \n {!title && Maximera submeny}\n \n \n );\n };\n\n #getListIcon = () => {\n const { title, icon } = this.props;\n return (\n \n {!title && {icon.descriptiveText}}\n \n {icon.materialUiIconName}\n \n \n );\n };\n\n #hasSubMenu = () => {\n const { subMenuItems } = this.props;\n return subMenuItems && subMenuItems.length > 0;\n };\n\n #handleMenuButtonClick = (type, id) => {\n const { localObserver } = this.props;\n localObserver.publish(`${type}-clicked`, id);\n };\n\n #getMenuItemStyle = () => {\n const { theme, level, color, colored } = this.props;\n const hasSubMenu = this.#hasSubMenu();\n return colored\n ? {\n paddingLeft: theme.spacing(1 + level * 3),\n borderLeft: `${theme.spacing(1)} solid ${color}`,\n paddingRight: hasSubMenu ? 0 : theme.spacing(1),\n }\n : {\n paddingLeft: theme.spacing(1 + level * 3),\n paddingRight: hasSubMenu ? 0 : theme.spacing(1),\n };\n };\n\n render() {\n const { type, selected, subMenuItems, expanded, icon, level, title, id } =\n this.props;\n const hasSubMenu = this.#hasSubMenu();\n return (\n <>\n {\n this.#handleMenuButtonClick(type, id);\n }}\n sx={this.#getMenuItemStyle()}\n >\n {icon ? this.#getListIcon() : null}\n {title && this.#getListTitle()}\n {hasSubMenu && this.#getCollapseIcon()}\n \n {hasSubMenu && (\n \n )}\n >\n );\n }\n}\n\nexport default withTheme(PanelMenuListItem);\n","const getTopLevelItem = (clickedItem, allItems) => {\n if (!clickedItem.parentId) {\n return clickedItem;\n } else {\n return Object.values(allItems).find((item) => {\n return item.allChildren.indexOf(clickedItem.id) > -1;\n });\n }\n};\n\nexport const getItemIdsToColor = (clickedItem, allItems) => {\n const topLevelItem = getTopLevelItem(clickedItem, allItems);\n return [topLevelItem.id, ...topLevelItem.allChildren];\n};\n\nexport const isExpandedTopLevelItem = (item) => {\n return item.hasSubMenu && item.expandedSubMenu && item.level === 0;\n};\n\nexport const findMenuItemWithDocumentName = (documentName, itemsToSearch) => {\n return Object.values(itemsToSearch).find((item) => {\n return item.document === documentName;\n });\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\nexports.default = _default;"],"names":["StyledIconContainer","styled","theme","display","alignItems","breakpoints","up","marginRight","spacing","DocumentHandler","React","constructor","props","super","state","document","documentWindowMaximized","showPrintWindow","chapters","documentColor","model","componentDidUpdate","prevProps","this","palette","mode","setState","prevState","customTheme","getThemeWithCustomThemeApplied","typography","setBottomMarginsForTypographyVariants","createTheme","deepMerge","documentHandlerTheme","forEach","key","marginBottom","dynamicallyImportCustomFont","dynamicImportUrls","options","customFont","rel","type","href","dynamicallyImportIconFonts","iconFonts","renderDrawerContent","app","localObserver","addDrawerToggleButton","globalObserver","publish","title","link","value","ButtonIcon","drawerButtonIcon","getIcon","MenuIcon","caption","drawerButtonTitle","drawerTitle","order","showDocument","documentFileName","setActiveDocument","then","hideOtherPlugins","onWindowHide","documentName","headerIdentifier","onMinimize","onMaximize","Promise","resolve","reject","getDocuments","togglePrintWindow","iconName","className","Observer","mapViewModel","MapViewModel","appModel","map","searchInterface","getSearchMethods","DocumentHandlerModel","menu","menuConfig","resolveSearchInterface","init","loadedDocumentModel","fetchCustomThemeJson","render","withTheme","settings","convertMapSettingsUrlToOlSettings","inputUrl","params","URLSearchParams","center","has","get","getView","getCenter","zoom","getZoom","layers","groupLayers","error","console","bindSubscriptions","subscribe","url","mapSettings","setLayerVisibilityFromParams","flyTo","view","animate","duration","PanelList","getMenuItemType","item","icon","id","level","color","itemRef","subMenuItems","expanded","expandedSubMenu","colored","selected","menuItemIds","reduce","subItemId","subItem","Object","values","items","find","i","length","maplink","style","position","disablePadding","role","component","filter","PanelMenuView","internalId","componentDidMount","getNormalizedMenuState","menuItem","itemMatchesOpenDocument","documentOnStart","assign","hasSubMenu","subMenuItem","itemClicked","findMenuItemWithDocumentName","current","offsetTop","mapLink","displayLoadingOnMapLinkOpen","getIsMobile","closePanelOnMapLinkOpen","window","open","clickedItem","newItem","isExpandedTopLevelItem","currentState","idsToColor","getItemIdsToColor","indexOf","allParents","idClicked","newState","async","scroll","scrollOffset","containerId","smooth","isDynamic","delay","sx","maxHeight","overflow","StyledListItemIcon","ListItemIcon","minWidth","StyledCollapseIcon","StyledListItem","ListItem","overflowWrap","borderLeft","background","paper","borderLeftColor","action","borderColor","hover","PanelMenuListItem","visuallyHidden","descriptiveText","fontSize","materialUiIconName","paddingLeft","paddingRight","divider","button","ref","size","disableGutters","onClick","in","timeout","allItems","topLevelItem","parentId","allChildren","getTopLevelItem","itemsToSearch","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}