@reltio/remotes 1.4.1501 → 1.4.1503
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1777.js +1 -1
- package/2114.js +1 -1
- package/2180.js +1 -1
- package/2180.js.map +1 -1
- package/2727.js +1 -1
- package/2727.js.map +1 -1
- package/2758.js +1 -1
- package/2758.js.map +1 -1
- package/2890.js +1 -1
- package/2951.js +1 -1
- package/2951.js.map +1 -1
- package/3118.js +1 -1
- package/3270.js +1 -1
- package/3294.js +1 -1
- package/3396.js +1 -1
- package/3469.js +1 -1
- package/3540.js +1 -1
- package/4217.js +1 -1
- package/4217.js.map +1 -1
- package/4407.js +1 -1
- package/4469.js +1 -1
- package/4843.js +1 -1
- package/5400.js +1 -1
- package/5605.js +1 -1
- package/5706.js +1 -1
- package/5709.js +1 -1
- package/5740.js +2 -0
- package/5740.js.map +1 -0
- package/5756.js +1 -1
- package/6057.js +1 -1
- package/6057.js.map +1 -1
- package/6103.js +1 -1
- package/6233.js +1 -1
- package/6312.js +1 -1
- package/6669.js +1 -1
- package/6880.js +1 -1
- package/8051.js +1 -1
- package/8443.js +1 -1
- package/9113.js +1 -1
- package/9258.js +1 -1
- package/9258.js.map +1 -1
- package/929.js +1 -1
- package/9481.js +1 -1
- package/9561.js +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/901.js +0 -2
- package/901.js.map +0 -1
package/2180.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2180.js","mappings":"uXAGA,MAcA,EAduB,SAACA,GAA2C,IAAhCC,EAAgC,uDAAT,KACtD,MAAMC,GAAiBC,EAAAA,EAAAA,aAAW,CAACC,EAAgBC,KAC3BC,EAAAA,EAAAA,KAEhB,kBAACN,EAAD,KAAeI,EAAf,CAA+BC,IAAKA,KAEpCJ,GAAwB,kBAACA,EAAD,KAA0BG,EAA1B,CAA0CC,IAAKA,OAK/E,OADAH,EAAeK,YAAc,iBACtBL,I,mGCZJ,MAAMM,GAAYC,E,SAAAA,GAAW,CAChCC,aAAc,CACV,UAAW,CACPC,gBAAiB,gBAGzBC,WAAY,CACRC,WAAY,uBAEhBC,SAAU,CACNC,UAAW,mB,gNCAnB,MAeA,EAf2BC,IACvB,MAAMC,EAAST,KACT,SAACM,EAAD,UAAWI,GAA4BF,EAAdG,E,kXAA/B,CAA6CH,EAA7C,0BACA,OACI,kBAACI,EAAA,EAAD,GACIC,KAAMC,EAAAA,EACNC,KAAK,MACLC,eAAa,EACbC,cAAeC,GAAAA,CAAWT,EAAOL,WAAY,CAAC,CAACK,EAAOH,UAAWA,IACjEI,UAAWQ,GAAAA,CAAWR,EAAWD,EAAOP,eACpCS,M,mGCpBT,MAAMX,GAAYC,E,SAAAA,GAAW,CAChCkB,QAAS,CACLC,UAAW,OACXC,QAAS,WACTC,WAAY,QAEhBC,MAAO,CACHC,SAAU,OACVC,WAAY,SACZH,WAAY,UACZI,WAAY,SACZC,SAAU,SACVC,aAAc,c,gNCHtB,MAYA,EAZwB,IAAuE,IAAtE,MAACL,EAAQ,GAAT,SAAaM,EAAW,KAAxB,QAA8BC,EAAU,IAA8B,EAAvBnB,E,kXAAuB,mCAC3F,MAAMF,EAAST,IACf,OACI,kBAAC+B,EAAA,EAAD,GAASrB,UAAWoB,EAAQE,KAAMF,QAAS,CAACE,KAAMvB,EAAOU,UAAcR,GACnE,kBAAC,EAAAsB,WAAD,CAAYvB,UAAWoB,EAAQP,MAAOO,QAAS,CAACE,KAAMvB,EAAOc,OAAQW,QAAQ,MACxEC,IAAAA,KAAUZ,IAEdM,K,6MCdN,MAMMO,EAAsB,CAACC,EAA6CC,KAC7E,MAAMC,EAAQF,EAAQG,kBAAkBC,QAAQH,GAChD,GAAIC,GAAS,EAAG,OAAOF,EAAQG,kBAAkB,EAAID,IAG5CG,EAAcC,GAAkB,GAAER,IAAAA,KAAUQ,EAAM,SAASR,IAAAA,KAAUQ,EAAM,QA4C3EC,EAA0BP,GAAyC,WAAUA,EAAQQ,YACrFC,EAAuB,CAACT,EAAqCU,IACrE,WAAUV,EAAQQ,mBAAmBE,EAAMC,UAsBnCC,EAA6C,CAACC,EAAwBC,KAC/E,IAAIC,EAAQF,EACZ,IAAK,MAAMG,KAAWF,EAClBC,EAAQA,EAAME,MAAO,IAAGD,KAAWE,KAAM,KAAIF,MAAYA,MAE7D,OAAOD,G,eCtFJ,MAAMpD,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCjC,MAAO,CACHkC,aAAc,OACdC,MAAOF,EAAMG,QAAQC,QACrBpC,SAAU,OACVF,WAAY,QAEhBuC,MAAO,CACHC,YAAa,MACbC,WAAY,oBACZvC,SAAU,OACVkC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1B3C,WAAY,QAEhB4C,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,Y,wHCQjB,MAAMC,EAAgB,IAAiC,IAAhC,QAAChC,EAAD,UAAU3B,GAAsB,EAC1D,MAAMD,EAAST,IAETsE,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBC,GAAWF,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBE,GAAcC,EAAAA,EAAAA,YAAWC,EAAAA,GAqG/B,OAAO,kBAAC,EAAAC,IAAD,CAAKnE,UAAWA,GAnGJ,MACf,OAAQ2B,EAAQyC,YACZ,KAAKC,EAAAA,IAAAA,iBAA2C,CAC5C,MAAMC,GAAmBC,EAAAA,EAAAA,KAA8B5C,EAAQ6C,SAAUZ,EAAOa,MAC1EC,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAUO,GACvD,OACI,oCACI,kBAAC,EAAA/C,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,wBAChD,kBAAC,EAAAF,WAAD,CAAYvB,UAAWD,EAAOoD,OAAQuB,MAAAA,OAAtC,EAAsCA,EAAevB,QAIjE,KAAKkB,EAAAA,IAAAA,mBAA6C,CAC9C,MAAMO,EAAkBjD,EAAQG,kBAAkB+C,MAAKC,EAAAA,EAAAA,YAAW,gCAC5DR,GAAmBC,EAAAA,EAAAA,KAA8B5C,EAAQ6C,SAAUI,GACnEF,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAUO,GACvD,OACI,oCACI,kBAAC,EAAA/C,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,wBAChD,kBAAC,EAAAF,WAAD,CAAYvB,UAAWD,EAAOoD,OAAQuB,MAAAA,OAAtC,EAAsCA,EAAevB,QAIjE,KAAKkB,EAAAA,IAAAA,OACD,OACI,oCACI,kBAAC,EAAA9C,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,sBAChD,kBAACsD,EAAA,EAAD,CACI/E,UAAWQ,GAAAA,CAAWT,EAAOoD,MAAOpD,EAAOyD,MAC3Cd,OAAOsC,EAAAA,EAAAA,KAAoBpB,KAE1BqB,EAAAA,EAAAA,KAASrB,EAAOT,SAKjC,KAAKkB,EAAAA,IAAAA,SAAmC,CACpC,MAAMa,EAAmBxD,EAAoBC,EAASiC,EAAOuB,KACvDC,E,8UAAgB,CAAH,GACXpB,EAAYkB,IAAqB,GADtB,CAEfC,IAAKD,IAGT,OACI,oCACI,kBAAC,EAAA3D,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,uBAChD,kBAAC,EAAAF,WAAD,CAAYvB,UAAWD,EAAOoD,OAC1B,kBAAC4B,EAAA,EAAD,CAAe/E,UAAWD,EAAOyD,KAAMd,OAAOsC,EAAAA,EAAAA,KAAoBpB,KAC7DqB,EAAAA,EAAAA,KAASrB,EAAOT,QAEpB+B,GACG,oCACM,IAAGzD,IAAAA,KAAU,SACf,kBAACsD,EAAA,EAAD,CAAe/E,UAAWD,EAAOyD,KAAMd,OAAOsC,EAAAA,EAAAA,KAAoBI,IAC7DA,EAAcjC,OACT8B,EAAAA,EAAAA,KAASG,EAAcjC,QACvBkC,EAAAA,EAAAA,KAAYD,OAQ9C,KAAKf,EAAAA,IAAAA,gBAA0C,OAC3C,MAAMa,EAAmBxD,EAAoBC,EAASiC,EAAOuB,KACvDC,EAAgB,CAClBD,IAAKD,EACL/B,MAAK,UAAEa,EAAYkB,UAAd,aAAE,EAA+B/B,OAG1C,OACI,oCACI,kBAAC,EAAA5B,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,8BAChD,kBAAC,EAAAF,WAAD,CAAYvB,UAAWD,EAAOoD,OAC1B,kBAAC4B,EAAA,EAAD,CAAe/E,UAAWD,EAAOyD,KAAMd,OAAOsC,EAAAA,EAAAA,KAAoBpB,KAC7DqB,EAAAA,EAAAA,KAASrB,EAAOT,QAGpB+B,GACG,oCACM,IAAGzD,IAAAA,KAAU,UACf,kBAACsD,EAAA,EAAD,CAAe/E,UAAWD,EAAOyD,KAAMd,OAAOsC,EAAAA,EAAAA,KAAoBI,IAC7DA,EAAcjC,OACT8B,EAAAA,EAAAA,KAASG,EAAcjC,QACvBkC,EAAAA,EAAAA,KAAYD,OAQ9C,QACI,OAAO,OAKgBE,K,eClIhC,MAAMhG,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF0B,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVF,WAAY,OACZ2E,UAAW,kBCONC,EAAiB,IAAiC,IAAhC,QAAC7D,EAAD,UAAU3B,GAAsB,EAC3D,MAAMD,EAAST,IACTmG,GAAQxB,EAAAA,EAAAA,YAAWyB,EAAAA,GAEzB,OACI,kBAAC,EAAAnE,WAAD,CAAYvB,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IJFxB,SAC3BsD,EACAb,GAGC,IAFDkD,EAEC,uDAF0CjD,GAAUA,EACrDkD,EACC,uDADS,IAEV,MAAMC,EAAM,GACZ,IAAIC,EAAa,GACbC,GAAU,EAEd,IAAK,IAAIC,EAAI,EAAGA,GAAK1C,EAAK2C,OAAQD,IAAK,CACnC,MAAME,EAAmB5C,EAAK0C,GACxBG,EAAgB7C,EAAK0C,EAAI,GACzBI,EAAkBJ,IAAM1C,EAAK2C,OAAS,EAE5CH,GAAcI,EAEVA,IAAqBN,GAAiB,IAANI,IAChCD,GAAU,GAEVA,GAAWtD,EAAS4D,SAASP,EAAWQ,MAAMV,EAAQK,WACtDF,GAAU,EACVF,EAAIU,KAAKZ,EAAUG,IACnBA,EAAa,IAGbK,IAAkBP,IAClBG,GAAU,EACVF,EAAIU,KAAKT,GACTA,EAAa,IAGbM,GACAP,EAAIU,KAAKT,GAIjB,OAAOD,EIlCEW,CAAgB7E,EAAQ8E,QAAS9E,EAAQ+E,YAAa/D,IACnD,MAAMgE,EAAOlB,EAAMZ,MAAM8B,GAASA,EAAKC,WAAajE,EAAQ2D,MAAM,KAClE,OAAOK,EAAO,kBAAC,EAAAE,KAAD,CAAMC,KAAO,UAASH,EAAKI,SAAUpE,GAAkBA,KACtEqE,KAAI,CAACC,EAAIC,IACR,kBAAC,EAAAC,SAAD,CAAUC,IAAKF,GAAMD,O,eCtB9B,MAAM3H,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF+F,MAAO,OACPC,OAAQ,OACRxG,SAAU,OACVkC,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1B9H,gBAAiB,gC,gNCElB,MAAM+H,EAAS,IAA4C,IAA3C,UAACxH,EAAD,SAAYmB,GAA+B,EAAlBrB,E,kXAAkB,6BAC9D,MAAMC,EAAST,IACf,OACI,kBAAC,IAAD,KAAeQ,EAAf,CAAsBE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,KACxBmB,ENRhCyB,MAAM,KACNoE,KAAKS,GAASA,EAAK,GAAGC,gBACtB7E,KAAK,M,yBONP,MAAMvD,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF+F,MAAO,OACP5H,gBAAiB,OACjBkI,WAAY,SACZ,aAAc,CACV7G,SAAU,QAEd,iBAAkB,CACdH,QAAS,YACTiH,OAAQ,oCAEZ,WAAY,CACRC,aAAc,MACdD,OAAQ,6BACRjH,QAAS,YACTmH,QAAS,EACT7G,SAAU,mBAEd,iBAAkB,CACdN,QAAS,QACTkH,aAAc,MACdpI,gBAAiB,qBACjBsI,UAAW,6FACXlI,UAAW,qBAEf,uBAAwB,CACpBmI,UAAW,QACXC,UAAW,UAEf,uBAAwB,CACpBtH,QAAS,WACTqC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVnB,WAAYmD,EAAMoF,YAAYC,OAAO,CAAC,qBACtC,sBAAuB,CACnB1I,gBAAiB,sBAI7BkD,QAAS,CACLyF,SAAU,WACVC,OAAQ,EACRrF,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B6E,WAAY,iFACZC,cAAe,Y,gNCpChB,MAAMC,EAAwB,IAA4C,IAA3C,SAACC,EAAD,UAAWzI,GAAgC,EAAlBF,E,kXAAkB,6BAC7E,MAAMC,EAAST,IACTmG,GAAQxB,EAAAA,EAAAA,YAAWyB,EAAAA,GAWzB,OACI,kBAAC,IAAD,KAAmB5F,EAAnB,CAA0B2I,SAVT,CACjBC,EACAhG,EACAF,EACAC,KAEAgG,EAAS/F,EAAOF,GAAgBmG,EAAAA,EAAAA,MAAKlG,EAASuE,KAAI,QAAC,QAAC4B,GAAF,SAAeA,EAAQtC,MAAM,SAI7BtG,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,KACjF,kBAAC,IAAD,CACI4F,QAAQ,IACRiD,KAAMpD,EAAMuB,KAAI,QAAC,SAACJ,GAAF,QAAiB,CAACkC,GAAIlC,EAAUgC,QAAShC,MACzDmC,iBAAkB,CAACL,EAAG9B,IAAc,IAAGA,IACvCoC,kBAAkB,EAClBhJ,UAAWD,EAAO4C,YCzBrBrD,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,QAAC,UAAC2H,GAAF,QAA+B,CACjCtI,QAASsI,EAAY,gBAAkB,mBACvCpB,aAAc,MACdpI,gBAAiBwJ,EAAY,cAAgB,yBAEjDC,UAAW,QAAC,UAACD,GAAF,QAA+B,CACtCE,SAAUF,EAAY,OAAS,sBAEnCG,KAAM,CACFrG,aAAc,GAElBU,KAAM,CACFmF,QAAS,OACTS,WAAY,UAEhBC,OAAQ,CACJC,YAAa,OAEjBC,QAAS,QAAC,UAACP,GAAF,QAA+B,CAACQ,WAAYR,EAAY,IAAM,OAAQS,UAAW,QAC1FC,OAAQ,CACJ,cAAe,CACXF,WAAY,UCGlBG,EAAkBC,IACpB,OAAQA,GACJ,IAAK,OACD,OAAOpI,IAAAA,KAAU,YACrB,IAAK,WACD,OAAOA,IAAAA,KAAU,sCACrB,QACI,MAAO,KAgCNqI,EAAkB,IAYlB,IAZmB,SAC5BC,EAD4B,UAE5B/J,EAF4B,IAG5BmF,EAH4B,kBAI5BrD,EAJ4B,WAK5BsC,EAL4B,UAM5B4F,EAN4B,QAO5BrI,EAP4B,MAQ5BU,EAR4B,iBAS5B4H,EAT4B,eAU5BC,EAV4B,SAW5BC,GACS,EACT,MAAMlB,EAAYgB,GAAoBC,EAChCnK,EAAST,EAAU,CAAC2J,UAAAA,KAEnBmB,EAASC,IAAcC,EAAAA,EAAAA,WAAS,GACjC1D,GAAW/C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACvB,YACFyG,EADE,cAEFC,EAFE,QAGFC,EAHE,YAIFC,EAJE,UAKFC,EALE,gBAMFC,EANE,mBAOFC,EAPE,kBAQFC,IACA7G,EAAAA,EAAAA,YAAW8G,EAAAA,GAETC,EV7BsB,KAA+E,IAA9E,QAACrJ,EAAD,MAAUU,EAAV,iBAAiB4H,EAAjB,eAAmCC,GAA2C,EAC3G,OAAIe,EAAAA,EAAAA,OAAMtJ,GAd2B,cAiBjCsI,EACO/H,EAAuBP,GAE9BuI,EACO9H,EAAqBT,EAASU,GApBXV,CAAAA,GAAyC,WAAUA,EAAQQ,sBAsBlF+I,CAAkBvJ,IUmBNwJ,CAAiB,CAACxJ,QAAAA,EAASU,MAAAA,EAAO4H,iBAAAA,EAAkBC,eAAAA,IACjEkB,EAxCqB,KAAgF,IAA/E,QAACzJ,EAAD,MAAUU,EAAV,iBAAiB4H,EAAjB,eAAmCC,GAA4C,EAC3G,MAAMmB,EAAiBpB,EAAmBtI,EAAUuI,EAAiB7H,EAAQ,MACtEoE,QAASjE,EAAiB,GAAIkE,WAAYjE,EAAW,IAAM4I,GAAkB,GACpF,MAAO,CACH3I,MAAOH,EAA2CC,EAAgBC,GAClED,eAAAA,EACAC,SAAAA,IAkCwB6I,CAAuB,CAAC3J,QAAAA,EAASU,MAAAA,EAAO4H,iBAAAA,EAAkBC,eAAAA,KAChF,MACFxH,EAAQ0I,EAAoB1I,MAD1B,eAEFF,EAAiB4I,EAAoB5I,eAFnC,SAGFC,EAAW2I,EAAoB3I,UAC/BmI,EAAgBzF,EAAK6F,GAEnBO,EAA4B,KAAjB7I,EAAM8I,OACjBC,EAAoBrB,GAAWmB,EAC/B1B,EAASlI,MAAAA,OAAH,EAAGA,EAASkI,OAElB6B,EAAa,KACfvB,MAAAA,GAAAA,IACAW,EAAkB3F,EAAK6F,KA4D3BW,EAAAA,EAAAA,YAAU,KACF3B,GACAA,EAAU4B,QAAQC,WAEvB,CAAC7B,EAAWyB,IAEf,MAAMK,EAAa7C,EAAY,QAAU,SAEzC,OACI,kBAAC,EAAA9E,IAAD,CAAKnE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,0BAAM+L,SA9DQC,IAClBA,EAAEC,kBACcC,EAAAA,EAAAA,MAAK,CACjB,EACIC,EAAAA,EAAAA,SAAQxK,GACR,IACI6I,EAAc,CACV/D,QAASjE,EACTkE,WAAYjE,EACZ2B,WAAYA,EACZe,IAAAA,EACArD,kBAAAA,KAGZ,EACIqK,EAAAA,EAAAA,QAAOlC,GACP,IACIS,EAAY,CACRjE,QAASjE,EACTkE,WAAYjE,EACZN,UAAWR,EAAQQ,UACnBiC,WAAYA,EACZgI,QAASzK,EAAQyK,QACjBtK,kBAAAA,EACAqD,IAAAA,KAGZ,EACIgH,EAAAA,EAAAA,QAAOjC,GACP,IACIS,EAAU,CACNlE,QAASjE,EACTkE,WAAYjE,EACZN,UAAWR,EAAQQ,UACnBG,QAASD,EAAMC,WAG3B,CACI+J,EAAAA,EACA,IACI9B,EAAY,CACR9D,QAASjE,EACTkE,WAAYjE,EACZN,UAAWR,EAAQQ,UACnBmK,OAA2B,SAAnB3K,EAAQkI,OAAoB,OAAS,SAC7C1E,IAAAA,MAIToH,GAAUC,KAAKd,GAAYe,MAAMC,QAAQC,MAad3M,UAAWD,EAAOqJ,MAC5C,kBAAC,EAAAjF,IAAD,CAAKnE,UAAWD,EAAO0D,OACjBwF,GAAa,kBAAC,EAAD,CAAQ7H,QAAS,CAACE,KAAMvB,EAAOuJ,SAAU1C,GACxD,kBAAC4B,EAAD,CACIxI,UAAWD,EAAOmJ,UAClB0D,SAAUnC,EACVhC,SAzEC,CAAC/F,EAAeF,EAAwBC,IACzDoI,EAAmB1F,EAAK6F,EAAY,CAACtI,MAAAA,EAAOF,eAAAA,EAAgBC,SAAAA,IAyE5CsH,SAAUA,EACVrH,MAAOA,EACPmK,QAzEA,IAAMxC,GAAW,GA0EjByC,OAzED,IAAMzC,GAAW,GA0EhB0C,YAAanD,EAAeC,MAGnC4B,GACG,kBAAC,EAAAtH,IAAD,CAAKnE,UAAWD,EAAOyJ,SACnB,kBAAC,EAAAwD,OAAD,CACIhN,UAAWD,EAAO4J,OAClBnI,QAAQ,YACRwB,MAAM,UACN4J,UAAWrB,GAAYd,EACvBhG,KAAK,SACLpE,KAAMyL,GAnKZ,EAACjC,EAAiBI,EAA4BC,IAC5DD,GAAoBC,EACbzI,IAAAA,KAAU,QAEN,SAAXoI,GAAgC,aAAXA,EACdpI,IAAAA,KAAU,SAGdA,IAAAA,KAAU,WA6JQwL,CAAcpD,EAAQI,EAAkBC,IAE7C,kBAAC,EAAA8C,OAAD,CACIJ,SAAUnC,EACVyC,QA7FH,IAAMxB,IA8FH1L,UAAWD,EAAO4J,OAClBnI,QAAQ,WACRwB,MAAM,UACN3C,KAAMyL,GAELrK,IAAAA,KAAU,eCvN1BnC,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCqK,OAAQ,CACJvE,QAAS,QAEbU,OAAQ,CACJC,YAAa,OAEjB3C,SAAU,CACN7D,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBwM,UAAW,CACP1D,UAAW,MACXH,YAAa,MACbvG,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVF,WAAY,OACZI,WAAY,UAEhBqM,KAAM,CACF5D,WAAY,QAEhB6D,cAAe,CACX5D,UAAW,SAEf6D,QAAS,CACL7D,UAAW,QAEf8D,aAAc,CACVnF,OAAQ,mBAEZmB,QAAS,CACLE,UAAW,OACX3G,aAAc,OACd6F,QAAS,OAET,sBAAuB,CACnBa,WAAY,SAGpBE,OAAQ,CACJ7I,SAAU,OACVF,WAAY,YCnBP6M,EAAU,IAA8E,IAA7E,QAACC,EAAD,UAAU1N,EAAV,IAAqBmF,EAArB,QAA0BxD,EAA1B,kBAAmCG,EAAnC,WAAsDsC,GAAuB,EACjG,MAAMrE,EAAST,IACTyK,GAAW4D,EAAAA,EAAAA,UACX/G,GAAmB/C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAC/B,UAAC3B,EAAD,UAAYyL,EAAZ,YAAuBC,GAAelM,EACtCmM,EAAmBF,IAAchH,GACjC,cAACmH,EAAD,aAAgBC,EAAhB,QAA8BvD,EAA9B,cAAuCwD,EAAvC,mBAAsDpD,EAAtD,gBAA0ED,IAC5E3G,EAAAA,EAAAA,YAAW8G,EAAAA,GAETC,EAAa9I,EAAuBP,IACpC,UAACsH,GAAa2B,EAAgBzF,EAAK6F,GAEnCkD,GAAyBC,EAAAA,EAAAA,cAC1BzL,GAAmBmI,EAAmB1F,EAAK6F,EAAY,CAAC/B,UAAWvG,KACpE,CAACsI,EAAYH,EAAoB1F,KAGrCwG,EAAAA,EAAAA,YAAU,KACF1C,GACAc,EAAS6B,QAAQwC,UAEtB,CAACnF,IAEJ,MAAMoF,GAAYC,EAAAA,EAAAA,UACd,IAAM,CACF,CACIhL,KAAM7B,IAAAA,KAAU,QAChByL,QAAS,IAAMgB,GAAuB,IAE1C,CACI5K,KAAM7B,IAAAA,KAAU,UAChByL,QAAS,IAAMe,EAAc,CAAC9I,IAAAA,EAAKhD,UAAAA,OAG3C,CAAC8L,EAAe9I,EAAKhD,EAAW+L,IAU9BK,EACF,kBAACzE,EAAD,CACIC,SAAUA,EACV5E,IAAKA,EACLrD,kBAAmBA,EACnBsC,WAAYA,EACZ+F,SAAU,IAAM+D,GAAuB,GACvCjE,iBAAkBhB,EAClBtH,QAASA,IAGjB,OACI,kBAAC,EAAAwC,IAAD,CAAKnE,UAAWA,GACZ,kBAAC,EAAAmE,IAAD,CAAKnE,UAAWD,EAAOoN,QACnB,kBAAC,EAAD,CAAQ/L,QAAS,CAACE,KAAMvB,EAAOuJ,SAAUsE,GACzC,kBAAC,EAAAzJ,IAAD,CAAKkD,MAAM,QACP,kBAAC,EAAA9F,WAAD,CAAYvB,UAAWD,EAAO6G,UAAWgH,IAE7C,kBAAC,EAAArM,WAAD,CAAYvB,UAAWD,EAAOqN,WAAYpL,EAAW6L,IACpDC,GACG,kBAACU,EAAA,EAAD,CACIC,gBAAiBC,EAAAA,EACjBC,YAAa,CACTxO,KAAMyO,EAAAA,EACNC,aAAcpN,IAAAA,KAAU,cAE5BqN,aAAc,CAACC,eAAgB,CAACzN,KAAMvB,EAAOyN,eAC7Ca,UAAWA,EACXW,OAAO,gCAInB,kBAAC,EAAA7K,IAAD,CAAKnE,UAAWD,EAAOsN,MACnB,kBAAC1J,EAAD,CAAehC,QAASA,EAAS3B,UAAWD,EAAOuN,gBAClDrE,EAAYsF,EAAkB,kBAAC/I,EAAD,CAAgB7D,QAASA,EAAS3B,UAAWD,EAAOwN,UACnF,kBAAC,EAAApJ,IAAD,CAAKnE,UAAWD,EAAOyJ,SACnB,kBAAC,EAAA3C,KAAD,CAAM7G,UAAWD,EAAO4J,OAAQuD,QAASQ,EAASuB,UAAU,UACvDxN,IAAAA,KAAU,UAEK,SAAnBE,EAAQkI,QACL,kBAAC,EAAAhD,KAAD,CAAM+F,SAAUnC,EAASzK,UAAWD,EAAO4J,OAAQuD,QA/CjD,KAClBa,EAAc,CAAC5L,UAAAA,EAAWgD,IAAAA,KA8CiE8J,UAAU,UAChFxN,IAAAA,KAAU,YAGC,aAAnBE,EAAQkI,QACL,kBAAC,EAAAhD,KAAD,CAAM+F,SAAUnC,EAASzK,UAAWD,EAAO4J,OAAQuD,QAhDlD,KACjBc,EAAa,CAAC7L,UAAAA,EAAWgD,IAAAA,KA+CiE8J,UAAU,UAC/ExN,IAAAA,KAAU,gBCpH1BnC,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACFsH,QAAS,OACTjI,QAAS,MACTkH,aAAc,MACdpI,gBAAiB,wBAErB6J,OAAQ,CACJC,YAAa,OAEjB4D,OAAQ,CACJvE,QAAS,OACT7F,aAAc,OAElB6D,SAAU,CACN5D,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhB2M,QAAS,CACLxK,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVF,WAAY,QAEhBwM,UAAW,CACPpK,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVF,WAAY,OACZI,WAAY,UAEhBkO,OAAQ,CACJzF,WAAY,MACZzG,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVqO,UAAW,SACXvO,WAAY,YCbPwO,EAAiB,IAAwD,IAAvD,UAACpP,EAAD,MAAYqC,EAAZ,IAAmB8C,EAAnB,QAAwBxD,EAAxB,UAAiCqI,GAAsB,EAClF,MAAMD,GAAW4D,EAAAA,EAAAA,WACX,UAACC,EAAD,OAAYtB,EAAZ,YAAoBuB,GAAexL,EAEnCgN,EAAiBzB,KADE/J,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAG/B,YAACwL,EAAD,mBAAczE,EAAd,gBAAkCD,IAAmB3G,EAAAA,EAAAA,YAAW8G,EAAAA,GAEhEC,EAAa5I,EAAqBT,EAASU,IAC3C,UAAC4G,GAAa2B,EAAgBzF,EAAK6F,GAEnCuE,GAAuBpB,EAAAA,EAAAA,cACxBzL,GAAmBmI,EAAmB1F,EAAK6F,EAAY,CAAC/B,UAAWvG,KACpE,CAACsI,EAAYH,EAAoB1F,KAGrCwG,EAAAA,EAAAA,YAAU,KACF1C,GACAc,EAAS6B,QAAQwC,UAEtB,CAACnF,IAEJ,MAAMlJ,EAAST,IAET+O,GAAYC,EAAAA,EAAAA,UACd,IAAM,CACF,CACIhL,KAAM7B,IAAAA,KAAU,QAChByL,QAAS,IAAMqC,GAAqB,IAExC,CACIjM,KAAM7B,IAAAA,KAAU,UAChByL,QAAS,IAAMoC,EAAY,CAACnK,IAAAA,EAAKhD,UAAWR,EAAQQ,UAAWE,MAAAA,OAGvE,CAACiN,EAAanK,EAAKxD,EAAQQ,UAAWE,EAAOkN,IAG3ChB,EACF,kBAACzE,EAAD,CACIC,SAAUA,EACVC,UAAWA,EACX7E,IAAKA,EACLgF,SAAU,IAAMoF,GAAqB,GACrCrF,eAAgBjB,EAChB5G,MAAOA,EACPV,QAASA,IAIjB,OACI,kBAAC,EAAAwC,IAAD,CAAKnE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAD,CAAQoB,QAAS,CAACE,KAAMvB,EAAOuJ,SAAUsE,GACzC,kBAAC,EAAAzJ,IAAD,CAAKqL,SAAU,GACX,kBAAC,EAAArL,IAAD,CAAKnE,UAAWD,EAAOoN,QACnB,kBAAC,EAAA5L,WAAD,CAAYvB,UAAWD,EAAO6G,UAAWgH,GAE7B,YAAXtB,GACG,kBAAC,EAAA/K,WAAD,CAAYvB,UAAWD,EAAOmP,QAASzN,IAAAA,KAAU,uBAEzC,WAAX6K,GAAuB,kBAAC,EAAA/K,WAAD,CAAYvB,UAAWD,EAAOmP,QAASzN,IAAAA,KAAU,eAEjE,YAAX6K,IACIrD,EAAYsF,EAAkB,kBAAC/I,EAAD,CAAgBxF,UAAWD,EAAOwN,QAAS5L,QAASU,KACvF,kBAAC,EAAAd,WAAD,CAAYvB,UAAWD,EAAOqN,WAAYpL,EAAW6L,KAExDwB,GACG,kBAACb,EAAA,EAAD,CACIC,gBAAiBC,EAAAA,EACjBC,YAAa,CACTxO,KAAMyO,EAAAA,EACNC,aAAcpN,IAAAA,KAAU,cAE5B4M,UAAWA,EACXW,OAAO,iCClGd1P,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACF6H,SAAU,OACVxI,QAAS,qBAEb8O,SAAU,GACVC,eAAgB,CACZ3M,aAAc,OAElBqJ,QAAS,CACL3C,WAAY,QAEhB8E,gBAAiB,CACb9E,WAAY,QAEhB9H,QAAS,OCGAgO,GAAoBC,EAAAA,EAAAA,OAC7B,IAA2F,IAA1F,IAACzK,EAAD,kBAAMrD,EAAN,WAAyBsC,EAAzB,QAAqChD,EAArC,UAA8C4I,EAA9C,YAAyD6F,EAAzD,QAAsElO,GAAoB,EACvF,MAAMoI,GAAW4D,EAAAA,EAAAA,UACX5N,EAAST,EAAU,CAAC8B,QAAAA,IAMpBmN,EACF,kBAACzE,EAAD,CACI9J,UAAWD,EAAOwO,gBAClBxE,SAAUA,EACVC,UAAWA,EACX7E,IAAKA,EACLrD,kBAAmBA,EACnBsC,WAAYA,EACZzC,QAASA,IAIjB,OACI,kBAAC,EAAAwC,IAAD,CAAKnE,UAAWD,EAAOuB,MAClBK,GACG,oCACI,yBAAK3B,UAAWD,EAAO0P,SAAUtQ,IAAK0Q,GAClC,kBAACpC,EAAD,CACI9L,QAASA,EACTwD,IAAKA,EACLuI,QAxBJ,KAChB3D,EAAS6B,QAAQwC,SAwBGpO,UAAWD,EAAO4B,QAClBG,kBAAmBA,EACnBsC,WAAYA,IAEhB,kBAAC,EAAAD,IAAD,CAAKnE,UAAWD,EAAOqM,SAClBzK,EAAQyK,QAAQpF,KAAK3E,GAClB,kBAAC+M,EAAD,CACIhI,IAAK/E,EAAMC,QACXtC,UAAWD,EAAO2P,eAClBrN,MAAOA,EACP8C,IAAKA,EACLxD,QAASA,QAKxB4M,IAGP5M,GAAW4M,O,mGClEtB,MAAMjP,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFsH,QAAS,OACTS,WAAY,SAEhByG,UAAW,CACPC,WAAY,SACZ,eAAgB,CACZA,WAAY,WAEhB,CAAE,IAAGC,EAAAA,aAA+C,CAChDD,WAAY,YAGpBE,WAAY,O,oRCfhB,MAiBA,EAjBmEnQ,GAE3D,2BACIuH,MAAO,GACPC,OAAQ,GACR4I,YAAa,IACbC,KAAK,OACLC,SAAS,UACTC,QAAQ,YACRC,MAAM,8BACFxQ,GAEJ,0BAAMyQ,EAAE,mGCZPjR,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACF8G,SAAU,WACVd,OAAQ,OACRsB,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChB/G,WAAY,MACZgH,OAAQ,WAEZtQ,KAAM,CACF,UAAW,CACP+P,YAAa,KAGrBQ,gBAAiB,CACbtI,SAAU,WACVf,MAAO,OACPC,OAAQ,OACR1G,WAAY,OACZgI,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChBG,IAAK,OACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACR9N,MAAO,QACPlC,SAAU,OACVyH,cAAe,YCnBjBwI,EAAgBC,IAAAA,YAAiB,CAAC,EAA4B7R,KAAmC,IAA/D,SAACgC,EAAD,QAAW+L,GAAoD,EACnG,MAAMnN,EAAST,IAEf,OACI,kBAAC,EAAA2R,QAAD,CAASpQ,MAAOY,IAAAA,KAAU,iBACtB,yBAAKtC,IAAKA,EAAKa,UAAWD,EAAOuB,KAAM4L,QAASA,GAC5C,kBAAC,EAAD,CAAalN,UAAWD,EAAOI,OAC/B,yBAAKH,UAAWD,EAAO2Q,iBAAkBvP,QAMzD4P,EAAc1R,YAAc,gBAE5B,U,gNCzBA,MAiBA,EAjBgES,GAExD,2BACIuH,MAAO,GACPC,OAAQ,GACR4I,YAAa,IACbC,KAAK,OACLC,SAAS,UACTC,QAAQ,YACRC,MAAM,8BACFxQ,GAEJ,0BAAMyQ,EAAE,iOCWpB,EAZyB,IAAiC,IAAhC,UAACvQ,EAAD,QAAYkN,GAAoB,EACtD,MAAMnN,EAAST,IAEf,OACI,kBAAC,EAAA2R,QAAD,CAASpQ,MAAOY,IAAAA,KAAU,gBACtB,yBAAKzB,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,GAAYkN,QAASA,GACzD,kBAACgE,EAAD,CAAgBlR,UAAWD,EAAOI,U,8CCZ3C,MAAMb,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,GACN6L,OAAQ,CACJvE,QAAS,OACTS,WAAY,SACZ/B,OAAQ,OACRlE,YAAa,OACb+N,aAAc,OAElBC,WAAY,CACR7H,YAAa,OACbX,QAAS,OACTS,WAAY,UAEhBxI,MAAO,CACH0I,YAAa,OACbvG,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,QAEduQ,QAAS,CACLjO,YAAa,OACbC,WAAY,6BACZL,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVF,WAAY,QAEhB0Q,cAAe,CACXjJ,OAAQ,IACR,UAAW,CACP5I,gBAAiB,gBAGzB8R,OAAQ,CACJlK,MAAO,QACPQ,aAAc,eAElB2J,kBAAmB,CACf7Q,QAAS,cAEbgB,QAAS,QAAC,UAAC8P,GAAF,QAAyB,CAC9BhI,WAAY,OACZF,YAAakI,EAAY,MAAQ,QAErCrF,QAAS,QAAC,UAACqF,GAAF,QAAyB,CAC9BhI,WAAY,MACZF,YAAakI,EAAY,MAAQ,QAErClD,gBAAiB,QAAC,UAACkD,EAAD,YAAYC,GAAb,QAAsC,CACnDjI,WAAY,MACZF,YAAakI,EAAYC,EAAc,EAAI,QAE/CjC,SAAU,CACNzH,UAAW,QACXC,UAAW,YCvCN0J,EAAqB,IAAmF,IAAlF,IAACxM,EAAD,kBAAMrD,EAAN,WAAyBsC,EAAzB,SAAqCwN,EAArC,QAA+CC,EAA/C,KAAwDC,EAAxD,QAA8DnQ,GAAoB,EACjH,MAAO+P,EAAaK,IAAkBzH,EAAAA,EAAAA,UAAS,GAEzCvK,EAAST,EAAU,CAACoS,YAAAA,EAAaD,UADL,IAAhBC,IAGZ1H,GAAY2D,EAAAA,EAAAA,QAAO,OACnB,cAACI,EAAD,QAAgBiE,EAAhB,QAAyBvH,IAAWxG,EAAAA,EAAAA,YAAW8G,EAAAA,GAC/CkH,EAAa,GAAItQ,MAAAA,OAAJ,EAAIA,EAASyK,QAAQnG,QAMxC,OACI,kBAACiM,EAAA,EAAD,CACIlI,UAAWA,EACX4H,SAAUA,EACVE,KAAMA,EACNK,UAAU,cACVN,QAASA,EACT7R,UAAWD,EAAOwR,QAElB,kBAAC,EAAApN,IAAD,CAAKnE,UAAWD,EAAOoN,QACnB,kBAAC,EAAAhJ,IAAD,CAAKnE,UAAWD,EAAOqR,YACnB,kBAAC,EAAA7P,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,aAC/CE,IAAYqQ,GACT,kBAAC,EAAAzQ,WAAD,CAAYvB,UAAWD,EAAOsR,SACzB5P,IAAAA,OAAYwQ,GADjB,IAC8C,IAAfA,EAAmBxQ,IAAAA,KAAU,QAAUA,IAAAA,KAAU,WAIvFE,IAAYqQ,GACT,kBAAC9R,EAAA,EAAD,CACIF,UAAWD,EAAOuR,cAClBjR,KAAK,IACL6M,QA1BE,KAClBa,EAAc,CAAC5L,UAAWR,EAAQQ,UAAWgD,IAAAA,KA0B7ByH,SAAUnC,EACV2H,iBAAiB,EACjBvD,aAAcpN,IAAAA,KAAU,WACxBtB,KAAMkS,EAAAA,EACNrP,MAAM,cAIhBgP,GACE,kBAACrC,EAAA,EAAD,CACI3F,UAAWA,EACX6F,YAAcyC,IACNA,GACAP,EAAeO,EAAKC,YAAcD,EAAKE,cAG/CpR,QAAS,CACLE,KAAMvB,EAAOyR,kBACbpF,QAASrM,EAAOqM,QAChBmC,gBAAiBxO,EAAOwO,gBACxBkB,SAAU1P,EAAO0P,SACjB9N,QAAS5B,EAAO4B,SAEpBwD,IAAKA,EACLrD,kBAAmBA,EACnBsC,WAAYA,EACZzC,QAASA,MCyB7B,EAvF0B,IAQb,IARc,UACvB3B,EADuB,IAEvBmF,EAFuB,WAGvBf,EAHuB,kBAIvBtC,EAJuB,wBAKvB2Q,EALuB,oBAMvBC,GAAsB,EANC,WAOvBzC,GAAa,GACJ,EACT,MAAMlQ,EAAST,KAERsS,EAAUe,IAAerI,EAAAA,EAAAA,UAAgC,OACzDsI,EAAiBC,IAAsBvI,EAAAA,EAAAA,WAAkB,GAC1DwI,EAAcF,GAAmBG,QAAQnB,IAEzC,eAACoB,EAAD,YAAiBC,EAAjB,WAA8BC,EAA9B,oBAA0CC,EAA1C,YAA+DC,IAAenP,EAAAA,EAAAA,YAChF8G,EAAAA,GAEEsI,IACAJ,KAAiBG,GAAeA,EAAY/M,SAASjC,IACrDkP,IAAgBL,MAAAA,OAAA,EAAAA,EAAc9N,KAAQ,IAAIoO,QAAO,QAAC,OAAC1J,GAAF,QAAyB,aAAXA,KAAuB2J,UACtFC,GAA8Bf,GAAwBA,GAA+C,IAAxBY,EAAarN,OAC1FyN,EAA+C,OAAnBV,GAA2BF,GAkB7Da,EAAAA,EAAAA,IAAmB,KACXlB,GACAA,EAAwBK,KAE7B,CAACA,IAEJ,MAAMc,GAA8B3P,EAAAA,EAAAA,YAAW4P,EAAAA,GACzCC,GAAuBxF,EAAAA,EAAAA,UAAQ,IAC1BsF,EAA8B,IAAI9R,KAAsB8R,GAA+B9R,GAC/F,CAAC8R,EAA6B9R,IAEjC,OACIuR,GACI,yBAAKrT,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACnCyT,GACG,kBAAC,EAAD,CACIzT,UAAWQ,GAAAA,CAAWT,EAAO+P,UAAW,CACpC,CAAC/P,EAAOkQ,YAAaA,GAAcyD,IAEvCxG,QA9BiB6G,IACjCpB,EAAYoB,EAAMC,eAClBnB,GAAmB,MA+BVS,EAAatM,KAAI,IAA0B,IAAzB,QAACoF,EAAD,UAAUjK,GAAe,EACxC,OACI,kBAAC,EAAD,CACIhD,IAAKgD,KAAc6Q,MAAAA,OAAL,EAAKA,EAAgB7Q,WAAYwQ,EAAc,KAC7DvL,IAAKjF,EACL+K,QAAS,IA3CC/K,CAAAA,IAC9B+Q,EAAW/Q,GACX0Q,GAAmB,IAyCgBoB,CAAyB9R,IAEvC,EAAIiK,MAIjB,kBAACuF,EAAD,CACIC,SAAUA,EACVE,KAAMgB,EACNjB,QA1CI,KAChBc,EAAY,MACZQ,IACAN,GAAmB,IAwCP1N,IAAKA,EACLrD,kBAAmBgS,EACnB1P,WAAYA,EACZzC,QAASqR,O,8EC/F7B,MAAMkB,GAAaC,EAAAA,EAAAA,kBAAiBC,EAAAA,SAcvBC,EAAevU,IACxB,MAAMwU,EATqBxU,CAAAA,IAC3B,MAAMyU,GAAU5G,EAAAA,EAAAA,QAAOuG,GAEvB,OAAKpU,EAAMqB,SAEJ,kBAAC,EAAAqT,YAAD,CAAaD,QAASA,EAAQ3I,QAAQ6I,iBAAkB3U,EAAMqB,UAFzC,MAMTuT,CAAsB5U,GACzC,OAAO,oCAAGwU,K,0JCpBP,MAAMhV,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChC6R,WAAY,CACR,aAAc,CACV3R,MAAOF,EAAMG,QAAQqJ,OAAOsI,OAC5BnV,iBAAiBoV,EAAAA,EAAAA,IAAK/R,EAAMG,QAAQqJ,OAAOsI,OAAQ,KACnD,UAAW,CACPnV,iBAAiBoV,EAAAA,EAAAA,IAAK/R,EAAMG,QAAQqJ,OAAOsI,OAAQ,QAI/DE,SAAU,GACVC,MAAO,CACHC,SAAU,SAEdC,SAAU,CACNvU,UAAW,QAEfwU,SAAU,CACNlS,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVF,WAAY,OACZuU,cAAe,OCbjBC,GAAsBC,EAAAA,EAAAA,GAAYC,EAAAA,UAOlCC,GAAmBtW,EAAAA,EAAAA,aAAW,CAAC,EAAuCE,KAAkC,IAAzE,KAACsI,EAAD,YAAO+N,EAAcC,EAAAA,UAAoD,EAC1G,MAAM1V,EAAST,KACT,SAACsN,EAAD,KAAWtJ,EAAX,QAAiBoS,EAAjB,QAA0BxI,EAA1B,GAAmCpE,EAAK,GAAxC,WAA4C6M,EAA5C,SAAwDb,GAAYrN,EAM1E,OACI,kBAAC2N,EAAD,CACIvG,aAAc6G,EACdtD,iBAAiB,EACjBhR,QAAS,CAACE,KAAMvB,EAAOkV,UACvB/H,QAValB,IACjBwJ,EAAYxJ,GACZkB,EAAQlB,IASJY,SAAUA,EACVzN,IAAKA,EACL,gBACA,iBAAiB,0BAAyB2J,KAEzC6M,GAAc,kBAAC,EAAAC,SAAD,CAAUC,QAASf,EAAU9R,MAAM,YAClD,kBAAC,EAAAzB,WAAD,CAAYH,QAAS,CAACE,KAAMvB,EAAOmV,WAAY5R,OAK3DiS,EAAiBlW,YAAc,mBAE/B,U,gNCrBA,SAASmP,EAAT,GAWa,IAXqC,UAC9CxO,EAD8C,OAE9CgP,EAF8C,gBAG9CP,EAAkBzB,EAAAA,OAH4B,cAI9C8I,EAJ8C,UAK9CzH,EAAY,GALkC,YAM9CM,EAAc,GANgC,aAO9CG,EAAe,GAP+B,WAQ9CiH,EAAaN,EAAAA,SARiC,YAS9CD,EAAcC,EAAAA,SATgC,iBAU9CF,EAAmBS,GACV,EACT,MAAMC,EAAkBxH,EAClB1O,EAAST,IACT4W,GAAYvI,EAAAA,EAAAA,WACXwI,EAAQC,IAAa9L,EAAAA,EAAAA,WAAS,IAErCqJ,EAAAA,EAAAA,IAAmB,KACfwC,EAASJ,IAAeP,MACzB,CAACW,IAEJ,MAAME,GAAelI,EAAAA,EAAAA,cAAanC,IAC9BA,MAAAA,GAAAA,EAAGsK,kBACHF,GAAWtE,IAAUA,MACtB,IAMH,OACI,oCACI,kBAACmE,EAAD,GACI9W,IAAK+W,EACLlW,UAAWQ,GAAAA,CACPT,EAAO4U,WACP,CACI,CAAC5U,EAAO+U,UAAWqB,GAEvBnW,GAEJkN,QAASmJ,EACT,eAAcF,EACd,gBAAeA,EAASnH,OAASuH,EACjC,gBAAc,QACV5H,GAEHmH,GAEL,kBAACU,EAAA,EAAD,GACI1N,GAAIkG,EACJxN,QAAQ,OACRsQ,KAAMqE,EACNM,WAAW,EACXrV,QAAS,CAAC2T,MAAOhV,EAAOgV,OACxBnD,SAAUsE,EAAUtK,QACpBiG,QAASwE,EACTK,aAAc,CACVC,SAAU,SACVC,WAAY,SAEhBC,gBAAiB,CACbF,SAAU,MACVC,WAAY,SAEhBE,UAAW,EACXC,mBAAoB,KACpBC,cAAe,CAACC,cAAed,IAC3BrH,GAEHT,EAAUrH,KA5CA,CAACS,EAAM5F,IACnB,kBAAC0T,EAAD,CAAkB9N,KAAMA,EAAML,IAAKvF,EAAO2T,YAAaa,QAiDtE7H,EAAmBnP,YAAc,qBAEjC,W,mGC3FA,MAaA,EAbqB,IAAiC,IAAhC,UAACW,EAAD,QAAYuN,GAAoB,EAClD,MAAMxN,GAAST,EAAAA,EAAAA,KACf,OAAKiO,EAKD,kBAAC,EAAAhM,WAAD,CAAYC,QAAQ,UAAUxB,UAAWQ,GAAAA,CAAWT,EAAOmX,QAASlX,IAC/DuN,GALE,O,yUCEf,MAgBA,GAAeqC,EAAAA,EAAAA,OAhBM,IAAwE,IAAvE,aAACuH,EAAD,SAAehW,EAAf,UAAyBnB,EAAzB,QAAoCoB,GAAmC,EAAvBnB,E,kXAAuB,sDACzF,MAAMF,GAAST,EAAAA,EAAAA,KACT8X,IAAaD,EAEnB,OACI,kBAAC,IAAD,GAAanX,UAAWQ,GAAAA,CAAWT,EAAOsX,QAASrX,EAAWoB,MAAAA,OAA5B,EAA4BA,EAASE,MAAOgW,OAAK,GAAKrX,GACnFkB,EACAiW,GACG,kBAAC,EAAAG,eAAD,CAAgBvX,UAAWQ,GAAAA,CAAWT,EAAOyX,WAAYpW,MAAAA,OAApB,EAAoBA,EAASoW,aAC9D,kBAAC,IAAD,CAAcjK,QAAS4J,U,iCCtBpC,MAAM7X,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChCuU,QAAS,CACLhQ,MAAO,QAEXmQ,WAAY,CACRC,OAAQ,kBAEZP,QAAS,CACLtO,QAAS,OACT5F,MAAOF,EAAMG,QAAQqU,MAAM7T,KAC3B3C,SAAU,OACVF,WAAY,a,gTCXpB,MAgBA,EAhBkEd,GAE1D,2BAAKuH,MAAO,GAAIC,OAAQ,GAAI+I,QAAQ,YAAYC,MAAM,8BAAiCxQ,GACnF,uBAAG4X,OAAO,OAAOC,YAAa,EAAGxH,KAAK,OAAOC,SAAS,WAClD,0BAAMG,EAAE,kBACR,0BACIA,EAAE,sKACFL,YAAa,IACbC,KAAK,OACLC,SAAS,c,eCRtB,MAAM9Q,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF8G,SAAU,YAEdwP,MAAO,QAAC,WAACC,EAAD,YAAaC,GAAd,QAA+C,CAClDzQ,MAAOwQ,EACPvQ,OAAQwQ,EACRC,UAAW,QACXC,cAAe,WAEnBC,iBAAkB,CACdrP,QAAS,OACTS,WAAY,SACZ5J,gBAAiB,sBAErByY,aAAc,CACV7Q,MAAO,OACPC,OAAQ,OACRmC,WAAY,OACZF,YAAa,OACbvG,MAAOF,EAAMG,QAAQK,KAAKiE,WAE9B4Q,UAAW,CACPvP,QAAS,Y,gNClBjB,MAAMwP,EACO,UADPA,EAEM,SAFNA,EAGK,QAGEC,EAAmB,CAC5BC,MAAO,CACHT,WAAY,IACZC,YAAa,KAEjBS,OAAQ,CACJV,WAAY,IACZC,YAAa,KAEjBU,MAAO,CACHX,WAAY,IACZC,YAAa,KAEjBW,SAAU,CACNZ,WAAY,QACZC,YAAa,UAqErB,GAAelI,EAAAA,EAAAA,OAnDA9P,IACX,MAAM,IAAC4Y,EAAD,UAAM1Y,EAAN,mBAAiB2Y,EAAjB,KAAqCtY,EAAOgY,EAAiBC,MAA7D,QAAoEM,EAAU,MAAuB9Y,EAAdG,E,kXAA7F,CAA2GH,EAA3G,2DAEM+Y,EAAaxY,GAAQgY,EAAiBC,MACtCvY,EAAST,EAAUuZ,IAClBC,EAAmBC,IAAwBzO,EAAAA,EAAAA,UAAiB8N,IAEnEzM,EAAAA,EAAAA,YAAU,KACNoN,EAAqBX,KACtB,CAACM,IAEJ,MAQMM,EAAiBF,IAAsBV,EACvCa,EAAgBH,IAAsBV,EAG5C,OAF0BU,IAAsBV,EAG5C,2BAAKpY,UAAWQ,GAAAA,CAAWT,EAAOkY,iBAAkBlY,EAAO6X,MAAO5X,IAAgBC,GAC9E,kBAAC,IAAD,CAAmBD,UAAWD,EAAOmY,gBAGzC,yBAAKlY,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMqX,MAClCO,EAAAA,EAAAA,KAAaR,IACX,2BACIA,IAAKA,EACL1Y,UAAWQ,GAAAA,CAAWT,EAAO6X,MAAO5X,EAAW,CAC3C,CAACD,EAAOoY,WAAYa,IAExBG,OApBI,KAChBJ,EAAqBX,IAoBTgB,QAzBQ,KACpBL,EAAqBX,IAyBTiB,IAAK,SACDpZ,IAGX+Y,GACG,2BAAKhZ,UAAWQ,GAAAA,CAAWT,EAAOkY,iBAAkBlY,EAAO6X,MAAO5X,IAAgBC,GAC9E,kBAACqZ,EAAD,CAActZ,UAAWD,EAAOmY,gBAGvCe,GAAiBL,O,yLC3FvB,MAAMtZ,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFR,SAAU,OACVkC,MAAO,YCOFuW,EAAc,IAA0C,IAAzC,QAAC1D,EAAD,UAAU7V,EAAV,QAAqBkN,GAAoB,EACjE,MAAMnN,EAAST,IACTka,EAAO3D,EAAU4D,EAAAA,EAAkBC,EAAAA,EACzC,OAAO,kBAACF,EAAD,CAAMxZ,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,GAAYkN,QAASA,K,0BCblE,MAAM5N,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtCqZ,QAAS,CACLxQ,SAAU,WACVuI,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRlI,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChB7Q,WAAY,kBACZ,6CAA8C,CAC1CF,gBAAiB,mBAErBka,WAAY,QAEhB7E,SAAU,CACNrV,gBAAiB,uBAErBma,cAAe,CACXnJ,OAAQ,UACR,mBAAoB,CAChBhR,gBAAiB,oBAGzBkK,OAAQ,CACJhJ,QAAS,EACT0G,MAAO,QACPC,OAAQ,OACRtE,MAAO,OACPlC,SAAU,OACVC,WAAY,IACZH,WAAY,OACZgH,OAAQ,mCACRnI,gBAAiB,oBAErBoa,YAAa,CACTzR,SAAU,WACVwI,KAAM,MACND,IAAK,MACLF,OAAQ,WAEZqJ,QAAS,CACLlR,QAAS,OACTS,WAAY,SACZjB,SAAU,WACVuI,IAAK,MACLE,MAAO,OAEXkJ,aAAc,CACV/W,MAAO,OACPlC,SAAU,QAEdkZ,mBAAoB,CAChBvC,OAAQ,mBC0DhB,GAAe7H,EAAAA,EAAAA,OAtFc9P,IACzB,MAAM,GACFgJ,EADE,cAEFmR,GAAgB,EAFd,SAGFnF,GAAW,EAHT,cAIF8E,GAAgB,EAJd,WAKFM,EAAaC,EAAAA,GALX,SAMFC,EAAWD,EAAAA,GANT,YAOFE,EAPE,eAQFC,EARE,SASFC,EATE,WAUFC,EAAaL,EAAAA,GAVX,QAWFjN,GACApN,EAEEC,EAAST,KACRmb,EAASC,IAAcpQ,EAAAA,EAAAA,WAAkB,GAE1C+D,GAAYC,EAAAA,EAAAA,UACd,IACI,CACI,CACIhL,KAAM7B,IAAAA,KAAU,cAChByL,QAASmN,GAEb,CACI/W,KAAM7B,IAAAA,KAAU,kBAChByL,QAASoN,GAEb,CACIhX,KAAM7B,IAAAA,KAAU,UAChByL,QAASqN,IAEfhH,QAAOoH,EAAAA,EAAAA,MAAK,aAClB,CAACN,EAAaC,EAAgBC,IAM5BK,EAAkB9F,GAAsB,KAAM+F,EAAAA,EAAAA,SAAOC,EAAAA,EAAAA,SAAO,GAAOZ,EAAYE,EAAjCS,CAA2C/F,GAEzFiG,EAAed,IAAkBnF,GAAY2F,GAAWb,GACxDoB,GAAepB,IAAkB9E,GAAY2F,EAC7CQ,EAAqBhB,GAAiBnF,EAM5C,OACI,yBACI9U,UAAWQ,GAAAA,CAAWT,EAAO6Y,QAAS,CAClC,CAAC7Y,EAAO+U,UAAWA,EACnB,CAAC/U,EAAO6Z,eAAgBA,IAE5BsB,aAnBiB,IAAMR,GAAW,GAoBlCS,aAnBiB,IAAMT,GAAW,GAoBlCxN,QAAS0M,EAAgBgB,EAAe9F,GAZ3Bf,IACbA,EAAMC,gBAAkBD,EAAMqH,QAAQlO,MAarC6N,GACG,kBAACxB,EAAD,CAAavZ,UAAWD,EAAO8Z,YAAahE,QAASf,EAAU5H,QAAS0N,EAAe9F,KAE1FkG,GACG,yBAAKhb,UAAWD,EAAO+Z,SACnB,kBAAC5Z,EAAA,EAAD,CAAiBgN,QAASsN,EAAYxa,UAAWD,EAAOga,aAAc5Z,KAAMkb,EAAAA,IAC5E,kBAAC7M,EAAA,EAAD,CACIQ,OAAS,yBAAwBlG,IACjC2F,gBAAiBvO,EAAAA,EACjByO,YAAa,CACTxO,KAAMyO,EAAAA,EACN5O,UAAWQ,GAAAA,CAAWT,EAAOga,aAAcha,EAAOia,qBAEtD3L,UAAWA,KAItB4M,GACG,kBAAC,EAAAjO,OAAD,CAAQhN,UAAWD,EAAO4J,OAAQnI,QAAQ,WAAW0L,QAASgN,GACzDzY,IAAAA,KAAU,kB,sUCzG/B,MA0BA,EA1B6D3B,GAErD,2BACIuH,MAAO,GACPC,OAAQ,GACR+I,QAAQ,YACRC,MAAM,6BACNgL,WAAW,gCACPxb,GAEJ,8BACI,0BACIyQ,EAAE,gIACFzH,GAAG,oBAGX,uBAAG4O,OAAO,OAAOC,YAAa,EAAGvH,SAAS,WACtC,0BAAMtH,GAAG,iBAAiBqH,KAAK,QAC3B,yBAAKoL,UAAU,qBAEnB,0BAAMC,KAAK,uBAAuBjL,EAAE,oB,yBCpB7C,MAAMjR,GAAYC,E,SAAAA,IAAW,KAAM,CACtCwV,MAAO,CACHtV,gBAAiB,sBAErBgc,SAAU,CACNhc,gBAAiB,eAErBgB,QAAS,CACL2C,YAAa,OACb+N,aAAc,QAElBuK,OAAQ,CACJtT,SAAU,WACVuT,WAAY,oEAEhBC,YAAa,CACTrS,YAAa,QAEjBsS,UAAW,CACP/a,SAAU,OACVkC,MAAO,QAEX8Y,WAAY,CACRlT,QAAS,OACTS,WAAY,SACZ0S,KAAM,GAEVC,aAAc,CACVpT,QAAS,OACT4H,eAAgB,SAChBuL,KAAM,GAEVE,YAAa,CACTF,KAAM,EACNnT,QAAS,OACT4H,eAAgB,WAChBnH,WAAY,UAEhB6S,aAAc,CACVzc,gBAAiB,QAErBgH,QAAS,CACL9F,QAAS,OC9BV,IAAKwb,G,SAAAA,GAAAA,EAAAA,aAAAA,UAAAA,EAAAA,aAAAA,U,CAAAA,IAAAA,EAAAA,KAiBL,MAAMC,EAAqB,IAAkE,IAAjE,KAACtK,EAAD,KAAOuK,EAAP,SAAalb,EAAb,OAAuBgM,EAAvB,QAA+B0E,EAA/B,aAAwCyK,GAAyB,EAChG,MAAMvc,EAAST,IAETid,GAAQjO,EAAAA,EAAAA,UACV,IAAM,CACF,CACIxF,GAAIqT,EAAKK,aACT3b,MAAOY,IAAAA,KAAU,WACjB+X,KAAMiD,EAAAA,GAEV,CACI3T,GAAIqT,EAAKO,aACT7b,MAAOY,IAAAA,KAAU,WACjB+X,KAAMmD,KAGd,IAGJ,OACI,kBAAC,EAAAC,OAAD,CAAQxb,QAAS,CAAC2T,MAAOhV,EAAOgV,OAAQjD,KAAMA,EAAM+K,cAAe,CAAC7c,UAAWD,EAAO0b,UAAWqB,YAAU,GACvG,kBAAC,EAAAC,OAAD,CAAQ3b,QAAS,CAAC4b,aAAcjd,EAAO2b,SACnC,kBAAC,EAAAra,QAAD,CAASrB,UAAWD,EAAOU,SACvB,kBAAC,EAAA0D,IAAD,CAAKnE,UAAWD,EAAO+b,YACnB,kBAAC5b,EAAA,EAAD,CACI2O,aAAcpN,IAAAA,KAAU,SACxByL,QAAS2E,EACT7R,UAAWD,EAAO6b,YAClBrb,cAAeR,EAAO8b,UACtB1b,KAAM8c,EAAAA,UAET9P,MAAAA,OARL,EAQKA,EAAQyD,MAEb,kBAAC,EAAAzM,IAAD,CAAKnE,UAAWD,EAAOic,cACnB,kBAACkB,EAAA,EAAD,CACIX,MAAOA,EACPY,OAAQd,EACR5T,SAAU6T,EACVtc,UAAWD,EAAOmc,gBAG1B,kBAAC,EAAA/X,IAAD,CAAKnE,UAAWD,EAAOkc,aAAc9O,MAAAA,OAArC,EAAqCA,EAAQ0D,SAGrD,kBAAC,EAAAuM,cAAD,CAAepd,UAAWD,EAAO0G,SAAUtF,M,wFCzEhD,MAAM7B,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChCU,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,Y,gNCAxB,MAYA,EAZsB5D,IAClB,MAAMC,EAAST,IACT+d,GAAkBC,EAAAA,EAAAA,uBAClB,KAACxW,EAAD,UAAO9G,GAA4BF,EAAdG,E,kXAA3B,CAAyCH,EAAzC,sBACMyd,EAAgB/c,GAAAA,CAAWT,EAAOyD,KAAMxD,GAC9C,OAAOqd,GAAmBvW,EACtB,kBAAC,EAAAD,KAAD,GAAM2W,GAAI1W,EAAK2W,QAAQC,OAAOC,SAASC,OAAQ,IAAK5d,UAAWud,GAAmBtd,IAElF,yBAAG6G,KAAMA,EAAM9G,UAAWud,GAAmBtd,M,mGCX9C,MAAMX,GAAYC,E,SAAAA,IAAYuD,IACjC,MAAME,EAAQF,EAAMG,QAAQ0Y,WAAW5G,MACvC,MAAO,CACH8I,YAAa,CACTpe,gBAAiBuD,EACjBmG,SAAU,KAEdoI,OAAQ,CACJ,kCAAmC,CAC/BZ,IAAK,EACLC,KAAM,EACNlH,UAAW,UACXD,WAAY,EACZF,YAAa,EACb,YAAa,CACTsN,gBAAiB,WAGzB,+BAAgC,CAC5B/F,OAAQ,EACRF,KAAM,EACN7N,aAAc,UACd0G,WAAY,EACZF,YAAa,EACb,YAAa,CACTsN,gBAAiB,WAGzB,iCAAkC,CAC9BjG,KAAM,EACNnH,WAAY,UACZnC,OAAQ,MACRD,MAAO,SACPqC,UAAW,EACX3G,aAAc,EACd,YAAa,CACT8T,gBAAiB,cAGzB,gCAAiC,CAC7BhG,MAAO,EACPtH,YAAa,UACbjC,OAAQ,MACRD,MAAO,SACPqC,UAAW,EACX3G,aAAc,EACd,YAAa,CACT8T,gBAAiB,SAI7BiH,MAAO,CACH7c,SAAU,SACVmH,SAAU,WACVf,MAAO,MACPC,OAAQ,SACRyW,UAAW,aACX/a,MAAAA,EACA,YAAa,CACTyD,QAAS,KACTgR,OAAQ,OACR7O,QAAS,QACTvB,MAAO,OACPC,OAAQ,OACRS,UAAWjF,EAAMkb,QAAQ,GACzBve,gBAAiB,eACjBI,UAAW,sBChDdqS,EAAiB,IASjB,IATkB,SAC3BN,EAD2B,UAE3BO,EAAY,MAFe,MAG3B2L,GAAQ,EAHmB,KAI3BhM,EAJ2B,QAK3BD,EAAU,SALiB,SAM3B1Q,EAN2B,UAO3BnB,EAP2B,UAQ3BgK,GACS,EACT,MAAMjK,EAAST,KACR2e,EAAUC,GAAelN,IAAAA,SAAmC,MAMnE,OACI,kBAACmN,EAAA,EAAD,CACIvM,SAAUA,EACVO,UAAWA,EACXnS,UAAWQ,GAAAA,CAAWT,EAAOwR,OAAQvR,GACrCoe,UAAW,CACPC,gBAAiB,CACbC,SAAS,EACTC,kBAAmB,UAEvBT,MAAO,CACHQ,QAASR,EACTU,QAASP,IAGjBnM,KAAMA,EACN2M,OAAO,EACPzU,UAAWA,GAEX,kBAAC,EAAA7F,IAAD,KACI,kBAAC,EAAAua,kBAAD,CAAmBC,YAzBP3S,IAfE4S,IAAAA,EAAAA,EAgBI5S,EAAEoP,OAfhCyD,MAAMC,KAAKC,SAASC,iBAAiB,iBAAiBC,MAAMhY,GAAOA,EAAGiY,SAASN,MAgBvE/M,MAwBQ,kBAAC,EAAAsN,MAAD,CAAOnf,UAAWD,EAAO8d,aACpBC,EAAQ,0BAAM9d,UAAWD,EAAO+d,MAAO3e,IAAK+e,IAAkB,KAC/D,kBAAC,EAAA/Z,IAAD,KAAMhD,S,mGC1DvB,MAAM7B,GAAYC,E,SAAAA,GAAW,CAChC4D,MAAO,CACHH,MAAO,kBACPlC,SAAU,OACVF,WAAY,U,gNCMpB,MAWA,EAXc,IAA0D,IAAzD,MAACuC,EAAD,WAAQic,EAAR,UAAoBpf,GAAqC,EAAvBC,E,kXAAuB,uCACpE,MAAMF,EAAST,IAEf,OACI,kBAAC,EAAAiC,WAAD,GAAYvB,UAAWQ,GAAAA,CAAWT,EAAOoD,MAAOnD,GAAYiP,UAAU,QAAWhP,GAC5EkD,EACAic,GAAc,kBAACC,EAAA,EAAD,S,6EChB3B,MAAMC,EAAY,oBAMLhgB,GAAYC,E,SAAAA,GAAW,CAChCggB,UAAW,CACP9V,WAAY+V,EACZnc,WAAYic,EACZ,eAAgB,CACZjc,WAAY,OACZ,WAAY,CACRA,WAAYic,IAGpB,WAAY,CACR3O,IAAK,EACLrJ,OAfY,GAgBZD,MAjBgB,EAkBhBoY,aAAcH,EACd7Y,QAAS,KACTmC,QAAS,QACTgI,KAAM,KAEV,UAAW,CACP,WAAY,CACRvJ,MAAO,KAInBqY,MAAO,GACPrI,QAAS,CACL5N,WAAYkW,GACZjW,WAAY,KCdpB,EAXwB,IAAkE,IAAjE,UAAC1J,EAAD,SAAYmB,EAAZ,MAAsBue,GAAQ,EAA9B,QAAqCpB,GAAU,GAAkB,EACtF,MAAMve,EAAST,IACf,OAAOgf,EACH,yBAAKte,UAAWQ,GAAAA,CAAWT,EAAOwf,UAAW,CAAC,CAACxf,EAAO2f,OAAQA,GAAQ1f,IAClE,yBAAKA,UAAWD,EAAOsX,SAAUlW,IAGrC,oCAAGA,K,8TChBX,MAYA,EAZiErB,GAEzD,2BAAKuH,MAAO,GAAIC,OAAQ,GAAI+I,QAAQ,YAAYF,KAAK,OAAOG,MAAM,8BAAiCxQ,GAC/F,0BACIyQ,EAAE,waACFJ,KAAK,OACLD,YAAa,OCNhB5Q,GAAYC,E,SAAAA,IAAW,KAAM,CACtCqgB,UAAW,CACPtY,OAAQ,OACR7H,gBAAiB,cACjB,UAAW,CACPA,gBAAiB,gBAGzB0D,MAAO,CACHC,YAAa,MACb+N,aAAc,MACdrQ,SAAU,OACVF,WAAY,QAEhBT,KAAM,CACFkH,MAAO,OACPC,OAAQ,OACRiC,YAAa,OCVRsW,GAAkBxK,EAAAA,EAAAA,GAAYyK,EAAAA,MA6B3C,EAtBwB,IAAqC,IAApC,UAAC9f,EAAD,YAAY+f,GAAwB,EACzD,MAAM,gBAACC,IAAmB/b,EAAAA,EAAAA,YAAWgc,EAAAA,GAC/BlgB,EAAST,IAEf,OAAKygB,GAAgBC,EAKjB,kBAACH,EAAD,CACIhR,aAAckR,EACdG,iBAAiB,SACjB/f,KAAM,kBAACggB,EAAD,MACN/e,QAAS,CACLE,KAAMd,GAAAA,CAAWT,EAAO6f,UAAW5f,GACnCmD,MAAOpD,EAAOoD,MACdhD,KAAMJ,EAAOI,QAXd,O,kNClBR,MAAMb,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACFsH,QAAS,OACTwX,aAAc,SACdC,cAAe,UAEnB5c,KAAM,CACF2E,SAAU,WACVzH,QAAS,SACT+I,UAAW,QAEf4W,mBAAoB,CAChB1X,QAAS,OACTwX,aAAc,SACd9Y,OAAQ,OACRD,MAAO,QAEXkZ,UAAW,CACPpX,SAAU,sBACVnB,UAAW,sBACXyP,OAAQ,SACRkC,WAAY,QAEhB6G,YAAa,CACT/gB,gBAAiBqD,EAAMG,QAAQC,QAC/BF,MAAO,QACP,UAAW,CACPvD,gBAAiBqD,EAAMG,QAAQC,UAGvCud,gBAAiB,CACbrY,SAAU,WACVuI,IAAK,MACLC,KAAM,OACN/Q,UAAW,oBAEf6gB,gBAAiB,CACbtY,SAAU,WACVuI,IAAK,MACLE,MAAO,OACPhR,UAAW,wBCzCNP,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtCohB,WAAY,CACRlX,WAAY,OACZ1G,aAAc,OACd2G,UAAW,OACXrC,MAAO,sBACPuZ,UAAW,OACX3Y,UAAW,UAEf4Y,cAAe,CACXxZ,MAAO,QAEXyZ,MAAO,CACHzZ,MAAO,OACPC,OAAQ,OACRmJ,OAAQ,UACRkJ,WAAY,QAEhBoH,cAAe,CACXxN,OAAQ,uBCJHyN,EAAa,IAA2E,IAA1E,gBAACC,EAAD,uBAAkBC,EAAlB,oBAA0CC,GAAgC,EACjG,MAAMphB,EAAST,IACT8hB,GAAUzT,EAAAA,EAAAA,QAAuB,MAwBvC,OAvBAhC,EAAAA,EAAAA,YAAU,KACN,GAAIyV,MAAAA,GAAAA,EAASxV,QAAS,CAClB,MAAMyV,EAAsBD,EAAQxV,QAAQ0V,WAEtCC,EADuBH,EAAQxV,QAAQ2G,YACC8O,EACxCG,EAlBS,GAmBXL,EAlBa,GAkBuBA,EAjBpB,GAkBhBI,EAAiBC,EACbJ,EAAQxV,QAAQ6V,SACZD,EAAyBD,EAtBtB,GACE,GAsBLH,EAAQxV,QAAQ6V,OAAOD,EAAwB,GAE/CJ,EAAQxV,QAAQ6V,OAAOC,IAA8BL,EAAqB,IAG3EA,EA5BI,GA4BgCG,GACvCJ,EAAQxV,QAAQ6V,QAChBL,EAAQxV,QAAQ6V,OAAOD,EA9BhB,GA8BsD,MAI1E,CAACL,EAAqBC,IAGrB,yBAAKjiB,IAAKiiB,EAASphB,UAAWD,EAAO4gB,YACjC,kBAAC,EAAAgB,KAAD,CAAM/B,WAAS,EAACgC,KAAK,SAASC,UAAU,MAAMC,QAAS,EAAG9hB,UAAWD,EAAO8gB,eACvEI,EAAgBja,KAAI,CAAC,EAAcnF,KAAf,IAAC,IAACsD,EAAD,MAAMzC,GAAP,SACjB,kBAAC,EAAAif,KAAD,CAAMla,MAAI,EAACL,IAAKjC,GACZ,kBAAC4c,EAAA,EAAD,CACI7U,QAAS,IAAMgU,EAAuBrf,GACtC7B,UAAWQ,GAAAA,CAAWT,EAAO+gB,MAAO,CAChC,CAAC/gB,EAAOghB,eAAgBI,IAAwBtf,IAEpD6W,KAAKsJ,EAAAA,EAAAA,KAAgC,CAACtf,MAAAA,aCpCrDuf,EAA2B,IAK3B,IAL4B,UACrCjiB,EADqC,gBAErCihB,EAFqC,oBAGrCE,EAHqC,uBAIrCD,GACS,EACT,MAAMnhB,EAAST,IACT4iB,EAAiBjB,EAAgBE,GACjCgB,GAAeC,EAAAA,EAAAA,KAA8BF,GAUnD,OACI,yBAAKliB,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,yBAAKA,UAAWD,EAAO0D,MAClB0d,EAAsB,GACnB,kBAACjhB,EAAA,EAAD,CACIC,KAAMkiB,EAAAA,EACNriB,UAAWQ,GAAAA,CAAWT,EAAOygB,YAAazgB,EAAO0gB,iBACjDvT,QAfW,KAC3BgU,EAAuBC,EAAsB,IAe7B9gB,KAAK,OAGb,kBAAC0hB,EAAA,EAAD,CACIpJ,mBAAoB5Y,EAAOugB,mBAC3BtgB,UAAWD,EAAOwgB,UAClBlgB,KAAM8hB,GAAgB9J,EAAAA,EAAAA,SACtBK,IAAKyJ,IAERhB,IAAwBF,EAAgBhb,OAAS,GAC9C,kBAAC/F,EAAA,EAAD,CACIC,KAAMmiB,EAAAA,EACNtiB,UAAWQ,GAAAA,CAAWT,EAAOygB,YAAazgB,EAAO2gB,iBACjDxT,QAzBW,KAC3BgU,EAAuBC,EAAsB,IAyB7B9gB,KAAK,QAIjB,kBAAC2gB,EAAD,CACIC,gBAAiBA,EACjBE,oBAAqBA,EACrBD,uBAAwBA,M,6EC9DjC,MAAMqB,EAA2B,CAChCC,mBACA,OAAO/gB,IAAAA,KAAU,kBAEjBghB,mBACA,OAAOhhB,IAAAA,KAAU,kBAEjBihB,iBACA,OAAOjhB,IAAAA,KAAU,eAEjBkhB,eACA,OAAOlhB,IAAAA,KAAU,cAEjBmhB,WACA,OAAOnhB,IAAAA,KAAU,SAEjBohB,UACA,OAAOphB,IAAAA,KAAU,wBAEjBqhB,iBACA,OAAOrhB,IAAAA,KAAU,2BAEjBshB,mBACA,OAAOthB,IAAAA,KAAU,yBAEjBuhB,aACA,OAAOvhB,IAAAA,KAAU,yBAEjBwhB,oBACA,OAAOxhB,IAAAA,KAAU,4BAEjByhB,sBACA,OAAOzhB,IAAAA,KAAU,2BC3BZ0hB,EAAwC,WAGhD,IAFD,MAACzgB,GAEA,uDAF8B,GAC/B0gB,EACC,uCACD,MACI,CAAC,MAAO,aAAc,eAAgB,SAAU,gBAAiB,kBAAmB,YAAY/c,SAAS+c,IAElGC,EAAAA,EAAAA,MAAK,CAACD,EAAM,EAAG,SAAU1gB,GAGvB,iBAAT0gB,IAA2BC,EAAAA,EAAAA,MAAK,CAAC,oBAAqB,EAAG,SAAU3gB,GAC5D4gB,GAAAA,CAAO5gB,EAAM6gB,kBAAkB,GAAG7gB,OAAiB8gB,OAAO,cAGxD,iBAATJ,IAA2BC,EAAAA,EAAAA,MAAK,CAAC,oBAAqB,EAAG,SAAU3gB,GAC5D4gB,GAAAA,CAAO5gB,EAAM6gB,kBAAkB,GAAG7gB,OAAiB8gB,OAAO,YAGxD,eAATJ,IAAyBC,EAAAA,EAAAA,MAAK,CAAC,SAAU,EAAG,SAAU3gB,KAAU2gB,EAAAA,EAAAA,MAAK,CAAC,QAAS,EAAG,SAAU3gB,GACpF,GAAEA,EAAM+gB,OAAO,GAAG/gB,WAAWA,EAAMghB,MAAM,GAAGhhB,SAASjB,IAAAA,KAAU,YAG9D,SAAT2hB,IAAmBC,EAAAA,EAAAA,MAAK,CAAC,OAAQ,EAAG,SAAU3gB,GAEtC,IADMihB,OAAOjhB,EAAMkgB,KAAK,GAAGlgB,OAAS,KAAMkhB,QAAQ,aAD9D,GAMEC,EAAkC,WAAqC,IAApCC,EAAoC,uDAAP,GAClE,OAAOA,EAAUvQ,QAAO,QAAC,OAACwQ,GAAF,SAAeA,MAG9BC,EAAsB,CAACC,EAAgBC,KAChD,MAAM,aAACC,EAAe,GAAhB,aAAoBC,EAAe,GAAnC,MAAuCC,EAAQ,IAAMH,EAErDI,EAAeH,EAAale,OAC5Bge,EAAK1Q,QAAQnM,GAAQ+c,EAAa9d,SAASe,KAC3C6c,EAAK1Q,QAAQnM,IAASgd,EAAa/d,SAASe,KAElD,OAAqB,IAAjBid,EAAMpe,OACCqe,EAGJA,EAAaC,MAAK,CAACC,EAAGC,KACzB,MAAMC,EAAOL,EAAMtiB,QAAQyiB,GACrBG,EAAON,EAAMtiB,QAAQ0iB,GAC3B,OAAc,IAAVC,IAAyB,IAAVC,EAAoB,GACzB,IAAVA,IAAyB,IAAVD,GAAqB,EACjCA,EAAOC,MA0BTC,EAA6B,WAIrC,IAHDC,EAGC,uDAHgC,GACjCC,EAEC,uCADDZ,EACC,uCACD,MAAMa,EAAqBlB,EAAgCiB,EAASE,YAEpE,OAAOhB,EAAoBiB,OAAOhB,KAAKY,EAAUniB,OAAS,IAAKwhB,GAAagB,QAAO,CAACC,EAAQ/d,KACxF,MAAM0d,EAAWC,EAAmBlgB,MAAK,QAAC,KAACue,GAAF,SAAYA,IAAShc,KAC9D,OAAO0d,EAAW,IAAIK,EAAQ,CAACL,SAAUA,EAAUM,OAAQP,EAAUniB,MAAM0E,KAAS+d,IACrF,KAGME,EAAUje,GACZ,CAAC,MAAO,aAAc,eAAgB,SAAU,gBAAiB,mBAAmBf,SAASe,GC7F3F9H,GAAYC,EAAAA,EAAAA,GAAW,CAChCsB,MAAO,CACHkC,aAAc,OACdC,MAAO,QACPlC,SAAU,OACVF,WAAY,OACZ,WAAY,CACRmC,aAAc,QAGtBG,QAAS,CACLmE,MAAO,OACPC,OAAQ,MACRqU,WAAY,0BAEhB2J,OAAQ,KCACC,EAAiB,IAAkD,IAAjD,cAAC7gB,EAAD,gBAAgB8gB,EAAhB,IAAiCrgB,GAAgB,EAC5E,MAAMpF,EAAST,IACTmmB,EFyCC5B,EEzCgCnf,EFyCSsgB,YExC1CM,EAASvS,QAAQyS,GAQvB,OACI,kBAAC,EAAArhB,IAAD,KACI,kBAAC,EAAA5C,WAAD,CAAYvB,UAAWQ,GAAAA,CAAWT,EAAOc,MAAO,CAAC,CAACd,EAAOulB,QAASA,KAC7D7jB,IAAAA,KAAU,cAEd6jB,GACG,kBAAC,EAAAne,SAAD,KACI,kBAACue,EAAA,EAAD,CACIviB,MAAO1B,IAAAA,KAAU,cACjBoH,KAAM4c,EACNE,OAAO,EACPC,QAjBC9B,IACb0B,GACAA,EAAgB1B,EAAU9c,KAAKtC,IAAD,CAAqBA,cAAAA,EAAemhB,UAAW1gB,UAiBrE,kBAAC,EAAA2gB,QAAD,CAAS9lB,UAAWD,EAAOmD,a,cCvCxC,MAAM5D,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACFR,SAAU,OACVqU,cAAe,EACfvU,WAAY,OACZmC,aAAc,QAElBlC,MAAO,CACHmC,MAAO,yBACPuG,YAAa,OACbwc,MAAO,QAEXtf,QAAS,CACLzD,MAAO,yBACPgjB,SAAU,cAEdxiB,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,YCTXuiB,EAAe,IAA+C,IAA9C,MAACplB,EAAD,QAAQ4F,EAAR,OAAiB4e,EAAjB,SAAyBlkB,GAAqB,EACvE,MAAMpB,EAAST,IAEf,OACI,yBAAKU,UAAWD,EAAOuB,MACnB,0BAAMtB,UAAWD,EAAOc,OAAQA,GAC/BwkB,EACG,uBAAGrlB,UAAWD,EAAOyD,KAAMsD,KAAML,GAC5BhF,IAAAA,KAAU,SAGf,0BAAMzB,UAAWD,EAAO0G,SAAUA,GAAWtF,KCpBhD7B,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,CACFX,QAAS,UAEbE,MAAO,CACHmC,MAAO,yBACPlC,SAAU,QAEd2F,QAAS,CACLzD,MAAO,yBACPgjB,SAAU,gBCKLE,EAAe,IAAuE,IAAtE,eAAChE,EAAD,cAAiBxd,EAAjB,0BAAgCyhB,GAAsC,EAC/F,MAAMpmB,EAAST,IACT8mB,GAAaviB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eAEzBuiB,GN0C8BxB,EM1CiB3C,EN0CegC,EM1CCiC,EN2C9DnC,EAAoBiB,OAAOhB,KAAK1B,GAA2B2B,GAC7Dld,KAAKI,GACY+b,EAAsC0B,EAAWzd,GAMxD,CACHvG,MAAO0hB,EAAyBnb,GAChC1E,MAAOygB,EAAsC0B,EAAWzd,GACxDie,OAAQA,EAAOje,IANR,OASdmM,OAAOR,UAfuB,IAAC8R,EAAgCX,EMzCpE,MAAMoC,EAA0B1B,EAC5B1C,EACAxd,EACAyhB,GAGJ,OACI,kBAAC,EAAAhiB,IAAD,CAAKnE,UAAWD,EAAOuB,MAClB+kB,EAAqBrf,KAAI,QAAC,MAACnG,EAAD,MAAQ6B,EAAR,OAAe2iB,GAAhB,SACtB,kBAACY,EAAD,CAAc7e,IAAKvG,EAAOwkB,OAAQA,EAAQxkB,MAAOA,EAAO4F,QAAS/D,OAEpE0jB,GACGE,EAAwBtf,KAAI,QAAC,SAAC8d,EAAD,OAAWM,GAAZ,SACxB,kBAACmB,EAAA,EAAD,CACInf,IAAK0d,EAAS3f,IACdT,cAAeogB,EACf0B,WAAW,EACXpB,OAAQA,EACRqB,eAAgB1mB,EAAOc,MACvB6lB,iBAAkB3mB,EAAO0G,QACzBof,UAAW3D,EAAe/c,W,eCxC3C,MAAM7F,GAAYC,EAAAA,EAAAA,GAAW,CAChC+B,KAAM,GACN8H,KAAM,CACFzI,QAAS,UAEbuC,QAAS,CACLmE,MAAO,OACPC,OAAQ,MACRqU,WAAY,0BAEhB7B,QAAS,CACLlR,QAAS,OACT4H,eAAgB,WAChB9G,UAAW,OAEfid,aAAc,CACV3jB,MAAO,QACPuG,YAAa,SCKRqd,EAAe,IAWf,IAXgB,cACzBliB,EADyB,0BAEzByhB,EAFyB,eAGzBjE,EAHyB,WAIzB2E,EAJyB,kBAKzBC,EALyB,kBAMzBC,EANyB,gBAOzBvB,EAPyB,SAQzBrb,EARyB,QASzByb,EATyB,KAUzBvJ,GACS,EACT,MAAMtc,EAAST,IACTgnB,EAA0B1B,EAC5B1C,EACAxd,EACAyhB,GAEEa,EACiC,IAAnCV,EAAwBrgB,QAAoD,IAAnCqgB,EAAwBrgB,QAAgB4gB,EAErF,OACI,kBAAC,EAAA1iB,IAAD,CAAKnE,UAAWD,EAAOuB,MACnB,kBAAC,EAAA6C,IAAD,CAAKnE,UAAWD,EAAOqJ,MAClBkd,EAAwBtf,KAAI,IAAwB,IAAvB,SAAC8d,EAAD,OAAWM,GAAY,EACjD,OACI,kBAAC,KAAD,CACIhe,IAAK0d,EAAS3f,IACd0gB,UAAW3D,EAAe/c,IAC1BT,cAAeogB,EACfM,OAAQA,EACR6B,kBAAkBC,EAAAA,EAAAA,KAAUhF,EAAe/c,KAC3CkX,KAAMA,EACNmK,WAAW,EACXM,kBAAmBA,EACnBC,kBAAmBA,EACnBvB,gBAAiBA,QAKhCwB,GACG,oCACI,kBAAC,EAAAlB,QAAD,CAAS9lB,UAAWD,EAAOmD,UAC3B,kBAAC,EAAAiB,IAAD,CAAKnE,UAAWD,EAAO+Z,SACnB,kBAAC,EAAA9M,OAAD,CAAQJ,UAAWia,EAAY3Z,QAAS/C,EAAUnK,UAAWD,EAAO4mB,cAC/DllB,IAAAA,KAAU,WAEf,kBAAC,EAAAuL,OAAD,CAAQJ,UAAWia,EAAY3Z,QAAS0Y,EAAS5iB,MAAM,WAClDvB,IAAAA,KAAU,c,eCtDhC,MCjBD0lB,EAAY,CACdlkB,QAAS,CACLwB,KAAM,OACNlB,QAAST,EAAAA,IAAAA,QAAAA,QACTyE,UAAWzE,EAAAA,IAAAA,QAAAA,YCObskB,GAAeC,EAAAA,EAAAA,GAAeF,GAQvBG,EAAW,IAA8F,IAA7F,0BAACnB,EAAD,cAA4BzhB,EAAewd,eAAgBqF,GAAkC,EAClH,MAAM,cACFC,EADE,gBAEFC,EAFE,gBAGFC,EAHE,kBAIFC,EAJE,kBAKFC,EALE,eAMF1F,EANE,WAOF2E,GFVuB,KAAoD,IAAnD,sBAACU,EAAD,cAAwB7iB,GAA2B,EAC/E,MAAMmjB,GAAWC,EAAAA,EAAAA,eACXC,GAAS9jB,EAAAA,EAAAA,YAAW+jB,EAAAA,IAEnB9F,EAAgB+F,IAAqB3d,EAAAA,EAAAA,UAASid,IAErD5b,EAAAA,EAAAA,YAAU,KACNsc,EAAkBV,KACnB,CAACA,IAEJ,MACMV,IAAc/L,EAAAA,EAAAA,QAAOoH,EAAgBqF,GAErCC,GAAgBrZ,EAAAA,EAAAA,cAAa6W,IAC/BiD,GAAmBC,GACRlD,EAAWE,QAAO,CAACL,EAAWsD,KACjC,MAAM,cAACzjB,EAAD,UAAgBmhB,EAAhB,MAA2BhkB,GAASsmB,EAC1C,OAAOC,EAAAA,EAAAA,KAAa,CAChBxkB,OAAQihB,EACRngB,cAAAA,EACAmhB,UAAAA,EACAhkB,MAAAA,EACAwmB,aAZK,MAcVH,OAER,IAEGT,GAAkBtZ,EAAAA,EAAAA,cAAY,IAAiC,IAAhC,MAACzL,EAAD,cAAQgC,EAAR,IAAuBS,GAAS,EACjE8iB,GACKC,IACGI,EAAAA,EAAAA,KAAc,CACV1kB,OAAQskB,EACRxjB,cAAAA,EACAS,IAAAA,EACAzC,MAAAA,EACA2lB,aA1BK,QA6BlB,IAEGX,GAAkBvZ,EAAAA,EAAAA,cAAY,IAA0B,IAAzB,cAACzJ,EAAD,IAAgBS,GAAS,EAC1D8iB,GACKC,IACGK,EAAAA,EAAAA,KAAgB,CAAC3kB,OAAQskB,EAAexjB,cAAAA,EAAeS,IAAAA,EAAKkjB,aAlCnD,QAoClB,IAiBH,MAAO,CACHb,cAAAA,EACAC,gBAAAA,EACAC,gBAAAA,EACAC,mBAnBsBxZ,EAAAA,EAAAA,cAAY,KAClC8Z,EAAkBV,KACnB,CAACA,IAkBAK,mBAhBsBzZ,EAAAA,EAAAA,cAAY,KAClC0Z,EACIW,EAAAA,GAAAA,QAAAA,gBAAgC,CAC5B9lB,MAAOwf,EACPxd,cAAeA,EACfS,IAAK+c,EAAe/c,IACpB4iB,OAAAA,OAGT,CAAC7F,EAAgBxd,EAAeqjB,EAAQF,IAQvC3F,eAAAA,EACA2E,WAAAA,IE3DA4B,CAAgB,CAAC/jB,cAAAA,EAAe6iB,sBAAAA,IAC9BlL,GAAOxY,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnB4kB,GAAiB7kB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,mBAEnC,OACI,kBAAC,gBAAD,CAAkBhB,MAAOskB,GACrB,kBAAC,EAAAjjB,IAAD,KACI,kBAACohB,EAAD,CACI7gB,cAAeA,EACfS,IAAK+c,MAAAA,OAAF,EAAEA,EAAgB/c,IACrBqgB,gBAAiBkD,EAAiBlB,OAAgBjR,IAEtD,kBAAC2P,EAAD,CACIxhB,cAAeA,EACfwd,eAAgBA,EAChBiE,0BAA2BA,IAE9BuC,GACG,kBAAC9B,EAAD,CACIvK,KAAMA,EACN8J,0BAA2BA,EAC3BzhB,cAAeA,EACfwd,eAAgBA,EAChB2E,WAAYA,EACZC,kBAAmBY,EACnBX,kBAAmBU,EACnBjC,gBAAiBgC,EACjBrd,SAAUwd,EACV/B,QAASgC,OCvDpBtoB,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF8G,SAAU,WACV3I,gBAAiB,OACjBuI,UAAW,qBACX/G,SAAU,UAEdkM,OAAQ,CACJvE,QAAS,OACTS,WAAY,SACZ/B,OAAQ,OACRlE,YAAa,OACb2E,UAAY,aAAYjF,EAAMG,QAAQC,WAE1CylB,YAAa,CACT3lB,MAAO,4BACPlC,SAAU,OACVF,WAAY,QAEhBgoB,YAAa,CACT5gB,UAAW,oBACX/G,SAAU,QAEdoM,KAAM,CACF1M,QAAS,QAEbkoB,iBAAkB,CACdpf,WAAY,EACZ1G,aAAc,QAElB+lB,cAAe,CACXrf,WAAY,MACZzG,MAAO,yBACPlC,SAAU,OACVF,WAAY,QAEhBmoB,SAAU,CACN/lB,MAAO,QACPrC,QAAS,OCfJqoB,EAA0B,IAA2E,IAA1E,UAAChpB,EAAD,eAAYkiB,EAAZ,mBAA4B+G,EAA5B,cAAgDvkB,GAA0B,EAC9G,MAAM3E,EAAST,IACTsE,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClDolB,GACFrlB,EAAAA,EAAAA,cAAaslB,GAAUrlB,EAAAA,GAAAA,UAAAA,kBAAgCqlB,EAAOvlB,MAAAA,OAAvC,EAAuCA,EAAQuB,QAAU,GAE9EikB,GADavlB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACGF,EAASslB,EACrCG,GAAuBxlB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gCAAgD,GACnFqiB,EACFkD,EAAqBzlB,MAAAA,OAAD,EAACA,EAAQa,QAAS4kB,MAAAA,OAAtC,EAAsCA,EAAsBC,UAAW,IAEpEC,EAAWC,IAAgBlf,EAAAA,EAAAA,WAAkB,IACpDqB,EAAAA,EAAAA,YAAU,KACN6d,GAAaJ,MAAAA,OAAA,EAAAA,EAAcK,sBAAsBvH,MAAAA,OAApC,EAAoCA,EAAgB/c,QAClE,CAAC+c,MAAAA,OAAD,EAACA,EAAgB/c,IAAKikB,IAEzB,MAAMM,GAAevb,EAAAA,EAAAA,cAAY,KAC7B8a,EAAmB/G,EAAe/c,OACnC,CAAC+c,MAAAA,OAAD,EAACA,EAAgB/c,MAEpB,OACI,kBAAC,EAAAhB,IAAD,CAAKnE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAAmE,IAAD,CAAKnE,UAAWD,EAAOoN,QACnB,kBAAC,EAAA5L,WAAD,CAAYvB,UAAWD,EAAO4oB,aAAclnB,IAAAA,KAAU,aAE1D,kBAAC,EAAA0C,IAAD,CAAKnE,UAAWD,EAAO6oB,aACnB,kBAAC,EAAAzkB,IAAD,CAAKnE,UAAWD,EAAOsN,MACnB,kBAAC,EAAAsc,iBAAD,CACIvoB,QAAS,CAACE,KAAMvB,EAAO8oB,iBAAkB1lB,MAAOpD,EAAO+oB,eACvDc,QACI,kBAAC,EAAAhU,SAAD,CACI5V,UAAWD,EAAOgpB,SAClBlT,QAAS0T,EACT9gB,SAAUihB,EACV1mB,MAAM,YAGdG,MAAO1B,IAAAA,KAAU,oBAErB,kBAAC6lB,EAAD,CACI5iB,cAAeA,EACfyhB,0BAA2BA,EAC3BjE,eAAgBA,QClE3B5iB,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFsH,QAAS,OACTvB,MAAO,OACPY,UAAW,OACXX,OAAQ,sBAEZ7D,KAAM,CACFsY,KAAM,YAEV8N,QAAS,CACLxiB,MAAO,aCEFyiB,EAAmB,IAMnB,IANoB,gBAC7B7I,EAAkB,GADW,yBAE7B8I,EAF6B,4BAG7BC,EAH6B,mBAI7Bf,EAJ6B,cAK7BvkB,GACS,EACT,MAAOyc,EAAqBD,IAA0B5W,EAAAA,EAAAA,UAAiB,IACvEqB,EAAAA,EAAAA,YAAU,KAIFse,EAHCF,EAG2B9I,EAAgBiJ,WAAWxnB,GAAUA,EAAMyC,MAAQ4kB,IAFnD,KAIjC,CAACA,EAA0B9I,IAE9B,MAAMgJ,GAA8B9b,EAAAA,EAAAA,cAC/BtM,IAAkB,MACfqf,EAAuBrf,GACvBmoB,EAA2B,UAAC/I,EAAgBpf,UAAjB,aAAC,EAAwBsD,OAExD,CAAC8b,IAEClhB,EAAST,IAEf,OACI,kBAAC,EAAA6E,IAAD,CAAKnE,UAAWD,EAAOuB,MACnB,kBAAC2gB,EAAD,CACId,oBAAqBA,EACrBD,uBAAwB+I,EACxBhJ,gBAAiBA,EACjBjhB,UAAWD,EAAO0D,OAEtB,kBAACulB,EAAD,CACIC,mBAAoBA,EACpB/G,eAAgBjB,EAAgBE,GAChCnhB,UAAWD,EAAO8pB,QAClBnlB,cAAeA,M,4BClDxB,MAAMpF,IAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACFX,QAAS,SACTsH,UAAW,OACXX,OAAQ,sBAEZG,KAAM,CACF9G,QAAS,WCeJwpB,GAAc,IAUd,IAVe,MACxBC,EADwB,cAExBC,EAFwB,cAGxBC,EAHwB,gBAIxBC,EAJwB,YAKxBlQ,EALwB,eAMxBC,EANwB,WAOxBE,EAPwB,aAQxBgQ,EARwB,SASxBjQ,GACS,EACT,MAAMxa,EAAST,KAETmrB,EAA6B3hB,GAE3B,kBAAC4hB,GAAA,EAAD,CACI5hB,GAAIA,EACJgM,SAAUuV,EAAchkB,SAASyC,GACjC8Q,cAAwC,IAAzByQ,EAAcpkB,OAC7BmU,SAAU,IAAMkQ,EAAcxhB,GAC9BoR,WAAY,IAAMqQ,EAAgBzhB,GAClCuR,YAAa,IAAMA,EAAYvR,GAC/BwR,eAAgB,IAAMA,EAAexR,GACrC0R,WAAY,IAAMA,EAAW1R,GAC7BoE,QAAS,IAAMsd,EAAa1hB,GAC5ByR,SAAUA,EAAW,IAAMA,EAASzR,QAAMyN,EAC1C0D,eAAa,IAKzB,OACI,kBAAC,EAAA9V,IAAD,CAAKnE,UAAWD,EAAOuB,MACnB,kBAAC,EAAAqgB,KAAD,CAAM/B,WAAS,GACVwK,EAAMpjB,KAAI,QAAC,GAAC8B,EAAD,IAAK4P,GAAN,SACP,kBAAC,EAAAiJ,KAAD,CAAMva,IAAK0B,EAAI1H,QAAS,CAACqG,KAAM1H,EAAO0H,MAAOA,MAAI,GAC7C,kBAACsa,EAAA,EAAD,CACI1hB,KAAMgY,EAAAA,EAAAA,MACNnL,QAAS,IAAMsd,EAAa1hB,GAC5B4P,IAAKA,EACLE,QAAS6R,EAA0B3hB,YC9DlDxJ,IAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChC6nB,aAAc,CACV7pB,SAAU,OACVC,WAAY,IACZiC,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BmnB,cAAe,iBCOVC,GAAa,IAA4D,IAA3D,cAACR,EAAD,MAAgBD,EAAhB,YAAuBU,EAAvB,WAAoCC,GAAuB,EAClF,MAAMhrB,EAAST,KACT0rB,EAAmBX,EAAcpkB,SAAWmkB,EAAMnkB,OAExD,OACI,kBAAC,EAAAY,KAAD,CACIoI,UAAU,SACVgc,UAAU,OACV7pB,QAAS,CAACuI,OAAQ5J,EAAO4qB,cACzBzd,QAAS8d,EAAmBD,EAAaD,GAExCE,EAAmBvpB,IAAAA,KAAU,mBAAqBA,IAAAA,KAAU,uB,+DCvBlE,MAAMnC,IAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC2rB,eAAgB,CACZloB,MAAO,OACPlC,SAAU,OACV2I,WAAY,QAEhB0hB,YAAa,CACTnoB,MAAO,OACPlC,SAAU,OACV2I,WAAY,QAEhB2hB,aAAc,CACVpoB,MAAO,OACPlC,SAAU,OACV2I,WAAY,QAEhBvG,QAAS,CACLoE,OAAQ,OACRD,MAAO,MACPoC,WAAY,OACZhK,gBAAiB,8BCLZ4rB,GAAc,IAAsD,IAArD,WAAC7Q,EAAD,QAAa8Q,EAAb,SAAsBC,EAAtB,SAAgChR,GAAqB,EAC7E,MAAMxa,EAAST,KAEf,OACI,oCACKisB,GACG,kBAAC,EAAAve,OAAD,CAAQxL,QAAQ,YAAYwB,MAAM,UAAUkK,QAASqe,EAAUC,UAAW,kBAACC,GAAA,EAAD,OACrEhqB,IAAAA,KAAU,WAGlB+Y,GAAc+Q,GAAY,yBAAKvrB,UAAWD,EAAOmD,UACjDsX,GACG,kBAAC,KAAD,CACIxa,UAAWD,EAAOmrB,eAClBrc,aAAcpN,IAAAA,KAAU,2BACxBtB,KAAMkb,GAAAA,EACNnO,QAASsN,IAGhB8Q,GACG,kBAAC,KAAD,CACItrB,UAAWD,EAAOorB,YAClBtc,aAAcpN,IAAAA,KAAU,aACxBtB,KAAMurB,GAAAA,EACNxe,QAASoe,IAGhB/Q,GACG,kBAAC,KAAD,CACIva,UAAWD,EAAOqrB,aAClBvc,aAAcpN,IAAAA,KAAU,yBACxBtB,KAAMwrB,GAAAA,EACNze,QAASqN,MCqI7B,GAtJ+B,IAYlB,IAZmB,gBAC5B0G,EAD4B,KAE5BnP,EAF4B,QAG5BD,EAH4B,yBAI5BkY,EAJ4B,4BAK5BC,EAL4B,cAM5BtlB,EAN4B,WAO5B8V,EAP4B,YAQ5BH,EAR4B,eAS5BC,EAT4B,SAU5BiR,EAV4B,kBAW5BzE,GACS,EACT,MAAOuD,EAAeuB,IAAoBthB,EAAAA,EAAAA,UAAmB,KACtD+R,EAAMwP,IAAWvhB,EAAAA,EAAAA,UAAe6R,GAAAA,EAAAA,cACjCiK,GAAaviB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gBAE/B6H,EAAAA,EAAAA,YAAU,KACNkgB,EAAQ9B,EAA2B5N,GAAAA,EAAAA,aAAoBA,GAAAA,EAAAA,gBACxD,CAAC4N,IAEJ,MAAM+B,EAAa7K,EAAgBja,KAAKmhB,IAAD,CACnCzP,KAAKsJ,EAAAA,EAAAA,KAAgCmG,GACrC4D,aAAaC,EAAAA,EAAAA,KAAuB7D,GACpCrf,GAAIqf,EAAUhjB,QAiCZ8mB,EAAmBnjB,IACrBuR,EAAYyR,EAAWjnB,MAAKqnB,EAAAA,EAAAA,QAAO,KAAMpjB,IAAKijB,cAO5C9C,EAAsBngB,IACxB,MAAMoZ,EAAiBjB,EAAgBpc,MAAK,QAAC,IAACM,GAAF,SAAWA,IAAQ2D,KAC/DwR,EAAe4H,IAGbiK,EAAgBrjB,IAClBge,EAAkB,CAAC3hB,IAAK2D,EAAIpE,cAAAA,KAW1B0nB,EAAgB/P,IAASF,GAAAA,EAAAA,aACzBkQ,EAAgBhQ,IAASF,GAAAA,EAAAA,aACzBmQ,EAAmBjC,EAAcpkB,OAAS,EAC1CsmB,EAAkCF,GAAkBD,GAAiBE,EAErEE,GAAsBpG,GAAcmG,EACpCE,GAAsBrG,IAAeiG,GAAkBD,IAAkBE,GAEzExQ,EAAasQ,GAAiBE,GAChC,kBAACzB,GAAD,CACIT,MAAO0B,EACPzB,cAAeA,EACfU,WAvDe,KACnBa,EAAiB,KAuDbd,YA5DgB,KACpBc,GAAiBc,EAAAA,EAAAA,OAAM,KAAMZ,OA+D3B7P,EACF,kBAACoP,GAAD,CACI9Q,SAAUiS,EA3BgB,MACXJ,EAAgB/B,EAAgB,CAACN,IACzC4C,SAASxnB,IAChBgnB,EAAahnB,MAEbklB,EAAcpkB,QAAQ2lB,EAAiB,UAsBoBrV,EAC3DiE,WAAY+R,EA3DgB,KAChC,MAAMK,EAAeR,GACfS,EAAAA,EAAAA,OACItZ,EAAAA,EAAAA,SAAO,QAAC,GAACzK,GAAF,SAAUuhB,EAAchkB,SAASyC,OACxC4jB,EAAAA,EAAAA,OAAM,eAFVG,CAGEf,GACF,CAACA,EAAWjnB,MAAKqnB,EAAAA,EAAAA,QAAO,KAAMnC,IAA2BgC,aAC/DvR,EAAWoS,SAoDqErW,EAC5E+U,QAASe,EA1Ce,KAC5BJ,EAAgBlC,SAyCuCxT,EACnDgV,SAAUkB,EAAqBlB,OAAWhV,IASlD,OACI,kBAAC6F,GAAA,EAAD,CACIC,KAAMA,EACNvK,KAAMA,EACNwK,aAAcuP,EACd1e,OAAQ,CACJyD,KAAMkL,EACNjL,MAAOoL,GAEXpK,QAASA,GAERua,GACG,kBAACjC,GAAD,CACIC,MAAO0B,EACPzB,cAAeA,EACfC,cArGMxhB,IAClB8iB,GAAkBxB,GAAU,IAAIA,EAAOthB,MAqG3ByhB,gBAlGQzhB,IACpB8iB,GAAkBxB,GAAUA,EAAM7W,QAAQ9L,GAASA,IAASqB,OAkGhDuR,YAAa4R,EACb3R,eAAgB2O,EAChBzO,WA/EQ1R,IACpB0R,EAAW,CAACsR,EAAWjnB,MAAKqnB,EAAAA,EAAAA,QAAO,KAAMpjB,IAAKijB,eA+ElCvB,aAzBY1hB,IACxBkhB,EAA4BlhB,GAC5B+iB,EAAQ1P,GAAAA,EAAAA,eAwBI5B,SAAW6L,OAA4B7P,EAAf4V,IAG/BE,GACG,kBAACvC,EAAD,CACIb,mBAAoBA,EACpBe,4BAA6BA,EAC7BD,yBAA0BA,EAC1B9I,gBAAiBA,EACjBvc,cAAeA,M,gBCtK5B,MAAMpF,IAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCgqB,SAAU,CACN1kB,SAAU,WACVQ,QAAS,OACTvB,MAAO,OACPmI,SAAU,EACVud,WAAY,EACZC,SAAU,SACVtjB,UAAW,MACXzI,SAAU,UAGdgsB,oBAAqB,IAA2C,IAA1C,WAACpV,EAAD,YAAaC,GAA6B,EAC5D,MAAO,CACHrY,gBAAiB,QACjB4H,MAAOwQ,EACPvQ,OAAQwQ,EACR1P,SAAU,WACVyI,MAAO,EACPJ,OAAQ,YAGhByc,WAAY,IAA2C,IAA1C,WAACrV,EAAD,YAAaC,GAA6B,EACnD,MAAO,CACHlP,QAAS,OACT4H,eAAgB,SAChBnH,WAAY,SACZhC,MAAOwQ,EACPvQ,OAAQwQ,EACRrY,iBAAiBoV,EAAAA,EAAAA,MAAK/R,EAAMG,QAAQM,QAAQE,KAAM,OAG1D0pB,OAAQ,CACJnqB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B3C,SAAU,OACVF,WAAY,OACZuU,cAAe,EACfiY,UAAW,SACXnsB,SAAU,SACVD,WAAY,SACZE,aAAc,gB,yHCLtB,MAsJA,GAtJ4B,IAcf,IAdgB,cACzBwD,EADyB,gBAEzBuc,EAAkB,GAFO,YAGzBoM,EAHyB,QAIzBzU,GAAU,EAJe,gBAKzB0U,EAAkB,EALO,SAMzBnsB,EANyB,SAOzBoqB,EAPyB,kBAQzBzE,EARyB,UASzByG,EAAYC,GAAAA,GATa,OAUzBC,EAVyB,UAWzB5H,EAXyB,UAYzB6H,EAZyB,iCAazBC,GACS,EACT,MAAM/pB,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClDsiB,GAAaviB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACzB+jB,GAAWC,EAAAA,EAAAA,eACX/nB,EAAST,GAAUiuB,IACzB5hB,EAAAA,EAAAA,YAAU,KACN,GAAI8hB,GAAUE,EAAkC,CAC5C,MAAMC,EAAqBF,EAAYD,EAAOI,cAAgBJ,EAAOK,YACjEF,EAAqB3M,EAAgBhb,QACrC0nB,EAAiC,CAC7B9H,UAAAA,EACAvhB,iBAAkBI,EAAcS,IAChC4oB,kBAAmBrpB,EAAc0e,KACjCgC,OAAQ,GACR4I,iBAAkBJ,OAI/B,CAACH,EAAQE,EAAkCjpB,EAAemhB,EAAW5E,EAAgBhb,OAAQynB,IAEhG,MAAMO,GAAYtgB,EAAAA,EAAAA,WACXugB,EAAUC,IAAe7jB,EAAAA,EAAAA,UAAiB,IAC1C8jB,EAAmBC,IAAwB/jB,EAAAA,EAAAA,UAAiB,GAE7DgkB,GAA4BrqB,EAAAA,EAAAA,YAAWsqB,EAAAA,IACtCC,EAAcC,IAAmBnkB,EAAAA,EAAAA,WAAkB,IACnDyf,EAA0BC,IAA+B1f,EAAAA,EAAAA,YAE1DokB,GAA8BvgB,EAAAA,EAAAA,cAC/B9G,IACG,MAAM,YAACsnB,EAAD,WAAc9W,GAAc0V,EAC5BqB,EAAoBC,KAAKC,OAAOznB,EAAQsnB,IAAgB9W,EAAa8W,IAAgBrB,EACrFyB,EACF1nB,EAAQsnB,GAAeC,EAAoBtB,IAAoBzV,EAAa8W,GAC5EK,GAAAA,GACJb,EAAYS,GACR3N,EAAgBhb,OAAS2oB,EACzBP,EAAqBpN,EAAgBhb,OAAS2oB,GAAqBG,EAAiB,EAAI,IAExFV,EAAqB,KAG7B,CAACpN,EAAgBhb,OAAQqnB,EAAiBC,IAGxC0B,GAAe9gB,EAAAA,EAAAA,cAChB9G,IACGqnB,EAA4BrnB,GAC5B4mB,EAAUriB,QAAUvE,IAExB,CAACqnB,KAGL/iB,EAAAA,EAAAA,YAAU,KACFsiB,EAAUriB,SACV8iB,EAA4BT,EAAUriB,WAE3C,CAACqV,EAAgBhb,OAAQyoB,IAE5B,MAAMQ,GAA+B/gB,EAAAA,EAAAA,cAChChJ,IACQmpB,IACDtE,EAA4B7kB,GAC5BspB,GAAgB,MAGxB,CAACH,IAGCa,GAAgChhB,EAAAA,EAAAA,cAAY,KAC9CsgB,GAAgB,KACjB,IAEGW,EAAkBC,GCvHSA,CAAAA,IACjCA,EAAK1C,SAAQ,CAAC2C,EAAKztB,KACf,IACI,GAZWytB,CAAAA,KAFAA,CAAAA,GAAgBA,EAAIvtB,QAAQ,OAAS,GAA2B,IAAtButB,EAAIvtB,QAAQ,MAGpEwtB,CAAcD,IAEF,IAAIE,IAAIF,GACTG,OAAS9R,SAAS8R,KAQtBC,CAAcJ,GAAM,CACpB,MAAMK,EAAS5Q,SAAS6Q,cAAc,UACtCD,EAAOE,aAAa,QAAS,kBAC7BF,EAAOE,aAAa,MAAOP,GAC3BvQ,SAAS1R,KAAKyiB,YAAYH,GAC1BI,YAAW,IAAMhR,SAAS1R,KAAK2iB,YAAYL,IAV/B,KAUyC9tB,EAAQ,QAC1D,CACH,MAAM2B,EAAOub,SAAS6Q,cAAc,KACpCpsB,EAAKsD,KAAOwoB,EACZ9rB,EAAKysB,SAxBOX,CAAAA,GAAgBA,EAAI1sB,MAAM,KAAKstB,MAwB3BC,CAAmBb,GACnCvQ,SAAS1R,KAAKyiB,YAAYtsB,GAC1BA,EAAK4sB,QACLrR,SAAS1R,KAAK2iB,YAAYxsB,IAEhC,MAAOwI,GACLU,QAAQ4K,MAAMtL,QDqGqBqkB,CAAqBhB,GAC1DpD,EAAmBqD,GAAgBgB,UAAUC,UAAUC,UAAUlB,GAEjErG,GAAqB9a,EAAAA,EAAAA,cACtB+T,IACOkE,GACAqK,EAAAA,EAAAA,KAA4B7sB,EAAOuB,IAAK+c,EAAe/c,KAAKqH,MAAK,IAAc,IAAb,OAAC3C,GAAY,EAC5D,YAAXA,GACAge,EAASW,EAAAA,GAAAA,OAAAA,QAAAA,qBAA4CtG,OAI7D2F,EACIW,EAAAA,GAAAA,iBAAAA,QAAAA,qBAAsD,CAClD5mB,UAAWgC,EAAOuB,IAClBzC,MAAOwf,OAKvB,CAACkE,EAAYxiB,EAAOuB,IAAK0iB,IAGvB6I,E,+UAAmB,CAAH,CAClBC,yBAA0BzB,GACtBtW,GAAW,CACX4B,WAAY4U,EACZ/U,YAAa4R,EACb3R,eAAgB2O,IAIxB,OACI,oCACI,kBAAC,IAAD,CAAqB2H,aAAa,EAAMC,SAAU5B,IAClD,kBAAC,GAAD,CACIhO,gBAAiBA,EACjBnP,KAAM0c,EACN3c,QAASsd,EACTnF,4BAA6BA,EAC7BD,yBAA0BA,EAC1BrlB,cAAeA,EACf8V,WAAY4U,EACZ/U,YAAa4R,EACb3R,eAAgB2O,EAChBsC,SAAUA,EACVzE,kBAAmBA,IAEvB,yBAAK9mB,UAAWD,EAAO+sB,UAClB3rB,EACA8f,EAAgB3a,MAAM,EAAG4nB,GAAUlnB,IAAIqmB,EAAYqD,IACnDtC,EAAoB,GACjB,yBAAKpuB,UAAWD,EAAOktB,qBACnB,yBAAKjtB,UAAWD,EAAOmtB,WAAYhgB,QAAS,IAAMgiB,KAC9C,kBAAC,EAAA3tB,WAAD,CAAYvB,UAAWD,EAAOotB,QAAU,IAAGiB,W,0DEvLhE,MAAM1M,EAAcrJ,EAAAA,EAAAA,MAAAA,WACdyY,EAAezY,EAAAA,EAAAA,MAAAA,YAEf2W,EAA0B,EAE1BxB,EAAqB,CAACmB,YAHP,EAGkC9W,WAAY6J,EAAa5J,YAAagZ,I,+KCL7F,MAAMxxB,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChC8c,UAAW,CACPtY,OAAQ,OACRypB,aAAalc,EAAAA,EAAAA,IAAK/R,EAAMG,QAAQM,QAAQE,KAAM,MAElDN,MAAO,CACHC,YAAa,MACb+N,aAAc,MACdrQ,SAAU,OACVF,WAAY,OACZoC,MAAOF,EAAMG,QAAQM,QAAQE,UCSxBoc,GAAkBxK,EAAAA,EAAAA,GAAYyK,EAAAA,MAuD3C,EA7Ce,IAAqE,IAApE,UAAC9f,EAAD,cAAY0E,EAAZ,YAA2BssB,EAAc,GAAzC,WAA6CC,GAAuB,EAChF,MAAMlxB,EAAST,IACTuoB,GAAWC,EAAAA,EAAAA,eAEXlmB,ECxBkB,EAACgC,EAAgBotB,KAA6B,MACtE,MAAME,EAAeF,MAAAA,GAAH,UAAGA,EAAc,UAAjB,aAAG,EAAkB7rB,IACjCgsB,EAAsBD,GAAeE,EAAAA,EAAAA,KAA6BF,GAAgB,KACxF,OAAOC,IAAuBE,EAAAA,EAAAA,KAAYF,GAAuBA,EAAsBvtB,MAAAA,OAAhF,EAAgFA,EAAQuB,KDqB7EmsB,EADHrtB,EAAAA,EAAAA,YAAWstB,EAAAA,GACaP,GAEjC9jB,GAAUiB,EAAAA,EAAAA,cAAY,KACxB0Z,EAAS2J,EAAAA,GAAAA,QAAAA,WAAsB,CAACrsB,IAAKvD,EAAWmmB,OAAQ,KAAM0J,OAAQ,eACvE,CAAC5J,EAAUjmB,IAEd,IAAKqvB,EACD,OAAO,KAGX,MAAMpiB,EAAemiB,EAAY/qB,OAC3B+qB,EAAYhqB,KAAI,CAACtE,EAAOsD,IACtB,yBAAKoB,IAAKpB,IACL0rB,EAAAA,EAAAA,KAAmBhtB,IAChBO,EAAAA,EAAAA,KAAUvC,EAA2BS,OAErC,kBAACwuB,EAAA,EAAD,CACIjvB,OAAOkvB,EAAAA,EAAAA,KAAkBlvB,GACzBmvB,oBAAoBC,EAAAA,EAAAA,KAA0BptB,GAC9CqtB,MAAM,OAKpB,KAEN,OACI,kBAAClS,EAAD,CACIhR,aAAcA,EACdqR,iBAAiB,SACjB/c,MAAQ,KAAI8tB,IACZzvB,QAAQ,WACR0L,QAAStL,EAAYsL,OAAUqJ,EAC/BnV,QAAS,CACLE,KAAMd,GAAAA,CAAWT,EAAO6f,UAAW5f,GACnCmD,MAAOpD,EAAOoD,W,2HExD9B,MAQa6uB,EAAwB,CACjCttB,EACAhC,EACAuvB,EACAluB,KAEA,MAAMmuB,EAdsB,EAACxtB,EAA8ButB,KAC3D,MAAME,EAAoBF,EAAmBptB,MAAMsjB,GACxCA,EAAUhjB,MAAQT,EAAcS,MAG3C,OAAOgtB,GAAqBtT,MAAMuT,QAAQD,EAAkBhxB,UAAYgxB,EAAkBhxB,SAAW,IASxEkxB,CAAwB3tB,EAAeutB,GACpE,IAAIK,GAAmB5tB,MAAAA,OAAA,EAAAA,EAAesgB,cAActgB,MAAAA,OAA7B,EAA6BA,EAAe6tB,sBAAuB,GAK1F,OAJIL,EAAqBjsB,SACrBqsB,EAAmBA,EAAiB/e,QAAQuR,GAAaoN,EAAqB7rB,SAASye,EAAS3f,QAG7FmtB,EAAiBpN,QAAO,CAACsN,EAAKrK,KACjC,MAAM/C,EAASqN,EAAc/vB,EAAMylB,EAAU/E,MAA2Brf,EAAUkuB,GAQlF,OAPI7M,GAAUA,EAAOnf,SACb4Y,MAAMuT,QAAQhN,EAAO,IACrBoN,EAAIjsB,KAAK,CAAC,CAAC4hB,EAAUhjB,KAAMigB,EAAO,KAElCoN,EAAIjsB,KAAK,CAAC,CAAC4hB,EAAUhjB,KAAMigB,KAG5BoN,IACR,KAYDC,EAAgB,CAACrN,EAA0BrhB,EAAoBkuB,KACjE,GAAK7M,GAA4B,IAAlBA,EAAOnf,OAEtB,OAAOmf,EAAOF,QAAO,CAACsN,EAAKE,KACvB,GAAI,SAAUA,GAAkBA,EAAejuB,KAAM,CACjD,MAAM/B,EAAQ,eAAgBgwB,EAAiBA,EAAeC,WAAaD,EAAehwB,MACpFgC,GAAgBC,EAAAA,EAAAA,KAAuBZ,EAAU2uB,EAAejuB,MAClE/B,GAA0B,iBAAVA,IAAsBkwB,EAAAA,EAAAA,KAAKF,GAC3CF,EAAIjsB,KAAKssB,EAA8BnwB,EAAOgC,IACvChC,GAA0B,iBAAVA,IAAuBmc,MAAMuT,QAAQ1vB,IAC5D8vB,EAAIjsB,KAAKyrB,EAAsBttB,EAAehC,EAAOuvB,EAAoBluB,IAGjF,OAAOyuB,IACR,KAGMK,EAAgC,CAACnwB,EAAuBgC,KACjE,OAAQA,MAAAA,OAAR,EAAQA,EAAeD,MACnB,KAAKquB,EAAAA,IAAAA,UACD,OAAO,IAAIC,KAAKrwB,GAAiBswB,UACrC,KAAKF,EAAAA,IAAAA,eACD,OAAKG,MAAMtP,OAAOjhB,IAGP,IAAIqwB,KAAKrwB,GAAiBswB,UAF1B,IAAID,KAAKpP,OAAOjhB,IAAQswB,UAKvC,QACI,OAAOtwB,I,gNCnFnB,MAcA,EAdkE5C,GAE1D,2BAAKuH,MAAO,GAAIC,OAAQ,GAAI+I,QAAQ,aAAgBvQ,GAChD,0BACIyQ,EAAE,8FACFJ,KAAK,UACLuH,OAAO,OACPC,YAAa,EACbvH,SAAS,a,wFCRlB,MAAM9Q,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCU,KAAM,CACFR,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,YCWlBwvB,GAAkBj0B,EAAAA,EAAAA,aACpB,CAAC,EAA6DE,KAAsC,IAAnG,MAACuD,EAAD,cAAQgC,EAAR,SAAuBvD,EAAvB,UAAiCnB,EAAjC,QAA4CkN,GAAuD,EAChG,MAAMnN,EAAST,IACT6zB,GAAStvB,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,YACrB,oBAACC,IAAuBpvB,EAAAA,EAAAA,YAAWqvB,EAAAA,GACnChE,EAAM+D,EAAoB,CAACF,OAAAA,EAAQhuB,IAAKT,EAAcS,IAAKzC,MAAO6wB,KAAKC,UAAU9wB,KAEvF,OACI,uBACIvD,IAAKA,EACL2H,KAAMwoB,EACNpiB,QAAUlB,IACNkB,IACAlB,EAAEsK,kBACFtK,EAAEC,kBAENjM,UAAWQ,GAAAA,CAAWT,EAAOyD,KAAMxD,IAElCmB,MAMjB+xB,EAAgB7zB,YAAc,kBAE9B,U,eCxCO,MAAMC,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChC8c,UAAW,CACPngB,gBAAiB,QACjB4H,MAAO,QACP2N,SAAU,QACV7L,SAAU,SAEdgE,OAAQ,CACJvE,QAAS,OACTtB,OAAQ,OACR+B,WAAY,SACZmH,eAAgB,gBAChBpN,YAAa,QAEjBvC,MAAO,CACHmC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVqU,cAAe,SACfvU,WAAY,QAEhB6yB,gBAAiB,CACbzwB,MAAO,mBACPlC,SAAU,OACVsC,YAAa,OACbswB,cAAe,OACf9yB,WAAY,QAEhBsC,QAAS,CACLoE,OAAQ,OACRD,MAAO,MACP5H,gBAAiB,oBAErBk0B,YAAa,CACT3wB,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVqU,cAAe,SACfvU,WAAY,OACZyG,MAAO,SAEXgG,KAAM,CACFoS,aAAc,6BACd9e,QAAS,cAEbizB,OAAQ,CACJhrB,QAAS,OACTS,WAAY,SACZ/B,OAAQ,OACRlE,YAAa,OACbJ,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B3C,SAAU,OACVqU,cAAe,IACfvU,WAAY,QAEhBizB,YAAa,CACTvsB,OAAQ,OACRD,MAAO,QAEXysB,gBAAiB,CACblrB,QAAS,OACTyX,cAAe,MACfhX,WAAY,UAEhB0qB,YAAa,CACT/wB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B3C,SAAU,OACVqU,cAAe,IACfvU,WAAY,OACZ8C,eAAgB,OAChBN,YAAa,MACbmC,UAAW,cAEfpF,KAAM,CACFsX,OAAQ,mBAEZhR,QAAS,CACLzD,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BgN,OAAQ,WAEZujB,aAAc,CACVvjB,OAAQ,eAIHwjB,GAA2B10B,EAAAA,EAAAA,GAAW,CAC/CmW,QAAS,CACLjW,gBAAiB,QACjBsI,UAAW,8FACXpH,QAAS,EACTkH,aAAc,MACdsB,SAAU,QAEd2U,MAAO,CACH,YAAa,CACTre,gBAAiB,Y,wHCzE7B,MAaay0B,EAAyB,IAA+E,IAA9E,MAACxxB,EAAD,cAAQgC,EAAR,OAAuByvB,EAAS,GAAhC,eAAoCC,EAApC,cAAoDC,GAA0B,EACjH,MAAOC,EAAUC,IAAejqB,EAAAA,EAAAA,UAAmB,KAC5CkqB,EAAOC,IAAYnqB,EAAAA,EAAAA,UAAS,GAC7B1G,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAA6B,GAClD4wB,GAAcC,EAAAA,EAAAA,KACd50B,EAAST,IAETs1B,GACF/wB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gCAAgD,GAC1D+wB,EAAaV,EAAOU,YAAcjxB,EAAOa,KAEzCqwB,EAAyBN,EAxBG,GA0BlC7oB,EAAAA,EAAAA,YAAU,KACN,MAAMopB,GAAUC,EAAAA,EAAAA,KAAoC,CAACtyB,MAAAA,EAAOgC,cAAAA,EAAemwB,WAAAA,IACrEI,E,8UAAU,CAAH,CACTC,IA7B0B,GA8BvBN,GAEPF,EAAYS,QAAQC,IAAI,EAACC,EAAAA,EAAAA,KAAoBN,EAASE,IAAUK,EAAAA,EAAAA,KAAUP,EAASE,MAC9EzoB,MAAM+oB,IACH,MAAOjB,GAAU,MAACE,IAAUe,EAC5BhB,EAAY1V,MAAMuT,QAAQkC,GAAYA,EAAW,IACjDG,EAASD,MAEZ/nB,OAAM,KACH8nB,EAAY,IACZE,EAAS,QAElB,IAEH,MAAMe,EAAqBziB,QAAQohB,EAAOhxB,OAC1C,OACI,yBAAKnD,UAAWD,EAAO6f,WACnB,yBAAK5f,UAAWD,EAAOoN,QACnB,yBAAKnN,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,mBACzC,yBAAKzB,UAAWD,EAAOmD,UACvB,yBAAKlD,UAAWD,EAAO4zB,aAClBlyB,IAAAA,OAAY+yB,EAAO,OAAS,KAAiB,IAAVA,EAAc/yB,IAAAA,KAAU,QAAUA,IAAAA,KAAU,YAGvF+zB,GAAsB,yBAAKx1B,UAAWD,EAAO0zB,iBAAkBU,EAAOhxB,OACvE,yBAAKnD,UAAWD,EAAOsN,MAClBinB,EAASttB,KAAKyuB,GACX,yBAAKruB,IAAKquB,EAActwB,IAAKnF,UAAWD,EAAO+zB,iBAC3C,kBAAC4B,EAAA,EAAD,CAAc9xB,OAAQ6xB,EAAeE,gBAAiB51B,EAAO8zB,cAC7D,kBAAC9uB,EAAA,EAAD,CAAe/E,UAAWD,EAAOg0B,YAAarxB,OAAOsC,EAAAA,EAAAA,KAAoBywB,KACpExwB,EAAAA,EAAAA,KAASwwB,EAActyB,YAKvC2xB,GACG,yBAAK90B,UAAWD,EAAO6zB,QACnB,kBAAC,EAAD,CACIlxB,MAAO0xB,EACP1vB,cAAeA,EACf1E,UAAWD,EAAOi0B,aAClB9mB,QAASmnB,GAER5yB,IAAAA,KAAU,eC/DtBm0B,EAAkB,IAAwD,IAAvD,MAAClzB,EAAD,cAAQgC,EAAR,SAAuBvD,EAAvB,UAAiCnB,GAAsB,EACnF,MAAMD,EAASk0B,IACT4B,EAAgBv2B,IAChBuoB,GAAWC,EAAAA,EAAAA,eACXgO,GAAyB7xB,EAAAA,EAAAA,YAAW8xB,EAAAA,IAA6B,GACjEC,GAAoBC,EAAAA,EAAAA,KAASvxB,GAC7BX,GAAWF,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAA8B,GAErDoyB,EAAgBF,EAChBhE,EAAsBttB,EAAehC,EAAMA,MAA+BozB,EAAwB/xB,GAClG8uB,EACGnwB,EAA+BiwB,YAAejwB,EAAMA,MACrDgC,GAGFyxB,EACFL,EAAuB7W,MAAK,QAAC,IAAC9Z,GAAF,SAAWA,IAAQT,EAAcS,SAC3D0Z,MAAMuT,QAAQ8D,IAAkBA,EAAcjwB,SAC1C4Y,MAAMuT,QAAQ8D,MAAmBjrB,EAAAA,EAAAA,OAAMirB,IAE3C/D,EAAoB2D,EAAuBjxB,MAAK,QAAC,IAACM,GAAF,SAAWA,IAAQT,EAAcS,OAOjFivB,EAAiB+B,EAJnBtX,MAAMuT,QAAQ8D,GAC4BA,ENLhClvB,KAAKtE,GACRuiB,OAAOmR,YAAYnR,OAAOoR,QAAQ3zB,GAAOsE,KAAI,QAAEI,EAAK1E,GAAP,QAAkB,EAAC4zB,EAAAA,EAAAA,KAAelvB,GAAM1E,SALjD,EAACoiB,EAAyBpiB,IAA0B,CACnG,CAAC,CAACoiB,EAAS1B,MAAO1gB,IMSR6zB,CAAoC7xB,EAAewxB,QAES3f,EAEhEigB,EAAoB,KACtB3O,EAAS4O,EAAAA,GAAAA,QAAAA,wBAA4C,CAAC/zB,MAAO0xB,EAAgB1vB,cAAAA,MAGjF,OAAOyxB,EACH,kBAAC,EAAAllB,QAAD,CACIylB,aAAW,EACX5Y,OAAK,EACL3L,UAAU,cACV/Q,QAASrB,EACTc,MACI,kBAACqzB,EAAD,CACIxxB,MAAOwzB,EACP9B,eAAgBA,EAChB1vB,cAAeA,EACfyvB,OAAQhC,EAAkBwE,MAC1BtC,cAAemC,KAIvB,0BAAMx2B,UAAWA,GACb,kBAAC42B,EAAD,CAAc52B,UAAW61B,EAAc11B,OACvC,kBAAC,EAAD,CACI+M,QAASspB,EACTx2B,UAAW61B,EAAcpvB,QACzB/D,MAAO0xB,EACP1vB,cAAeA,GAEdvD,KAKb,oCAAGA,K,oTC5FX,MAKA,EALmBrB,IACf,MAAM,cAAC4E,GAAiB5E,EACxB,OCEW,MACC,aAAC4E,GAA2B,IAAZ5E,EAAY,uDAAJ,GAEhC,MAAM,iBACFmnB,EADE,gBAEFzB,EAFE,KAGFqR,EAHE,OAIFC,EAJE,WAKFC,EALE,UAMFrJ,EANE,SAOF9tB,GAEAE,EADGk3B,E,kXARP,CASIl3B,EATJ,4FAWA,OAAQ4E,EAAcD,MAClB,KAAKquB,EAAAA,IAAAA,YACD,OAAO,kBAACmE,EAAA,EAAoBn3B,GAChC,KAAKgzB,EAAAA,IAAAA,eACD,OAAO,kBAACoE,EAAA,EAAuBp3B,GACnC,QACI,OACI,kBAACq3B,EAAA,EAAD,GACIC,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAYj3B,EAAMoiB,iBACnD8U,ODzBSK,MAAM3yB,EAAe5E,K,+gBEiB1D,MAAMw3B,EAAiB,IAiBjB,IAjBkB,oBACpBC,EADoB,UAEpBzT,EAFoB,OAGpBlgB,EAHoB,UAIpBiiB,EAJoB,iBAKpBoB,EALoB,KAMpB5K,EANoB,WAOpB0a,EAPoB,UAQpBvQ,EARoB,SASpBrlB,EAToB,UAUpBnB,EAVoB,sBAWpBw3B,EAAwBC,EAAAA,EAXJ,gBAYpBjS,EAZoB,kBAapBuB,EAboB,kBAcpBD,EAdoB,2BAepB4Q,EAfoB,UAgBpBhK,GACE,EACF,MAAM,WAAC1I,EAAa,IAAMphB,GACnB+zB,EAAiBC,IAAsBttB,EAAAA,EAAAA,UAAS,IACjDutB,GAAkB1pB,EAAAA,EAAAA,cAAY,CAAC2pB,EAAap1B,KAC9Ck1B,GAAoBG,G,8UAAD,IACZA,EADY,CAEf,CAACD,GAAcp1B,QAEpB,KACHiJ,EAAAA,EAAAA,YAAU,KACNisB,EAAmB,MACpB,CAAC/R,IACJ,MAAMmS,GAA0B1pB,EAAAA,EAAAA,UAC5B,IAAMipB,IAAuBU,EAAAA,EAAAA,KAAwB,CAACvzB,cAAe6yB,EAAqBlb,KAAAA,KAC1F,CAACkb,EAAqBlb,IAGpBoJ,EC7BsB,EAC5B3B,EACAlgB,EACAqjB,EACA0Q,IAEO7T,EAAUvQ,QAAQuR,IACrB,MAAMoT,EAvBI,EACdpT,EACAlhB,KAEA,MAAM,WAACohB,EAAa,GAAd,oBAAkBuN,EAAsB,IAAM3uB,EACpD,OAAOsI,EAAAA,EAAAA,MAAK,CACR,CAACisB,EAAAA,KAAoBhsB,EAAAA,EAAAA,QAAOvI,IAC5B,EAACw0B,EAAAA,EAAAA,MAAKC,EAAAA,KAAqBlsB,EAAAA,EAAAA,QAAOomB,KAAuBpmB,EAAAA,EAAAA,QAAOomB,IAChE,CAAClmB,EAAAA,GAAGF,EAAAA,EAAAA,QAAO6Y,KAHR9Y,CAIJ4Y,IAcgBwT,CAAUxT,EAAUlhB,GAC7B20B,EAZOzT,CAAAA,IACVqT,EAAAA,EAAAA,KAAmBrT,GAAY,MAAQ,OAWzB0T,CAAY1T,GAC7B,SACKA,EAAS2T,cAAeC,EAAAA,EAAAA,KAAe5T,KAAa6T,EAAAA,EAAAA,KAAc7T,OAClE8T,EAAAA,EAAAA,KAAI9T,EAASyT,GAAbK,CAAwBV,IAAYjR,IAAqB0Q,MAAAA,IAAAA,EAAkB7S,EAAS3f,WDkBvE0zB,EADKvqB,EAAAA,EAAAA,UAAQ,KAAMwqB,EAAAA,EAAAA,KAA2Bzc,EAAMyH,IAAY,CAACA,EAAWzH,IACvCzY,EAAQqjB,EAAkB0Q,GAE/EoB,GAAmB90B,EAAAA,EAAAA,YAAW+0B,EAAAA,GAC9BC,GAAa3qB,EAAAA,EAAAA,UACf,KAAM4qB,EAAAA,EAAAA,KAA6BpV,EAAWzH,EAAMzY,EAAQqjB,EAAkByG,EAAWqL,IACzF,CAACjV,EAAWzH,EAAMzY,EAAQqjB,EAAkByG,EAAWqL,KAGpDI,EAAyBC,IAAqB9qB,EAAAA,EAAAA,UACjD,KAAM+qB,EAAAA,EAAAA,GAAgB7B,EAAuByB,IAC7C,CAACA,EAAYzB,IAGX8B,GAAsBnrB,EAAAA,EAAAA,cACvBorB,IACG/T,EACI+T,EAAevyB,KAAKtC,IAAD,CACfA,cAAAA,EACAmhB,UAAWnhB,IAAkB6yB,GAAsBiC,EAAAA,EAAAA,KAAa3T,GAAaA,SAIzF,CAACL,EAAiBK,EAAW0R,IAG3BkC,EAAiB,CACnBnb,QAASkI,GAEPkT,GAA2BprB,EAAAA,EAAAA,UAC7B,KAAM,CACFqpB,gBAAAA,EACAE,gBAAAA,KAEJ,CAACF,EAAiBE,IAGtB,OACI,yBAAK73B,UAAWA,GACXmB,GAAY,kBAACw4B,EAAA,EAAoBF,EAAiBt4B,GACnD,kBAACw4B,EAAA,EAAD,KAAqBF,EAArB,CAAqC/Z,OAAO,IACvC+F,EAAcxf,OAAS,GACpB,kBAACyf,EAAA,EAAD,CACIviB,MAAO1B,IAAAA,KAAU,mBACjBmkB,QAAS0T,EACT3T,MAAOa,EACP3d,KAAM4c,EACNmU,OAAQ5B,GAA2BT,KAI/C,kBAACsC,EAAA,WAAD,CAA8Bn3B,MAAOg3B,GAChCN,EAAkBU,OAAOX,GAAyBnyB,KAAI,QAAC,SAAC8d,EAAD,OAAWM,GAAZ,SACnD,kBAACmB,EAAA,GAAD,CACInf,IAAM,GAAE0d,EAAS3f,OAAO0gB,IACxBnhB,cAAeogB,EACf0B,UAAWA,EACXpB,OAAQA,EACRqI,QAAQpK,EAAAA,EAAAA,MAAK,CAAC,SAAUyB,EAAS3f,KAAM6f,GACvCa,UAAWA,EACXoB,iBAAkBA,EAClB5K,KAAMA,EACN0a,WAAYA,EACZvR,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,EACnB4Q,2BAA4BA,EAC5BhK,UAAWA,UAQnC4J,EAAeyC,UAAY,CACvBxC,oBAAqByC,IAAAA,OACrBlW,UAAWkW,IAAAA,MACXp2B,OAAQo2B,IAAAA,OACRnU,UAAWmU,IAAAA,OACX74B,SAAU64B,IAAAA,KACV/S,iBAAkB+S,IAAAA,KAClB3d,KAAM4d,EAAAA,IACNlD,WAAYiD,IAAAA,MACZxT,UAAWwT,IAAAA,KACXtM,UAAWsM,IAAAA,KACXh6B,UAAWg6B,IAAAA,OACXxC,sBAAuBwC,IAAAA,MACvBxU,gBAAiBwU,IAAAA,KACjBjT,kBAAmBiT,IAAAA,KACnBlT,kBAAmBkT,IAAAA,KACnBtC,2BAA4BsC,IAAAA,MAGhC,SAAepqB,EAAAA,EAAAA,MAAK0nB,I,yHE7IpB,MAAM4C,EAAgBx3B,GAClBjB,IAAAA,KAAU,WAAY,CAClBiB,MAAiB,IAAVA,EAAcjB,IAAAA,KAAU,SAAWA,IAAAA,KAAU,YAGtD04B,GAAcvB,EAAAA,EAAAA,KAAI,YAClBwB,GAAcxB,EAAAA,EAAAA,KAAI,YAClByB,GAAaxN,EAAAA,EAAAA,MAAKuN,EAAaE,EAAAA,KAC/BC,GAAgBC,EAAAA,EAAAA,gBAAeC,GAA0B,IAAbA,GAAgB,YAG5DC,EAAyB,QAAC,SAACD,GAAF,SAC3Bh5B,IAAAA,KAAU,iEAAkE,CACxEg5B,SAAUh5B,IAAAA,OAAYg5B,EAAU,KAChCE,gBAAiBT,EAAaO,MAGhCG,EAAyB,QAAC,SAACC,GAAF,SAC3Bp5B,IAAAA,KAAU,iEAAkE,CACxEo5B,SAAUp5B,IAAAA,OAAYo5B,EAAU,KAChCC,gBAAiBZ,EAAaW,MAgBhCE,GAAwB7uB,EAAAA,EAAAA,MAAK,CAC/B,CAACjB,EAAAA,OAAOkB,EAAAA,EAAAA,QAAO,KACf,CA7BqB,QAAC,SAACsuB,EAAD,SAAWI,GAAZ,SAA0BJ,GAAYA,IAAaI,GAc3C,QAAC,SAACJ,GAAF,SAC7Bh5B,IAAAA,KAAU,4DAA6D,CACnEg5B,SAAUh5B,IAAAA,OAAYg5B,EAAU,KAChCE,gBAAiBT,EAAaO,OAalC,EAACO,EAAAA,EAAAA,SAAQ,CAACT,EAAeH,IAAeQ,GACxC,EAACI,EAAAA,EAAAA,SAAQ,CAACT,EAAeF,KAAcluB,EAAAA,EAAAA,QAAO,KAC9C,EAAC6uB,EAAAA,EAAAA,SAAQ,CAACb,EAAaC,IAZO,QAAC,SAACK,EAAD,SAAWI,GAAZ,SAC9Bp5B,IAAAA,KAAU,+DAAgE,CACtEw5B,eAAgBP,EAAuB,CAACD,SAAAA,IACxCI,SAAUp5B,IAAAA,OAAYo5B,EAAU,KAChCC,gBAAiBZ,EAAaW,OASlC,CAACT,EAAaQ,GACd,CAACT,EAAaO,GACd,CAACruB,EAAAA,GAAGF,EAAAA,EAAAA,QAAO,OAGT+uB,EAAqB,IAAmB,IAAlB,YAACC,GAAiB,EAC1C,MAAMp7B,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAAiC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAOmX,SAC3C6jB,EAAsBI,KAKnCD,EAAmBnB,UAAY,CAC3BoB,YAAaC,EAAAA,KAGjB,W,kNCjEA,MAAMC,GAAkB9nB,EAAAA,EAAAA,SAAOinB,EAAAA,EAAAA,eAActT,EAAAA,IAAW,Q,sECqCxD,MAiKA,GAAeoU,EAAAA,EAAAA,GACXC,EAAAA,GACA,CAACC,EAAD,KAA8C,IAA/B,UAAC3V,EAAD,cAAYnhB,GAAmB,EAC1C,MAAM,MAAC4S,GAASkkB,GAAgB,GAEhC,MAAO,CAACC,kBADcC,EAAAA,EAAAA,KAAqBpkB,EAAOuO,EAAWnhB,EAAcS,KACjCq2B,EAAe,SAtKvC,IAqBb,IArBc,IACvBtG,EADuB,OAEvB9P,EAFuB,cAGvB1gB,EAHuB,UAIvBmhB,EAJuB,KAKvBxJ,EALuB,UAMvBmK,EANuB,iBAOvBS,EAPuB,aAQvB9P,EARuB,OASvB2f,EATuB,OAUvBrJ,EAVuB,WAWvBsJ,EAXuB,UAYvBrJ,EAZuB,iBAavBiO,EAbuB,iBAcvBF,EAduB,gBAevBjW,EAfuB,kBAgBvBsB,EAhBuB,kBAiBvBC,EAjBuB,kBAkBvB6U,EAlBuB,2BAmBvBlE,EAnBuB,iCAoBvB/J,GACS,EACT,MAAM5tB,GAAST,EAAAA,EAAAA,MACRu8B,EAAoBC,IAAyBxxB,EAAAA,EAAAA,UAAS4qB,IACtD6G,EAAcC,IAAmB1xB,EAAAA,EAAAA,WAAS,IAC3C,MAACnH,EAAO84B,SAAU7c,EAAlB,YAA8B+b,EAA9B,KAA2C/X,EAAMje,IAAKb,EAAtD,YAAwEyb,GAAerb,EACvFgkB,GAAiBwT,EAAAA,EAAAA,KAAoB7f,IACrC,IAACld,EAAD,eAAMg9B,IAAkBC,EAAAA,EAAAA,GAA0B,CAACX,iBAAAA,IAEnD1C,GAAmB90B,EAAAA,EAAAA,YAAW+0B,EAAAA,GAC9BqD,IAAW/tB,EAAAA,EAAAA,UAAQ,IAAMyqB,MAAAA,OAAN,EAAMA,EAAkB1yB,SAAS/B,IAAmB,CAACA,EAAkBy0B,IAC1FuD,IAAgBpjB,EAAAA,EAAAA,KAAakM,GAC7BmX,KAAeR,GAAgB9U,GAAqB7H,GAAcid,KAAaC,GAE/EE,IAAmB7uB,EAAAA,EAAAA,SACrB8uB,EAAAA,EAAAA,KAAmB,CACf5W,UAAAA,EACAnhB,cAAAA,KAIFg4B,IAAevuB,EAAAA,EAAAA,cAAY,KAC7B2tB,EAAsBD,EAAqB,GAE3C,MAAM1T,EAAY,CACdtC,UAAAA,EACAhkB,MAAOg6B,EACPn3B,cAAAA,GAGJ,OAAO8gB,EACH+W,MAAc7K,EAAAA,EAAAA,KAAmBhtB,EAAcD,MAAQ,CAAC0jB,EAAWA,GAAa,CAACA,MAEtF,CAAC0T,EAAoBrW,EAAiBK,EAAWnhB,EAAe63B,KAE7DhiB,IAAWpM,EAAAA,EAAAA,cAAY0e,EAAAA,EAAAA,MAAK/F,EAAmBza,EAAAA,EAAG2vB,GAAkB,CAAClV,EAAmBkV,IAE9F,GAAIM,KAAkBC,GAClB,OAAO,KAOX,GAJIA,IAAaD,KACblX,EAAS,CAACoX,GAAiB5wB,WAG3BsN,EAAAA,EAAAA,KAAakM,GACb,OAAO,KAGX,MAAMuX,IAAkBtB,EAAgBjW,IAAW,IAAInf,OACjD22B,GAAYlP,EAAY,cAAgB,gBACxCE,IAAqB/S,EAAAA,EAAAA,SACvB+d,EAAAA,EAAAA,KAAIgE,KACJ/P,EAAAA,EAAAA,OAAKlS,EAAAA,EAAAA,MAAKiiB,KAAYC,EAAAA,EAAAA,KAAIF,MAC1BxwB,EAAAA,EAAAA,QAAOiZ,EAAOnf,QAHS4U,CAIzB4S,GAEIqP,GAAwBrP,MAAAA,GAAAA,EAAQK,YAChCL,EAAOK,YAAcF,GACrB+N,MAAAA,OAFwB,EAExBA,EAAkB11B,OAElB82B,GAAY7H,EAAMtH,GAClBoP,GAAWD,IAAalB,EAAqBjO,GAC7CqP,GAAWF,IAAalB,GAAsBjO,GAoB9CsP,GAAc9X,EAAO9e,MAAM,EAAGu1B,GAC9BsB,GAAYD,GAAcA,GAAYj3B,OAAS,EAAI,EACnDm3B,GAAoBxP,GAAqBiO,EAE/C,OACI,kBAAClC,EAAA,EAAD,CAAiBrb,QAASkI,GACtB,yBAAKrnB,IAAKA,EAAKa,UAAWq9B,GAAAA,CAAWt9B,EAAOsX,QAAS8kB,IACjD,yBAAKn8B,UAAWD,EAAOu9B,cACnB,kBAACC,EAAA,EAAD,CACIp6B,MAAOA,EACPic,WAAYA,EACZpf,UAAWD,EAAOc,MAClB,iBAAe,2BAEnB,kBAAC28B,EAAA,EAAD,CAAiBzd,YAAaA,EAAa/f,UAAWD,EAAOggB,cAC7D,kBAAC0d,EAAA,EAAD,CACIzM,YAAa2K,EACbj3B,cAAeA,EACf1E,UAAWD,EAAO29B,OAClBzM,WAAY6L,MAGnBpU,GAAkB,kBAAC,IAAD,CAAayS,YAAaA,IAC5CzS,GAAkB,kBAACiV,EAAA,EAAD,CAAcpwB,QAAS4J,EAAcnX,UAAWD,EAAO69B,YAC1E,yBAAK59B,UAAWD,EAAO89B,mBAClBX,GAAYl2B,KAAI,CAACtE,EAAOwE,IACrB,kBAAC42B,EAAA,EAAD,CACI12B,IAAK1E,EAAMyC,IACX+c,eAAgBxf,EAChBgC,cAAeA,EACfmyB,KAAM0F,KAAcnd,EACpB6H,iBAAkBA,EAClB6P,OAAQA,EACRiH,UAAUC,EAAAA,EAAAA,KAAqBt7B,EAAOwE,EAAKxC,EAAcS,IAAK2xB,GAC9Dza,KAAMA,EACN0a,WAAYA,EACZ2F,aAAcS,KAAcj2B,EAAMw1B,GAAe,KACjDlX,gBAAiBA,EACjBsB,kBAAmBvM,GACnBwM,kBAAmBA,EACnB6U,kBAAmBA,EACnBlE,2BAA4BA,MAGnCsF,IACG,kBAACiB,EAAA,EAAD,CACIC,YAAYC,EAAAA,EAAAA,KAAIjJ,EAAKkI,IACrBgB,YAAahB,GACblwB,QAlEL,KACXkY,EAAOnf,OAAS2nB,IAChBD,EAAiC,CAC7B9H,UAAAA,EACAvhB,iBAAAA,EACAypB,kBAAmB3K,EACnBgC,OAAAA,EACA4I,iBAAkBkH,IAI1B4G,EAAsBD,EAAqB3G,MA0D9B+H,IAAY,kBAACoB,EAAA,EAAD,CAAUnxB,QAvDpB,KACf4uB,EAAsB5G,Y,gDC1IvB,MAAM51B,GAAYC,EAAAA,EAAAA,GAAW,CAChCqgB,UAAW,CACPhX,QAAS,OACTmT,KAAM,EACN1S,WAAY,aACZtG,aAAc,QAGlBu7B,cAAe,CACXj3B,MAAO,QAGXqrB,eAAgB,CACZjpB,WAAY,MACZpC,MAAO,GAGX+jB,aAAc,CACV3hB,WAAY,S,0BCHpB,MAAM80B,EAAa,CAACC,WAAYC,EAAAA,GAEnBC,EAAQ,IAAyC,IAAxC,OAACtZ,EAAD,SAAS3c,EAAT,SAAmB8R,GAAqB,EAC1D,MAAMxa,EAAST,IAETyE,GAAqBF,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,aACjCxvB,GAAiBC,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,WAC7BxxB,EAAYgC,EAAOuB,IAEnB8vB,GAAU0J,EAAAA,EAAAA,KAAsB56B,EAAUH,EAAOa,MAAMuC,KAAK43B,IAAD,CAC7Dl8B,MAAOk8B,EAAKz5B,IACZhC,MAAOy7B,EAAKz7B,UAGV07B,GAAmBzZ,GAAU,IAAIpe,KAAKtE,IAAU,MAGlD,MAAO,CACHA,MAAAA,EACAS,OAJO,UAAG8xB,EAAQpwB,MAAKqnB,EAAAA,EAAAA,QAAO,QAASxpB,WAAhC,aAAG,EAAsCS,SAIhCmzB,EAAAA,EAAAA,KAAe5zB,OAIjCgnB,GAAevb,EAAAA,EAAAA,cAChBiX,IACG,MAAM0Z,GAAQ1Z,MAAAA,OAAA,EAAAA,EAAQpe,KAAI2T,EAAAA,EAAAA,MAAK,YAAa,GAC5ClS,EAAS,CACL/F,MAAOo8B,EACPp6B,cAAeq6B,EAAAA,IAAAA,MACf55B,IAAKvD,MAGb,CAACA,EAAW6G,IAGV0jB,GAAehe,EAAAA,EAAAA,cAAY,KAC7BoM,EAAS,CAACpV,IAAKvD,EAAW8C,cAAeq6B,EAAAA,IAAAA,UAC1C,CAACn9B,EAAW2Y,IAEf,OACI,yBAAKva,UAAWD,EAAO6f,UAAW,iBAAe,0BAC7C,kBAACof,EAAA,EAAD,CACI77B,MAAO,GACPmE,OAAQ,GACR23B,SAAS,EACThK,QAASA,EACTvyB,MAAOm8B,EACPp2B,SAAUihB,EACV6U,WAAYA,EACZn9B,QAASrB,EACTC,UAAWD,EAAOu+B,kBAEnB/jB,GACC,kBAACra,EAAA,EAAD,CAAiBF,UAAWD,EAAOqrB,aAAcjrB,KAAMwrB,EAAAA,EAAYze,QAASif,EAAc9rB,KAAK,Q,eCpExG,MAAMf,GAAYC,EAAAA,EAAAA,GAAW,CAChCqgB,UAAW,CACPhX,QAAS,OACTmT,KAAM,EACN1S,WAAY,aACZtG,aAAc,QAGlBqoB,aAAc,CACV3hB,WAAY,SCady1B,EAAYC,GACdA,EAAe,YAAUC,EAAAA,EAAAA,MAAAA,CATFD,CAAAA,GAAgB,CACvC,CACI5rB,OAAQ,2BACR8rB,UAAW,OACXja,OAAQ,CAAC+Z,KAKqCG,CAAkBH,MAAkB,GAEpF9xB,EAAO,CACT,CACIgyB,UAAW,OACXE,UAAW,kBAIbC,EAAkBL,IACpBM,EAAAA,EAAAA,KAAU,CAACC,MAAOR,EAASC,GAAc9xB,KAAAA,IAAOb,MAAMmzB,GAAa1a,OAAOhB,KAAK0b,EAASC,QAsC5F,EApCa,IAAoD,IAAnD,UAAC5/B,EAAD,OAAYolB,EAAZ,SAAoB3c,EAApB,SAA8B8R,GAAqB,EAC7D,MAAMxa,EAAST,IACTsC,GAAYiC,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,cACxB1J,GAAevb,EAAAA,EAAAA,cAChByxB,IACGn3B,EAAS,CACL/F,MAAOk9B,EACPl7B,cAAeq6B,EAAAA,IAAAA,KACf55B,IAAKvD,MAGb,CAAC6G,EAAU7G,IAGTuqB,GAAehe,EAAAA,EAAAA,cAAY,KAC7BoM,EAAS,CAACpV,IAAKvD,EAAW8C,cAAeq6B,EAAAA,IAAAA,SAC1C,CAACn9B,EAAW2Y,IAEf,OACI,yBAAKva,UAAWD,EAAO6f,UAAW,iBAAe,0BAC7C,kBAACigB,EAAA,EAAD,CACIC,WAAS,EACTC,UAAQ,EACRv+B,QAAQ,SACRxB,UAAWA,EACX0C,MAAO0iB,GAAU,GACjB3c,SAAUihB,EACV8V,eAAgBA,MAEjBjlB,GACC,kBAACra,EAAA,EAAD,CAAiBF,UAAWD,EAAOqrB,aAAcjrB,KAAMwrB,EAAAA,EAAYze,QAASif,EAAc9rB,KAAK,Q,uVC/BxG,MAqFP,GAAei7B,EAAAA,EAAAA,GACXzB,EAAAA,GACA,CAAC2B,EAAD,KAAmC,IAApB,cAAC92B,GAAmB,EAC/B,MAAM,gBAACizB,EAAD,gBAAkBE,GAAmB2D,GAAgB,GAC3D,MAAO,CACHwE,aAAcrI,EAAkB5kB,QAAQ4kB,EAAgBjzB,MAAAA,OAAD,EAACA,EAAeS,WAAQoR,EAC/EshB,gBAAAA,MA3FmB,IAYlB,IAZmB,OAC5BzS,EAD4B,cAE5B1gB,EAF4B,UAG5BmhB,EAH4B,KAI5BxJ,EAJ4B,aAK5BlF,EAL4B,kBAM5B2P,EAN4B,kBAO5BC,EAP4B,iBAQ5BE,EACA+Y,aAAcC,EATc,gBAU5BpI,GAES,EADN53B,E,kXACM,6JACT,MAAMF,GAAST,EAAAA,EAAAA,MACT,MAAC6D,EAAO84B,SAAU7c,EAAlB,YAA8B+b,GAAez2B,EAC7CgkB,GAAiBwT,EAAAA,EAAAA,KAAoB7f,IACpC6jB,EAAmBC,IAAwB71B,EAAAA,EAAAA,WAAS,GACrD81B,GAAqBjyB,EAAAA,EAAAA,cACtBzL,IACGy9B,EAAqBz9B,GACrBm1B,MAAAA,GAAAA,EAAkBnzB,EAAcS,IAAKzC,KAEzC,CAACgC,EAAcS,IAAK0yB,IAElBmI,OAAoCzpB,IAArB0pB,EAAiCA,EAAmBC,EAEnE3lB,GAAWpM,EAAAA,EAAAA,cAAY0e,EAAAA,EAAAA,MAAK/F,EAAmBza,EAAAA,EAAG+zB,GAAqB,CACzEtZ,EACAsZ,IAEE9D,GAAgBpjB,EAAAA,EAAAA,KAAakM,GAC7BmX,GAAayD,GAAgB/Y,GAAoBqV,EAEjDE,GAAmB7uB,EAAAA,EAAAA,SACrB8uB,EAAAA,EAAAA,KAAmB,CACf5W,UAAAA,EACAnhB,cAAAA,KA8BR,OAAI27B,EAAAA,EAAAA,KAAqB37B,IAAkB43B,IAAkBC,EAClD,KAIP,kBAAC,EAAAp4B,IAAD,CAAKnE,UAAWD,EAAOsX,SACnB,kBAACkmB,EAAA,EAAD,CACIp6B,MAAOA,EACPic,WAAYA,EACZpf,UAAWD,EAAOc,MAClB,iBAAe,2BAElB6nB,GAAkB,kBAAC,IAAD,CAAayS,YAAaA,IAC5CzS,GAAkB,kBAACiV,EAAA,EAAD,CAAcpwB,QAAS4J,IAC1C,kBAAC,EAAAhT,IAAD,CAAKnE,UAAWD,EAAO89B,mBAxCX,MAChB,OAAQn5B,EAAcS,KAClB,KAAK45B,EAAAA,IAAAA,KAAAA,IACD,OAAO,kBAAC,EAAD,CAAM3Z,OAAQA,EAAoB7K,SAAUA,EAAU9R,SAAUse,IAC3E,KAAKgY,EAAAA,IAAAA,MAAAA,IACD,OAAO,kBAACL,EAAD,CAAOtZ,OAAQA,EAAoB7K,SAAUA,EAAU9R,SAAUse,IAC5E,QAAS,CAEL,MAAMrkB,E,8UAAQ,CAAH,GACJ85B,EAAiB5wB,QADb,CAEPlJ,MAAO0iB,EAAO,IAAM,KAExB,OACI,kBAAC0Y,EAAA,EAAD,GACI5b,eAAgBxf,EAChBgC,cAAeA,EACf2X,KAAMA,EACNyK,kBAAmBvM,EACnBwM,kBAAmBA,GACf9mB,OAqB2BqgC,Q,eCjGhD,MAAMC,EAAoB,IASpB,IATqB,cAC9B77B,EAD8B,gBAE9Buc,EAF8B,OAG9BwM,EAH8B,UAI9B5H,EAJ8B,UAK9B6H,EAL8B,kBAM9B5G,EAN8B,kBAO9BC,EAP8B,iCAQ9B4G,GACS,EACT,MAAM5tB,GAAST,EAAAA,EAAAA,MACT,MAAC6D,EAAD,YAAQ4c,GAAerb,EAE7B,OACI,yBAAK1E,UAAWD,EAAOsX,SACnB,yBAAKrX,UAAWD,EAAOu9B,cACnB,kBAACC,EAAA,EAAD,CAAOv9B,UAAWD,EAAOc,MAAOsC,MAAOA,EAAO,iBAAe,2BAC7D,kBAACq6B,EAAA,EAAD,CAAiBx9B,UAAWD,EAAOggB,YAAaA,YAAaA,KAEjE,kBAACygB,EAAA,EAAD,CACIvf,gBAAiBA,EACjBvc,cAAeA,EACf+oB,OAAQA,EACR3G,kBAAmBA,EACnBjB,UAAWA,EACXkB,kBAAmBA,EACnB4G,iCAAkCA,EAClCD,UAAWA,M,oNC7BtB+S,G,SAAAA,GAAAA,EAAAA,UAAAA,YAAAA,EAAAA,QAAAA,UAAAA,EAAAA,QAAAA,U,CAAAA,IAAAA,EAAAA,KAML,MAgGA,GAAe7wB,EAAAA,EAAAA,OAhGS,IAmBG,IAnBF,OACrBwV,EADqB,cAErB1gB,EAFqB,KAGrB2X,EAAOF,EAAAA,IAAAA,QAHc,WAIrB4a,EAJqB,UAKrBvQ,EALqB,OAMrBiH,EAAS,GANY,UAOrB5H,EAPqB,OAQrBiR,EARqB,aASrB3f,EATqB,IAUrB+d,EAAMwL,EAAAA,EAVe,iBAWrBzZ,EAXqB,UAYrByG,EAZqB,gBAarBlI,EAbqB,kBAcrBsB,EAdqB,kBAerBC,EAfqB,kBAgBrB6U,EAhBqB,2BAiBrBlE,EAjBqB,iCAkBrB/J,GACuB,EACvB,MAAMgT,GAAgBC,EAAAA,EAAAA,WAAUhO,EAAAA,MACzBiO,EAAU7P,GAAe2P,EAAcvb,GAExC0b,EAAgBpT,EAAYtI,EAASyb,EACrClF,EAAmBjO,EAAY,GAAKsD,EAEpC+P,EAAc,CAChB5pB,aAAAA,EACA2f,OAAAA,EACAza,KAAAA,EACAwJ,UAAAA,EACAL,gBAAAA,EACAsB,kBAAAA,EACAC,kBAAAA,EACA6U,kBAAAA,EACAlE,2BAAAA,EACAzQ,iBAAAA,GAyDJ,MAtDwB,MAOpB,QAN6B/a,EAAAA,EAAAA,MAAK,CAC9B,CAACisB,EAAAA,KAAoBhsB,EAAAA,EAAAA,QAAOs0B,EAAeO,UAC3C,CAACC,EAAAA,KAAS90B,EAAAA,EAAAA,QAAOs0B,EAAeS,YAChC,CAAC70B,EAAAA,GAAGF,EAAAA,EAAAA,QAAOs0B,EAAenX,WAHDpd,CAI1BxH,IAGC,KAAK+7B,EAAeO,QAChB,OACI,kBAACrH,EAAA,EAAD,CAAiBrb,QAASkI,GACtB,kBAAC,EAAD,GACIpB,OAAQ0b,EACRp8B,cAAeA,GACXq8B,KAKpB,KAAKN,EAAeS,UAChB,OACI,kBAACvH,EAAA,EAAD,CAAiBrb,QAASkI,GACtB,kBAAC+Z,EAAD,CACItf,gBAAiB6f,EACjBp8B,cAAeA,EACf+oB,OAAQA,EACR3G,kBAAmBA,EACnBjB,UAAWA,EACXkB,kBAAmBA,EACnB4G,iCAAkCA,EAClCD,UAAWA,KAI3B,QACI,OACI,kBAAC,EAAD,GACItI,OACI0b,EAEJp8B,cAAeA,EACfwwB,IAAKA,EACLzH,OAAQA,EACRsJ,WAAYA,EACZvQ,UAAWA,EACXmH,iCAAkCA,EAClCD,UAAWA,EACXiO,iBAAkBA,GACdoF,MAMjBI,MCnDLC,EAAoC,CACtCzT,iCAAkCnF,EAAAA,GAAAA,QAAAA,iCAClCoT,kBAAmBpT,EAAAA,GAAAA,OAAAA,QAAAA,kBAKvB,GAAe6Y,EAAAA,EAAAA,UAjBS,CAAClY,EAAD,SAAQ,UAACtD,EAAD,cAAYnhB,EAAZ,IAA2BwwB,GAAnC,QAAmE,CACvF4B,OAAQ1D,EAAAA,GAAAA,UAAAA,kCAAsDjK,EAAOtD,EAAWnhB,GAChFyS,cAAcmqB,EAAAA,EAAAA,KACVzb,EACAnhB,EACA0uB,EAAAA,GAAAA,UAAAA,iBAAqCjK,IAEzC+L,IAAKA,GAAO9B,EAAAA,GAAAA,UAAAA,oBAAwCjK,MAUhBiY,EAAxC,CAA4D7a,I,iCCtErD,MAAMjnB,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChCoU,QAAS,CACLpW,SAAU,SACVygC,QAAS,KAEblqB,QAAS,CACLzO,QAAS,OACTyX,cAAe,SACfhX,WAAY,aACZjB,SAAU,YAEd2X,YAAa,CACTxW,YAAa,QAEjBs0B,kBAAmB,CACfx2B,MAAO,OACPtE,aAAc,QAElBS,KAAM,CACFoF,QAAS,OACTc,UAAW,GAEf,iBAAkB,CACd5I,SAAU,QAEdD,MAAO,CACHC,SAAU,OACVF,WAAY,OACZwC,YAAa,OACbJ,MAAOF,EAAMG,QAAQK,KAAKiE,WAE9Bq2B,UAAW,CACPn0B,WAAY,QAEhBi0B,OAAQ,CACJj0B,WAAY,MACZC,UAAW,OACX83B,WAAY,GAEhBlE,aAAc,CACVvhB,KAAM,EACN2X,cAAe,Y,8OCzChB,MAAMp0B,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChC2+B,eAAgB,CACZr5B,SAAU,YAEds5B,OAAQ,CACJ94B,QAAS,OACTmT,KAAM,EACNzU,OAAQ,OACR+B,WAAY,UAEhBlG,MAAO,CACH4Y,KAAM,EACNtS,WAAY,MACZC,UAAW,MACX5I,SAAU,OACVF,WAAY,QAEhBkZ,QAAS,CACLlR,QAAS,OACTS,WAAY,UAEhBs4B,eAAgB,CACZ/4B,QAAS,OACTmT,KAAM,EACNrb,UAAW,QAEflB,aAAc,CACVkK,UAAW,OAEfk4B,QAAS,CACL5+B,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1B7D,eAAgB,gBAEpBm+B,YAAa,CACT1yB,UAAW,SACXnM,MAAOF,EAAMG,QAAQK,KAAKiE,WAE9Bu6B,uBAAwB,CACpBr4B,WAAY,O,wHCVpB,MAAMs4B,EAAmB,IAwBnB,IAxBoB,MACtB5+B,EADsB,mBAEtB6+B,EAFsB,cAGtBt9B,EAHsB,eAItBwd,EAJsB,SAKtB/gB,EALsB,OAMtB21B,EANsB,SAOtBiH,EAPsB,KAQtB1hB,EARsB,SAStBtY,EATsB,WAUtBgzB,EAVsB,KAWtBF,EAXsB,iBAYtB5P,EAZsB,aAatByV,EAbsB,gBActBlX,EAdsB,kBAetBsB,EAfsB,kBAgBtBC,EAhBsB,2BAiBtB2Q,EAjBsB,iBAkBtBuK,EAlBsB,MAmBtB9Y,EAnBsB,UAoBtBuE,EApBsB,kBAqBtBwU,EArBsB,iBAsBtBzG,EACA77B,SAAUuiC,GAAe,GACvB,EACF,MAAMpiC,EAAST,IACTsiC,EAAoB,YAAVzY,EACViZ,EAAmB,WAAVjZ,EACThkB,EAAM+c,EAAe/c,IACrBk9B,GAAQnb,EAAAA,EAAAA,KAAU/hB,GAClBm9B,EAAgBD,GAASF,GACxBviC,EAAU2iC,IAAej4B,EAAAA,EAAAA,UAASg4B,IACnC,IAACnjC,EAAD,eAAMg9B,IAAkBC,EAAAA,EAAAA,GAA0B,CAACX,iBAAAA,KAEzD9vB,EAAAA,EAAAA,YAAU,KACFu2B,GACAK,GAAY,KAEjB,CAACL,KAEJv2B,EAAAA,EAAAA,YAAU,KACN42B,EAAYD,KACb,CAACA,IAEJ,MAAME,GAAYl0B,EAAAA,EAAAA,UACd,KACIm0B,EAAAA,EAAAA,KAAwB,CACpB/9B,cAAAA,EACAwd,eAAAA,EACA7F,KAAAA,EACAtY,SAAAA,EACAqzB,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAY7U,MAEzD,CAACxd,EAAewd,EAAgB7F,EAAMtY,EAAUgzB,IAE9C2L,GAAoBd,IAAYK,KAAsBnb,GAAqB0b,EAG3EG,GAA2Br0B,EAAAA,EAAAA,UAC7B,KAAMs0B,EAAAA,EAAAA,KAAkC1gB,EAAgB4U,IACxD,CAACA,EAAQ5U,KAEbvW,EAAAA,EAAAA,YAAU,KACFg3B,GACAJ,GAAY,KAEjB,CAACzL,EAAQ6L,KACZh3B,EAAAA,EAAAA,YAAU,KACFi2B,GACAW,GAAY,KAEjB,CAACX,IACJ,MAAMiB,GAAoBb,GAAsB,IAAI/iB,MAAMva,IAAkB2zB,EAAAA,EAAAA,KAAoB3zB,KAC1Fo+B,GAAsBx0B,EAAAA,EAAAA,UACxB,KAAM,CACF0W,WAAY6d,EAAmB,KAAO3gB,EAAexf,MACrD6vB,oBAAqBsQ,EAAmB3gB,EAAexf,MAAQ,QAEnE,CAACwf,EAAgB2gB,IAGf1rB,GACF4rB,EAAAA,EAAAA,KAAgBhF,IAAc4E,GAA4BlhC,IAAAA,KAAU,2BAA8B,GAEtG,OAAOo1B,EACH,kBAAC,EAAA7pB,OAAD,CAAQxL,QAAQ,OAAOwB,MAAM,UAAUkK,QAASwvB,GAAhD,oBAIA,yBAAKv9B,IAAKA,EAAKa,UAAWQ,GAAAA,CAAWT,EAAO0hC,eAAgBtF,IACxD,yBAAKn8B,UAAWD,EAAO2hC,QACnB,yBAAK1hC,UAAWD,EAAO4hC,gBACnB,kBAACqB,EAAA,EAAD,CACI91B,QAAS,IAAMq1B,GAAa7/B,IAAWA,IACvC9C,SAAUA,EACVI,UAAWD,EAAOP,aAClBoN,SAAUg1B,IAEd,kBAACqB,EAAA,EAAD,CAAc9rB,aAAcA,EAAc/V,QAAS,CAACoW,WAAYzX,EAAO+hC,yBACnE,yBACI9hC,UAAWQ,GAAAA,CAAWT,EAAOoD,MAAO,CAAC,CAACpD,EAAO6hC,SAAUA,IACvD,iBAAe,kCAEdz+B,KAIb,yBAAKnD,UAAWD,EAAO+Z,SAClBsoB,GACG,kBAAC,EAAA7gC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAO8hC,aAAhD,IACMpgC,IAAAA,KAAU,UADhB,KAIHi2B,GAA8BA,EAA2B,CAAChzB,cAAAA,EAAewd,eAAAA,IACzEwgB,GAAoB,kBAACxiC,EAAA,EAAD,CAAiBC,KAAMwrB,EAAAA,EAAYze,QA1DnD,IAAM4Z,EAAkB,CAAC3hB,IAAAA,EAAKT,cAAAA,EAAewd,eAAAA,IA0D6B7hB,KAAK,QAG3FT,GACG,kBAAC03B,EAAA,EAAD,CACIC,oBAAqB7yB,EACrBof,UAAWke,EACXp+B,OAAQk/B,EACR7b,iBAAkBA,GAAoBob,EACtC7b,WAAW,EACXX,UAAW1gB,EACXkX,KAAMA,EACN0a,WAAYA,EACZvR,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,EACnB4Q,2BAA4BA,EAC5BhK,UAAWA,GAEVvsB,KAOrB4gC,EAAiBhI,U,8UAAjB,EACI52B,MAAO62B,IAAAA,OACP74B,SAAU64B,IAAAA,KACVgI,mBAAoBhI,IAAAA,QAAkBkJ,EAAAA,KACtChhB,eAAgB8X,IAAAA,UAAoB,CAACmJ,EAAAA,IAA0BC,EAAAA,MAC/D3H,iBAAkBzB,IAAAA,OAClBkI,kBAAmBlI,IAAAA,MAChBqJ,EAAAA,KAGP,SAAe/H,EAAAA,EAAAA,GACXC,EAAAA,GACA,CAACC,EAAD,KAAoC,IAArB,eAACtZ,GAAoB,EAChC,MAAM,MAAC5K,GAASkkB,GAAgB,GAGhC,MAAO,CACHC,kBAHkBnkB,MAAAA,OAAA,EAAAA,EAAOnS,OAAQ+c,EAAe/c,IAGdq2B,EAAe,KACjD0G,mBAHsBrV,EAAAA,EAAAA,OAAKyW,EAAAA,EAAAA,QAAO,GAAI,SAASC,EAAAA,EAAAA,MAAIC,EAAAA,EAAAA,QAAO,CAAC,QAAS,OAAQthB,EAAe/c,MAArE0nB,CAA4EvV,MAM1GyqB,I,yHCzLJ,MAAM0B,EAA0C5O,GAAeA,GAAcA,EAAW7P,WAElF0e,EAAgB,IAQhB,IARiB,OACnB9/B,EADmB,WAEnBixB,EAFmB,gCAGnB8O,EAAkCF,EAHf,KAInBpnB,EAJmB,gBAKnBmJ,EALmB,kBAMnBsB,EANmB,kBAOnBC,GACE,EACF,MAAMwS,GAAiBjrB,EAAAA,EAAAA,UAAQ,IAAMq1B,EAAgC9O,IAAa,CAC9E8O,EACA9O,IAEJ,OAAOjxB,EACH,kBAAC0zB,EAAA,EAAD,CACIlwB,IAAKxD,EAAOuB,IACZ2e,UAAWyV,EACX31B,OAAQA,EACRqjB,kBAAkB,EAClBT,WAAW,EACXX,UAAWjiB,EAAOuB,IAClBkX,KAAMA,EACN0a,WAAYnzB,EAAOmzB,WACnBvR,gBAAiBA,EACjBuB,kBAAmBA,EACnBD,kBAAmBA,IAEvB,MAGR4c,EAAc3J,UAAY,CACtBn4B,UAAWo4B,IAAAA,OACXnU,UAAWmU,IAAAA,OACXp2B,OAAQo2B,IAAAA,OACRnF,WAAYmF,IAAAA,OACZ2J,gCAAiC3J,IAAAA,KACjC3d,KAAM4d,EAAAA,IACNzU,gBAAiBwU,IAAAA,KACjBlT,kBAAmBkT,IAAAA,KACnBjT,kBAAmBiT,IAAAA,MAGvB,UC1CMoH,EAAqB,CACvB5b,gBAAiBgD,EAAAA,GAAAA,QAAAA,cACjB1B,kBAAmB0B,EAAAA,GAAAA,QAAAA,gBACnBzB,kBAAmByB,EAAAA,GAAAA,QAAAA,iBAKvB,GAAe6Y,EAAAA,EAAAA,UAZS,CAAClY,EAAOya,KAAR,CACpBhgC,OAAQggC,EAAShiC,WAAawxB,EAAAA,GAAAA,UAAAA,kBAAsCjK,EAAOya,EAAShiC,cAWhDw/B,EAAxC,CAA4DsC,I,6KCdrD,MAAMpkC,GAAYC,EAAAA,EAAAA,GAAW,CAChCu0B,gBAAiB,CACblrB,QAAS,OACTS,WAAY,SACZ/B,OAAQ,OACR5G,UAAW,OACXC,QAAS,GAEbozB,YAAa,CACTzsB,OAAQ,OACRxG,SAAU,OACVkC,MAAO,mBACPyN,OAAQ,UACR7P,WAAY,OACZM,aAAc,WACdD,SAAU,SACVD,WAAY,UAEhB6iC,iBAAkB,CACdv8B,OAAQ,OACRxG,SAAU,OACVkC,MAAO,kBACPpC,WAAY,OACZ6I,WAAY,OACZvI,aAAc,WACdD,SAAU,SACVD,WAAY,SACZyP,OAAQ,WAEZqzB,aAAc,CACVjkC,UAAW,aACX4J,WAAY,MACZF,YAAa,QAEjBw6B,qBAAsB,CAClB/gC,MAAO,qBAIFghC,GAAuBzkC,EAAAA,EAAAA,IAAYuD,IAAD,CAC3C21B,YAAa,CACTz1B,MAAO,sBACPlC,SAAU,OACVmjC,WAAY,OACZjjC,WAAY,SACZC,SAAU,SACVC,aAAc,YAElBgjC,UAAW,CACPzzB,OAAQ,UACRzN,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BC,eAAgB,OAChB6E,cAAe,WAIV47B,GAAiB5kC,EAAAA,EAAAA,IAAYuD,IAAD,CACrCshC,SAAU,CACNphC,MAAOF,EAAMG,QAAQM,QAAQE,KAC7BmF,QAAS,OACT7H,WAAY,MACZ0P,OAAQ,UACRvP,aAAc,WACdD,SAAU,SACVD,WAAY,UAEhBqjC,aAAc,CACVvjC,SAAU,OACVwG,OAAQ,OACR3G,QAAS,SACTiI,QAAS,OACT4H,eAAgB,gBAChBnH,WAAY,SACZ5J,gBAAiB,uBAErB6kC,QAAS,CACLh9B,OAAQ,OACRD,MAAO,OACP1G,QAAS,aAIJ4jC,GAAqBhlC,EAAAA,EAAAA,GAAW,CACzCilC,UAAW,CACP/zB,OAAQ,UACRnJ,OAAQ,OACRD,MAAO,U,gNC/Ef,MAAMo9B,EAAe,IAAgD,IAA/C,SAACC,EAAD,WAAWC,EAAX,aAAuBC,EAAvB,KAAqC/7B,GAAU,EACjE,MAAM9I,EAAST,KACT,IAAC6F,EAAD,WAAM0vB,EAAN,MAAkB1xB,EAAlB,eAAyB0hC,GAAkBh8B,EACjD,MAAY,KAAR1D,EAEI,kBAAC,EAAAmQ,SAAD,GACItV,UAAWD,EAAO+zB,gBAClB30B,IAAKulC,EACLt9B,IAAKjC,EACL+H,QAAS,IAAM03B,EAAa,CAACzhC,MAAAA,EAAOgC,IAAAA,EAAK0vB,WAAAA,KACrC8P,GAEJ,kBAACG,EAAA,EAAD,CAAgB9kC,UAAWD,EAAO+jC,aAAcjP,WAAYA,IAC5D,kBAACkQ,EAAA,EAAD,CAAsBriC,MAAQ,GAAES,IAAQ0hC,EAAiB,KAAOA,EAAiB,MAC7E,0BAAM7kC,UAAWD,EAAOg0B,aACnB5wB,EACA0hC,GAAkB,0BAAM7kC,UAAWD,EAAOgkC,sBAAxB,KAAiDc,MAOhF,kBAAC,EAAAvvB,SAAD,GAAUtV,UAAWD,EAAO+zB,gBAAiB30B,IAAKulC,EAAUt9B,IAAKjC,GAASw/B,EAA1E,CAAsF/3B,UAAU,IAC5F,0BAAM5M,UAAWD,EAAO8jC,kBAAmBpiC,IAAAA,KAAU,uBAMrEgjC,EAAa1K,UAAY,CACrB2K,SAAU1K,IAAAA,UAAoB,CAC1BA,IAAAA,MAAgB,CAAC,OACjBA,IAAAA,KACAA,IAAAA,MAAgB,CACZpuB,QAASouB,IAAAA,IAAAA,eAGjB2K,WAAY3K,IAAAA,OAAAA,WACZ4K,aAAc5K,IAAAA,KAAAA,WACdnxB,KAAMmxB,IAAAA,MAAgB,CAClB70B,IAAK60B,IAAAA,OAAAA,WACL72B,MAAO62B,IAAAA,OAAAA,WACPnF,WAAYmQ,EAAAA,IAAAA,cAIpB,U,oEC5CA,MAAMC,EAAenlC,IACjB,MACIolC,aAAa,kBAACC,EAAD,WAAoBC,EAApB,iBAAgCC,GAD3C,SAEFlkC,EAFE,KAGF0H,GACA/I,EAEEC,EAASikC,IACTnc,GAAWC,EAAAA,EAAAA,eACXC,GAAS9jB,EAAAA,EAAAA,YAAW+jB,EAAAA,IACpB,kBAACsd,IAAqBrhC,EAAAA,EAAAA,YAAWqvB,EAAAA,GACjCH,GAAStvB,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,WASrBmS,GAAare,EAAAA,EAAAA,KAAUre,EAAKjH,WAC5B,CACE5B,UAAWD,EAAO04B,YAClBxpB,UAAW,QAEb,CACEjP,UAAWQ,GAAAA,CAAWT,EAAO04B,YAAa14B,EAAOmkC,WACjDsB,YAdmBzxB,IACvBA,EAAMuC,kBACD+uB,IACDxY,EAAAA,EAAAA,OAAK1gB,EAAAA,EAAAA,QAAO,CAAChH,IAAK0D,EAAKjH,UAAWmmB,OAAAA,IAAUyJ,EAAAA,GAAAA,QAAAA,WAAuB3J,EAAnEgF,IAYA3f,QAAUlB,GAAMA,EAAEC,iBAClBnF,KAAMw+B,EAAkB,CAACnS,OAAAA,EAAQhuB,IAAK0D,EAAKjH,YAC3CqN,UAAW,KAGnB,OACKm2B,GACG,kBAAC,EAAA7jC,WAAegkC,GACXre,EAAAA,EAAAA,KAAUre,EAAKjH,WACVH,IAAAA,KAAW,OAAM0jC,EAAkBhiC,0BACnC8B,EAAAA,EAAAA,KAAS9D,KAM/B8jC,EAAYlL,UAAY,CACpB54B,SAAU64B,IAAAA,OACVnxB,KAAMmxB,IAAAA,OAAAA,WACNkL,YAAalL,IAAAA,OAAAA,YAGjB,U,eCxDA,MAAMyL,EAAkB3lC,IACpB,MACIolC,aAAa,QAACQ,IACd5lC,EAEEC,EAASwkC,IAEf,OACI,kBAAC,EAAAoB,WAAD,CAAYz4B,QAASw4B,GACjB,kBAACE,EAAA,EAAD,CAAW5lC,UAAWD,EAAOykC,cAKzCiB,EAAe1L,UAAY,CACvBmL,YAAalL,IAAAA,OAAAA,YAGjB,U,gDCjBA,MAAO6L,MAAOC,GAAmBvH,EAAAA,EAE3BsH,EAAS/lC,IACX,MACIolC,aAAa,WAACa,EAAD,SAAaC,GADxB,KAEFn9B,EAFE,SAGF1H,GACArB,EAEEC,EAASokC,IAEf,OACI,kBAAC2B,EAAoBhmC,EACjB,yBAAKE,UAAWD,EAAOskC,cACnB,8BAAOx7B,EAAK1F,OACX6iC,GACG,0BAAM94B,QAAS,IAAM84B,EAASD,EAAYl9B,EAAKgsB,YAAa70B,UAAWD,EAAOqkC,UAC1E,kBAAC6B,EAAA,EAAD,CAASjmC,UAAWD,EAAOukC,UAC1B7iC,IAAAA,KAAW,UAASskC,EAAc,IAAGA,SAAoB,SAASl9B,EAAK1F,WAInFhC,IAKb0kC,EAAM9L,UAAY,CACdmL,YAAalL,IAAAA,OAAAA,WACbnxB,KAAMmxB,IAAAA,OACN74B,SAAU64B,IAAAA,OAGd,UCtCa16B,GAAYC,EAAAA,EAAAA,GAAW,CAChC2mC,eAAgB,CACZx8B,UAAW,U,4gCCmBnB,MAmCMy8B,EAAiB,IAYjB,IAZkB,OACpBviC,EAAS,GADW,gBAEpBwiC,EAAkB,GAFE,KAGpB/pB,EAHoB,IAIpB6Y,EAJoB,SAKpBzsB,EALoB,SAMpBu9B,EANoB,SAOpBjiC,EAPoB,2BAQpB6wB,EARoB,gCASpB+O,EAToB,iBAUpB0B,GAAmB,GAEjB,EADCplC,EACD,kKACF,MAAMF,EAAST,KACRymC,EAAYM,IAAiB/7B,EAAAA,EAAAA,UAAS,IAEvCg8B,GAAch4B,EAAAA,EAAAA,UAChB,IAAM83B,EAAgBp/B,KAAKvC,IAAS8hC,EAAAA,EAAAA,KAAcxiC,EAAUU,KAAO8O,OAAOizB,EAAAA,MAC1E,CAACJ,EAAiBriC,IAGhBkxB,EAAU,EAAH,GAAOL,EAAP,CAAmCM,IAAAA,IAE1CuR,EAAeT,EACf,CAACtjC,EAAOgkC,KACNV,EAASU,GAAiBN,EAAgB,GAAI1jC,GAC9C2jC,EAAc,UAEhB9vB,EAMAmT,EAAgBhnB,IACJ,OAAVA,IACA2jC,EAAc,IACd59B,EAAS/F,KAQXikC,GAAYr4B,EAAAA,EAAAA,UAAQ,IAA6B,IAAvBg4B,EAAYrgC,QAAc,CAACqgC,IAIrDnB,IAAqByB,EAAAA,EAAAA,SAAQhjC,GAAU0iC,EAAY,IAAKC,EAAAA,EAAAA,KAAcxiC,EAAUH,EAAOixB,cAAgB,GACvGgS,EACFb,GAAYvkC,IAAAA,KAAW,UAASskC,EAAc,IAAGA,SAAoB,SAASZ,EAAkBhiC,SAC9FA,EAAQ1B,IAAAA,KAAW,UAAgC,IAAvB6kC,EAAYrgC,OAAgB,GAAEqgC,EAAY,GAAGnjC,SAAW,aACpF2jC,IAAgBF,EAAAA,EAAAA,SAAQhjC,KAAWsjB,EAAAA,EAAAA,KAAUtjB,EAAOhC,WACpDmlC,EAAiBJ,EAAY,CAACd,MAAD,EAAQmB,aAAcC,EAAAA,IAAa,GAChEC,EAAiBJ,EAAe,CAACrB,eAAcA,GAAI,IAEnD,eAAC0B,GAA4ClnC,EAAzBmnC,EAA1B,EAAmDnnC,EAAnD,oBAEMonC,GAAiB/4B,EAAAA,EAAAA,UACnB,IAAM,EAAN,GACQ64B,GAAkB,GAD1B,CAEI,iBAAoB,4BAExB,CAACA,IAEL,OACI,oCACI,kBAACG,EAAA,EAAD,GACI5kC,OAAQkkC,EAAAA,EAAAA,SAAQhjC,QAAmB2S,EAAT3S,EAC1BmiC,WAAYA,EACZwB,cAzCe7kC,IACvB2jC,EAAc3jC,IAyCN8kC,WAzBQ9kC,IAChB+kC,EAAAA,EAAAA,KAAgBnB,EAAa5jC,EAAOuyB,GAASzoB,KAnF1B,EAAC85B,EAAaN,IAAc1R,IACnD,MAAMoT,EAAapT,EAASttB,KAAKpD,GAAD,KACzBA,EADyB,CAE5BT,OAAO8B,EAAAA,EAAAA,KAASrB,EAAOT,OACvB0xB,WAAYyR,EAAYzhC,MAAK,QAAC,IAACM,GAAF,SAAWA,IAAQvB,EAAOa,YAGrDkjC,EAAmC1S,IACrC2R,EAAAA,EAAAA,SAAQ3R,GACF,CACE,CACI9xB,MAAO,GACPgC,IAAK,GACL0vB,WAAY,KAGlBI,EAEJ2S,EAAsB5B,EACtBM,EACAA,EAAY/yB,QAAQ9O,GACXijC,EAAWzoB,MAAM4oB,GAAWA,EAAOpjC,OAASA,EAAKU,QAGhE,OAAOyiC,EAAoB3hC,OAAS,EAC9B2hC,EAAoB5gC,KAAKvC,IAChB,CACHtB,MAAOsB,EAAKtB,MACZ0xB,WAAYpwB,EAAKU,IACjB8vB,QAAS0S,EAAgCD,EAAWn0B,QAAQs0B,GAAWA,EAAOpjC,OAASA,EAAKU,WAGlGwiC,EAAgCD,IAmDgBI,CAAmBxB,EAAaN,IAyB1E+B,gBAAgBptB,EAAAA,EAAAA,MAAK,eACrBlS,SAAUihB,EACVsc,SAAUS,EACVf,QAnCQ,KAChBhc,EAAa,KAmCLvmB,MAAOA,EACP0jC,YAAaA,EACbtI,WAAU,GACNyJ,OAAQvD,EACRQ,YAAaA,GACV8B,EACAG,GAEP/B,kBAAmBA,EACnB8C,aAAa,EACb5C,iBAAkBA,EAClB8B,eAAgBE,GACZD,IAEPN,GACG,yBAAK9mC,UAAWD,EAAOmmC,gBACnB,kBAACxC,EAAA,EAAD,CACIrnB,KAAMA,EACNsnB,gCAAiCA,EACjC9O,WAAYsQ,EACZvjC,UAAWgC,EAAOhC,eAQ1CukC,EAAepM,UAAY,CACvBn2B,OAAQskC,EAAAA,IACR9B,gBAAiBpM,IAAAA,QAAkBA,IAAAA,QACnC9E,IAAK8E,IAAAA,OACL3d,KAAM4d,EAAAA,IACNpS,SAAUmS,IAAAA,KACVj2B,SAAUokC,EAAAA,IACV1/B,SAAUuxB,IAAAA,KAAAA,WACVgM,SAAUhM,IAAAA,KACV2J,gCAAiC3J,IAAAA,KACjCpF,2BAA4BoF,IAAAA,OAC5BqL,iBAAkBrL,IAAAA,MAGtB,W,2LC/KO,MAAM16B,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF+F,MAAO,SAEX0N,MAAO,CACH1N,MAAO,OACPC,OAAQ,OACRsB,QAAS,OACTS,WAAY,SACZtB,UAAW,OACXtI,gBAAiB,oBAErB2oC,UAAW,CACPrsB,KAAM,GAEVssB,MAAO,CACH1nC,QAAS,SACTG,SAAU,OACV,gBAAiB,CACbkC,MAAOF,EAAMG,QAAQK,KAAKiE,YAGlC4P,aAAc,CACVzN,UAAW,MACX5I,SAAU,OACVkC,MAAOF,EAAMG,QAAQqU,MAAM7T,UCd7B6kC,EAAgB5lC,GAA0C,IAAxBA,EAAM8I,OAAOvF,OAExCsiC,EAAkB,IAAqB,IAApB,OAACC,GAAmB,EAChD,MAAMzoC,EAAST,KAERoD,EAAO+lC,IAAYn+B,EAAAA,EAAAA,UAAS,KAC5BgN,EAAOoxB,IAAYp+B,EAAAA,EAAAA,UAAiB,MAsB3C,OACI,kBAAC,EAAAnG,IAAD,CAAKnE,UAAWD,EAAOuB,MACnB,kBAAC,EAAA6d,MAAD,CAAOnf,UAAWD,EAAOgV,OACrB,kBAAC,EAAA4zB,UAAD,CACIjmC,MAAOA,EACP+F,SAzBMuD,IAClB,MAAM48B,EAAW58B,EAAEoP,OAAO1Y,MAEpBmmC,EADS,IAAIC,OAAO,iCACEC,KAAKH,GAEjCH,EAASG,GAEJC,GAAiBP,EAAaM,GAG/BF,EAAS,MAFTA,EAASjnC,IAAAA,KAAU,wBAkBXL,QAAS,CAACE,KAAMvB,EAAOqoC,UAAWC,MAAOtoC,EAAOsoC,OAChDt7B,YAAatL,IAAAA,KAAU,6BAE3B,kBAAC,EAAAuL,OAAD,CACIJ,SAAUmG,QAAQuE,IAAUgxB,EAAa5lC,GACzClB,QAAQ,WACRwB,MAAM,UACNkK,QAnBG,KACfs7B,EAAO9lC,GACP+lC,EAAS,IACTC,EAAS,QAkBIjnC,IAAAA,KAAU,UAGlB6V,GAAS,kBAAC,EAAA/V,WAAD,CAAYvB,UAAWD,EAAOoX,cAAeG,K,8CC3D5D,MAAM0xB,EAAc,CAAC,YAAa,aAAc,aAAc,YAAa,aCUrEC,EAAoB,IAAsC,IAArC,UAACjpC,EAAD,aAAYkpC,GAAyB,EAOnE,OACI,oCACI,2BACIC,QATSn9B,IACbk9B,GACAA,EAAal9B,EAAEgI,cAAco1B,MAAM,KAQ/BC,MAAO,CAACzgC,QAAS,QACjB0gC,OAAQN,EAAYnmC,KAAK,KACzBiG,GAAG,sBACHrE,KAAK,SAET,2BAAO8kC,QAAQ,uBACX,kBAAC,EAAAv8B,OAAD,CAAQhN,UAAWA,EAAWwB,QAAQ,YAAYwB,MAAM,UAAUiM,UAAU,QACvExN,IAAAA,KAAU,oB,gNC1B/B,MAwEA,EAxEgE3B,GAExD,2BACIuH,MAAO,IACPC,OAAQ,IACR+I,QAAQ,cACRC,MAAM,6BACNgL,WAAW,gCACPxb,GAEJ,8BACI,oCAAgB0pC,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAO7gC,GAAG,qBACnD,0BAAM8gC,UAAU,OAAOC,OAAO,OAC9B,0BAAMD,UAAU,OAAOE,YAAa,EAAGD,OAAO,UAElD,oCAAgBL,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAO7gC,GAAG,qBACnD,0BAAM8gC,UAAU,OAAOC,OAAO,OAC9B,0BAAMD,UAAU,OAAOE,YAAa,EAAGD,OAAO,UAElD,oCAAgBL,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAU7gC,GAAG,qBACnE,0BAAM8gC,UAAU,OAAOE,YAAa,EAAGD,OAAO,OAC9C,0BAAMD,UAAU,OAAOC,OAAO,UAElC,oCAAgBL,GAAG,MAAMC,GAAG,KAAKC,GAAG,MAAMC,GAAG,OAAO7gC,GAAG,qBACnD,0BAAM8gC,UAAU,UAAUC,OAAO,OACjC,0BAAMD,UAAU,UAAUC,OAAO,UAErC,4BAAQ/gC,GAAG,oBAAoBihC,GAAI,IAAKC,GAAI,IAAKC,EAAG,OAExD,uBAAGvyB,OAAO,OAAOC,YAAa,EAAGxH,KAAK,OAAOC,SAAS,WAClD,0BAAMtH,GAAG,oBAAoBqH,KAAK,QAC9B,yBAAKoL,UAAU,wBAEnB,yBAAKrL,YAAa,GAAKC,KAAK,UAAUoL,UAAU,uBAChD,uBAAGC,KAAK,2BACJ,uBAAG7D,YAAa,EAAGxH,KAAK,OAAOtQ,UAAU,mBACrC,0BACI0Q,EAAE,2OACFJ,KAAK,OACLoxB,QAAS,KAEb,6BACIpxB,KAAK,0BACLoxB,QAAS,GACTwI,GAAI,OACJC,GAAI,QACJE,GAAI,MACJC,GAAI,SAER,0BACI55B,EAAE,4OACFJ,KAAK,0BACLoxB,QAAS,MAGjB,0BACIpxB,KAAK,0BACLoxB,QAAS,IACThxB,EAAE,qGACF1Q,UAAU,oBAEd,0BACIsQ,KAAK,0BACLI,EAAE,mEACF1Q,UAAU,uBChErBP,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACFX,QAAS,eAEbypC,SAAU,CACN3qC,gBAAiB,wBAErBU,KAAM,CACFkH,MAAO,QACPC,OAAQ,QACRvE,aAAc,QAElBlC,MAAO,CACHkC,aAAc,MACdC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBmf,YAAa,CACThd,aAAc,OACdC,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVF,WAAY,YCTPypC,EAAY,IAAsC,IAArC,aAACnB,EAAD,UAAelpC,GAAsB,EAC3D,MAAMD,EAAST,MAER,QAACgrC,EAAD,OAAUC,GAASC,IAAQC,EAAAA,EAAAA,SAAQ,CACtCnB,OAAQ,CAACoB,EAAYC,MACrBH,KAAO/iC,IACCA,GAIAyhC,EAAazhC,EAAK2hC,MAAM,KAGhCwB,QAAUC,IAAD,CACLN,OAAQM,EAAQN,SAChBD,QAASO,EAAQP,cAInBF,EAAWE,GAAWC,EAE5B,OACI,yBAAKprC,IAAKqrC,EAAMxqC,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAM,CAAC,CAACvB,EAAOqqC,UAAWA,GAAWpqC,IAC9E,kBAAC8qC,EAAD,CAAY9qC,UAAWD,EAAOI,OAC9B,kBAAC,EAAAoB,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,uBAChD,kBAAC,EAAAF,WAAD,CAAYvB,UAAWD,EAAOggB,aACzBte,IAAAA,KACG,yGACA,CACIspC,eJ5CM,MIgDlB,kBAAC9B,EAAD,CAAmBC,aAAcA,MC/ChC5pC,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,CACF+F,MAAO,OACPuB,QAAS,OACTS,WAAY,SACZ1I,QAAS,SACTod,UAAW,cAEfnW,OAAQ,CACJ6X,aAAe,aAAY3c,EAAMG,QAAQK,KAAKC,UAC9CwY,KAAM,EACNwlB,QAAS,KAEbj+B,KAAM,CACF3C,QAAS,SACTqC,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1BzG,SAAU,OACVF,WAAY,YCRPoqC,EAAkB,IAAkC,IAAjC,SAAC7pC,EAAD,UAAWnB,GAAsB,EAC7D,MAAMD,EAAST,IAEf,OACI,kBAAC,EAAA6E,IAAD,CAAKnE,UAAWQ,GAAAA,CAAWT,EAAOuB,KAAMtB,IACpC,kBAAC,EAAAmE,IAAD,CAAKnE,UAAWD,EAAO6H,SACvB,kBAAC,EAAArG,WAAD,CAAYvB,UAAWD,EAAOuD,MAAOnC,GACrC,kBAAC,EAAAgD,IAAD,CAAKnE,UAAWD,EAAO6H,W,yBChB5B,MAAMtI,GAAYC,EAAAA,EAAAA,GAAW,CAChCsc,UAAW,CACP7Y,MAAO,UCQFioC,EAAgB,IAA6B,IAA5B,MAAC3zB,EAAD,QAAQzF,GAAoB,EACtD,MAAM9R,EAAST,IAEf,OACI,kBAAC,EAAA4rC,SAAD,CACIp5B,KAAMiB,QAAQuE,GACdzF,QAASA,EACTtE,QAAS+J,EACThL,OACI,kBAAC,IAAD,CACItM,UAAWD,EAAO8b,UAClBhN,aAAcpN,IAAAA,KAAU,SACxBtB,KAAM8c,EAAAA,QACN/P,QAAS2E,OCvBhBvS,GAAYC,EAAAA,EAAAA,IAAYuD,IAAD,CAChCxB,KAAM,GACN6pC,YAAa,CACT/iC,SAAU,WACVe,SAAU,SAEdtI,MAAO,CACHmC,MAAOF,EAAMG,QAAQK,KAAKC,QAC1BzC,SAAU,OACVC,WAAY,IACZoU,cAAe,SACfvU,WAAY,OACZD,QAAS,QAEb0M,KAAM,CACFzE,QAAS,OACTyX,cAAe,SACfhX,WAAY,SACZ1I,QAAS,aACTysB,UAAW,UAEfge,UAAW,CACProC,aAAc,OAElBG,QAAS,CACLH,aAAc,Y,cCJf,MAAMsoC,EAAoB,IAAsC,IAArC,KAACv5B,EAAD,QAAOD,EAAP,SAAgB0Z,GAAqB,EACnE,MAAMxrB,EAAST,IAETgsC,GAAmBznC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,qBAC/BynC,GAAc1nC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gBAC1B0nC,GAAS3nC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAEpBkO,EAASy5B,IAAcnhC,EAAAA,EAAAA,WAAS,IAChCgN,EAAOoxB,IAAYp+B,EAAAA,EAAAA,UAAiB,MAErCohC,EAAe9zB,IACjB6zB,GAAW,IACXE,EAAAA,EAAAA,KAAmB,CAAC/zB,MAAAA,EAAO0zB,iBAAAA,EAAkBC,YAAAA,EAAaC,OAAAA,IACrDh/B,MAAMo/B,IACHrgB,EAASqgB,GACT/5B,OAEHpF,OAAOo/B,IACJnD,GAASoD,EAAAA,EAAAA,KAAuBD,EAAKpqC,IAAAA,KAAU,6BAElDsqC,SAAQ,IAAMN,GAAW,MAoBlC,OACI,kBAACp3B,EAAA,EAAD,KACI,kBAAC,EAAAuI,OAAD,CAAQ9K,KAAMA,EAAMD,QAASA,EAASzQ,QAAS,CAAC2T,MAAOhV,EAAOorC,cAC1D,kBAAC,EAAA5pC,WAAD,CAAYvB,UAAWD,EAAOc,OAAQY,IAAAA,KAAU,kBAChD,kBAAC,EAAA0C,IAAD,CAAKnE,UAAWD,EAAOsN,MACnB,kBAACg9B,EAAD,CAAWrqC,UAAWD,EAAOqrC,UAAWlC,aAtB7BtxB,IACvB,MAAMvX,EAAOsjB,QAAQ/L,EAAMvX,KAAO,KAAO,MAAMujB,QAAQ,IACjDooB,EAAgBhD,EAAY3iC,SAASuR,EAAMnT,MAE7CpE,EVjDkB,GUkDlBqoC,EAASjnC,IAAAA,KAAU,gDACXuqC,EAGRN,EAAY9zB,GAFZ8wB,EAASjnC,IAAAA,KAAU,qCAgBX,kBAACupC,EAAD,CAAiBhrC,UAAWD,EAAOmD,SAAUzB,IAAAA,KAAU,OACvD,kBAAC8mC,EAAD,CAAiBC,OAXRlZ,IACrBoc,EAAYpc,OAYHtd,GAAW,kBAACi6B,EAAA,EAAD,MACZ,kBAAChB,EAAD,CAAe3zB,MAAOA,EAAOzF,QAAS,IAAM62B,EAAS,W,0BCtE9D,MAAMppC,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC+B,KAAM,CACF+F,MAAO,OACPtE,aAAc,QAElB6U,MAAO,IAA+B,IAA9B,YAAC+W,GAA6B,EAClC,MAAO,CACHplB,YAAaolB,EACble,OAAQ,UACR,eAAgB,CACZlH,YAAa,KAIzB2iC,gBAAiB,IAAwD,IAAvD,YAACvd,EAAD,WAAc9W,EAAd,YAA0BC,GAA6B,EACrE,MAAO,CACHrY,gBAAiB,QACjB4H,MAAOwQ,EACPvQ,OAAQwQ,EACRrH,OAAQ,UACR7I,OAAQ,qBACRmW,UAAW,aACXxU,YAAaolB,EACb/lB,QAAS,OACTS,WAAY,SACZmH,eAAgB,SAChBuc,WAAY,IAGpBof,aAAc,CACV9kC,MAAO,OACPC,OAAQ,QAEZ8kC,WAAY,CACRtrC,SAAU,YCnClB,ECmC4B,IAUf,IAVgB,cACzB4D,EAAgB,GADS,gBAEzBuc,EAAkB,GAFO,kBAGzB6F,EAHyB,kBAIzBC,EAJyB,iCAKzB4G,EALyB,UAMzB9H,EANyB,OAOzB4H,EAPyB,UAQzBC,EARyB,UASzBH,EAAYC,EAAAA,IACH,EACT,MAAMztB,EAAST,EAAUiuB,GACnB3pB,GAASC,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,YAAmC,GACxD3J,GAAoB5lB,EAAAA,EAAAA,cAAaslB,GACnCiK,EAAAA,GAAAA,UAAAA,mCAAuDjK,EAAOvlB,EAAOuB,OAEnE0iB,GAAWC,EAAAA,EAAAA,gBACVukB,EAAuBC,IAA4BhiC,EAAAA,EAAAA,WAAS,GAE7DiiC,GAA+Bp+B,EAAAA,EAAAA,cAAY,KAC7Cm+B,GAA0BE,IAAaA,MACxC,IAEGC,GAAsBt+B,EAAAA,EAAAA,cACvByJ,IACG,MAAMzS,GAAMunC,EAAAA,EAAAA,KAAY7mB,EAAWnhB,EAAc0e,MAC3ClB,EAA+C,GACrD,IAAK,MAAM9a,KAAOwQ,EAAO,CACrB,MAAMuQ,GAAazjB,EAAcsgB,YAAc,IAAIngB,MAAK,QAAC,KAACue,GAAF,SAAYA,IAAShc,KACzE+gB,IACAjG,EAAe9a,GAAO,CAClB,CACIjC,KAAKunC,EAAAA,EAAAA,KAAYvnC,EAAKgjB,EAAU/E,MAChCupB,IAAI,EACJjqC,MAAOkV,EAAMxQ,GACb3C,KAAM0jB,EAAUhjB,OAKhC4hB,EAAkB,CAACriB,cAAAA,EAAeS,IAAAA,EAAKzC,MAAOwf,MAElD,CAAC6E,EAAmBlB,EAAWnhB,IAG7BkoC,GAAwBz+B,EAAAA,EAAAA,cACzB0+B,IAEG,GADA/lB,EAAkB+lB,GACdpjB,IAAsBojB,EAAM1nC,IAAK,OACjC,MAAM2nC,GAAgB,UAAA7rB,EAAgB,UAAhB,eAAoB9b,OAAQ0nC,EAAM1nC,IAAM8b,EAAgB,GAAKA,EAAgB,GACnG4G,EACIW,EAAAA,GAAAA,iBAAAA,QAAAA,qBAAsD,CAClD5mB,UAAWgC,EAAOuB,IAClBzC,MAAOoqC,GAAkB,SAKzC,CAAChmB,EAAmBljB,EAAQ6lB,EAAmBxI,IAG7CwJ,EAA4B,CAACsiB,EAA2B5kB,KAC1D,MAAM,yBAACwI,EAAD,WAA2BnW,EAA3B,YAAuCH,EAAvC,eAAoDC,GAAkByyB,EACtEC,GAAWhhB,EAAAA,EAAAA,KAAuB7D,IAClC,IAAChjB,GAAOgjB,EAEd,OACI,kBAACuC,EAAA,EAAD,CACI5hB,GAAI3D,EACJkV,YAAa,IAAMA,EAAY2yB,GAC/B1yB,eAAgB,IAAMA,EAAe6N,GACrC5N,SAAU,IAAMqyB,EAAsB,CAACznC,IAAAA,EAAKT,cAAAA,IAC5C8V,WAAY,IAAMA,EAAW,CAACwyB,IAC9B9/B,QAAS,IAAMyjB,EAAyBxrB,MA2BpD,OACI,yBAAKnF,UAAWD,EAAOuB,MACnB,kBAACk/B,EAAA,EAAD,CACIvf,gBAAiBA,EACjBvc,cAAeA,EACf2oB,YA3BsB0f,GACV,WAAgE,IAA/D5kB,EAA+D,uDAA9B,GAClD,MAAMzP,GAAMsJ,EAAAA,EAAAA,KAAgCmG,IACtC,IAAChjB,GAAOgjB,GACR,yBAACwI,GAA4Boc,EAEnC,OACI,yBAAK/sC,UAAWD,EAAO6X,MAAOxQ,IAAKjC,GAC/B,kBAAC4c,EAAA,EAAD,CACIrJ,IAAKA,EACLE,QAAS6R,EAA0BsiB,EAAS5kB,GAC5Cjb,QAAS,IAAMyjB,EAAyBxrB,GACxC9E,KAAM,CAACwX,WAAY0V,EAAU1V,WAAYC,YAAayV,EAAUzV,aAChE,iBAAe,6BAevBc,SAAO,EACP0U,gBAAiB,EACjB/B,SAAUghB,EACVzlB,kBAAmB8lB,EACnBrf,UAAWA,EACXI,iCAAkCA,EAClCF,OAAQA,EACR5H,UAAWA,EACX6H,UAAWA,GAEX,yBAAK1tB,UAAWD,EAAOmsC,gBAAiBh/B,QAASq/B,GAC7C,kBAACrsC,EAAA,EAAD,CACIF,UAAWD,EAAOosC,aAClB5rC,cAAeR,EAAOqsC,WACtBjsC,KAAM8sC,EAAAA,MAIlB,kBAAC5B,EAAD,CACIv5B,KAAMu6B,EACN9gB,SAAUkhB,EACV56B,QAAS06B,O,8MChKzB,MAAMW,GAAcC,EAAAA,EAAAA,QAAM,CAACC,EAAoBhjB,KACpC7W,EAAAA,EAAAA,SAAQ9L,IAAyBA,EAAKtE,OAASsE,EAAK2b,MAAMiqB,cAAchnC,SAAS+mC,EAAWC,gBAA5F95B,CACH6W,KAUKkjB,EAAuB,QAAC,UAACxpB,EAAD,OAAYvQ,EAAS,GAArB,UAAyBg6B,GAA1B,SAChC1gB,EAAAA,EAAAA,MACIqgB,EAAY35B,IACZgR,EAAAA,EAAAA,MAAKgpB,IACLvmC,EAAAA,EAAAA,MAAK8d,IAAD,CACArd,KAAM,CACFqB,GAAIgc,EAAS3f,IACbhC,MAAO2hB,EAAS3hB,OAAS2hB,EAAS1B,KAClC0B,SAAAA,OAPZ+H,CAUE/I,I,ICnBD0pB,E,gCAAAA,GAAAA,EAAAA,OAAAA,SAAAA,EAAAA,WAAAA,a,CAAAA,IAAAA,EAAAA,KCNE,MAAMluC,GAAYC,E,SAAAA,GAAW,CAChCkuC,eAAgB,CACZ7kC,QAAS,OACT8qB,cAAe,MACf,UAAW,CACP/yB,QAAS,IAGjBglB,MAAO,GACP+nB,eAAgB,GAChBC,oBAAqB,CACjB,mBAAoB,IAExBzgB,WAAY,CACRvsB,QAAS,oBACTlB,gBAAiB,uBAErBmuC,YAAa,CACT9sC,SAAU,OACVC,WAAY,IACZH,WAAY,QAEhBT,KAAM,CACFW,SAAU,OACVyI,YAAa,OAEjBskC,UAAW,CACPpuC,gBAAiB,qBACjBkB,QAAS,SACT8W,OAAQ,EACR7O,QAAS,OACTS,WAAY,SACZrG,MAAO,mBACPlC,SAAU,OACVC,WAAY,KAEhB+sC,0BAA2B,CACvB1lC,SAAU,WACVuI,IAAK,EACLG,OAAQ,EACRF,KAAM,EACNC,MAAO,EACPjI,QAAS,OACT4H,eAAgB,SAChBnH,WAAY,YCmHpB,EA9H6B,IAAsE,IAArE,MAAClG,EAAD,WAAQ4qC,EAAa5qC,EAArB,KAA4B0F,EAA5B,OAAkC+wB,EAAlC,MAA0CjU,EAA1C,QAAiDC,GAAoB,EAC/F,MAAM7lB,EAAST,IACTyK,GAAW4D,EAAAA,EAAAA,WACVwI,EAAQC,IAAa9L,EAAAA,EAAAA,WAAS,IAI9BiJ,EAAQy6B,IAAa1jC,EAAAA,EAAAA,UAAS,KAG9B+f,EAAeuB,IAAoBthB,EAAAA,EAAAA,UAAS,KAG7C,MAAC8f,EAAD,UAAQ6jB,EAAR,kBAAmBC,EAAnB,sBAAsCC,GFlBV,KAAmC,IAAlC,KAACtlC,EAAD,OAAO+wB,EAAP,OAAermB,GAAmB,EACrE,MAAM06B,EAAYl7B,QAAQ6mB,GACpBwU,GAAWvqC,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,8BAEvBma,GAAYj/B,EAAAA,EAAAA,UAAQ,IACd8/B,IACCC,EAAAA,IAAAA,YACM,CAACC,EAAOC,KAAR,aAAkBD,MAAAA,GAAlB,UAAkBA,EAAOnrC,aAAzB,aAAkB,EAAcqrC,cAAcD,MAAAA,OAA5B,EAA4BA,EAAOprC,QAErD,CAACsrC,EAAQC,IAAW,GAEpC,CAACN,IAEEO,GAA0BrgC,EAAAA,EAAAA,UAC5B,IAAO2/B,EAAYX,EAAqB,CAACxpB,UAAW,CAAC8V,GAASrmB,OAAAA,EAAQg6B,UAAAA,IAAc,IACpF,CAACU,EAAWrU,EAAQrmB,EAAQg6B,IAE1BqB,GAA6BtgC,EAAAA,EAAAA,UAC/B,IACI2/B,GAAAA,MAAaU,GAAAA,EAAyB1oC,OAChC,CACE,CACIwB,KAAM,CACFqB,GAAI0kC,EAAY5T,OAChBz2B,MAAO1B,IAAAA,KAAU,WAErB2oB,MAAOukB,IAGb,IACV,CAACV,EAAWU,IAGVE,GAA+BvgC,EAAAA,EAAAA,UACjC,IACIg/B,EAAqB,CACjBxpB,UAAWjb,EACX0K,OAAAA,EACAg6B,UAAAA,KAER,CAAC1kC,EAAM0K,EAAQg6B,IAGbuB,GAAkBxgC,EAAAA,EAAAA,UACpB,IACI2/B,GAAAA,MAAaY,GAAAA,EAA8B5oC,OACrC,CACE,CACIwB,KAAM,CACFqB,GAAI0kC,EAAYxoB,WAChB7hB,MAAO1B,IAAAA,KAAU,eAErB2oB,MAAOykB,IAGbA,GACV,CAACZ,EAAWY,IAGVzkB,GAAQ9b,EAAAA,EAAAA,UACV,KAAMygC,EAAAA,EAAAA,KAAyBH,GAAe,IAAI9U,OAAOgV,KACzD,CAACF,EAAaE,IAGZZ,EAAoBU,EAAY3oC,OAChCkoC,EAAwBW,EAAgB7oC,OAC9C,MAAO,CAACmkB,MAAAA,EAAO6jB,UAAAA,EAAWC,kBAAAA,EAAmBC,sBAAAA,IEhDwBa,CAAuB,CAACnmC,KAAAA,EAAM+wB,OAAAA,EAAQrmB,OAAAA,IAQrG07B,GAAsB9gC,EAAAA,EAAAA,cACxB,CAAC1G,EAAMoO,KACH+V,GAAiB/Q,EAAAA,EAAAA,SAAO1O,EAAAA,EAAAA,QAAO0J,IAAUq5B,EAAAA,EAAAA,QAAOznC,IAAO0nC,EAAAA,EAAAA,SAAOjjB,EAAAA,EAAAA,QAAO,KAAMzkB,EAAKqB,KAA/D+R,CAAqEwP,MAE1F,CAACA,IAGC+kB,GAAcjhC,EAAAA,EAAAA,cAAY,CAACnI,EAAGyB,IAAUA,EAAK2iB,MA1CvB,GADZ,IA2CmF,IAE7FilB,GAAsBlhC,EAAAA,EAAAA,cACxB,IAAY,IAAX,KAAC1G,GAAU,EACRwnC,EAAoBxnC,GAAM6yB,EAAAA,EAAAA,MAAIiJ,EAAAA,EAAAA,MAAIrX,EAAAA,EAAAA,QAAO,KAAMzkB,EAAKqB,IAAtBy6B,CAA2BlZ,OAE7D,CAAC4kB,EAAqB5kB,KAGpB,WAACilB,EAAD,cAAaC,IAAiBC,EAAAA,EAAAA,GAAsB,CACtDplB,MAAAA,EACAtY,KAAMqE,EACNs5B,oBAAqBJ,EACrBhlB,cAAAA,IAGEqlB,GAAgB/hC,EAAAA,EAAAA,QAAO,MAC7B+hC,EAAc9jC,QAAU0jC,EAExB,MAAMK,EAAc1B,GAAaC,EAAoB,EAAI,IAAMC,EAAwB,EAAI,GAAK,EAC1Fl8B,EAAamY,EAAMnkB,OAAS0pC,EAE5BC,EAAa/gB,KAAKsP,IA9DM,IAHd,GAmEElsB,EAlEU,GAkE6B09B,GAEnDE,EAAkBhhB,KAAKqG,IAjEJ,IAiE8B0a,EAhE3B,KAkEtBE,GAAmB3hC,EAAAA,EAAAA,cACrB,CAACk7B,EAAD,EAA2BxnC,KAAU,UAA7B,KAAC4F,EAAD,MAAOsoC,EAAQ,GAAc,EACjC,MAAMC,GAAYzM,EAAAA,EAAAA,MAAIrX,EAAAA,EAAAA,QAAO,KAAMzkB,EAAKqB,IAAtBy6B,CAA2BlZ,GACvC4lB,EAAYP,EAAc9jC,UAAY/J,EAE5C,OACI,kBAACquC,EAAA,EAAD,CACI9oC,IAAKK,EAAKtC,IACV+H,QAAS+hC,EACTp5B,QAASm6B,EACTD,MAAOA,EACPlnC,KAAMpB,EACNtE,MAAO,kBAACgtC,EAAA,EAAD,CAAa7sC,KAAMmE,EAAKtE,MAAOitC,UAAW78B,IACjD88B,YAAa5oC,EAAKtE,MAClBkmC,MAAOA,EACP4G,UAAWA,EACX7wB,aAAa,UAAC3X,EAAKqd,gBAAN,QAAC,EAAemX,UAC7BqU,SAAU7oC,EAAK6oC,aAI3B,CAAC/8B,EAAQ07B,EAAqB5kB,IAG5BkmB,GAAmBpiC,EAAAA,EAAAA,cACrB,CAACk7B,EAAO5hC,IACJ,kBAAC,EAAA+oC,SAAD,CAAUvhC,UAAW,MAAOjP,UAAWD,EAAO8tC,UAAWxE,MAAOA,EAAOjiC,IAAM,SAAQK,EAAKA,KAAKqB,MAC1FrB,EAAKA,KAAKtE,QAGnB,IAGJ,OACI,yBAAKnD,UAAWQ,GAAAA,CAAWT,EAAO0tC,eAAgB,CAAC,CAAC1tC,EAAO4lB,OAAQA,KAC/D,kBAAC,EAAA3Y,OAAD,CAAQhK,MAAM,UAAUkK,QAvFR,IAAMkJ,GAAWD,GAuFiBhX,IAAK4K,EAAU/J,UAAWD,EAAOmtB,YAC/E,kBAAC+Y,EAAA,EAAD,CAAS7kC,QAAS,CAACE,KAAMvB,EAAOI,QAChC,yBAAKH,UAAWD,EAAO6tC,aAAczqC,IAEzC,kBAACstC,EAAA,EAAD,CACI3+B,KAAMqE,EACNnW,UAAWQ,GAAAA,CAAWT,EAAO4tC,oBAAqB5tC,EAAO2tC,gBACzD97B,SAAU7H,EAAS6B,QACnBiG,SAASgb,EAAAA,EAAAA,OApFS,KACtBxC,EAAcpkB,OAAS,GACvB2f,GAAQ8G,EAAAA,EAAAA,OAAM,WAAYrC,OAZf,IAAMjU,GAAU,KAGf,IAAM43B,EAAU,MAGT,IAAMpiB,EAAiB,MAyFtC8kB,SAAU1C,EACV6B,gBAAiBA,EACjBhvC,MAAOktC,EACPxsB,eApHa,IAqHbovB,qBAAsBpB,GAEtB,kBAACqB,EAAA,EAAD,CACIxB,YAAaA,EACbyB,WAAYf,EACZS,iBAAkBA,EAClBnmB,MAAOA,EACP9iB,OAAQsoC,EACRN,WAAYA,IAEE,IAAjBllB,EAAMnkB,QACH,yBAAKjG,UAAWD,EAAO+tC,2BACnB,kBAAC,EAAAvsC,WAAD,CAAYC,QAAQ,UAAUoH,QAAQ,QAAQkoC,cAAY,GACrDrvC,IAAAA,KAAU,0B,+RCnJvC,MAAMw1B,EAAmBn3B,IACrB,MAAM,eAACoiB,EAAD,cAAiBxd,GAAiB5E,EAClCqD,GAAQ4tC,EAAAA,EAAAA,KAAwB7uB,EAAgBxd,EAAcssC,kBAEpE,OACI,kBAAC,IAAD,GACI7tC,OAAO8B,EAAAA,EAAAA,KAAS9B,GAChB6+B,mBAAoBt9B,EAAcsgB,YAActgB,EAAc6tB,qBAC1DzyB,KAKhBm3B,EAAgB8C,UAAYkX,EAAAA,IAE5B,SAAerhC,EAAAA,EAAAA,MAAKqnB,I,8MClBb,MAAM33B,GAAYC,E,SAAAA,GAAW,CAChCkI,KAAM,CACF1E,aAAc,QAElB4iB,MAAO,CACH5iB,aAAc,K,wpBCqCtB,MAAMm0B,EAAsBp3B,IACxB,MAAMC,EAAST,KACT,eACF4pB,EADE,SAEFnlB,EAFE,2BAGF6wB,EAHE,uBAIFsc,EAJE,uBAKFC,EALE,kBAMFvV,EANE,iBAOFH,GAEA37B,EADG8jC,E,kXARP,CASI9jC,EATJ,sJAUM,eAACoiB,EAAD,cAAiBxd,EAAjB,KAAgC2X,EAAhC,WAAsC0a,EAAtC,OAAkDD,EAAlD,kBAA0D/P,GAAqB6c,EAC/Erc,GAAwB5Z,EAAAA,EAAAA,QAAOuU,IAC/B,IAAC/iB,EAAD,eAAMg9B,IAAkBC,EAAAA,EAAAA,GAA0B,CAACX,iBAAAA,EAAkB2V,UAAU,IAC/EC,GAAmBC,EAAAA,EAAAA,KAAiCpvB,GACpDqvB,GAAqBC,EAAAA,EAAAA,KAAmCtvB,GACxDuvB,GAA0BC,EAAAA,EAAAA,KAAuChtC,GACjEitC,GAAuBpL,EAAAA,EAAAA,KAAcxiC,EAAU0tC,GAC/CtuC,EAAQ+lB,GACR6nB,EAAAA,EAAAA,KAAwB7nB,EAAgByoB,EAAqBX,kBAC7D9uB,EAAe/e,MACfijC,GAAkB93B,EAAAA,EAAAA,UAAQ,IAAM,CAACmjC,IAA0B,CAACA,IAE5DG,GAAgBtjC,EAAAA,EAAAA,UAClB,KAAMujC,EAAAA,EAAAA,KAAgC9a,EAAYwa,IAClD,CAACxa,EAAYwa,IAGXO,GAA8BxjC,EAAAA,EAAAA,UAChC,KAAMyjC,EAAAA,EAAAA,KAA+B7vB,EAAgB4U,IACrD,CAAC5U,EAAgB4U,IAGfkb,GAAiB1jC,EAAAA,EAAAA,UACnB,IACI+iC,GAAoB,CAChBzvC,WAAWqwC,EAAAA,EAAAA,KAAuBZ,GAClCxc,YAAYqd,EAAAA,EAAAA,KAA2Bb,GACvCtd,YAAa7R,EAAe/e,QAEpC,CAACkuC,EAAkBnvB,EAAe/e,QAGhCgvC,GAAoB7jC,EAAAA,EAAAA,UACtB,KACI8jC,EAAAA,EAAAA,KAAmC1tC,GAC9BsC,KAAK8wB,IAAgBnzB,EAAAA,EAAAA,KAAuBZ,EAAU+zB,KACtDvkB,OAAOkC,EAAAA,WAChB,CAAC/Q,EAAeX,IAGdsuC,GAAsClkC,EAAAA,EAAAA,cACvC0mB,IAAeyd,EAAAA,EAAAA,KAAgD5tC,EAAemwB,IAC/E,CAACnwB,IAGC6tC,GAAiBpkC,EAAAA,EAAAA,cAClBvK,IACOslB,GACAgoB,EAAuBhoB,EAAe/jB,KAE1C,MAAMqtC,EAAmBjrB,EAAsB3b,QACzC6mC,IACD7L,EAAAA,EAAAA,SAAQhjC,IAAWA,EAAOuB,OAAQutC,EAAAA,EAAAA,KAAoCF,GACrEG,EAAgB,EAAH,GACZzwB,EADY,CAEf/e,MAAOS,EAAOT,MACdyvC,UAAWH,EAAkBD,EAAiBI,WAAYC,EAAAA,EAAAA,KAAoCjvC,GAC9FkvC,YAAaL,EACPD,EAAiBM,aACjBC,EAAAA,EAAAA,KAAqC7wB,KAE/C6E,EAAkB,CAACrkB,MAAOiwC,EAAejuC,cAAAA,EAAeS,IAAK+c,EAAe/c,MACxE2sC,GACAlW,GAAkBoX,EAAAA,EAAAA,KAAWlB,MAGrC,CACI5vB,EACAxd,EACAwkB,EACAnC,EACAmqB,EACAtV,EACAkW,IAIFmB,GAAiB9kC,EAAAA,EAAAA,cACnB,CAACu4B,EAAewM,KACZ,MAAMC,GAAqBtmB,EAAAA,EAAAA,MACvBwlB,GACAvZ,EAAAA,EAAAA,KAA2Bzc,GAFJwQ,CAGzB8kB,GACIyB,GAAYC,EAAAA,EAAAA,KAAsB,CACpC3M,cAAAA,EACAwM,UAAAA,EACA3Z,eAAgB4Z,EAChBpvC,SAAAA,EACAsY,KAAAA,IAEJk2B,EAAea,GACfjC,EAAuBiC,KAE3B,CACIf,EACAh2B,EACAs1B,EACA5tC,EACAwuC,EACApB,IAIFmC,GAA4BhlC,EAAAA,EAAAA,UAC9B,KACIilC,EAAAA,EAAAA,KAAsB,CAClB7uC,cAAAA,EACAwd,eAAAA,EACA7F,KAAAA,EACA+a,mBAAmBA,EAAAA,EAAAA,KAAkBL,EAAY7U,MAEzD,CAACxd,EAAewd,EAAgB7F,EAAM0a,IAEpCyc,GAA4BllC,EAAAA,EAAAA,UAC9B,KAAMmlC,EAAAA,EAAAA,KAAuBp3B,EAAMs1B,IACnC,CAACt1B,EAAMs1B,IAGLx6B,GAAe4rB,EAAAA,EAAAA,KAAgB+O,GAErC,OACI,kBAAC/P,EAAA,EAAD,KACQ6B,EADR,CAEIzgC,OAAO8B,EAAAA,EAAAA,KAAS9B,GAChB6+B,mBAAoBmQ,EACpBpb,WAAY6a,EACZ7tC,SAAUA,IAEV,yBAAK5E,IAAKA,EAAKa,UAAWm8B,GACtB,kBAAC8G,EAAA,EAAD,CAAc9rB,aAAcA,GACxB,kBAACgvB,EAAA,EAAD,CACInmC,UAAWQ,GAAAA,CAAWT,EAAO0H,KAAM,CAC/B,CAAC1H,EAAO4lB,OAAQxO,GAAiB66B,IAAkB9qB,EAAAA,EAAAA,KAAU8qB,EAAepwC,aAEhFgC,OAAQouC,GAAkB,GAC1B5L,gBAAiBA,EACjBlR,IAAK,GACLN,2BAA4BA,EAC5BvY,KAAMA,EACNq3B,YAAaJ,EACb7qC,SAAU8pC,EACVvM,SAAUwN,EAA4BP,OAAiB18B,EACvDxS,SAAUA,EACV4/B,gCAAiC0O,QAQzDnb,EAAmB6C,UAAnB,KACO4Z,EAAAA,IADP,CAEIzqB,eAAgB8b,EAAAA,IAChBjhC,SAAUokC,EAAAA,IACVvT,2BAA4BoF,IAAAA,OAC5BkX,uBAAwBlX,IAAAA,KACxBmX,uBAAwBnX,IAAAA,KACxB4B,kBAAmB5B,IAAAA,KACnByB,iBAAkBzB,IAAAA,SAGtB,SAAesB,EAAAA,EAAAA,GACXC,EAAAA,GACA,CAACC,EAAD,KAAmD,IAApC,eAACtZ,EAAD,cAAiBxd,GAAmB,EAC/C,MAAM,MAAC4S,GAASkkB,GAAgB,GAEhC,MAAO,CAACC,kBADcC,EAAAA,EAAAA,KAAqBpkB,EAAO4K,EAAe/c,IAAKT,EAAcS,KAC1Cq2B,EAAe,QAE7DtE,GCnNEkK,EAAqB,CACvB8P,uBAAwB1oB,EAAAA,GAAAA,iBAAAA,QAAAA,cACxB2oB,uBAAwB3oB,EAAAA,GAAAA,iBAAAA,QAAAA,cACxBoT,kBAAmBpT,EAAAA,GAAAA,OAAAA,QAAAA,kBAKvB,GAAe6Y,EAAAA,EAAAA,UAjBS,CAAClY,EAAOya,KAC5B,MAAMhiC,GAAY8wC,EAAAA,EAAAA,KAAoC9O,EAAS1hB,gBAC/D,MAAO,CACHgH,gBAAgBhC,EAAAA,EAAAA,KAAUtlB,GAAawxB,EAAAA,GAAAA,UAAAA,kBAAsCjK,EAAOvnB,GAAa,KACjGmC,SAAUqvB,EAAAA,GAAAA,UAAAA,YAAgCjK,GAC1CyL,2BAA4BxB,EAAAA,GAAAA,UAAAA,8BAAkDjK,EAAO,CAAC,cAYtDiY,EAAxC,CAA4DlK,I,4sBCTrD,MCVD0c,EAEF,G,2DCHJ,MAEat0C,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChCuU,QAAS,CACLhQ,MAAO,QAEXwsC,aAAc,CACVC,UAAW,WAEfpS,OAAQ,CACJ94B,QAAS,OACTmT,KAAM,EACN1S,WAAY,aACZtG,aAAe,OACfqF,SAAU,YAEd,eAAgB,CACZ2T,KAAM,YAEV,yBAA0B,CACtBtS,WAAY,OACZb,QAAS,OACTS,WAAY,UAEhB,iBAAkB,CACdT,QAAS,OACTS,WAAY,SACZjG,YAAa,OAEjB0M,UAAW,CACPvG,YAAa,QAEjBI,OAAQ,CACJ3G,MAAOF,EAAMG,QAAQK,KAAKiE,WAE9BwF,YAAa,CACTzF,OAAS,QAEbs6B,QAAS,CACL5+B,MAAOF,EAAMG,QAAQK,KAAKiE,UAC1B7D,eAAgB,gBAEpBm+B,YAAa,CACT1yB,UAAW,SACXnM,MAAOF,EAAMG,QAAQK,KAAKiE,e,gNCAlC,MAKM4vB,EAAwB,IAexB,IAfyB,UAC3Bn3B,EAD2B,eAE3BkiB,EAF2B,cAG3Bxd,EAH2B,kBAI3B0yB,EAJ2B,SAK3B2G,EAL2B,KAM3B1hB,EAN2B,aAO3BqgB,EAP2B,kBAQ3B5V,EAR2B,kBAS3BC,EAT2B,kBAU3B6U,EAV2B,2BAW3BlE,EAX2B,MAY3BvO,EAZ2B,iBAa3BsS,GAEE,EADCx7B,E,kXACD,4NACF,MAAMF,EAAST,IACTsiC,EAAoB,YAAVzY,EACViZ,EAAmB,WAAVjZ,EACTT,GAAiBwT,EAAAA,EAAAA,KAAoB7f,GACrC03B,GAAY9b,EAAAA,EAAAA,KAAwB,CAACvzB,cAAAA,EAAe2X,KAAAA,IACpD23B,GAAUT,EAAAA,EAAAA,KAAsB,CAAC7uC,cAAAA,EAAewd,eAAAA,EAAgB7F,KAAAA,EAAM+a,kBAAAA,IACtEoL,GAAYC,EAAAA,EAAAA,KAAwB,CAAC/9B,cAAAA,EAAewd,eAAAA,EAAgB7F,KAAAA,EAAM+a,kBAAAA,IAC1E6c,EAAaD,GAAWtrB,EACxBvR,GAAe4rB,EAAAA,EAAAA,KAAgBhF,GAC/BmW,GAA+BrwC,EAAAA,EAAAA,cAAaslB,IAC9CgrB,EAAAA,EAAAA,KAA0BzvC,GCpEa,EAC3CykB,EACAjH,EACA5d,KAEA,MAAMgO,EAAsC8gB,EAAAA,GAAAA,UAAAA,iCACxCjK,EACA7kB,GAEJ,GAAIgO,EAAM,CACN,MAAM8hC,EAAWlyB,EAAe/c,KAC1B,QAACkvC,EAAD,4BAAUC,GJPE,EAACnrB,EAAOirB,EAAkB9hC,KAAwC,MACxF,MAAMiiC,EAA2CjiC,EAAK+hC,QAAQG,SAAS/vC,IACnE,MAAMgwC,EAAarhB,EAAAA,GAAAA,UAAAA,iCAAqDjK,EAAO1kB,GAC/E,OAAOgwC,EAAWrvB,OAAOpe,KAAKtE,GAAD,KACtBA,EADsB,CAEzB+B,KAAAA,EACAiwC,oBAAqBD,EAAW3vB,SAAS4vB,2BAG3CC,EAAmBvhB,EAAAA,GAAAA,UAAAA,oBAAwCjK,GAC3DvnB,EAAYwxB,EAAAA,GAAAA,UAAAA,aAAiCjK,GAC7CyrB,EAAcxhB,EAAAA,GAAAA,UAAAA,4BAAgDjK,GAC9DplB,EAAWqvB,EAAAA,GAAAA,UAAAA,YAAgCjK,GAC3C0rB,GAAuBC,EAAAA,EAAAA,KAAyE,CAClGC,aAAcR,EACdH,SAAAA,EACAxyC,UAAAA,EACA+yC,iBAAAA,EACAC,YAAAA,IAEEI,GAAuCnoB,EAAAA,EAAAA,MACzCooB,EAAAA,KACAC,EAAAA,EAAAA,WAAU,KACVluC,EAAAA,EAAAA,MAAI6lB,EAAAA,EAAAA,OAAKxJ,EAAAA,EAAAA,MAAK,CAAC,YAAa,QAAS8xB,EAAAA,OACrCC,EAAAA,EAAAA,SAAO,UAACT,EAAiB/yC,UAAlB,aAAC,EAA6B6C,OACrC0qC,EAAAA,EAAAA,QAAOlkC,EAAAA,OACPtC,EAAAA,KANyCkkB,CAQzC,CACIjrB,UAAAA,EACAoC,YAAa2wC,EACbC,YAAAA,EACA7wC,SAAAA,GAEJqwC,GAQEE,EAN8BhiC,EAAK+hC,QACpC9gC,QAAQ8hC,GAAYL,EAA2B/1B,MAAKq2B,EAAAA,EAAAA,KAAoBD,MACxEruC,KAAKquC,GACiBjiB,EAAAA,GAAAA,UAAAA,iCAAqDjK,EAAOksB,GAC7DvwB,WAEsCvR,QAC3DuR,IAAc+vB,EAAqB51B,MAAK,QAAC,KAACxa,EAAD,MAAO/B,GAAR,SAAmBA,GAAS+B,IAASqgB,EAAS3f,SAgB3F,MAAO,CAACkvC,QAdQpvB,OAAOG,OACnByvB,EAAqB3vB,QACjB,CAACqwB,EAAU3b,KAAX,kBACO2b,EADP,CAEI,CAAC3b,EAAO8a,qBAAsB,CAC1BjwC,KAAMm1B,EAAO8a,oBACbc,YAAY7sC,EAAAA,EAAAA,MAAK,CAACixB,EAAOl3B,UAAW,UAAA6yC,EAAS3b,EAAO8a,4BAAhB,eAAsCc,aAAc,KACnFjiC,OAAOR,SACPwR,YAGb,KAGS+vB,4BAAAA,IIpDkCmB,CAAWtsB,EAAOirB,EAAU9hC,IACrE,UAACojC,GAAY,GAAStiB,EAAAA,GAAAA,UAAAA,8BAAkDjK,EAAOirB,IAAa,GAC5FuB,GChB4BC,EDgBqBtB,GCftCruC,OACfxE,IAAAA,KAAU,mDAAoD,CAC5Do0C,QANOC,EAMWF,EAAqB5uC,KAAI6lB,EAAAA,EAAAA,OAAKlS,EAAAA,EAAAA,MAAK,UAAWxX,GAAW,IAAGA,QALtF2yC,EAAM5wB,QAAO,CAACC,EAAQ4wB,EAAM/vC,IAAM,CAACmf,EAAQ4wB,GAAMlzC,KAAKmD,IAAM8vC,EAAM7vC,OAAS,EAAK,IAAGxE,IAAAA,KAAU,UAAY,SAMjGujB,WAA4C,IAAhC4wB,EAAqB3vC,OAAexE,IAAAA,KAAU,aAAeA,IAAAA,KAAU,gBAErF,GDWIyX,IAAgBgJ,MAAAA,GAAAA,EAAgByQ,YAAezQ,MAAAA,GAAAA,EAAgBxf,OAC/DqK,EACDmM,GAAgBw8B,GAAaj0C,IAAAA,KAAU,yBACvCyX,GAAgBy8B,GACjB,GACEK,EAAwC,CAC1C3B,QAASsB,EAAuB,KAAOtB,EACvCznC,WAAa+oC,GAAwBz8B,GAAiBw8B,EACtD3oC,YAAAA,GAKJ,OAHIA,IACAipC,EAAQtzC,MAAQ,MH3BH,EAAC0xC,EAAU4B,KAChC,MAAMC,EAAgBrC,EAAqBQ,GAC3C,OAAIt5B,EAAAA,EAAAA,QAAOk7B,EAASC,GACTA,IAEHn7B,EAAAA,EAAAA,QAAOm7B,MAAAA,OAAD,EAACA,EAAe5B,QAAS2B,EAAQ3B,WACvC2B,EAAQ3B,QAAU4B,EAAc5B,SAEpCT,EAAqBQ,GAAY4B,EAC1BA,IGoBAE,CAAU9B,EAAU4B,GC9BOJ,IAAAA,EAHvBE,GF2ELK,CAAgChtB,EAAOjH,EAAgBxd,MAAAA,OAAxB,EAAwBA,EAAeS,KACtE,QAEJ,IAAChG,EAAD,eAAMg9B,IAAkBC,EAAAA,EAAAA,GAA0B,CAACX,iBAAAA,EAAkB2V,UAAU,IAE/Evf,GAAqBvjB,EAAAA,EAAAA,UAAQ,KAAMwjB,EAAAA,EAAAA,KAA0BptB,IAAgB,CAACA,IAC9EhC,GAAQ4L,EAAAA,EAAAA,UACV,KAAM8nC,EAAAA,EAAAA,IAA4Bl0B,EAAgB2P,IAClD,CAAC3P,EAAgB2P,IAEfwkB,GAAkBloC,EAAAA,EAAAA,cAAY,KAC5B4vB,GACAnC,GAAkBoX,EAAAA,EAAAA,KAAWjV,MAElC,CAACA,EAAUnC,IACR0a,GAAsBnoC,EAAAA,EAAAA,cACxB0e,EAAAA,EAAAA,OAAK0pB,EAAAA,EAAAA,IAAkBr0B,EAAgBxd,GAAgBqiB,EAAmBsvB,GAC1E,CAACn0B,EAAgBxd,EAAeqiB,EAAmBsvB,IASjDG,KAAkB9Z,GAAgBqX,IAAcrvC,EAAc+zB,YAC9DiK,IAAoBd,KAAa9a,GAAqB0b,EACtDprB,KAAaD,EACbs/B,GAAe7U,EAAU,CAACh1B,UAAU,GAAQ,GAC5C8pC,IAA2BzyC,EAAAA,EAAAA,YAAW0yC,EAAAA,IAEtC,2BAACC,IGlGkC,KAAkD,IAAjD,QAACt4B,EAAD,iBAAUha,EAAV,SAA4B8vC,GAAqB,EAC3F,MAAMvsB,GAAWC,EAAAA,EAAAA,eACX+uB,GAAqBhzC,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,uBAEjC0jB,EADwBx4B,IAAWy4B,EAAAA,EAAAA,KAAwBF,EAAoBvyC,GACpC8vC,EAAW,MACtD,UAAC4C,GAAY,IACfnzC,EAAAA,EAAAA,cAAaslB,GAAUiK,EAAAA,GAAAA,UAAAA,8BAAkDjK,EAAOirB,MAAc,GAC5F6C,GAAU9oC,EAAAA,EAAAA,cACXimC,IACGvsB,EAASW,EAAAA,GAAAA,iBAAAA,QAAAA,8BAA+D,CAACrjB,IAAKivC,EAAU4C,WAAW,OAEvG,CAACnvB,IAcL,MAAO,CAAC+uB,4BAZqFtoC,EAAAA,EAAAA,UACzF,IACIwoC,EACM,CACEhuC,GAAIguC,EACJE,UAAAA,EACAC,QAAAA,GAEF,MACV,CAACH,EAAkBE,EAAWC,MH4EGC,CAA8B,CAC/D54B,QAASo4B,KAA4BvC,EAAAA,EAAAA,KAA0BzvC,GAC/DJ,iBAAkBI,MAAAA,OAAF,EAAEA,EAAeS,IACjCivC,SAAUlyB,EAAe/c,MAG7B,OACI,yBAAKhG,IAAKA,EAAKa,UAAWQ,GAAAA,CAAWT,EAAO2hC,OAAQ1hC,EAAWm8B,IAC3D,kBAAC8G,EAAA,EAAD,CAAc9rB,aAAcA,EAAcnX,UAAWD,EAAO8zC,cACxD,yBACI7zC,UAAWQ,GAAAA,CACPT,EAAO,gBACP,CAAC,CAACA,EAAO6hC,SAAUA,GACnB,CAAC,CAAC7hC,EAAO,4BAA6Bk0C,IAE1C,iBAAe,0BAEdA,EACG,kBAACkD,EAAA,WAAD,CAA+Cz0C,MAAOk0C,IAClD,kBAACQ,EAAA,EAAD,GACI/X,WAAWgY,EAAAA,EAAAA,KAAwB3yC,EAAcS,KACjDzC,MAAOA,EACPmvB,mBAAoBA,EACpBva,MAAOF,GACP3O,SAAU6tC,EACVxW,WAAS,GACLoU,EACAj0C,EACAw2C,MAIZ,kBAAC9kB,EAAA,EAAD,CACIjvB,OAAOkvB,EAAAA,EAAAA,KAAkB1P,GACzB2P,mBAAoBA,MAKpC,yBAAK7xB,UAAWD,EAAO,mBAClBqiC,GACG,kBAAC,EAAA7gC,WAAD,CAAYC,QAAQ,UAAUxB,UAAWD,EAAO8hC,aAAhD,IACMpgC,IAAAA,KAAU,UADhB,KAIH+0C,IACG,kBAACt2C,EAAA,EAAD,CACIC,KAAMm3C,EAAAA,EACNpqC,QAASwvB,EACTr8B,KAAK,IACLL,UAAWQ,GAAAA,CAAWT,EAAO+P,UAAW/P,EAAO4J,UAGtD+tB,GAA8BA,EAA2B,CAAChzB,cAAAA,EAAewd,eAAAA,IACzEwgB,IACG,kBAACxiC,EAAA,EAAD,CAAiBF,UAAWD,EAAO4J,OAAQxJ,KAAMwrB,EAAAA,EAAYze,QApE5D,KACb4Z,EAAkB,CAAC3hB,IAAK+c,EAAe/c,IAAKT,cAAAA,KACxC6yC,EAAAA,EAAAA,KAAaxZ,KAAcyZ,EAAAA,IAAAA,QAC3BnB,KAiEwFh2C,KAAK,SAOzG82B,EAAsB4C,UAAY,CAC9B/5B,UAAWg6B,IAAAA,OACX9X,eAAgBu1B,EAAAA,IAChB/yC,cAAew+B,EAAAA,IACfnF,SAAU2Z,EAAAA,IACVtgB,kBAAmB4C,IAAAA,KACnB7Q,MAAO6Q,IAAAA,MAAgB,CAAC,UAAW,WACnC3d,KAAM4d,EAAAA,IACNyC,aAAc1C,IAAAA,KACdlT,kBAAmBkT,IAAAA,KACnBjT,kBAAmBiT,IAAAA,KACnB4B,kBAAmB5B,IAAAA,KACnBtC,2BAA4BsC,IAAAA,KAC5ByB,iBAAkBzB,IAAAA,QAGtB,SAAe2d,EAAAA,EAAAA,IACXrc,EAAAA,EAAAA,GACIC,EAAAA,GACA,CAACC,EAAD,KAAoC,IAArB,eAACtZ,GAAoB,EAChC,MAAM,MAAC5K,GAASkkB,GAAgB,GAEhC,MAAO,CAACC,kBADcnkB,MAAAA,OAAA,EAAAA,EAAOnS,OAAQ+c,EAAe/c,IACVq2B,EAAe,QAE7DrE,IAtJsB,KAC1B,MAAMp3B,EAAST,IACf,OAAO,yBAAKU,UAAWD,EAAOgN,kB,kGI3ClC,MAAMqpC,EAA8B,WAAiC,IAAhCl0B,EAAgC,uDAAf,IAAI,KAACzd,GAAU,uCACjE,MAAM,MAAC/B,EAAD,WAAQiwB,GAAczQ,EAC5B,OAAQzd,GACJ,KAAKquB,EAAAA,IAAAA,aACL,KAAKA,EAAAA,IAAAA,mBACL,KAAKA,EAAAA,IAAAA,8BACD,OAAO8kB,EAAAA,EAAAA,KAAal1C,GAExB,KAAKowB,EAAAA,IAAAA,UACD,OAAQpwB,GAASm1C,EAAAA,IAAAA,MAAAA,YAAwBn1C,IAAW,KACxD,KAAKowB,EAAAA,IAAAA,gBACL,KAAKA,EAAAA,IAAAA,eACL,KAAKA,EAAAA,IAAAA,qBACD,OAAQpwB,GAAS,IAAIqwB,KAAKrwB,IAAW,KAEzC,KAAKowB,EAAAA,IAAAA,sBACL,KAAKA,EAAAA,IAAAA,YACD,MAAO,CAACpwB,MAAAA,EAAOiwB,WAAAA,GAEnB,QACI,OAAOjwB,IAIbo1C,EAA8B,CAACpzC,EAAeqzC,KAChD,MAAM,KAACtzC,IAAQqtB,EAAAA,EAAAA,KAA0BptB,GACzC,OAAQD,GACJ,KAAKquB,EAAAA,IAAAA,aACL,KAAKA,EAAAA,IAAAA,mBACL,KAAKA,EAAAA,IAAAA,8BACD,OAAOilB,EAAYC,WACvB,KAAKllB,EAAAA,IAAAA,UACD,OAAQilB,GAAez0B,GAAAA,CAAOy0B,GAAav0B,OAAO,eAAkB,GACxE,KAAKsP,EAAAA,IAAAA,eACD,OAAQilB,GAAez0B,GAAAA,CAAOy0B,GAAav0B,UAAa,GAE5D,KAAKsP,EAAAA,IAAAA,qBACL,KAAKA,EAAAA,IAAAA,gBACD,OAAOilB,GAAeA,EAAYE,UACtC,QACI,OAAOF,GAAe,KAI5BxB,GAAoBpJ,EAAAA,EAAAA,QAAM,CAACjrB,EAAgBxd,EAAeqzC,KAErD,CACHr1C,MAFUo1C,EAA4BpzC,EAAeqzC,GAGrD5yC,IAAK+c,EAAe/c,IACpBT,cAAAA,O,gDCpDD,MAAMm1B,E,MAAsB7oB,GAAAA,cAGxB,O,gDCHJ,MAAMgoB,E,MAA0BhoB,GAAAA,cAA8B,O,kECuB9D,MAAMknC,EAAuB,CAChCn0C,EACAU,EACA0zC,EACAC,KAEA,MAAMt0B,GAAY+I,EAAAA,EAAAA,MACd0Z,EAAAA,KACA2O,EAAAA,EAAAA,WAAU,KACVp1C,EAAAA,EAAAA,OAAM,CAAC,aAAc,yBACrBqvC,EAAAA,EAAAA,QAAOlkC,EAAAA,OACPotC,EAAAA,SACAve,EAAAA,EAAAA,QAAOwe,EAAAA,IAAIzrB,EAAAA,EAAAA,MAAKzH,EAAAA,QAAQ+pB,EAAAA,EAAAA,SAAOjjB,EAAAA,EAAAA,QAAO,MAAO6S,EAAAA,IAAAA,GAAAA,MAAlClS,CAA4DkS,EAAAA,MANzDlS,CAOhB9oB,EAAUU,GAEZ,OAAO0zC,EAAYlyC,OACb6d,EAAUvQ,QAAO,QAAC,IAACpO,GAAF,SAAWgzC,EAAY9xC,SAASlB,MACjD2e,EAAUvQ,QAAO,QAAC,IAACpO,GAAF,SAAYizC,EAAY/xC,SAASlB,OAQ/Ck0B,EAAkB,CAC3B7B,EACAyB,KAEA2H,EAAAA,EAAAA,YAAU/T,EAAAA,EAAAA,OAAKxJ,EAAAA,EAAAA,MAAK,CAAC,WAAY,SAAShd,EAAAA,EAAAA,UAASiyC,EAAAA,GAAI9gB,IAAyByB,I,6GC5CpF,MAWA,EAXiB,IAAsB,IAArB,QAAC/rB,GAAoB,EACnC,MAAMnN,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAAuH,KAAD,CAAMoI,UAAU,SAASzN,QAAQ,UAAUxB,UAAWD,EAAOyD,KAAM0J,QAASA,EAAS+d,UAAU,QAC3F,kBAAC,IAAD,CAAiBjrB,UAAWD,EAAO,oBAClC0B,IAAAA,KAAU,gB,4GCJvB,MAaA,EAbiB,IAA+C,IAA9C,WAACy8B,EAAD,YAAaE,EAAb,QAA0BlxB,GAAoB,EAC5D,MAAMnN,GAAST,EAAAA,EAAAA,KAEf,OACI,kBAAC,EAAAuH,KAAD,CAAMoI,UAAU,SAASzN,QAAQ,UAAUxB,UAAWD,EAAOyD,KAAM0J,QAASA,EAAS+d,UAAU,QAC3F,kBAAC,IAAD,CAAuBjrB,UAAWD,EAAO,oBACxCm+B,GAAcE,EACT38B,IAAAA,KAAU,4DAA6D,CAACy8B,WAAAA,EAAYE,YAAAA,IACpF38B,IAAAA,KAAU,gB,gCClBrB,MAAMnC,GAAYC,E,SAAAA,GAAW,CAChCiE,KAAM,CACFoF,QAAS,OACTc,UAAW,GAEf,iBAAkB,CACd5I,SAAU,W,qGCNlB,MAKA,EALmBhB,IACf,MAAM,cAAC4E,GAAiB5E,EACxB,OCEW,MACC,aAAC4E,GAA2B,IAAZ5E,EAAY,uDAAJ,GAChC,OAAQ4E,EAAcD,MAClB,KAAKquB,EAAAA,IAAAA,YACD,OAAO,kBAACmE,EAAA,EAAoBn3B,GAChC,KAAKgzB,EAAAA,IAAAA,eACD,OAAO,kBAACoE,EAAA,EAAuBp3B,GACnC,QACI,OAAO,kBAACy4C,EAAA,EAAoBz4C,MDVPu3B,MAAM3yB,EAAe5E,K,+IEmB1D,MA2DA,GAAe8P,EAAAA,EAAAA,OA3DQ,IAUV,IAVW,UACpBkU,EADoB,OAEpBlgB,EAFoB,UAGpBiiB,EAHoB,UAIpBW,EAJoB,SAKpBrlB,EALoB,UAMpBnB,EANoB,IAOpBk1B,EAPoB,sBAQpBsC,EAAwBC,EAAAA,EARJ,UASpB/J,GACS,EACT,MAAOmO,EAAoBC,IAAyBxxB,EAAAA,EAAAA,UAAS4qB,GAAOwL,EAAAA,GAC9DzH,GAAa3qB,EAAAA,EAAAA,UAAQ,KAAMkqC,EAAAA,EAAAA,KAA6B10B,EAAWlgB,EAAQ8pB,IAAY,CACzF5J,EACAlgB,EACA8pB,KAEGyL,EAAyBC,IAAqB9qB,EAAAA,EAAAA,UACjD,KAAM+qB,EAAAA,EAAAA,GAAgB7B,EAAuByB,IAC7C,CAACA,EAAYzB,IAGXihB,EAA6Brf,EAAkB9yB,MAAM,EAAGu1B,GACxDmB,EAAW9H,GAAOujB,EAA2BxyC,OAASmzB,EAAkBnzB,OACxEg3B,EACF/H,GAAOujB,EAA2BxyC,QAAUmzB,EAAkBnzB,QAAUivB,EAAMujB,EAA2BxyC,OAEvGwzB,EAAiB,CACnBnb,QAASkI,GAWb,OACI,yBAAKxmB,UAAWA,GACXmB,GAAY,kBAAC,IAAoBs4B,EAAiBt4B,GAClDs3C,EAA2B3e,OAAOX,GAAyBnyB,KAAI,QAAC,SAAC8d,EAAD,OAAWM,GAAZ,SAC5D,kBAAC,IAAD,CACIhe,IAAK0d,EAAS3f,IACdT,cAAeogB,EACf0B,UAAWA,EACXpB,OAAQA,EACRqI,QAAQpK,EAAAA,EAAAA,MAAK,CAAC,SAAUyB,EAAS3f,KAAMvB,EAAOohB,YAC9Ca,UAAWA,EACX6H,UAAWA,OAGlBsP,GAAY,kBAAC,IAAD,CAAU9vB,QAtBZ,KACf4uB,EAAsB4E,EAAAA,MAsBjBzD,GAAY,kBAAC,IAAD,CAAU/vB,QAnBZ,KACf4uB,EAAsB5G,W,2kBCzD9B,MAAMp0B,EAAW,OACXF,EAAa,OAEb83C,EAAe,CACjBC,SAAU,CACN/vC,QAAS,QACTlI,UAAW,OACX8gC,WAAY,OACZp+B,YAAa,OAEjBvC,MAAO,CACHG,WAAY,UAEhB08B,OAAQ,CACJj0B,WAAY,MACZF,YAAa,OACbG,UAAW,OACX83B,WAAY,GAEhBoX,gBAAiB,CACblvC,UAAW,OACX83B,WAAY,EACZj4B,YAAa,UAIRjK,GAAYC,EAAAA,EAAAA,GAAW,CAChCs5C,eAAgB,CACZ5U,WAAY,MACZvQ,cAAe,MACf,eAAgB,CACZA,cAAe,QAGvBolB,wBAAyB,CACrBplB,cAAe,MACf,eAAgB,CACZA,cAAe,UAKdqlB,GAAmBx5C,EAAAA,EAAAA,GAAW,EAAD,CACtC8X,QAAS,CACLvW,SAAAA,EACAF,WAAAA,EACAmb,KAAM,GAEVi9B,qBAAsB,CAClBpwC,QAAS,OACTS,WAAY,QACZ3I,UAAW,QAEfynB,UAAW,CACP1e,WAAY,MACZrG,YAAa,MACb+N,aAAc,MACdvI,QAAS,SACT3H,SAAU,SACVD,WAAY,WACZuE,UAAW,cAEf0zC,UAAW,CACP5xC,MAAO,OACPC,OAAQ,OACRvE,aAAc,OACdwG,YAAa,MACbE,WAAY,MACZzG,MAAO,wBAER01C,IAGMQ,GAAqB35C,EAAAA,EAAAA,GAAW,EAAD,CACxC8X,QAAS,CACLzO,QAAS,OACTyX,cAAe,SACfhX,WAAY,aACZvI,SAAAA,EACAF,WAAAA,GAEJunB,UAAW,CACP,eAAgB,CACZplB,aAAc,GAElBK,YAAa,MACb+N,aAAc,MACd1H,WAAY,MACZ1G,aAAc,MACd/B,WAAY,WACZuE,UAAW,cAEfyf,WAAY,CACR8uB,UAAW,YAEZ4E,EAtBqC,CAuBxCC,SAAU,EAAF,GACDD,EAAaC,SADZ,CAEJ51C,aAAc,W,iFCvEtB,MAkDA,EAlDwB,IAQX,IARY,MACrBL,EADqB,iBAErBi5B,EAFqB,cAGrBj3B,EAHqB,eAIrB+hB,EAJqB,iBAKrBC,EALqB,UAMrBgH,EANqB,sBAOrBoP,GACS,EACT,MAAM/8B,EAASg5C,KACT,MAAC51C,EAAD,YAAQ4c,GAAerb,EAEvBN,GAAa+0C,EAAAA,EAAAA,KAAmBz0C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OACI,yBAAKrE,UAAWQ,GAAAA,CAAWT,EAAOi5C,qBAAsBhpC,EAAAA,IACpD,yBAAKhQ,UAAWQ,GAAAA,CAAWT,EAAO44C,SAAU54C,EAAOsX,UAC/C,kBAACkmB,EAAA,EAAD,CACIp6B,MAAOA,EACPnD,UAAWQ,GAAAA,CAAWT,EAAOc,MAAO4lB,GACpC,iBAAe,2BAEnB,kBAAC+W,EAAA,EAAD,CAAiBzd,YAAaA,EAAa/f,UAAWD,EAAO64C,kBAC7D,kBAACnb,EAAA,EAAD,CACIzM,YAAa2K,EACbj3B,cAAeA,EACf1E,UAAWD,EAAO29B,OAClBzM,WAAY6L,IAEhB,kBAACgB,EAAA,EAAD,CACI99B,UAAWQ,GAAAA,CAAWT,EAAOooB,UAAWzB,GACxCxE,eAAgBxf,EAChBgC,cAAeA,EACfgpB,UAAWA,EACX0rB,SAAO,KAGf,kBAACC,EAAA,EAAD,CACIl0C,IAAKzC,EAAMyC,IACXrD,mBAAmBw3C,EAAAA,EAAAA,KAAwBl1C,EAAY,CACnDe,IAAKzC,EAAMyC,MAEff,WAAYA,M,0BC7C5B,MAiFA,EAjF0B,IAYb,IAZc,IACvB8wB,EADuB,OAEvB9P,EAFuB,iBAGvBuW,EAHuB,mBAIvB/N,EAJuB,cAKvBlpB,EALuB,UAMvBmhB,EANuB,iCAOvB8H,EAPuB,eAQvBlH,EARuB,iBASvBC,EATuB,UAUvBgH,EAVuB,sBAWvBoP,GACS,EACT,MAAM/8B,EAASm5C,KACRrd,EAAoBC,IAAyBxxB,EAAAA,EAAAA,UAAS4qB,GAEvD6H,EAAY7H,EAAMtH,EAClBoP,EAAWD,GAAalB,EAAqBjO,EAC7CqP,EAAWF,GAAalB,GAAsBjO,GAC9C,MAACzqB,EAAD,YAAQ4c,GAAerb,EAoBvBw4B,EAAc9X,EAAO9e,MAAM,EAAGu1B,GAC9BuB,EAAoBxP,EAAqBiO,EAE/C,OACI,yBAAK77B,UAAWD,EAAOsX,SACnB,yBAAKrX,UAAWD,EAAO44C,UACnB,kBAACpb,EAAA,EAAD,CACIp6B,MAAOA,EACPnD,UAAWQ,GAAAA,CAAWT,EAAOc,MAAO4lB,GACpC,iBAAe,2BAEnB,kBAAC+W,EAAA,EAAD,CAAiBzd,YAAaA,IAC9B,kBAAC0d,EAAA,EAAD,CACIzM,YAAa2K,EACbj3B,cAAeA,EACf1E,UAAWD,EAAO29B,OAClBzM,WAAY6L,KAGpB,yBAAK98B,UAAWD,EAAOilB,YAClBkY,EAAYl2B,KAAKtE,GACd,kBAACo7B,EAAA,EAAD,CACI12B,IAAK1E,EAAMyC,IACXnF,UAAWQ,GAAAA,CAAWT,EAAOooB,UAAWzB,GACxCxE,eAAgBxf,EAChBgC,cAAeA,EACfgpB,UAAWA,OAItBsP,GACG,kBAACiB,EAAA,EAAD,CACIC,YAAYC,EAAAA,EAAAA,KAAIjJ,EAAKkI,GACrBgB,YAAahB,EACblwB,QApDG,KACXkY,EAAOnf,OAAS2nB,GAChBD,EAAiC,CAC7B9H,UAAAA,EACAvhB,iBAAkBI,EAAcS,IAChC4oB,kBAAmBrpB,EAAc0e,KACjCgC,OAAAA,EACA4I,iBAAkBkH,IAI1B4G,EAAsBD,EAAqB3G,MA4CtC+H,GAAY,kBAACoB,EAAA,EAAD,CAAUnxB,QAzCZ,KACf4uB,EAAsB5G,Q,eCvD9B,MAaA,EAb+B,IAAyD,IAAxD,UAACl1B,EAAD,OAAYolB,EAAZ,UAAoBtmB,EAApB,aAA+By6C,GAAyB,EACpF,OACI,yBAAKv5C,UAAWA,EAAW,iBAAgBu5C,GACtCn0B,EAAOpe,KAAI,CAACtE,EAAOb,IAChB,kBAAC,EAAAsF,SAAD,CAAUC,IAAK1E,GACX,kBAAC5D,EAAD,CAAW4D,MAAOA,IACjBb,EAAQujB,EAAOnf,OAAS,GAAK,U,udCZ3C,MAAMuzC,GAAkBj6C,EAAAA,EAAAA,GAAW,CACtCk6C,gBAAiB,GACbpyC,MAAO,eACJqyC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBjyB,gBAAiB,GACbrgB,MAAO,cACP3D,eAAgB,eAChB/C,QAAS,SACN+4C,EAAAA,IAAgBC,EAAAA,IAAAA,oBCe3B,EAVa,IAAoB,IAAnB,MAACj3C,GAAkB,EAC7B,MAAM3C,EAASy5C,IACTz1C,GAAqBF,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,cACjC,WAACwmB,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,GAC1BC,GAAsBC,EAAAA,EAAAA,KAA4C,QAASr3C,EAAOk3C,GAClFI,GAAmBC,EAAAA,EAAAA,KAA6BH,GAEtD,OAAO,0BAAM95C,UAAWD,EAAOi6C,KAAoBE,EAAAA,EAAAA,KAAan2C,EAAUrB,KCL9E,EATc,QAAC,UAAC1C,EAAD,OAAYolB,GAAb,SACV,kBAAC,EAAD,CACIA,OAAQA,EACRplB,UAAWA,EACXu5C,aAAa,yBACbz6C,UAAWq7C,K,oCCGnB,MA0BA,EA1BY,IAAoB,IAAnB,MAACz3C,GAAkB,EAC5B,MAAM3C,EAASy5C,IACTrmB,GAAiBtvB,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,WAC7BgnB,GAAwBv2C,EAAAA,EAAAA,aAAYuvB,EAAAA,GAAAA,UAAAA,WACpCinB,GAAoBp2C,EAAAA,EAAAA,YAAWstB,EAAAA,IAC/B,WAACqoB,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,IAC1B,eAACS,IAAkBr2C,EAAAA,EAAAA,YAAWqvB,EAAAA,GAC9BwmB,GAAsBC,EAAAA,EAAAA,KAA4C,OAAQr3C,EAAOk3C,GACjFI,GAAmBC,EAAAA,EAAAA,KAA6BH,GAEhDl2C,EAASy2C,GAAaD,EAE5B,OACI,kBAACG,EAAA,EAAD,CACIv6C,UAAWD,EAAOi6C,GAClBlzC,KAAMwzC,EAAe,CACjBnnB,OAAAA,EACAqnB,IAAK93C,EACLd,UAAWgC,EAAO62C,YAAaC,EAAAA,EAAAA,KAAuB92C,GAAUA,EAAOuB,OAG1EzC,ICnBb,EATa,QAAC,UAAC1C,EAAD,OAAYolB,GAAb,SACT,kBAAC,EAAD,CACIA,OAAQA,EACRplB,UAAWA,EACXu5C,aAAa,yBACbz6C,UAAW67C,KCuCnB,EAtCwB,IAAoC,IAAnC,OAACv1B,EAAD,cAAS1gB,GAA0B,EACxD,MAAM3E,EAASg5C,KACT,MAAC51C,GAASuB,EA2BhB,OACI,yBAAK1E,UAAWQ,GAAAA,CAAWT,EAAO44C,SAAU54C,EAAOsX,WA1BnCrX,EA2BAD,EAAOk5C,UA1BhBv0C,EAAcS,MAAQ45B,EAAAA,IAAAA,KAAAA,IAA2B,kBAAC,IAAD,CAAS/+B,UAAWA,IAAgB,MA2BxF,kBAACu9B,EAAA,EAAD,CAAOp6B,MAAOA,EAAOnD,UAAWD,EAAOc,MAAO,iBAAe,2BAxBhDb,CAAAA,IACjB,OAAQ0E,EAAcS,KAClB,KAAK45B,EAAAA,IAAAA,KAAAA,IACD,OAAO,kBAAC,EAAD,CAAM/+B,UAAWA,EAAWolB,OAAQA,IAC/C,KAAK2Z,EAAAA,IAAAA,MAAAA,IACD,OAAO,kBAAC,EAAD,CAAO/+B,UAAWA,EAAWolB,OAAQA,IAEhD,QAEI,OACI,kBAAC0Y,EAAA,EAAD,CACI99B,UAAWA,EACXkiB,eAAgB,CAACxf,MAAO0iB,EAAO,IAC/B1gB,cAAeA,EACf00C,SAAO,MAWlB9Y,CAAYvgC,EAAOooB,YA7BRnoB,IAAAA,G,eCJjB,MAAMugC,EAAoB,IAOpB,IAPqB,cAC9B77B,EAD8B,gBAE9Buc,EAF8B,OAG9BwM,EAH8B,UAI9B5H,EAJ8B,UAK9B6H,EAL8B,iCAM9BC,GACS,EACT,MAAM5tB,EAASm5C,KACT,MAAC/1C,EAAD,YAAQ4c,GAAerb,EAE7B,OACI,oCACI,yBAAK1E,UAAWD,EAAO44C,UACnB,kBAACpb,EAAA,EAAD,CAAOv9B,UAAWD,EAAOc,MAAOsC,MAAOA,EAAO,iBAAe,2BAC7D,kBAACq6B,EAAA,EAAD,CAAiBx9B,UAAWD,EAAO64C,gBAAiB74B,YAAaA,KAErE,kBAACygB,EAAA,EAAD,CACIvf,gBAAiBA,EACjBvc,cAAeA,EACf+oB,OAAQA,EACR5H,UAAWA,EACX8H,iCAAkCA,EAClCD,UAAWA,MCfrB+S,EACO,UADPA,EAES,YAFTA,EAGS,YAHTA,EAIO,UA8Gb,GAAe7wB,EAAAA,EAAAA,OAtFS,IAWX,IAXY,OACrBwV,EADqB,cAErB1gB,EAFqB,UAGrB8hB,EAHqB,OAIrBiH,EAAS,GAJY,UAKrB5H,EALqB,IAMrBqP,EAAMwL,EAAAA,EANe,iCAOrB/S,EAPqB,eAQrBlH,EARqB,iBASrBC,EATqB,UAUrBgH,GACS,EACT,MAAM3tB,EAAST,IACTqhC,GAAgBC,EAAAA,EAAAA,WAAUhO,EAAAA,KAChC,IAAKxN,IAAWA,EAAOnf,OACnB,OAAO,KAEX,MAAO46B,EAAU7P,GAAe2P,EAAcvb,GACxC0b,EAAgBpT,EAAYtI,EAASyb,EACrClF,EAAmBjO,EAAY,GAAKsD,EACpC4L,EAAYlP,EAAY,cAAgB,gBACxCE,GAAqB/S,EAAAA,EAAAA,SAAO+d,EAAAA,EAAAA,KAAIgE,IAAYjiB,EAAAA,EAAAA,MAAKiiB,IAAYzwB,EAAAA,EAAAA,QAAO20B,EAAc76B,QAA7D4U,CAAsE4S,GAC3FqP,EAAwBrP,MAAAA,GAAAA,EAAQK,YAChCL,EAAOK,YAAcF,EACrB+N,EAAiB11B,OACjB20C,EAAyC,IAAvBhtB,KAA6B8D,EAAAA,EAAAA,KAAmBhtB,GAsDxE,OACI,kBAACi1B,EAAA,EAAD,CAAiBrb,QAASkI,EAAWxmB,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAO+4C,yBAA0BtyB,KAC1F,yBAAKxmB,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAO84C,iBAAkBryB,KAtD/C,MAOX,QANata,EAAAA,EAAAA,MAAK,CACd,CAACisB,EAAAA,KAAoBhsB,EAAAA,EAAAA,QAAOs0B,IAC5B,CAACQ,EAAAA,KAAS90B,EAAAA,EAAAA,QAAOs0B,IACjB,EAACt0B,EAAAA,EAAAA,QAAOyuC,IAAkBzuC,EAAAA,EAAAA,QAAOs0B,IACjC,CAACp0B,EAAAA,GAAGF,EAAAA,EAAAA,QAAOs0B,KAJFv0B,CAKVxH,IAEC,KAAK+7B,EACD,OACI,kBAAC,EAAD,CACI/9B,MAAOo+B,EAAc,GACrBnF,iBAAkBA,EAClBmB,sBAAuBA,EACvBp4B,cAAeA,EACf+hB,eAAgBA,EAChBC,iBAAkBA,EAClBgH,UAAWA,IAGvB,KAAK+S,EACD,OACI,kBAAC,EAAD,CACIrb,OAAQ0b,EACRnF,iBAAkBA,EAClB/N,mBAAoBA,EACpBkP,sBAAuBA,EACvBp4B,cAAeA,EACfmhB,UAAWA,EACXqP,IAAKA,EACLvH,iCAAkCA,EAClClH,eAAgBA,EAChBC,iBAAkBA,EAClBgH,UAAWA,IAGvB,KAAK+S,EACD,OACI,kBAACF,EAAD,CACItf,gBAAiB6f,EACjBp8B,cAAeA,EACf+oB,OAAQA,EACR5H,UAAWA,EACX8H,iCAAkCA,EAClCD,UAAWA,IAGvB,KAAK+S,EACD,OAAO,kBAAC,EAAD,CAAiBrb,OAAQ0b,EAAep8B,cAAeA,MAMEm2C,QC7H1EzZ,EAAqB,CACvBzT,iCAAkCnF,EAAAA,GAAAA,QAAAA,kCAKtC,GAAe6Y,EAAAA,EAAAA,UAVS,CAAClY,EAAD,SAAQ,IAAC+L,GAAT,QAA+B,CACnDA,IAAKA,GAAO9B,EAAAA,GAAAA,UAAAA,oBAAwCjK,MAShBiY,EAAxC,CAA4D7a,I,yLCbrD,MAAMjnB,GAAYC,E,SAAAA,GAAW,CAChCu7C,iBAAkB,CACdpxC,UAAW,OAEfqxC,eAAgB,CACZnyC,QAAS,OACTlI,UAAW,QAEfyC,MAAO,CACHrC,SAAU,OACVF,WAAY,OACZuU,cAAe,SACf8uB,WAAY,MACZx6B,WAAY,OAEhBuxC,OAAQ,CACJj/B,KAAM,K,wHCQd,MAAMgmB,EAAmB,IAUnB,IAVoB,mBACtBC,EADsB,eAEtB9f,EAFsB,MAGtB/e,EACAvD,SAAUuiC,GAAe,EAJH,SAKtBhhC,EALsB,UAMtBusB,EANsB,cAOtBhpB,EAPsB,cAQtBu2C,EARsB,UAStBC,GACE,EACF,MAAMn7C,EAAST,IACT67C,GAAgBC,EAAAA,EAAAA,KAChBj2C,EAAM+c,EAAe/c,KACpBvF,EAAU2iC,IAAej4B,EAAAA,EAAAA,WAAS,IACnC,sBAAC+wC,EAAwB,GAAzB,qBAA6BC,IAAwBr3C,EAAAA,EAAAA,YAAWs3C,EAAAA,IACtE5vC,EAAAA,EAAAA,YAAU,KACN42B,EAAYJ,KACb,CAACA,IACJ,MAAMU,GAAoBb,GAAsB,IAAI/iB,MAAMva,IAAkB2zB,EAAAA,EAAAA,KAAoB3zB,KAC1Fo+B,GAAsBx0B,EAAAA,EAAAA,UACxB,I,8UAAM,CAAN,CACI0W,WAAY6d,EAAmB,KAAO3gB,EAAexf,MACrD6vB,oBAAqBsQ,EAAmB3gB,EAAexf,MAAQ,OAC3Dy1B,EAAAA,EAAAA,KAAmBzzB,GAAiBwd,EAAexf,MAAQ,KAEnE,CAACwf,EAAgB2gB,EAAkBn+B,IAGjCN,GAAa+0C,EAAAA,EAAAA,KAAmBz0C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OACI,yBAAKrE,UAAWD,EAAO+6C,kBACnB,yBAAK96C,UAAWQ,GAAAA,CAAWT,EAAOg7C,eAAgB/qC,EAAAA,IAC9C,kBAACgzB,EAAA,EAAD,CAAmB91B,QAAS,IAAMq1B,GAAa7/B,IAAWA,IAAQ9C,SAAUA,IAC3Eq7C,EACG,kBAACA,EAAD,CAAev2C,cAAeA,EAAewd,eAAgBA,IAE7D,oCACI,kBAAC,EAAA3gB,WAAD,CACI0N,UAAU,OACVzN,QAAQ,QACRJ,QAAS,CAACo6C,MAAOz7C,EAAOoD,OACxBnD,UAAWQ,GAAAA,CAAW,CAClB,CAAC86C,GAAuBD,EAAsBh1C,SAAS6b,EAAe/c,KACtE,CAACg2C,EAAcM,WAAW7oB,EAAAA,EAAAA,KAAK1Q,KAEnC,iBAAe,kCAEd/e,GAEL,yBAAKnD,UAAWD,EAAOi7C,SACtBE,GAAa,kBAACA,EAAD,CAAWx2C,cAAeA,EAAewd,eAAgBA,IACvE,kBAACm3B,EAAA,EAAD,CACIl0C,IAAK+c,EAAe/c,IACpBrD,mBAAmBw3C,EAAAA,EAAAA,KAAwBl1C,EAAY,CACnDe,IAAK+c,EAAe/c,MAExBf,WAAYA,MAK3BxE,GACG,kBAAC03B,EAAA,EAAD,CACIxT,UAAWke,EACXp+B,OAAQk/B,EACRtc,WAAW,EACXX,UAAW1gB,EACXuoB,UAAWA,GAEVvsB,KAOrB4gC,EAAiBhI,UAAY,CACzB54B,SAAU64B,IAAAA,KACV72B,MAAO62B,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,OAC9CgI,mBAAoBhI,IAAAA,QAAkBkJ,EAAAA,KACtChhB,eAAgB8X,IAAAA,UAAoB,CAACmJ,EAAAA,IAA0BC,EAAAA,MAC/DxjC,SAAUo6B,IAAAA,KACVtM,UAAWsM,IAAAA,KACXt1B,cAAew+B,EAAAA,IACf+X,cAAejhB,IAAAA,YACfkhB,UAAWlhB,IAAAA,aAGf,W,oICtHO,MCOM16B,GAAYC,E,SAAAA,IAAYuD,IAAD,CAChC8U,MAAO,IAAwD,IAAvD,YAAC+W,EAAD,YAAc7W,EAAd,WAA2BD,GAA4B,EAC3D,MAAO,CACHtO,YAAaolB,EACbtnB,MAAOwQ,EACPvQ,OAAQwQ,EACRrH,OAAQ,UACR,eAAgB,CACZlH,YAAa,KAIzBmyC,qBAAsB,CAClBtzC,SAAU,WACV,WAAY,CACR3B,QAAS,KACT2B,SAAU,WACVwI,KAAM,EACND,IAAK,EACLE,MAAO,EACPC,OAAQ,EACR6K,WAAa,SAAOggC,EAAAA,EAAAA,KD5BL,6KC6Bfl8C,gBAAiBi6C,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmCl6C,gBACpE8I,cAAe,SAGvBqzC,qBAAsB,CAClBxzC,SAAU,WACV,WAAY,CACR3B,QAAS,KACT2B,SAAU,WACVwI,KAAM,EACND,IAAK,EACLE,MAAO,EACPC,OAAQ,EACRrR,gBAAiBi6C,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmCl6C,gBACpE8I,cAAe,SAGvBmf,gBAAiB,IAA2C,IAA1C,WAAC7P,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHzQ,MAAOwQ,EACPvQ,OAAQwQ,EACRiG,UAAW,aACXjW,QAAU,aAAwB4xC,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,QACrF64C,cAAgB,SAGxBpC,gBAAiB,IAA2C,IAA1C,WAAC5hC,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHzQ,MAAOwQ,EACPvQ,OAAQwQ,EACRiG,UAAW,aACXjW,QAAU,aAAwB4xC,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,QACrF64C,cAAgB,SAGxBC,gBAAiB,IAA2C,IAA1C,WAACjkC,EAAD,YAAaC,GAA6B,EACxD,MAAO,CACHzQ,MAAOwQ,EACPvQ,OAAQwQ,EACRiG,UAAW,aACXjW,QAAU,aAAwB4xC,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,QACrF64C,cAAgB,SAGxB1uB,OAAQ,CACJnqB,MAAOF,EAAMG,QAAQM,QAAQE,KAC7B3C,SAAU,OACVF,WAAY,OACZuU,cAAe,EACfxU,QAAS,WACTysB,UAAW,SACXnsB,SAAU,SACVD,WAAY,SACZE,aAAc,gBCAtB,EArD4B,IAQf,IARgB,cACzBwD,EADyB,gBAEzBuc,EAAkB,GAFO,OAGzBwM,EAHyB,UAIzB5H,EAJyB,iCAKzB8H,EALyB,UAMzBD,EANyB,UAOzBH,EAAYC,EAAAA,IACH,EACT,MAAMztB,EAAST,EAAUiuB,IACnB,WAACqsB,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,GA6BhC,OACI,kBAACrZ,EAAA,EAAD,CACIvf,gBAAiBA,EACjBvc,cAAeA,EACf2oB,YA/ByB,IAAgC,IAA/B,yBAACsD,GAA8B,EAwB7D,OAvBqBxI,IACjB,MAAMzP,GAAMsJ,EAAAA,EAAAA,KAAgCmG,IACtC,IAAChjB,GAAOgjB,EACR4zB,GAAkBC,EAAAA,EAAAA,KAA0B72C,EAAKy0C,GACjDqC,GAA6BhC,EAAAA,EAAAA,KAA6B8B,GAChE,OACI,yBACI/7C,UAAWQ,GAAAA,CAAWT,EAAO6X,MAAO,CAChC,CAAC7X,EAAOk8C,EAA6B,UAAWA,IAEpD70C,IAAKjC,EACL,iBAAe,0BAEf,kBAAC4c,EAAA,EAAD,CACI7U,QAAS,IAAMyjB,EAAyBxrB,GACxCnF,UAAWD,EAAOk8C,GAClBvjC,IAAKA,EACLrY,KAAM,CAACwX,WAAY0V,EAAU1V,WAAYC,YAAayV,EAAUzV,kBAc5EyV,UAAWA,EACXI,iCAAkCA,EAClCF,OAAQA,EACR5H,UAAWA,EACX6H,UAAWA,M,ulBC1EvB,MA0BA,GA1BenuB,E,SAAAA,GAAW,CACtB4D,MAAO,CACHO,eAAgB,QAEpBo4C,gBAAiB,EAAF,CACXz0C,MAAO,cACP1G,QAAS,QACT8I,WAAY,QACTiwC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBF,gBAAiB,EAAF,CACXpyC,MAAO,eACJqyC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBjyB,gBAAiB,EAAF,CACXrgB,MAAO,cACP3D,eAAgB,eAChB/C,QAAS,QACT8I,WAAY,QACTiwC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBuC,gBAAiB,CACbzyC,WAAY,S,gNCPpB,MAAMwtB,EAAkB,IAAoD,IAAnD,eAAC/U,EAAD,cAAiBxd,GAAkC,EAAhBzE,E,kXAAgB,uCACxE,MAAMF,EAAST,KAET,WAACs6C,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,GAE1BsC,GAAiB7tC,EAAAA,EAAAA,UAAQ,KAC3B,MAAMwrC,GAAsBkC,EAAAA,EAAAA,KAA0B95B,EAAe/c,IAAKy0C,GACpEqC,GAA6BhC,EAAAA,EAAAA,KAA6BH,GAE1D32C,EAAQ+e,EAAe/e,MACvB+e,EAAe/e,OACf4tC,EAAAA,EAAAA,KAAwB7uB,EAAgBxd,EAAcssC,kBAE5D,OACI,kBAACpb,EAAA,EAAD,CAAiB51B,UAAWD,EAAOm8C,gBAAiBx5C,MAAOwf,EAAgBxd,cAAeA,GACtF,kBAAC,EAAAP,IAAD,CAAK8K,UAAU,OAAOjP,UAAWQ,GAAAA,CAAWT,EAAOk8C,GAA6Bl8C,EAAOoD,QACnF,kBAACi5C,EAAA,EAAD,CAAmB94C,MAAM2B,EAAAA,EAAAA,KAAS9B,SAI/C,CAACy2C,EAAY75C,EAAQmiB,EAAgBxd,IAExC,OACI,kBAACq9B,EAAA,EAAD,GACI5+B,MAAOg5C,EACPj6B,eAAgBA,EAChB8f,oBAAoBqa,EAAAA,EAAAA,KAA8B,GAAI33C,GACtDA,cAAeA,GACXzE,KAKhBg3B,EAAgB8C,UAAYkX,EAAAA,IAE5B,SAAerhC,EAAAA,EAAAA,MAAKqnB,I,6mBClDpB,MAwBA,GAxBe13B,E,SAAAA,IAAYuD,IAAD,CACtBw5C,kBAAmB,CACf7yC,WAAY,MACZzG,MAAOF,EAAMG,QAAQK,KAAKC,SAE9Bu4C,gBAAiB,EAAF,CACXz0C,MAAO,cACP1G,QAAS,QACT8I,WAAY,QACTiwC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBF,gBAAiB,EAAF,CACXpyC,MAAO,eACJqyC,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBjyB,gBAAiB,EAAF,CACXrgB,MAAO,cACP3D,eAAgB,eAChB/C,QAAS,QACT8I,WAAY,QACTiwC,EAAAA,IAAgBC,EAAAA,IAAAA,sB,gNCH3B,MAAMziB,EAAqB,IAAsE,IAArE,eAAChV,EAAD,SAAiBne,EAAjB,cAA2BW,EAA3B,OAA0CyuB,GAA2B,EAAhBlzB,E,kXAAgB,2DAC7F,MAAMF,EAAST,IACT67C,GAAgBC,EAAAA,EAAAA,KAChBmB,GAAe7J,EAAAA,EAAAA,KAAoCxwB,GACnDs6B,GAAoBluC,EAAAA,EAAAA,UACtB,KAAM+tC,EAAAA,EAAAA,KAA8Bt4C,EAAUW,IAC9C,CAACA,EAAeX,KAGd,WAAC61C,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,IAC1B,kBAACvU,IAAqBrhC,EAAAA,EAAAA,YAAWqvB,EAAAA,GAEjCS,GAAczlB,EAAAA,EAAAA,UAAQ,KACxB,MAAMwrC,GAAsBkC,EAAAA,EAAAA,KAA0B95B,EAAe/c,IAAKy0C,GACpEqC,GAA6BhC,EAAAA,EAAAA,KAA6BH,GAEhE,OACI,kBAACS,EAAA,EAAD,CACIzzC,MAAMoS,EAAAA,EAAAA,KAAa0gC,GAActU,EAAkB,CAACnS,OAAAA,EAAQhuB,IAAKo3C,SAAiBhmC,EAClFvW,UAAWQ,GAAAA,CAAWT,EAAOk8C,GAA6B,CACtD,CAACd,EAAcM,WAAW7oB,EAAAA,EAAAA,KAAK1Q,MAGnC,kBAACk6B,EAAA,EAAD,CAAmB94C,MAAM2B,EAAAA,EAAAA,KAASid,EAAe/e,SAChD+e,EAAeo6B,mBACZ,0BAAMt8C,UAAWD,EAAOu8C,mBACpB,kBAACF,EAAA,EAAD,CAAmB94C,KAAM4e,EAAeo6B,wBAKzD,CAACp6B,EAAgB03B,EAAYzmB,EAAQopB,EAAcx8C,EAAQo7C,EAAcM,QAASnW,IAErF,OACI,kBAACvD,EAAA,EAAD,GACIC,mBAAoBwa,EACpBt6B,eAAgBA,EAChB/e,MAAO4wB,EACPrvB,cAAeA,GACXzE,KAKhBi3B,EAAmB6C,UAAY4Z,EAAAA,IAE/B,SAAe/jC,EAAAA,EAAAA,MAAKsnB,G,eC9DpB,MASA,GAAemK,EAAAA,EAAAA,UATUlY,IACd,CACHplB,SAAUqvB,EAAAA,GAAAA,UAAAA,YAAgCjK,GAC1CgK,OAAQC,EAAAA,GAAAA,UAAAA,UAA8BjK,MAM9C,CAAwC+N,I,ulBCVjC,MAAM53B,GAAYC,E,SAAAA,GAAW,CAChC+B,KAAM,CACFsH,QAAS,OACTS,WAAY,QACZmH,eAAgB,iBAEpBisC,kBAAmB,CACfn1C,OAAQ,OACRiC,YAAa,QAEjB2Y,eAAgB,CACZnG,KAAM,EACNxW,UAAW,aAEfu2C,gBAAiB,EAAF,CACXz0C,MAAO,cACP1G,QAAS,QACT8I,WAAY,QACTiwC,EAAAA,IAAgBC,EAAAA,IAAAA,iBAJR,CAKX,QAAS,CACL32C,MAAO02C,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,SAGlEy2C,gBAAiB,EAAF,CACXpyC,MAAO,eACJqyC,EAAAA,IAAgBC,EAAAA,IAAAA,iBAFR,CAGX,QAAS,CACL32C,MAAO02C,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,SAGlE0kB,gBAAiB,EAAF,CACXrgB,MAAO,cACP1G,QAAS,QACT8I,WAAY,OACZ/F,eAAgB,gBACbg2C,EAAAA,IAAgBC,EAAAA,IAAAA,iBALR,CAMX,QAAS,CACL32C,MAAO02C,EAAAA,IAAgBC,EAAAA,IAAAA,iBAAmC32C,SAGlE05C,mBAAoB,CAChBr1C,MAAO,iB,0BCbf,MAiEA,EAjEwB,IAAuE,IAAtE,UAACrH,EAAD,cAAY0E,EAAgB,KAA5B,eAAkCwd,EAAlC,QAAkDk3B,GAAoB,EAC3F,MAAMr5C,EAAST,IACT67C,GAAgBC,EAAAA,EAAAA,MAChB,sBAACC,EAAwB,GAAzB,qBAA6BC,IAAwBr3C,EAAAA,EAAAA,YAAWs3C,EAAAA,IAChE,WAAC3B,IAAc31C,EAAAA,EAAAA,YAAW41C,EAAAA,GAC1BC,GAAsBkC,EAAAA,EAAAA,KAA0B95B,EAAe/c,IAAKy0C,GACpEI,GAAmBC,EAAAA,EAAAA,KAA6BH,GAEhD6C,EACF,kBAAChrB,EAAA,EAAD,CACIjvB,OAAOkvB,EAAAA,EAAAA,KAAkB1P,GACzB2P,oBAAoBC,EAAAA,EAAAA,KAA0BptB,KAIhDN,GAAa+0C,EAAAA,EAAAA,KAAmBz0C,GAChCL,EAAAA,IAAAA,mBACAA,EAAAA,IAAAA,iBAEN,OAAO+0C,GAAWY,EACd,yBACIh6C,UAAWQ,GAAAA,CAAWR,EAAW,CAC7B,CAACs7C,GAAuBD,EAAsBh1C,SAAS6b,EAAe/c,QAG1E,kBAACywB,EAAA,EAAD,CACIlzB,MAAOwf,EACPxd,cAAeA,EACf0C,IAAK8a,EAAe/c,IACpBnF,UAAWQ,GAAAA,CAAW,CAAC,CAACT,EAAO28C,qBAAsBtD,KAErD,0BACIp5C,UAAWQ,GAAAA,CAAWT,EAAOi6C,GAAmB,CAAC,CAACmB,EAAcM,WAAW7oB,EAAAA,EAAAA,KAAK1Q,KAChF,iBAAe,0BAEdy6B,KAKb,yBACI38C,UAAWQ,GAAAA,CAAWR,EAAWD,EAAOuB,KAAM0O,EAAAA,EAAoC,CAC9E,CAACsrC,GAAuBD,EAAsBh1C,SAAS6b,EAAe/c,QAG1E,kBAACywB,EAAA,EAAD,CAAiBlzB,MAAOwf,EAAgBxd,cAAeA,EAAe0C,IAAK8a,EAAe/c,KACtF,0BACInF,UAAWQ,GAAAA,CAAWT,EAAOmiB,eAAgB,CAAC,CAACi5B,EAAcM,WAAW7oB,EAAAA,EAAAA,KAAK1Q,KAC7E,iBAAe,0BAEdy6B,IAGT,kBAACtD,EAAA,EAAD,CACIr5C,UAAWD,EAAO08C,kBAClBt3C,IAAK+c,EAAe/c,IACpBrD,mBAAmBw3C,EAAAA,EAAAA,KAAwBl1C,EAAY,CACnDe,IAAK+c,EAAe/c,MAExBf,WAAYA,O,iCCxFrB,MAAMg3C,GAAmB77C,E,SAAAA,IAAYuD,IAAD,CACvC24C,QAAS34C,EAAM85C,c,gDCDZ,MAAMnlB,EAA2B,CAACsH,EAAAA,IAAAA,MAAAA,IAA2BA,EAAAA,IAAAA,KAAAA,M,iCCF7D,MAAM/uB,EAAqC,mC,4ECG3C,MAAM6sC,EAAoB7rC,IAAAA,cAAoB,CACjDsN,SAAS,EACTw+B,mBAAoB,IAGxBD,EAAkBE,SAAShjB,UAAY,CACnCr3B,MAAOs3B,IAAAA,MAAgB,CACnB1b,QAAS0b,IAAAA,KACT8iB,mBAAoB9iB,IAAAA,UAI5B6iB,EAAkBx9C,YAAc,qB,gDCbzB,MAAMkvB,E,MAAiCvd,GAAAA,eAAoB,GAElEud,EAA+BlvB,YAAc,kC,uFCC7C,MAAM8a,EAAO,OAEApP,EAAuBiG,IAAAA,cAgCzB,CACCgsC,SAAU,GACV/pC,YAAa,KACbD,eAAgB,KAChBnI,mBAAoBsP,EACpBrP,kBAAmBqP,EACnBvP,gBAAiB,KAAM,IACvBsI,WAAYiH,EACZ8iC,YAAa,IAAM,IAAI9nB,QAAchb,GACrC+iC,iBAAkB/iC,EAClB3P,cAAe,IAAM,IAAI2qB,QAAchb,GACvCzP,YAAa,IAAM,IAAIyqB,QAAchb,GACrC5P,YAAa,IAAM,IAAI4qB,QAAchb,GACrCpM,cAAeoM,EACfnM,aAAcmM,EACdhH,oBAAqBgH,EACrBlM,cAAekM,EACf1P,SAAS,EACTuH,SAAS,EACTmrC,UAAW,KACX7tC,YAAa6K,EACbxP,UAAW,IAAM,IAAIwqB,QAAchb,KAG/CpP,EAAqB1L,YAAc,uBAE5B,MAAM+9C,EAA+B,IAA+B,IAA9B,cAACC,EAAD,SAAgBl8C,GAAc,EACvE,MAAMsE,GAAQ63C,EAAAA,EAAAA,KACd,OACI,kBAACvyC,EAAqBgyC,SAAtB,CAA+Br6C,MAAO26C,GAClC,kBAAC,aAAD,CAAuB36C,MAAO+C,GAAQtE,M,gDClE3C,MAAM+C,E,MAAqB8M,GAAAA,cAAiC,IAEnE9M,EAAmB7E,YAAc,sB,+CCF1B,MAAMkyB,E,MAAgBvgB,GAAAA,cAA4B,MAEzDugB,EAAclyB,YAAc,iB,gDCArB,MAAM4gB,E,MAAkBjP,GAAAA,cAA8B,IAE7DiP,EAAgB5gB,YAAc,mB,gDCLvB,MAAMk8C,E,MAA2BvqC,GAAAA,cAGrC,CACCqqC,sBAAuB,GACvBC,qBAAsB,KAG1BC,EAAyBl8C,YAAc,4B,gDCPhC,MAAMw6C,E,MAAqB7oC,GAAAA,cAAiC,CAC/D4oC,gBAAYrjC,EACZyO,gBAAYzO,EACZuoB,WAAOvoB,EACPqpB,UAAMrpB,IAGVsjC,EAAmBx6C,YAAc,sB,gDCP1B,MAAM02B,E,MAA2B/kB,GAAAA,cAAyC,K,gDCD1E,MAAM2lC,E,MAAgC3lC,GAAAA,eAAoB,GAEjE2lC,EAA8Bt3C,YAAc,iC,gDCFrC,MAAMwU,E,MAA2B7C,GAAAA,cAA8B,IAEtE6C,EAAyBxU,YAAc,4B,4ECMhC,MAAMk8B,EAAuBvqB,IAAAA,cAA+C,CAC/EsG,MAAO,KACPimC,eAAgBpjC,EAAAA,GAChBqjC,cAAerjC,EAAAA,KAONsjC,EAAwB,IAAuB,IAAtB,SAACt8C,GAAqB,EACxD,MAAOmW,EAAOoxB,IAAYp+B,EAAAA,EAAAA,UAAyB,MAC7CozC,GAAiB/vC,EAAAA,EAAAA,QAAO,MAExB6vC,GAAgBrvC,EAAAA,EAAAA,cAAahP,IAC/BA,EAAIyM,QAAQ+xC,eAAe,CAACC,SAAU,SAAUC,MAAO,WACnDH,GACAI,aAAaJ,EAAe9xC,SAEhC8xC,EAAe9xC,QAAUmkB,YAAW,IAAM2Y,EAAS,OAAO,OAC3D,IAEGlN,GAAeltB,EAAAA,EAAAA,UAAQ,KAAM,CAAEgJ,MAAAA,EAAOimC,eAAgB7U,EAAU8U,cAAAA,KAAiB,CAAClmC,EAAOkmC,IAE/F,OAAO,kBAACjiB,EAAqBwhB,SAAtB,CAA+Br6C,MAAO84B,GAAer6B,K,gDC/BzD,MAAMuE,E,MAAesL,GAAAA,cAAwD,IAEpFtL,EAAarG,YAAc,gB,0DCD3B,IAAI0+C,EAAY,EAET,MAAM3+C,EAAgB,KACzB,MAAM4+C,GAAgBrwC,EAAAA,EAAAA,SAAO,IACvB,QAAC2Q,EAAD,mBAAUw+B,EAAqB,IAAK74C,EAAAA,EAAAA,YAAW44C,EAAAA,IAC9CoB,EAAaC,IAAkB5zC,EAAAA,EAAAA,WAAUgU,GAAYA,GAAWy/B,EAAYjB,GAC/EkB,EAAcpyC,SACdmyC,IAEJ,MAAMI,GAAWxwC,EAAAA,EAAAA,UAWjB,OAVAhC,EAAAA,EAAAA,YAAU,KAEN,GADAoyC,KACKE,EAID,OAHAE,EAASvyC,QAAUmkB,YAAW,KAC1BmuB,GAAe,KAChB,GACI,IAAMJ,aAAaK,EAASvyC,WAExC,IACHoyC,EAAcpyC,SAAU,EACjBqyC,I,6iBCtBX,MAAMG,EAAwB,CAC1B33C,QAAS,KACT2B,SAAU,WACVwI,KAAM,UACND,IAAK,MACLtJ,MAAO,SACPC,OAAQ,oBACR+2C,cAAe,sBACfC,kBAAmB,KACnBC,wBAAyB,EACzBhd,QAAS,GAKAjiC,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACtC,gCAAiC,CAC7B,KAAM,CAACgiC,QAAS,GAChB,MAAO,CAACA,QAAS,GACjB,OAAQ,CAACA,QAAS,IAEtBgc,eAAgB,CACZ,iBACOa,EADP,CAEIziC,WAZQ,2BAehB6iC,iBAAkB,CACd,iBACOJ,EADP,CAEIziC,WAjBU,6BAoBlB8iC,gBAAiB,CACbr2C,SAAU,WACV,YAAa,CACTuI,IAAK,OACLrJ,OAAQ,yBC1BP80B,EAA4B,IAA0D,IAAxDX,iBAAkBua,EAAnB,SAA4B5E,GAAW,GAAkB,EAC/F,MAAMrxC,EAAST,IAETH,GAAMwO,EAAAA,EAAAA,QAAuB,OAC7B,MAAC2J,EAAD,cAAQkmC,GAAiBxH,GAAW,GAEpC0I,GAA0BpwC,EAAAA,EAAAA,UAAQ,KAAMg1B,EAAAA,EAAAA,QAAOqb,EAAAA,IAAAA,MAAqB,WAA5Brb,CAAwChsB,IAAQ,CAACA,IACzF6kB,EAAyB37B,GAAAA,CAAW,CACtC,CAACT,EAAOw9C,gBAAiBmB,IAAaC,EAAAA,IAAAA,MACtC,CAAC5+C,EAAOy+C,kBAAmBE,IAAaC,EAAAA,IAAAA,QACxC,CAAC5+C,EAAO0+C,iBAAkBrN,IAS9B,OANAzlC,EAAAA,EAAAA,YAAU,KACFqqC,GACAwH,EAAcr+C,KAEnB,CAAC62C,EAASwH,IAENxH,EAAU,CAAC72C,IAAAA,EAAKg9B,eAAAA,GAAkB,CAACh9B,IAAAA,K,iFC1B9C,MAAMy/C,GAA+BC,E,SAAAA,IAAW,CAACrT,EAAQsT,KAAiBC,EAAAA,EAAAA,KAAqB,CAACvT,OAAAA,EAAQsT,aAAAA,MAE3FxB,EAAW,KACpB,MAAO73C,EAAOu5C,IAAY10C,EAAAA,EAAAA,UAAqB,IAEzCkhC,GAAS3nC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBg7C,GAAej7C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,iBAE3BsV,EAAWpN,IACbU,QAAQuyC,KAAK,cAAejzC,GAC5BgzC,EAAS,KASb,OANArzC,EAAAA,EAAAA,YAAU,KACNizC,EAA6BpT,EAAQsT,GAChCtyC,MAAM/G,GAAUu5C,EAASv5C,KACzBgH,MAAM2M,KACZ,CAACoyB,EAAQsT,IAELr5C,I,yQCvBX,MA0BA,EA1B8D3F,GAEtD,2BACIuH,MAAO,GACPC,OAAQ,GACR+I,QAAQ,YACRC,MAAM,6BACNgL,WAAW,gCACPxb,GAEJ,8BACI,0BACIyQ,EAAE,2HACFzH,GAAG,qBAGX,uBAAGjJ,UAAU,mBAAmB6X,OAAO,OAAOC,YAAa,EAAGxH,KAAK,OAAOC,SAAS,WAC/E,0BAAMtH,GAAG,kBAAkBqH,KAAK,QAC5B,yBAAKoL,UAAU,sBAEnB,0BAAMrL,YAAa,IAAMC,KAAK,OAAOqL,KAAK,wBAAwBjL,EAAE","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/icons/Description.tsx","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/DescriptionIcon.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/heplers.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/styles.ts","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/PivotingUriLink.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/useAutopopulationContextValue.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/FeaturesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ProfilePerspectiveViewContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ScrollToErrorContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/styles.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/useScrollToAttributeError.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.ts","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title = '', children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {i18n.text(title)}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\n\nexport const getAbbreviationFromUserName = (username: string) =>\n username\n .split('.')\n .map((item) => item[0].toUpperCase())\n .join('');\n\nexport const getRelatedEntityUri = (comment: Pick<Comment, 'relatedObjectUris'>, entityUri: string) => {\n const index = comment.relatedObjectUris.indexOf(entityUri);\n if (index >= 0) return comment.relatedObjectUris[1 - index];\n};\n\nexport const formatDate = (time: number) => `${i18n.date(time, 'LT')} ${i18n.date(time, 'LL')}`;\n\nexport const processMentions = (\n text: string,\n mentions: string[],\n processor: (mention: string) => unknown = (value) => value,\n trigger = '+'\n) => {\n const arr = [];\n let currentStr = '';\n let process = false;\n\n for (let i = 0; i <= text.length; i++) {\n const currentCharacter = text[i];\n const nextCharacter = text[i + 1];\n const isLastCharacter = i === text.length - 1;\n\n currentStr += currentCharacter;\n\n if (currentCharacter === trigger && i === 0) {\n process = true;\n }\n if (process && mentions.includes(currentStr.slice(trigger.length))) {\n process = false;\n arr.push(processor(currentStr));\n currentStr = '';\n }\n\n if (nextCharacter === trigger) {\n process = true;\n arr.push(currentStr);\n currentStr = '';\n }\n\n if (isLastCharacter) {\n arr.push(currentStr);\n }\n }\n\n return arr;\n};\n\nexport const createNewCommentUri = () => 'comment/new';\nexport const createNewReplyUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}/reply/new`;\nexport const createEditedCommentUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}`;\nexport const createEditedReplyUri = (comment: Pick<Comment, 'commentId'>, reply: Pick<Reply, 'replyId'>) =>\n `comment/${comment.commentId}/reply/${reply.replyId}`;\n\ntype CreateCommentUriProps = {\n comment: Pick<Comment, 'commentId'> | null;\n reply: Pick<Reply, 'replyId'> | null;\n isEditingReply: boolean;\n isEditingComment: boolean;\n};\n\nexport const createCommentUri = ({comment, reply, isEditingComment, isEditingReply}: CreateCommentUriProps) => {\n if (isNil(comment)) {\n return createNewCommentUri();\n }\n if (isEditingComment) {\n return createEditedCommentUri(comment);\n }\n if (isEditingReply) {\n return createEditedReplyUri(comment, reply);\n }\n return createNewReplyUri(comment);\n};\n\nexport const transformPlainTextValueToValueWithMentions = (plainTextValue: string, mentions: string[]) => {\n let value = plainTextValue;\n for (const mention of mentions) {\n value = value.split(`+${mention}`).join(`@[${mention}](${mention})`);\n }\n return value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createCommentUri, transformPlainTextValueToValueWithMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Status = Comment['status'];\n\ntype Props = {\n inputRef: React.RefObject<HTMLInputElement>;\n className?: string;\n uri: string;\n objectType?: Comment['objectType'];\n relatedObjectUris?: Comment['relatedObjectUris'];\n popperRef?: React.RefObject<any>;\n comment?: Comment;\n reply?: Pick<Reply, 'content' | 'replyId' | 'namedUsers'>;\n isEditingComment?: boolean;\n isEditingReply?: boolean;\n onCancel?: () => void;\n};\n\nconst getPlaceholder = (status?: Status) => {\n switch (status) {\n case 'open':\n return i18n.text('Reply...');\n case 'resolved':\n return i18n.text('Adding a comment will re-open this');\n default:\n return '';\n }\n};\n\nconst getButtonText = (status?: Status, isEditingComment?: boolean, isEditingReply?: boolean) => {\n if (isEditingComment || isEditingReply) {\n return i18n.text('Edit');\n }\n if (status === 'open' || status === 'resolved') {\n return i18n.text('Reply');\n }\n\n return i18n.text('Comment');\n};\n\ntype GetDefaultCommentState = {\n comment: Comment;\n reply: Pick<Reply, 'content' | 'namedUsers'>;\n isEditingComment: boolean;\n isEditingReply: boolean;\n};\n\nconst getDefaultCommentState = ({comment, reply, isEditingComment, isEditingReply}: GetDefaultCommentState) => {\n const commentOrReply = isEditingComment ? comment : isEditingReply ? reply : null;\n const {content: plainTextValue = '', namedUsers: mentions = []} = commentOrReply || {};\n return {\n value: transformPlainTextValueToValueWithMentions(plainTextValue, mentions),\n plainTextValue,\n mentions\n };\n};\n\nexport const SendMessageArea = ({\n inputRef,\n className,\n uri,\n relatedObjectUris,\n objectType,\n popperRef,\n comment,\n reply,\n isEditingComment,\n isEditingReply,\n onCancel\n}: Props) => {\n const isEditing = isEditingComment || isEditingReply;\n const styles = useStyles({isEditing});\n\n const [focused, setFocused] = useState(false);\n const username = useSelector(mdm.selectors.getUserName) as string;\n const {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n\n const commentUri = createCommentUri({comment, reply, isEditingComment, isEditingReply});\n const defaultCommentState = getDefaultCommentState({comment, reply, isEditingComment, isEditingReply});\n const {\n value = defaultCommentState.value,\n plainTextValue = defaultCommentState.plainTextValue,\n mentions = defaultCommentState.mentions\n } = getCommentState(uri, commentUri);\n\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n\n const clearValue = () => {\n onCancel?.();\n clearCommentState(uri, commentUri);\n };\n\n const handleChange = (value: string, plainTextValue: string, mentions: string[]) =>\n updateCommentState(uri, commentUri, {value, plainTextValue, mentions});\n const handleCancel = () => clearValue();\n const handleFocus = () => setFocused(true);\n const handleBlur = () => setFocused(false);\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const request = cond([\n [\n always(!comment),\n () =>\n createComment({\n content: plainTextValue,\n namedUsers: mentions,\n objectType: objectType,\n uri,\n relatedObjectUris\n })\n ],\n [\n always(isEditingComment),\n () =>\n editComment({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n objectType: objectType,\n replies: comment.replies,\n relatedObjectUris,\n uri\n })\n ],\n [\n always(isEditingReply),\n () =>\n editReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n replyId: reply.replyId\n })\n ],\n [\n T,\n () =>\n createReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n action: comment.status === 'open' ? 'none' : 'reopen',\n uri\n })\n ]\n ]);\n return request().then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useRef, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createEditedCommentUri, formatDate} from '../utils';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n uri: string;\n onReply: () => void;\n className?: string;\n comment: CommentType;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n};\n\nexport const Comment = ({onReply, className, uri, comment, relatedObjectUris, objectType}: Props) => {\n const styles = useStyles();\n const inputRef = useRef<HTMLInputElement>();\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment, updateCommentState, getCommentState} =\n useContext(CollaborationContext);\n\n const commentUri = createEditedCommentUri(comment);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingComment = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId, updateIsEditingComment]\n );\n\n const handleResolve = () => {\n resolveThread({commentId, uri});\n };\n\n const handleReOpen = () => {\n reOpenThread({commentId, uri});\n };\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n onCancel={() => updateIsEditingComment(false)}\n isEditingComment={isEditing}\n comment={comment}\n />\n );\n return (\n <Box className={className}>\n <Box className={styles.header}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box width=\"100%\">\n <Typography className={styles.username}>{createdBy}</Typography>\n </Box>\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n {canChangeComment && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n popoverProps={{PopoverClasses: {root: styles.dropdownMenu}}}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n <Box className={styles.body}>\n <CommentTarget comment={comment} className={styles.commentTarget} />\n {isEditing ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n reply: Pick<Reply, 'createdTime' | 'content' | 'createdBy' | 'action' | 'namedUsers' | 'replyId'>;\n comment?: CommentType;\n uri: string;\n popperRef?: React.RefObject<any>;\n};\n\nexport const RepliedComment = ({className, reply, uri, comment, popperRef}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply, updateCommentState, getCommentState} = useContext(CollaborationContext);\n\n const commentUri = createEditedReplyUri(comment, reply);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingReply = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply, updateIsEditingReply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => updateIsEditingReply(false)}\n isEditingReply={isEditing}\n reply={reply}\n comment={comment}\n />\n );\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box flexGrow={1}>\n <Box className={styles.header}>\n <Typography className={styles.username}>{createdBy}</Typography>\n\n {action === 'resolve' && (\n <Typography className={styles.marked}>{i18n.text('Marked as resolved')}</Typography>\n )}\n {action === 'reopen' && <Typography className={styles.marked}>{i18n.text('Re-opened')}</Typography>}\n </Box>\n {action !== 'resolve' &&\n (isEditing ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import React from 'react';\n\nconst SvgDescription: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M5.417 9.5h1.166V8.333H5.417V9.5zM6 .167A5.835 5.835 0 00.167 6 5.835 5.835 0 006 11.833 5.835 5.835 0 0011.833 6 5.835 5.835 0 006 .167zm0 10.5A4.673 4.673 0 011.333 6 4.673 4.673 0 016 1.333 4.673 4.673 0 0110.667 6 4.673 4.673 0 016 10.667zM6 2.5a2.333 2.333 0 00-2.333 2.333h1.166A1.17 1.17 0 016 3.667a1.17 1.17 0 011.167 1.166c0 1.167-1.75 1.021-1.75 2.917h1.166c0-1.313 1.75-1.458 1.75-2.917A2.333 2.333 0 006 2.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgDescription;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n height: '15px',\n backgroundColor: 'transparent',\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px'\n },\n icon: {\n width: '12px',\n height: '12px',\n marginRight: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {FeaturesContext} from '../../../contexts';\nimport {withTooltip} from '../../../HOCs';\nimport Description from '../../../icons/Description';\n\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n className?: string;\n description?: string;\n showDescription?: boolean;\n};\nconst DescriptionIcon = ({className, description}: Props) => {\n const {showDescription} = useContext(FeaturesContext);\n const styles = useStyles();\n\n if (!description || !showDescription) {\n return null;\n }\n\n return (\n <ChipWithTooltip\n tooltipTitle={description}\n tooltipPlacement=\"bottom\"\n icon={<Description />}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label,\n icon: styles.icon\n }}\n />\n );\n};\n\nexport default DescriptionIcon;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport classnames from 'classnames';\nimport {useDispatch} from 'react-redux';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {EntityContext} from '../../../contexts';\nimport {getEntityUri} from './heplers';\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype ComplexWithLabel = NestedAttributeValue | ReferenceAttributeValue;\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n nonOvValues: Array<SimpleAttributeValue | ComplexWithLabel>;\n nonOvTotal: number;\n};\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const entity = useContext(EntityContext);\n const entityUri = getEntityUri(entity, nonOvValues);\n\n const onClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri: entityUri, viewId: null, screen: 'sources'}));\n }, [dispatch, entityUri]);\n\n if (!nonOvTotal) {\n return null;\n }\n\n const tooltipTitle = nonOvValues.length\n ? nonOvValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(attributeType) ? (\n getLabel((value as ComplexWithLabel).label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"bottom\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={entityUri ? onClick : undefined}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n getEntityUriFromAttributeUri,\n isEntityUri,\n Entity,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\ntype NonOvValues = Array<SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue>;\n\nexport const getEntityUri = (entity: Entity, nonOvValues: NonOvValues) => {\n const attributeUri = nonOvValues?.[0]?.uri;\n const entityOrRelationUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : null;\n return entityOrRelationUri && isEntityUri(entityOrRelationUri) ? entityOrRelationUri : entity?.uri;\n};\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType, PivotingValue} from '@reltio/mdm-sdk';\nimport {UrlGeneratorsContext} from '../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n value: PivotingValue[];\n children: React.ReactNode;\n attributeType: AttributeType;\n onClick: () => void;\n};\n\nconst PivotingUriLink = forwardRef(\n ({value, attributeType, children, className, onClick}: Props, ref: React.Ref<HTMLAnchorElement>) => {\n const styles = useStyles();\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const {generatePivotingUrl} = useContext(UrlGeneratorsContext);\n const url = generatePivotingUrl({uiPath, uri: attributeType.uri, value: JSON.stringify(value)});\n\n return (\n <a\n ref={ref}\n href={url}\n onClick={(e) => {\n onClick();\n e.stopPropagation();\n e.preventDefault();\n }}\n className={classnames(styles.link, className)}\n >\n {children}\n </a>\n );\n }\n);\n\nPivotingUriLink.displayName = 'PivotingUriLink';\n\nexport default PivotingUriLink;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px',\n wordBreak: 'break-word'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n generatedValue: PivotingValue[];\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, generatedValue, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <PivotingUriLink\n value={generatedValue}\n attributeType={attributeType}\n className={styles.seeAllButton}\n onClick={onSeeAllClick}\n >\n {i18n.text('See all')}\n </PivotingUriLink>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const convertPivotingValue = () =>\n Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n const generatedValue = isPivotingAttribute ? convertPivotingValue() : undefined;\n\n const handleSeeAllClick = () => {\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n generatedValue={generatedValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <PivotingUriLink\n onClick={handleSeeAllClick}\n className={contentStyles.content}\n value={generatedValue}\n attributeType={attributeType}\n >\n {children}\n </PivotingUriLink>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={`${attrType.uri}_${parentUri}`}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport classNames from 'classnames';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {filterNewValues} from './utils';\nimport {withContext} from '../../../../HOCs';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\n\nimport {useStyles} from './styles';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values?: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n highlightedError?: React.ContextType<typeof ScrollToErrorContext>;\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n highlightedError,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri, description} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div ref={ref} className={classNames(styles.wrapper, errorClassName)}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} className={styles.description} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {parentUri, attributeType}) => {\n const {error} = contextValue || {};\n const isHighlighted = isAttributeTypeError(error, parentUri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n AttributeRenderer\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React from 'react';\nimport {AttributeItem, AttributeType, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const {label, description} = attributeType;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.description} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import React, {memo} from 'react';\nimport {\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n position: 'relative'\n },\n description: {\n marginRight: '-9px'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n complexWrapper: {\n position: 'relative'\n },\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport {pipe, propOr, pathEq, any} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\nimport {Button as Button} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n isHighlightedPath,\n highlightedError,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n useEffect(() => {\n if (isHighlightedPath) {\n setExpanded(true);\n }\n }, [isHighlightedPath]);\n\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(\n () => hasAttributeDescendantsWithErrors(attributeValue, errors),\n [errors, attributeValue]\n );\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <div ref={ref} className={classnames(styles.complexWrapper, errorClassName)}>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n highlightedError: PropTypes.object,\n isHighlightedPath: PropTypes.bool,\n ...ComplexAttributeType\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue}) => {\n const {error} = contextValue || {};\n const isHighlighted = error?.uri === attributeValue.uri;\n const isHighlightedPath = pipe(propOr([], 'path'), any(pathEq(['value', 'uri'], attributeValue.uri)))(error);\n return {\n highlightedError: isHighlighted ? contextValue : null,\n isHighlightedPath\n };\n },\n ComplexAttribute\n);\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none',\n pointerEvents: 'all'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={`${label}${secondaryLabel ? ', ' + secondaryLabel : ''}`}>\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {UrlGeneratorsContext, ViewIdContext} from '../../../../../contexts';\nimport {useSingleValueStyles} from './styles';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: generateEntityUrl({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n typeAheadSearch,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n isAvailableEntityType,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(\n () => entityTypesUris.map((type) => getEntityType(metadata, type)).filter(isAvailableEntityType),\n [entityTypesUris, metadata]\n );\n\n const options = {...globalSearchRequestOptions, max};\n\n const handleCreate = onCreate\n ? (value, entityTypeUri) => {\n onCreate(entityTypeUri || entityTypesUris[0], value);\n setInputValue('');\n }\n : undefined;\n\n const handleInputChange = (value) => {\n setInputValue(value);\n };\n\n const handleChange = (value) => {\n if (value !== null) {\n setInputValue('');\n onChange(value);\n }\n };\n\n const handleClear = () => {\n handleChange({});\n };\n\n const groupMode = useMemo(() => entityTypes.length !== 1, [entityTypes]);\n\n const getOptions = (value) =>\n typeAheadSearch(entityTypes, value, options).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => {\n setError(getRequestErrorMessage(err, i18n.text('Something went wrong')));\n })\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe, sort} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => (item.label || item.name).toLowerCase().includes(filterText.toLowerCase()))(\n items\n );\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n sortingFn: (item1: AttributeType, item2: AttributeType) => number;\n};\n\nexport const preparedGroupedItems = ({attrTypes, filter = '', sortingFn}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n sort(sortingFn),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label || attrType.name,\n attrType\n }\n }))\n )(attrTypes);\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, SortingStrategy} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n const strategy = useSelector(mdmModule.selectors.getAttributesSortingStrategy) as SortingStrategy | null;\n\n const sortingFn = useMemo(() => {\n switch (strategy) {\n case SortingStrategy.ASC_BY_NAME:\n return (item1, item2) => item1?.label?.localeCompare(item2?.label);\n default:\n return (_item1, _item2) => 0;\n }\n }, [strategy]);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter, sortingFn}) : []),\n [hasGroups, parent, filter, sortingFn]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter,\n sortingFn\n }),\n [data, filter, sortingFn]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(\n () => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)),\n [parentGroup, attributesGroup]\n );\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\n\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\ntype Props = {\n label: string;\n popupTitle?: string;\n data: AttributeType[];\n parent?: AttributeType;\n dense?: boolean;\n onApply: (attributeTypes: AttributeType[]) => void;\n};\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}: Props) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n highlightedError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(\n () => addReferencedRelationCrosswalks(crosswalks, referencedRelation),\n [crosswalks, referencedRelation]\n );\n\n const referencedEntityMissedError = useMemo(\n () => getReferencedEntityActiveError(attributeValue, errors),\n [attributeValue, errors]\n );\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(\n () => checkMetadataForCreate(mode, referencedEntityType),\n [mode, referencedEntityType]\n );\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n isDisabled={!canChangeReferencedEntity}\n onChange={onChangeEntity}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue, attributeType}) => {\n const {error} = contextValue || {};\n const isHighlighted = isAttributeTypeError(error, attributeValue.uri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n ReferenceAttribute\n);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`,\n position: 'relative'\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\nimport {withContext} from '../../../../HOCs';\nimport {\n ScrollToErrorContext,\n DependentLookupAutopopulationContext,\n ProfilePerspectiveViewContext\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {useAutopopulationContextValue} from './useAutopopulationContextValue';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n highlightedError,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const dataTypeDefinition = useMemo(() => getAttrDataTypeDefinition(attributeType), [attributeType]);\n const value = useMemo(\n () => attributeValueToEditorValue(attributeValue, dataTypeDefinition),\n [attributeValue, dataTypeDefinition]\n );\n const deactivateError = useCallback(() => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n }, [ownError, onDeactivateError]);\n const onValueEditorChange = useCallback(\n pipe(prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError),\n [attributeValue, attributeType, onChangeAttribute, deactivateError]\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n\n const {autopopulationContextValue} = useAutopopulationContextValue({\n enabled: isProfilePerspectiveView && isDependentLookupAttrType(attributeType),\n attributeTypeUri: attributeType?.uri,\n valueUri: attributeValue.uri\n });\n\n return (\n <div ref={ref} className={classnames(styles.editor, className, errorClassName)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DependentLookupAutopopulationContext.Provider value={autopopulationContextValue}>\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={onValueEditorChange}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n </DependentLookupAutopopulationContext.Provider>\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func,\n highlightedError: PropTypes.object\n};\n\nexport default withAsyncMount(\n withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue}) => {\n const {error} = contextValue || {};\n const isHighlighted = error?.uri === attributeValue.uri;\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SimpleAttributeEditor\n ),\n AsyncMountPlaceholder\n);\n","import {DependentLookupsStructureNode, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) ||\n (isEmptyValue && missedParentsMessage) ||\n '';\n const context: DependentLookupEditorContext = {\n parents: missedParentsMessage ? null : parents,\n disabled: (!!missedParentsMessage && isEmptyValue) || isBlocked,\n placeholder\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import {ContextType, useCallback, useMemo} from 'react';\nimport {isAutopopulationEnabled} from '@reltio/mdm-sdk';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {DependentLookupAutopopulationContext} from '../../../../contexts';\n\ntype Props = {\n enabled: boolean;\n attributeTypeUri: string;\n valueUri: string;\n};\n\nexport const useAutopopulationContextValue = ({enabled, attributeTypeUri, valueUri}: Props) => {\n const dispatch = useDispatch();\n const autocompleteConfig = useSelector(mdmModule.selectors.getLookupAutocomplete);\n const autopopulationEnabled = enabled && isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const autopopulationId = autopopulationEnabled ? valueUri : null;\n const {isTouched = false} =\n useSelector((state) => mdmModule.selectors.getDependentLookupEditorState(state, valueUri)) || {};\n const onTouch = useCallback(\n (valueUri: string) => {\n dispatch(profile.dependentLookups.actions.dependentLookupsEditorTouched({uri: valueUri, isTouched: true}));\n },\n [dispatch]\n );\n const autopopulationContextValue: ContextType<typeof DependentLookupAutopopulationContext> = useMemo(\n () =>\n autopopulationId\n ? {\n id: autopopulationId,\n isTouched,\n onTouch\n }\n : null,\n [autopopulationId, isTouched, onTouch]\n );\n\n return {autopopulationContextValue};\n};\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n },\n descriptionIcon: {\n marginTop: '-1px',\n textIndent: 0,\n marginRight: '-10px'\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport Attribute from '../AttributesFactory/Attribute';\n\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label, description} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} className={styles.descriptionIcon} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\nimport DescriptionIcon from '../../DescriptionIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label, description} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName,\n getRoleLabel,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n Entity,\n getDataTenantEntityUri,\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport {EntityContext, HistoryDiffContext, UrlGeneratorsContext} from '../../../../../contexts';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const ownEntity: Entity = useContext(EntityContext);\n const {appearance} = useContext(HistoryDiffContext);\n const {generateTagUrl} = useContext(UrlGeneratorsContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={generateTagUrl({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useMultiLineStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging: Paging;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const {label, description} = attributeType;\n\n return (\n <>\n <div className={styles.titleRow}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.descriptionIcon} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n};\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {HistoryOperations, historyPalettes, svg2Url} from '@reltio/mdm-sdk';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getImageAttributeOvThumbnailUrl,\n ImageAttributeValue,\n Paging\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {\n evaluateDeepEntityLabel,\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n NestedAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport useStyles from './styles';\n\nconst NestedAttribute = ({attributeValue, attributeType, ...otherProps}) => {\n const styles = useStyles();\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const attributeLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const label = attributeValue.label\n ? attributeValue.label\n : evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <PivotingTooltip className={styles.pivotingTooltip} value={attributeValue} attributeType={attributeType}>\n <Box component=\"span\" className={classnames(styles[historyAttributesClassName], styles.label)}>\n <SearchHighlighter text={getLabel(label)} />\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext, UrlGeneratorsContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(\n () => getAttributeTypeSubAttributes(metadata, attributeType),\n [attributeType, metadata]\n );\n\n const {appearance} = useContext(HistoryDiffContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? generateEntityUrl({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n <SearchHighlighter text={getLabel(attributeValue.label)} />\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>\n <SearchHighlighter text={attributeValue.relationshipLabel} />\n </span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse, generateEntityUrl]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getHistoryAppearanceByUri,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, CommentState, Reply} from '@reltio/mdm-sdk';\nimport {useUsers} from '../../hooks';\nimport {UsersContext} from '../UsersContext';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n updateCommentState: (uri: string, commentUri: string, newState: CommentState) => void;\n clearCommentState: (uri: string, commentUri: string) => void;\n getCommentState: (uri: string, commentUri: string) => CommentState;\n getComments: (uri: string, pageToken?: string) => void;\n getCommentsCount: (objectIds: string[]) => void;\n getComment: (commentId: Comment['commentId']) => void;\n createComment: (\n params: Pick<Comment, 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris'> & {uri: string}\n ) => Promise<void>;\n editComment: (\n params: Pick<\n Comment,\n 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris' | 'commentId' | 'replies'\n > & {uri: string}\n ) => Promise<void>;\n editReply: (params: Pick<Reply, 'content' | 'namedUsers' | 'replyId'> & {commentId: string}) => Promise<void>;\n deleteComment: (params: Pick<Comment, 'commentId'> & {uri: string}) => void;\n deleteReply: (params: {uri: string; commentId: string; reply: Pick<Reply, 'action' | 'replyId'>}) => void;\n createReply: (\n params: Pick<Reply, 'content' | 'namedUsers' | 'action'> & {uri: string; commentId: string}\n ) => Promise<void>;\n resolveThread: (params: {uri: string; commentId: string}) => void;\n reOpenThread: (params: {uri: string; commentId: string}) => void;\n clearCurrentComment: () => void;\n sending: boolean;\n loading: boolean;\n pageToken: string;\n }>({\n comments: [],\n commentsMap: null,\n currentComment: null,\n updateCommentState: noop,\n clearCommentState: noop,\n getCommentState: () => ({}),\n getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n\nexport const CollaborationContextProvider = ({collaboration, children}) => {\n const users = useUsers();\n return (\n <CollaborationContext.Provider value={collaboration}>\n <UsersContext.Provider value={users}>{children}</UsersContext.Provider>\n </CollaborationContext.Provider>\n );\n};\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\ntype Features = {\n showDescription?: boolean;\n};\nexport const FeaturesContext = React.createContext<Features>({});\n\nFeaturesContext.displayName = 'FeaturesContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const ProfilePerspectiveViewContext = React.createContext(false);\n\nProfilePerspectiveViewContext.displayName = 'ProfilePerspectiveViewContext';\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {AttributeError} from '@reltio/mdm-sdk';\nimport {noop} from '../../core';\n\ntype ScrollToErrorContextProps = {\n error: AttributeError | null;\n highlightError: (error: AttributeError) => void;\n scrollIntoRef: (ref: React.MutableRefObject<HTMLDivElement>) => void;\n};\n\nexport const ScrollToErrorContext = React.createContext<ScrollToErrorContextProps>({\n error: null,\n highlightError: noop,\n scrollIntoRef: noop\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ScrollToErrorProvider = ({children}: Props) => {\n const [error, setError] = useState<AttributeError>(null);\n const highlightTimer = useRef(null);\n\n const scrollIntoRef = useCallback((ref: React.MutableRefObject<HTMLDivElement>) => {\n ref.current.scrollIntoView({behavior: 'smooth', block: 'center'});\n if (highlightTimer) {\n clearTimeout(highlightTimer.current);\n }\n highlightTimer.current = setTimeout(() => setError(null), 2000);\n }, []);\n\n const contextValue = useMemo(() => ({error, highlightError: setError, scrollIntoRef}), [error, scrollIntoRef]);\n\n return <ScrollToErrorContext.Provider value={contextValue}>{children}</ScrollToErrorContext.Provider>;\n};\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<Pick<User, 'email' | 'username'>[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '0px',\n width: '5000px',\n height: 'calc(100% - 10px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\nconst ERROR_COLOR = 'rgba(255, 0, 0, 0.06)';\nconst WARNING_COLOR = 'rgba(228, 151, 0, 0.08)';\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlightError: {\n '&::before': {\n ...highlightBeforeStyles,\n background: ERROR_COLOR\n }\n },\n highlightWarning: {\n '&::before': {\n ...highlightBeforeStyles,\n background: WARNING_COLOR\n }\n },\n simpleAttribute: {\n position: 'relative',\n '&::before': {\n top: '-4px',\n height: 'calc(100% + 8px)'\n }\n }\n}));\n","import {ContextType, useEffect, useMemo, useRef} from 'react';\nimport {propOr} from 'ramda';\nimport classnames from 'classnames';\nimport {ErrorSeverity} from '@reltio/mdm-sdk';\nimport {ScrollToErrorContext} from '../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n highlightedError: ContextType<typeof ScrollToErrorContext> | null;\n isSimple?: boolean;\n};\n\nexport const useScrollToAttributeError = ({highlightedError: context, isSimple = false}: Props) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n const {error, scrollIntoRef} = context || {};\n\n const severity: ErrorSeverity = useMemo(() => propOr(ErrorSeverity.ERROR, 'severity')(error), [error]);\n const errorClassName: string = classnames({\n [styles.highlightError]: severity === ErrorSeverity.ERROR,\n [styles.highlightWarning]: severity === ErrorSeverity.WARNING,\n [styles.simpleAttribute]: isSimple\n });\n\n useEffect(() => {\n if (context) {\n scrollIntoRef(ref);\n }\n }, [context, scrollIntoRef]);\n\n return context ? {ref, errorClassName} : {ref};\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {getAllUsersForTenant, UserInfo} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport memoizeOne from 'memoize-one';\n\nconst getAllUsersForTenantMemoized = memoizeOne((tenant, servicesPath) => getAllUsersForTenant({tenant, servicesPath}));\n\nexport const useUsers = () => {\n const [users, setUsers] = useState<UserInfo[]>([]);\n\n const tenant = useSelector(mdm.selectors.getTenant);\n const servicesPath = useSelector(mdm.selectors.getServicesPath);\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenantMemoized(tenant, servicesPath)\n .then((users) => setUsers(users))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","i18n","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","createEditedCommentUri","commentId","createEditedReplyUri","reply","replyId","transformPlainTextValueToValueWithMentions","plainTextValue","mentions","value","mention","split","join","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","item","toUpperCase","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","isEditingComment","isEditingReply","onCancel","focused","setFocused","useState","createReply","createComment","sending","editComment","editReply","getCommentState","updateCommentState","clearCommentState","CollaborationContext","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","cond","always","replies","T","action","request","then","catch","console","log","disabled","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","canChangeReply","deleteReply","updateIsEditingReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","src","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","onError","alt","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","target","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","isRequired","RequiredMark","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","container","ChipWithTooltip","Chip","description","showDescription","FeaturesContext","tooltipPlacement","Description","alignContent","flexDirection","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","overflowX","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","containerWidth","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","result","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","state","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","findIndex","GalleryView","items","selectedItems","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","textTransform","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","forEach","downloadURLs","pipe","imageBox","flexShrink","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","Math","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","onResize","IMAGE_HEIGHT","borderColor","nonOvValues","nonOvTotal","attributeUri","entityOrRelationUri","getEntityUriFromAttributeUri","isEntityUri","getEntityUri","EntityContext","ui","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","PivotingUriLink","uiPath","mdmModule","generatePivotingUrl","UrlGeneratorsContext","JSON","stringify","entityTypeLabel","paddingBottom","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","generatedValue","onSeeAllClick","entities","setEntities","total","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","max","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","avatarClassName","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","handleSeeAllClick","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","concat","propTypes","PropTypes","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","withContext","ScrollToErrorContext","contextValue","highlightedError","isAttributeTypeError","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","errorClassName","useScrollToAttributeError","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","classNames","titleWrapper","Title","DescriptionIcon","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","min","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","ImageLineRenderer","ImageAttributesLine","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","opacity","textIndent","complexWrapper","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","isHighlightedPath","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","propOr","any","pathEq","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","paddingTop","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerRef","innerProps","selectOption","secondaryLabel","EntityTypeIcon","ExpandedValueTooltip","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","generateEntityUrl","valueProps","onMouseDown","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","inputValue","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","isAvailableEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","typeAheadSearch","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","input","isEmptyField","ImageByUrlField","onSend","setValue","setError","InputBase","newValue","isCorrectUrl","RegExp","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","style","accept","htmlFor","x1","y1","x2","y2","stopColor","offset","stopOpacity","cx","cy","r","rx","ry","isActive","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","getRequestErrorMessage","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","sortingFn","GROUP_NAMES","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","strategy","SortingStrategy","item1","item2","localeCompare","_item1","_item2","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","flattenGroupedItemsData","useMoreAttributesItems","handleListItemClick","append","reject","getItemSize","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","onSelectFocusedItem","focusIndexRef","groupsCount","listHeight","containerHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","renderItem","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","isSimple","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","isDisabled","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","context","cachedContext","fromCache","getDependentLookupEditorContext","attributeValueToEditorValue","deactivateError","onValueEditorChange","prepareChangeData","showAddButton","deletedProps","isProfilePerspectiveView","ProfilePerspectiveViewContext","autopopulationContextValue","autocompleteConfig","autopopulationId","isAutopopulationEnabled","isTouched","onTouch","useAutopopulationContextValue","DependentLookupAutopopulationContext","DataTypeValueEditor","attributeUriToSearchUri","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","toString","valueOf","getFilteredAttrTypes","includeUris","excludeUris","flatten","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","descriptionIcon","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","currentEntity","ownEntity","generateTagUrl","InternalLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","render","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","svg2Url","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","CollaborationContextProvider","collaboration","useUsers","highlightError","scrollIntoRef","ScrollToErrorProvider","highlightTimer","scrollIntoView","behavior","block","clearTimeout","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","highlightBeforeStyles","animationName","animationDuration","animationIterationCount","highlightWarning","simpleAttribute","severity","ErrorSeverity","getAllUsersForTenantMemoized","memoizeOne","servicesPath","getAllUsersForTenant","setUsers","warn"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"2180.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/HOCs/withAsyncMount/withAsyncMount.js","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ArrowExpandButton/ArrowExpandButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/utils/index.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentTarget/CommentTarget.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CommentContent/CommentContent.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Avatar/Avatar.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/TextFieldWithMentions/TextFieldWithMentions.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/SendMessageArea/SendMessageArea.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/Comment/Comment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/RepliedComment/RepliedComment.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationItem/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationItem/CollaborationItem.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/styles.ts","webpack://@reltio/remotes/../components/src/icons/CommentBubble.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/styles.ts","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/CommentButton.tsx","webpack://@reltio/remotes/../components/src/icons/AddComment.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/buttons/AddCommentButton.tsx","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/styles.ts","webpack://@reltio/remotes/../components/src/components/CollaborationPopup/CollaborationPopup.tsx","webpack://@reltio/remotes/../components/src/components/CommentsContainer/CommentsContainer.tsx","webpack://@reltio/remotes/../components/src/components/DragAndDrop/DragAndDrop.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/DropDownMenuButton/DropDownMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorMessage.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/ErrorWrapper.tsx","webpack://@reltio/remotes/../components/src/components/ErrorWrapper/styles.ts","webpack://@reltio/remotes/../components/src/icons/DefaultImage.tsx","webpack://@reltio/remotes/../components/src/components/Image/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/Image.tsx","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/CheckedIcon/CheckedIcon.tsx","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/styles.ts","webpack://@reltio/remotes/../components/src/components/Image/ImageActionsOverlay/ImageActionsOverlay.tsx","webpack://@reltio/remotes/../components/src/icons/Details.tsx","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageGalleryDialog/ImageGalleryDialog.tsx","webpack://@reltio/remotes/../components/src/components/InternalLink/styles.ts","webpack://@reltio/remotes/../components/src/components/InternalLink/InternalLink.tsx","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/styles.ts","webpack://@reltio/remotes/../components/src/components/PopupWithArrow/PopupWithArrow.tsx","webpack://@reltio/remotes/../components/src/components/Title/styles.ts","webpack://@reltio/remotes/../components/src/components/Title/Title.tsx","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/BranchDecorator/BranchDecorator.tsx","webpack://@reltio/remotes/../components/src/icons/Description.tsx","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/DescriptionIcon/DescriptionIcon.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/Thumbnails/Thumbnails.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewCarousel/ImageDetailsViewCarousel.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/constants/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoHeader/MetaInfoHeader.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoItem/MetaInfoItem.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoList/MetaInfoList.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfoForm/MetaInfoForm.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/hooks/useEditMetaInfo.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/theme/index.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/MetaInfo/MetaInfo.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsViewSidebar/ImageDetailsViewSidebar.tsx","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageDetailsView/ImageDetailsView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/GalleryView/GalleryView.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderLeft/HeaderLeft.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/styles.ts","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/HeaderRight/HeaderRight.tsx","webpack://@reltio/remotes/../components/src/components/ImageAttributesGallery/ImageAttributesGallery.tsx","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/helpers/imageAttributes.ts","webpack://@reltio/remotes/../components/src/components/attributes/ImageAttributesLine/constants.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/OvIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/OvIcon/heplers.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/helpers.ts","webpack://@reltio/remotes/../components/src/icons/PivotingIcon.tsx","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/styles.ts","webpack://@reltio/remotes/../components/src/components/PivotingUriLink/PivotingUriLink.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltipContent.tsx","webpack://@reltio/remotes/../components/src/components/attributes/PivotingAttributes/PivotingTooltip.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/AttributesList.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesList/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/CardinalityMessage.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/utils.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/EntityCreator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntityCreator/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/EntityOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/SingleValue.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/ClearIndicator.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/components/Group.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/EntitySelector/EntitySelector.js","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ImageByUrlField/ImageByUrlField.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/constants/index.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/SelectImageButton/SelectImageButton.tsx","webpack://@reltio/remotes/../components/src/icons/UploadIcon.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/TargetBox/TargetBox.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/DividerWithText/DividerWithText.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/ErrorSnackbar/ErrorSnackbar.tsx","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/UploadImageDialog/UploadImageDialog.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/index.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/helpers.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/useMoreAttributesItems.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/MoreAttributesButton/MoreAttributesButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/cache.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/SimpleAttributeEditor.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/getDependentLookupEditorContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/missedParentsMessage.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/useAutopopulationContextValue.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/SimpleAttributeEditor/utils.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/HasDeletionsContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/contexts/PinnedAttributesContext.ts","webpack://@reltio/remotes/../components/src/components/attributes/helpers/attributesView.ts","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowLess.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/ShowMore.tsx","webpack://@reltio/remotes/../components/src/components/attributes/pagersCommon/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/Attribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesFactory/AttributesFactory.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/OneLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/MultiLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/SpecialAttributesArray.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Role.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Roles/Roles.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tag.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SpecialAttributes/Tags/Tags.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/SpecialRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/ImageLineRenderer.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesPager/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ComplexAttribute/ComplexAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/cross.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/NestedAttribute/NestedAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/ReferenceAttribute.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/ReferenceAttribute/index.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/helpers/commonStyles.ts","webpack://@reltio/remotes/../components/src/constants/attributes.ts","webpack://@reltio/remotes/../components/src/constants/classnames.ts","webpack://@reltio/remotes/../components/src/contexts/AsyncMountContext/index.js","webpack://@reltio/remotes/../components/src/contexts/BlockImageGalleryDialogContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/CollaborationContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/EntitiesMapContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/EntityContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/FeaturesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HighlightedValuesContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/HistoryAppearanceContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PivotingAttributeContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ProfilePerspectiveViewContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/RelatedObjectUrisContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/ScrollToErrorContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/UsersContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useAsyncMount.js","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/styles.ts","webpack://@reltio/remotes/../components/src/hooks/useScrollToAttributeError/useScrollToAttributeError.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.ts","webpack://@reltio/remotes/../components/src/icons/Download.tsx"],"sourcesContent":["import React, {forwardRef} from 'react';\nimport {useAsyncMount} from '../../hooks/useAsyncMount';\n\nconst withAsyncMount = (Component, PlaceholderComponent = null) => {\n const WithAsyncMount = forwardRef((componentProps, ref) => {\n const shouldMount = useAsyncMount();\n return shouldMount ? (\n <Component {...componentProps} ref={ref} />\n ) : (\n PlaceholderComponent && <PlaceholderComponent {...componentProps} ref={ref} />\n );\n });\n\n WithAsyncMount.displayName = 'WithAsyncMount';\n return WithAsyncMount;\n};\n\nexport default withAsyncMount;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n expandButton: {\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n expandIcon: {\n transition: 'transform .15s ease'\n },\n expanded: {\n transform: 'rotate(90deg)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport SmallIconButton from '../SmallIconButton/SmallIconButton';\nimport ArrowRight from '@material-ui/icons/ArrowRight';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n expanded: boolean;\n className?: string;\n} & Omit<IconButtonProps, 'size'>;\n\nconst ArrowExpandButton = (props: Props) => {\n const styles = useStyles();\n const {expanded, className, ...otherProps} = props;\n return (\n <SmallIconButton\n icon={ArrowRight}\n size=\"XXS\"\n disableRipple\n iconClassName={classnames(styles.expandIcon, {[styles.expanded]: expanded})}\n className={classnames(className, styles.expandButton)}\n {...otherProps}\n />\n );\n};\n\nexport default ArrowExpandButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title = '', children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {i18n.text(title)}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\n\nexport const getAbbreviationFromUserName = (username: string) =>\n username\n .split('.')\n .map((item) => item[0].toUpperCase())\n .join('');\n\nexport const getRelatedEntityUri = (comment: Pick<Comment, 'relatedObjectUris'>, entityUri: string) => {\n const index = comment.relatedObjectUris.indexOf(entityUri);\n if (index >= 0) return comment.relatedObjectUris[1 - index];\n};\n\nexport const formatDate = (time: number) => `${i18n.date(time, 'LT')} ${i18n.date(time, 'LL')}`;\n\nexport const processMentions = (\n text: string,\n mentions: string[],\n processor: (mention: string) => unknown = (value) => value,\n trigger = '+'\n) => {\n const arr = [];\n let currentStr = '';\n let process = false;\n\n for (let i = 0; i <= text.length; i++) {\n const currentCharacter = text[i];\n const nextCharacter = text[i + 1];\n const isLastCharacter = i === text.length - 1;\n\n currentStr += currentCharacter;\n\n if (currentCharacter === trigger && i === 0) {\n process = true;\n }\n if (process && mentions.includes(currentStr.slice(trigger.length))) {\n process = false;\n arr.push(processor(currentStr));\n currentStr = '';\n }\n\n if (nextCharacter === trigger) {\n process = true;\n arr.push(currentStr);\n currentStr = '';\n }\n\n if (isLastCharacter) {\n arr.push(currentStr);\n }\n }\n\n return arr;\n};\n\nexport const createNewCommentUri = () => 'comment/new';\nexport const createNewReplyUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}/reply/new`;\nexport const createEditedCommentUri = (comment: Pick<Comment, 'commentId'>) => `comment/${comment.commentId}`;\nexport const createEditedReplyUri = (comment: Pick<Comment, 'commentId'>, reply: Pick<Reply, 'replyId'>) =>\n `comment/${comment.commentId}/reply/${reply.replyId}`;\n\ntype CreateCommentUriProps = {\n comment: Pick<Comment, 'commentId'> | null;\n reply: Pick<Reply, 'replyId'> | null;\n isEditingReply: boolean;\n isEditingComment: boolean;\n};\n\nexport const createCommentUri = ({comment, reply, isEditingComment, isEditingReply}: CreateCommentUriProps) => {\n if (isNil(comment)) {\n return createNewCommentUri();\n }\n if (isEditingComment) {\n return createEditedCommentUri(comment);\n }\n if (isEditingReply) {\n return createEditedReplyUri(comment, reply);\n }\n return createNewReplyUri(comment);\n};\n\nexport const transformPlainTextValueToValueWithMentions = (plainTextValue: string, mentions: string[]) => {\n let value = plainTextValue;\n for (const mention of mentions) {\n value = value.split(`+${mention}`).join(`@[${mention}](${mention})`);\n }\n return value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n marginBottom: '10px',\n color: theme.palette.divider,\n fontSize: '12px',\n lineHeight: '14px'\n },\n label: {\n paddingLeft: '9px',\n borderLeft: '1px solid #D8D8D8',\n fontSize: '13px',\n color: theme.palette.text.primary,\n lineHeight: '15px'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {startsWith} from 'ramda';\nimport mdm from '@reltio/mdm-module';\nimport {Comment, Entity, CollaborationObjectTypes} from '@reltio/mdm-sdk';\nimport {\n findAttributeTypeByUri,\n getLabel,\n getEntityUriForLink,\n getEntityId,\n getAttributeTypeUriByValueUri\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {EntitiesMapContext} from '../../../contexts';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport {getRelatedEntityUri} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n comment: Pick<Comment, 'objectType' | 'objectId' | 'relatedObjectUris'>;\n className?: string;\n};\n\nexport const CommentTarget = ({comment, className}: Props) => {\n const styles = useStyles();\n\n const entity = useSelector(mdm.selectors.getEntity) as Entity;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entitiesMap = useContext(EntitiesMapContext);\n\n const getContent = () => {\n switch (comment.objectType) {\n case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION_ATTRIBUTE: {\n const relationTypeUri = comment.relatedObjectUris.find(startsWith('configuration/relationTypes'));\n const attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, relationTypeUri);\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected attribute:')}</Typography>\n <Typography className={styles.label}>{attributeType?.label}</Typography>\n </>\n );\n }\n case CollaborationObjectTypes.ENTITY: {\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected profile:')}</Typography>\n <EntityUriLink\n className={classnames(styles.label, styles.link)}\n value={getEntityUriForLink(entity)}\n >\n {getLabel(entity.label)}\n </EntityUriLink>\n </>\n );\n }\n case CollaborationObjectTypes.RELATION: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n ...(entitiesMap[relatedEntityUri] || {}),\n uri: relatedEntityUri\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected relation:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {relatedEntityUri && (\n <>\n {` ${i18n.text('to')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n case CollaborationObjectTypes.POTENTIAL_MATCH: {\n const relatedEntityUri = getRelatedEntityUri(comment, entity.uri);\n const relatedEntity = {\n uri: relatedEntityUri,\n label: entitiesMap[relatedEntityUri]?.label\n };\n\n return (\n <>\n <Typography className={styles.title}>{i18n.text('Selected potential match:')}</Typography>\n <Typography className={styles.label}>\n <EntityUriLink className={styles.link} value={getEntityUriForLink(entity)}>\n {getLabel(entity.label)}\n </EntityUriLink>\n\n {relatedEntityUri && (\n <>\n {` ${i18n.text('and')} `}\n <EntityUriLink className={styles.link} value={getEntityUriForLink(relatedEntity)}>\n {relatedEntity.label\n ? getLabel(relatedEntity.label)\n : getEntityId(relatedEntity)}\n </EntityUriLink>\n </>\n )}\n </Typography>\n </>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return <Box className={className}>{getContent()}</Box>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n wordBreak: 'break-word'\n }\n}));\n","import React, {Fragment, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {UsersContext} from '../../../contexts';\nimport {processMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n comment: Pick<Comment, 'content' | 'namedUsers'>;\n};\n\nexport const CommentContent = ({comment, className}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n return (\n <Typography className={classnames(styles.root, className)}>\n {processMentions(comment.content, comment.namedUsers, (mention) => {\n const user = users.find((user) => user.username === mention.slice(1));\n return user ? <Link href={`mailto:${user.email}`}>{mention}</Link> : mention;\n }).map((el, idx) => (\n <Fragment key={idx}>{el}</Fragment>\n ))}\n </Typography>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '32px',\n height: '32px',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n backgroundColor: 'rgba(144, 164, 174, 0.2)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport MUIAvatar, {AvatarProps} from '@material-ui/core/Avatar';\nimport {getAbbreviationFromUserName} from '../utils';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AvatarProps, 'children'> & {\n children: string;\n};\n\nexport const Avatar = ({className, children, ...props}: Props) => {\n const styles = useStyles();\n return (\n <MUIAvatar {...props} className={classnames(styles.root, className)}>\n {getAbbreviationFromUserName(children)}\n </MUIAvatar>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n backgroundColor: '#fff',\n fontFamily: 'Roboto',\n '&__control': {\n fontSize: '13px'\n },\n '&__highlighter': {\n padding: '10px 22px',\n border: '1px solid transparent !important'\n },\n '&__input': {\n borderRadius: '2px',\n border: '1px solid rgba(0,0,0,0.12)',\n padding: '10px 22px',\n outline: 0,\n overflow: 'auto !important'\n },\n '&__suggestions': {\n padding: '8px 0',\n borderRadius: '4px',\n backgroundColor: '#fafafa !important',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)',\n transform: 'translateY(-100%)'\n },\n '&__suggestions__list': {\n maxHeight: '200px',\n overflowY: 'scroll'\n },\n '&__suggestions__item': {\n padding: '6px 12px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n transition: theme.transitions.create(['background-color']),\n '&:hover, &--focused': {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n }\n },\n mention: {\n position: 'relative',\n zIndex: 1,\n color: theme.palette.primary.main,\n textShadow: '1px 1px 1px white, 1px -1px 1px white, -1px 1px 1px white, -1px -1px 1px white',\n pointerEvents: 'none'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {uniq} from 'ramda';\nimport {MentionsInput, Mention, MentionsInputProps, MentionItem} from 'react-mentions';\nimport {UsersContext} from '../../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = Omit<MentionsInputProps, 'children' | 'onChange'> & {\n onChange?: (value: string, plainTextValue: string, mentions: string[]) => void;\n};\n\nexport const TextFieldWithMentions = ({onChange, className, ...props}: Props) => {\n const styles = useStyles();\n const users = useContext(UsersContext);\n\n const handleChange = (\n _: React.ChangeEvent<HTMLInputElement>,\n value: string,\n plainTextValue: string,\n mentions: MentionItem[]\n ) => {\n onChange(value, plainTextValue, uniq(mentions.map(({display}) => display.slice(1))));\n };\n\n return (\n <MentionsInput {...props} onChange={handleChange} className={classnames(styles.root, className)}>\n <Mention\n trigger=\"+\"\n data={users.map(({username}) => ({id: username, display: username}))}\n displayTransform={(_, username) => `+${username}`}\n appendSpaceOnAdd={true}\n className={styles.mention}\n />\n </MentionsInput>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isEditing?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isEditing}: StylesProps) => ({\n padding: isEditing ? '6px 6px 6px 0' : ' 6px 6px 6px 8px',\n borderRadius: '4px',\n backgroundColor: isEditing ? 'transparent' : 'rgba(0,114,206,0.06)'\n }),\n textField: ({isEditing}: StylesProps) => ({\n maxWidth: isEditing ? '100%' : 'calc(100% - 40px)'\n }),\n form: {\n marginBottom: 0\n },\n main: {\n display: 'flex',\n alignItems: 'center'\n },\n avatar: {\n marginRight: '8px'\n },\n buttons: ({isEditing}: StylesProps) => ({marginLeft: isEditing ? '0' : '40px', marginTop: '8px'}),\n button: {\n '& + $button': {\n marginLeft: '8px'\n }\n }\n});\n","import React, {useState, useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {always, cond, T} from 'ramda';\nimport {Comment, Reply} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {TextFieldWithMentions} from '../TextFieldWithMentions/TextFieldWithMentions';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createCommentUri, transformPlainTextValueToValueWithMentions} from '../utils';\nimport {useStyles} from './styles';\n\ntype Status = Comment['status'];\n\ntype Props = {\n inputRef: React.RefObject<HTMLInputElement>;\n className?: string;\n uri: string;\n objectType?: Comment['objectType'];\n relatedObjectUris?: Comment['relatedObjectUris'];\n popperRef?: React.RefObject<any>;\n comment?: Comment;\n reply?: Pick<Reply, 'content' | 'replyId' | 'namedUsers'>;\n isEditingComment?: boolean;\n isEditingReply?: boolean;\n onCancel?: () => void;\n};\n\nconst getPlaceholder = (status?: Status) => {\n switch (status) {\n case 'open':\n return i18n.text('Reply...');\n case 'resolved':\n return i18n.text('Adding a comment will re-open this');\n default:\n return '';\n }\n};\n\nconst getButtonText = (status?: Status, isEditingComment?: boolean, isEditingReply?: boolean) => {\n if (isEditingComment || isEditingReply) {\n return i18n.text('Edit');\n }\n if (status === 'open' || status === 'resolved') {\n return i18n.text('Reply');\n }\n\n return i18n.text('Comment');\n};\n\ntype GetDefaultCommentState = {\n comment: Comment;\n reply: Pick<Reply, 'content' | 'namedUsers'>;\n isEditingComment: boolean;\n isEditingReply: boolean;\n};\n\nconst getDefaultCommentState = ({comment, reply, isEditingComment, isEditingReply}: GetDefaultCommentState) => {\n const commentOrReply = isEditingComment ? comment : isEditingReply ? reply : null;\n const {content: plainTextValue = '', namedUsers: mentions = []} = commentOrReply || {};\n return {\n value: transformPlainTextValueToValueWithMentions(plainTextValue, mentions),\n plainTextValue,\n mentions\n };\n};\n\nexport const SendMessageArea = ({\n inputRef,\n className,\n uri,\n relatedObjectUris,\n objectType,\n popperRef,\n comment,\n reply,\n isEditingComment,\n isEditingReply,\n onCancel\n}: Props) => {\n const isEditing = isEditingComment || isEditingReply;\n const styles = useStyles({isEditing});\n\n const [focused, setFocused] = useState(false);\n const username = useSelector(mdm.selectors.getUserName) as string;\n const {\n createReply,\n createComment,\n sending,\n editComment,\n editReply,\n getCommentState,\n updateCommentState,\n clearCommentState\n } = useContext(CollaborationContext);\n\n const commentUri = createCommentUri({comment, reply, isEditingComment, isEditingReply});\n const defaultCommentState = getDefaultCommentState({comment, reply, isEditingComment, isEditingReply});\n const {\n value = defaultCommentState.value,\n plainTextValue = defaultCommentState.plainTextValue,\n mentions = defaultCommentState.mentions\n } = getCommentState(uri, commentUri);\n\n const hasValue = value.trim() !== '';\n const shouldShowButtons = focused || hasValue;\n const status = comment?.status;\n\n const clearValue = () => {\n onCancel?.();\n clearCommentState(uri, commentUri);\n };\n\n const handleChange = (value: string, plainTextValue: string, mentions: string[]) =>\n updateCommentState(uri, commentUri, {value, plainTextValue, mentions});\n const handleCancel = () => clearValue();\n const handleFocus = () => setFocused(true);\n const handleBlur = () => setFocused(false);\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const request = cond([\n [\n always(!comment),\n () =>\n createComment({\n content: plainTextValue,\n namedUsers: mentions,\n objectType: objectType,\n uri,\n relatedObjectUris\n })\n ],\n [\n always(isEditingComment),\n () =>\n editComment({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n objectType: objectType,\n replies: comment.replies,\n relatedObjectUris,\n uri\n })\n ],\n [\n always(isEditingReply),\n () =>\n editReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n replyId: reply.replyId\n })\n ],\n [\n T,\n () =>\n createReply({\n content: plainTextValue,\n namedUsers: mentions,\n commentId: comment.commentId,\n action: comment.status === 'open' ? 'none' : 'reopen',\n uri\n })\n ]\n ]);\n return request().then(clearValue).catch(console.log); //eslint-disable-line no-console\n };\n\n useEffect(() => {\n if (popperRef) {\n popperRef.current.update();\n }\n }, [popperRef, shouldShowButtons]);\n\n const buttonSize = isEditing ? 'small' : 'medium';\n\n return (\n <Box className={classnames(styles.root, className)}>\n <form onSubmit={handleSubmit} className={styles.form}>\n <Box className={styles.main}>\n {!isEditing && <Avatar classes={{root: styles.avatar}}>{username}</Avatar>}\n <TextFieldWithMentions\n className={styles.textField}\n disabled={sending}\n onChange={handleChange}\n inputRef={inputRef}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={getPlaceholder(status)}\n />\n </Box>\n {shouldShowButtons && (\n <Box className={styles.buttons}>\n <Button\n className={styles.button}\n variant=\"contained\"\n color=\"primary\"\n disabled={!hasValue || sending}\n type=\"submit\"\n size={buttonSize}\n >\n {getButtonText(status, isEditingComment, isEditingReply)}\n </Button>\n <Button\n disabled={sending}\n onClick={handleCancel}\n className={styles.button}\n variant=\"outlined\"\n color=\"primary\"\n size={buttonSize}\n >\n {i18n.text('Cancel')}\n </Button>\n </Box>\n )}\n </form>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex'\n },\n avatar: {\n marginRight: '8px'\n },\n username: {\n marginBottom: '1px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n createdAt: {\n marginTop: '3px',\n marginRight: '4px',\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n body: {\n marginLeft: '40px'\n },\n commentTarget: {\n marginTop: '-15px'\n },\n message: {\n marginTop: '12px'\n },\n dropdownMenu: {\n zIndex: '3000 !important' as any\n },\n buttons: {\n marginTop: '15px',\n marginBottom: '12px',\n display: 'flex',\n\n '& $button + $button': {\n marginLeft: '10px'\n }\n },\n button: {\n fontSize: '13px',\n lineHeight: '15px'\n }\n}));\n","import React, {useMemo, useContext, useRef, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {CommentTarget} from '../CommentTarget/CommentTarget';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CollaborationContext} from '../../../contexts';\nimport {createEditedCommentUri, formatDate} from '../utils';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n uri: string;\n onReply: () => void;\n className?: string;\n comment: CommentType;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n};\n\nexport const Comment = ({onReply, className, uri, comment, relatedObjectUris, objectType}: Props) => {\n const styles = useStyles();\n const inputRef = useRef<HTMLInputElement>();\n const username: string = useSelector(mdm.selectors.getUserName);\n const {commentId, createdBy, createdTime} = comment;\n const canChangeComment = createdBy === username;\n const {resolveThread, reOpenThread, sending, deleteComment, updateCommentState, getCommentState} =\n useContext(CollaborationContext);\n\n const commentUri = createEditedCommentUri(comment);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingComment = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingComment(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteComment({uri, commentId})\n }\n ],\n [deleteComment, uri, commentId, updateIsEditingComment]\n );\n\n const handleResolve = () => {\n resolveThread({commentId, uri});\n };\n\n const handleReOpen = () => {\n reOpenThread({commentId, uri});\n };\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n onCancel={() => updateIsEditingComment(false)}\n isEditingComment={isEditing}\n comment={comment}\n />\n );\n return (\n <Box className={className}>\n <Box className={styles.header}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box width=\"100%\">\n <Typography className={styles.username}>{createdBy}</Typography>\n </Box>\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n {canChangeComment && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n popoverProps={{PopoverClasses: {root: styles.dropdownMenu}}}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n <Box className={styles.body}>\n <CommentTarget comment={comment} className={styles.commentTarget} />\n {isEditing ? sendMessageArea : <CommentContent comment={comment} className={styles.message} />}\n <Box className={styles.buttons}>\n <Link className={styles.button} onClick={onReply} component=\"button\">\n {i18n.text('Reply')}\n </Link>\n {comment.status === 'open' && (\n <Link disabled={sending} className={styles.button} onClick={handleResolve} component=\"button\">\n {i18n.text('Resolve')}\n </Link>\n )}\n {comment.status === 'resolved' && (\n <Link disabled={sending} className={styles.button} onClick={handleReOpen} component=\"button\">\n {i18n.text('Re-open')}\n </Link>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n padding: '8px',\n borderRadius: '4px',\n backgroundColor: 'rgba(0,114,206,0.06)'\n },\n avatar: {\n marginRight: '8px'\n },\n header: {\n display: 'flex',\n marginBottom: '8px'\n },\n username: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px'\n },\n message: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n createdAt: {\n color: theme.palette.text.secondary,\n fontSize: '11px',\n lineHeight: '13px',\n whiteSpace: 'nowrap'\n },\n marked: {\n marginLeft: '8px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n fontStyle: 'italic',\n lineHeight: '15px'\n }\n}));\n","import React, {useRef, useContext, useMemo, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Reply, Comment as CommentType} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Avatar} from '../Avatar/Avatar';\nimport {CommentContent} from '../CommentContent/CommentContent';\nimport {createEditedReplyUri, formatDate} from '../utils';\nimport {CollaborationContext} from '../../../contexts';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {SendMessageArea} from '../SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n reply: Pick<Reply, 'createdTime' | 'content' | 'createdBy' | 'action' | 'namedUsers' | 'replyId'>;\n comment?: CommentType;\n uri: string;\n popperRef?: React.RefObject<any>;\n};\n\nexport const RepliedComment = ({className, reply, uri, comment, popperRef}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const {createdBy, action, createdTime} = reply;\n const username: string = useSelector(mdm.selectors.getUserName);\n const canChangeReply = createdBy === username;\n\n const {deleteReply, updateCommentState, getCommentState} = useContext(CollaborationContext);\n\n const commentUri = createEditedReplyUri(comment, reply);\n const {isEditing} = getCommentState(uri, commentUri);\n\n const updateIsEditingReply = useCallback(\n (value: boolean) => updateCommentState(uri, commentUri, {isEditing: value}),\n [commentUri, updateCommentState, uri]\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current.focus();\n }\n }, [isEditing]);\n\n const styles = useStyles();\n\n const menuItems = useMemo(\n () => [\n {\n text: i18n.text('Edit'),\n onClick: () => updateIsEditingReply(true)\n },\n {\n text: i18n.text('Delete'),\n onClick: () => deleteReply({uri, commentId: comment.commentId, reply})\n }\n ],\n [deleteReply, uri, comment.commentId, reply, updateIsEditingReply]\n );\n\n const sendMessageArea = (\n <SendMessageArea\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n onCancel={() => updateIsEditingReply(false)}\n isEditingReply={isEditing}\n reply={reply}\n comment={comment}\n />\n );\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Avatar classes={{root: styles.avatar}}>{createdBy}</Avatar>\n <Box flexGrow={1}>\n <Box className={styles.header}>\n <Typography className={styles.username}>{createdBy}</Typography>\n\n {action === 'resolve' && (\n <Typography className={styles.marked}>{i18n.text('Marked as resolved')}</Typography>\n )}\n {action === 'reopen' && <Typography className={styles.marked}>{i18n.text('Re-opened')}</Typography>}\n </Box>\n {action !== 'resolve' &&\n (isEditing ? sendMessageArea : <CommentContent className={styles.message} comment={reply} />)}\n <Typography className={styles.createdAt}>{formatDate(createdTime)}</Typography>\n </Box>\n {canChangeReply && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n tooltipTitle: i18n.text('Open menu')\n }}\n menuItems={menuItems}\n menuId=\"collaboration-comment-menu\"\n />\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n maxWidth: '100%',\n padding: '8px 4px 10px 16px'\n },\n messages: {},\n repliedComment: {\n marginBottom: '2px'\n },\n replies: {\n marginLeft: '40px'\n },\n sendMessageArea: {\n marginLeft: '40px'\n },\n comment: {}\n}));\n","import React, {useRef, memo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Comment as CommentType} from '@reltio/mdm-sdk';\nimport {Comment} from './Comment/Comment';\nimport {RepliedComment} from './RepliedComment/RepliedComment';\nimport {SendMessageArea} from './SendMessageArea/SendMessageArea';\nimport {useStyles} from './styles';\n\ntype Classes = Partial<ReturnType<typeof useStyles>>;\n\ntype Props = {\n classes?: Classes;\n uri: string;\n relatedObjectUris: CommentType['relatedObjectUris'];\n objectType: CommentType['objectType'];\n popperRef?: React.RefObject<any>;\n messagesRef?: React.RefCallback<HTMLDivElement>;\n comment?: CommentType;\n};\n\nexport const CollaborationItem = memo(\n ({uri, relatedObjectUris, objectType, classes, popperRef, messagesRef, comment}: Props) => {\n const inputRef = useRef<HTMLInputElement>();\n const styles = useStyles({classes});\n\n const handleReply = () => {\n inputRef.current.focus();\n };\n\n const sendMessageArea = (\n <SendMessageArea\n className={styles.sendMessageArea}\n inputRef={inputRef}\n popperRef={popperRef}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n\n return (\n <Box className={styles.root}>\n {comment && (\n <>\n <div className={styles.messages} ref={messagesRef}>\n <Comment\n comment={comment}\n uri={uri}\n onReply={handleReply}\n className={styles.comment}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n />\n <Box className={styles.replies}>\n {comment.replies.map((reply) => (\n <RepliedComment\n key={reply.replyId}\n className={styles.repliedComment}\n reply={reply}\n uri={uri}\n comment={comment}\n />\n ))}\n </Box>\n </div>\n {sendMessageArea}\n </>\n )}\n {!comment && sendMessageArea}\n </Box>\n );\n }\n);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants/classnames';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'start'\n },\n addButton: {\n visibility: 'hidden',\n '&$showAlways': {\n visibility: 'visible'\n },\n [`.${COMMENTS_CONTAINER_VISIBILITY_AREA}:hover &`]: {\n visibility: 'visible'\n }\n },\n showAlways: {}\n}));\n","import React from 'react';\n\nconst SvgCommentBubble: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 1h14.4c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1z\" />\n </svg>\n );\n};\n\nexport default SvgCommentBubble;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '4px',\n cursor: 'pointer'\n },\n icon: {\n '&:hover': {\n fillOpacity: 0.7\n }\n },\n childrenWrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n lineHeight: '15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '-2px',\n left: 0,\n right: 0,\n bottom: 0,\n color: 'white',\n fontSize: '10px',\n pointerEvents: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport CommentIcon from '../../../icons/CommentBubble';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CommentButton = React.forwardRef(({children, onClick}: Props, ref: React.Ref<HTMLDivElement>) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Show comment')}>\n <div ref={ref} className={styles.root} onClick={onClick}>\n <CommentIcon className={styles.icon} />\n <div className={styles.childrenWrapper}>{children}</div>\n </div>\n </Tooltip>\n );\n});\n\nCommentButton.displayName = 'CommentButton';\n\nexport default CommentButton;\n","import React from 'react';\n\nconst SvgAddComment: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={20}\n height={20}\n fillOpacity={0.54}\n fill=\"#000\"\n fillRule=\"nonzero\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.8 14.653L3.853 13.6H17.2V2.8H2.8v11.853zM17.2 1c.99 0 1.8.81 1.8 1.8v10.8c0 .99-.81 1.8-1.8 1.8H4.6L1 19V2.8C1 1.81 1.81 1 2.8 1h14.4zm-6.3 3.6H9.1v2.699L6.4 7.3v1.8l2.7-.001V11.8h1.8V9.099l2.7.001V7.3l-2.7-.001V4.6z\" />\n </svg>\n );\n};\n\nexport default SvgAddComment;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AddCommentIcon from '../../../icons/AddComment';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst AddCommentButton = ({className, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={i18n.text('Add comment')}>\n <div className={classnames(styles.root, className)} onClick={onClick}>\n <AddCommentIcon className={styles.icon} />\n </div>\n </Tooltip>\n );\n};\n\nexport default AddCommentButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n scrollWidth: number;\n hasScroll: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n paddingLeft: '16px',\n paddingRight: '8px'\n },\n headerInfo: {\n marginRight: 'auto',\n display: 'flex',\n alignItems: 'center'\n },\n title: {\n marginRight: '15px',\n color: theme.palette.text.primary,\n fontSize: '16px'\n },\n counter: {\n paddingLeft: '15px',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '24px'\n },\n resolveButton: {\n zIndex: 3000,\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n popper: {\n width: '424px',\n borderRadius: '0 0 4px 4px'\n },\n collaborationItem: {\n padding: '0 0 10px 0'\n },\n comment: ({hasScroll}: Props) => ({\n marginLeft: '16px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n replies: ({hasScroll}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? '2px' : '8px'\n }),\n sendMessageArea: ({hasScroll, scrollWidth}: Props) => ({\n marginLeft: '8px',\n marginRight: hasScroll ? scrollWidth + 2 : '8px'\n }),\n messages: {\n maxHeight: '400px',\n overflowY: 'auto'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Comment} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport DoneIcon from '@material-ui/icons/Done';\nimport {CollaborationContext} from '../../contexts';\nimport {CollaborationItem} from '../CollaborationItem/CollaborationItem';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {PopupWithArrow} from '../PopupWithArrow/PopupWithArrow';\nimport {useStyles} from './styles';\n\ntype PopupWithArrowProps = React.ComponentPropsWithoutRef<typeof PopupWithArrow>;\n\ntype Props = Pick<PopupWithArrowProps, 'open' | 'anchorEl' | 'onClose'> & {\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n comment?: Comment;\n};\n\nexport const CollaborationPopup = ({uri, relatedObjectUris, objectType, anchorEl, onClose, open, comment}: Props) => {\n const [scrollWidth, setScrollWidth] = useState(0);\n const hasScroll = scrollWidth !== 0;\n const styles = useStyles({scrollWidth, hasScroll});\n\n const popperRef = useRef(null);\n const {resolveThread, loading, sending} = useContext(CollaborationContext);\n const itemsCount = 1 + comment?.replies.length;\n\n const handleResolve = () => {\n resolveThread({commentId: comment.commentId, uri});\n };\n\n return (\n <PopupWithArrow\n popperRef={popperRef}\n anchorEl={anchorEl}\n open={open}\n placement=\"right-start\"\n onClose={onClose}\n className={styles.popper}\n >\n <Box className={styles.header}>\n <Box className={styles.headerInfo}>\n <Typography className={styles.title}>{i18n.text('Comments')}</Typography>\n {comment && !loading && (\n <Typography className={styles.counter}>\n {i18n.number(itemsCount)} {itemsCount === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n )}\n </Box>\n {comment && !loading && (\n <SmallIconButtonWithTooltip\n className={styles.resolveButton}\n size=\"S\"\n onClick={handleResolve}\n disabled={sending}\n showForDisabled={true}\n tooltipTitle={i18n.text('Resolve')}\n icon={DoneIcon}\n color=\"primary\"\n />\n )}\n </Box>\n {!loading && (\n <CollaborationItem\n popperRef={popperRef}\n messagesRef={(node) => {\n if (node) {\n setScrollWidth(node.offsetWidth - node.clientWidth);\n }\n }}\n classes={{\n root: styles.collaborationItem,\n replies: styles.replies,\n sendMessageArea: styles.sendMessageArea,\n messages: styles.messages,\n comment: styles.comment\n }}\n uri={uri}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n )}\n </PopupWithArrow>\n );\n};\n","import React, {useContext, useMemo, useState} from 'react';\nimport {CollaborationObjectTypes, Comment} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {useDidUpdateEffect} from '../../hooks';\nimport {CollaborationContext, RelatedObjectUrisContext} from '../../contexts';\nimport CommentButton from './buttons/CommentButton';\nimport AddCommentButton from './buttons/AddCommentButton';\nimport {CollaborationPopup} from '../CollaborationPopup/CollaborationPopup';\n\ntype Props = {\n className?: string;\n uri: string;\n objectType: Comment['objectType'];\n relatedObjectUris: Comment['relatedObjectUris'];\n allowOnlyOneComment?: boolean;\n showAlways?: boolean;\n onChangePopupVisibility?: (visibility: boolean) => void;\n};\n\nconst CommentsContainer = ({\n className,\n uri,\n objectType,\n relatedObjectUris,\n onChangePopupVisibility,\n allowOnlyOneComment = false,\n showAlways = false\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n const [shouldOpenPopup, setShouldOpenPopup] = useState<boolean>(false);\n const isOpenPopup = shouldOpenPopup && Boolean(anchorEl);\n\n const {currentComment, commentsMap, getComment, clearCurrentComment, objectTypes} = useContext(\n CollaborationContext\n );\n const showComments =\n !!commentsMap && (!objectTypes || objectTypes.includes(objectType as CollaborationObjectTypes));\n const openComments = (commentsMap?.[uri] || []).filter(({status}) => status !== 'resolved').reverse();\n const shouldShowAddCommentButton = !allowOnlyOneComment || (allowOnlyOneComment && openComments.length === 0);\n const isOpenPopupWithNewComment = currentComment === null && isOpenPopup;\n\n const handleClickCommentButton = (commentId: string) => {\n getComment(commentId);\n setShouldOpenPopup(true);\n };\n\n const handleClickAddCommentButton = (event: React.MouseEvent<HTMLDivElement>) => {\n setAnchorEl(event.currentTarget);\n setShouldOpenPopup(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n clearCurrentComment();\n setShouldOpenPopup(false);\n };\n\n useDidUpdateEffect(() => {\n if (onChangePopupVisibility) {\n onChangePopupVisibility(isOpenPopup);\n }\n }, [isOpenPopup]);\n\n const additionalRelatedObjectUris = useContext(RelatedObjectUrisContext);\n const allRelatedObjectUris = useMemo(() => {\n return additionalRelatedObjectUris ? [...relatedObjectUris, ...additionalRelatedObjectUris] : relatedObjectUris;\n }, [additionalRelatedObjectUris, relatedObjectUris]);\n\n return (\n showComments && (\n <div className={classnames(styles.root, className)}>\n {shouldShowAddCommentButton && (\n <AddCommentButton\n className={classnames(styles.addButton, {\n [styles.showAlways]: showAlways || isOpenPopupWithNewComment\n })}\n onClick={handleClickAddCommentButton}\n />\n )}\n {openComments.map(({replies, commentId}) => {\n return (\n <CommentButton\n ref={commentId === currentComment?.commentId ? setAnchorEl : null}\n key={commentId}\n onClick={() => handleClickCommentButton(commentId)}\n >\n {1 + replies}\n </CommentButton>\n );\n })}\n <CollaborationPopup\n anchorEl={anchorEl}\n open={isOpenPopup}\n onClose={handleClose}\n uri={uri}\n relatedObjectUris={allRelatedObjectUris}\n objectType={objectType}\n comment={currentComment}\n />\n </div>\n )\n );\n};\n\nexport default CommentsContainer;\n","// This component fixes \"Cannot have two HTML5 backends at the same time\" error.\n// Check issue and solution https://github.com/react-dnd/react-dnd/issues/186#issuecomment-561631584\nimport {DndProvider, createDndContext} from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport React, {useRef} from 'react';\n\nconst RNDContext = createDndContext(HTML5Backend);\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nconst useDNDProviderElement = (props: Props) => {\n const manager = useRef(RNDContext);\n\n if (!props.children) return null;\n\n return <DndProvider manager={manager.current.dragDropManager}>{props.children}</DndProvider>;\n};\n\nexport const DragAndDrop = (props: Props) => {\n const DNDElement = useDNDProviderElement(props);\n return <>{DNDElement}</>;\n};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport withTooltip from '../../HOCs/withTooltip/withTooltip';\nimport {DropDownMenuItem} from '../../types';\n\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', selectable, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-search-menu-item${id}`}\n >\n {selectable && <Checkbox checked={selected} color=\"primary\" />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport Menu, {MenuProps} from '@material-ui/core/Menu';\nimport {useDidUpdateEffect} from '../../hooks';\nimport DefaultMenuItemRenderer from './MenuItemRenderer';\nimport {useStyles} from './styles';\nimport {DropDownMenuItem} from '../../types';\n\ntype Props<T> = {\n className?: string;\n buttonComponent?: React.ElementType;\n buttonContent?: React.ReactNode;\n menuItems?: T[];\n buttonProps?: Record<string, unknown>;\n popoverProps?: Omit<MenuProps, 'open'>;\n menuId: string;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n MenuItemRenderer?: (props) => JSX.Element;\n};\n\nfunction DropDownMenuButton<T = DropDownMenuItem>({\n className,\n menuId,\n buttonComponent = Button,\n buttonContent,\n menuItems = [],\n buttonProps = {},\n popoverProps = {},\n onMenuOpen = identity,\n onMenuClose = identity,\n MenuItemRenderer = DefaultMenuItemRenderer\n}: Props<T>) {\n const ButtonComponent = buttonComponent;\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useDidUpdateEffect(() => {\n isOpen ? onMenuOpen() : onMenuClose();\n }, [isOpen]);\n\n const handleToggle = useCallback((e) => {\n e?.stopPropagation();\n setIsOpen((open) => !open);\n }, []);\n\n const renderMenuItem = (item, index) => {\n return <MenuItemRenderer item={item} key={index} onMenuClose={handleToggle} />;\n };\n\n return (\n <>\n <ButtonComponent\n ref={buttonRef}\n className={classnames(\n styles.buttonRoot,\n {\n [styles.selected]: isOpen\n },\n className\n )}\n onClick={handleToggle}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n {...buttonProps}\n >\n {buttonContent}\n </ButtonComponent>\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={handleToggle}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n {...popoverProps}\n >\n {menuItems.map(renderMenuItem)}\n </Menu>\n </>\n );\n}\n\nDropDownMenuButton.displayName = 'DropDownMenuButton';\n\nexport default DropDownMenuButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n message?: string;\n className?: string;\n};\n\nconst ErrorMessage = ({className, message}: Props) => {\n const styles = useStyles();\n if (!message) {\n return null;\n }\n\n return (\n <Typography variant=\"caption\" className={classnames(styles.caption, className)}>\n {message}\n </Typography>\n );\n};\n\nexport default ErrorMessage;\n","import classnames from 'classnames';\nimport ErrorMessage from './ErrorMessage';\nimport FormControl, {FormControlProps} from '@material-ui/core/FormControl';\nimport {FormHelperText as FormHelperText} from '@material-ui/core';\nimport React, {memo} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = FormControlProps & {\n errorMessage?: string;\n classes?: {\n root: string;\n helperText: string;\n };\n};\n\nconst ErrorWrapper = ({errorMessage, children, className, classes, ...otherProps}: Props) => {\n const styles = useStyles();\n const hasError = !!errorMessage;\n\n return (\n <FormControl className={classnames(styles.wrapper, className, classes?.root)} error {...otherProps}>\n {children}\n {hasError && (\n <FormHelperText className={classnames(styles.helperText, classes?.helperText)}>\n <ErrorMessage message={errorMessage} />\n </FormHelperText>\n )}\n </FormControl>\n );\n};\n\nexport default memo(ErrorWrapper);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n helperText: {\n margin: '3px 0 1px 12px'\n },\n caption: {\n display: 'flex',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\n\nconst SvgDefaultImage: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path\n d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-4.5-9l2.5 3.096V18H5l4.5-5.5 2.5 3.01L16.5 10zm-8-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3z\"\n fillOpacity={0.12}\n fill=\"#000\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n );\n};\n\nexport default SvgDefaultImage;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\nimport {ImageSizeType} from './Image';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative'\n },\n image: ({imageWidth, imageHeight}: ImageSizeType) => ({\n width: imageWidth,\n height: imageHeight,\n objectFit: 'cover',\n verticalAlign: 'bottom'\n }),\n defaultContainer: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'rgb(247, 247, 247)'\n },\n defaultImage: {\n width: '40px',\n height: '40px',\n marginLeft: 'auto',\n marginRight: 'auto',\n color: theme.palette.text.secondary\n },\n hideImage: {\n display: 'none'\n }\n}));\n","import React, {memo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport NotAvailableImage from '@material-ui/icons/BrokenImage';\nimport DefaultImage from '../../icons/DefaultImage';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageLoadingState = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};\n\nexport const ImageSizesStyles = {\n SMALL: {\n imageWidth: 114,\n imageHeight: 114\n },\n MEDIUM: {\n imageWidth: 162,\n imageHeight: 162\n },\n LARGE: {\n imageWidth: 192,\n imageHeight: 192\n },\n OVERRIDE: {\n imageWidth: 'unset',\n imageHeight: 'unset'\n }\n};\n\nexport type ImageSizeType = {\n imageWidth: number | string;\n imageHeight: number | string;\n};\n\ntype Props = {\n src: string;\n className?: string;\n containerClassName?: string;\n size?: ImageSizeType;\n overlay?: React.ReactNode;\n onClick?: () => void;\n};\n\nconst Image = (props: Props) => {\n const {src, className, containerClassName, size = ImageSizesStyles.SMALL, overlay = null, ...otherProps} = props;\n\n const sizeStyles = size || ImageSizesStyles.SMALL;\n const styles = useStyles(sizeStyles);\n const [imageLoadingState, setImageLoadingState] = useState<string>(ImageLoadingState.LOADING);\n\n useEffect(() => {\n setImageLoadingState(ImageLoadingState.LOADING);\n }, [src]);\n\n const onImageLoadFail = () => {\n setImageLoadingState(ImageLoadingState.ERROR);\n };\n\n const onImageLoad = () => {\n setImageLoadingState(ImageLoadingState.LOADED);\n };\n\n const imageIsLoading = imageLoadingState === ImageLoadingState.LOADING;\n const imageIsLoaded = imageLoadingState === ImageLoadingState.LOADED;\n const imageLoadingError = imageLoadingState === ImageLoadingState.ERROR;\n\n return imageLoadingError ? (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <NotAvailableImage className={styles.defaultImage} />\n </div>\n ) : (\n <div className={classnames(styles.root, containerClassName)}>\n {!isEmptyValue(src) && (\n <img\n src={src}\n className={classnames(styles.image, className, {\n [styles.hideImage]: imageIsLoading\n })}\n onLoad={onImageLoad}\n onError={onImageLoadFail}\n alt={'image'}\n {...otherProps}\n />\n )}\n {imageIsLoading && (\n <div className={classnames(styles.defaultContainer, styles.image, className)} {...otherProps}>\n <DefaultImage className={styles.defaultImage} />\n </div>\n )}\n {imageIsLoaded && overlay}\n </div>\n );\n};\n\nexport default memo(Image);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '24px',\n color: '#fff'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport {useStyles} from './styles';\n\ntype Props = {\n checked: boolean;\n className?: string;\n onClick: (e) => void;\n};\n\nexport const CheckedIcon = ({checked, className, onClick}: Props) => {\n const styles = useStyles();\n const Icon = checked ? CheckCircleIcon : RadioButtonUncheckedIcon;\n return <Icon className={classnames(styles.root, className)} onClick={onClick} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: '0.2s linear all',\n '&:not($selected):not($selectionMode):hover': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n },\n userSelect: 'none'\n },\n selected: {\n backgroundColor: 'rgba(0,114,206,0.6)'\n },\n selectionMode: {\n cursor: 'pointer',\n '&:not($selected)': {\n backgroundColor: 'rgba(0,0,0,0.6)'\n }\n },\n button: {\n padding: 0,\n width: '100px',\n height: '36px',\n color: '#fff',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n border: '1px solid rgba(255,255,255,0.25)',\n backgroundColor: 'rgba(98,2,238,0)'\n },\n checkedIcon: {\n position: 'absolute',\n left: '4px',\n top: '4px',\n cursor: 'pointer'\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: '4px',\n right: '4px'\n },\n actionButton: {\n color: '#fff',\n fontSize: '24px'\n },\n dropDownMenuButton: {\n margin: '0 2px 0 8px'\n }\n}));\n","import React, {memo, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {ifElse, equals, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport {CheckedIcon} from '../CheckedIcon/CheckedIcon';\nimport DownloadIcon from '../../../icons/Download';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n canBeSelected?: boolean;\n selected?: boolean;\n selectionMode?: boolean;\n onDeselect?: () => void;\n onSelect?: () => void;\n onShareLink?: () => void;\n onSetAsDefault?: () => void;\n onDelete?: () => void;\n onDownload?: () => void;\n onClick?: () => void;\n};\n\nconst ImageActionsOverlay = (props: Props) => {\n const {\n id,\n canBeSelected = false,\n selected = false,\n selectionMode = false,\n onDeselect = noop,\n onSelect = noop,\n onShareLink,\n onSetAsDefault,\n onDelete,\n onDownload = noop,\n onClick\n } = props;\n\n const styles = useStyles();\n const [hovered, setHovered] = useState<boolean>(false);\n\n const menuItems = useMemo(\n () =>\n [\n {\n text: i18n.text('Share link'),\n onClick: onShareLink\n },\n {\n text: i18n.text('Set as default'),\n onClick: onSetAsDefault\n },\n {\n text: i18n.text('Delete'),\n onClick: onDelete\n }\n ].filter(prop('onClick')),\n [onShareLink, onSetAsDefault, onDelete]\n );\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const toggleSelected = (selected: boolean) => () => ifElse(equals(true), onDeselect, onSelect)(selected);\n\n const showCheckBox = canBeSelected && (selected || hovered || selectionMode);\n const showActions = !selectionMode && !selected && hovered;\n const showDeselectButton = canBeSelected && selected;\n\n const handleClick = (event) => {\n if (event.currentTarget === event.target) onClick();\n };\n\n return (\n <div\n className={classnames(styles.overlay, {\n [styles.selected]: selected,\n [styles.selectionMode]: selectionMode\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={selectionMode ? toggleSelected(selected) : handleClick}\n >\n {showCheckBox && (\n <CheckedIcon className={styles.checkedIcon} checked={selected} onClick={toggleSelected(selected)} />\n )}\n {showActions && (\n <div className={styles.actions}>\n <SmallIconButton onClick={onDownload} className={styles.actionButton} icon={DownloadIcon} />\n <DropDownMenuButton\n menuId={`image-overlay-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n className: classnames(styles.actionButton, styles.dropDownMenuButton)\n }}\n menuItems={menuItems}\n />\n </div>\n )}\n {showDeselectButton && (\n <Button className={styles.button} variant=\"outlined\" onClick={onDeselect}>\n {i18n.text('Deselect')}\n </Button>\n )}\n </div>\n );\n};\n\nexport default memo(ImageActionsOverlay);\n","import React from 'react';\n\nconst SvgDetails: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M14 5a1 1 0 011 1v12a1 1 0 01-1 1H4a1 1 0 01-1-1V6a1 1 0 011-1h10zm6 12v2h-3v-2h3zm2-4v2h-5v-2h5zm0-4v2h-5V9h5zm0-4v2h-5V5h5z\"\n id=\"Details_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fillRule=\"evenodd\">\n <mask id=\"Details_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Details_svg__a\" />\n </mask>\n <path mask=\"url(#Details_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n paper: {\n backgroundColor: 'rgba(0, 0, 0, .85)'\n },\n backdrop: {\n backgroundColor: 'transparent'\n },\n toolbar: {\n paddingLeft: '20px',\n paddingRight: '20px'\n },\n appBar: {\n position: 'relative',\n background: 'linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0) 100%)'\n },\n closeButton: {\n marginRight: '28px'\n },\n closeIcon: {\n fontSize: '24px',\n color: '#fff'\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n flex: 2\n },\n headerCenter: {\n display: 'flex',\n justifyContent: 'center',\n flex: 1\n },\n headerRight: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n modeSwitcher: {\n backgroundColor: '#fff'\n },\n content: {\n padding: 0\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {AppBar as AppBar} from '@material-ui/core';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ViewComfyIcon from '@material-ui/icons/ViewComfy';\nimport DetailsIcon from '../../icons/Details';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ModeSwitcher from '../ModeSwitcher/ModeSwitcher';\nimport {useStyles} from './styles';\n\nexport enum Mode {\n GALLERY_MODE = 'gallery',\n DETAILS_MODE = 'details'\n}\n\nexport type Props = {\n open: boolean;\n mode: Mode;\n onClose?: () => void;\n onChangeMode?: (mode: Mode) => void;\n children: React.ReactNode;\n header?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n};\n\nexport const ImageGalleryDialog = ({open, mode, children, header, onClose, onChangeMode}: Props) => {\n const styles = useStyles();\n\n const modes = useMemo(\n () => [\n {\n id: Mode.GALLERY_MODE,\n title: i18n.text('Gallery'),\n Icon: ViewComfyIcon\n },\n {\n id: Mode.DETAILS_MODE,\n title: i18n.text('Details'),\n Icon: DetailsIcon\n }\n ],\n []\n );\n\n return (\n <Dialog classes={{paper: styles.paper}} open={open} BackdropProps={{className: styles.backdrop}} fullScreen>\n <AppBar classes={{colorPrimary: styles.appBar}}>\n <Toolbar className={styles.toolbar}>\n <Box className={styles.headerLeft}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n className={styles.closeButton}\n iconClassName={styles.closeIcon}\n icon={CloseIcon}\n />\n {header?.left}\n </Box>\n <Box className={styles.headerCenter}>\n <ModeSwitcher<Mode>\n modes={modes}\n modeId={mode}\n onChange={onChangeMode}\n className={styles.modeSwitcher}\n />\n </Box>\n <Box className={styles.headerRight}>{header?.right}</Box>\n </Toolbar>\n </AppBar>\n <DialogContent className={styles.content}>{children}</DialogContent>\n </Dialog>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport {useInRouterContext, Link} from 'react-router-dom';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst InternalLink = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n const styles = useStyles();\n const inRouterContext = useInRouterContext();\n const {href, className, ...otherProps} = props;\n const linkClassName = classnames(styles.link, className);\n return inRouterContext && href ? (\n <Link to={href.replace(window.location.origin, '')} className={linkClassName} {...otherProps} />\n ) : (\n <a href={href} className={linkClassName} {...otherProps} />\n );\n};\n\nexport default InternalLink;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n const color = theme.palette.background.paper;\n return {\n popoverRoot: {\n backgroundColor: color,\n maxWidth: 1000\n },\n popper: {\n '&[x-placement*=\"bottom\"] $arrow': {\n top: 0,\n left: 0,\n marginTop: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n '&[x-placement*=\"top\"] $arrow': {\n bottom: 0,\n left: 0,\n marginBottom: '-0.71em',\n marginLeft: 4,\n marginRight: 4,\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n '&[x-placement*=\"right\"] $arrow': {\n left: 0,\n marginLeft: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n '&[x-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.71em',\n height: '1em',\n width: '0.71em',\n marginTop: 4,\n marginBottom: 4,\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n },\n arrow: {\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color,\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n }\n };\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Paper as Paper} from '@material-ui/core';\nimport {ClickAwayListener as ClickAwayListener} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport Popper from '../Popper/Popper';\nimport {useStyles} from './styles';\n\ntype PopperProps = React.ComponentPropsWithoutRef<typeof Popper>;\n\ntype Props = Pick<PopperProps, 'anchorEl' | 'open' | 'placement' | 'popperRef'> & {\n children: React.ReactNode;\n onClose?: () => void;\n arrow?: boolean;\n className?: string;\n};\n\nconst isChildOfPortalModal = (child) =>\n Array.from(document.querySelectorAll('[data-modal]')).some((el) => el.contains(child));\n\nexport const PopupWithArrow = ({\n anchorEl,\n placement = 'top',\n arrow = true,\n open,\n onClose = () => {},\n children,\n className,\n popperRef\n}: Props) => {\n const styles = useStyles();\n const [arrowRef, setArrowRef] = React.useState<HTMLElement | null>(null);\n const onClickOutside = (e: React.MouseEvent<Document>) => {\n if (!isChildOfPortalModal(e.target)) {\n onClose();\n }\n };\n return (\n <Popper\n anchorEl={anchorEl}\n placement={placement}\n className={classnames(styles.popper, className)}\n modifiers={{\n preventOverflow: {\n enabled: true,\n boundariesElement: 'window'\n },\n arrow: {\n enabled: arrow,\n element: arrowRef\n }\n }}\n open={open}\n modal={false}\n popperRef={popperRef}\n >\n <Box>\n <ClickAwayListener onClickAway={onClickOutside}>\n <Paper className={styles.popoverRoot}>\n {arrow ? <span className={styles.arrow} ref={setArrowRef} /> : null}\n <Box>{children}</Box>\n </Paper>\n </ClickAwayListener>\n </Box>\n </Popper>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '15px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport RequiredMark from '../RequiredMark/RequiredMark';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n isRequired?: boolean;\n className?: string;\n};\n\nconst Title = ({label, isRequired, className, ...otherProps}: Props) => {\n const styles = useStyles();\n\n return (\n <Typography className={classnames(styles.label, className)} component=\"span\" {...otherProps}>\n {label}\n {isRequired && <RequiredMark />}\n </Typography>\n );\n};\n\nexport default Title;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst lineStyle = '1px solid #AFD4E9';\n\nconst horizontalLineWidth = 5;\nconst verticalNodeGap = 14;\nconst arrowWidth = 16;\n\nexport const useStyles = makeStyles({\n decorator: {\n marginLeft: arrowWidth / 2,\n borderLeft: lineStyle,\n '&:last-child': {\n borderLeft: 'none',\n '&:before': {\n borderLeft: lineStyle\n }\n },\n '&:before': {\n top: 0,\n height: verticalNodeGap,\n width: horizontalLineWidth,\n borderBottom: lineStyle,\n content: '\"\"',\n display: 'block',\n left: '0'\n },\n '&$plain': {\n '&:before': {\n width: 0\n }\n }\n },\n plain: {},\n wrapper: {\n marginLeft: horizontalLineWidth + 11,\n marginTop: -8\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n plain?: boolean;\n enabled?: boolean;\n};\n\nconst BranchDecorator = ({className, children, plain = false, enabled = false}: Props) => {\n const styles = useStyles();\n return enabled ? (\n <div className={classnames(styles.decorator, {[styles.plain]: plain}, className)}>\n <div className={styles.wrapper}>{children}</div>\n </div>\n ) : (\n <>{children}</>\n );\n};\n\nexport default BranchDecorator;\n","import React from 'react';\n\nconst SvgDescription: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M5.417 9.5h1.166V8.333H5.417V9.5zM6 .167A5.835 5.835 0 00.167 6 5.835 5.835 0 006 11.833 5.835 5.835 0 0011.833 6 5.835 5.835 0 006 .167zm0 10.5A4.673 4.673 0 011.333 6 4.673 4.673 0 016 1.333 4.673 4.673 0 0110.667 6 4.673 4.673 0 016 10.667zM6 2.5a2.333 2.333 0 00-2.333 2.333h1.166A1.17 1.17 0 016 3.667a1.17 1.17 0 011.167 1.166c0 1.167-1.75 1.021-1.75 2.917h1.166c0-1.313 1.75-1.458 1.75-2.917A2.333 2.333 0 006 2.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgDescription;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n height: '15px',\n backgroundColor: 'transparent',\n '&:hover': {\n backgroundColor: 'transparent'\n }\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px'\n },\n icon: {\n width: '12px',\n height: '12px',\n marginRight: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {Chip as Chip} from '@material-ui/core';\nimport {FeaturesContext} from '../../../contexts';\nimport {withTooltip} from '../../../HOCs';\nimport Description from '../../../icons/Description';\n\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n className?: string;\n description?: string;\n showDescription?: boolean;\n};\nconst DescriptionIcon = ({className, description}: Props) => {\n const {showDescription} = useContext(FeaturesContext);\n const styles = useStyles();\n\n if (!description || !showDescription) {\n return null;\n }\n\n return (\n <ChipWithTooltip\n tooltipTitle={description}\n tooltipPlacement=\"bottom\"\n icon={<Description />}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label,\n icon: styles.icon\n }}\n />\n );\n};\n\nexport default DescriptionIcon;\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n flexDirection: 'column'\n },\n main: {\n position: 'relative',\n padding: '0 86px',\n marginTop: 'auto'\n },\n mainImageContainer: {\n display: 'flex',\n alignContent: 'center',\n height: '100%',\n width: '100%'\n },\n mainImage: {\n maxWidth: 'calc(100vw - 512px)',\n maxHeight: 'calc(100vh - 192px)',\n margin: '0 auto',\n userSelect: 'none'\n },\n arrowButton: {\n backgroundColor: theme.palette.divider,\n color: 'white',\n '&:hover': {\n backgroundColor: theme.palette.divider\n }\n },\n arrowButtonPrev: {\n position: 'absolute',\n top: '50%',\n left: '16px',\n transform: 'translateY(-50%)'\n },\n arrowButtonNext: {\n position: 'absolute',\n top: '50%',\n right: '16px',\n transform: 'translateY(-50%)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n thumbnails: {\n marginLeft: '12px',\n marginBottom: '12px',\n marginTop: 'auto',\n width: 'calc(100vw - 364px)',\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n gridContainer: {\n width: '100%'\n },\n thumb: {\n width: '96px',\n height: '96px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n inactiveThumb: {\n filter: 'brightness(0.5)'\n }\n}));\n","import React, {useEffect, useRef} from 'react';\nimport {Grid as Grid} from '@material-ui/core';\nimport {getImageAttributeOvThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image from '../../../Image/Image';\nimport {useStyles} from './styles';\n\nexport const IMAGE_WIDTH = 96;\nexport const IMAGE_PADDING = 16;\nexport const CONTAINER_MARGIN = 12;\n\ntype Props = {\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const Thumbnails = ({attributeValues, setAttributeValueIndex, attributeValueIndex}: Props) => {\n const styles = useStyles();\n const gridRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (gridRef?.current) {\n const containerScrollLeft = gridRef.current.scrollLeft;\n const containerOffsetWidth = gridRef.current.offsetWidth;\n const containerWidth = containerOffsetWidth + containerScrollLeft;\n const currentElementPosition =\n attributeValueIndex * IMAGE_WIDTH + attributeValueIndex * IMAGE_PADDING + CONTAINER_MARGIN;\n if (containerWidth < currentElementPosition) {\n if (gridRef.current.scroll) {\n if (currentElementPosition > containerWidth + IMAGE_WIDTH + IMAGE_PADDING) {\n gridRef.current.scroll(currentElementPosition, 0);\n } else {\n gridRef.current.scroll(IMAGE_WIDTH + IMAGE_PADDING + containerScrollLeft, 0);\n }\n }\n } else if (containerScrollLeft + IMAGE_WIDTH > currentElementPosition) {\n if (gridRef.current.scroll) {\n gridRef.current.scroll(currentElementPosition - IMAGE_WIDTH, 0);\n }\n }\n }\n }, [attributeValueIndex, gridRef]);\n\n return (\n <div ref={gridRef} className={styles.thumbnails}>\n <Grid container wrap=\"nowrap\" direction=\"row\" spacing={1} className={styles.gridContainer}>\n {attributeValues.map(({uri, value}, index) => (\n <Grid item key={uri}>\n <Image\n onClick={() => setAttributeValueIndex(index)}\n className={classnames(styles.thumb, {\n [styles.inactiveThumb]: attributeValueIndex !== index\n })}\n src={getImageAttributeOvThumbnailUrl({value})}\n />\n </Grid>\n ))}\n </Grid>\n </div>\n );\n};\n","import React from 'react';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {ImageAttributeValue, getImageAttributeOvPreviewUrl} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {useStyles} from './styles';\nimport {Thumbnails} from './Thumbnails/Thumbnails';\n\ntype Props = {\n className?: string;\n attributeValueIndex: number;\n setAttributeValueIndex: (attributeValueIndex: number) => void;\n attributeValues: ImageAttributeValue[];\n};\n\nexport const ImageDetailsViewCarousel = ({\n className,\n attributeValues,\n attributeValueIndex,\n setAttributeValueIndex\n}: Props) => {\n const styles = useStyles();\n const attributeValue = attributeValues[attributeValueIndex];\n const mainImageSrc = getImageAttributeOvPreviewUrl(attributeValue);\n\n const onPrevImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex - 1);\n };\n\n const onNextImageButtonClick = () => {\n setAttributeValueIndex(attributeValueIndex + 1);\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <div className={styles.main}>\n {attributeValueIndex > 0 && (\n <SmallIconButton\n icon={NavigateBeforeIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonPrev)}\n onClick={onPrevImageButtonClick}\n size=\"XL\"\n />\n )}\n <Image\n containerClassName={styles.mainImageContainer}\n className={styles.mainImage}\n size={mainImageSrc && ImageSizesStyles.OVERRIDE}\n src={mainImageSrc}\n />\n {attributeValueIndex !== attributeValues.length - 1 && (\n <SmallIconButton\n icon={NavigateNextIcon}\n className={classnames(styles.arrowButton, styles.arrowButtonNext)}\n onClick={onNextImageButtonClick}\n size=\"XL\"\n />\n )}\n </div>\n <Thumbnails\n attributeValues={attributeValues}\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={setAttributeValueIndex}\n />\n </div>\n );\n};\n","import i18n from 'ui-i18n';\n\nexport const SYSTEM_ATTRIBUTES_TITLES = {\n get CreationTime() {\n return i18n.text('Creation Time');\n },\n get CreationDate() {\n return i18n.text('Creation Date');\n },\n get Dimensions() {\n return i18n.text('Dimensions');\n },\n get MimeType() {\n return i18n.text('Mime Type');\n },\n get Size() {\n return i18n.text('Size');\n },\n get Url() {\n return i18n.text('Full image URL (S3)');\n },\n get UrlPreview() {\n return i18n.text('Preview image URL (S3)');\n },\n get UrlThumbnail() {\n return i18n.text('Small image URL (S3)');\n },\n get CdnUrl() {\n return i18n.text('Full image URL (CDN)');\n },\n get CdnUrlPreview() {\n return i18n.text('Preview image URL (CDN)');\n },\n get CdnUrlThumbnail() {\n return i18n.text('Small image URL (CDN)');\n }\n};\n","import {path} from 'ramda';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {ImageAttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {SYSTEM_ATTRIBUTES_TITLES} from '../constants';\n\nexport const getFormattedSystemImageAttributeValue = (\n {value}: ImageAttributeValue = {} as ImageAttributeValue,\n name: string\n) => {\n if (\n ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail', 'MimeType'].includes(name)\n ) {\n return path([name, 0, 'value'], value);\n }\n\n if (name === 'CreationDate' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('MM-DD-YYYY');\n }\n\n if (name === 'CreationTime' && path(['CreationTimestamp', 0, 'value'], value)) {\n return moment(value.CreationTimestamp[0].value as string).format('HH:mm:ss');\n }\n\n if (name === 'Dimensions' && path(['Height', 0, 'value'], value) && path(['Width', 0, 'value'], value)) {\n return `${value.Height[0].value} x ${value.Width[0].value} ${i18n.text('pixels')}`;\n }\n\n if (name === 'Size' && path(['Size', 0, 'value'], value)) {\n const size = (Number(value.Size[0].value) / 1000).toFixed(2);\n return `${size} KB`;\n }\n};\n\nconst filterByNotSystemAttributeTypes = (attrTypes: AttributeType[] = []) => {\n return attrTypes.filter(({system}) => !system);\n};\n\nexport const filterByFieldsOrder = (keys: string[], fieldsOrder: ImageAttributeFieldsOrder) => {\n const {includeNames = [], excludeNames = [], order = []} = fieldsOrder;\n\n const filteredKeys = includeNames.length\n ? keys.filter((key) => includeNames.includes(key))\n : keys.filter((key) => !excludeNames.includes(key));\n\n if (order.length === 0) {\n return filteredKeys;\n }\n\n return filteredKeys.sort((a, b) => {\n const indA = order.indexOf(a);\n const indB = order.indexOf(b);\n if (indA === -1 && indB !== -1) return 1;\n if (indB === -1 && indA !== -1) return -1;\n return indA - indB;\n });\n};\n\nexport const getMoreAttrTypes = (attrType: AttributeType) => {\n return filterByNotSystemAttributeTypes(attrType.attributes);\n};\n\nexport const getSystemAttributesList = (attrValue: ImageAttributeValue, fieldsOrder: ImageAttributeFieldsOrder) => {\n return filterByFieldsOrder(Object.keys(SYSTEM_ATTRIBUTES_TITLES), fieldsOrder)\n .map((key) => {\n const value = getFormattedSystemImageAttributeValue(attrValue, key);\n\n if (!value) {\n return null;\n }\n\n return {\n title: SYSTEM_ATTRIBUTES_TITLES[key],\n value: getFormattedSystemImageAttributeValue(attrValue, key),\n isLink: isLink(key)\n };\n })\n .filter(Boolean);\n};\n\nexport const getNotSystemAttributesList = (\n attrValue: ImageAttributeValue = {} as ImageAttributeValue,\n attrType: AttributeType,\n fieldsOrder: ImageAttributeFieldsOrder\n) => {\n const notSystemAttrTypes = filterByNotSystemAttributeTypes(attrType.attributes);\n\n return filterByFieldsOrder(Object.keys(attrValue.value || {}), fieldsOrder).reduce((result, key) => {\n const attrType = notSystemAttrTypes.find(({name}) => name === key);\n return attrType ? [...result, {attrType: attrType, values: attrValue.value[key]}] : result;\n }, []);\n};\n\nexport const isLink = (key: string) => {\n return ['Url', 'UrlPreview', 'UrlThumbnail', 'CdnUrl', 'CdnUrlPreview', 'CdnUrlThumbnail'].includes(key);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '10px',\n color: 'white',\n fontSize: '18px',\n lineHeight: '21px',\n '&$canAdd': {\n marginBottom: '3px'\n }\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n canAdd: {}\n});\n","import React, {Fragment} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {AttributeType, AttributeItem} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport {getMoreAttrTypes} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n uri: string;\n onAddAttributes?: (items: AttributeItem[]) => void;\n};\n\nexport const MetaInfoHeader = ({attributeType, onAddAttributes, uri}: Props) => {\n const styles = useStyles();\n const moreAttrTypes = getMoreAttrTypes(attributeType);\n const canAdd = Boolean(onAddAttributes);\n\n const handleApply = (attrTypes: AttributeType[]) => {\n if (onAddAttributes) {\n onAddAttributes(attrTypes.map((attributeType) => ({attributeType, parentUri: uri})));\n }\n };\n\n return (\n <Box>\n <Typography className={classnames(styles.title, {[styles.canAdd]: canAdd})}>\n {i18n.text('Meta info')}\n </Typography>\n {canAdd && (\n <Fragment>\n <MoreAttributesButton\n label={i18n.text('Attributes')}\n data={moreAttrTypes}\n dense={false}\n onApply={handleApply}\n />\n <Divider className={styles.divider} />\n </Fragment>\n )}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n marginBottom: '11px'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n marginRight: '12px',\n float: 'left'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n content?: string;\n isLink?: boolean;\n children?: React.ReactNode;\n};\n\nexport const MetaInfoItem = ({title, content, isLink, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <span className={styles.title}>{title}</span>\n {isLink ? (\n <a className={styles.link} href={content}>\n {i18n.text('link')}\n </a>\n ) : (\n <span className={styles.content}>{content || children}</span>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n padding: '10px 0'\n },\n title: {\n color: 'rgba(255,255,255,0.54)',\n fontSize: '13px'\n },\n content: {\n color: 'rgba(255,255,255,0.87)',\n wordWrap: 'break-word'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport AttributesPager from '../../attributes/readMode/AttributesPager';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoItem} from './MetaInfoItem/MetaInfoItem';\nimport {getNotSystemAttributesList, getSystemAttributesList} from '../helpers';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n};\n\nexport const MetaInfoList = ({attributeValue, attributeType, imageAttributeFieldsOrder}: Props) => {\n const styles = useStyles();\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n\n const systemAttributesList = getSystemAttributesList(attributeValue, imageAttributeFieldsOrder);\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n\n return (\n <Box className={styles.root}>\n {systemAttributesList.map(({title, value, isLink}) => (\n <MetaInfoItem key={title} isLink={isLink} title={title} content={value} />\n ))}\n {isViewMode &&\n notSystemAttributesList.map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={false}\n values={values}\n titleClassName={styles.title}\n contentClassName={styles.content}\n parentUri={attributeValue.uri}\n />\n ))}\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {},\n form: {\n padding: '10px 0'\n },\n divider: {\n width: '100%',\n height: '1px',\n background: 'rgba(255,255,255,0.12)'\n },\n actions: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px'\n },\n cancelButton: {\n color: 'white',\n marginRight: '8px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, ImageAttributeValue, Mode, isTempUri, AttributeItem} from '@reltio/mdm-sdk';\nimport {Box as Box} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport AttributesPager from '../../attributes/editMode/AttributesPager';\nimport {getNotSystemAttributesList} from '../helpers';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeValue: ImageAttributeValue;\n hasChanges: boolean;\n onDeleteAttribute: (item: AttributeItem) => void;\n onChangeAttribute: (item: AttributeItem) => void;\n onAddAttributes: (items: AttributeItem[]) => void;\n onCancel: () => void;\n onApply: () => void;\n mode: Mode;\n};\n\nexport const MetaInfoForm = ({\n attributeType,\n imageAttributeFieldsOrder,\n attributeValue,\n hasChanges,\n onDeleteAttribute,\n onChangeAttribute,\n onAddAttributes,\n onCancel,\n onApply,\n mode\n}: Props) => {\n const styles = useStyles();\n const notSystemAttributesList = getNotSystemAttributesList(\n attributeValue,\n attributeType,\n imageAttributeFieldsOrder\n );\n const shouldShowActionButtons =\n notSystemAttributesList.length !== 0 || (notSystemAttributesList.length === 0 && hasChanges);\n\n return (\n <Box className={styles.root}>\n <Box className={styles.form}>\n {notSystemAttributesList.map(({attrType, values}) => {\n return (\n <AttributesPager\n key={attrType.uri}\n parentUri={attributeValue.uri}\n attributeType={attrType}\n values={values}\n showEmptyEditors={isTempUri(attributeValue.uri)}\n mode={mode}\n drawLines={false}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n />\n );\n })}\n </Box>\n {shouldShowActionButtons && (\n <>\n <Divider className={styles.divider} />\n <Box className={styles.actions}>\n <Button disabled={!hasChanges} onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button disabled={!hasChanges} onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </Box>\n </>\n )}\n </Box>\n );\n};\n","import {useEffect, useState, useContext, useCallback} from 'react';\nimport {equals} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {profile} from '@reltio/mdm-module';\nimport {\n addAttribute,\n editAttribute,\n removeAttribute,\n AttributeType,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '../../../contexts';\n\ntype Params = {\n initialAttributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n};\n\nexport const useEditMetaInfo = ({initialAttributeValue, attributeType}: Params) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const [attributeValue, setAttributeValue] = useState(initialAttributeValue);\n\n useEffect(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const nestingLevel = 1;\n const hasChanges = !equals(attributeValue, initialAttributeValue);\n\n const addAttributes = useCallback((attributes: AttributeItem[]) => {\n setAttributeValue((prevAttrValue) => {\n return attributes.reduce((attrValue, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({\n entity: attrValue,\n attributeType,\n parentUri,\n index,\n nestingLevel\n }) as ImageAttributeValue;\n }, prevAttrValue);\n });\n }, []);\n\n const changeAttribute = useCallback(({value, attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n editAttribute({\n entity: prevAttrValue,\n attributeType,\n uri,\n value,\n nestingLevel\n }) as ImageAttributeValue\n );\n }, []);\n\n const deleteAttribute = useCallback(({attributeType, uri}) => {\n setAttributeValue(\n (prevAttrValue) =>\n removeAttribute({entity: prevAttrValue, attributeType, uri, nestingLevel}) as ImageAttributeValue\n );\n }, []);\n\n const clearLocalChanges = useCallback(() => {\n setAttributeValue(initialAttributeValue);\n }, [initialAttributeValue]);\n\n const applyLocalChanges = useCallback(() => {\n dispatch(\n profile.actions.modifyAttribute({\n value: attributeValue,\n attributeType: attributeType,\n uri: attributeValue.uri,\n viewId\n })\n );\n }, [attributeValue, attributeType, viewId, dispatch]);\n\n return {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n };\n};\n","import {theme} from '@reltio/mdm-sdk';\n\nconst darkTheme = {\n palette: {\n type: 'dark',\n primary: theme.palette.primary,\n secondary: theme.palette.secondary\n }\n} as const;\n\nexport {darkTheme};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {MuiThemeProvider, createMuiTheme} from '@material-ui/core/styles';\nimport {Box as Box} from '@material-ui/core';\nimport {ImageAttributeFieldsOrder} from '../types';\nimport {MetaInfoHeader} from '../MetaInfoHeader/MetaInfoHeader';\nimport {MetaInfoList} from '../MetaInfoList/MetaInfoList';\nimport {MetaInfoForm} from '../MetaInfoForm/MetaInfoForm';\nimport {useEditMetaInfo} from '../hooks/useEditMetaInfo';\nimport {darkTheme} from '../theme';\n\nconst darkMuiTheme = createMuiTheme(darkTheme);\n\ntype Props = {\n imageAttributeFieldsOrder: ImageAttributeFieldsOrder;\n attributeType: AttributeType;\n attributeValue: ImageAttributeValue;\n};\n\nexport const MetaInfo = ({imageAttributeFieldsOrder, attributeType, attributeValue: initialAttributeValue}: Props) => {\n const {\n addAttributes,\n changeAttribute,\n deleteAttribute,\n clearLocalChanges,\n applyLocalChanges,\n attributeValue,\n hasChanges\n } = useEditMetaInfo({attributeType, initialAttributeValue});\n const mode = useSelector(mdm.selectors.getMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n return (\n <MuiThemeProvider theme={darkMuiTheme}>\n <Box>\n <MetaInfoHeader\n attributeType={attributeType}\n uri={attributeValue?.uri}\n onAddAttributes={isEditableMode ? addAttributes : undefined}\n />\n <MetaInfoList\n attributeType={attributeType}\n attributeValue={attributeValue}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n />\n {isEditableMode && (\n <MetaInfoForm\n mode={mode}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeType={attributeType}\n attributeValue={attributeValue}\n hasChanges={hasChanges}\n onDeleteAttribute={deleteAttribute}\n onChangeAttribute={changeAttribute}\n onAddAttributes={addAttributes}\n onCancel={clearLocalChanges}\n onApply={applyLocalChanges}\n />\n )}\n </Box>\n </MuiThemeProvider>\n );\n};\n","import {Theme} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: 'relative',\n backgroundColor: '#333',\n maxHeight: 'calc(100vh - 64px)',\n overflow: 'hidden'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n paddingLeft: '16px',\n boxShadow: `0 1px 0 0 ${theme.palette.divider}`\n },\n headerTitle: {\n color: 'rgba(255, 255, 255, 0.87)',\n fontSize: '16px',\n lineHeight: '19px'\n },\n bodyWrapper: {\n maxHeight: 'calc(100% - 56px)',\n overflow: 'auto'\n },\n body: {\n padding: '16px'\n },\n formControlLabel: {\n marginLeft: 0,\n marginBottom: '27px'\n },\n checkboxLabel: {\n marginLeft: '8px',\n color: 'rgba(255,255,255,0.87)',\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n color: 'white',\n padding: 0\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm from '@reltio/mdm-module';\nimport {AttributeType, Entity, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {MetaInfo} from '../MetaInfo/MetaInfo';\nimport {useStyles} from './styles';\n\nexport type ImageAttributeFieldsOrder = {\n order?: string[];\n excludeNames?: string[];\n includeNames?: string[];\n};\n\ntype Props = {\n className?: string;\n attributeValue: ImageAttributeValue;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsViewSidebar = ({className, attributeValue, handleSetAsDefault, attributeType}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const modifiedEntity =\n useSelector((state) => mdm.selectors.getModifiedEntity(state, entity?.uri)) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const entityToShow = isViewMode ? entity : modifiedEntity;\n const imageAttributeConfig = useSelector(mdm.selectors.getImageAttributesFieldsOrder) || {};\n const imageAttributeFieldsOrder: ImageAttributeFieldsOrder =\n imageAttributeConfig[entity?.type] || imageAttributeConfig?.default || {};\n\n const [isDefault, setIsDefault] = useState<boolean>(false);\n useEffect(() => {\n setIsDefault(entityToShow?.defaultProfilePic === attributeValue?.uri);\n }, [attributeValue?.uri, entityToShow]);\n\n const handleChange = useCallback(() => {\n handleSetAsDefault(attributeValue.uri);\n }, [attributeValue?.uri]);\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.header}>\n <Typography className={styles.headerTitle}>{i18n.text('Details')}</Typography>\n </Box>\n <Box className={styles.bodyWrapper}>\n <Box className={styles.body}>\n <FormControlLabel\n classes={{root: styles.formControlLabel, label: styles.checkboxLabel}}\n control={\n <Checkbox\n className={styles.checkbox}\n checked={isDefault}\n onChange={handleChange}\n color=\"default\"\n />\n }\n label={i18n.text('Set as default')}\n />\n <MetaInfo\n attributeType={attributeType}\n imageAttributeFieldsOrder={imageAttributeFieldsOrder}\n attributeValue={attributeValue}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n width: '100%',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n main: {\n flex: '1 0 auto'\n },\n details: {\n width: '340px'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport {ImageDetailsViewCarousel} from './ImageDetailsViewCarousel/ImageDetailsViewCarousel';\nimport {ImageDetailsViewSidebar} from './ImageDetailsViewSidebar/ImageDetailsViewSidebar';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n currentAttributeValueUri: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n handleSetAsDefault: (id: string) => void;\n attributeType: AttributeType;\n};\n\nexport const ImageDetailsView = ({\n attributeValues = [],\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n handleSetAsDefault,\n attributeType\n}: Props) => {\n const [attributeValueIndex, setAttributeValueIndex] = useState<number>(0);\n useEffect(() => {\n if (!currentAttributeValueUri) {\n onChangeAttributeValueIndex(0);\n } else {\n onChangeAttributeValueIndex(attributeValues.findIndex((value) => value.uri === currentAttributeValueUri));\n }\n }, [currentAttributeValueUri, attributeValues]);\n\n const onChangeAttributeValueIndex = useCallback(\n (index: number) => {\n setAttributeValueIndex(index);\n setCurrentAttributeValueUri(attributeValues[index]?.uri);\n },\n [attributeValues]\n );\n const styles = useStyles();\n\n return (\n <Box className={styles.root}>\n <ImageDetailsViewCarousel\n attributeValueIndex={attributeValueIndex}\n setAttributeValueIndex={onChangeAttributeValueIndex}\n attributeValues={attributeValues}\n className={styles.main}\n />\n <ImageDetailsViewSidebar\n handleSetAsDefault={handleSetAsDefault}\n attributeValue={attributeValues[attributeValueIndex]}\n className={styles.details}\n attributeType={attributeType}\n />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 24px',\n overflowY: 'auto',\n height: 'calc(100vh - 64px)'\n },\n item: {\n padding: '2px'\n }\n}));\n","import React from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport {Grid as Grid} from '@material-ui/core';\nimport Image, {ImageSizesStyles} from '../../Image/Image';\nimport ImageActionsOverlay from '../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {useStyles} from './styles';\n\nexport type ImageItem = {\n id: string;\n src: string;\n};\n\ntype Props = {\n items: ImageItem[];\n selectedItems: string[];\n onSelectImage: (id: string) => void;\n onDeselectImage: (id: string) => void;\n onShareLink?: (id: string) => void;\n onSetAsDefault?: (id: string) => void;\n onDownload: (id: string) => void;\n onClickImage: (id: string) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const GalleryView = ({\n items,\n selectedItems,\n onSelectImage,\n onDeselectImage,\n onShareLink,\n onSetAsDefault,\n onDownload,\n onClickImage,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const renderImageActionsOverlay = (id: string) => {\n return (\n <ImageActionsOverlay\n id={id}\n selected={selectedItems.includes(id)}\n selectionMode={selectedItems.length !== 0}\n onSelect={() => onSelectImage(id)}\n onDeselect={() => onDeselectImage(id)}\n onShareLink={() => onShareLink(id)}\n onSetAsDefault={() => onSetAsDefault(id)}\n onDownload={() => onDownload(id)}\n onClick={() => onClickImage(id)}\n onDelete={onDelete ? () => onDelete(id) : undefined}\n canBeSelected\n />\n );\n };\n\n return (\n <Box className={styles.root}>\n <Grid container>\n {items.map(({id, src}) => (\n <Grid key={id} classes={{item: styles.item}} item>\n <Image\n size={ImageSizesStyles.LARGE}\n onClick={() => onClickImage(id)}\n src={src}\n overlay={renderImageActionsOverlay(id)}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n selectButton: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.primary.main,\n textTransform: 'uppercase'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nimport type {ImageItem} from '../GalleryView/GalleryView';\n\ntype Props = {\n onSelectAll: () => void;\n onClearAll: () => void;\n selectedItems: unknown[];\n items: ImageItem[];\n};\n\nexport const HeaderLeft = ({selectedItems, items, onSelectAll, onClearAll}: Props) => {\n const styles = useStyles();\n const selectedAllItems = selectedItems.length === items.length;\n\n return (\n <Link\n component=\"button\"\n underline=\"none\"\n classes={{button: styles.selectButton}}\n onClick={selectedAllItems ? onClearAll : onSelectAll}\n >\n {selectedAllItems ? i18n.text('Clear selection') : i18n.text('Select all images')}\n </Link>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n downloadButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '30px'\n },\n shareButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '21px'\n },\n deleteButton: {\n color: '#fff',\n fontSize: '24px',\n marginLeft: '24px'\n },\n divider: {\n height: '31px',\n width: '1px',\n marginLeft: '10px',\n backgroundColor: 'rgba(255,255,255,0.38)'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DownloadIcon from '../../../icons/Download';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n onDownload?: () => void;\n onShare?: () => void;\n onUpload?: () => void;\n onDelete?: () => void;\n};\n\nexport const HeaderRight = ({onDownload, onShare, onUpload, onDelete}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {onUpload && (\n <Button variant=\"contained\" color=\"primary\" onClick={onUpload} startIcon={<CloudUploadIcon />}>\n {i18n.text('Upload')}\n </Button>\n )}\n {onDownload && onUpload && <div className={styles.divider} />}\n {onDownload && (\n <SmallIconButtonWithTooltip\n className={styles.downloadButton}\n tooltipTitle={i18n.text('Download selected items')}\n icon={DownloadIcon}\n onClick={onDownload}\n />\n )}\n {onShare && (\n <SmallIconButtonWithTooltip\n className={styles.shareButton}\n tooltipTitle={i18n.text('Copy link')}\n icon={LinkIcon}\n onClick={onShare}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n className={styles.deleteButton}\n tooltipTitle={i18n.text('Delete selected items')}\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </>\n );\n};\n","/* eslint-disable indent */\nimport React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {filter, pipe, pluck, propEq} from 'ramda';\nimport {\n AttributeType,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ImageDetailsView} from '../ImageDetailsView/ImageDetailsView';\nimport {ImageGalleryDialog, Mode} from '../ImageGalleryDialog/ImageGalleryDialog';\nimport {GalleryView} from './GalleryView/GalleryView';\nimport {HeaderLeft} from './HeaderLeft/HeaderLeft';\nimport {HeaderRight} from './HeaderRight/HeaderRight';\n\nexport type Props = {\n attributeValues: ImageAttributeValue[];\n open: boolean;\n onClose?: () => void;\n currentAttributeValueUri?: string;\n setCurrentAttributeValueUri: (uri?: string) => void;\n attributeType: AttributeType;\n onDownload: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n};\n\nconst ImageAttributesGallery = ({\n attributeValues,\n open,\n onClose,\n currentAttributeValueUri,\n setCurrentAttributeValueUri,\n attributeType,\n onDownload,\n onShareLink,\n onSetAsDefault,\n onUpload,\n onDeleteAttribute\n}: Props) => {\n const [selectedItems, setSelectedItems] = useState<string[]>([]);\n const [mode, setMode] = useState<Mode>(Mode.GALLERY_MODE);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n\n useEffect(() => {\n setMode(currentAttributeValueUri ? Mode.DETAILS_MODE : Mode.GALLERY_MODE);\n }, [currentAttributeValueUri]);\n\n const imageItems = attributeValues.map((attribute) => ({\n src: getImageAttributeOvThumbnailUrl(attribute) as string,\n downloadURL: getImageAttributeOvUrl(attribute) as string,\n id: attribute.uri\n }));\n\n const handleSelect = (id: string) => {\n setSelectedItems((items) => [...items, id]);\n };\n\n const handleDeselect = (id: string) => {\n setSelectedItems((items) => items.filter((item) => item !== id));\n };\n\n const handleSelectAll = () => {\n setSelectedItems(pluck('id', imageItems));\n };\n\n const handleClearAll = () => {\n setSelectedItems([]);\n };\n\n const handleDownloadSelectedItems = () => {\n const downloadURLs = isGalleryMode\n ? pipe(\n filter(({id}) => selectedItems.includes(id)),\n pluck('downloadURL')\n )(imageItems)\n : [imageItems.find(propEq('id', currentAttributeValueUri)).downloadURL];\n onDownload(downloadURLs);\n };\n\n const handleDownload = (id: string) => {\n onDownload([imageItems.find(propEq('id', id)).downloadURL]);\n };\n\n const handleShareLink = (id: string) => {\n onShareLink(imageItems.find(propEq('id', id)).downloadURL);\n };\n\n const handleSharedCurrentItem = () => {\n handleShareLink(currentAttributeValueUri);\n };\n\n const handleSetAsDefault = (id: string) => {\n const attributeValue = attributeValues.find(({uri}) => uri === id);\n onSetAsDefault(attributeValue);\n };\n\n const handleDelete = (id: string) => {\n onDeleteAttribute({uri: id, attributeType});\n };\n\n const handleDeleteSelectedItems = () => {\n const deleteUris = isGalleryMode ? selectedItems : [currentAttributeValueUri];\n deleteUris.forEach((uri) => {\n handleDelete(uri);\n });\n if (selectedItems.length) setSelectedItems([]);\n };\n\n const isGalleryMode = mode === Mode.GALLERY_MODE;\n const isDetailsMode = mode === Mode.DETAILS_MODE;\n const hasSelectedItems = selectedItems.length > 0;\n const isHasSelectedItemsOrDetailsMode = isDetailsMode || (isGalleryMode && hasSelectedItems);\n\n const isShowDeleteButton = !isViewMode && isHasSelectedItemsOrDetailsMode;\n const isShowUploadButton = !isViewMode && (isDetailsMode || (isGalleryMode && !hasSelectedItems));\n\n const headerLeft = isGalleryMode && hasSelectedItems && (\n <HeaderLeft\n items={imageItems}\n selectedItems={selectedItems}\n onClearAll={handleClearAll}\n onSelectAll={handleSelectAll}\n />\n );\n\n const headerRight = (\n <HeaderRight\n onDelete={isShowDeleteButton ? handleDeleteSelectedItems : undefined}\n onDownload={isHasSelectedItemsOrDetailsMode ? handleDownloadSelectedItems : undefined}\n onShare={isDetailsMode ? handleSharedCurrentItem : undefined}\n onUpload={isShowUploadButton ? onUpload : undefined}\n />\n );\n\n const handleClickByImage = (id: string) => {\n setCurrentAttributeValueUri(id);\n setMode(Mode.DETAILS_MODE);\n };\n\n return (\n <ImageGalleryDialog\n mode={mode}\n open={open}\n onChangeMode={setMode}\n header={{\n left: headerLeft,\n right: headerRight\n }}\n onClose={onClose}\n >\n {isGalleryMode && (\n <GalleryView\n items={imageItems}\n selectedItems={selectedItems}\n onSelectImage={handleSelect}\n onDeselectImage={handleDeselect}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onDownload={handleDownload}\n onClickImage={handleClickByImage}\n onDelete={!isViewMode ? handleDelete : undefined}\n />\n )}\n {isDetailsMode && (\n <ImageDetailsView\n handleSetAsDefault={handleSetAsDefault}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeValues={attributeValues}\n attributeType={attributeType}\n />\n )}\n </ImageGalleryDialog>\n );\n};\n\nexport default ImageAttributesGallery;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core';\n\nexport type SIZES_TYPE = {\n imageMargin: number;\n imageWidth: number;\n imageHeight: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n imageBox: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n flexShrink: 0,\n flexWrap: 'nowrap',\n marginTop: '2px',\n overflow: 'hidden'\n },\n\n moreButtonContainer: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n position: 'absolute',\n right: 0,\n cursor: 'pointer'\n };\n },\n moreButton: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: imageWidth,\n height: imageHeight,\n backgroundColor: fade(theme.palette.primary.main, 0.06)\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdm, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n ImageAttributeValue,\n insertDefaultImageByAttrUri,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {BlockImageGalleryDialogContext} from '../../../contexts';\nimport ImageAttributesGallery from '../../ImageAttributesGallery/ImageAttributesGallery';\nimport {downloadImagesByURLs} from '../helpers/imageAttributes';\nimport {DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH} from './constants';\nimport {SIZES_TYPE, useStyles} from './styles';\n\nexport type ImageRenderProps = {\n onDownload?: (url: string[]) => void;\n onShareLink?: (url: string) => void;\n onSetAsDefault?: (attributeValue: ImageAttributeValue) => void;\n onOpenImageGalleryDialog: (uri?: string) => void;\n};\n\nexport type RenderImage = (imageRenderProps?: ImageRenderProps) => (attributeValue: ImageAttributeValue) => JSX.Element;\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n renderImage: RenderImage;\n overlay?: boolean;\n countFixedItems?: number;\n children?: React.ReactNode;\n onUpload?: () => void;\n onDeleteAttribute?: (param: AttributeItem) => void;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n renderImage,\n overlay = false,\n countFixedItems = 0,\n children,\n onUpload,\n onDeleteAttribute,\n imageSize = DEFAULT_IMAGE_SIZE,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const dispatch = useDispatch();\n const styles = useStyles(imageSize);\n useEffect(() => {\n if (paging && requestNextPageOfAttributeValues) {\n const totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;\n if (totalVisibleValues > attributeValues.length) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values: [],\n defaultMaxValues: totalVisibleValues\n });\n }\n }\n }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);\n\n const lastWidth = useRef<number | null>();\n const [maxItems, setMaxItems] = useState<number>(0);\n const [hiddenItemsLength, setHiddenItemsLength] = useState<number>(0);\n\n const isBlockImageGalleryDialog = useContext(BlockImageGalleryDialogContext);\n const [isOpenDialog, setIsOpenDialog] = useState<boolean>(false);\n const [currentAttributeValueUri, setCurrentAttributeValueUri] = useState<string>();\n\n const adjustMaxItemsToScreenWidth = useCallback(\n (width: number) => {\n const {imageMargin, imageWidth} = imageSize;\n const maxItemsPerScreen = Math.floor((width + imageMargin) / (imageWidth + imageMargin)) - countFixedItems;\n const hasHiddenImage =\n width + imageMargin - (maxItemsPerScreen + countFixedItems) * (imageWidth + imageMargin) <\n IMAGE_MIN_VISIBLE_WIDTH;\n setMaxItems(maxItemsPerScreen);\n if (attributeValues.length > maxItemsPerScreen) {\n setHiddenItemsLength(attributeValues.length - maxItemsPerScreen + (hasHiddenImage ? 1 : 0));\n } else {\n setHiddenItemsLength(0);\n }\n },\n [attributeValues.length, countFixedItems, imageSize]\n );\n\n const handleResize = useCallback(\n (width) => {\n adjustMaxItemsToScreenWidth(width);\n lastWidth.current = width;\n },\n [adjustMaxItemsToScreenWidth]\n );\n\n useEffect(() => {\n if (lastWidth.current) {\n adjustMaxItemsToScreenWidth(lastWidth.current);\n }\n }, [attributeValues.length, adjustMaxItemsToScreenWidth]);\n\n const handleOpenImageGalleryDialog = useCallback(\n (uri?: string) => {\n if (!isBlockImageGalleryDialog) {\n setCurrentAttributeValueUri(uri);\n setIsOpenDialog(true);\n }\n },\n [isBlockImageGalleryDialog]\n );\n\n const handleCloseImageGalleryDialog = useCallback(() => {\n setIsOpenDialog(false);\n }, []);\n\n const handleDownload = (urls: string[]) => downloadImagesByURLs(urls);\n const handleShareLink = (url: string) => navigator.clipboard.writeText(url);\n\n const handleSetAsDefault = useCallback(\n (attributeValue: ImageAttributeValue) => {\n if (isViewMode) {\n insertDefaultImageByAttrUri(entity.uri, attributeValue.uri).then(({status}) => {\n if (status === 'success') {\n dispatch(profile.entity.actions.setDefaultProfilePic(attributeValue));\n }\n });\n } else {\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: attributeValue\n })\n );\n }\n },\n [isViewMode, entity.uri, dispatch]\n );\n\n const renderImageProps = {\n onOpenImageGalleryDialog: handleOpenImageGalleryDialog,\n ...(overlay && {\n onDownload: handleDownload,\n onShareLink: handleShareLink,\n onSetAsDefault: handleSetAsDefault\n })\n };\n\n return (\n <>\n <ReactResizeDetector handleWidth={true} onResize={handleResize} />\n <ImageAttributesGallery\n attributeValues={attributeValues}\n open={isOpenDialog}\n onClose={handleCloseImageGalleryDialog}\n setCurrentAttributeValueUri={setCurrentAttributeValueUri}\n currentAttributeValueUri={currentAttributeValueUri}\n attributeType={attributeType}\n onDownload={handleDownload}\n onShareLink={handleShareLink}\n onSetAsDefault={handleSetAsDefault}\n onUpload={onUpload}\n onDeleteAttribute={onDeleteAttribute}\n />\n <div className={styles.imageBox}>\n {children}\n {attributeValues.slice(0, maxItems).map(renderImage(renderImageProps))}\n {hiddenItemsLength > 0 && (\n <div className={styles.moreButtonContainer}>\n <div className={styles.moreButton} onClick={() => handleOpenImageGalleryDialog()}>\n <Typography className={styles.number}>{`+${hiddenItemsLength}`}</Typography>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default ImageAttributesLine;\n","const getFilenameFromURL = (url: string) => url.split('/').pop();\nconst isAbsoluteUrl = (url: string) => url.indexOf('://') > 0 || url.indexOf('//') === 0;\n\nconst isExternalUrl = (url: string) => {\n if (!isAbsoluteUrl(url)) return false;\n\n const urlParts = new URL(url);\n return urlParts.host !== location.host;\n};\n\nconst REMOVE_IFRAME_DELAY = 30000;\n\nexport const downloadImagesByURLs = (urls: string[]) => {\n urls.forEach((url, index) => {\n try {\n if (isExternalUrl(url)) {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('style', 'display: none;');\n iframe.setAttribute('src', url);\n document.body.appendChild(iframe);\n setTimeout(() => document.body.removeChild(iframe), (index + 1) * REMOVE_IFRAME_DELAY);\n } else {\n const link = document.createElement('a');\n link.href = url;\n link.download = getFilenameFromURL(url);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } catch (e) {\n console.error(e);\n }\n });\n};\n","import {ImageSizesStyles} from '../../Image/Image';\n\nexport const IMAGE_WIDTH = ImageSizesStyles.SMALL.imageWidth;\nexport const IMAGE_HEIGHT = ImageSizesStyles.SMALL.imageHeight;\nexport const IMAGE_MARGIN = 4;\nexport const IMAGE_MIN_VISIBLE_WIDTH = 8;\n\nexport const DEFAULT_IMAGE_SIZE = {imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT};\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n height: '16px',\n borderColor: fade(theme.palette.primary.main, 0.54)\n },\n label: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px',\n color: theme.palette.primary.main\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport classnames from 'classnames';\nimport {useDispatch} from 'react-redux';\nimport {Chip as Chip} from '@material-ui/core';\nimport {\n getAttrDataTypeDefinition,\n getAttributeValue,\n isComplexAttribute,\n getLabel,\n AttributeType,\n SimpleAttributeValue,\n NestedAttributeValue,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport DataTypeValue from '../../DataTypeValue/DataTypeValue';\nimport {withTooltip} from '../../../HOCs';\nimport {EntityContext} from '../../../contexts';\nimport {getEntityUri} from './heplers';\nimport {useStyles} from './styles';\n\nexport const ChipWithTooltip = withTooltip(Chip);\n\ntype ComplexWithLabel = NestedAttributeValue | ReferenceAttributeValue;\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n nonOvValues: Array<SimpleAttributeValue | ComplexWithLabel>;\n nonOvTotal: number;\n};\n\nconst OvIcon = ({className, attributeType, nonOvValues = [], nonOvTotal}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const entity = useContext(EntityContext);\n const entityUri = getEntityUri(entity, nonOvValues);\n\n const onClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri: entityUri, viewId: null, screen: 'sources'}));\n }, [dispatch, entityUri]);\n\n if (!nonOvTotal) {\n return null;\n }\n\n const tooltipTitle = nonOvValues.length\n ? nonOvValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(attributeType) ? (\n getLabel((value as ComplexWithLabel).label)\n ) : (\n <DataTypeValue\n value={getAttributeValue(value)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n rich={false}\n />\n )}\n </div>\n ))\n : null;\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"bottom\"\n label={`+ ${nonOvTotal}`}\n variant=\"outlined\"\n onClick={entityUri ? onClick : undefined}\n classes={{\n root: classnames(styles.container, className),\n label: styles.label\n }}\n />\n );\n};\n\nexport default OvIcon;\n","import {\n getEntityUriFromAttributeUri,\n isEntityUri,\n Entity,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\ntype NonOvValues = Array<SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue>;\n\nexport const getEntityUri = (entity: Entity, nonOvValues: NonOvValues) => {\n const attributeUri = nonOvValues?.[0]?.uri;\n const entityOrRelationUri = attributeUri ? getEntityUriFromAttributeUri(attributeUri) : null;\n return entityOrRelationUri && isEntityUri(entityOrRelationUri) ? entityOrRelationUri : entity?.uri;\n};\n","import {\n AttributeType,\n AttributeValue,\n DataTypes,\n findAttributeTypeByUri,\n isOv,\n Metadata,\n PivotingAttribute,\n RecordAttributesType,\n PrimitiveValue,\n getLastUriPart,\n PivotingValue\n} from '@reltio/mdm-sdk';\n\nconst getPivotingChildrenUris = (attributeType: AttributeType, pivotingAttributes: PivotingAttribute[]) => {\n const pivotingAttribute = pivotingAttributes.find((attribute) => {\n return attribute.uri === attributeType.uri;\n });\n\n return pivotingAttribute && Array.isArray(pivotingAttribute.children) ? pivotingAttribute.children : [];\n};\n\nexport const generatePivotingValue = (\n attributeType: AttributeType,\n value: RecordAttributesType,\n pivotingAttributes: PivotingAttribute[],\n metadata: Metadata\n): PivotingValue[] => {\n const pivotingChildrenUris = getPivotingChildrenUris(attributeType, pivotingAttributes);\n let pivotingChildren = attributeType?.attributes || attributeType?.analyticsAttributes || [];\n if (pivotingChildrenUris.length) {\n pivotingChildren = pivotingChildren.filter((attrType) => pivotingChildrenUris.includes(attrType.uri));\n }\n\n return pivotingChildren.reduce((acc, attribute) => {\n const values = valueToString(value[attribute.name] as AttributeValue[], metadata, pivotingAttributes);\n if (values && values.length) {\n if (Array.isArray(values[0])) {\n acc.push({[attribute.uri]: values[0]});\n } else {\n acc.push({[attribute.uri]: values});\n }\n }\n return acc;\n }, []);\n};\n\nexport const convertSimpleAttributePivotingValue = (attrType: AttributeType, value: PrimitiveValue) => [\n {[attrType.name]: value}\n];\nexport const convertNestedAttributePivotingValue = (values: PivotingValue[]) => {\n return values.map((value) => {\n return Object.fromEntries(Object.entries(value).map(([key, value]) => [getLastUriPart(key), value]));\n });\n};\n\nconst valueToString = (values: AttributeValue[], metadata: Metadata, pivotingAttributes: PivotingAttribute[]) => {\n if (!values || values.length === 0) return;\n\n return values.reduce((acc, valueContainer) => {\n if ('type' in valueContainer && valueContainer.type) {\n const value = 'lookupCode' in valueContainer ? valueContainer.lookupCode : valueContainer.value;\n const attributeType = findAttributeTypeByUri(metadata, valueContainer.type);\n if (value && typeof value !== 'object' && isOv(valueContainer)) {\n acc.push(preparePivotingAttributeValue(value, attributeType));\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n acc.push(generatePivotingValue(attributeType, value, pivotingAttributes, metadata));\n }\n }\n return acc;\n }, []);\n};\n\nexport const preparePivotingAttributeValue = (value: PrimitiveValue, attributeType: AttributeType) => {\n switch (attributeType?.type) {\n case DataTypes.TYPE_DATE:\n return new Date(value as number).getTime();\n case DataTypes.TYPE_TIMESTAMP: {\n if (!isNaN(Number(value))) {\n return new Date(Number(value)).getTime();\n } else {\n return new Date(value as number).getTime();\n }\n }\n default:\n return value;\n }\n};\n","import React from 'react';\n\nconst SvgPivotingIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={11} height={11} viewBox=\"0 0 11 11\" {...props}>\n <path\n d=\"M2.514 5h2.314V3l2.5 2.5-2.5 2.5V6h-3.8a4.5 4.5 0 10.73-3H.6a5.5 5.5 0 11-.577 3H0V5H2.514z\"\n fill=\"#6CACE4\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgPivotingIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none'\n }\n}));\n","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType, PivotingValue} from '@reltio/mdm-sdk';\nimport {UrlGeneratorsContext} from '../../contexts';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n value: PivotingValue[];\n children: React.ReactNode;\n attributeType: AttributeType;\n onClick: () => void;\n};\n\nconst PivotingUriLink = forwardRef(\n ({value, attributeType, children, className, onClick}: Props, ref: React.Ref<HTMLAnchorElement>) => {\n const styles = useStyles();\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const {generatePivotingUrl} = useContext(UrlGeneratorsContext);\n const url = generatePivotingUrl({uiPath, uri: attributeType.uri, value: JSON.stringify(value)});\n\n return (\n <a\n ref={ref}\n href={url}\n onClick={(e) => {\n onClick();\n e.stopPropagation();\n e.preventDefault();\n }}\n className={classnames(styles.link, className)}\n >\n {children}\n </a>\n );\n }\n);\n\nPivotingUriLink.displayName = 'PivotingUriLink';\n\nexport default PivotingUriLink;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n backgroundColor: 'white',\n width: '360px',\n minWidth: '360px',\n maxWidth: '720px'\n },\n header: {\n display: 'flex',\n height: '48px',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingLeft: '16px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px'\n },\n entityTypeLabel: {\n color: 'rgba(0,0,0,0.67)',\n fontSize: '14px',\n paddingLeft: '16px',\n paddingBottom: '12px',\n lineHeight: '16px'\n },\n divider: {\n height: '24px',\n width: '1px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n headerCount: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: '0.24px',\n lineHeight: '28px',\n width: '210px'\n },\n body: {\n borderBottom: '1px solid rgba(0,0,0,0.12)',\n padding: '0 16px 8px'\n },\n footer: {\n display: 'flex',\n alignItems: 'center',\n height: '31px',\n paddingLeft: '16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n profileIcon: {\n height: '16px',\n width: '16px'\n },\n entityContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px',\n textDecoration: 'none',\n paddingLeft: '8px',\n wordBreak: 'break-word'\n },\n icon: {\n margin: 'auto 8px auto 0'\n },\n content: {\n color: theme.palette.primary.main,\n cursor: 'pointer'\n },\n seeAllButton: {\n cursor: 'pointer'\n }\n}));\n\nexport const usePivotingTooltipStyles = makeStyles({\n tooltip: {\n backgroundColor: 'white',\n boxShadow: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.2)',\n padding: 0,\n borderRadius: '4px',\n maxWidth: 'none'\n },\n arrow: {\n '&::before': {\n backgroundColor: 'white'\n }\n }\n});\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n getEntityUriForLink,\n getFilteredEntities,\n getLabel,\n getTotals,\n GlobalSearchRequestOptions,\n PrimitiveValue,\n PivotingValue,\n convertPivotingValueToSearchFilters\n} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {useSafePromise} from '../../../hooks';\nimport {useStyles} from './styles';\n\nconst MAX_ENTITIES_PIVOTING_TOOLTIP = 6;\n\nexport type Props = {\n value: PivotingValue[] | PrimitiveValue;\n generatedValue: PivotingValue[];\n attributeType: AttributeType;\n config: {\n label?: string;\n entityType?: string;\n };\n onSeeAllClick: () => void;\n};\n\nexport const PivotingTooltipContent = ({value, attributeType, config = {}, generatedValue, onSeeAllClick}: Props) => {\n const [entities, setEntities] = useState<Entity[]>([]);\n const [total, setTotal] = useState(0);\n const entity = useSelector(mdm.selectors.getEntity) || ({} as Entity);\n const safePromise = useSafePromise();\n const styles = useStyles();\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const entityType = config.entityType || entity.type;\n\n const shouldShowSeeAllButton = total > MAX_ENTITIES_PIVOTING_TOOLTIP;\n\n useEffect(() => {\n const filters = convertPivotingValueToSearchFilters({value, attributeType, entityType});\n const options = {\n max: MAX_ENTITIES_PIVOTING_TOOLTIP,\n ...globalSearchRequestOptions\n };\n safePromise(Promise.all([getFilteredEntities(filters, options), getTotals(filters, options)]))\n .then((results) => {\n const [entities, {total}] = results;\n setEntities(Array.isArray(entities) ? entities : []);\n setTotal(total);\n })\n .catch(() => {\n setEntities([]);\n setTotal(0);\n });\n }, []);\n\n const hasEntityTypeLabel = Boolean(config.label);\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.title}>{i18n.text('Pivot profiles')}</div>\n <div className={styles.divider} />\n <div className={styles.headerCount}>\n {i18n.number(total, '0,0') + ' ' + (total === 1 ? i18n.text('item') : i18n.text('items'))}\n </div>\n </div>\n {hasEntityTypeLabel && <div className={styles.entityTypeLabel}>{config.label}</div>}\n <div className={styles.body}>\n {entities.map((visibleEntity) => (\n <div key={visibleEntity.uri} className={styles.entityContainer}>\n <EntityAvatar entity={visibleEntity} avatarClassName={styles.profileIcon} />\n <EntityUriLink className={styles.entityLabel} value={getEntityUriForLink(visibleEntity)}>\n {getLabel(visibleEntity.label)}\n </EntityUriLink>\n </div>\n ))}\n </div>\n {shouldShowSeeAllButton && (\n <div className={styles.footer}>\n <PivotingUriLink\n value={generatedValue}\n attributeType={attributeType}\n className={styles.seeAllButton}\n onClick={onSeeAllClick}\n >\n {i18n.text('See all')}\n </PivotingUriLink>\n </div>\n )}\n </div>\n );\n};\n","import React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport mdm, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n AttributeType,\n isNested,\n NestedAttributeValue,\n PrimitiveValue,\n RecordAttributesType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport {PivotingAttributeContext} from '../../../contexts';\nimport {\n convertNestedAttributePivotingValue,\n convertSimpleAttributePivotingValue,\n generatePivotingValue,\n preparePivotingAttributeValue\n} from './helpers';\nimport PivotingIcon from '../../../icons/PivotingIcon';\nimport {PivotingTooltipContent} from './PivotingTooltipContent';\nimport PivotingUriLink from '../../PivotingUriLink/PivotingUriLink';\nimport {usePivotingTooltipStyles, useStyles} from './styles';\n\ntype Props = {\n value: SimpleAttributeValue | NestedAttributeValue;\n attributeType: AttributeType;\n children?: React.ReactNode;\n className?: string;\n};\nexport const PivotingTooltip = ({value, attributeType, children, className}: Props) => {\n const styles = usePivotingTooltipStyles();\n const contentStyles = useStyles();\n const dispatch = useDispatch();\n const pivotingAttributesList = useContext(PivotingAttributeContext) || [];\n const isNestedAttribute = isNested(attributeType);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const pivotingValue = isNestedAttribute\n ? generatePivotingValue(attributeType, value.value as RecordAttributesType, pivotingAttributesList, metadata)\n : preparePivotingAttributeValue(\n (value as SimpleAttributeValue).lookupCode || (value.value as PrimitiveValue),\n attributeType\n );\n\n const isPivotingAttribute =\n pivotingAttributesList.some(({uri}) => uri === attributeType.uri) &&\n ((Array.isArray(pivotingValue) && pivotingValue.length) ||\n (!Array.isArray(pivotingValue) && !isNil(pivotingValue)));\n\n const pivotingAttribute = pivotingAttributesList.find(({uri}) => uri === attributeType.uri);\n\n const convertPivotingValue = () =>\n Array.isArray(pivotingValue)\n ? convertNestedAttributePivotingValue(pivotingValue)\n : convertSimpleAttributePivotingValue(attributeType, pivotingValue);\n\n const generatedValue = isPivotingAttribute ? convertPivotingValue() : undefined;\n\n const handleSeeAllClick = () => {\n dispatch(mdmModuleUi.actions.openPivotingPerspective({value: generatedValue, attributeType}));\n };\n\n return isPivotingAttribute ? (\n <Tooltip\n interactive\n arrow\n placement=\"right-start\"\n classes={styles}\n title={\n <PivotingTooltipContent\n value={pivotingValue}\n generatedValue={generatedValue}\n attributeType={attributeType}\n config={pivotingAttribute.popup}\n onSeeAllClick={handleSeeAllClick}\n />\n }\n >\n <span className={className}>\n <PivotingIcon className={contentStyles.icon} />\n <PivotingUriLink\n onClick={handleSeeAllClick}\n className={contentStyles.content}\n value={generatedValue}\n attributeType={attributeType}\n >\n {children}\n </PivotingUriLink>\n </span>\n </Tooltip>\n ) : (\n <>{children}</>\n );\n};\n","import EditModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return EditModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes, isReltioCrosswalk} from '@reltio/mdm-sdk';\nimport SimpleAttributeEditor from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class EditModeAttributesFactory {\n static build(attributeType, props = {}) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n showEmptyEditors,\n onAddAttributes,\n lazy,\n errors,\n crosswalks,\n showNonOv,\n expanded,\n ...propsForSimpleAttribute\n } = props;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return (\n <SimpleAttributeEditor\n isReltioCrosswalk={isReltioCrosswalk(crosswalks, props.attributeValue)}\n {...propsForSimpleAttribute}\n />\n );\n }\n }\n}\n","import React, {memo, useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {\n getCreatableAttributeTypes,\n getAttributesListForEditMode,\n ModeType,\n getParentUri,\n checkCanCreateAttribute\n} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\n\nimport AttributesPager from '../AttributesPager';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport MoreAttributesButton from '../MoreAttributesButton';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\nimport {getMoreAttrTypes} from './helpers';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\n\nconst AttributesList = ({\n parentAttributeType,\n attrTypes,\n entity,\n parentUri,\n showEmptyEditors,\n mode,\n crosswalks,\n drawLines,\n children,\n className,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n onAddAttributes,\n onChangeAttribute,\n onDeleteAttribute,\n additionalControlsRenderer,\n showNonOv\n}) => {\n const {attributes = {}} = entity;\n const [hasDeletionsMap, setHasDeletionsMap] = useState({});\n const setHasDeletions = useCallback((attrTypeUri, value) => {\n setHasDeletionsMap((prevMap) => ({\n ...prevMap,\n [attrTypeUri]: value\n }));\n }, []);\n useEffect(() => {\n setHasDeletionsMap({});\n }, [parentUri]);\n const canCreateParentAttrType = useMemo(\n () => parentAttributeType && checkCanCreateAttribute({attributeType: parentAttributeType, mode}),\n [parentAttributeType, mode]\n );\n const creatableAttrTypes = useMemo(() => getCreatableAttributeTypes(mode, attrTypes), [attrTypes, mode]);\n const moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const pagersData = useMemo(\n () => getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes),\n [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]\n );\n\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const onAddMoreAttributes = useCallback(\n (attributeTypes) => {\n onAddAttributes(\n attributeTypes.map((attributeType) => ({\n attributeType,\n parentUri: attributeType === parentAttributeType ? getParentUri(parentUri) : parentUri\n }))\n );\n },\n [onAddAttributes, parentUri, parentAttributeType]\n );\n\n const decoratorProps = {\n enabled: drawLines\n };\n const hasDeletionsContextValue = useMemo(\n () => ({\n hasDeletionsMap,\n setHasDeletions\n }),\n [hasDeletionsMap, setHasDeletions]\n );\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n <BranchDecorator {...decoratorProps} plain={true}>\n {moreAttrTypes.length > 0 && (\n <MoreAttributesButton\n label={i18n.text('More attributes')}\n onApply={onAddMoreAttributes}\n dense={drawLines}\n data={moreAttrTypes}\n parent={canCreateParentAttrType && parentAttributeType}\n />\n )}\n </BranchDecorator>\n <HasDeletionsContext.Provider value={hasDeletionsContextValue}>\n {regularPagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={`${attrType.uri}_${parentUri}`}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], attributes)}\n parentUri={parentUri}\n showEmptyEditors={showEmptyEditors}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n />\n ))}\n </HasDeletionsContext.Provider>\n </div>\n );\n};\n\nAttributesList.propTypes = {\n parentAttributeType: PropTypes.object,\n attrTypes: PropTypes.array,\n entity: PropTypes.object,\n parentUri: PropTypes.string,\n children: PropTypes.node,\n showEmptyEditors: PropTypes.bool,\n mode: ModeType,\n crosswalks: PropTypes.array,\n drawLines: PropTypes.bool,\n showNonOv: PropTypes.bool,\n className: PropTypes.string,\n alwaysVisibleTypeUris: PropTypes.array,\n onAddAttributes: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n additionalControlsRenderer: PropTypes.func\n};\n\nexport default memo(AttributesList);\n","import {always, both, cond, has, T} from 'ramda';\nimport {\n AttributeType,\n Entity,\n isAnalyticAttribute,\n isRoleAttrType,\n isSpecialAttribute,\n isTagAttrType\n} from '@reltio/mdm-sdk';\n\nconst getSource = (\n attrType: AttributeType,\n entity: Entity\n): Entity | Entity['analyticsAttributes'] | Entity['attributes'] => {\n const {attributes = {}, analyticsAttributes = {}} = entity;\n return cond([\n [isSpecialAttribute, always(entity)],\n [both(isAnalyticAttribute, always(analyticsAttributes)), always(analyticsAttributes)],\n [T, always(attributes)]\n ])(attrType);\n};\n\nconst getNameProp = (attrType: AttributeType): string => {\n return isSpecialAttribute(attrType) ? 'uri' : 'name';\n};\n\nexport const getMoreAttrTypes = (\n attrTypes: AttributeType[],\n entity: Entity,\n showEmptyEditors?: boolean,\n hasDeletionsMap?: {[attrTypeUri: string]: boolean}\n): AttributeType[] => {\n return attrTypes.filter((attrType) => {\n const source = getSource(attrType, entity);\n const nameProp = getNameProp(attrType);\n return !(\n (attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&\n (has(attrType[nameProp])(source) || (showEmptyEditors && !hasDeletionsMap?.[attrType.uri]))\n );\n });\n};\n","import React from 'react';\nimport {CardinalityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {allPass, always, cond, isNil, has, not, pipe, propSatisfies, T} from 'ramda';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\nconst valueCaption = (value) =>\n i18n.text('${value}', {\n value: value === 1 ? i18n.text('value') : i18n.text('values')\n });\n\nconst hasMinValue = has('minValue');\nconst hasMaxValue = has('maxValue');\nconst noMaxValue = pipe(hasMaxValue, not);\nconst minValueIsOne = propSatisfies((minValue) => minValue === 1, 'minValue');\nconst exactCardinality = ({minValue, maxValue}) => minValue && minValue === maxValue;\n\nconst generateMinCardinality = ({minValue}) =>\n i18n.text('This attribute can have minimum ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMaxCardinality = ({maxValue}) =>\n i18n.text('This attribute can have maximum ${maxValue} ${maxValueCaption}', {\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst generateExactCardinality = ({minValue}) =>\n i18n.text('This attribute should have ${minValue} ${minValueCaption}', {\n minValue: i18n.number(minValue, '0'),\n minValueCaption: valueCaption(minValue)\n });\n\nconst generateMinMaxCardinality = ({minValue, maxValue}) =>\n i18n.text('${minCardinality} and maximum ${maxValue} ${maxValueCaption}', {\n minCardinality: generateMinCardinality({minValue}),\n maxValue: i18n.number(maxValue, '0'),\n maxValueCaption: valueCaption(maxValue)\n });\n\nconst getCardinalityMessage = cond([\n [isNil, always('')],\n [exactCardinality, generateExactCardinality],\n [allPass([minValueIsOne, hasMaxValue]), generateMaxCardinality],\n [allPass([minValueIsOne, noMaxValue]), always('')],\n [allPass([hasMinValue, hasMaxValue]), generateMinMaxCardinality],\n [hasMaxValue, generateMaxCardinality],\n [hasMinValue, generateMinCardinality],\n [T, always('')]\n]);\n\nconst CardinalityMessage = ({cardinality}) => {\n const styles = useStyles();\n\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {getCardinalityMessage(cardinality)}\n </Typography>\n );\n};\n\nCardinalityMessage.propTypes = {\n cardinality: CardinalityType\n};\n\nexport default CardinalityMessage;\n","import {filter, propSatisfies} from 'ramda';\nimport {isTempUri} from '@reltio/mdm-sdk';\n\nconst filterNewValues = filter(propSatisfies(isTempUri, 'uri'));\n\nexport {filterNewValues};\n","import React, {useCallback, useRef, useState, useContext, useMemo} from 'react';\nimport classNames from 'classnames';\nimport {\n AttributeValue,\n createNewAttribute,\n getAttributeOwnError,\n isComplexAttribute,\n isEditableMode as checkIsEditableMode,\n isEmptyValue,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\nimport {add, always, has, ifElse, min, pipe, prop, T} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Cardinality from './CardinalityMessage';\nimport {AttributePagerProps} from './index';\nimport {filterNewValues} from './utils';\nimport {withContext} from '../../../../HOCs';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\n\nimport {useStyles} from './styles';\n\ntype Props = Required<Omit<AttributePagerProps, 'values'>> & {\n values?: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n nonVisibleValues: AttributeValue[];\n highlightedError?: React.ContextType<typeof ScrollToErrorContext>;\n};\n\nconst AttributeRenderer = ({\n max,\n values,\n attributeType,\n parentUri,\n mode,\n drawLines,\n showEmptyEditors,\n errorMessage,\n errors,\n paging,\n crosswalks,\n showNonOv,\n nonVisibleValues,\n highlightedError,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n const [hadDeletions, setHadDeletions] = useState(false);\n const {label, required: isRequired, cardinality, name, uri: attributeTypeUri, description} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n const pinnedAttributes = useContext(PinnedAttributesContext);\n const isPinned = useMemo(() => pinnedAttributes?.includes(attributeTypeUri), [attributeTypeUri, pinnedAttributes]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = ((!hadDeletions && showEmptyEditors) || isRequired || isPinned) && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const onAddOneMore = useCallback(() => {\n setVisibleValuesCount(visibleValuesCount + 1);\n\n const attribute = {\n parentUri,\n index: visibleValuesCount,\n attributeType\n } as AttributeItem;\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [visibleValuesCount, onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);\n\n if (isEmptyValues && !showEmpty) {\n return null;\n }\n\n if (showEmpty && isEmptyValues) {\n values = [emptyEditorValue.current];\n }\n\n if (isEmptyValue(values)) {\n return null;\n }\n\n const newValuesCount = (filterNewValues(values) || []).length;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(\n has(totalProp),\n pipe(prop(totalProp), add(newValuesCount)),\n always(values.length)\n )(paging);\n\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues?.length;\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri,\n attributeTypeName: name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const lastIndex = shownValues ? shownValues.length - 1 : 0;\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <BranchDecorator enabled={drawLines}>\n <div ref={ref} className={classNames(styles.wrapper, errorClassName)}>\n <div className={styles.titleWrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} className={styles.description} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} className={styles.typeError} />}\n <div className={styles.attributesWrapper}>\n {shownValues.map((value, idx) => (\n <Attribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n errors={errors}\n ownError={getAttributeOwnError(value, idx, attributeType.uri, errors)}\n mode={mode}\n crosswalks={crosswalks}\n onAddOneMore={lastIndex === idx ? onAddOneMore : null}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n onDeactivateError={onDeactivateError}\n additionalControlsRenderer={additionalControlsRenderer}\n />\n ))}\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n </div>\n </BranchDecorator>\n );\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {parentUri, attributeType}) => {\n const {error} = contextValue || {};\n const isHighlighted = isAttributeTypeError(error, parentUri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n AttributeRenderer\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n roleContainer: {\n width: '100%'\n },\n\n valueContainer: {\n marginLeft: '8px',\n width: 0\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {prop, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {Metadata, Entity, EntityAttrTypes, getRolesForEntityType, getLastUriPart, AttributeItem} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport SimpleDropDownSelector from '../../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {MultiValueChip} from '../../..';\nimport {useStyles} from './styles';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\ntype Props = {\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst components = {MultiValue: MultiValueChip};\n\nexport const Roles = ({values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = entity.uri;\n\n const options = getRolesForEntityType(metadata, entity.type).map((role) => ({\n value: role.uri,\n label: role.label\n }));\n\n const formattedValues = (values || []).map((value) => {\n const label = options.find(propEq('value', value))?.label;\n\n return {\n value,\n label: label || getLastUriPart(value)\n };\n });\n\n const handleChange = useCallback(\n (values) => {\n const roles = values?.map(prop('value')) || [];\n onChange({\n value: roles,\n attributeType: EntityAttrTypes.roles,\n uri: entityUri\n });\n },\n [entityUri, onChange]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.roles});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <SimpleDropDownSelector\n label={''}\n height={40}\n isMulti={true}\n options={options}\n value={formattedValues}\n onChange={handleChange}\n components={components}\n classes={styles}\n className={styles.roleContainer}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: '10px'\n },\n\n deleteButton: {\n marginLeft: '8px'\n }\n});\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacets, EntityAttrTypes, buildFilterQueryString, AttributeItem} from '@reltio/mdm-sdk';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport TypeaheadEditor from '../../../editors/TypeaheadEditor/TypeaheadEditor';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n values: string[];\n onChange: (param: AttributeItem) => void;\n onDelete?: (param: AttributeItem) => void;\n};\n\nconst filtersWithSearch = (searchQuery) => [\n {\n filter: 'containsWordStartingWith',\n fieldName: 'tags',\n values: [searchQuery]\n }\n];\n\nconst getQuery = (searchQuery) =>\n searchQuery ? `?filter=${buildFilterQueryString()(filtersWithSearch(searchQuery))}` : '';\n\nconst body = [\n {\n fieldName: 'tags',\n orderType: 'reversedCount'\n }\n];\n\nconst getSuggestions = (searchQuery) =>\n getFacets({query: getQuery(searchQuery), body}).then((response) => Object.keys(response.tags));\n\nconst Tags = ({className, values, onChange, onDelete}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const handleChange = useCallback(\n (tags) => {\n onChange({\n value: tags,\n attributeType: EntityAttrTypes.tags,\n uri: entityUri\n });\n },\n [onChange, entityUri]\n );\n\n const handleDelete = useCallback(() => {\n onDelete({uri: entityUri, attributeType: EntityAttrTypes.tags});\n }, [entityUri, onDelete]);\n\n return (\n <div className={styles.container} data-reltio-id=\"reltio-attribute-value\">\n <TypeaheadEditor\n fullWidth\n multiple\n variant=\"filled\"\n className={className}\n value={values || []}\n onChange={handleChange}\n getSuggestions={getSuggestions}\n />\n {!!onDelete && (\n <SmallIconButton className={styles.deleteButton} icon={DeleteIcon} onClick={handleDelete} size=\"L\" />\n )}\n </div>\n );\n};\n\nexport default Tags;\n","import React, {useCallback, useRef, useState} from 'react';\nimport {\n AttributeType,\n createNewAttribute,\n EntityAttrTypes,\n isEditableMode as checkIsEditableMode,\n Mode,\n isEmptyValue,\n isActivenessAttrType,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {pipe, T} from 'ramda';\nimport {Box as Box} from '@material-ui/core';\nimport Title from '../../../Title/Title';\nimport Cardinality from './CardinalityMessage';\nimport ErrorMessage from '../../../ErrorWrapper/ErrorMessage';\nimport Attribute from '../AttributesFactory/Attribute';\nimport {Roles} from '../Roles/Roles';\nimport Tags from '../Tags';\nimport {useStyles} from './styles';\nimport {HasDeletionsContext} from '../contexts/HasDeletionsContext';\nimport {withContext} from '../../../../HOCs';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n parentUri: string;\n mode: Mode;\n errorMessage?: string;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n showEmptyEditors?: boolean;\n hasDeletions?: boolean;\n setHasDeletions?: (attrTypeUri: string, value: boolean) => void;\n};\n\nexport const SpecialRenderer = ({\n values,\n attributeType,\n parentUri,\n mode,\n errorMessage,\n onDeleteAttribute,\n onChangeAttribute,\n showEmptyEditors,\n hasDeletions: hasDeletionsProp,\n setHasDeletions,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const {label, required: isRequired, cardinality} = attributeType;\n const isEditableMode = checkIsEditableMode(mode);\n const [hasDeletionsState, setHasDeletionsState] = useState(false);\n const updateHasDeletions = useCallback(\n (value: boolean) => {\n setHasDeletionsState(value);\n setHasDeletions?.(attributeType.uri, value);\n },\n [attributeType.uri, setHasDeletions]\n );\n const hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [\n onDeleteAttribute,\n updateHasDeletions\n ]);\n const isEmptyValues = isEmptyValue(values);\n const showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;\n\n const emptyEditorValue = useRef(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const renderValue = () => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n case EntityAttrTypes.roles.uri:\n return <Roles values={values as string[]} onDelete={onDelete} onChange={onChangeAttribute} />;\n default: {\n //startDate, endDate\n const value = {\n ...emptyEditorValue.current,\n value: values[0] || ''\n };\n return (\n <Attribute\n attributeValue={value}\n attributeType={attributeType}\n mode={mode}\n onDeleteAttribute={onDelete}\n onChangeAttribute={onChangeAttribute}\n {...otherProps}\n />\n );\n }\n }\n };\n\n if (isActivenessAttrType(attributeType) && isEmptyValues && !showEmpty) {\n return null;\n }\n\n return (\n <Box className={styles.wrapper}>\n <Title\n label={label}\n isRequired={isRequired}\n className={styles.title}\n data-reltio-id=\"reltio-attribute-label\"\n />\n {isEditableMode && <Cardinality cardinality={cardinality} />}\n {isEditableMode && <ErrorMessage message={errorMessage} />}\n <Box className={styles.attributesWrapper}>{renderValue()}</Box>\n </Box>\n );\n};\n\nexport default withContext(\n HasDeletionsContext,\n (contextValue, {attributeType}) => {\n const {hasDeletionsMap, setHasDeletions} = contextValue || {};\n return {\n hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType?.uri]) : undefined,\n setHasDeletions\n };\n },\n SpecialRenderer\n);\n","import React from 'react';\nimport {AttributeItem, AttributeType, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useStyles();\n const {label, description} = attributeType;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleWrapper}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.description} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import React, {memo} from 'react';\nimport {\n isImage,\n isOv,\n isSpecialAttribute,\n Mode,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {always, cond, T, partition} from 'ramda';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributeRenderer from './AttributeRenderer';\nimport {AttributePagerProps} from './index';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\n\nenum RENDERER_TYPES {\n imageLine = 'imageLine',\n special = 'special',\n default = 'default'\n}\n\nconst AttributesPager = ({\n values,\n attributeType,\n mode = Mode.Viewing,\n crosswalks,\n drawLines,\n paging = {},\n parentUri,\n errors,\n errorMessage,\n max = Infinity,\n showEmptyEditors,\n showNonOv,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n requestNextPageOfAttributeValues\n}: AttributePagerProps) => {\n const partitionByOv = partition(isOv);\n const [ovValues, nonOvValues] = partitionByOv(values);\n\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n\n const commonProps = {\n errorMessage,\n errors,\n mode,\n parentUri,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n showEmptyEditors\n };\n\n const renderAttribute = () => {\n const type: RENDERER_TYPES = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [T, always(RENDERER_TYPES.default)]\n ])(attributeType);\n\n switch (type) {\n case RENDERER_TYPES.special: {\n return (\n <BranchDecorator enabled={drawLines}>\n <SpecialRenderer\n values={visibleValues as string[] | number[]}\n attributeType={attributeType}\n {...commonProps}\n />\n </BranchDecorator>\n );\n }\n case RENDERER_TYPES.imageLine:\n return (\n <BranchDecorator enabled={drawLines}>\n <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={parentUri}\n onChangeAttribute={onChangeAttribute}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </BranchDecorator>\n );\n default:\n return (\n <AttributeRenderer\n values={\n visibleValues as (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[]\n }\n attributeType={attributeType}\n max={max}\n paging={paging}\n crosswalks={crosswalks}\n drawLines={drawLines}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n nonVisibleValues={nonVisibleValues}\n {...commonProps}\n />\n );\n }\n };\n\n return renderAttribute();\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeType,\n Crosswalk,\n getAttributePagerActiveTypeErrorMessage,\n ImageAttributeValue,\n Mode,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport AttributesPager from './AttributesPager';\nimport CardinalityMessage from './CardinalityMessage';\n\ntype StateProps = {\n errorMessage: string;\n errors: AttributeError[];\n max: number;\n};\n\ntype DispatchProps = {\n onDeactivateError: (id: string) => void;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\ntype OwnProps = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | ImageAttributeValue\n | string\n | number\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n mode?: Mode;\n crosswalks?: Crosswalk[];\n parentUri: string;\n drawLines: boolean;\n max?: number;\n showEmptyEditors: boolean;\n showNonOv?: boolean;\n onAddAttributes: (params: AttributeItem[]) => void;\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n additionalControlsRenderer?: (props) => JSX.Element;\n};\n\nexport type AttributePagerProps = StateProps & DispatchProps & OwnProps;\n\nconst mapStateToProps = (state, {parentUri, attributeType, max}: OwnProps): StateProps => ({\n errors: mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType),\n errorMessage: getAttributePagerActiveTypeErrorMessage(\n parentUri,\n attributeType,\n mdmModule.selectors.getProfileErrors(state)\n ),\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps: DispatchProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {AttributesPager, CardinalityMessage};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n caption: {\n fontSize: '0.7rem',\n opacity: 0.54\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n position: 'relative'\n },\n description: {\n marginRight: '-9px'\n },\n attributesWrapper: {\n width: '100%',\n marginBottom: '10px'\n },\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n },\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingLeft: '12px',\n color: theme.palette.text.secondary\n },\n typeError: {\n marginLeft: '12px'\n },\n ovIcon: {\n marginLeft: '8px',\n marginTop: '-1px',\n textIndent: 0\n },\n titleWrapper: {\n flex: 1,\n paddingBottom: '3px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n complexWrapper: {\n position: 'relative'\n },\n editor: {\n display: 'flex',\n flex: 1,\n height: '36px',\n alignItems: 'center'\n },\n label: {\n flex: 1,\n marginLeft: '2px',\n marginTop: '2px',\n fontSize: '13px',\n lineHeight: '15px'\n },\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n titleContainer: {\n display: 'flex',\n flex: 1,\n minHeight: '20px'\n },\n expandButton: {\n marginTop: '2px'\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n },\n errorWrapperHelperText: {\n marginLeft: 0\n }\n}));\n","import React, {useMemo, useState, useEffect} from 'react';\nimport {pipe, propOr, pathEq, any} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {\n checkCanDeleteAttribute,\n isReltioCrosswalk,\n isTempUri,\n ComplexAttributeType,\n ReferenceAttributeValueType,\n NestedAttributeValueType,\n AttributeTypeType,\n getErrorMessage,\n hasAttributeDescendantsWithErrors,\n isAnalyticAttribute\n} from '@reltio/mdm-sdk';\nimport {Button as Button} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport AttributesList from '../AttributesList/AttributesList';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n label,\n attributeTypesList,\n attributeType,\n attributeValue,\n children,\n errors,\n ownError,\n mode,\n metadata,\n crosswalks,\n lazy,\n showEmptyEditors,\n onAddOneMore,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute,\n additionalControlsRenderer,\n hideDeleteButton,\n state,\n showNonOv,\n isHighlightedPath,\n highlightedError,\n expanded: expandedProp = false\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const uri = attributeValue.uri;\n const isNew = isTempUri(uri);\n const defaultExpand = isNew || expandedProp;\n const [expanded, setExpanded] = useState(defaultExpand);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError});\n\n useEffect(() => {\n if (isHighlightedPath) {\n setExpanded(true);\n }\n }, [isHighlightedPath]);\n\n useEffect(() => {\n setExpanded(defaultExpand);\n }, [defaultExpand]);\n\n const canDelete = useMemo(\n () =>\n checkCanDeleteAttribute({\n attributeType,\n attributeValue,\n mode,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, metadata, crosswalks]\n );\n const showDeleteButton = !deleted && !hideDeleteButton && !!onDeleteAttribute && canDelete;\n const onDeleteThis = () => onDeleteAttribute({uri, attributeType, attributeValue});\n\n const hasDescendantsWithErrors = useMemo(\n () => hasAttributeDescendantsWithErrors(attributeValue, errors),\n [errors, attributeValue]\n );\n useEffect(() => {\n if (hasDescendantsWithErrors) {\n setExpanded(true);\n }\n }, [errors, hasDescendantsWithErrors]);\n useEffect(() => {\n if (deleted) {\n setExpanded(false);\n }\n }, [deleted]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null\n }),\n [attributeValue, hasAnalyticValue]\n );\n\n const errorMessage =\n getErrorMessage(ownError) || (hasDescendantsWithErrors && i18n.text('Has an incorrect value')) || '';\n\n return lazy ? (\n <Button variant=\"text\" color=\"primary\" onClick={onAddOneMore}>\n Create attribute\n </Button>\n ) : (\n <div ref={ref} className={classnames(styles.complexWrapper, errorClassName)}>\n <div className={styles.editor}>\n <div className={styles.titleContainer}>\n <ArrowExpandButton\n onClick={() => setExpanded((value) => !value)}\n expanded={expanded}\n className={styles.expandButton}\n disabled={deleted}\n />\n <ErrorWrapper errorMessage={errorMessage} classes={{helperText: styles.errorWrapperHelperText}}>\n <div\n className={classnames(styles.label, {[styles.deleted]: deleted})}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </div>\n </ErrorWrapper>\n </div>\n <div className={styles.actions}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && <SmallIconButton icon={DeleteIcon} onClick={onDeleteThis} size=\"L\" />}\n </div>\n </div>\n {expanded && (\n <AttributesList\n parentAttributeType={attributeType}\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n showEmptyEditors={showEmptyEditors || isNew}\n drawLines={true}\n parentUri={uri}\n mode={mode}\n crosswalks={crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n additionalControlsRenderer={additionalControlsRenderer}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n label: PropTypes.string,\n children: PropTypes.node,\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n highlightedError: PropTypes.object,\n isHighlightedPath: PropTypes.bool,\n ...ComplexAttributeType\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue}) => {\n const {error} = contextValue || {};\n const isHighlighted = error?.uri === attributeValue.uri;\n const isHighlightedPath = pipe(propOr([], 'path'), any(pathEq(['value', 'uri'], attributeValue.uri)))(error);\n return {\n highlightedError: isHighlighted ? contextValue : null,\n isHighlightedPath\n };\n },\n ComplexAttribute\n);\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributesList from '../AttributesList';\nimport {ModeType} from '@reltio/mdm-sdk';\n\nconst defaultAttributeTypesSelectionStrategy = (entityType) => entityType && entityType.attributes;\n\nconst EntityCreator = ({\n entity,\n entityType,\n attributeTypesSelectionStrategy = defaultAttributeTypesSelectionStrategy,\n mode,\n onAddAttributes,\n onDeleteAttribute,\n onChangeAttribute\n}) => {\n const attributeTypes = useMemo(() => attributeTypesSelectionStrategy(entityType), [\n attributeTypesSelectionStrategy,\n entityType\n ]);\n return entity ? (\n <AttributesList\n key={entity.uri}\n attrTypes={attributeTypes}\n entity={entity}\n showEmptyEditors={true}\n drawLines={true}\n parentUri={entity.uri}\n mode={mode}\n crosswalks={entity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n ) : null;\n};\n\nEntityCreator.propTypes = {\n entityUri: PropTypes.string, // used for connect\n parentUri: PropTypes.string, // used for validation\n entity: PropTypes.object,\n entityType: PropTypes.object,\n attributeTypesSelectionStrategy: PropTypes.func,\n mode: ModeType,\n onAddAttributes: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func\n};\n\nexport default EntityCreator;\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport EntityCreator from './EntityCreator';\n\nconst mapStateToProps = (state, ownProps) => ({\n entity: ownProps.entityUri && mdmModule.selectors.getModifiedEntity(state, ownProps.entityUri)\n});\n\nconst mapDispatchToProps = {\n onAddAttributes: profile.actions.addAttributes,\n onDeleteAttribute: profile.actions.removeAttribute,\n onChangeAttribute: profile.actions.modifyAttribute\n};\n\nexport {EntityCreator};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityCreator);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n entityContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n entityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.87)',\n cursor: 'pointer',\n lineHeight: '15px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n emptyEntityLabel: {\n height: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.6)',\n lineHeight: '15px',\n marginLeft: '16px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: 'default'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '8px',\n marginRight: '11px'\n },\n entitySecondaryLabel: {\n color: 'rgba(0,0,0,0.6)'\n }\n});\n\nexport const useSingleValueStyles = makeStyles((theme) => ({\n singleValue: {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: '14px',\n paddingTop: '18px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n linkValue: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n textDecoration: 'none',\n pointerEvents: 'all'\n }\n}));\n\nexport const useGroupStyles = makeStyles((theme) => ({\n addLabel: {\n color: theme.palette.primary.main,\n display: 'flex',\n fontWeight: '500',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n groupHeading: {\n fontSize: '13px',\n height: '36px',\n padding: '0 16px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n addIcon: {\n height: '18px',\n width: '18px',\n padding: '0 9px'\n }\n}));\n\nexport const useClearIconStyles = makeStyles({\n clearIcon: {\n cursor: 'pointer',\n height: '20px',\n width: '20px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {useStyles} from './styles';\n\nconst EntityOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useStyles();\n const {uri, entityType, label, secondaryLabel} = data;\n if (uri !== '') {\n return (\n <MenuItem\n className={styles.entityContainer}\n ref={innerRef}\n key={uri}\n onClick={() => selectOption({label, uri, entityType})}\n {...innerProps}\n >\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={`${label}${secondaryLabel ? ', ' + secondaryLabel : ''}`}>\n <span className={styles.entityLabel}>\n {label}\n {secondaryLabel && <span className={styles.entitySecondaryLabel}>, {secondaryLabel}</span>}\n </span>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n } else {\n return (\n <MenuItem className={styles.entityContainer} ref={innerRef} key={uri} {...innerProps} disabled={true}>\n <span className={styles.emptyEntityLabel}>{i18n.text('No results found')}</span>\n </MenuItem>\n );\n }\n};\n\nEntityOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n uri: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n entityType: EntityType.isRequired\n })\n};\n\nexport default EntityOption;\n","import React, {useContext} from 'react';\nimport {always, pipe} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getLabel, isTempUri} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {UrlGeneratorsContext, ViewIdContext} from '../../../../../contexts';\nimport {useSingleValueStyles} from './styles';\n\nconst SingleValue = (props) => {\n const {\n selectProps: {currentEntityType, menuIsOpen, disableLinkClick},\n children,\n data\n } = props;\n\n const styles = useSingleValueStyles();\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const handleOnMouseDown = (event) => {\n event.stopPropagation();\n if (!disableLinkClick) {\n pipe(always({uri: data.entityUri, viewId}), ui.actions.openEntity, dispatch)();\n }\n };\n\n const valueProps = isTempUri(data.entityUri)\n ? {\n className: styles.singleValue,\n component: 'span'\n }\n : {\n className: classnames(styles.singleValue, styles.linkValue),\n onMouseDown: handleOnMouseDown,\n onClick: (e) => e.preventDefault(),\n href: generateEntityUrl({uiPath, uri: data.entityUri}),\n component: 'a'\n };\n\n return (\n !menuIsOpen && (\n <Typography {...valueProps}>\n {isTempUri(data.entityUri)\n ? i18n.text(`New ${currentEntityType.label} will be created`)\n : getLabel(children)}\n </Typography>\n )\n );\n};\n\nSingleValue.propTypes = {\n children: PropTypes.string,\n data: PropTypes.object.isRequired,\n selectProps: PropTypes.object.isRequired\n};\n\nexport default SingleValue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport {useClearIconStyles} from './styles';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nconst ClearIndicator = (props) => {\n const {\n selectProps: {onClear}\n } = props;\n\n const styles = useClearIconStyles();\n\n return (\n <IconButton onClick={onClear}>\n <ClearIcon className={styles.clearIcon} />\n </IconButton>\n );\n};\n\nClearIndicator.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default ClearIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {components} from 'react-select';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useGroupStyles} from './styles';\n\nconst {Group: ComponentsGroup} = components;\n\nconst Group = (props) => {\n const {\n selectProps: {inputValue, onCreate},\n data,\n children\n } = props;\n\n const styles = useGroupStyles();\n\n return (\n <ComponentsGroup {...props}>\n <div className={styles.groupHeading}>\n <span>{data.label}</span>\n {onCreate && (\n <span onClick={() => onCreate(inputValue, data.entityType)} className={styles.addLabel}>\n <AddIcon className={styles.addIcon} />\n {i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${data.label}`)}\n </span>\n )}\n </div>\n {children}\n </ComponentsGroup>\n );\n};\n\nGroup.propTypes = {\n selectProps: PropTypes.object.isRequired,\n data: PropTypes.object,\n children: PropTypes.array\n};\n\nexport default Group;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n creatorWrapper: {\n marginTop: '20px'\n }\n});\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {isEmpty, prop} from 'ramda';\nimport {\n typeAheadSearch,\n getEntityType,\n MetadataType,\n ConnectionEntityType,\n ModeType,\n isTempUri,\n isAvailableEntityType,\n getLabel\n} from '@reltio/mdm-sdk';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\nimport EntityOption from './components/EntityOption';\nimport SingleValue from './components/SingleValue';\nimport ClearIndicator from './components/ClearIndicator';\nimport EntityCreator from '../EntityCreator';\nimport {EmptyStub} from '../../../../core';\nimport Group from './components/Group';\nimport {useStyles} from './styles';\n\nconst buildEntityOptions = (entityTypes, onCreate) => (entities) => {\n const newOptions = entities.map((entity) => ({\n ...entity,\n label: getLabel(entity.label),\n entityType: entityTypes.find(({uri}) => uri === entity.type)\n }));\n\n const addDummyOptionToEmptyOptionList = (options) =>\n isEmpty(options)\n ? [\n {\n label: '',\n uri: '',\n entityType: {}\n }\n ]\n : options;\n\n const filteredEntityTypes = onCreate\n ? entityTypes\n : entityTypes.filter((type) => {\n return newOptions.some((option) => option.type === type.uri);\n });\n\n return filteredEntityTypes.length > 1\n ? filteredEntityTypes.map((type) => {\n return {\n label: type.label,\n entityType: type.uri,\n options: addDummyOptionToEmptyOptionList(newOptions.filter((option) => option.type === type.uri))\n };\n })\n : addDummyOptionToEmptyOptionList(newOptions);\n};\n\nconst EntitySelector = ({\n entity = {},\n entityTypesUris = [],\n mode,\n max,\n onChange,\n onCreate,\n metadata,\n globalSearchRequestOptions,\n attributeTypesSelectionStrategy,\n disableLinkClick = false,\n ...otherProps\n}) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = useState('');\n\n const entityTypes = useMemo(\n () => entityTypesUris.map((type) => getEntityType(metadata, type)).filter(isAvailableEntityType),\n [entityTypesUris, metadata]\n );\n\n const options = {...globalSearchRequestOptions, max};\n\n const handleCreate = onCreate\n ? (value, entityTypeUri) => {\n onCreate(entityTypeUri || entityTypesUris[0], value);\n setInputValue('');\n }\n : undefined;\n\n const handleInputChange = (value) => {\n setInputValue(value);\n };\n\n const handleChange = (value) => {\n if (value !== null) {\n setInputValue('');\n onChange(value);\n }\n };\n\n const handleClear = () => {\n handleChange({});\n };\n\n const groupMode = useMemo(() => entityTypes.length !== 1, [entityTypes]);\n\n const getOptions = (value) =>\n typeAheadSearch(entityTypes, value, options).then(buildEntityOptions(entityTypes, onCreate));\n const currentEntityType = (isEmpty(entity) ? entityTypes[0] : getEntityType(metadata, entity.entityType)) || {};\n const createLabel =\n onCreate && i18n.text(`Create ${inputValue ? `\"${inputValue}\" as ` : ''}new ${currentEntityType.label}`);\n const label = i18n.text(`Select ${entityTypes.length === 1 ? `${entityTypes[0].label} ` : ''}profile`);\n const isTempEntity = !isEmpty(entity) && isTempUri(entity.entityUri);\n const groupComponent = groupMode ? {Group, GroupHeading: EmptyStub} : {};\n const clearComponent = isTempEntity ? {ClearIndicator} : {};\n\n const {TextFieldProps, ...dropDownSelectorProps} = otherProps;\n\n const textFieldProps = useMemo(\n () => ({\n ...(TextFieldProps || {}),\n ['data-reltio-id']: 'reltio-entity-selector'\n }),\n [TextFieldProps]\n );\n return (\n <>\n <DropDownSelector\n value={!isEmpty(entity) ? entity : undefined}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n getOptions={getOptions}\n getOptionLabel={prop('entityLabel')}\n onChange={handleChange}\n onCreate={handleCreate}\n onClear={handleClear}\n label={label}\n createLabel={createLabel}\n components={{\n Option: EntityOption,\n SingleValue: SingleValue,\n ...groupComponent,\n ...clearComponent\n }}\n currentEntityType={currentEntityType}\n isClearable={true}\n disableLinkClick={disableLinkClick}\n TextFieldProps={textFieldProps}\n {...dropDownSelectorProps}\n />\n {isTempEntity && (\n <div className={styles.creatorWrapper}>\n <EntityCreator\n mode={mode}\n attributeTypesSelectionStrategy={attributeTypesSelectionStrategy}\n entityType={currentEntityType}\n entityUri={entity.entityUri}\n />\n </div>\n )}\n </>\n );\n};\n\nEntitySelector.propTypes = {\n entity: ConnectionEntityType,\n entityTypesUris: PropTypes.arrayOf(PropTypes.string),\n max: PropTypes.number,\n mode: ModeType,\n dispatch: PropTypes.func,\n metadata: MetadataType,\n onChange: PropTypes.func.isRequired,\n onCreate: PropTypes.func,\n attributeTypesSelectionStrategy: PropTypes.func,\n globalSearchRequestOptions: PropTypes.object,\n disableLinkClick: PropTypes.bool\n};\n\nexport default EntitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '328px'\n },\n paper: {\n width: '100%',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n inputRoot: {\n flex: 1\n },\n input: {\n padding: '0 12px',\n fontSize: '14px',\n '&:placeholder': {\n color: theme.palette.text.secondary\n }\n },\n errorMessage: {\n marginTop: '8px',\n fontSize: '12px',\n color: theme.palette.error.main\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Box as Box} from '@material-ui/core';\nimport {Paper as Paper} from '@material-ui/core';\nimport {InputBase as InputBase} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n onSend: (url: string) => void;\n};\n\nconst isEmptyField = (value: string) => value.trim().length === 0;\n\nexport const ImageByUrlField = ({onSend}: Props) => {\n const styles = useStyles();\n\n const [value, setValue] = useState('');\n const [error, setError] = useState<string>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n const regExp = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/);\n const isCorrectUrl = regExp.test(newValue);\n\n setValue(newValue);\n\n if (!isCorrectUrl && !isEmptyField(newValue)) {\n setError(i18n.text('URL is not correct'));\n } else {\n setError(null);\n }\n };\n\n const handleSend = () => {\n onSend(value);\n setValue('');\n setError(null);\n };\n\n return (\n <Box className={styles.root}>\n <Paper className={styles.paper}>\n <InputBase\n value={value}\n onChange={handleChange}\n classes={{root: styles.inputRoot, input: styles.input}}\n placeholder={i18n.text('Paste an image URL here')}\n />\n <Button\n disabled={Boolean(error) || isEmptyField(value)}\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleSend}\n >\n {i18n.text('Send')}\n </Button>\n </Paper>\n {error && <Typography className={styles.errorMessage}>{error}</Typography>}\n </Box>\n );\n};\n","export const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/tiff', 'image/gif', 'image/bmp'];\nexport const MAX_IMAGE_SIZE = 20;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {IMAGE_TYPES} from '../constants';\n\ntype Props = {\n className?: string;\n onAppendFile?: (file: File) => void;\n};\n\nexport const SelectImageButton = ({className, onAppendFile}: Props) => {\n const handleInput = (e: React.FormEvent<HTMLInputElement>) => {\n if (onAppendFile) {\n onAppendFile(e.currentTarget.files[0]);\n }\n };\n\n return (\n <>\n <input\n onInput={handleInput}\n style={{display: 'none'}}\n accept={IMAGE_TYPES.join(',')}\n id=\"upload-image-button\"\n type=\"file\"\n />\n <label htmlFor=\"upload-image-button\">\n <Button className={className} variant=\"contained\" color=\"primary\" component=\"span\">\n {i18n.text('Select image')}\n </Button>\n </label>\n </>\n );\n};\n","import React from 'react';\n\nconst SvgUploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__c\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__d\">\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#FFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"67.572%\" y1=\"54.952%\" x2=\"15.212%\" y2=\"13.907%\" id=\"UploadIcon_svg__e\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"UploadIcon_svg__f\">\n <stop stopColor=\"#B8EDFF\" offset=\"0%\" />\n <stop stopColor=\"#53ACDE\" offset=\"100%\" />\n </linearGradient>\n <circle id=\"UploadIcon_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"UploadIcon_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#UploadIcon_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#UploadIcon_svg__a\" />\n <g mask=\"url(#UploadIcon_svg__b)\">\n <g strokeWidth={1} fill=\"none\" transform=\"translate(-1 9)\">\n <path\n d=\"M0 107.268c0 35.579 28.703 64.409 64.173 64.409h139.021c29.578 0 53.497-24.035 53.497-53.635 0-28.356-21.935-51.562-49.705-53.515C199.577 27.705 167.2 0 128.346 0 97.425 0 70.59 17.582 57.171 43.274 25.027 46.767 0 74.117 0 107.268z\"\n fill=\"#FFF\"\n opacity={0.3}\n />\n <ellipse\n fill=\"url(#UploadIcon_svg__c)\"\n opacity={0.4}\n cx={64.553}\n cy={107.664}\n rx={61.43}\n ry={62.336}\n />\n <path\n d=\"M127.979 8.91c38.773 0 70.206 31.895 70.206 71.24 0 39.346-31.433 71.241-70.206 71.241-6.067 0-11.954-.78-17.57-2.249 9.688-11.019 15.574-25.551 15.574-41.478 0-33.7-26.352-61.153-59.286-62.299C78.714 23.611 101.654 8.91 127.98 8.91z\"\n fill=\"url(#UploadIcon_svg__d)\"\n opacity={0.4}\n />\n </g>\n <path\n fill=\"url(#UploadIcon_svg__e)\"\n opacity={0.12}\n d=\"M82.093 128.474l38.374 37.966-10.666 18.958 72.714 71.94 63.578-57.537v-6.11l-71.107-70.352H97.22z\"\n transform=\"translate(-1 9)\"\n />\n <path\n fill=\"url(#UploadIcon_svg__f)\"\n d=\"M151.004 128.29v57.591h-40.836V128.29H81l49.5-49.409L180 128.29z\"\n transform=\"translate(-1 9)\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgUploadIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n padding: '36px 0 29px'\n },\n isActive: {\n backgroundColor: 'rgba(0,114,206,0.12)'\n },\n icon: {\n width: '190px',\n height: '190px',\n marginBottom: '24px'\n },\n title: {\n marginBottom: '8px',\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px'\n },\n description: {\n marginBottom: '24px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useDrop, DropTargetMonitor} from 'react-dnd';\nimport {NativeTypes} from 'react-dnd-html5-backend';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectImageButton} from '../SelectImageButton/SelectImageButton';\nimport UploadIcon from '../../../icons/UploadIcon';\nimport {MAX_IMAGE_SIZE} from '../constants';\nimport {useStyles} from './styles';\n\ntype Props = {\n onAppendFile: (file: File) => void;\n className?: string;\n};\n\nexport const TargetBox = ({onAppendFile, className}: Props) => {\n const styles = useStyles();\n\n const [{canDrop, isOver}, drop] = useDrop({\n accept: [NativeTypes.FILE],\n drop: (item) => {\n if (item) {\n // TODO remove after update react-dnd\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onAppendFile(item.files[0]);\n }\n },\n collect: (monitor: DropTargetMonitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n })\n });\n\n const isActive = canDrop && isOver;\n\n return (\n <div ref={drop} className={classnames(styles.root, {[styles.isActive]: isActive}, className)}>\n <UploadIcon className={styles.icon} />\n <Typography className={styles.title}>{i18n.text('Drag an image here')}</Typography>\n <Typography className={styles.description}>\n {i18n.text(\n 'Acceptable image types would include JPG, PNG, TIFF, GIF, BMP. Maximum image size: ${MAX_IMAGE_SIZE}Mb',\n {\n MAX_IMAGE_SIZE\n }\n )}\n </Typography>\n <SelectImageButton onAppendFile={onAppendFile} />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 30px',\n boxSizing: 'border-box'\n },\n border: {\n borderBottom: `1px solid ${theme.palette.text.primary}`,\n flex: 1,\n opacity: 0.12\n },\n text: {\n padding: '0 10px',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n children: string;\n className?: string;\n};\n\nexport const DividerWithText = ({children, className}: Props) => {\n const styles = useStyles();\n\n return (\n <Box className={classnames(styles.root, className)}>\n <Box className={styles.border} />\n <Typography className={styles.text}>{children}</Typography>\n <Box className={styles.border} />\n </Box>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n closeIcon: {\n color: '#fff'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Snackbar as Snackbar} from '@material-ui/core';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n error: string | null;\n onClose?: () => void;\n};\n\nexport const ErrorSnackbar = ({error, onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <Snackbar\n open={Boolean(error)}\n onClose={onClose}\n message={error}\n action={\n <SmallIconButtonWithTooltip\n className={styles.closeIcon}\n tooltipTitle={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n />\n }\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {},\n dialogPaper: {\n position: 'relative',\n maxWidth: '480px'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px',\n padding: '16px'\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0 8px 49px',\n textAlign: 'center'\n },\n targetBox: {\n marginBottom: '8px'\n },\n divider: {\n marginBottom: '28px'\n }\n}));\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {uploadImage as uploadImageRequest, ImageHostingItem, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport LinearLoadIndicator from '../LinearLoadIndicator/LinearLoadIndicator';\nimport {ImageByUrlField} from './ImageByUrlField/ImageByUrlField';\nimport {TargetBox} from './TargetBox/TargetBox';\nimport {DividerWithText} from './DividerWithText/DividerWithText';\nimport {ErrorSnackbar} from './ErrorSnackbar/ErrorSnackbar';\nimport {IMAGE_TYPES, MAX_IMAGE_SIZE} from './constants';\nimport {useStyles} from './styles';\nimport {DragAndDrop} from '../DragAndDrop/DragAndDrop';\n\ntype Props = {\n open: boolean;\n onUpload: (image: ImageHostingItem) => void;\n onClose?: () => void;\n};\n\nexport const UploadImageDialog = ({open, onClose, onUpload}: Props) => {\n const styles = useStyles();\n\n const imageServicePath = useSelector(mdm.selectors.getImageServicePath) as string;\n const environment = useSelector(mdm.selectors.getEnvironment) as string;\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string>(null);\n\n const uploadImage = (image: File | string) => {\n setLoading(true);\n uploadImageRequest({image, imageServicePath, environment, tenant})\n .then((res) => {\n onUpload(res);\n onClose();\n })\n .catch((err) => {\n setError(getRequestErrorMessage(err, i18n.text('Something went wrong')));\n })\n .finally(() => setLoading(false));\n };\n\n const handleAppendImage = (image: File) => {\n const size = Number((image.size / 1024 / 1024).toFixed(2));\n const isCorrectType = IMAGE_TYPES.includes(image.type);\n\n if (size > MAX_IMAGE_SIZE) {\n setError(i18n.text('File size exceeds configured max file size.'));\n } else if (!isCorrectType) {\n setError(i18n.text('File format is not supported.'));\n } else {\n uploadImage(image);\n }\n };\n\n const handleSendImage = (url: string) => {\n uploadImage(url);\n };\n\n return (\n <DragAndDrop>\n <Dialog open={open} onClose={onClose} classes={{paper: styles.dialogPaper}}>\n <Typography className={styles.title}>{i18n.text('Add new image')}</Typography>\n <Box className={styles.body}>\n <TargetBox className={styles.targetBox} onAppendFile={handleAppendImage} />\n <DividerWithText className={styles.divider}>{i18n.text('or')}</DividerWithText>\n <ImageByUrlField onSend={handleSendImage} />\n </Box>\n {loading && <LinearLoadIndicator />}\n <ErrorSnackbar error={error} onClose={() => setError(null)} />\n </Dialog>\n </DragAndDrop>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n marginBottom: '10px'\n },\n image: ({imageMargin}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n uploadContainer: ({imageMargin, imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n backgroundColor: 'white',\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n border: '1px dashed #0072CE',\n boxSizing: 'border-box',\n marginRight: imageMargin,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n };\n },\n uploadButton: {\n width: '50px',\n height: '50px'\n },\n uploadIcon: {\n fontSize: '36px'\n }\n}));\n","import ImageAttributesLine from './ImageAttributesLine';\n\nexport default ImageAttributesLine;\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n generateUri,\n getImageAttributeOvThumbnailUrl,\n getImageAttributeOvUrl,\n ImageAttributeValue,\n ImageHostingItem,\n Paging,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActionsOverlay';\nimport {SmallIconButton} from '../../../SmallIconButton';\nimport {UploadImageDialog} from '../../../UploadImageDialog/UploadImageDialog';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {ImageRenderProps, RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n onDeleteAttribute: (param: AttributeItem) => void;\n onChangeAttribute: (param: AttributeItem) => void;\n parentUri: string;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n showNonOv?: boolean;\n};\n\nconst ImageAttributesLine = ({\n attributeType = {} as AttributeType,\n attributeValues = [],\n onDeleteAttribute,\n onChangeAttribute,\n requestNextPageOfAttributeValues,\n parentUri,\n paging,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const defaultProfilePic = useSelector((state) =>\n mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri)\n );\n const dispatch = useDispatch();\n const [isVisibleUploadDialog, setIsVisibleUploadDialog] = useState(false);\n\n const toggleVisibilityUploadDialog = useCallback(() => {\n setIsVisibleUploadDialog((visible) => !visible);\n }, []);\n\n const handleAddAttributes = useCallback(\n (image: ImageHostingItem) => {\n const uri = generateUri(parentUri, attributeType.name);\n const attributeValue: ImageAttributeValue['value'] = {};\n for (const key in image) {\n const attribute = (attributeType.attributes || []).find(({name}) => name === key);\n if (attribute) {\n attributeValue[key] = [\n {\n uri: generateUri(uri, attribute.name),\n ov: true,\n value: image[key],\n type: attribute.uri\n }\n ];\n }\n }\n onChangeAttribute({attributeType, uri, value: attributeValue});\n },\n [onChangeAttribute, parentUri, attributeType]\n );\n\n const handleDeleteAttribute = useCallback(\n (param: AttributeItem) => {\n onDeleteAttribute(param);\n if (defaultProfilePic === param.uri) {\n const newDefaultPic = attributeValues[0]?.uri === param.uri ? attributeValues[1] : attributeValues[0];\n dispatch(\n profile.modifiedEntities.actions.setDefaultProfilePic({\n entityUri: entity.uri,\n value: newDefaultPic || ({} as ImageAttributeValue)\n })\n );\n }\n },\n [onDeleteAttribute, entity, defaultProfilePic, attributeValues]\n );\n\n const renderImageActionsOverlay = (methods: ImageRenderProps, attribute: ImageAttributeValue) => {\n const {onOpenImageGalleryDialog, onDownload, onShareLink, onSetAsDefault} = methods;\n const imageUrl = getImageAttributeOvUrl(attribute);\n const {uri} = attribute;\n\n return (\n <ImageActionsOverlay\n id={uri}\n onShareLink={() => onShareLink(imageUrl)}\n onSetAsDefault={() => onSetAsDefault(attribute)}\n onDelete={() => handleDeleteAttribute({uri, attributeType})}\n onDownload={() => onDownload([imageUrl])}\n onClick={() => onOpenImageGalleryDialog(uri)}\n />\n );\n };\n\n const renderImage: RenderImage = (methods: ImageRenderProps) => {\n const renderImage = (attribute: ImageAttributeValue = {} as ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const {onOpenImageGalleryDialog} = methods;\n\n return (\n <div className={styles.image} key={uri}>\n <Image\n src={src}\n overlay={renderImageActionsOverlay(methods, attribute)}\n onClick={() => onOpenImageGalleryDialog(uri)}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n data-reltio-id=\"reltio-attribute-value\"\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <div className={styles.root}>\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n overlay\n countFixedItems={1}\n onUpload={toggleVisibilityUploadDialog}\n onDeleteAttribute={handleDeleteAttribute}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n >\n <div className={styles.uploadContainer} onClick={toggleVisibilityUploadDialog}>\n <SmallIconButton\n className={styles.uploadButton}\n iconClassName={styles.uploadIcon}\n icon={CloudUploadIcon}\n />\n </div>\n </ImageAttributesLineCommon>\n <UploadImageDialog\n open={isVisibleUploadDialog}\n onUpload={handleAddAttributes}\n onClose={toggleVisibilityUploadDialog}\n />\n </div>\n );\n};\n\nexport default ImageAttributesLine;\n","import {AttributeType} from '@reltio/mdm-sdk';\nimport {curry, filter, map, pipe, sort} from 'ramda';\nimport {GroupedItem} from './useMoreAttributesItems';\n\nconst filterItems = curry((filterText: string, items: AttributeType[]): AttributeType[] => {\n return filter((item: AttributeType) => (item.label || item.name).toLowerCase().includes(filterText.toLowerCase()))(\n items\n );\n});\n\ntype Props = {\n attrTypes: AttributeType[];\n filter?: string;\n sortingFn: (item1: AttributeType, item2: AttributeType) => number;\n};\n\nexport const preparedGroupedItems = ({attrTypes, filter = '', sortingFn}: Props): GroupedItem[] =>\n pipe(\n filterItems(filter),\n sort(sortingFn),\n map((attrType: AttributeType) => ({\n item: {\n id: attrType.uri,\n label: attrType.label || attrType.name,\n attrType\n }\n }))\n )(attrTypes);\n","import {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {AttributeType, SortingStrategy} from '@reltio/mdm-sdk';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {preparedGroupedItems} from './helpers';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\n\nenum GROUP_NAMES {\n parent = 'parent',\n attributes = 'attributes'\n}\n\ntype Props = {\n data: AttributeType[];\n parent?: AttributeType;\n filter?: string;\n};\n\ntype Item = {\n id: string;\n label: string;\n attrType?: AttributeType;\n};\n\nexport type GroupedItem = {\n item: Item;\n items?: GroupedItem[];\n};\n\nexport const useMoreAttributesItems = ({data, parent, filter}: Props) => {\n const hasGroups = Boolean(parent);\n const strategy = useSelector(mdmModule.selectors.getAttributesSortingStrategy) as SortingStrategy | null;\n\n const sortingFn = useMemo(() => {\n switch (strategy) {\n case SortingStrategy.ASC_BY_NAME:\n return (item1, item2) => item1?.label?.localeCompare(item2?.label);\n default:\n return (_item1, _item2) => 0;\n }\n }, [strategy]);\n\n const preparedParentGroupItem = useMemo(\n () => (hasGroups ? preparedGroupedItems({attrTypes: [parent], filter, sortingFn}) : []),\n [hasGroups, parent, filter, sortingFn]\n );\n const parentGroup: GroupedItem[] = useMemo(\n () =>\n hasGroups && preparedParentGroupItem?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.parent,\n label: i18n.text('Parent')\n },\n items: preparedParentGroupItem\n }\n ]\n : [],\n [hasGroups, preparedParentGroupItem]\n );\n\n const preparedAttributesGroupItems = useMemo(\n () =>\n preparedGroupedItems({\n attrTypes: data,\n filter,\n sortingFn\n }),\n [data, filter, sortingFn]\n );\n\n const attributesGroup = useMemo(\n () =>\n hasGroups && preparedAttributesGroupItems?.length\n ? [\n {\n item: {\n id: GROUP_NAMES.attributes,\n label: i18n.text('Attributes')\n },\n items: preparedAttributesGroupItems\n }\n ]\n : preparedAttributesGroupItems,\n [hasGroups, preparedAttributesGroupItems]\n );\n\n const items = useMemo(\n () => flattenGroupedItemsData((parentGroup || []).concat(attributesGroup)),\n [parentGroup, attributesGroup]\n );\n\n const parentGroupLength = parentGroup.length;\n const attributesGroupLength = attributesGroup.length;\n return {items, hasGroups, parentGroupLength, attributesGroupLength};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n moreAttributes: {\n display: 'flex',\n paddingBottom: '6px',\n '&$dense': {\n padding: 0\n }\n },\n dense: {},\n popupContainer: {},\n moreAttributesPopup: {\n '&$popupContainer': {}\n },\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n subHeader: {\n backgroundColor: 'rgb(245, 245, 245)',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n },\n noResultsCaptionContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport {Button as Button} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {always, any, append, ifElse, not, pipe, pluck, propEq, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\n\nimport AddIcon from '@material-ui/icons/Add';\nimport Highlighter from '../../../Highlighter/Highlighter';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport {useMoreAttributesItems} from './useMoreAttributesItems';\n\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nconst LIST_CONTAINER_WIDTH = 320;\nconst MAX_LIST_CONTAINER_HEIGHT = 255;\nconst MIN_CONTAINER_HEIGHT = 140;\nconst CONTAINER_HEADER_HEIGHT = 112;\n\ntype Props = {\n label: string;\n popupTitle?: string;\n data: AttributeType[];\n parent?: AttributeType;\n dense?: boolean;\n onApply: (attributeTypes: AttributeType[]) => void;\n};\nconst MoreAttributesButton = ({label, popupTitle = label, data, parent, dense, onApply}: Props) => {\n const styles = useStyles();\n const inputRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const togglePopupOpen = () => setIsOpen(!isOpen);\n const closePopup = () => setIsOpen(false);\n\n const [filter, setFilter] = useState('');\n const clearFilter = () => setFilter('');\n\n const [selectedItems, setSelectedItems] = useState([]);\n const clearSelectedItems = () => setSelectedItems([]);\n\n const {items, hasGroups, parentGroupLength, attributesGroupLength} = useMoreAttributesItems({data, parent, filter});\n\n const addSelectedAttributes = () => {\n if (selectedItems.length > 0) {\n onApply(pluck('attrType', selectedItems));\n }\n };\n\n const handleListItemClick = useCallback(\n (item, checked) => {\n setSelectedItems(ifElse(always(checked), append(item), reject(propEq('id', item.id)))(selectedItems));\n },\n [selectedItems]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n const handleSearchOnEnter = useCallback(\n ({item}) => {\n handleListItemClick(item, not(any(propEq('id', item.id))(selectedItems)));\n },\n [handleListItemClick, selectedItems]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems\n });\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const groupsCount = hasGroups ? (parentGroupLength ? 1 : 0) + (attributesGroupLength ? 1 : 0) : 0;\n const itemsCount = items.length - groupsCount;\n\n const listHeight = Math.min(\n MAX_LIST_CONTAINER_HEIGHT,\n ITEM_HEIGHT * itemsCount + ITEM_GROUP_TITLE_HEIGHT * groupsCount\n );\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n const listItemRenderer = useCallback(\n (style, {item, level = 0}, index) => {\n const isChecked = any(propEq('id', item.id))(selectedItems);\n const isFocused = focusIndexRef.current === index;\n\n return (\n <AttributeListItem\n key={item.uri}\n onClick={handleListItemClick}\n checked={isChecked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={filter} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n isRequired={!!item.attrType?.required}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [filter, handleListItemClick, selectedItems]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.label}\n </ListItem>\n ),\n []\n );\n\n return (\n <div className={classnames(styles.moreAttributes, {[styles.dense]: dense})}>\n <Button color=\"primary\" onClick={togglePopupOpen} ref={inputRef} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{label}</div>\n </Button>\n <SelectionPopup\n open={isOpen}\n className={classnames(styles.moreAttributesPopup, styles.popupContainer)}\n anchorEl={inputRef.current}\n onClose={pipe(addSelectedAttributes, closePopup, clearFilter, clearSelectedItems)}\n onSearch={setFilter}\n containerHeight={containerHeight}\n title={popupTitle}\n containerWidth={LIST_CONTAINER_WIDTH}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={listItemRenderer}\n renderGroupTitle={renderGroupTitle}\n items={items}\n height={listHeight}\n focusIndex={focusIndex}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n </div>\n );\n};\n\nexport default MoreAttributesButton;\n","import React, {memo} from 'react';\nimport {evaluateDeepEntityLabel, getLabel, NestedAttributeType} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\n\nconst NestedAttribute = (props) => {\n const {attributeValue, attributeType} = props;\n const label = evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <ComplexAttribute\n label={getLabel(label)}\n attributeTypesList={attributeType.attributes || attributeType.analyticsAttributes}\n {...props}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n item: {\n marginBottom: '20px'\n },\n dense: {\n marginBottom: 0\n }\n});\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {identity, pipe, isEmpty} from 'ramda';\nimport {\n evaluateDeepEntityLabel,\n ReferenceAttributeType,\n referencedEntityAttributeTypesSelectionStrategy,\n getEntityType,\n getReferencedEntityFromAttrValue,\n getReferencedRelationFromAttrValue,\n getReferencedEntityUri,\n getReferencedEntityTypeUri,\n getReferencedEntityTypeUriFromAttrType,\n getReferencedRelationAttrTypesUris,\n findAttributeTypeByUri,\n getCreatableAttributeTypes,\n createTemporaryEntity,\n convertReferencedEntityForAttrValue,\n createReferencedRelationForAttrValue,\n addReferencedRelationCrosswalks,\n getReferencedEntityUriFromAttrValue,\n checkCanEditAttribute,\n checkMetadataForCreate,\n isReltioCrosswalk,\n getErrorMessage,\n EntityType,\n MetadataType,\n getErrorId,\n getReferencedEntityActiveError,\n isTempUri,\n getLabel,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\n\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport EntitySelector from '../EntitySelector/EntitySelector';\nimport {ErrorWrapper} from '../../../index';\nimport {withContext} from '../../../../HOCs';\nimport {ScrollToErrorContext} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttribute = (props) => {\n const styles = useStyles();\n const {\n modifiedEntity,\n metadata,\n globalSearchRequestOptions,\n onDeleteModifiedEntity,\n onUpdateModifiedEntity,\n onDeactivateError,\n highlightedError,\n ...ownProps\n } = props;\n const {attributeValue, attributeType, mode, crosswalks, errors, onChangeAttribute} = ownProps;\n const initialAttributeValue = useRef(attributeValue);\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n const referencedEntity = getReferencedEntityFromAttrValue(attributeValue);\n const referencedRelation = getReferencedRelationFromAttrValue(attributeValue);\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n const label = modifiedEntity\n ? evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern)\n : attributeValue.label;\n const entityTypesUris = useMemo(() => [referencedEntityTypeUri], [referencedEntityTypeUri]);\n\n const allCrosswalks = useMemo(\n () => addReferencedRelationCrosswalks(crosswalks, referencedRelation),\n [crosswalks, referencedRelation]\n );\n\n const referencedEntityMissedError = useMemo(\n () => getReferencedEntityActiveError(attributeValue, errors),\n [attributeValue, errors]\n );\n\n const selectedEntity = useMemo(\n () =>\n referencedEntity && {\n entityUri: getReferencedEntityUri(referencedEntity),\n entityType: getReferencedEntityTypeUri(referencedEntity),\n entityLabel: attributeValue.label\n },\n [referencedEntity, attributeValue.label]\n );\n\n const editableAttrTypes = useMemo(\n () =>\n getReferencedRelationAttrTypesUris(attributeType)\n .map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri))\n .filter(identity),\n [attributeType, metadata]\n );\n\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n\n const onChangeEntity = useCallback(\n (entity) => {\n if (modifiedEntity) {\n onDeleteModifiedEntity(modifiedEntity.uri);\n }\n const initialAttrValue = initialAttributeValue.current;\n const isInitialEntity =\n !isEmpty(entity) && entity.uri === getReferencedEntityUriFromAttrValue(initialAttrValue);\n const modifiedValue = {\n ...attributeValue,\n label: entity.label,\n refEntity: isInitialEntity ? initialAttrValue.refEntity : convertReferencedEntityForAttrValue(entity),\n refRelation: isInitialEntity\n ? initialAttrValue.refRelation\n : createReferencedRelationForAttrValue(attributeValue)\n };\n onChangeAttribute({value: modifiedValue, attributeType, uri: attributeValue.uri});\n if (referencedEntityMissedError) {\n onDeactivateError(getErrorId(referencedEntityMissedError));\n }\n },\n [\n attributeValue,\n attributeType,\n modifiedEntity,\n onChangeAttribute,\n onDeleteModifiedEntity,\n onDeactivateError,\n referencedEntityMissedError\n ]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(referencedEntityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onChangeEntity(newEntity);\n onUpdateModifiedEntity(newEntity);\n },\n [\n newEntityAttrTypesSelectionStrategy,\n mode,\n referencedEntityType,\n metadata,\n onChangeEntity,\n onUpdateModifiedEntity\n ]\n );\n\n const canChangeReferencedEntity = useMemo(\n () =>\n checkCanEditAttribute({\n attributeType,\n attributeValue,\n mode,\n isReltioCrosswalk: isReltioCrosswalk(crosswalks, attributeValue)\n }),\n [attributeType, attributeValue, mode, crosswalks]\n );\n const canCreateReferencedEntity = useMemo(\n () => checkMetadataForCreate(mode, referencedEntityType),\n [mode, referencedEntityType]\n );\n\n const errorMessage = getErrorMessage(referencedEntityMissedError);\n\n return (\n <ComplexAttribute\n {...ownProps}\n label={getLabel(label)}\n attributeTypesList={editableAttrTypes}\n crosswalks={allCrosswalks}\n metadata={metadata}\n >\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage}>\n <EntitySelector\n className={classnames(styles.item, {\n [styles.dense]: errorMessage || (selectedEntity && isTempUri(selectedEntity.entityUri))\n })}\n entity={selectedEntity || {}}\n entityTypesUris={entityTypesUris}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n isDisabled={!canChangeReferencedEntity}\n onChange={onChangeEntity}\n onCreate={canCreateReferencedEntity ? onCreateEntity : undefined}\n metadata={metadata}\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n </ComplexAttribute>\n );\n};\n\nReferenceAttribute.propTypes = {\n ...ReferenceAttributeType,\n modifiedEntity: EntityType,\n metadata: MetadataType,\n globalSearchRequestOptions: PropTypes.object,\n onDeleteModifiedEntity: PropTypes.func,\n onUpdateModifiedEntity: PropTypes.func,\n onDeactivateError: PropTypes.func,\n highlightedError: PropTypes.object\n};\n\nexport default withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue, attributeType}) => {\n const {error} = contextValue || {};\n const isHighlighted = isAttributeTypeError(error, attributeValue.uri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n ReferenceAttribute\n);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport {isTempUri, getReferencedEntityUriFromAttrValue} from '@reltio/mdm-sdk';\n\nconst mapStateToProps = (state, ownProps) => {\n const entityUri = getReferencedEntityUriFromAttrValue(ownProps.attributeValue);\n return {\n modifiedEntity: isTempUri(entityUri) ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,\n metadata: mdmModule.selectors.getMetadata(state),\n globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n };\n};\n\nconst mapDispatchToProps = {\n onDeleteModifiedEntity: profile.modifiedEntities.actions.entityDeleted,\n onUpdateModifiedEntity: profile.modifiedEntities.actions.entityCreated,\n onDeactivateError: profile.errors.actions.errorDeactivated\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReferenceAttribute);\n","import {defaultTo, isNil, map, path, pipe, prepend, reject, uniq} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n DependentLookupsParentForApi,\n DependentLookupsStructureNode,\n filterRelatedParentValuesForDependentLookupValueUri,\n getAttributeValuePath,\n getBaseUri\n} from '@reltio/mdm-sdk';\n\nimport {ExtendedParentValue} from '../types';\n\nexport const getParents = (state, valueUri: string, node: DependentLookupsStructureNode) => {\n const parentNodesValues: ExtendedParentValue[] = node.parents.flatMap((type) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);\n return parentNode.values.map((value) => ({\n ...value,\n type,\n dependentLookupCode: parentNode.attrType.dependentLookupCode\n }));\n });\n const modifiedEntities = mdmModule.selectors.getModifiedEntities(state);\n const entityUri = mdmModule.selectors.getEntityUri(state);\n const connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);\n const metadata = mdmModule.selectors.getMetadata(state);\n const ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri<ExtendedParentValue>({\n parentValues: parentNodesValues,\n valueUri,\n entityUri,\n modifiedEntities,\n connections\n });\n const possibleParentBaseTypeUris: string[] = pipe(\n getAttributeValuePath,\n defaultTo([]),\n map(pipe(path(['valueType', 'uri']), getBaseUri)),\n prepend(modifiedEntities[entityUri]?.type),\n reject(isNil),\n uniq\n )(\n {\n entityUri,\n entitiesMap: modifiedEntities,\n connections,\n metadata\n },\n valueUri\n );\n const neededParentsAttributeTypes = node.parents\n .filter((typeUri) => possibleParentBaseTypeUris.some(areOneHierarchyUris(typeUri)))\n .map((typeUri) => {\n const parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, typeUri);\n return parentNode.attrType;\n });\n const missedParentsAttributeTypes = neededParentsAttributeTypes.filter(\n (attrType) => !ownParentNodesValues.some(({type, value}) => value && type === attrType.uri)\n );\n const parents = Object.values<DependentLookupsParentForApi>(\n ownParentNodesValues.reduce(\n (typesMap, parent) => ({\n ...typesMap,\n [parent.dependentLookupCode]: {\n type: parent.dependentLookupCode,\n codeValues: uniq([parent.value, ...(typesMap[parent.dependentLookupCode]?.codeValues || [])])\n .filter(Boolean)\n .sort()\n }\n }),\n {}\n )\n );\n return {parents, missedParentsAttributeTypes};\n};\n","import {equals} from 'ramda';\nimport {DependentLookupEditorContext} from '../types';\n\nconst DLEditorContextCache: {\n [valueUri: string]: DependentLookupEditorContext;\n} = {};\n\nexport const fromCache = (valueUri, context) => {\n const cachedContext = DLEditorContextCache[valueUri];\n if (equals(context, cachedContext)) {\n return cachedContext;\n } else {\n if (equals(cachedContext?.parents, context.parents)) {\n context.parents = cachedContext.parents;\n }\n DLEditorContextCache[valueUri] = context;\n return context;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst marginBottom = 10;\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n width: '100%'\n },\n errorWrapper: {\n alignSelf: 'stretch'\n },\n editor: {\n display: 'flex',\n flex: 1,\n alignItems: 'flex-start',\n marginBottom: `${marginBottom}px`,\n position: 'relative'\n },\n 'editor-value': {\n flex: '1 1 auto'\n },\n 'editor-read-only-value': {\n marginLeft: '12px',\n display: 'flex',\n alignItems: 'center'\n },\n 'editor-actions': {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '8px'\n },\n addButton: {\n marginRight: '-8px'\n },\n button: {\n color: theme.palette.text.secondary\n },\n placeholder: {\n height: `${40 + marginBottom}px`\n },\n deleted: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {pipe} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {\n AttributeErrorType,\n AttributeTypeType,\n attributeUriToSearchUri,\n checkCanCreateAttribute,\n checkCanDeleteAttribute,\n checkCanEditAttribute,\n ErrorType,\n getAttributeValue,\n getAttrDataTypeDefinition,\n getErrorId,\n getErrorMessage,\n getErrorType,\n isDependentLookupAttrType,\n isEditableMode as checkIsEditableMode,\n ModeType,\n SimpleAttributeValueType\n} from '@reltio/mdm-sdk';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DataTypeValueEditor from '../../../editors/DataTypeValueEditor/DataTypeValueEditor';\nimport ErrorWrapper from '../../../ErrorWrapper/ErrorWrapper';\nimport SmallIconButton from '../../../SmallIconButton/SmallIconButton';\nimport {attributeValueToEditorValue, prepareChangeData} from './utils';\nimport withAsyncMount from '../../../../HOCs/withAsyncMount/withAsyncMount';\nimport {getDependentLookupEditorContext} from './selectors/getDependentLookupEditorContext';\nimport {withContext} from '../../../../HOCs';\nimport {\n ScrollToErrorContext,\n DependentLookupAutopopulationContext,\n ProfilePerspectiveViewContext\n} from '../../../../contexts';\nimport {useScrollToAttributeError} from '../../../../hooks';\nimport {useAutopopulationContextValue} from './useAutopopulationContextValue';\n\nimport {useStyles} from './styles';\n\nconst AsyncMountPlaceholder = () => {\n const styles = useStyles();\n return <div className={styles.placeholder} />;\n};\n\nconst SimpleAttributeEditor = ({\n className,\n attributeValue,\n attributeType,\n isReltioCrosswalk,\n ownError,\n mode,\n onAddOneMore,\n onDeleteAttribute,\n onChangeAttribute,\n onDeactivateError,\n additionalControlsRenderer,\n state,\n highlightedError,\n ...otherProps\n}) => {\n const styles = useStyles();\n const deleted = state === 'deleted';\n const edited = state === 'edited';\n const isEditableMode = checkIsEditableMode(mode);\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n const canEdit = checkCanEditAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const canDelete = checkCanDeleteAttribute({attributeType, attributeValue, mode, isReltioCrosswalk});\n const showToEdit = canEdit && isEditableMode;\n const errorMessage = getErrorMessage(ownError);\n const dependentLookupEditorContext = useSelector((state) =>\n isDependentLookupAttrType(attributeType)\n ? getDependentLookupEditorContext(state, attributeValue, attributeType?.uri)\n : null\n );\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const dataTypeDefinition = useMemo(() => getAttrDataTypeDefinition(attributeType), [attributeType]);\n const value = useMemo(\n () => attributeValueToEditorValue(attributeValue, dataTypeDefinition),\n [attributeValue, dataTypeDefinition]\n );\n const deactivateError = useCallback(() => {\n if (ownError) {\n onDeactivateError(getErrorId(ownError));\n }\n }, [ownError, onDeactivateError]);\n const onValueEditorChange = useCallback(\n pipe(prepareChangeData(attributeValue, attributeType), onChangeAttribute, deactivateError),\n [attributeValue, attributeType, onChangeAttribute, deactivateError]\n );\n const onDelete = () => {\n onDeleteAttribute({uri: attributeValue.uri, attributeType});\n if (getErrorType(ownError) !== ErrorType.missed) {\n deactivateError();\n }\n };\n\n const showAddButton = !!onAddOneMore && canCreate && !attributeType.singleValue;\n const showDeleteButton = !deleted && !!onDeleteAttribute && canDelete;\n const hasError = !!errorMessage;\n const deletedProps = deleted ? {disabled: true} : {};\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n\n const {autopopulationContextValue} = useAutopopulationContextValue({\n enabled: isProfilePerspectiveView && isDependentLookupAttrType(attributeType),\n attributeTypeUri: attributeType?.uri,\n valueUri: attributeValue.uri\n });\n\n return (\n <div ref={ref} className={classnames(styles.editor, className, errorClassName)}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.errorWrapper}>\n <div\n className={classnames(\n styles['editor-value'],\n {[styles.deleted]: deleted},\n {[styles['editor-read-only-value']]: !showToEdit}\n )}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {showToEdit ? (\n <DependentLookupAutopopulationContext.Provider value={autopopulationContextValue}>\n <DataTypeValueEditor\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n value={value}\n dataTypeDefinition={dataTypeDefinition}\n error={hasError}\n onChange={onValueEditorChange}\n fullWidth\n {...dependentLookupEditorContext}\n {...otherProps}\n {...deletedProps}\n />\n </DependentLookupAutopopulationContext.Provider>\n ) : (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={dataTypeDefinition}\n />\n )}\n </div>\n </ErrorWrapper>\n <div className={styles['editor-actions']}>\n {edited && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({i18n.text('edited')})\n </Typography>\n )}\n {showAddButton && (\n <SmallIconButton\n icon={AddIcon}\n onClick={onAddOneMore}\n size=\"L\"\n className={classnames(styles.addButton, styles.button)}\n />\n )}\n {additionalControlsRenderer && additionalControlsRenderer({attributeType, attributeValue})}\n {showDeleteButton && (\n <SmallIconButton className={styles.button} icon={DeleteIcon} onClick={onDelete} size=\"L\" />\n )}\n </div>\n </div>\n );\n};\n\nSimpleAttributeEditor.propTypes = {\n className: PropTypes.string,\n attributeValue: SimpleAttributeValueType,\n attributeType: AttributeTypeType,\n ownError: AttributeErrorType,\n isReltioCrosswalk: PropTypes.bool,\n state: PropTypes.oneOf(['deleted', 'edited']),\n mode: ModeType,\n onAddOneMore: PropTypes.func,\n onDeleteAttribute: PropTypes.func,\n onChangeAttribute: PropTypes.func,\n onDeactivateError: PropTypes.func,\n additionalControlsRenderer: PropTypes.func,\n highlightedError: PropTypes.object\n};\n\nexport default withAsyncMount(\n withContext(\n ScrollToErrorContext,\n (contextValue, {attributeValue}) => {\n const {error} = contextValue || {};\n const isHighlighted = error?.uri === attributeValue.uri;\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SimpleAttributeEditor\n ),\n AsyncMountPlaceholder\n);\n","import {DependentLookupsStructureNode, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {DependentLookupEditorContext} from './types';\nimport {getParents} from './helpers/parents';\nimport {buildMissedParentsMessage} from './helpers/missedParentsMessage';\nimport {fromCache} from './helpers/cache';\n\nexport const getDependentLookupEditorContext = (\n state,\n attributeValue: SimpleAttributeValue,\n attributeTypeUri: string\n) => {\n const node: DependentLookupsStructureNode = mdmModule.selectors.getDependentLookupsStructureNode(\n state,\n attributeTypeUri\n );\n if (node) {\n const valueUri = attributeValue.uri;\n const {parents, missedParentsAttributeTypes} = getParents(state, valueUri, node);\n const {isBlocked = false} = mdmModule.selectors.getDependentLookupEditorState(state, valueUri) || {};\n const missedParentsMessage = buildMissedParentsMessage(missedParentsAttributeTypes);\n const isEmptyValue = !attributeValue?.lookupCode && !attributeValue?.value;\n const placeholder =\n (isEmptyValue && isBlocked && i18n.text('Populating values...')) ||\n (isEmptyValue && missedParentsMessage) ||\n '';\n const context: DependentLookupEditorContext = {\n parents: missedParentsMessage ? null : parents,\n disabled: (!!missedParentsMessage && isEmptyValue) || isBlocked,\n placeholder\n };\n if (placeholder) {\n context.value = null;\n }\n return fromCache(valueUri, context);\n }\n};\n","import {pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst joinWords = (words) =>\n words.reduce((result, word, i) => [result, word].join(i === words.length - 1 ? ` ${i18n.text('and')} ` : ', '));\n\nexport const buildMissedParentsMessage = (missedAttributeTypes) =>\n missedAttributeTypes.length\n ? i18n.text('Please select value for ${labels} ${attributes}.', {\n labels: joinWords(missedAttributeTypes.map(pipe(prop('label'), (label) => `'${label}'`))),\n attributes: missedAttributeTypes.length === 1 ? i18n.text('attribute') : i18n.text('attributes')\n })\n : '';\n","import {ContextType, useCallback, useMemo} from 'react';\nimport {isAutopopulationEnabled} from '@reltio/mdm-sdk';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {DependentLookupAutopopulationContext} from '../../../../contexts';\n\ntype Props = {\n enabled: boolean;\n attributeTypeUri: string;\n valueUri: string;\n};\n\nexport const useAutopopulationContextValue = ({enabled, attributeTypeUri, valueUri}: Props) => {\n const dispatch = useDispatch();\n const autocompleteConfig = useSelector(mdmModule.selectors.getLookupAutocomplete);\n const autopopulationEnabled = enabled && isAutopopulationEnabled(autocompleteConfig, attributeTypeUri);\n const autopopulationId = autopopulationEnabled ? valueUri : null;\n const {isTouched = false} =\n useSelector(\n (state) => autopopulationEnabled && mdmModule.selectors.getDependentLookupEditorState(state, valueUri)\n ) || {};\n const onTouch = useCallback(\n (valueUri: string) => {\n dispatch(profile.dependentLookups.actions.dependentLookupsEditorTouched({uri: valueUri, isTouched: true}));\n },\n [dispatch]\n );\n const autopopulationContextValue: ContextType<typeof DependentLookupAutopopulationContext> = useMemo(\n () =>\n autopopulationId\n ? {\n id: autopopulationId,\n isTouched,\n onTouch\n }\n : null,\n [autopopulationId, isTouched, onTouch]\n );\n\n return {autopopulationContextValue};\n};\n","import moment from 'moment';\nimport {DataTypes, getAttrDataTypeDefinition, parseBoolean} from '@reltio/mdm-sdk';\nimport {curry} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst attributeValueToEditorValue = (attributeValue = {}, {type}) => {\n const {value, lookupCode} = attributeValue;\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED: {\n return parseBoolean(value);\n }\n case DataTypes.TYPE_DATE:\n return (value && utils.dates.toLocalDate(value)) || null;\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n case DataTypes.TYPE_ACTIVENESS_DATE: {\n return (value && new Date(value)) || null;\n }\n case DataTypes.TYPE_DEPENDENT_LOOKUP:\n case DataTypes.TYPE_LOOKUP: {\n return {value, lookupCode};\n }\n default:\n return value;\n }\n};\n\nconst editorValueToAttributeValue = (attributeType, editorValue) => {\n const {type} = getAttrDataTypeDefinition(attributeType);\n switch (type) {\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_BOOLEAN_RADIO:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return editorValue.toString();\n case DataTypes.TYPE_DATE:\n return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';\n case DataTypes.TYPE_TIMESTAMP: {\n return (editorValue && moment(editorValue).format()) || '';\n }\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n return editorValue && editorValue.valueOf();\n default:\n return editorValue || '';\n }\n};\n\nconst prepareChangeData = curry((attributeValue, attributeType, editorValue) => {\n const value = editorValueToAttributeValue(attributeType, editorValue);\n return {\n value,\n uri: attributeValue.uri,\n attributeType\n };\n});\n\nexport {attributeValueToEditorValue, editorValueToAttributeValue, prepareChangeData};\n","import React from 'react';\n\nexport const HasDeletionsContext = React.createContext<{\n hasDeletionsMap: {[attrTypeUri: string]: boolean};\n setHasDeletions: (attrTypeUri: string, value: boolean) => void;\n }>(null);\n","import React from 'react';\n\nexport const PinnedAttributesContext = React.createContext<string[]>(null);\n","import {\n __,\n concat,\n defaultTo,\n flatten,\n includes,\n isNil,\n partition,\n path,\n pipe,\n props,\n propEq,\n reject,\n values\n} from 'ramda';\nimport {\n AttributeType,\n EntityAttrTypes,\n getEntityType,\n Metadata,\n NestedAttributeValue,\n ReferenceAttributeValue,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\n\nexport const getFilteredAttrTypes = (\n metadata: Metadata,\n type: string,\n includeUris: string[],\n excludeUris: string[]\n) => {\n const attrTypes = pipe(\n getEntityType,\n defaultTo({}),\n props(['attributes', 'analyticsAttributes']),\n reject(isNil),\n flatten,\n concat(__, pipe(values, reject(propEq('uri', EntityAttrTypes.id.uri)))(EntityAttrTypes))\n )(metadata, type);\n\n return includeUris.length\n ? attrTypes.filter(({uri}) => includeUris.includes(uri))\n : attrTypes.filter(({uri}) => !excludeUris.includes(uri));\n};\n\ntype PagersData = {\n attrType: AttributeType;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue | string | number)[];\n};\n\nexport const splitPagersData = (\n alwaysVisibleTypeUris: string[],\n pagersData: PagersData[]\n): [PagersData[], PagersData[]] =>\n partition(pipe(path(['attrType', 'uri']), includes(__, alwaysVisibleTypeUris)), pagersData);\n","import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst ShowLess = ({onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowUp className={styles['svg-icon__root']} />\n {i18n.text('Show less')}\n </Link>\n );\n};\n\nexport default ShowLess;\n","import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {Link as Link} from '@material-ui/core';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\ntype Props = {\n moreNumber?: number;\n valueNumber?: number;\n onClick: () => void;\n};\n\nconst ShowMore = ({moreNumber, valueNumber, onClick}: Props) => {\n const styles = useStyles();\n\n return (\n <Link component=\"button\" variant=\"caption\" className={styles.link} onClick={onClick} underline=\"none\">\n <KeyboardArrowDownIcon className={styles['svg-icon__root']} />\n {moreNumber && valueNumber\n ? i18n.text('Show ${moreNumber} more of remaining ${valueNumber} value', {moreNumber, valueNumber})\n : i18n.text('Show more')}\n </Link>\n );\n};\n\nexport default ShowMore;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n link: {\n display: 'flex',\n marginTop: 4\n },\n 'svg-icon__root': {\n fontSize: '1rem'\n }\n});\n","import ReadModeAttributesFactory from './AttributesFactory';\n\nconst Attribute = (props) => {\n const {attributeType} = props;\n return ReadModeAttributesFactory.build(attributeType, props);\n};\n\nexport default Attribute;\n","import React from 'react';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttribute from '../SimpleAttribute';\nimport NestedAttribute from '../NestedAttribute';\nimport ReferenceAttribute from '../ReferenceAttribute';\n\nexport default class ReadModeAttributesFactory {\n static build(attributeType, props = {}) {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttribute {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttribute {...props} />;\n default:\n return <SimpleAttribute {...props} />;\n }\n }\n}\n","import React, {memo, useMemo, useState} from 'react';\nimport {path} from 'ramda';\nimport {AttributeType, Entity, getAttributesListForReadMode, Relation} from '@reltio/mdm-sdk';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport AttributesPager from '../AttributesPager';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport {ALWAYS_VISIBLE_TYPE_URIS} from '../../../../constants';\nimport {splitPagersData} from '../../helpers/attributesView';\n\ntype Props = {\n attrTypes: AttributeType[];\n entity: Partial<Entity> | Partial<Relation>;\n parentUri?: string;\n drawLines?: boolean;\n children?: React.ReactNode;\n className?: string;\n max?: number;\n alwaysVisibleTypeUris?: string[];\n showNonOv?: boolean;\n};\n\nconst AttributesList = ({\n attrTypes,\n entity,\n parentUri,\n drawLines,\n children,\n className,\n max,\n alwaysVisibleTypeUris = ALWAYS_VISIBLE_TYPE_URIS,\n showNonOv\n}: Props) => {\n const [visibleValuesCount, setVisibleValuesCount] = useState(max || Infinity);\n const pagersData = useMemo(() => getAttributesListForReadMode(attrTypes, entity, showNonOv), [\n attrTypes,\n entity,\n showNonOv\n ]);\n const [alwaysVisiblePagersData, regularPagersData] = useMemo(\n () => splitPagersData(alwaysVisibleTypeUris, pagersData),\n [pagersData, alwaysVisibleTypeUris]\n );\n\n const visibleAttributePagersData = regularPagersData.slice(0, visibleValuesCount);\n const showMore = max && visibleAttributePagersData.length < regularPagersData.length;\n const showLess =\n max && visibleAttributePagersData.length >= regularPagersData.length && max < visibleAttributePagersData.length;\n\n const decoratorProps = {\n enabled: drawLines\n };\n\n const onShowMore = () => {\n setVisibleValuesCount(Infinity);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n return (\n <div className={className}>\n {children && <BranchDecorator {...decoratorProps}>{children}</BranchDecorator>}\n {visibleAttributePagersData.concat(alwaysVisiblePagersData).map(({attrType, values}) => (\n <AttributesPager\n key={attrType.uri}\n attributeType={attrType}\n drawLines={drawLines}\n values={values}\n paging={path(['paging', attrType.uri], entity.attributes)}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n ))}\n {showMore && <ShowMore onClick={onShowMore} />}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default memo(AttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst fontSize = '13px';\nconst lineHeight = '15px';\n\nconst commonStyles = {\n titleRow: {\n display: 'block',\n minHeight: '16px',\n textIndent: '-1em',\n paddingLeft: '1em'\n },\n title: {\n whiteSpace: 'nowrap'\n },\n ovIcon: {\n marginLeft: '8px',\n marginRight: '-3px',\n marginTop: '-1px',\n textIndent: 0\n },\n descriptionIcon: {\n marginTop: '-1px',\n textIndent: 0,\n marginRight: '-10px'\n }\n};\n\nexport const useStyles = makeStyles({\n paddingWrapper: {\n paddingTop: '3px',\n paddingBottom: '5px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n },\n paddingWrapperWithLines: {\n paddingBottom: '1px',\n '&:last-child': {\n paddingBottom: '2px'\n }\n }\n});\n\nexport const useOneLineStyles = makeStyles({\n wrapper: {\n fontSize,\n lineHeight,\n flex: 1\n },\n collaborationWrapper: {\n display: 'flex',\n alignItems: 'start',\n minHeight: '18px'\n },\n attribute: {\n marginLeft: '8px',\n paddingLeft: '4px',\n paddingRight: '4px',\n display: 'inline',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n titleIcon: {\n width: '16px',\n height: '16px',\n marginBottom: '-3px',\n marginRight: '8px',\n marginLeft: '1px',\n color: 'rgba(0, 0, 0, 0.38)'\n },\n ...commonStyles\n});\n\nexport const useMultiLineStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n fontSize,\n lineHeight\n },\n attribute: {\n '&:last-child': {\n marginBottom: 0\n },\n paddingLeft: '4px',\n paddingRight: '4px',\n marginLeft: '5px',\n marginBottom: '4px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n attributes: {\n alignSelf: 'stretch'\n },\n ...commonStyles,\n titleRow: {\n ...commonStyles.titleRow,\n marginBottom: '3px'\n }\n});\n","import React from 'react';\nimport {\n AttributeType,\n AttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isRelationAttrType\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport Title from '../../../Title/Title';\nimport OvIcon from '../../OvIcon';\nimport DescriptionIcon from '../../DescriptionIcon/DescriptionIcon';\nimport Attribute from '../AttributesFactory/Attribute';\n\nimport {useOneLineStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n attributeType: AttributeType;\n nonVisibleValues: AttributeValue[];\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n totalNonVisibleValues: number;\n};\n\nconst OneLineRenderer = ({\n value,\n nonVisibleValues,\n attributeType,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useOneLineStyles();\n const {label, description} = attributeType;\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={classnames(styles.collaborationWrapper, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} className={styles.descriptionIcon} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n <Attribute\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n inlined\n />\n </div>\n <CommentsContainer\n uri={value.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: value.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default OneLineRenderer;\n","import React, {useState} from 'react';\nimport {min} from 'ramda';\nimport classnames from 'classnames';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {AttributeType, NestedAttributeValue, ReferenceAttributeValue, SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useMultiLineStyles} from './styles';\n\nimport Attribute from '../AttributesFactory/Attribute';\nimport Title from '../../../Title/Title';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport OvIcon from '../../OvIcon';\nimport DescriptionIcon from '../../DescriptionIcon';\n\ntype Props = {\n max: number;\n values: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n attributeType: AttributeType;\n totalVisibleValues: number;\n totalNonVisibleValues: number;\n nonVisibleValues: (SimpleAttributeValue | NestedAttributeValue | ReferenceAttributeValue)[];\n parentUri: string;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv: boolean;\n};\n\nconst MultiLineRenderer = ({\n max,\n values,\n nonVisibleValues,\n totalVisibleValues,\n attributeType,\n parentUri,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv,\n totalNonVisibleValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const hasPaging = max < totalVisibleValues;\n const showMore = hasPaging && visibleValuesCount < totalVisibleValues;\n const showLess = hasPaging && visibleValuesCount >= totalVisibleValues;\n const {label, description} = attributeType;\n\n const onShowMore = () => {\n if (values.length < totalVisibleValues) {\n requestNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeType.uri,\n attributeTypeName: attributeType.name,\n values,\n defaultMaxValues: max\n });\n }\n\n setVisibleValuesCount(visibleValuesCount + max);\n };\n\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = values.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalVisibleValues - visibleValuesCount;\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.titleRow}>\n <Title\n label={label}\n className={classnames(styles.title, titleClassName)}\n data-reltio-id=\"reltio-attribute-label\"\n />\n <DescriptionIcon description={description} />\n <OvIcon\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n className={styles.ovIcon}\n nonOvTotal={totalNonVisibleValues}\n />\n </div>\n <div className={styles.attributes}>\n {shownValues.map((value) => (\n <Attribute\n key={value.uri}\n className={classnames(styles.attribute, contentClassName)}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n ))}\n </div>\n {showMore && (\n <ShowMore\n moreNumber={min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default MultiLineRenderer;\n","import React, {Fragment} from 'react';\n\ntype Props = {\n className?: string;\n values: string[];\n Component: React.ElementType;\n dataReltioId?: string;\n};\n\nconst SpecialAttributesArray = ({className, values, Component, dataReltioId}: Props) => {\n return (\n <div className={className} data-reltio-id={dataReltioId}>\n {values.map((value, index) => (\n <Fragment key={value}>\n <Component value={value} />\n {index < values.length - 1 && ', '}\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default SpecialAttributesArray;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useCommonStyles = makeStyles({\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName,\n getRoleLabel,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../../contexts/HistoryAppearanceContext';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Role = ({value}: Props) => {\n const styles = useCommonStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('roles', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return <span className={styles[historyClassName]}>{getRoleLabel(metadata, value)}</span>;\n};\n\nexport default Role;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Role from './Role';\n\ntype Props = {\n className?: string;\n values: string[];\n};\n\nconst Roles = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Role}\n />\n);\n\nexport default Roles;\n","import React, {useContext} from 'react';\nimport InternalLink from '../../../../InternalLink/InternalLink';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n Entity,\n getDataTenantEntityUri,\n getHistoryAppearanceBySpecialAttributeValue,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport {EntityContext, HistoryDiffContext, UrlGeneratorsContext} from '../../../../../contexts';\n\nimport {useCommonStyles} from '../styles';\n\ntype Props = {\n value: string;\n};\n\nconst Tag = ({value}: Props) => {\n const styles = useCommonStyles();\n const uiPath: string = useSelector(mdmModule.selectors.getUIPath);\n const currentEntity: Entity = useSelector(mdmModule.selectors.getEntity);\n const ownEntity: Entity = useContext(EntityContext);\n const {appearance} = useContext(HistoryDiffContext);\n const {generateTagUrl} = useContext(UrlGeneratorsContext);\n const attributeAppearance = getHistoryAppearanceBySpecialAttributeValue('tags', value, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const entity = ownEntity || currentEntity;\n\n return (\n <InternalLink\n className={styles[historyClassName]}\n href={generateTagUrl({\n uiPath,\n tag: value,\n entityUri: entity.dataTenant ? getDataTenantEntityUri(entity) : entity.uri\n })}\n >\n {value}\n </InternalLink>\n );\n};\n\nexport default Tag;\n","import React from 'react';\n\nimport SpecialAttributesArray from '../SpecialAttributesArray';\nimport Tag from './Tag';\n\ntype Props = {\n className?: string;\n values: string[];\n dataReltioId?: string;\n};\n\nconst Tags = ({className, values}: Props) => (\n <SpecialAttributesArray\n values={values}\n className={className}\n dataReltioId=\"reltio-attribute-value\"\n Component={Tag}\n />\n);\n\nexport default Tags;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeType, EntityAttrTypes} from '@reltio/mdm-sdk';\nimport TagIcon from '@material-ui/icons/LocalOffer';\n\nimport {useOneLineStyles} from './styles';\n\nimport Title from '../../../Title/Title';\nimport Attribute from '../AttributesFactory/Attribute';\nimport Roles from '../SpecialAttributes/Roles';\nimport Tags from '../SpecialAttributes/Tags';\n\ntype Props = {\n values: string[] | number[];\n attributeType: AttributeType;\n};\n\nconst SpecialRenderer = ({values, attributeType}: Props) => {\n const styles = useOneLineStyles();\n const {label} = attributeType;\n\n const renderIcon = (className) => {\n return attributeType.uri === EntityAttrTypes.tags.uri ? <TagIcon className={className} /> : null;\n };\n\n const renderValue = (className) => {\n switch (attributeType.uri) {\n case EntityAttrTypes.tags.uri:\n return <Tags className={className} values={values as string[]} />;\n case EntityAttrTypes.roles.uri: {\n return <Roles className={className} values={values as string[]} />;\n }\n default: {\n //startDate, endDate, \"crosswalk\" fake nested subattibutes\n return (\n <Attribute\n className={className}\n attributeValue={{value: values[0]}}\n attributeType={attributeType}\n inlined\n />\n );\n }\n }\n };\n\n return (\n <div className={classnames(styles.titleRow, styles.wrapper)}>\n {renderIcon(styles.titleIcon)}\n <Title label={label} className={styles.title} data-reltio-id=\"reltio-attribute-label\" />\n {renderValue(styles.attribute)}\n </div>\n );\n};\n\nexport default SpecialRenderer;\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue, Paging} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport Title from '../../../Title/Title';\nimport DescriptionIcon from '../../DescriptionIcon';\nimport ImageAttributesLine from '../ImageAttributesLine';\nimport {useMultiLineStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n paging: Paging;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n parentUri?: string;\n showNonOv?: boolean;\n};\n\nexport const ImageLineRenderer = ({\n attributeType,\n attributeValues,\n paging,\n parentUri,\n showNonOv,\n requestNextPageOfAttributeValues\n}: Props) => {\n const styles = useMultiLineStyles();\n const {label, description} = attributeType;\n\n return (\n <>\n <div className={styles.titleRow}>\n <Title className={styles.title} label={label} data-reltio-id=\"reltio-attribute-label\" />\n <DescriptionIcon className={styles.descriptionIcon} description={description} />\n </div>\n <ImageAttributesLine\n attributeValues={attributeValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n </>\n );\n};\n","import classnames from 'classnames';\nimport React, {memo} from 'react';\nimport {always, cond, has, ifElse, partition, prop, T} from 'ramda';\nimport {\n AttributeType,\n isComplexAttribute,\n isImage,\n NestedAttributeValue,\n Paging,\n ReferenceAttributeValue,\n SimpleAttributeValue,\n isSpecialAttribute,\n isOv,\n ImageAttributeValue,\n AttributeValue\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport OneLineRenderer from './OneLineRenderer';\nimport MultiLineRenderer from './MultiLineRenderer';\nimport SpecialRenderer from './SpecialRenderer';\nimport {ImageLineRenderer} from './ImageLineRenderer';\n\nconst RENDERER_TYPES = {\n oneLine: 'oneLine',\n multiLine: 'multiLine',\n imageLine: 'imageLine',\n special: 'special'\n};\n\ntype Props = {\n values: (\n | SimpleAttributeValue\n | NestedAttributeValue\n | ReferenceAttributeValue\n | string\n | number\n | ImageAttributeValue\n | AttributeValue\n )[];\n attributeType: AttributeType;\n paging?: Paging;\n parentUri?: string;\n drawLines: boolean;\n max?: number;\n requestNextPageOfAttributeValues: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n titleClassName?: string;\n contentClassName?: string;\n showNonOv?: boolean;\n};\n\nconst AttributesPager = ({\n values,\n attributeType,\n drawLines,\n paging = {},\n parentUri,\n max = Infinity,\n requestNextPageOfAttributeValues,\n titleClassName,\n contentClassName,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const partitionByOv = partition(isOv);\n if (!values || !values.length) {\n return null;\n }\n const [ovValues, nonOvValues] = partitionByOv(values);\n const visibleValues = showNonOv ? values : ovValues;\n const nonVisibleValues = showNonOv ? [] : nonOvValues;\n const totalProp = showNonOv ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(visibleValues.length))(paging);\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n const isOneLineRender = totalVisibleValues === 1 && !isComplexAttribute(attributeType);\n\n const render = () => {\n const type = cond([\n [isSpecialAttribute, always(RENDERER_TYPES.special)],\n [isImage, always(RENDERER_TYPES.imageLine)],\n [always(isOneLineRender), always(RENDERER_TYPES.oneLine)],\n [T, always(RENDERER_TYPES.multiLine)]\n ])(attributeType);\n switch (type) {\n case RENDERER_TYPES.oneLine:\n return (\n <OneLineRenderer\n value={visibleValues[0]}\n nonVisibleValues={nonVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.multiLine:\n return (\n <MultiLineRenderer\n values={visibleValues}\n nonVisibleValues={nonVisibleValues}\n totalVisibleValues={totalVisibleValues}\n totalNonVisibleValues={totalNonVisibleValues}\n attributeType={attributeType}\n parentUri={parentUri}\n max={max}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n titleClassName={titleClassName}\n contentClassName={contentClassName}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.imageLine:\n return (\n <ImageLineRenderer\n attributeValues={visibleValues}\n attributeType={attributeType}\n paging={paging}\n parentUri={parentUri}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n showNonOv={showNonOv}\n />\n );\n case RENDERER_TYPES.special:\n return <SpecialRenderer values={visibleValues} attributeType={attributeType} />;\n }\n };\n\n return (\n <BranchDecorator enabled={drawLines} className={classnames({[styles.paddingWrapperWithLines]: drawLines})}>\n <div className={classnames({[styles.paddingWrapper]: !drawLines})}>{render()}</div>\n </BranchDecorator>\n );\n};\n\nexport default memo(AttributesPager);\n","import {connect} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\nimport AttributesPager from './AttributesPager';\n\nconst mapStateToProps = (state, {max = undefined}) => ({\n max: max || mdmModule.selectors.getDefaultMaxValues(state)\n});\n\nconst mapDispatchToProps = {\n requestNextPageOfAttributeValues: profile.actions.requestNextPageOfAttributeValues\n};\n\nexport {AttributesPager};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AttributesPager);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexContainer: {\n marginTop: '1px'\n },\n labelContainer: {\n display: 'flex',\n minHeight: '18px'\n },\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n paddingTop: '1px',\n marginLeft: '2px'\n },\n spacer: {\n flex: 1\n }\n});\n","import React, {useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n isSpecialAttribute\n} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport AttributesList from '../AttributesList/AttributesList';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {useStyles} from './styles';\n\nconst ComplexAttribute = ({\n attributeTypesList,\n attributeValue,\n label,\n expanded: expandedProp = false,\n children,\n showNonOv,\n attributeType,\n LabelRenderer,\n RightSlot\n}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const uri = attributeValue.uri;\n const [expanded, setExpanded] = useState(false);\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n useEffect(() => {\n setExpanded(expandedProp);\n }, [expandedProp]);\n const hasAnalyticValue = (attributeTypesList || []).some((attributeType) => isAnalyticAttribute(attributeType));\n const attributeListEntity = useMemo(\n () => ({\n attributes: hasAnalyticValue ? null : attributeValue.value,\n analyticsAttributes: hasAnalyticValue ? attributeValue.value : null,\n ...(isSpecialAttribute(attributeType) ? attributeValue.value : {})\n }),\n [attributeValue, hasAnalyticValue, attributeType]\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return (\n <div className={styles.complexContainer}>\n <div className={classnames(styles.labelContainer, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n {LabelRenderer ? (\n <LabelRenderer attributeType={attributeType} attributeValue={attributeValue} />\n ) : (\n <>\n <Typography\n component=\"span\"\n variant=\"body2\"\n classes={{body2: styles.label}}\n className={classnames({\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri),\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n data-reltio-id=\"reltio-attribute-complex-label\"\n >\n {label}\n </Typography>\n <div className={styles.spacer} />\n {RightSlot && <RightSlot attributeType={attributeType} attributeValue={attributeValue} />}\n <CommentsContainer\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </>\n )}\n </div>\n {expanded && (\n <AttributesList\n attrTypes={attributeTypesList}\n entity={attributeListEntity}\n drawLines={true}\n parentUri={uri}\n showNonOv={showNonOv}\n >\n {children}\n </AttributesList>\n )}\n </div>\n );\n};\n\nComplexAttribute.propTypes = {\n children: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n attributeTypesList: PropTypes.arrayOf(AttributeTypeType),\n attributeValue: PropTypes.oneOfType([NestedAttributeValueType, ReferenceAttributeValueType]),\n expanded: PropTypes.bool,\n showNonOv: PropTypes.bool,\n attributeType: AttributeTypeType,\n LabelRenderer: PropTypes.elementType,\n RightSlot: PropTypes.elementType\n};\n\nexport default ComplexAttribute;\n","export const CROSS_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke: #D1051E; stroke-width: 1\" viewBox=\"0 0 114 114\">\n\t<line x1=\"5\" y1=\"109\" x2=\"109\" y2=\"5\" />\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {CROSS_ICON} from './cross.inline.svg';\nimport {HistoryOperations, historyPalettes, svg2Url} from '@reltio/mdm-sdk';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\n\nconst BORDER_WIDTH = '3px';\n\nexport const useStyles = makeStyles((theme) => ({\n image: ({imageMargin, imageHeight, imageWidth}: SIZES_TYPE) => {\n return {\n marginRight: imageMargin,\n width: imageWidth,\n height: imageHeight,\n cursor: 'pointer',\n '&:last-child': {\n marginRight: 0\n }\n };\n },\n deleteAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n background: `url('${svg2Url(CROSS_ICON)}') no-repeat`,\n backgroundColor: historyPalettes[HistoryOperations.deleteAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n updateAttributeImage: {\n position: 'relative',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: historyPalettes[HistoryOperations.updateAttribute].backgroundColor,\n pointerEvents: 'none'\n }\n },\n deleteAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.deleteAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n insertAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.insertAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n updateAttribute: ({imageWidth, imageHeight}: SIZES_TYPE) => {\n return {\n width: imageWidth,\n height: imageHeight,\n boxSizing: 'border-box',\n outline: `${BORDER_WIDTH} solid ${historyPalettes[HistoryOperations.updateAttribute].color}`,\n outlineOffset: `-${BORDER_WIDTH}`\n };\n },\n number: {\n color: theme.palette.primary.main,\n fontSize: '24px',\n lineHeight: '42px',\n letterSpacing: 0,\n padding: '36px 8px',\n textAlign: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n}));\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getImageAttributeOvThumbnailUrl,\n ImageAttributeValue,\n Paging\n} from '@reltio/mdm-sdk';\nimport {RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport classnames from 'classnames';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport Image from '../../../Image/Image';\nimport ImageAttributesLineCommon from '../../ImageAttributesLine';\nimport {DEFAULT_IMAGE_SIZE} from '../../ImageAttributesLine/constants';\nimport {RenderImage} from '../../ImageAttributesLine/ImageAttributesLine';\nimport {SIZES_TYPE} from '../../ImageAttributesLine/styles';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValues: ImageAttributeValue[];\n attributeType: AttributeType;\n imageSize?: SIZES_TYPE;\n paging?: Paging;\n parentUri?: string;\n showNonOv?: boolean;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nconst ImageAttributesLine = ({\n attributeType,\n attributeValues = [],\n paging,\n parentUri,\n requestNextPageOfAttributeValues,\n showNonOv,\n imageSize = DEFAULT_IMAGE_SIZE\n}: Props) => {\n const styles = useStyles(imageSize);\n const {appearance} = useContext(HistoryDiffContext);\n\n const renderImage: RenderImage = ({onOpenImageGalleryDialog}) => {\n const renderImage = (attribute: ImageAttributeValue) => {\n const src = getImageAttributeOvThumbnailUrl(attribute);\n const {uri} = attribute;\n const imageAppearance = getHistoryAppearanceByUri(uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(imageAppearance);\n return (\n <div\n className={classnames(styles.image, {\n [styles[historyAttributesClassName + 'Image']]: historyAttributesClassName\n })}\n key={uri}\n data-reltio-id=\"reltio-attribute-value\"\n >\n <Image\n onClick={() => onOpenImageGalleryDialog(uri)}\n className={styles[historyAttributesClassName]}\n src={src}\n size={{imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight}}\n />\n </div>\n );\n };\n\n return renderImage;\n };\n\n return (\n <ImageAttributesLineCommon\n attributeValues={attributeValues}\n attributeType={attributeType}\n renderImage={renderImage}\n imageSize={imageSize}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n paging={paging}\n parentUri={parentUri}\n showNonOv={showNonOv}\n />\n );\n};\n\nexport default ImageAttributesLine;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles({\n label: {\n textDecoration: 'none'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n pivotingTooltip: {\n marginLeft: '4px'\n }\n});\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport {Box as Box} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {\n evaluateDeepEntityLabel,\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n NestedAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport useStyles from './styles';\n\nconst NestedAttribute = ({attributeValue, attributeType, ...otherProps}) => {\n const styles = useStyles();\n\n const {appearance} = useContext(HistoryDiffContext);\n\n const attributeLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const label = attributeValue.label\n ? attributeValue.label\n : evaluateDeepEntityLabel(attributeValue, attributeType.dataLabelPattern);\n\n return (\n <PivotingTooltip className={styles.pivotingTooltip} value={attributeValue} attributeType={attributeType}>\n <Box component=\"span\" className={classnames(styles[historyAttributesClassName], styles.label)}>\n <SearchHighlighter text={getLabel(label)} />\n </Box>\n </PivotingTooltip>\n );\n }, [appearance, styles, attributeValue, attributeType]);\n\n return (\n <ComplexAttribute\n label={attributeLabel}\n attributeValue={attributeValue}\n attributeTypesList={getAttributeTypeSubAttributes({}, attributeType)}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nNestedAttribute.propTypes = NestedAttributeType;\n\nexport default memo(NestedAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst styles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n width: 'fit-content',\n textDecoration: 'line-through',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n }\n}));\n\nexport default styles;\n","import React, {memo, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n getAttributeTypeSubAttributes,\n getHistoryAppearanceByUri,\n getHistoryAttributeClassName,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n isEmptyValue,\n isOv,\n ReferenceAttributeType\n} from '@reltio/mdm-sdk';\nimport {HistoryDiffContext, UrlGeneratorsContext} from '../../../../contexts';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport InternalLink from '../../../InternalLink/InternalLink';\nimport SearchHighlighter from '../../../SearchHighlighter/SearchHighlighter';\n\nimport {useOvValueStyles} from '../helpers/commonStyles';\nimport useStyles from './styles';\n\nconst ReferenceAttribute = ({attributeValue, metadata, attributeType, uiPath, ...otherProps}) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const refEntityURI = getReferencedEntityUriFromAttrValue(attributeValue);\n const attributeTypeList = useMemo(\n () => getAttributeTypeSubAttributes(metadata, attributeType),\n [attributeType, metadata]\n );\n\n const {appearance} = useContext(HistoryDiffContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLabel = useMemo(() => {\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyAttributesClassName = getHistoryAttributeClassName(attributeAppearance);\n\n return (\n <InternalLink\n href={isEmptyValue(appearance) ? generateEntityUrl({uiPath, uri: refEntityURI}) : undefined}\n className={classnames(styles[historyAttributesClassName], {\n [ovValueStyles.ovFalse]: !isOv(attributeValue)\n })}\n >\n <SearchHighlighter text={getLabel(attributeValue.label)} />\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>\n <SearchHighlighter text={attributeValue.relationshipLabel} />\n </span>\n )}\n </InternalLink>\n );\n }, [attributeValue, appearance, uiPath, refEntityURI, styles, ovValueStyles.ovFalse, generateEntityUrl]);\n\n return (\n <ComplexAttribute\n attributeTypesList={attributeTypeList}\n attributeValue={attributeValue}\n label={entityLabel}\n attributeType={attributeType}\n {...otherProps}\n />\n );\n};\n\nReferenceAttribute.propTypes = ReferenceAttributeType;\n\nexport default memo(ReferenceAttribute);\n","import {connect} from 'react-redux';\nimport ReferenceAttribute from './ReferenceAttribute';\nimport mdmModule from '@reltio/mdm-module';\n\nconst mapStateToProps = (state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n uiPath: mdmModule.selectors.getUIPath(state)\n };\n};\n\nexport {ReferenceAttribute};\n\nexport default connect(mapStateToProps)(ReferenceAttribute);\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'start',\n justifyContent: 'space-between'\n },\n commentsContainer: {\n height: '15px',\n marginRight: '-4px' // AttributesPager padding compensation\n },\n attributeValue: {\n flex: 1,\n wordBreak: 'break-all'\n },\n updateAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.updateAttribute].color\n }\n },\n insertAttribute: {\n width: 'fit-content',\n ...historyPalettes[HistoryOperations.insertAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.insertAttribute].color\n }\n },\n deleteAttribute: {\n width: 'fit-content',\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute],\n '& > a': {\n color: historyPalettes[HistoryOperations.deleteAttribute].color\n }\n },\n multilineAttribute: {\n width: 'fit-content'\n }\n});\n","import React, {useContext} from 'react';\nimport {\n AttributeType,\n getAttrDataTypeDefinition,\n getHistoryAppearanceByUri,\n getAttributeValue,\n SimpleAttributeValue,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n isOv,\n isRelationAttrType,\n getHistoryAttributeClassName\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\n\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../../../constants/classnames';\nimport {HistoryDiffContext} from '../../../../contexts/HistoryAppearanceContext';\nimport CommentsContainer from '../../../CommentsContainer/CommentsContainer';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport {PivotingTooltip} from '../../PivotingAttributes/PivotingTooltip';\nimport {useStyles} from './styles';\nimport {HighlightedValuesContext} from '../../../../contexts';\nimport {useOvValueStyles} from '../helpers/commonStyles';\n\ntype Props = {\n className?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n inlined?: boolean;\n};\n\nconst SimpleAttribute = ({className, attributeType = null, attributeValue, inlined}: Props) => {\n const styles = useStyles();\n const ovValueStyles = useOvValueStyles();\n const {highlightedValuesUris = [], highlightedClassName} = useContext(HighlightedValuesContext);\n const {appearance} = useContext(HistoryDiffContext);\n const attributeAppearance = getHistoryAppearanceByUri(attributeValue.uri, appearance);\n const historyClassName = getHistoryAttributeClassName(attributeAppearance);\n\n const dataTypeValue = (\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n );\n\n const objectType = isRelationAttrType(attributeType)\n ? CollaborationObjectTypes.RELATION_ATTRIBUTE\n : CollaborationObjectTypes.ENTITY_ATTRIBUTE;\n\n return inlined || historyClassName ? (\n <div\n className={classnames(className, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip\n value={attributeValue}\n attributeType={attributeType}\n key={attributeValue.uri}\n className={classnames({[styles.multilineAttribute]: !inlined})}\n >\n <span\n className={classnames(styles[historyClassName], {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n </div>\n ) : (\n <div\n className={classnames(className, styles.root, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [highlightedClassName]: highlightedValuesUris.includes(attributeValue.uri)\n })}\n >\n <PivotingTooltip value={attributeValue} attributeType={attributeType} key={attributeValue.uri}>\n <span\n className={classnames(styles.attributeValue, {[ovValueStyles.ovFalse]: !isOv(attributeValue)})}\n data-reltio-id=\"reltio-attribute-value\"\n >\n {dataTypeValue}\n </span>\n </PivotingTooltip>\n <CommentsContainer\n className={styles.commentsContainer}\n uri={attributeValue.uri}\n relatedObjectUris={createRelatedObjectUris(objectType, {\n uri: attributeValue.uri\n })}\n objectType={objectType}\n />\n </div>\n );\n};\n\nexport default SimpleAttribute;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useOvValueStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n ovFalse: theme.inactive\n}));\n","import {EntityAttrTypes} from '@reltio/mdm-sdk';\n\nexport const ALWAYS_VISIBLE_TYPE_URIS = [EntityAttrTypes.roles.uri, EntityAttrTypes.tags.uri];\n","export const COMMENTS_CONTAINER_VISIBILITY_AREA = 'commentsContainerVisibilityArea';\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const AsyncMountContext = React.createContext({\n enabled: false,\n queueSizeThreshold: 0\n});\n\nAsyncMountContext.Provider.propTypes = {\n value: PropTypes.shape({\n enabled: PropTypes.bool,\n queueSizeThreshold: PropTypes.number\n })\n};\n\nAsyncMountContext.displayName = 'AsyncMountContext';\n","import React from 'react';\n\nexport const BlockImageGalleryDialogContext = React.createContext(false);\n\nBlockImageGalleryDialogContext.displayName = 'BlockImageGalleryDialogContext';\n","import React from 'react';\nimport {CollaborationObjectTypes, Comment, CommentsMap, CommentState, Reply} from '@reltio/mdm-sdk';\nimport {useUsers} from '../../hooks';\nimport {UsersContext} from '../UsersContext';\n\nconst noop = () => {};\n\nexport const CollaborationContext = React.createContext<{\n objectTypes?: CollaborationObjectTypes[];\n commentsMap: CommentsMap;\n comments: Comment[];\n currentComment: Comment;\n updateCommentState: (uri: string, commentUri: string, newState: CommentState) => void;\n clearCommentState: (uri: string, commentUri: string) => void;\n getCommentState: (uri: string, commentUri: string) => CommentState;\n getComments: (uri: string, pageToken?: string) => void;\n getCommentsCount: (objectIds: string[]) => void;\n getComment: (commentId: Comment['commentId']) => void;\n createComment: (\n params: Pick<Comment, 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris'> & {uri: string}\n ) => Promise<void>;\n editComment: (\n params: Pick<\n Comment,\n 'content' | 'namedUsers' | 'objectType' | 'relatedObjectUris' | 'commentId' | 'replies'\n > & {uri: string}\n ) => Promise<void>;\n editReply: (params: Pick<Reply, 'content' | 'namedUsers' | 'replyId'> & {commentId: string}) => Promise<void>;\n deleteComment: (params: Pick<Comment, 'commentId'> & {uri: string}) => void;\n deleteReply: (params: {uri: string; commentId: string; reply: Pick<Reply, 'action' | 'replyId'>}) => void;\n createReply: (\n params: Pick<Reply, 'content' | 'namedUsers' | 'action'> & {uri: string; commentId: string}\n ) => Promise<void>;\n resolveThread: (params: {uri: string; commentId: string}) => void;\n reOpenThread: (params: {uri: string; commentId: string}) => void;\n clearCurrentComment: () => void;\n sending: boolean;\n loading: boolean;\n pageToken: string;\n }>({\n comments: [],\n commentsMap: null,\n currentComment: null,\n updateCommentState: noop,\n clearCommentState: noop,\n getCommentState: () => ({}),\n getComment: noop,\n getComments: () => new Promise<void>(noop),\n getCommentsCount: noop,\n createComment: () => new Promise<void>(noop),\n editComment: () => new Promise<void>(noop),\n createReply: () => new Promise<void>(noop),\n resolveThread: noop,\n reOpenThread: noop,\n clearCurrentComment: noop,\n deleteComment: noop,\n sending: false,\n loading: false,\n pageToken: null,\n deleteReply: noop,\n editReply: () => new Promise<void>(noop)\n });\n\nCollaborationContext.displayName = 'CollaborationContext';\n\nexport const CollaborationContextProvider = ({collaboration, children}) => {\n const users = useUsers();\n return (\n <CollaborationContext.Provider value={collaboration}>\n <UsersContext.Provider value={users}>{children}</UsersContext.Provider>\n </CollaborationContext.Provider>\n );\n};\n","import {EntitiesMap} from '@reltio/mdm-sdk';\nimport React from 'react';\n\nexport const EntitiesMapContext = React.createContext<EntitiesMap>({});\n\nEntitiesMapContext.displayName = 'EntitiesMapContext';\n","import React from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\n\nexport const EntityContext = React.createContext<Entity>(null);\n\nEntityContext.displayName = 'EntityContext';\n","import React from 'react';\n\ntype Features = {\n showDescription?: boolean;\n};\nexport const FeaturesContext = React.createContext<Features>({});\n\nFeaturesContext.displayName = 'FeaturesContext';\n","import React from 'react';\n\nexport const HighlightedValuesContext = React.createContext<{\n highlightedValuesUris: string[];\n highlightedClassName: string;\n}>({\n highlightedValuesUris: [],\n highlightedClassName: ''\n});\n\nHighlightedValuesContext.displayName = 'HighlightedValuesContext';\n","import React from 'react';\nimport {HistoryDiff} from '@reltio/mdm-sdk';\n\nexport const HistoryDiffContext = React.createContext<HistoryDiff>({\n appearance: undefined,\n attributes: undefined,\n roles: undefined,\n tags: undefined\n});\n\nHistoryDiffContext.displayName = 'HistoryDiffContext';\n","import React from 'react';\nimport {PivotingAttribute} from '@reltio/mdm-sdk';\n\nexport const PivotingAttributeContext = React.createContext<PivotingAttribute[]>([]);\n","import React from 'react';\n\nexport const ProfilePerspectiveViewContext = React.createContext(false);\n\nProfilePerspectiveViewContext.displayName = 'ProfilePerspectiveViewContext';\n","import React from 'react';\n\nexport const RelatedObjectUrisContext = React.createContext<string[]>([]);\n\nRelatedObjectUrisContext.displayName = 'RelatedObjectUrisContext';\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {AttributeError} from '@reltio/mdm-sdk';\nimport {noop} from '../../core';\n\ntype ScrollToErrorContextProps = {\n error: AttributeError | null;\n highlightError: (error: AttributeError) => void;\n scrollIntoRef: (ref: React.MutableRefObject<HTMLDivElement>) => void;\n};\n\nexport const ScrollToErrorContext = React.createContext<ScrollToErrorContextProps>({\n error: null,\n highlightError: noop,\n scrollIntoRef: noop\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ScrollToErrorProvider = ({children}: Props) => {\n const [error, setError] = useState<AttributeError>(null);\n const highlightTimer = useRef(null);\n\n const scrollIntoRef = useCallback((ref: React.MutableRefObject<HTMLDivElement>) => {\n ref.current.scrollIntoView({behavior: 'smooth', block: 'center'});\n if (highlightTimer) {\n clearTimeout(highlightTimer.current);\n }\n highlightTimer.current = setTimeout(() => setError(null), 2000);\n }, []);\n\n const contextValue = useMemo(() => ({error, highlightError: setError, scrollIntoRef}), [error, scrollIntoRef]);\n\n return <ScrollToErrorContext.Provider value={contextValue}>{children}</ScrollToErrorContext.Provider>;\n};\n","import React from 'react';\nimport {User} from '@reltio/mdm-sdk';\n\nexport const UsersContext = React.createContext<Pick<User, 'email' | 'username'>[]>([]);\n\nUsersContext.displayName = 'UsersContext';\n","import {useContext, useEffect, useState, useRef} from 'react';\n\nimport {AsyncMountContext} from '../contexts/AsyncMountContext';\n\nlet queueSize = 0;\n\nexport const useAsyncMount = () => {\n const isFirstRunRef = useRef(true);\n const {enabled, queueSizeThreshold = 0} = useContext(AsyncMountContext);\n const [shouldMount, setShouldMount] = useState(!enabled || (enabled && queueSize < queueSizeThreshold));\n if (isFirstRunRef.current) {\n queueSize++;\n }\n const timerRef = useRef();\n useEffect(() => {\n queueSize--;\n if (!shouldMount) {\n timerRef.current = setTimeout(() => {\n setShouldMount(true);\n }, 0);\n return () => clearTimeout(timerRef.current);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n isFirstRunRef.current = false;\n return shouldMount;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst highlightBeforeStyles = {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: '0px',\n width: '5000px',\n height: 'calc(100% - 10px)',\n animationName: '$highlightAnimation',\n animationDuration: '2s',\n animationIterationCount: 1,\n opacity: 0\n};\nconst ERROR_COLOR = 'rgba(255, 0, 0, 0.06)';\nconst WARNING_COLOR = 'rgba(228, 151, 0, 0.08)';\n\nexport const useStyles = makeStyles(() => ({\n '@keyframes highlightAnimation': {\n '0%': {opacity: 0},\n '50%': {opacity: 1},\n '100%': {opacity: 0}\n },\n highlightError: {\n '&::before': {\n ...highlightBeforeStyles,\n background: ERROR_COLOR\n }\n },\n highlightWarning: {\n '&::before': {\n ...highlightBeforeStyles,\n background: WARNING_COLOR\n }\n },\n simpleAttribute: {\n position: 'relative',\n '&::before': {\n top: '-4px',\n height: 'calc(100% + 8px)'\n }\n }\n}));\n","import {ContextType, useEffect, useMemo, useRef} from 'react';\nimport {propOr} from 'ramda';\nimport classnames from 'classnames';\nimport {ErrorSeverity} from '@reltio/mdm-sdk';\nimport {ScrollToErrorContext} from '../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n highlightedError: ContextType<typeof ScrollToErrorContext> | null;\n isSimple?: boolean;\n};\n\nexport const useScrollToAttributeError = ({highlightedError: context, isSimple = false}: Props) => {\n const styles = useStyles();\n\n const ref = useRef<HTMLDivElement>(null);\n const {error, scrollIntoRef} = context || {};\n\n const severity: ErrorSeverity = useMemo(() => propOr(ErrorSeverity.ERROR, 'severity')(error), [error]);\n const errorClassName: string = classnames({\n [styles.highlightError]: severity === ErrorSeverity.ERROR,\n [styles.highlightWarning]: severity === ErrorSeverity.WARNING,\n [styles.simpleAttribute]: isSimple\n });\n\n useEffect(() => {\n if (context) {\n scrollIntoRef(ref);\n }\n }, [context, scrollIntoRef]);\n\n return context ? {ref, errorClassName} : {ref};\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {getAllUsersForTenant, UserInfo} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport memoizeOne from 'memoize-one';\n\nconst getAllUsersForTenantMemoized = memoizeOne((tenant, servicesPath) => getAllUsersForTenant({tenant, servicesPath}));\n\nexport const useUsers = () => {\n const [users, setUsers] = useState<UserInfo[]>([]);\n\n const tenant = useSelector(mdm.selectors.getTenant);\n const servicesPath = useSelector(mdm.selectors.getServicesPath);\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenantMemoized(tenant, servicesPath)\n .then((users) => setUsers(users))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\n};\n","import React from 'react';\n\nconst SvgDownload: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M19 16v3H5v-3H3v3c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-3h-2zm-6-3.33l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z\"\n id=\"Download_svg__a\"\n />\n </defs>\n <g transform=\"translate(-3 -3)\" stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Download_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Download_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#fff\" mask=\"url(#Download_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgDownload;\n"],"names":["Component","PlaceholderComponent","WithAsyncMount","forwardRef","componentProps","ref","useAsyncMount","displayName","useStyles","makeStyles","expandButton","backgroundColor","expandIcon","transition","expanded","transform","props","styles","className","otherProps","SmallIconButton","icon","ArrowRight","size","disableRipple","iconClassName","classnames","toolbar","minHeight","padding","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","children","classes","Toolbar","root","Typography","variant","i18n","getRelatedEntityUri","comment","entityUri","index","relatedObjectUris","indexOf","formatDate","time","createEditedCommentUri","commentId","createEditedReplyUri","reply","replyId","transformPlainTextValueToValueWithMentions","plainTextValue","mentions","value","mention","split","join","theme","marginBottom","color","palette","divider","label","paddingLeft","borderLeft","text","primary","link","main","textDecoration","CommentTarget","entity","useSelector","mdm","metadata","entitiesMap","useContext","EntitiesMapContext","Box","objectType","CollaborationObjectTypes","attributeTypeUri","getAttributeTypeUriByValueUri","objectId","type","attributeType","findAttributeTypeByUri","relationTypeUri","find","startsWith","EntityUriLink","getEntityUriForLink","getLabel","relatedEntityUri","uri","relatedEntity","getEntityId","getContent","wordBreak","CommentContent","users","UsersContext","processor","trigger","arr","currentStr","process","i","length","currentCharacter","nextCharacter","isLastCharacter","includes","slice","push","processMentions","content","namedUsers","user","username","Link","href","email","map","el","idx","Fragment","key","width","height","secondary","Avatar","item","toUpperCase","fontFamily","border","borderRadius","outline","boxShadow","maxHeight","overflowY","transitions","create","position","zIndex","textShadow","pointerEvents","TextFieldWithMentions","onChange","_","uniq","display","data","id","displayTransform","appendSpaceOnAdd","isEditing","textField","maxWidth","form","alignItems","avatar","marginRight","buttons","marginLeft","marginTop","button","getPlaceholder","status","SendMessageArea","inputRef","popperRef","isEditingComment","isEditingReply","onCancel","focused","setFocused","useState","createReply","createComment","sending","editComment","editReply","getCommentState","updateCommentState","clearCommentState","CollaborationContext","commentUri","isNil","createNewReplyUri","createCommentUri","defaultCommentState","commentOrReply","getDefaultCommentState","hasValue","trim","shouldShowButtons","clearValue","useEffect","current","update","buttonSize","onSubmit","e","preventDefault","cond","always","replies","T","action","request","then","catch","console","log","disabled","onFocus","onBlur","placeholder","Button","getButtonText","onClick","header","createdAt","body","commentTarget","message","dropdownMenu","Comment","onReply","useRef","createdBy","createdTime","canChangeComment","resolveThread","reOpenThread","deleteComment","updateIsEditingComment","useCallback","focus","menuItems","useMemo","sendMessageArea","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","popoverProps","PopoverClasses","menuId","component","marked","fontStyle","RepliedComment","canChangeReply","deleteReply","updateIsEditingReply","flexGrow","messages","repliedComment","CollaborationItem","memo","messagesRef","addButton","visibility","COMMENTS_CONTAINER_VISIBILITY_AREA","showAlways","fillOpacity","fill","fillRule","viewBox","xmlns","d","justifyContent","cursor","childrenWrapper","top","left","right","bottom","CommentButton","React","Tooltip","AddComment","paddingRight","headerInfo","counter","resolveButton","popper","collaborationItem","hasScroll","scrollWidth","CollaborationPopup","anchorEl","onClose","open","setScrollWidth","loading","itemsCount","PopupWithArrow","placement","showForDisabled","DoneIcon","node","offsetWidth","clientWidth","onChangePopupVisibility","allowOnlyOneComment","setAnchorEl","shouldOpenPopup","setShouldOpenPopup","isOpenPopup","Boolean","currentComment","commentsMap","getComment","clearCurrentComment","objectTypes","showComments","openComments","filter","reverse","shouldShowAddCommentButton","isOpenPopupWithNewComment","useDidUpdateEffect","additionalRelatedObjectUris","RelatedObjectUrisContext","allRelatedObjectUris","event","currentTarget","handleClickCommentButton","RNDContext","createDndContext","HTML5Backend","DragAndDrop","DNDElement","manager","DndProvider","dragDropManager","useDNDProviderElement","buttonRoot","active","fade","selected","paper","minWidth","menuItem","menuText","letterSpacing","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemRenderer","onMenuClose","identity","tooltip","selectable","Checkbox","checked","buttonContent","onMenuOpen","DefaultMenuItemRenderer","ButtonComponent","buttonRef","isOpen","setIsOpen","handleToggle","stopPropagation","undefined","Menu","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","caption","errorMessage","hasError","wrapper","error","FormHelperText","helperText","margin","stroke","strokeWidth","image","imageWidth","imageHeight","objectFit","verticalAlign","defaultContainer","defaultImage","hideImage","ImageLoadingState","ImageSizesStyles","SMALL","MEDIUM","LARGE","OVERRIDE","src","containerClassName","overlay","sizeStyles","imageLoadingState","setImageLoadingState","imageIsLoading","imageIsLoaded","isEmptyValue","onLoad","onError","alt","DefaultImage","CheckedIcon","Icon","CheckCircleIcon","RadioButtonUncheckedIcon","userSelect","selectionMode","checkedIcon","actions","actionButton","dropDownMenuButton","canBeSelected","onDeselect","noop","onSelect","onShareLink","onSetAsDefault","onDelete","onDownload","hovered","setHovered","prop","toggleSelected","ifElse","equals","showCheckBox","showActions","showDeselectButton","onMouseEnter","onMouseLeave","target","DownloadIcon","xmlnsXlink","xlinkHref","mask","backdrop","appBar","background","closeButton","closeIcon","headerLeft","flex","headerCenter","headerRight","modeSwitcher","Mode","ImageGalleryDialog","mode","onChangeMode","modes","GALLERY_MODE","ViewComfyIcon","DETAILS_MODE","DetailsIcon","Dialog","BackdropProps","fullScreen","AppBar","colorPrimary","CloseIcon","ModeSwitcher","modeId","DialogContent","inRouterContext","useInRouterContext","linkClassName","to","replace","window","location","origin","popoverRoot","arrow","boxSizing","shadows","arrowRef","setArrowRef","Popper","modifiers","preventOverflow","enabled","boundariesElement","element","modal","ClickAwayListener","onClickAway","child","Array","from","document","querySelectorAll","some","contains","Paper","isRequired","RequiredMark","lineStyle","decorator","arrowWidth","borderBottom","plain","horizontalLineWidth","container","ChipWithTooltip","Chip","description","showDescription","FeaturesContext","tooltipPlacement","Description","alignContent","flexDirection","mainImageContainer","mainImage","arrowButton","arrowButtonPrev","arrowButtonNext","thumbnails","overflowX","gridContainer","thumb","inactiveThumb","Thumbnails","attributeValues","setAttributeValueIndex","attributeValueIndex","gridRef","containerScrollLeft","scrollLeft","containerWidth","currentElementPosition","scroll","IMAGE_WIDTH","Grid","wrap","direction","spacing","Image","getImageAttributeOvThumbnailUrl","ImageDetailsViewCarousel","attributeValue","mainImageSrc","getImageAttributeOvPreviewUrl","NavigateBeforeIcon","NavigateNextIcon","SYSTEM_ATTRIBUTES_TITLES","CreationTime","CreationDate","Dimensions","MimeType","Size","Url","UrlPreview","UrlThumbnail","CdnUrl","CdnUrlPreview","CdnUrlThumbnail","getFormattedSystemImageAttributeValue","name","path","moment","CreationTimestamp","format","Height","Width","Number","toFixed","filterByNotSystemAttributeTypes","attrTypes","system","filterByFieldsOrder","keys","fieldsOrder","includeNames","excludeNames","order","filteredKeys","sort","a","b","indA","indB","getNotSystemAttributesList","attrValue","attrType","notSystemAttrTypes","attributes","Object","reduce","result","values","isLink","canAdd","MetaInfoHeader","onAddAttributes","moreAttrTypes","MoreAttributesButton","dense","onApply","parentUri","Divider","float","wordWrap","MetaInfoItem","MetaInfoList","imageAttributeFieldsOrder","isViewMode","systemAttributesList","notSystemAttributesList","AttributesPager","drawLines","titleClassName","contentClassName","cancelButton","MetaInfoForm","hasChanges","onDeleteAttribute","onChangeAttribute","shouldShowActionButtons","showEmptyEditors","isTempUri","darkTheme","darkMuiTheme","createMuiTheme","MetaInfo","initialAttributeValue","addAttributes","changeAttribute","deleteAttribute","clearLocalChanges","applyLocalChanges","dispatch","useDispatch","viewId","ViewIdContext","setAttributeValue","prevAttrValue","attribute","addAttribute","nestingLevel","editAttribute","removeAttribute","profile","useEditMetaInfo","isEditableMode","headerTitle","bodyWrapper","formControlLabel","checkboxLabel","checkbox","ImageDetailsViewSidebar","handleSetAsDefault","modifiedEntity","state","entityToShow","imageAttributeConfig","default","isDefault","setIsDefault","defaultProfilePic","handleChange","FormControlLabel","control","details","ImageDetailsView","currentAttributeValueUri","setCurrentAttributeValueUri","onChangeAttributeValueIndex","findIndex","GalleryView","items","selectedItems","onSelectImage","onDeselectImage","onClickImage","renderImageActionsOverlay","ImageActionsOverlay","selectButton","textTransform","HeaderLeft","onSelectAll","onClearAll","selectedAllItems","underline","downloadButton","shareButton","deleteButton","HeaderRight","onShare","onUpload","startIcon","CloudUpload","LinkIcon","DeleteIcon","setSelectedItems","setMode","imageItems","downloadURL","getImageAttributeOvUrl","handleShareLink","propEq","handleDelete","isGalleryMode","isDetailsMode","hasSelectedItems","isHasSelectedItemsOrDetailsMode","isShowDeleteButton","isShowUploadButton","pluck","forEach","downloadURLs","pipe","imageBox","flexShrink","flexWrap","moreButtonContainer","moreButton","number","textAlign","renderImage","countFixedItems","imageSize","DEFAULT_IMAGE_SIZE","paging","showNonOv","requestNextPageOfAttributeValues","totalVisibleValues","totalOvValues","totalValues","attributeTypeName","defaultMaxValues","lastWidth","maxItems","setMaxItems","hiddenItemsLength","setHiddenItemsLength","isBlockImageGalleryDialog","BlockImageGalleryDialogContext","isOpenDialog","setIsOpenDialog","adjustMaxItemsToScreenWidth","imageMargin","maxItemsPerScreen","Math","floor","hasHiddenImage","IMAGE_MIN_VISIBLE_WIDTH","handleResize","handleOpenImageGalleryDialog","handleCloseImageGalleryDialog","handleDownload","urls","url","isAbsoluteUrl","URL","host","isExternalUrl","iframe","createElement","setAttribute","appendChild","setTimeout","removeChild","download","pop","getFilenameFromURL","click","downloadImagesByURLs","navigator","clipboard","writeText","insertDefaultImageByAttrUri","renderImageProps","onOpenImageGalleryDialog","handleWidth","onResize","IMAGE_HEIGHT","borderColor","nonOvValues","nonOvTotal","attributeUri","entityOrRelationUri","getEntityUriFromAttributeUri","isEntityUri","getEntityUri","EntityContext","ui","screen","isComplexAttribute","DataTypeValue","getAttributeValue","dataTypeDefinition","getAttrDataTypeDefinition","rich","generatePivotingValue","pivotingAttributes","pivotingChildrenUris","pivotingAttribute","isArray","getPivotingChildrenUris","pivotingChildren","analyticsAttributes","acc","valueToString","valueContainer","lookupCode","isOv","preparePivotingAttributeValue","DataTypes","Date","getTime","isNaN","PivotingUriLink","uiPath","mdmModule","generatePivotingUrl","UrlGeneratorsContext","JSON","stringify","entityTypeLabel","paddingBottom","headerCount","footer","profileIcon","entityContainer","entityLabel","seeAllButton","usePivotingTooltipStyles","PivotingTooltipContent","config","generatedValue","onSeeAllClick","entities","setEntities","total","setTotal","safePromise","useSafePromise","globalSearchRequestOptions","entityType","shouldShowSeeAllButton","filters","convertPivotingValueToSearchFilters","options","max","Promise","all","getFilteredEntities","getTotals","results","hasEntityTypeLabel","visibleEntity","EntityAvatar","avatarClassName","PivotingTooltip","contentStyles","pivotingAttributesList","PivotingAttributeContext","isNestedAttribute","isNested","pivotingValue","isPivotingAttribute","fromEntries","entries","getLastUriPart","convertSimpleAttributePivotingValue","handleSeeAllClick","mdmModuleUi","interactive","popup","PivotingIcon","lazy","errors","crosswalks","propsForSimpleAttribute","NestedAttribute","ReferenceAttribute","SimpleAttributeEditor","isReltioCrosswalk","build","AttributesList","parentAttributeType","alwaysVisibleTypeUris","ALWAYS_VISIBLE_TYPE_URIS","additionalControlsRenderer","hasDeletionsMap","setHasDeletionsMap","setHasDeletions","attrTypeUri","prevMap","canCreateParentAttrType","checkCanCreateAttribute","source","isSpecialAttribute","both","isAnalyticAttribute","getSource","nameProp","getNameProp","singleValue","isRoleAttrType","isTagAttrType","has","getMoreAttrTypes","getCreatableAttributeTypes","pinnedAttributes","PinnedAttributesContext","pagersData","getAttributesListForEditMode","alwaysVisiblePagersData","regularPagersData","splitPagersData","onAddMoreAttributes","attributeTypes","getParentUri","decoratorProps","hasDeletionsContextValue","BranchDecorator","parent","HasDeletionsContext","concat","propTypes","PropTypes","ModeType","valueCaption","hasMinValue","hasMaxValue","noMaxValue","not","minValueIsOne","propSatisfies","minValue","generateMinCardinality","minValueCaption","generateMaxCardinality","maxValue","maxValueCaption","getCardinalityMessage","allPass","minCardinality","CardinalityMessage","cardinality","CardinalityType","filterNewValues","withContext","ScrollToErrorContext","contextValue","highlightedError","isAttributeTypeError","nonVisibleValues","onDeactivateError","visibleValuesCount","setVisibleValuesCount","hadDeletions","setHadDeletions","required","checkIsEditableMode","errorClassName","useScrollToAttributeError","isPinned","isEmptyValues","showEmpty","emptyEditorValue","createNewAttribute","onAddOneMore","newValuesCount","totalProp","add","totalNonVisibleValues","hasPaging","showMore","showLess","shownValues","lastIndex","hiddenValuesCount","classNames","titleWrapper","Title","DescriptionIcon","OvIcon","ovIcon","ErrorMessage","typeError","attributesWrapper","Attribute","ownError","getAttributeOwnError","ShowMore","moreNumber","min","valueNumber","ShowLess","roleContainer","components","MultiValue","MultiValueChip","Roles","getRolesForEntityType","role","formattedValues","roles","EntityAttrTypes","SimpleDropDownSelector","isMulti","getQuery","searchQuery","buildFilterQueryString","fieldName","filtersWithSearch","orderType","getSuggestions","getFacets","query","response","tags","TypeaheadEditor","fullWidth","multiple","hasDeletions","hasDeletionsProp","hasDeletionsState","setHasDeletionsState","updateHasDeletions","isActivenessAttrType","renderValue","ImageLineRenderer","ImageAttributesLine","RENDERER_TYPES","Infinity","partitionByOv","partition","ovValues","visibleValues","commonProps","special","isImage","imageLine","renderAttribute","mapDispatchToProps","connect","getAttributePagerActiveTypeErrorMessage","opacity","textIndent","complexWrapper","editor","titleContainer","deleted","editedLabel","errorWrapperHelperText","ComplexAttribute","attributeTypesList","hideDeleteButton","isHighlightedPath","expandedProp","edited","isNew","defaultExpand","setExpanded","canDelete","checkCanDeleteAttribute","showDeleteButton","hasDescendantsWithErrors","hasAttributeDescendantsWithErrors","hasAnalyticValue","attributeListEntity","getErrorMessage","ArrowExpandButton","ErrorWrapper","AttributeTypeType","NestedAttributeValueType","ReferenceAttributeValueType","ComplexAttributeType","propOr","any","pathEq","defaultAttributeTypesSelectionStrategy","EntityCreator","attributeTypesSelectionStrategy","ownProps","emptyEntityLabel","entityAvatar","entitySecondaryLabel","useSingleValueStyles","paddingTop","linkValue","useGroupStyles","addLabel","groupHeading","addIcon","useClearIconStyles","clearIcon","EntityOption","innerRef","innerProps","selectOption","secondaryLabel","EntityTypeIcon","ExpandedValueTooltip","EntityType","SingleValue","selectProps","currentEntityType","menuIsOpen","disableLinkClick","generateEntityUrl","valueProps","onMouseDown","ClearIndicator","onClear","IconButton","Clear","Group","ComponentsGroup","inputValue","onCreate","Add","creatorWrapper","EntitySelector","entityTypesUris","setInputValue","entityTypes","getEntityType","isAvailableEntityType","handleCreate","entityTypeUri","groupMode","isEmpty","createLabel","isTempEntity","groupComponent","GroupHeading","EmptyStub","clearComponent","TextFieldProps","dropDownSelectorProps","textFieldProps","DropDownSelector","onInputChange","getOptions","typeAheadSearch","newOptions","addDummyOptionToEmptyOptionList","filteredEntityTypes","option","buildEntityOptions","getOptionLabel","Option","isClearable","ConnectionEntityType","MetadataType","inputRoot","input","isEmptyField","ImageByUrlField","onSend","setValue","setError","InputBase","newValue","isCorrectUrl","RegExp","test","IMAGE_TYPES","SelectImageButton","onAppendFile","onInput","files","style","accept","htmlFor","x1","y1","x2","y2","stopColor","offset","stopOpacity","cx","cy","r","rx","ry","isActive","TargetBox","canDrop","isOver","drop","useDrop","NativeTypes","FILE","collect","monitor","UploadIcon","MAX_IMAGE_SIZE","DividerWithText","ErrorSnackbar","Snackbar","dialogPaper","targetBox","UploadImageDialog","imageServicePath","environment","tenant","setLoading","uploadImage","uploadImageRequest","res","err","getRequestErrorMessage","finally","isCorrectType","LinearLoadIndicator","uploadContainer","uploadButton","uploadIcon","isVisibleUploadDialog","setIsVisibleUploadDialog","toggleVisibilityUploadDialog","visible","handleAddAttributes","generateUri","ov","handleDeleteAttribute","param","newDefaultPic","methods","imageUrl","CloudUploadIcon","filterItems","curry","filterText","toLowerCase","preparedGroupedItems","sortingFn","GROUP_NAMES","moreAttributes","popupContainer","moreAttributesPopup","buttonLabel","subHeader","noResultsCaptionContainer","popupTitle","setFilter","hasGroups","parentGroupLength","attributesGroupLength","strategy","SortingStrategy","item1","item2","localeCompare","_item1","_item2","preparedParentGroupItem","parentGroup","preparedAttributesGroupItems","attributesGroup","flattenGroupedItemsData","useMoreAttributesItems","handleListItemClick","append","reject","getItemSize","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","onSelectFocusedItem","focusIndexRef","groupsCount","listHeight","containerHeight","listItemRenderer","level","isChecked","isFocused","AttributeListItem","Highlighter","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","renderItem","gutterBottom","evaluateDeepEntityLabel","dataLabelPattern","NestedAttributeType","onDeleteModifiedEntity","onUpdateModifiedEntity","isSimple","referencedEntity","getReferencedEntityFromAttrValue","referencedRelation","getReferencedRelationFromAttrValue","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","referencedEntityType","allCrosswalks","addReferencedRelationCrosswalks","referencedEntityMissedError","getReferencedEntityActiveError","selectedEntity","getReferencedEntityUri","getReferencedEntityTypeUri","editableAttrTypes","getReferencedRelationAttrTypesUris","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","onChangeEntity","initialAttrValue","isInitialEntity","getReferencedEntityUriFromAttrValue","modifiedValue","refEntity","convertReferencedEntityForAttrValue","refRelation","createReferencedRelationForAttrValue","getErrorId","onCreateEntity","initValue","newEntityAttrTypes","newEntity","createTemporaryEntity","canChangeReferencedEntity","checkCanEditAttribute","canCreateReferencedEntity","checkMetadataForCreate","isDisabled","ReferenceAttributeType","DLEditorContextCache","errorWrapper","alignSelf","canCreate","canEdit","showToEdit","dependentLookupEditorContext","isDependentLookupAttrType","valueUri","parents","missedParentsAttributeTypes","parentNodesValues","flatMap","parentNode","dependentLookupCode","modifiedEntities","connections","ownParentNodesValues","filterRelatedParentValuesForDependentLookupValueUri","parentValues","possibleParentBaseTypeUris","getAttributeValuePath","defaultTo","getBaseUri","prepend","typeUri","areOneHierarchyUris","typesMap","codeValues","getParents","isBlocked","missedParentsMessage","missedAttributeTypes","labels","words","word","context","cachedContext","fromCache","getDependentLookupEditorContext","attributeValueToEditorValue","deactivateError","onValueEditorChange","prepareChangeData","showAddButton","deletedProps","isProfilePerspectiveView","ProfilePerspectiveViewContext","autopopulationContextValue","autocompleteConfig","autopopulationEnabled","isAutopopulationEnabled","autopopulationId","isTouched","onTouch","useAutopopulationContextValue","DependentLookupAutopopulationContext","DataTypeValueEditor","attributeUriToSearchUri","AddIcon","getErrorType","ErrorType","SimpleAttributeValueType","AttributeErrorType","withAsyncMount","parseBoolean","utils","editorValueToAttributeValue","editorValue","toString","valueOf","getFilteredAttrTypes","includeUris","excludeUris","flatten","__","SimpleAttribute","getAttributesListForReadMode","visibleAttributePagersData","commonStyles","titleRow","descriptionIcon","paddingWrapper","paddingWrapperWithLines","useOneLineStyles","collaborationWrapper","titleIcon","useMultiLineStyles","isRelationAttrType","inlined","CommentsContainer","createRelatedObjectUris","dataReltioId","useCommonStyles","insertAttribute","historyPalettes","HistoryOperations","appearance","HistoryDiffContext","attributeAppearance","getHistoryAppearanceBySpecialAttributeValue","historyClassName","getHistoryAttributeClassName","getRoleLabel","Role","currentEntity","ownEntity","generateTagUrl","InternalLink","tag","dataTenant","getDataTenantEntityUri","Tag","isOneLineRender","render","complexContainer","labelContainer","spacer","LabelRenderer","RightSlot","ovValueStyles","useOvValueStyles","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","body2","ovFalse","deleteAttributeImage","svg2Url","updateAttributeImage","outlineOffset","updateAttribute","imageAppearance","getHistoryAppearanceByUri","historyAttributesClassName","pivotingTooltip","attributeLabel","SearchHighlighter","getAttributeTypeSubAttributes","relationshipLabel","refEntityURI","attributeTypeList","commentsContainer","multilineAttribute","dataTypeValue","inactive","AsyncMountContext","queueSizeThreshold","Provider","comments","getComments","getCommentsCount","pageToken","CollaborationContextProvider","collaboration","useUsers","highlightError","scrollIntoRef","ScrollToErrorProvider","highlightTimer","scrollIntoView","behavior","block","clearTimeout","queueSize","isFirstRunRef","shouldMount","setShouldMount","timerRef","highlightBeforeStyles","animationName","animationDuration","animationIterationCount","highlightWarning","simpleAttribute","severity","ErrorSeverity","getAllUsersForTenantMemoized","memoizeOne","servicesPath","getAllUsersForTenant","setUsers","warn"],"sourceRoot":""}
|