{"version":3,"file":"static/js/410.559436f7.chunk.js","mappings":"8OASaA,EAA6D,SAACC,GACzE,IAAQC,EAAsCD,EAAtCC,UAAWC,EAA2BF,EAA3BE,UAAWC,EAAgBH,EAAhBG,YAC9B,OACE,UAAC,IAAD,CAAOC,OAAQD,EAAaE,OAAQJ,EAApC,WACE,SAAC,IAAD,CAAaI,OAAQJ,EAArB,2CACA,SAAC,IAAD,mJACA,UAAC,IAAD,YACE,SAAC,IAAD,CAAQK,MAAM,UAAUC,QAASL,EAAjC,iBAGA,SAAC,IAAD,CAAQI,MAAM,UAAUC,QAASN,EAAjC,8BAMP,C,iQCPYO,EAAqD,SAAAR,GAChE,IAAQS,EAAaT,EAAbS,SACR,EAAwBC,EAAAA,UAAe,GAAvC,eAAOC,EAAP,KAAaC,EAAb,KACA,EAAgDF,EAAAA,UAAe,GAA/D,eAAOG,EAAP,KAAyBC,EAAzB,KAEMC,EAAqB,WACzBD,GAAqBD,EACtB,EAUD,OACE,iCACE,SAACG,EAAA,EAAD,CACEC,QAASR,EAASS,YAClBd,OAAQS,EACRM,YAAaJ,EACbK,MAAOX,EAASY,GAChBC,MAAOb,EAASa,MAChBC,UAAWd,EAASc,aAGtB,UAACC,EAAA,EAAD,CAAWC,UAAU,iBAArB,WACE,UAACC,EAAA,EAAD,YACE,SAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,UACE,UAACF,EAAA,EAAD,YACE,UAACC,EAAA,EAAD,CAAKC,GAAI5B,EAAM6B,WAAa,EAAI,EAAGJ,UAAU,YAA7C,WACE,gBAAKA,UAAU,2BAA2BK,SAAUC,EAAAA,EAAAA,WAAwBC,SAAUC,EAAAA,EAAAA,YAAtF,SACGxB,EAASc,aAEZ,iBAAKE,UAAU,0BAAf,WACE,iBAAMK,SAAUC,EAAAA,EAAAA,gBAA6BC,SAAUC,EAAAA,EAAAA,QAAvD,SACGxB,EAASyB,yBAEXC,EAAuB1B,EAAS2B,qBAAsB3B,EAAS4B,4BAC9D,SAACC,EAAA,EAAD,CACEhC,MAAM,YACNmB,UAAW,uBAAyBhB,EAAS8B,cAAgB,mBAAqB,IAClFT,SAAUC,EAAAA,EAAAA,QACVS,SAAU/B,EAAS8B,cAAgBE,EAAAA,EAAAA,mBAAiCA,EAAAA,EAAAA,gBAJtE,SAMGhC,EAAS8B,cAAgB,YAAc,gBAG3C9B,EAASiC,kBACR,SAACC,EAAA,EAAD,CAAQrC,MAAM,UAAUmB,UAAU,oDAAoDlB,QAASQ,EAA/F,4BAMN,UAACY,EAAA,EAAD,CAAKC,GAAI5B,EAAM6B,WAAa,EAAI,EAAGJ,UAAU,OAA7C,WACE,gBAAKA,UAAU,OAAf,UACE,SAACmB,EAAA,EAAD,CACEC,GAAIpC,EAASqC,aACbrB,UAAU,iBACVe,SAAU/B,EAASqC,aAAe,YAClCxB,OAAOyB,EAAAA,EAAAA,IAAOtC,EAASa,OAAO0B,WACxBC,IAAKlB,EAAAA,EAAAA,SAAsBmB,IAAKnB,EAAAA,EAAAA,aALxC,UAOE,kBAAMS,SAAU/B,EAASqC,aAAe,YAAaK,OAAQC,EAAAA,EAAAA,OAA7D,WACE,iBAAMtB,SAAUC,EAAAA,EAAAA,OAAoBS,SAAUC,EAAAA,EAAAA,cAC9C,iBAAMX,SAAUC,EAAAA,EAAAA,UAAuBS,SAAUC,EAAAA,EAAAA,iBACjD,iBAAMY,MAAO5C,EAASqC,aAAe,OAAQhB,SAAUC,EAAAA,EAAAA,MAAmBC,SAAUC,EAAAA,EAAAA,QAApF,UACGc,EAAAA,EAAAA,IAAOtC,EAASa,iBAKzB,gBAAKG,UAAU,eAAf,SACGhB,EAAS6C,eACR,iBAAM7B,UAAU,yBAAyBK,SAAUC,EAAAA,EAAAA,iBAA8BC,SAAUC,EAAAA,EAAAA,YAA3F,SACGxB,EAAS6C,0BAOtB,SAAC3B,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,UAACF,EAAA,EAAD,CAAKD,UAAU,YAAf,WACE,UAACE,EAAA,EAAD,CACEC,GAAI,GACJH,UAAU,wBACV4B,MAAO5C,EAASqC,aAChBhB,SAAUC,EAAAA,EAAAA,iBACVC,SAAUC,EAAAA,EAAAA,UALZ,WAOE,gBAAKR,UAAU,mBAAf,SAAmChB,EAASS,eAC5C,gBAAKO,UAAU,oBAAf,cACgC8B,IAA7B9C,EAAS+C,iBAAiC/C,EAAS+C,gBAAgBC,OAAS,GAAI,qCAAKhD,EAAS+C,gBAAgBE,KAAK,MAAnC,OAAgD,UAGrI,SAAC/B,EAAA,EAAD,CACEC,GAAI,EACJH,UAAU,mDACVlB,QAAS,SAAAoD,GACPA,EAAEC,iBACFhD,GAASD,EACV,EACDkD,QAjGM,SAACF,GACnB,GACO,UADCA,EAAEG,IAENlD,GAASD,EAGd,EA4FaoD,SAAU,EACV,kBAAepD,EATjB,UAWE,4BACE,SAAC,EAAAqD,KAAD,CAAMC,KAAMC,EAAAA,SAAAA,WAAqBC,SAAU,GAAI1C,UAAYd,EAAgC,aAAzB,yBACjEA,GAAO,iBAAMc,UAAU,UAAhB,0CAA+D,iBAAMA,UAAU,UAAhB,qDAMjF,SAACC,EAAA,EAAD,WACE,SAACC,EAAA,EAAD,CAAKF,UAAU,OAAf,UACE,SAAC2C,EAAA,EAAD,CAAazD,KAAMA,EAAMS,MAAOX,EAASY,cAMpD,EAED,SAASc,EAAuBkC,EAA2BC,GAEzD,OACGD,IAAsBE,EAAAA,EAAAA,yBAA8CF,IAAsBE,EAAAA,EAAAA,yBAFnD,CAAC,GAAI,GAAI,IAGdC,SAASF,EAE/C,C,ueCrIYG,EAAb,0CACE,WAAYzE,GAA6B,IAAD,yBACtC,cAAMA,IACD0E,MAAQ,CAAEC,gBAAgB,EAAOC,qBAAqB,GAFrB,CAGvC,CAJH,qCAME,WAAU,IAAD,OAEP,OADuBC,KAAKH,MAAMC,gBAG9B,kBAAMlD,UAAU,yCAAhB,WACE,SAACqD,EAAA,EAAD,CAASC,GAAG,OAAOC,UAAU,SAASC,KAAK,KAAKC,KAAK,SAAS,cAAY,SAD5E,qBAOA,iCACE,SAACnF,EAAA,EAAD,CACEI,YAAa0E,KAAKH,MAAME,oBACxB3E,UAAW,kBAAM,EAAKkF,SAAS,CAAEP,qBAAqB,GAA3C,EACX1E,WAAS,iBAAE,8FAAkB,EAAKkF,aAAa,EAAKpF,MAAMqF,cAA/C,sFAEb,UAACzC,EAAA,EAAD,CACEC,GAAG,IACHpB,UAAU,0CACVlB,QAAO,mCAAE,WAAMoD,GAAN,wEACPA,EAAEC,iBADK,SAED,EAAK0B,cAFJ,2CAAF,sDAHT,2BAQY,iBAAM7D,UAAU,qBAAhB,kCAKnB,GApCH,4DAsCE,kFACMoD,KAAK7E,MAAMuF,wBADjB,gBAEIV,KAAKM,SAAS,CAAEP,qBAAqB,IAFzC,sCAIUC,KAAKO,aAAaP,KAAK7E,MAAMqF,cAJvC,gDAtCF,mHA8CE,WAA2BA,GAA3B,8EACER,KAAKM,SAAS,CAAER,gBAAgB,EAAMC,qBAAqB,IAD7D,UAEuBY,EAAAA,EAAAA,IAAe,yBAA0B,CAC5DC,OAAQC,EAAAA,MAASL,GACjBM,iBAAkB,SAACC,GAAD,OAAYF,EAAAA,UAAaE,EAAzB,EAClBC,aAAc,SALlB,OAEQC,EAFR,OAOEC,IAAAA,OAAiBD,EAAQ,gBACzBjB,KAAKM,SAAS,CAAER,gBAAgB,IARlC,gDA9CF,4DAAmCjE,EAAAA,W,4CCkG7BsF,EAA+C,CACnD,EAAK,eACL,EAAK,eACL,EAAK,eACL,EAAK,qBACL,EAAK,kBACL,EAAK,oBACL,EAAK,0BACL,EAAK,yBAGDC,EAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAK,OAAK,QAIpJC,EAA8B,qFAC9BC,EAA2B,OAC3BC,EAA2B,uCAEjC,SAASC,IAAmE,IAArDC,EAAoD,uDAAtC,GAAIC,EAAkC,uDAAZ,GAC7D,OAAOD,EAAIE,QAAQ,MAAOD,EAC3B,CAED,SAASE,EAAcC,GACrB,OAAe,OAAXA,GAA8B,KAAXA,EAAsB,GACtC,+BAA8BA,EAAS,WAC/C,CAED,SAASC,EAAYC,GACnB,OAAa,OAATA,EAAsB,GACnB,wBAAuBA,EAAO,WACtC,CAGD,SAASC,EAAqBC,GAC5B,IAAIC,EAAY,GAChB,OAAY,OAARD,EACK,SAGMvD,IAAXuD,EAAI,KACNC,EAAYN,EAAcK,EAAI,KAGjB,MAAXA,EAAI,KACNC,EAAY,yCAAwCD,EAAI,GAAK,aAGhD,MAAXA,EAAI,KACNC,EAAY,4CAAwCD,EAAI,GAAK,aAGhD,MAAXA,EAAI,KACNC,EAAY,4CAA2CD,EAAI,GAAK,kBAGnDvD,IAAXuD,EAAI,KACNC,GAAwBJ,EAAYG,EAAI,KAEnCC,EACR,CAED,IAiCYC,EAjCNC,EAAiI,CACrIC,eAAgB,GAChBC,KAAM,GACNC,2BAA4B,GAGxBC,GAAU,KACVC,IAAW,IAAIC,MAAOC,cAEtBC,GAAgD,CACpDC,KAAM,EACNC,GAAIC,EAAAA,SAAAA,IACJC,IAAI,IAAIN,MAAOC,cACfM,GAAIT,GACJU,EAAGC,EAAAA,GAAAA,GAAAA,IACHC,GAAG,EACHC,EAAGC,EAAAA,iBACHC,GAAID,EAAAA,iBACJE,EAAGF,EAAAA,iBACHG,EAAGH,EAAAA,iBACHI,IAAK,GACLC,GAAG,EACHC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,GAAIT,EAAAA,iBACJU,GAAI,GACJC,KAAMX,EAAAA,iBACNY,IAAKZ,EAAAA,iBACLa,GAAIb,EAAAA,iBACJc,GAAI,KAGN,SAAYjC,GAAAA,EAAAA,kBAAAA,KAAAA,EAAAA,eAAAA,IAAAA,CAAZ,CAAYA,IAAAA,EAAAA,CAAAA,IAKZ,IAAMkC,GAAqB,SAACC,GAAD,MAAwD,KAArBA,GAA2BC,OAAOC,MAAMF,EAA3E,EAErBG,GAAY,SAAC1C,GAAD,OAAkB2C,KAAKC,IAAID,KAAKE,IAAI7C,EAAMS,IAAUC,GAApD,EAElB,SAASoC,GAAiBC,GACxB,MAAO,CACLC,WAAYD,EAAIjC,KAChBmC,eAAgBF,EAAIhC,GACpBmC,qBAAsB9B,EAAAA,GAAAA,MAAmB,SAAA+B,GAAG,OAAIA,EAAIjG,MAAQ6F,EAAI5B,CAApB,KAA0BC,EAAAA,GAAAA,GACtEgC,eAAgBL,EAAI1B,EACpBgC,UAAWX,GAAUK,EAAI7B,IACzBoC,QAASZ,GAAUK,EAAI9B,IACvBsC,YAAaR,EAAIrB,EACjB8B,oBAAqBT,EAAIpB,IACzB8B,0BAA2BV,EAAInB,EAC/B8B,MAAOX,EAAIlB,IACXC,IAAKiB,EAAIjB,IACTC,IAAKgB,EAAIhB,IACT4B,YAAaZ,EAAId,GACjB2B,OAAQb,EAAIZ,IACZ0B,cAAed,EAAIb,KACnB4B,QAASf,EAAIX,GACb2B,SAAUC,GAAoBjB,EAAIV,IAErC,CAED,SAAS2B,GAAoBC,EAAoBC,GAC/C,IAAMC,GAAOC,EAAAA,EAAAA,GAAMH,EAAYI,EAAAA,YAAAA,SAAsB,IAAI1D,MACzD,OAAO8B,MAAM0B,EAAKG,WAAaJ,EAAeC,CAC/C,KAEKI,GAAAA,SAAAA,IAAAA,EAAAA,EAAAA,GAAAA,EAAAA,GAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAinCH,OAjnCGA,EAAAA,EAAAA,KAAAA,MAAAA,EAAAA,CAAAA,MAAAA,OAAAA,KACYzG,OAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,CACd0G,aAAc,CAAEC,UAAW,EAAGC,UAAW,GAAIC,YAAa,EAAGhG,yBAAyB,IACnFmE,GAAiB,EAAK1J,MAAMwL,mBAAZ,IACnBC,YAAa,GACbC,QAAS,GACTC,cAAc,EACdC,4BAA6B,GAC7BC,kBAAmB,GACnBC,gBAAiB7E,EACjB8E,aAAc,GACdC,WAAY,GACZ1B,MAAO,GACP5B,IAAK,GACLC,IAAK,GACLsD,eAAgB,CAAC,CAAEC,MAAO,GAAI7K,GAAI,GAAI8K,SAAU,KAChD5B,YAAa,OAwER6B,gBAAkB,SAACC,GAAD,OAA0B,SAAC1I,GAClDA,EAAEC,iBACE,EAAKc,MAAMoF,uBAAyBuC,GACtC,EAAKlH,SACH,CACE2E,qBAAsBuC,EACtBrC,eAAgBqC,EAAMC,8BAA+B,EACrD1C,WAAY,GAEd,EAAK2C,mBAGV,CAZwB,IAclBC,cAAgB,kBAAM,EAAKrH,SAAS,CAAE6E,gBAAiB,EAAKtF,MAAMsF,eAAgBJ,WAAY,GAAK,EAAK2C,mBAAxF,IAChBE,iBAAmB,kBAAM,EAAKzM,MAAM0M,sBAAjB,IAiMlBC,iBAAmB,WACzB,IAAMC,EAAqC,EAAKlI,MAAMyF,YAAY0C,WAAU,SAAAC,GAAE,OAAIA,EAAGC,MAAM,iBAAb,IAC9E,OACE,UAAC,WAAD,YACE,+DACCH,GAAsC,IACrC,iCACE,mFAC+C,kCAAU,EAAKlI,MAAMyF,YAAYyC,GAAjC,OAD/C,iCAGE,mBACA,SAAChK,EAAA,EAAD,CACEC,GAAG,IACHtC,QAAS,SAAAoD,GACPA,EAAEC,iBACF,EAAKoJ,iBAAiBJ,EACvB,EALH,0DAUF,gFAC8C,KAC5C,SAAChK,EAAA,EAAD,CAAMC,GAAG,iBAAiBvB,MAAM,uBAAhC,iDAQX,IAEO2L,YAAc,WACpB,OAEE,UAAC,WAAD,WACG,EAAKvI,MAAMyF,YAAY+C,KAAI,SAACC,EAAYC,GACvC,OACE,SAAC,EAAAC,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,OAAiB5C,MAAO6L,EAA6C5M,QAAS,kBAAM,EAAKyM,iBAAiBI,EAA5B,EAAhG,SACG/G,EAAc8G,EAAY,MAD8B,mBAAqBC,EAInF,IACA,EAAK1I,MAAM8F,OAAO0C,KAAI,SAAC5L,EAAO8L,GAC7B,OACE,UAAC,EAAAC,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,MAAgB5C,MAAO+E,EAAc/E,EAAO,KAAgCf,QAAS,kBAAM,EAAK+M,YAAYF,EAAvB,EAAvG,oBACU/G,EAAc/E,EAAO,OAD0C,YAAc8L,EAI1F,IAEA,EAAK1I,MAAM+F,cAAcyC,KAAI,SAAC5J,EAAc8J,GAC3C,OACE,UAAC,EAAAC,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,MAA2C3D,QAAS,kBAAM,EAAKgN,mBAAmBH,EAA9B,EAAtE,8BACiB/G,EAAc/C,EAAc,OADN,aAAe8J,EAIzD,IACA,EAAK1I,MAAMgG,QAAQwC,KAAI,SAACxC,EAAS0C,GAChC,OACE,UAAC,EAAAC,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,IAAuC3D,QAAS,kBAAM,EAAKiN,cAAcJ,EAAzB,EAAlE,sBACY/G,EAAcqE,EAAS,OADE,WAAa0C,EAIrD,IACA,EAAK1I,MAAM0F,sBACV,UAAC,EAAAiD,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,QAAkB3D,QAAS,kBAAM,EAAKkN,2BAAX,EAA7C,iBACO,EAAK/I,MAAM0F,uBAGnB,EAAK1F,MAAM4F,QACV,UAAC,EAAA+C,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,YAAsB3D,QAAS,kBAAM,EAAKmN,mBAAX,EAAjD,UACG,EAAKhJ,MAAMgE,KAAX,gBAA2B,EAAKhE,MAAMgE,IAAtC,aAA8CiF,EAAAA,QAAQ,EAAKjJ,MAAM4F,MAAQ,KACxE,EAAK5F,MAAMgE,KAAZ,oBAA6BiF,EAAAA,QAAQ,EAAKjJ,MAAM4F,MAAQ,OAG5D,EAAK5F,MAAMiE,MACV,UAAC,EAAA0E,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,WAAqB3D,QAAS,EAAKqN,uBAArD,gCACsB5H,EAAoB,EAAKtB,MAAMiE,QAGtD,EAAKjE,MAAM6F,cACV,UAAC,EAAA8C,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,SAAmB3D,QAAS,EAAKsN,kBAAnD,2BACiB,EAAKnJ,MAAM6F,eAG7B,EAAK7F,MAAMkH,4BAA4BsB,KAAI,SAACY,EAAoDC,GAC/F,OAAOD,IAAiCA,EAA6BE,SAAUC,MAAK,SAAAC,GAAK,OAAsB,IAAlBA,EAAMC,OAAV,KACvF,SAAC,EAAAd,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,SAAuD3D,QAAS,EAAK6N,yBAAyBN,GAAhH,SACGA,EAA6B5B,OADU,gBAAkB6B,GAI5DD,EAA6BE,SAAUd,KAAI,SAACmB,EAAoCC,GAC9E,OACED,EAAaF,UACX,UAAC,EAAAd,WAAD,CACEpJ,KAAMC,EAAAA,SAAAA,SAEN3D,QAAS,EAAK6N,yBAAyBC,GAHzC,UAKGP,EAA6B5B,MALhC,IAKwC,IALxC,IAK8CmC,EAAanC,QAHpD,gBAAkB6B,EAAc,IAAMO,EAOlD,GAEJ,KAEC,EAAK5J,MAAM2F,4BACX,SAAC,EAAAgD,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,QAAkB3D,QAAS,kBAAM,EAAKgO,oBAAX,EAA7C,gCAID,EAAK7J,MAAMiG,WACV,UAAC,EAAA0C,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,YAAsB3D,QAAS,EAAKiO,iBAAtD,wBACaC,EAAAA,EAAAA,GAAO,EAAK/J,MAAMiG,SAAUM,EAAAA,YAAAA,YAG1C,EAAKyD,4BACJ,UAAC,EAAArB,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,YAAsB3D,QAAS,EAAKoO,iBAAtD,oBACO,EAAKjK,MAAMuF,UADlB,IAC8B,EAAKvF,MAAMwF,WAG1C,EAAKxF,MAAM+G,YAAYyB,KAAI,SAAC0B,EAAqCb,GAChE,OACEa,EAAcT,UACZ,SAAC,EAAAd,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,KAAmD3D,QAAS,EAAKsO,oBAAoBD,GAAvG,SACGA,EAAc1C,OADqB,gBAAkB6B,EAK7D,IACA,EAAKrJ,MAAMgH,QAAQwB,KAAI,SAAC4B,EAAiCf,GACxD,OACEe,EAAUX,UACR,SAAC,EAAAd,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,QAAkD3D,QAAS,EAAKwO,gBAAgBD,GAAlG,SACGA,EAAU5C,OAD4B,YAAc6B,EAK5D,IACA,EAAKrJ,MAAMuH,eAAeiB,KAAI,SAAA8B,GAAO,OACpCA,EAAQ7C,SAASe,KAAI,SAAA+B,GACnB,OACEA,EAAId,UACF,SAAC,EAAAd,WAAD,CAAYpJ,KAAMC,EAAAA,SAAAA,KAA0C3D,QAAS,EAAK2O,gBAAgBF,EAAQ3N,GAAI4N,EAAI5N,IAA1G,SACG4N,EAAI/C,OAD+B,YAAc+C,EAAI5N,GAK7D,GATmC,MAa3C,IAEO2L,iBAAmB,SAACI,GAC1B,EAAK1I,MAAMyF,YAAYgF,OAAO/B,EAAO,GACrC,EAAKjI,SAAS,CAAEgF,YAAa,EAAKzF,MAAMyF,YAAaP,WAAY,GAAK,EAAK2C,mBAC5E,IACOe,YAAc,SAACF,GACrB,EAAK1I,MAAM8F,OAAO2E,OAAO/B,EAAO,GAChC,EAAKjI,SAAS,CAAEqF,OAAQ,EAAK9F,MAAM8F,OAAQZ,WAAY,GAAK,EAAK2C,mBAClE,IACOgB,mBAAqB,SAACH,GAC5B,EAAK1I,MAAM+F,cAAc0E,OAAO/B,EAAO,GACvC,EAAKjI,SAAS,CAAEsF,cAAe,EAAK/F,MAAM+F,cAAeb,WAAY,GAAK,EAAK2C,mBAChF,IACOiB,cAAgB,SAACJ,GACvB,EAAK1I,MAAMgG,QAAQyE,OAAO/B,EAAO,GACjC,EAAKjI,SAAS,CAAEuF,QAAS,EAAKhG,MAAMgG,QAASd,WAAY,GAAK,EAAK2C,mBACpE,IAEOkB,0BAA4B,WAClC,EAAKtI,SAAS,CAAEiF,oBAAqB,GAAIR,WAAY,GAAK,EAAK2C,mBAChE,IAEOmB,kBAAoB,WAC1B,EAAKvI,SAAS,CAAEmF,MAAO,GAAI5B,IAAK,GAAIkB,WAAY,GAAK,EAAK2C,mBAC3D,IAEOqB,uBAAyB,WAC/B,EAAKzI,SAAS,CAAEwD,IAAK,GAAIiB,WAAY,GAAK,EAAK2C,mBAChD,IAEOsB,kBAAoB,WAC1B,EAAK1I,SAAS,CAAEoF,YAAa,GAAIX,WAAY,GAAK,EAAK2C,mBACxD,IAEOgC,mBAAqB,WAC3B,EAAKpJ,SAAS,CAAEkF,2BAA2B,EAAMT,WAAY,GAAK,EAAK2C,mBACxE,IAEO6C,sBAAwB,SAACjC,GAA8D,IAA1CkC,EAAyC,wDACtFC,EAAoBnC,EAAWoC,OACrC,GAAKD,EAAL,CAIA,IAAKD,EAAqB,CACxB,IAAMG,EAAkBF,EAAkBvC,MAAM7G,GAC1CuJ,EAAgBH,EAAkBvC,MAAM5G,GAC9C,GAAwB,OAApBqJ,EAEF,YADA,EAAKE,4BAA4BF,EAAgB,GAAIA,EAAgB,IAEhE,GAAIC,EAAe,CACxB,IAAIE,EAAkBxC,EAAWJ,MAAM3G,GACnCQ,EAAO+I,GAA4C,IAAzBF,EAAchM,OAAekM,EAAgBA,EAAgBlM,OAAS,GAAG+C,QAAQ,KAAM,IAAM,KACvHoJ,EAAMH,EAAcI,MAAK,SAAAC,GAAC,OAAIA,IAAMlJ,CAAV,KAAmB,GAEjD,YADA,EAAK8I,4BAA4BE,EAAKhJ,EAEvC,CACF,CAED,IAAMmJ,GAAc,OAAO,EAAKrL,MAAMyF,aACjC4F,EAAe9B,MAAK,SAAA3F,GAAC,OAAIA,IAAMgH,CAAV,KACxBS,EAAeC,KAAKV,GAGtB,EAAKnK,SACH,CACE0G,kBAAmB,GACnB1B,YAAa4F,EACbjE,gBAAiB7E,EACjB2C,WAAY,GAEd,EAAK2C,mBA7BN,CA+BF,IAEO0D,uBAAyB,SAACC,EAAuBC,GACvD,IAAIb,EAAoBY,EAAcX,OAChCa,EAAuC,CAAElJ,eAAgBgJ,EAAe/I,KAAM,GAAIC,2BAA4B,GAChHiJ,EAAU,EAEd,GAAKf,EAML,GAAIA,IAAsB,EAAK5K,MAAMmH,kBAAkB0D,QAAWY,EAAlE,CAMA,IAAMV,EAAgBS,EAAcnD,MAAM5G,GACpCqJ,EAAkBU,EAAcnD,MAAM7G,GAC5C,GAAwB,OAApBsJ,EAA0B,CAC5B,IAAMzI,EAAYF,EAAqB2I,GAEvCY,EAAmBjJ,KAAK6I,KAAK,CAC3BM,KAAMvJ,EACNxG,QAAS,kBAAM,EAAKmP,4BAA4BF,EAAgB,GAAIA,EAAgB,GAA3E,EACTe,KAAM,mBAAqBxJ,EAAUP,QAAQ,SAAO,WACpDvC,KAAMC,EAAAA,SAAAA,UAERmM,GACD,MAAM,GAAsB,OAAlBZ,GAAmD,qBAAlBA,EAA+B,CACzE,IAAIE,EAAkBO,EAAcnD,MAAM3G,GACtCQ,EAAO+I,GAA4C,IAAzBF,EAAchM,OAAekM,EAAgBA,EAAgBlM,OAAS,GAAG+C,QAAQ,KAAM,IAAM,KACvHoJ,EAAMH,EAAcI,MAAK,SAAAC,GAAC,OAAIA,IAAMlJ,CAAV,KAAmB,GAE3CG,EAAYN,EAAcmJ,GAAOjJ,EAAYC,GACnDwJ,EAAmBjJ,KAAK6I,KAAK,CAC3BM,KAAMvJ,EACNxG,QAAS,kBAAM,EAAKmP,4BAA4BE,EAAKhJ,EAA5C,EACT2J,KAAM,mBAAqBxJ,EAAUP,QAAQ,SAAO,WACpDvC,KAAMC,EAAAA,SAAAA,UAERmM,GACD,CAG8B,WACZG,KAAKlB,IACtBc,EAAmBjJ,KAAK6I,KAAK,CAC3BM,KAAM,4CAAwChB,EAAoB,YAClE/O,QAAS,kBAAM,EAAK6O,sBAAsBE,GAAmB,EAApD,EACTiB,KAAM,qDAAiDjB,IAEzDe,MAEAD,EAAmBjJ,KAAK6I,KAAK,CAC3BM,KAAM,wBAAuBhB,EAAoB,YACjD/O,QAAS,kBAAM,EAAK6O,sBAAsBE,GAAmB,EAApD,EACTiB,KAAM,iCAAgCjB,IAExCe,IAEAD,EAAmBjJ,KAAK6I,KAAK,CAC3BM,KAAM,6CAAyChB,EAAoB,aACnE/O,QAAS,kBAAM,EAAK6O,sBAAsB,IAAME,EAAoB,KAAK,EAAhE,EACTiB,KAAM,qDAAiDjB,IAEzDe,KAIFD,EAAmBhJ,2BAA6BiJ,EAEhD,EAAKlL,SACH,CAAE0G,kBAAmBqE,EAAepE,gBAAiBsE,IACrDK,EAAAA,EAAAA,IAAS,kBAAM,EAAKC,0BAA0BN,EAArC,GAA0D,KA5DpE,MAFC,EAAKjL,SAAS,CAAE0G,kBAAmBqE,SANnC,EAAK/K,SAAS,CAAE0G,kBAAmBqE,EAAepE,gBAAiBsE,GAsEtE,IAEOM,0BAA4B,SAACN,GAE/B,EAAK1L,MAAMmH,oBAAsBuE,EAAmBlJ,gBAAkBkJ,EAAmBlJ,eAAeqI,OAAO9L,OAAS,GAC1H,EAAKkN,0BAER,IA2EMC,kBAAoB,SAACC,GAC1B,IAAMC,EACJD,EAAIE,QAAUC,EAAAA,EAAAA,MAAmB,SAAWH,EAAIE,QAAUC,EAAAA,EAAAA,aAA0B,gBAAkB,UAClGlK,GAAG,OAAO,EAAKpC,MAAMoM,IAEtBhK,EAAImH,MAAK,SAAA3F,GAAC,OAAIA,IAAMuI,EAAIxE,KAAd,KACbvF,EAAIkJ,KAAKa,EAAIxE,OAEf,EAAKlH,UAAL,QAAgB0G,kBAAmB,GAAIC,gBAAiB7E,IAAxD,UAAsF6J,EAAWhK,IAAS,EAAKyF,mBAChH,IAEOmD,4BAA8B,SAACE,EAAahJ,GACtC,MAARA,EACF,EAAKzB,SACH,CACE8E,WAAYrD,EACZsD,SAAUtD,EACVmF,cAAenF,EACfoF,YAAapF,EACbwD,oBAAqBwF,EACrB9D,gBAAiB7E,EACjB4E,kBAAmB,GACnBjC,WAAY,GAEd,EAAK2C,oBAGP,EAAKpH,SACH,CACE8E,UAAW,KACXC,SAAU5C,GACVyE,aAAc,KACdC,YAAa1E,GACb8C,oBAAqBwF,EACrB9D,gBAAiB7E,EACjB4E,kBAAmB,GACnBjC,WAAY,GAEd,EAAK2C,mBAGV,IAEO0E,aAAe,SAACC,GACtB,EAAK/L,SAAS,CAAEyE,WAAYsH,EAAU,GAAK,EAAK3E,oBAChD,EAAK4E,aACN,IAEOC,iBAAmB,SAACC,GAC1B,EAAKlM,SAAS,CAAE0E,eAAgBwH,EAAazH,WAAY,GAAK,EAAK2C,oBACnE,EAAK4E,aACN,IAOOG,aAAe,SAACrH,EAAmBC,GAEvC,EAAKxF,MAAMuF,YAAcA,GACzB,EAAKvF,MAAMwF,UAAYA,GACvB,EAAKxF,MAAMuF,YAAc,EAAKvF,MAAMqH,cACpC,EAAKrH,MAAMwF,UAAY,EAAKxF,MAAMsH,YAElC,EAAK7G,SAAS,CAAE8E,UAAAA,EAAWC,QAAAA,EAAS6B,aAAc9B,EAAW+B,WAAY9B,EAASI,MAAO,GAAI5B,IAAK,GAAIkB,WAAY,GAAK,EAAK2C,mBAE/H,IAEOgF,kBAAoB,SAAC3K,GAE3B,GADA,EAAKzB,SAAS,CAAE4G,aAAc7C,GAAmBtC,GAAQ,GAAKA,KACzDsC,GAAmBtC,GAAO,CAC7B,IAAM4K,EAAelI,GAAU1C,GAC/B,GAAI4K,IAAiB5K,EAAM,CACzB,IAAM6K,EAAM,EAAK/M,MAAMwF,QAAUsH,EAAe,EAAK9M,MAAMwF,QAAUsH,EACrE,EAAKF,aAAaE,EAAcC,EACjC,CACF,CACF,IAEOC,gBAAkB,SAAC9K,GAEzB,GADA,EAAKzB,SAAS,CAAE6G,WAAY9C,GAAmBtC,GAAQ,GAAKA,KACvDsC,GAAmBtC,GAAO,CAC7B,IAAM+K,EAAarI,GAAU1C,GAC7B,GAAI+K,IAAe/K,EAAM,CACvB,IAAMgL,EAAQ,EAAKlN,MAAMuF,UAAY0H,EAAa,EAAKjN,MAAMuF,UAAY0H,EACzE,EAAKL,aAAaM,EAAOD,EAC1B,CACF,CACF,IAEOE,gBAAkB,SAACjL,IACrBsC,GAAmBtC,IAASA,EAAOS,IAAWT,EAAOU,KACvD,EAAKgK,aAAajK,GAAS,EAAK3C,MAAMwF,QAEzC,IAEO4H,cAAgB,SAAClL,IACnBsC,GAAmBtC,IAASA,EAAOS,IAAWT,EAAOU,KACvD,EAAKgK,aAAa,EAAK5M,MAAMuF,UAAW3C,GAE3C,IAEOqH,iBAAmB,WACzB,EAAKxJ,SACH,CACEmF,MAAO,GACP5B,IAAK,GACLuB,UAAWxC,GAAcK,GACzBoC,QAASzC,GAAcI,GACvBkE,aAActE,GAAcK,GAC5BkE,WAAYvE,GAAcI,GAC1B+B,WAAY,GAEd,EAAK2C,mBAER,IAEOiC,iBAAmB,kBAAM,EAAKrJ,SAAS,CAAEwF,cAAUpH,GAAa,EAAKgJ,mBAAlD,IAEnBmC,wBAA0B,mBAAQ,EAAKhK,MAAMuF,YAAc5C,IAAW,EAAK3C,MAAMwF,WAAY,IAAI3C,MAAOC,cAA9E,IAkN1BqH,oBAAsB,SAACkD,GAAD,OAAwC,WACpE,EAAKC,sBAAsBD,EAC5B,CAF6B,IAItB3D,yBAA2B,SAAC2D,GAAD,OAAwC,WACzE,EAAKE,qCAAqCF,EAC3C,CAFkC,IAI3BC,sBAAwB,SAACD,IAC/BG,EAAAA,EAAAA,4BAA2BH,EAAc,EAAKrN,MAAM+G,aAEpD,EAAKtG,SAAS,CAAEsG,YAAa,EAAK/G,MAAM+G,YAAa7B,WAAY,GAAK,EAAK2C,mBAC5E,IAEOwC,gBAAkB,SAACgD,GAAD,OAAwC,WAChE,EAAKI,kBAAkBJ,EACxB,CAFyB,IAIlBI,kBAAoB,SAACJ,IAC3BG,EAAAA,EAAAA,4BAA2BH,EAAc,EAAKrN,MAAMgH,SACpD,EAAK1L,MAAMoS,mBAAmB,EAAK1N,MAAMgH,QAAQuC,MAAK,SAAAoE,GAAG,OAAIA,EAAIlE,OAAR,KAAoB,EAAKnO,MAAMsS,uBACxF,EAAKnN,SAAS,CAAEuG,QAAS,EAAKhH,MAAMgH,QAAS9B,WAAY,GAAK,EAAK2C,mBACpE,IAEO0F,qCAAuC,SAACF,IAC9CG,EAAAA,EAAAA,4BAA2BH,EAAc,EAAKrN,MAAMkH,6BAEpD,EAAKzG,SAAS,CAAEyG,4BAA6B,EAAKlH,MAAMkH,4BAA6BhC,WAAY,GAAK,EAAK2C,mBAC5G,IAEO2C,gBAAkB,SAACqD,EAAmBC,GAApB,OAAsC,WAC9D,EAAKC,iBAAiBF,EAAWC,EAClC,CAFyB,IAIlBC,iBAAmB,SAACF,EAAmBG,GAC7C,IAAMC,GAAwBC,EAAAA,EAAAA,wBAAuBL,EAAWG,GAAZ,OAA2B,EAAKhO,MAAMuH,iBAE1F,EAAKjM,MAAM6S,qBAAqBF,EAAsB1E,MAAK,SAAAe,GAAO,OAAIA,EAAQ7C,SAAS8B,MAAK,SAAAnK,GAAG,OAAIA,EAAIqK,OAAR,GAA7B,KAAkD,EAAKnO,MAAM8S,yBAC/H,EAAK3N,SAAS,CAAE8G,eAAgB0G,EAAuB/I,WAAY,GAAK,EAAK2C,mBAC9E,IAEOwG,qBAAuB,SAACpP,GAC9BA,EAAEC,iBACF,EAAKuB,SAAS,CAAEkF,2BAA4B,EAAK3F,MAAM2F,0BAA2BT,WAAY,GAAK,EAAK2C,mBACzG,IAEOyG,YAAc,WACpB,IAAMC,EAAwB,EAAKC,yBAC7BC,EAAuC,EAAKC,wCAC5CC,EAAiB,EAAKC,qBACtBC,EAA4B,EAAKC,6BAEvC,EAAKrO,SACH,CACE8E,UAAW5C,GACX6C,QAAS5C,GACTyE,aAAc1E,GACd2E,WAAY1E,GACZgD,MAAO,GACP5B,IAAK,GACLC,IAAK,GACL8C,YAAawH,EACbrH,4BAA6BuH,EAC7B/I,oBAAqB,GACrBD,YAAa1C,GAAca,EAC3BoD,QAAS2H,EACTpH,eAAgBsH,EAChBzJ,qBAAsB9B,EAAAA,GAAAA,GACtBgC,eAAgBvC,GAAcQ,EAC9B2B,WAAY,EACZS,0BAA2B5C,GAAce,EACzC+B,YAAa,GACbC,OAAQ/C,GAAcsB,IACtB0B,cAAehD,GAAcqB,KAC7B4B,QAASjD,GAAcuB,GACvB2B,SAAUC,GAAoBnD,GAAcwB,KAE9C,EAAKsD,mBAER,IAEO2G,uBAAyB,WAE/B,OADA,EAAKxO,MAAM+G,YAAYgI,SAAQ,SAAAC,GAAM,OAAKA,EAAOvF,SAAU,CAAtB,IAC9B,EAAKzJ,MAAM+G,WACnB,IAEO2H,sCAAwC,WAU9C,OATA,EAAK1O,MAAMkH,4BAA4B6H,SAAQ,SAAAzE,GAC7CA,EAAQb,SAAU,EAClBa,EAAQ2E,mBAAgBpQ,EACxByL,EAAQhB,SAAUyF,SAAQ,SAAAC,GACnBA,EAAOE,aACVF,EAAOvF,SAAU,EAEpB,GACF,IACM,EAAKzJ,MAAMkH,2BACnB,IAEO0H,mBAAqB,WAE3B,OADA,EAAK5O,MAAMgH,QAAQ+H,SAAQ,SAAAC,GAAM,OAAKA,EAAOvF,SAAU,CAAtB,IAC1B,EAAKzJ,MAAMgH,OACnB,IAEO8H,2BAA6B,WAEnC,OADA,EAAK9O,MAAMuH,eAAewH,SAAQ,SAAAzE,GAAO,OAAIA,EAAQ7C,SAASsH,SAAQ,SAAAxE,GAAG,OAAKA,EAAId,SAAU,CAAnB,GAAhC,KAClC,OAAI,EAAKzJ,MAAMuH,eACvB,IAEO4H,gBAAkB,SAAC9B,IACzB+B,EAAAA,EAAAA,oBAAmB/B,EAAc,EAAKrN,MAAMgH,SAC5C,EAAKvG,SAAS,CAAEsG,YAAa,EAAK/G,MAAMgH,SACzC,IAEOqI,aAAe,SAAChC,IACtB+B,EAAAA,EAAAA,oBAAmB/B,EAAc,EAAKrN,MAAM+G,aAC5C,EAAKtG,SAAS,CAAEsG,YAAa,EAAK/G,MAAM+G,aACzC,IAEOuI,yCAA2C,SAACjC,IAClD+B,EAAAA,EAAAA,oBAAmB/B,EAAc,EAAKrN,MAAMkH,6BAC5C,EAAKzG,SAAS,CAAEyG,4BAA6B,EAAKlH,MAAMkH,6BACzD,IAyBA,OAzBA,yCA9lCD,WACEnL,SAASa,MAAQ,sCACjBuD,KAAKoP,uBACLpP,KAAK7E,MAAMkU,eACXrP,KAAK7E,MAAMmU,kBACXtP,KAAK7E,MAAMoU,4BACXvP,KAAK7E,MAAMqU,SACZ,mCAED,SAAmBC,GACbzP,KAAKH,MAAMmF,eAAiBjC,EAAAA,SAAAA,QAAmB/C,KAAK7E,MAAMuU,mBAAqBD,EAAKC,iBACtF1P,KAAKM,SAAS,CAAE0E,eAAgBjC,EAAAA,SAAAA,QAAmB/C,KAAK0H,oBAExD1H,KAAKoP,sBAER,qCAED,WAA+B,IAAD,OAC5B,GAAIpP,KAAK7E,MAAMqF,eAAiBR,KAAK7E,MAAMwU,SAASC,OAOlD,OANI5P,KAAK7E,MAAMwU,SAASC,OACtB5P,KAAK7E,MAAM0U,UAAU7P,KAAK7E,MAAMwU,SAASC,QAEzC5P,KAAK7E,MAAM2U,QAAQnO,QAAQ3B,KAAK7E,MAAMqF,mBAExCR,KAAKM,SAAS,CAAEwG,cAAc,IAGhC,GAAoC,IAAhC9G,KAAK7E,MAAM4U,UAAUnR,QAGc,IAAnCoB,KAAK7E,MAAM6U,aAAapR,QAIe,IAAvCoB,KAAK7E,MAAM8U,KAAKC,YAAYtR,QAIkB,IAA9CoB,KAAK7E,MAAMgV,wBAAwBvR,SAInCoB,KAAKH,MAAMiH,aAAf,CAIA9G,KAAK7E,MAAM6S,qBAAqBhO,KAAK7E,MAAMwL,iBAAiB5C,GAAGnF,OAAS,GAAKoB,KAAK7E,MAAM8S,yBACxFjO,KAAK7E,MAAMoS,mBAAmBvN,KAAK7E,MAAMwL,iBAAiBnD,EAAE5E,OAAS,GAAKoB,KAAK7E,MAAMsS,uBAErF,IAAM2C,EAAkBvL,GAAiB7E,KAAK7E,MAAMwL,kBACpD3G,KAAKM,UAAL,kBAEO8P,GAFP,IAGItJ,cAAc,EACdF,YAAa5G,KAAKqQ,kBAAkBrQ,KAAK7E,MAAM4U,WAC/ClJ,QAAS7G,KAAKsQ,qBAAqBtQ,KAAK7E,MAAM6U,cAC9C5I,eAAgBpH,KAAKuQ,yBAAyBvQ,KAAK7E,MAAM8U,MACzDlJ,4BAA6B/G,KAAKwQ,gCAAgCxQ,KAAK7E,MAAMgV,yBAC7EjJ,aAAckJ,EAAgBhL,UAC9B+B,WAAYiJ,EAAgB/K,QAC5BI,MAAO2K,EAAgB3K,MACvB5B,IAAKuM,EAAgBvM,IACrBC,IAAKsM,EAAgBtM,IACrB4B,YAAa0K,EAAgB1K,eAE/B,kBAAM,EAAK+K,SAAS,EAAKtV,MAAMqF,aAA/B,GArBD,CAuBF,uBAmBD,WAAiB,IAAD,OACd,EAaIR,KAAKH,MAZP0G,EADF,EACEA,aACAxB,EAFF,EAEEA,WACAE,EAHF,EAGEA,qBACAE,EAJF,EAIEA,eACAC,EALF,EAKEA,UACA8B,EANF,EAMEA,aACA7B,EAPF,EAOEA,QACA8B,EARF,EAQEA,WACAH,EATF,EASEA,kBACAC,EAVF,EAUEA,gBACAzB,EAXF,EAWEA,0BACAR,EAZF,EAYEA,eAEMxE,EAAiBR,KAAK7E,MAAtBqF,aAER,OACE,iBAAK5D,UAAU,sBAAf,WAEE,SAACC,EAAA,EAAD,CAAKD,UAAU,OAAf,UACE,SAACE,EAAA,EAAD,CAAKF,UAAU,UAAf,UACE,UAAC8T,EAAA,EAAD,CAAMjV,MAAM,UAAUmB,UAAU,0BAAhC,WACE,SAAC,EAAA+T,WAAD,CACEC,SAAU,SAAA9R,GAAC,OAAI,EAAKsM,uBAAuBtM,GAAG,EAAnC,EACXyL,sBAAuBvK,KAAKuK,sBAC5BjC,WAAYtB,EACZ6J,KAAM5J,EAAgB3E,KACtBwO,kBAAkB,gDAClBC,YAAY,YACZC,WAAW,KAEb,SAACjT,EAAA,EAAD,CAAMC,GAAG,iBAAiBvB,MAAM,uBAA6CG,UAAU,6CAAvF,iCAAwD,8BAO9D,UAACC,EAAA,EAAD,CAAKD,UAAU,OAAf,WAEE,UAACE,EAAA,EAAD,CAAKmU,GAAI,EAAGrU,UAAU,4BAAtB,WAEE,iBAAKA,UAAU,uDAAf,WACE,UAACmB,EAAA,EAAD,CACEC,GAAG,IACHpB,UAAU,qCACVlB,QAAS,SAAAoD,GACPA,EAAEC,iBACF,EAAKoP,aACN,EANH,sBAQU,iBAAMvR,UAAU,qBAAhB,4BAEV,SAAC,EAAD,CAAe4D,aAAcA,EAAcE,wBAAyB6F,EAAa7F,8BAGnF,SAAC,EAAAwQ,eAAD,CACE3V,OAAQyE,KAAK7E,MAAMgW,mCACnBC,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAMmW,gCAAgCD,EAA/C,EACvBzU,UAAU,2BACVwC,KAAMC,EAAAA,SAAAA,SACNkS,QAAQ,mBALV,UAOE,SAAC,EAAAC,gBAAD,CACEC,YAAazR,KAAKH,MAAMkH,4BACxB6J,SAAU5Q,KAAKoN,qCACfxQ,UAAU,6BACV8U,qBAAqB,EACrBxC,aAAclP,KAAKmP,8CAIvB,SAAC,EAAA+B,eAAD,CACE3V,OAAQyE,KAAK7E,MAAMwW,sBACnBP,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAMyW,mBAAmBP,EAAlC,EACvBzU,UAAU,oCACV2U,QAAQ,YACRnS,KAAMC,EAAAA,SAAAA,QALR,UAOE,SAAC,EAAAwS,aAAD,CACEC,GAAItM,EACJiG,KAAM,oCACNsG,cAAe,SAAAjT,GAAC,OAAI,EAAKoP,qBAAqBpP,EAA9B,OAIpB,UAAC,EAAAoS,eAAD,CACE3V,OAAQyE,KAAK7E,MAAM6W,iBACnBZ,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAM8W,cAAcZ,EAA7B,EACvBzU,UAAU,YACVwC,KAAMC,EAAAA,SAAAA,YACNkS,QAAQ,YALV,WAOE,SAAC,EAAAW,aAAD,CAAcvN,IAAKnC,GAASoC,KAAK,IAAIlC,MAAOC,cAAewP,gBAAiB/M,EAAWgN,iBAAkB/M,EAASgN,UAAWrS,KAAKyM,gBAClI,mBAEA,UAAC5P,EAAA,EAAD,YACE,SAACC,EAAA,EAAD,WACE,SAACwV,EAAA,EAAD,CACE,aAAW,iCACXC,KAAK,SACL/K,MAAON,EACP0J,SAAU,SAAA9R,GAAC,OAAI,EAAK4N,kBAAkBnI,OAAOiO,WAAW1T,EAAE2T,cAAcjL,OAA7D,EACXkL,OAAQ,SAAA5T,GAAC,OAAI,EAAKkO,gBAAgBzI,OAAOiO,WAAW1T,EAAE2T,cAAcjL,OAA3D,OAGb,SAAC1K,EAAA,EAAD,WACE,SAACwV,EAAA,EAAD,CACE,aAAW,8BACXC,KAAK,SACL/K,MAAOL,EACPyJ,SAAU,SAAA9R,GAAC,OAAI,EAAK+N,gBAAgBtI,OAAOiO,WAAW1T,EAAE2T,cAAcjL,OAA3D,EACXkL,OAAQ,SAAA5T,GAAC,OAAI,EAAKmO,cAAc1I,OAAOiO,WAAW1T,EAAE2T,cAAcjL,OAAzD,aAMjB,SAAC,EAAA0J,eAAD,CACE3V,OAAQyE,KAAK7E,MAAMwX,oBACnBvB,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAMyX,iBAAiBvB,EAAhC,EACvBzU,UAAU,2BACVwC,KAAMC,EAAAA,SAAAA,KACNkS,QAAQ,cALV,UAOE,SAAC,EAAAC,gBAAD,CACEC,YAAazR,KAAKH,MAAM+G,YACxBgK,SAAU5Q,KAAKmN,sBACfvQ,UAAU,6BACV8U,qBAAqB,EACrBxC,aAAclP,KAAKkP,kBAIvB,SAAC,EAAAgC,eAAD,CACE3V,OAAQyE,KAAK7E,MAAMsS,sBACnB2D,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAMoS,mBAAmB8D,EAAlC,EACvBzU,UAAU,2BACVwC,KAAMC,EAAAA,SAAAA,QACNkS,QAAQ,kBALV,UAOE,SAAC,EAAAC,gBAAD,CACEC,YAAazR,KAAKH,MAAMgH,QACxB+J,SAAU5Q,KAAKsN,kBACf1Q,UAAU,6BACV8U,qBAAqB,EACrBxC,aAAclP,KAAKgP,qBAIvB,SAAC,EAAAkC,eAAD,CACE3V,OAAQyE,KAAK7E,MAAM8S,wBACnBmD,YAAa,SAAAC,GAAU,OAAI,EAAKlW,MAAM6S,qBAAqBqD,EAApC,EACvBzU,UAAU,2BACVwC,KAAMC,EAAAA,SAAAA,KACNkS,QAAQ,oBALV,UAOE,SAAC,EAAAsB,QAAD,CAASzR,KAAMA,EAAM0R,gBAAiB9S,KAAKH,MAAMuH,eAAgB2L,qBAAsB/S,KAAK4N,yBAKhG,SAAC9Q,EAAA,EAAD,CAAKmU,GAAI,EAAGrU,UAAU,eAAtB,UACE,SAAC,EAAAoW,iBAAD,CACEC,kBAAmB1M,EAAaE,UAChCiJ,iBAAkB1P,KAAK7E,MAAMuU,iBAC7BwD,eAAgB,SAACC,GAAD,OAAuC,SAACxX,EAAA,EAAD,CAAkBC,SAAUuX,GAAnE,EAChBC,WAAY,SAACD,GAAD,OAAuC,SAACE,EAAA,GAAD,CAAUzX,SAAUuX,GAA3D,EACZG,+BAAgCtT,KAAK8H,iBACrCM,YAAapI,KAAKoI,YAClBmL,QAAShN,EAAagN,QACtB7M,YAAaH,EAAaG,YAC1B8M,cAAevO,EACfwO,cAAetQ,EAAAA,GAAAA,KAAkB,SAAA+B,GAAG,OAAIA,CAAJ,IACpCwO,iBAAkB1T,KAAKuH,gBACvBoM,2BAA4BxO,EAC5ByO,wBAAyB5T,KAAK2H,cAC9BkM,kBAAmB7T,KAAK4H,iBACxBwE,aAAcpM,KAAKoM,aACnBrH,WAAYA,EACZyB,UAAWD,EAAaC,UACxBxB,eAAgBA,EAChBuH,iBAAkBvM,KAAKuM,0BAMlC,yCA8TD,WAAoC,IAAD,OAC7BuH,EAAwB9T,KAAKH,MAAMoH,gBACnCrG,EAASZ,KAAK+T,cAEmB,KAAjC/T,KAAKH,MAAMmH,oBACTpG,EAAO6C,EACT7C,EAAO6C,EAAP,kBAAe7C,EAAO6C,GAAtB,CAAyBzD,KAAKH,MAAMmH,oBAEpCpG,EAAO6C,EAAI,CAACzD,KAAKH,MAAMmH,oBAI3B,IAAMxG,EAAeK,EAAAA,UAAaD,GAC5BoT,EAAW,WAAOxT,IACxBG,EAAAA,EAAAA,IAA8B,qBAAsB,CAClDC,OAAQC,EAAAA,MAASmT,GACjBlT,iBAAkB,SAACC,GAAD,OAAeF,EAAAA,UAAaE,EAA5B,IACjBkT,MAAK,SAAAC,GACN,GAAI,EAAKrU,MAAMmH,oBAAsB8M,EAAIzR,eAAzC,CAKA,IAAMC,EAAO4R,EAASzN,UAAU0N,MAAM,EAAG,GAAG9L,KAAI,SAAA+L,GAAG,MAAK,CACtD3I,KAAM2I,EAAI3X,MACV2C,KAAMC,EAAAA,SAAAA,WACN3D,QAAS,kBAAM,EAAKP,MAAM2U,QAAQ3E,KAAKiJ,EAAInW,aAAlC,EACToW,SAAUC,EAAAA,uBAAAA,oCACV5I,KAAM,8CAA6C0I,EAAI1X,UACvD6U,QAAS6C,EAAI1X,UACb6X,WAAYH,EAAI3V,aAChB+V,cAAe,oBACfnN,MAAO+M,EAAI1W,gBAAiBJ,EAAAA,EAAAA,IAAuB8W,EAAI7W,qBAAsB6W,EAAI5W,0BAA4B,mBAAgBkB,EAT5E,IAanD,EAAK4B,SAAS,CAAE2G,iBAAgB,kBAAM6M,GAAP,IAAYxR,KAAK,GAAD,eAAMwR,EAAIxR,OAAV,OAAmBA,OAAW,EAAKmS,6BAfjF,CAgBF,GACF,6CAED,WAAwC,IAAD,OACjCX,EAAwB9T,KAAKH,MAAMoH,gBACnCrG,EAASC,EAAAA,MAASb,KAAK7E,MAAMqF,eAEjCG,EAAAA,EAAAA,IAA2B,iCAAkC,CAC3DC,OAAQ,CAAE8T,EAAGZ,EAAIzR,eAAeqI,OAAQnH,GAAI3C,EAAO2C,IACnDzC,iBAAkB,SAACC,GAAD,OAAeF,EAAAA,UAAaE,EAA5B,IAEjBkT,MAAK,SAAAhT,GACJ,GAAI,EAAKpB,MAAMmH,oBAAsB8M,EAAIzR,eAAzC,CAGA,IAAMC,EAA+BrB,EAAOoH,KAAI,SAAC2D,GAAD,MAA4B,CAC1EP,KAAK,qBAAD,OAAuBO,EAAIxE,MAAM7F,QAAQ,OAAQ,UAAjD,cACJvC,KAAM4M,EAAIE,QAAUC,EAAAA,EAAAA,QAAqB9M,EAAAA,SAAAA,IAAeA,EAAAA,SAAAA,MACxD3D,QAAS,kBAAM,EAAKqQ,kBAAkBC,EAA7B,EACT3E,MAAO2E,EAAIE,QAAUC,EAAAA,EAAAA,MAAmB,UAAYH,EAAIE,QAAUC,EAAAA,EAAAA,aAA0B,oBAAmB,YAC/GkI,SAAUC,EAAAA,uBAAAA,uBACV5I,KACE,iDACCM,EAAIE,QAAUC,EAAAA,EAAAA,MAAmB,UAAYH,EAAIE,QAAUC,EAAAA,EAAAA,aAA0B,oBAAmB,aACzG,KACAH,EAAIxE,MAVwC,IAchD,EAAKlH,SAAS,CAAE2G,iBAAgB,kBAAM6M,GAAP,IAAYxR,KAAK,GAAD,eAAMwR,EAAIxR,OAAV,OAAmBA,OAfjE,CAgBF,IACAqS,OAAM,SAAAC,GACLC,QAAQC,IAAIF,EACb,GACJ,4BAuDD,WACE,IAAMG,EAAanZ,SAASoZ,eAAe,eACK,SAAhDC,OAAOC,iBAAiBH,GAAYI,QAAqBF,OAAOG,SAAS,EAAG,GAAKL,EAAWM,gBAC7F,mCAkED,WACE,IAAMzU,EAAwCZ,KAAK+T,cAC7CvT,EAAeK,EAAAA,UAAaD,GAC5BoT,EAAW,WAAOxT,GAExBR,KAAK7E,MAAM2U,QAAQnO,QAAQnB,EAAewT,EAAchU,KAAK7E,MAAM2U,QAAQH,SAAS2F,UACpFtV,KAAKyQ,SAASuD,GACdhU,KAAK7E,MAAM0U,UAA0B,MAAhBmE,EAAsB,GAAKA,GAE5ChU,KAAKH,MAAMmH,mBAAmBhH,KAAKoL,uBAAuBpL,KAAKH,MAAMmH,mBAAmB,EAC7F,4BAED,WACE,MAsBIhH,KAAKH,MArBPkF,EADF,EACEA,WACAI,EAFF,EAEEA,eACAF,EAHF,EAGEA,qBACAG,EAJF,EAIEA,UACAC,EALF,EAKEA,QACAuB,EANF,EAMEA,YACAG,EAPF,EAOEA,4BACAF,EARF,EAQEA,QACAvB,EATF,EASEA,YACAC,EAVF,EAUEA,oBACAC,EAXF,EAWEA,0BACAC,EAZF,EAYEA,MACA5B,EAbF,EAaEA,IACAuD,EAdF,EAcEA,eACAtD,EAfF,EAeEA,IACA4B,EAhBF,EAgBEA,YACAC,EAjBF,EAiBEA,OACAC,EAlBF,EAkBEA,cACAC,EAnBF,EAmBEA,QACAC,EApBF,EAoBEA,SACAd,EArBF,EAqBEA,eAGIpE,EAAwC,CAAC,EAyF/C,OAvFImE,IAAenC,GAAcC,OAC/BjC,EAAOiC,KAAOkC,GAGZC,IAAmBjC,EAAAA,SAAAA,MACrBnC,EAAOkC,GAAKkC,GAGVG,IACFvE,EAAOwC,EAAI+B,GAGTF,GAAwBA,EAAqBhG,MAAQ2D,GAAcM,IACrEtC,EAAOsC,EAAI+B,EAAqBhG,KAG9BmG,IAAcxC,GAAcK,KAC9BrC,EAAOqC,GAAKmC,GAGVC,IAAYzC,GAAcI,KAC5BpC,EAAOoC,GAAKqC,GAGc,KAAxBE,IACF3E,EAAO8C,IAAM6B,GAEXC,IAA8B5C,GAAce,IAC9C/C,EAAO+C,EAAI6B,GAGToB,EAAYwC,MAAK,SAAA2G,GAAS,OAAIA,EAAUzG,OAAd,MAC5B1I,EAAOyC,EAAIuD,EAAYiI,QAAO,SAAAkB,GAAS,OAAIA,EAAUzG,OAAd,IAAuBjB,KAAI,SAAAhF,GAAC,OAAIA,EAAEmE,KAAN,KAGjEX,EAAQuC,MAAK,SAAAoE,GAAG,OAAIA,EAAIlE,OAAR,MAClB1I,EAAO4C,EAAIqD,EAAQgI,QAAO,SAAArB,GAAG,OAAIA,EAAIlE,OAAR,IAAiBjB,KAAI,SAAA7E,GAAC,OAAIA,EAAEgE,KAAN,KAGjDlC,EAAY1G,OAAS,IACvBgC,EAAO6C,EAAI6B,GAGTG,IAAU7C,GAAcgB,MAC1BhD,EAAOgD,IAAM6B,GAGX5B,IAAQjB,GAAciB,MACxBjD,EAAOiD,IAAMA,GAGXC,IAAQlB,GAAckB,MACxBlD,EAAOkD,IAAMA,GAGX4B,IAAgB9C,GAAcoB,KAChCpD,EAAOoD,GAAK0B,GAGV0B,EAAegC,MAAK,SAAAe,GAAO,OAAIA,EAAQ7C,SAAS8B,MAAK,SAAAgB,GAAG,OAAIA,EAAId,OAAR,GAA7B,MAC7B1I,EAAOmD,GAAKqD,EAAemO,SAAQ,SAAApL,GAAO,OAAIA,EAAQ7C,SAASuH,QAAO,SAAAzE,GAAG,OAAIA,EAAId,OAAR,IAAiBjB,KAAI,SAAAvJ,GAAC,OAAIA,EAAEtC,EAAN,GAArD,KAGxCuK,EAA4BqC,MAAK,SAAAe,GAAO,OAAIA,EAAQ2E,eAAiB3E,EAAQb,OAArC,MAC1C1I,EAAO2C,GAAKwD,EACT8H,QAAO,SAAA1E,GAAO,OAAIA,EAAQ2E,eAAiB3E,EAAQb,OAArC,IACdiM,SAAQ,SAAApL,GAAO,OAAIA,EAAQhB,QAAZ,IACf0F,QAAO,SAAA2G,GAAO,OAAKA,EAAQzG,UAAb,IACdF,QAAO,SAAA2G,GAAO,OAAIA,EAAQlM,OAAZ,IACdjB,KAAI,SAAAmN,GAAO,OAAIA,EAAQhO,KAAZ,KAGZ7B,EAAO/G,OAAS,IAClBgC,EAAOsD,IAAMyB,GAGXC,EAAchH,OAAS,IACzBgC,EAAOqD,KAAO2B,GAGZC,EAAQjH,OAAS,IACnBgC,EAAOuD,GAAK0B,GAGVC,IACFlF,EAAOwD,IAAKwF,EAAAA,EAAAA,GAAO9D,EAAUM,EAAAA,YAAAA,WAExBxF,CACR,kCAED,SAA0B6U,GAA+C,IAAD,OACtE,OAAOA,EAASpN,KAAI,SAAA0H,GAClB,MAAO,CACLvI,MAAOuI,EAAUvT,GACjB6K,MAAO0I,EAAU2F,KACjBpM,QAAS,EAAKnO,MAAMwL,iBAAiBtD,EAAE+F,MAAK,SAAA/F,GAAC,OAAIA,IAAM0M,EAAUvT,EAApB,IAC7C2M,cAAUzK,EACVnD,QAAQ,EACRuT,mBAAepQ,EACfiX,SAAS,EAEZ,GACF,qCAED,SAA6B3F,GAAmD,IAAD,OAC7E,OAAOA,EAAa3H,KAAI,SAAAuN,GACtB,MAAO,CACLpO,MAAOoO,EAAWpZ,GAClB6K,MAAOuO,EAAWF,KAClBpM,QAAS,EAAKnO,MAAMwL,iBAAiBnD,EAAE4F,MAAK,SAAA5F,GAAC,OAAIA,IAAMoS,EAAWpZ,EAArB,IAC7C2M,cAAUzK,EACVnD,QAAQ,EACRuT,mBAAepQ,EACfiX,SAAS,EAEZ,GACF,gDAED,SAAwCxF,GAA6E,IAAD,OAC5G0F,EAAuD,GAE7D1F,EAAwB9H,KAAI,SAACyN,EAAiDC,GAU5E,OATAF,EAA6BE,GAAe,CAC1CvO,MAAOsO,EAAuBE,IAC9B3O,MAAOyO,EAAuBG,YAC9B9M,SAAU,GACVG,SAAS,EACT/N,QAAQ,EACRoa,SAAS,GAGJG,EAAuBI,cAAc7N,KAAI,SAAC8N,EAA6BC,GAC5E,OAAQP,EAA6BE,GAAa5M,SAAUiN,GAAc,CACxE5O,MAAO2O,EAAaE,eACpBhP,MAAO8O,EAAaT,KACpBC,SAAS,EACTrM,QAAS,EAAKnO,MAAMwL,iBAAiBpD,GAAG6F,MAAK,SAAA7F,GAAE,OAAIA,IAAO4S,EAAaE,cAAxB,IAC/C9a,QAAQ,EAEX,GACF,IAED,cAAqBsa,EAArB,eAAmD,CAA9C,IAAMhH,EAAM,KACfA,EAAOvF,UAAUuF,EAAO1F,SAAU0F,QAAO,SAAAyH,GAAC,OAAKA,EAAEvH,UAAP,IAAmBwH,OAAM,SAAA/S,GAAC,OAAIA,EAAE8F,OAAN,IACpEuF,EAAOC,eAAiBD,EAAOvF,SAAWuF,EAAO1F,SAAU0F,QAAO,SAAAyH,GAAC,OAAKA,EAAEvH,UAAP,IAAmB3F,MAAK,SAAA5F,GAAC,OAAIA,EAAE8F,OAAN,IAAiB,SAAM5K,EACnHmQ,EAAOtT,OAASsT,EAAOvF,SAAWuF,EAAOC,aAC1C,CAED,OAAO+G,CACR,yCAED,SAAiC5F,GAE/B,MADiC,CAACjQ,KAAKwW,cAAcvG,EAAKC,YAAa,GAAI,eAE5E,8BAED,SAAsBuG,EAAoBpP,EAAe7K,GAA8B,IAAD,OAChFka,EAAoC,CAAEla,GAAIA,EAAI6K,MAAOA,EAAOC,SAAU,IAS1E,OARAmP,EAAW7H,SAAQ,SAACxE,EAAK7B,GACvBmO,EAAiBpP,SAASiB,GAAS,CACjCtJ,IAAKmL,EAAInL,IACToI,MAAO+C,EAAI/C,MACX7K,GAAI4N,EAAI5N,GACR8M,QAAS,EAAKnO,MAAMwL,iBAAiB5C,GAAGqF,MAAK,SAAAtK,GAAC,OAAIA,IAAMsL,EAAI5N,EAAd,IAEjD,IACMka,CACR,sCA8HD,SAA8BlW,GAAuB,IAAD,QAClDG,EAAAA,EAAAA,IAA4C,uCAAwC,CAClFC,OAAQC,EAAAA,MAASL,GACjBM,iBAAkB,SAACC,GAAD,OAAeF,EAAAA,UAAaE,EAA5B,IACjBkT,MAAK,SAAAC,GAAa,IAAD,YACE,EAAKrU,MAAMkH,4BAA4BwO,SAAQ,SAAAxU,GAAC,OAAIA,EAAEoI,UAAY,EAAlB,KADlD,IAClB,2BAA2F,CAAC,IAAjFE,EAAgF,QACzFA,EAAMsN,MAAQzC,EAAS7K,EAAM7B,QAAU,CACxC,CAHiB,+BAIlB,EAAKlH,SAAS,CACZyG,4BAA6B,EAAKlH,MAAMkH,6BAE3C,GACF,yBAED,SAAiBvG,GAAuB,IAAD,QACrCG,EAAAA,EAAAA,IAA8B,qBAAsB,CAClDC,OAAQC,EAAAA,MAASL,GACjBM,iBAAkB,SAACC,GAAD,OAAeF,EAAAA,UAAaE,EAA5B,IACjBkT,MAAK,SAAAC,GACN,EAAK5T,SAAS,CAAEiG,aAAc2N,GAC/B,IAEDlU,KAAK4W,sBAAsBpW,EAC5B,OA1oCG8F,CAA2BzK,EAAAA,WA6oCjC,IAAegb,EAAAA,EAAAA,KACb,WAAiFC,GAAkE,IAAhJC,EAA+I,EAA/IA,eAAgBhH,EAA+H,EAA/HA,UAAWI,EAAoH,EAApHA,wBAAyBF,EAA2F,EAA3FA,KAAMpB,EAAqF,EAArFA,OAC3D,OAAO,kBACFiI,GADL,IAEEtW,aAAcuW,EAAenW,OAC7B+F,iBAAkBoQ,EAAeC,kBAAkBpU,IACnDmN,UAAWA,EAAUkH,kBACrBjH,aAAcD,EAAUC,aACxBG,wBAAyBA,EAAwBA,wBACjDF,KAAMA,EACNhC,wBAAyBY,EAAOZ,wBAChCR,sBAAuBoB,EAAOpB,sBAC9B0D,mCAAoCtC,EAAOsC,mCAC3CQ,sBAAuB9C,EAAO8C,sBAC9BK,iBAAkBnD,EAAOmD,iBACzBW,oBAAqB9D,EAAO8D,oBAC5BjD,iBAAkBqH,EAAerH,kBAEpC,IACD,SAAAwH,GAAQ,OACNC,EAAAA,EAAAA,KAAmB,0CAEZC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GAELN,EATI,GAnBV,CA8BE5Q,G,wBCn6CK,IAAK6F,E,gCAAZ,SAAYA,GAAAA,EAAAA,EAAAA,MAAAA,GAAAA,QAAAA,EAAAA,EAAAA,aAAAA,GAAAA,eAAAA,EAAAA,EAAAA,QAAAA,GAAAA,SAAAA,CAAZ,CAAYA,IAAAA,EAAAA,CAAAA,G","sources":["components/CsvExport/CsvSizeWarningDialog.tsx","components/document/GridViewDocument.tsx","components/CsvExport/CsvExportLink.tsx","containers/documents/DocumentsContainer.tsx","models/MatchField.ts"],"sourcesContent":["import React from \"react\";\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from \"reactstrap\";\r\n\r\nexport interface ICsvSizeWarningDialogProps {\r\n isModalOpen: boolean;\r\n confirmed: () => void;\r\n dismissed: () => void;\r\n}\r\n\r\nexport const CsvSizeWarningDialog: React.FC<ICsvSizeWarningDialogProps> = (props: ICsvSizeWarningDialogProps) => {\r\n const { dismissed, confirmed, isModalOpen } = props;\r\n return (\r\n <Modal isOpen={isModalOpen} toggle={dismissed}>\r\n <ModalHeader toggle={dismissed}>Eksportér søgeresultat</ModalHeader>\r\n <ModalBody>Det aktuelle søgeresultat indeholder mange dokumenter, og det vil derfor tage længere tid at eksportere. Vil du fortsætte?</ModalBody>\r\n <ModalFooter>\r\n <Button color=\"primary\" onClick={confirmed}>\r\n Ok\r\n </Button>\r\n <Button color=\"primary\" onClick={dismissed}>\r\n Annullér\r\n </Button>\r\n </ModalFooter>\r\n </Modal>\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Row, Col, Badge, Container, Button } from \"reactstrap\";\r\nimport \"./GridViewDocument.scss\";\r\nimport { EliClass } from \"../eli/eli-class\";\r\nimport { EliProperty } from \"../eli/eli-property\";\r\nimport { DataType } from \"../eli/data-type\";\r\nimport { EliResource } from \"../eli/eli-resource\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Icon, IconType } from \"@lexdania/components\";\r\nimport RelatedDocs from \"./RelatedDocs\";\r\nimport { GeografiskDaekning } from \"../../models/GeografiskDaekningEnum\";\r\nimport ReprintNotes from \"../reprintNotes/ReprintNotes\";\r\nimport { IDocumentProps, nlToBr } from \"./Document\";\r\n\r\nexport interface IGridViewDocumentProps extends IDocumentProps {\r\n fullScreen?: boolean;\r\n}\r\n\r\nexport const GridViewDocument: React.FC<IGridViewDocumentProps> = props => {\r\n const { document } = props;\r\n const [show, setShow] = React.useState(false);\r\n const [showReprintNotes, setShowReprintNotes] = React.useState(false);\r\n\r\n const toggleReprintNotes = () => {\r\n setShowReprintNotes(!showReprintNotes);\r\n };\r\n\r\n const handleKeyUp = (e: React.KeyboardEvent<HTMLElement>) => {\r\n switch (e.key) {\r\n case \"Enter\":\r\n setShow(!show);\r\n break;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <ReprintNotes\r\n ressort={document.ressortName}\r\n isOpen={showReprintNotes}\r\n toggleModal={toggleReprintNotes}\r\n docId={document.id}\r\n title={document.title}\r\n shortName={document.shortName}\r\n />\r\n\r\n <Container className=\"document-entry\">\r\n <Row>\r\n <Col md=\"9\">\r\n <Row>\r\n <Col md={props.fullScreen ? 3 : 5} className=\"pr-1 pl-0\">\r\n <div className=\"document-short-name py-1\" property={EliProperty.ShortTitle} datatype={DataType.RDFsLiteral}>\r\n {document.shortName}\r\n </div>\r\n <div className=\"document-date py-1 pr-2\">\r\n <span property={EliProperty.PublicationDate} datatype={DataType.XSDdate}>\r\n {document.offentliggoerelsesDato}\r\n </span>\r\n {showDocumentStateBadge(document.geografiskDaekningId, document.retsinfoKlassifikationId) && (\r\n <Badge\r\n color=\"secondary\"\r\n className={\"py-1 px-2 ml-2 mb-1\" + (document.isHistoryFlag ? \" historic-badge \" : \"\")}\r\n property={EliProperty.InForce}\r\n resource={document.isHistoryFlag ? EliResource.OntologyNotInForce : EliResource.OntologyInForce}\r\n >\r\n {document.isHistoryFlag ? \"HISTORISK\" : \"GÆLDENDE\"}\r\n </Badge>\r\n )}\r\n {document.hasReprintNotes && (\r\n <Button color=\"primary\" className=\"ml-2 action-badge badge btn-badge py-1 px-2 mb-1 \" onClick={toggleReprintNotes}>\r\n OMTRYKT\r\n </Button>\r\n )}\r\n </div>\r\n </Col>\r\n <Col md={props.fullScreen ? 9 : 7} className=\"px-0\">\r\n <div className=\"py-1\">\r\n <Link\r\n to={document.retsinfoLink}\r\n className=\"document-title\"\r\n resource={document.retsinfoLink + \"/dan/html\"}\r\n title={nlToBr(document.title).toString()}\r\n {...{ rev: EliProperty.Embodies, rel: EliProperty.IsEmbodiedBy }}\r\n >\r\n <span resource={document.retsinfoLink + \"/dan/html\"} typeof={EliClass.Format}>\r\n <span property={EliProperty.Format} resource={EliResource.FormatHtml} />\r\n <span property={EliProperty.MediaType} resource={EliResource.MediaTypeHtml} />\r\n <span about={document.retsinfoLink + \"/dan\"} property={EliProperty.Title} datatype={DataType.XSDdate}>\r\n {nlToBr(document.title)}\r\n </span>\r\n </span>\r\n </Link>\r\n </div>\r\n <div className=\"py-1 wrapper\">\r\n {document.popularTitle && (\r\n <span className=\"document-popular-title\" property={EliProperty.TitleAlternative} datatype={DataType.RDFsLiteral}>\r\n {document.popularTitle}\r\n </span>\r\n )}\r\n </div>\r\n </Col>\r\n </Row>\r\n </Col>\r\n <Col md={3}>\r\n <Row className=\"inner-row\">\r\n <Col\r\n md={10}\r\n className=\"pr-0 py-1 text-right\"\r\n about={document.retsinfoLink}\r\n property={EliProperty.ResponsibilityOf}\r\n datatype={DataType.XSDstring}\r\n >\r\n <div className=\"document-ressort\">{document.ressortName}</div>\r\n <div className=\" document-ressort\">\r\n {document.fobRessortNames !== undefined && document.fobRessortNames.length > 0 ? <> ({document.fobRessortNames.join(\", \")})</> : \" \"}\r\n </div>\r\n </Col>\r\n <Col\r\n md={2}\r\n className=\"d-flex align-items-center more-info-toggler pr-0\"\r\n onClick={e => {\r\n e.preventDefault();\r\n setShow(!show);\r\n }}\r\n onKeyUp={handleKeyUp}\r\n tabIndex={0}\r\n aria-expanded={show ? true : false}\r\n >\r\n <div>\r\n <Icon icon={IconType.AngleRight} iconSize={32} className={!show ? \"svg-rotate collapsed\" : \"svg-rotate\"} />\r\n {show ? <span className=\"sr-only\">Skjul relaterede dokumenter</span> : <span className=\"sr-only\">Vis relaterede dokumenter</span>}\r\n </div>\r\n </Col>\r\n </Row>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"px-0\">\r\n <RelatedDocs show={show} docId={document.id} />\r\n </Col>\r\n </Row>\r\n </Container>\r\n </>\r\n );\r\n};\r\n\r\nfunction showDocumentStateBadge(geografiskDakning: number, retsinfoKlassifikation: number) {\r\n const folketingRetsinfoKlassifikationer = [50, 60, 70];\r\n return (\r\n (geografiskDakning === GeografiskDaekning.IkkeGronlandOgFaeroerne || geografiskDakning === GeografiskDaekning.HeleRigsfaellesskabet) &&\r\n !folketingRetsinfoKlassifikationer.includes(retsinfoKlassifikation)\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport { Spinner } from \"reactstrap\";\r\nimport { apiGET } from \"../../store/api\";\r\nimport * as qs from \"query-string\";\r\nimport FileSaver from \"file-saver\";\r\nimport { Link } from \"react-router-dom\";\r\nimport \"./CsvExportLink.scss\";\r\nimport { CsvSizeWarningDialog } from \"./CsvSizeWarningDialog\";\r\n\r\nexport interface IExportCsvLinkProps {\r\n paramsString: string;\r\n warnWhenExportingResult: boolean;\r\n}\r\n\r\ninterface IExportCsvLinkState {\r\n isFetchingData: boolean;\r\n isWarningDialogOpen: boolean;\r\n}\r\n\r\nexport class CsvExportLink extends React.Component<IExportCsvLinkProps, IExportCsvLinkState> {\r\n constructor(props: IExportCsvLinkProps) {\r\n super(props);\r\n this.state = { isFetchingData: false, isWarningDialogOpen: false };\r\n }\r\n\r\n render() {\r\n const isFetchingData = this.state.isFetchingData;\r\n if (isFetchingData) {\r\n return (\r\n <span className=\"csv-export-busy ml-3 pt-1 mr-3 mr-sm-0\">\r\n <Spinner as=\"span\" animation=\"border\" size=\"sm\" role=\"status\" aria-hidden=\"true\" />\r\n Eksporterer...\r\n </span>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <CsvSizeWarningDialog\r\n isModalOpen={this.state.isWarningDialogOpen}\r\n dismissed={() => this.setState({ isWarningDialogOpen: false })}\r\n confirmed={async () => await this.exportSearch(this.props.paramsString)}\r\n ></CsvSizeWarningDialog>\r\n <Link\r\n to=\"#\"\r\n className=\"font-weight-bold ml-3 pt-1 mr-2 mr-sm-0\"\r\n onClick={async e => {\r\n e.preventDefault();\r\n await this.beginExport();\r\n }}\r\n >\r\n Eksportér <span className=\"d-none d-lg-inline\">søgeresultat</span>\r\n </Link>\r\n </>\r\n );\r\n }\r\n }\r\n\r\n private async beginExport() {\r\n if (this.props.warnWhenExportingResult) {\r\n this.setState({ isWarningDialogOpen: true });\r\n } else {\r\n await this.exportSearch(this.props.paramsString);\r\n }\r\n }\r\n\r\n private async exportSearch(paramsString: string) {\r\n this.setState({ isFetchingData: true, isWarningDialogOpen: false });\r\n const result = await apiGET<string>(\"api/documentsearch/csv\", {\r\n params: qs.parse(paramsString),\r\n paramsSerializer: (p: any) => qs.stringify(p),\r\n responseType: \"blob\",\r\n });\r\n FileSaver.saveAs(result, \"Resultat.csv\");\r\n this.setState({ isFetchingData: false });\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as qs from \"query-string\";\r\nimport \"./DocumentsContainer.scss\";\r\nimport { DocumentSearchActions, IDocumentSearchActions, DocumentSearchParams } from \"../../store/documents/documentSearchReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { apiGET } from \"../../store/api\";\r\nimport { Col, Row, Input, Card } from \"reactstrap\";\r\nimport {\r\n IconType,\r\n SearchChip,\r\n DoubleSlider,\r\n EmptyStringArray,\r\n ICollapsableTreeNode,\r\n CollapsableTree,\r\n updateOnArrowClick,\r\n IOrderByValue,\r\n toggleNodeCheckedAndUpdate,\r\n LiveSearch,\r\n ILiveResultItemProps,\r\n LiveResultTemplateEnum,\r\n ToggleButton,\r\n CollapsibleBox,\r\n months,\r\n Keyword,\r\n IKeywordSection,\r\n updateKeywordOnChecked,\r\n DateFormats,\r\n PageSize,\r\n SearchResultView,\r\n} from \"@lexdania/components\";\r\nimport { IDocumentSearchResult } from \"../../models/IDocumentSearchResult\";\r\nimport { AppState } from \"../../store\";\r\nimport { IRessort } from \"../../models/IRessort\";\r\nimport { IRessortActions, RessortActions } from \"../../store/ressorter/ressortReducer\";\r\nimport { IDocumentClassificationActions, DocumentClassificationActions } from \"../../store/documentClassification/documentClassificationReducer\";\r\nimport { showDocumentStateBadge } from \"../../components/document/Document\";\r\nimport { IDocumentClassification } from \"../../models/IDocumentClassification\";\r\nimport { IDocumentType } from \"../../models/IDocumentType\";\r\nimport { OrderByValues } from \"../../models/DocumentOrderByValues\";\r\nimport { debounce } from \"ts-debounce\";\r\nimport { LiveSearchHitDto } from \"../../models/LiveSearchHitDto\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { TagActions, ITagsActions } from \"../../store/tags/tagsReducer\";\r\nimport { ITagSectionList } from \"../../models/ITagSectionList\";\r\nimport { ITag } from \"../../models/ITag\";\r\nimport { FilterReducerActions } from \"../../store/filterReducer\";\r\nimport { IFilterReducerActions } from \"./../../store/filterReducer\";\r\nimport { CsvExportLink } from \"../../components/CsvExport/CsvExportLink\";\r\nimport { MatchField } from \"../../models/MatchField\";\r\nimport { format, parse } from \"date-fns\";\r\nimport { GridViewDocument } from \"../../components/document/GridViewDocument\";\r\nimport { Document } from \"../../components/document/Document\";\r\nimport { ISearchDocument } from \"../../models/ISearchDocument\";\r\n\r\ninterface IDocumentsContainerProps\r\n extends IDocumentSearchActions,\r\n RouteComponentProps<any>,\r\n IRessortActions,\r\n IDocumentClassificationActions,\r\n ITagsActions,\r\n IFilterReducerActions {\r\n paramsString: string;\r\n paramsOrDefaults: Readonly<DocumentSearchParams>;\r\n ressorter: IRessort[];\r\n fobRessorter: IRessort[];\r\n documentClassifications: IDocumentClassification[];\r\n tags: ITagSectionList;\r\n myndighedFilterIsOpen: boolean;\r\n lawRegistryFilterIsOpen: boolean;\r\n documentClassificationFilterIsOpen: boolean;\r\n historialFilterIsOpen: boolean;\r\n yearFilterIsOpen: boolean;\r\n ressortFilterIsOpen: boolean;\r\n isGridViewActive: boolean;\r\n}\r\n\r\ninterface IDocumentSearchParamsState {\r\n activePage: number;\r\n activePageSize: PageSize;\r\n selectedOrderByValue?: IOrderByValue;\r\n ascendingOrder: boolean;\r\n yearStart: number;\r\n yearEnd: number;\r\n month: string;\r\n day: string;\r\n ppm: string;\r\n searchTerms: string[];\r\n documentNumberRange: string;\r\n historicDocumentsIncluded: boolean;\r\n celexNumber: string;\r\n titles: string[];\r\n popularTitles: string[];\r\n stikord: string[];\r\n fromDate?: Date;\r\n}\r\n\r\ninterface ILiveSearchState {\r\n liveSearchTerm: string;\r\n hits: ILiveResultItemProps[];\r\n staticLiveSearchItemsCount: number;\r\n}\r\n\r\ninterface IDocumentsContainerState extends IDocumentSearchParamsState {\r\n searchResult: IDocumentSearchResult;\r\n builtFilters: boolean;\r\n ressortList: ICollapsableTreeNode[];\r\n FOBList: ICollapsableTreeNode[];\r\n documentClassificationsList: ICollapsableTreeNode[];\r\n currentSearchTerm: string;\r\n liveSearchState: ILiveSearchState;\r\n yearStartTmp: number | \"\";\r\n yearEndTmp: number | \"\";\r\n tagSectionList: IKeywordSection[];\r\n}\r\n\r\nconst publicationMediaMap: { [P: string]: string } = {\r\n \"1\": \"Lovtidende A\",\r\n \"2\": \"Lovtidende B\",\r\n \"3\": \"Lovtidende C\",\r\n \"4\": \"Ministerialtidende\",\r\n \"5\": \"Retsinformation\",\r\n \"6\": \"Folketingstidende\",\r\n \"7\": \"Folketingets ombudsmand\",\r\n \"8\": \"Offentlighedsportalen\",\r\n};\r\n\r\nconst keys = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"æ\", \"ø\", \"å\"];\r\n\r\n// does the rawSearchTerm match number/year pattern\r\n// match for: 20 2018 | >10 2014 | <50 2015 | 22-33 2017\r\nconst numberAndYearRegExp: RegExp = /(^(<|>){1}([1-9]\\d*)|^([1-9]\\d*)|^([1-9]\\d*)(-)([1-9]\\d*))( (1[6789]|2[01])\\d\\d)?$/;\r\nconst allNumbersRegExp: RegExp = /\\d+/g;\r\nconst validYearsRegExp: RegExp = /(?:^|\\D)((1[6789]|2[01])\\d\\d)(?!\\d)/g;\r\n\r\nfunction removeNewline(str: string = \"\", replaceWith: string = \"\"): string {\r\n return str.replace(\"\\\\n\", replaceWith);\r\n}\r\n\r\nfunction getNumberText(number: string | null) {\r\n if (number === null || number === \"\") return \"\";\r\n return \"Søg efter nummer <strong>\" + number + \"</strong>\";\r\n}\r\n\r\nfunction getYearText(year: string | null) {\r\n if (year === null) return \"\";\r\n return \" i årgang <strong>\" + year + \"</strong>\";\r\n}\r\n\r\n// investigate match array and build a more readable text\r\nfunction getNumberAndYearText(arr: RegExpMatchArray | null): string {\r\n let buildText = \"\";\r\n if (arr === null) {\r\n return \"\";\r\n }\r\n\r\n if (arr[2] === undefined) {\r\n buildText = getNumberText(arr[1]);\r\n }\r\n\r\n if (arr[2] === \"<\") {\r\n buildText = \"Søg efter numre <strong>mindre end \" + arr[3] + \"</strong>\";\r\n }\r\n\r\n if (arr[2] === \">\") {\r\n buildText = \"Søg efter numre <strong>større end \" + arr[3] + \"</strong>\";\r\n }\r\n\r\n if (arr[6] === \"-\") {\r\n buildText = \"Søg efter numre i intervallet <strong>\" + arr[1] + \"</strong>\";\r\n }\r\n\r\n if (arr[8] !== undefined) {\r\n buildText = buildText + getYearText(arr[8]);\r\n }\r\n return buildText;\r\n}\r\n\r\nconst defaultLiveSearchState: Readonly<{ liveSearchTerm: string; hits: ILiveResultItemProps[]; staticLiveSearchItemsCount: number }> = {\r\n liveSearchTerm: \"\",\r\n hits: [],\r\n staticLiveSearchItemsCount: 0,\r\n};\r\n\r\nconst yearLow = 1665;\r\nconst yearHigh = new Date().getFullYear();\r\n\r\nconst defaultParams: Readonly<DocumentSearchParams> = {\r\n page: 0,\r\n ps: PageSize.Ten,\r\n yh: new Date().getFullYear(),\r\n yl: yearLow,\r\n o: OrderByValues[0].key,\r\n d: false,\r\n r: EmptyStringArray,\r\n dt: EmptyStringArray,\r\n f: EmptyStringArray,\r\n t: EmptyStringArray,\r\n dnr: \"\",\r\n h: true,\r\n mth: \"\",\r\n day: \"\",\r\n ppm: \"\",\r\n lr: EmptyStringArray,\r\n ce: \"\",\r\n pttl: EmptyStringArray,\r\n ttl: EmptyStringArray,\r\n so: EmptyStringArray,\r\n dl: \"\",\r\n};\r\n\r\nexport enum NavigationGroup {\r\n Ministerieindgang = \"10\",\r\n FOBMyndigheder = \"20\",\r\n}\r\n\r\nconst isNaNOrEmptyString = (numOrEmptyString: number | \"\") => numOrEmptyString === \"\" || Number.isNaN(numOrEmptyString);\r\n\r\nconst clampYear = (year: number) => Math.min(Math.max(year, yearLow), yearHigh);\r\n\r\nfunction paramsToDspState(dsp: DocumentSearchParams): IDocumentSearchParamsState {\r\n return {\r\n activePage: dsp.page,\r\n activePageSize: dsp.ps,\r\n selectedOrderByValue: OrderByValues.find(obv => obv.key === dsp.o) || OrderByValues[0],\r\n ascendingOrder: dsp.d,\r\n yearStart: clampYear(dsp.yl),\r\n yearEnd: clampYear(dsp.yh),\r\n searchTerms: dsp.t,\r\n documentNumberRange: dsp.dnr,\r\n historicDocumentsIncluded: dsp.h,\r\n month: dsp.mth,\r\n day: dsp.day,\r\n ppm: dsp.ppm,\r\n celexNumber: dsp.ce,\r\n titles: dsp.ttl,\r\n popularTitles: dsp.pttl,\r\n stikord: dsp.so,\r\n fromDate: parsedDateOrDefault(dsp.dl),\r\n };\r\n}\r\n\r\nfunction parsedDateOrDefault(dateString: string, defaultValue?: Date) {\r\n const date = parse(dateString, DateFormats.Internal, new Date());\r\n return isNaN(date.getTime()) ? defaultValue : date;\r\n}\r\n\r\nclass DocumentsContainer extends React.Component<IDocumentsContainerProps, IDocumentsContainerState> {\r\n public readonly state: IDocumentsContainerState = {\r\n searchResult: { pageCount: 0, documents: [], resultCount: 0, warnWhenExportingResult: false },\r\n ...paramsToDspState(this.props.paramsOrDefaults),\r\n ressortList: [],\r\n FOBList: [],\r\n builtFilters: false,\r\n documentClassificationsList: [],\r\n currentSearchTerm: \"\",\r\n liveSearchState: defaultLiveSearchState,\r\n yearStartTmp: \"\",\r\n yearEndTmp: \"\",\r\n month: \"\",\r\n day: \"\",\r\n ppm: \"\",\r\n tagSectionList: [{ label: \"\", id: \"\", keywords: [] }],\r\n celexNumber: \"\",\r\n };\r\n\r\n componentDidMount() {\r\n document.title = \"Retsinformation | Søg dokumenter\";\r\n this.initFiltersAndSearch();\r\n this.props.getRessorter();\r\n this.props.getFobRessorter();\r\n this.props.getDocumentClassification();\r\n this.props.getTags();\r\n }\r\n\r\n componentDidUpdate(prev: IDocumentsContainerProps) {\r\n if (this.state.activePageSize < PageSize.Twenty && this.props.isGridViewActive && !prev.isGridViewActive) {\r\n this.setState({ activePageSize: PageSize.Twenty }, this.setParamsAndSearch);\r\n } else {\r\n this.initFiltersAndSearch();\r\n }\r\n }\r\n\r\n public initFiltersAndSearch() {\r\n if (this.props.paramsString !== this.props.location.search) {\r\n if (this.props.location.search) {\r\n this.props.setParams(this.props.location.search);\r\n } else {\r\n this.props.history.replace(this.props.paramsString);\r\n }\r\n this.setState({ builtFilters: false });\r\n return;\r\n }\r\n if (this.props.ressorter.length === 0) {\r\n return;\r\n }\r\n if (this.props.fobRessorter.length === 0) {\r\n return;\r\n }\r\n\r\n if (this.props.tags.lawRegistry.length === 0) {\r\n return;\r\n }\r\n\r\n if (this.props.documentClassifications.length === 0) {\r\n return;\r\n }\r\n\r\n if (this.state.builtFilters) {\r\n return;\r\n }\r\n\r\n this.props.setLawRegistryIsOpen(this.props.paramsOrDefaults.lr.length > 0 || this.props.lawRegistryFilterIsOpen);\r\n this.props.setMyndighedIsOpen(this.props.paramsOrDefaults.f.length > 0 || this.props.myndighedFilterIsOpen);\r\n\r\n const stateFromParams = paramsToDspState(this.props.paramsOrDefaults);\r\n this.setState(\r\n {\r\n ...stateFromParams,\r\n builtFilters: true,\r\n ressortList: this.getRessortFilters(this.props.ressorter!),\r\n FOBList: this.getFOBRessortFilters(this.props.fobRessorter!),\r\n tagSectionList: this.getTagSectionListFilters(this.props.tags),\r\n documentClassificationsList: this.getDocumentClassificationFilter(this.props.documentClassifications!),\r\n yearStartTmp: stateFromParams.yearStart,\r\n yearEndTmp: stateFromParams.yearEnd,\r\n month: stateFromParams.month,\r\n day: stateFromParams.day,\r\n ppm: stateFromParams.ppm,\r\n celexNumber: stateFromParams.celexNumber,\r\n },\r\n () => this.doSearch(this.props.paramsString)\r\n );\r\n }\r\n\r\n public onOrderByChange = (value: IOrderByValue) => (e: React.SyntheticEvent) => {\r\n e.preventDefault();\r\n if (this.state.selectedOrderByValue !== value) {\r\n this.setState(\r\n {\r\n selectedOrderByValue: value,\r\n ascendingOrder: value.isDefaultDirectionAscending || false,\r\n activePage: 0,\r\n },\r\n this.setParamsAndSearch\r\n );\r\n }\r\n };\r\n\r\n public onOrderChange = () => this.setState({ ascendingOrder: !this.state.ascendingOrder, activePage: 0 }, this.setParamsAndSearch);\r\n public onGridViewToggle = () => this.props.toggleGridViewActive();\r\n\r\n public render() {\r\n const {\r\n searchResult,\r\n activePage,\r\n selectedOrderByValue,\r\n ascendingOrder,\r\n yearStart,\r\n yearStartTmp,\r\n yearEnd,\r\n yearEndTmp,\r\n currentSearchTerm,\r\n liveSearchState,\r\n historicDocumentsIncluded,\r\n activePageSize,\r\n } = this.state;\r\n const { paramsString } = this.props;\r\n\r\n return (\r\n <div className=\"documents-container\">\r\n {/* Search box */}\r\n <Row className=\"mb-3\">\r\n <Col className=\"px-xs-0\">\r\n <Card color=\"primary\" className=\"searchbox-container p-4\">\r\n <LiveSearch\r\n onChange={e => this.onLiveSearchTermChange(e, false)}\r\n onSearchButtonClicked={this.onSearchButtonClicked}\r\n searchTerm={currentSearchTerm}\r\n data={liveSearchState.hits}\r\n searchPlaceHolder=\"Søg efter nummer og år eller søgeord\"\r\n buttonStyle=\"secondary\"\r\n autofocus={true}\r\n />\r\n <Link to=\"/extremesearch\" title=\"Avanceret søgning\" key=\"extreme-search-key\" className=\"extreme-search-link mt-2 d-none d-md-block\">\r\n Avanceret søgning\r\n </Link>\r\n </Card>\r\n </Col>\r\n </Row>\r\n\r\n <Row className=\"mt-3\">\r\n {/* Filters */}\r\n <Col lg={4} className=\"px-xs-0 search-filter-col\">\r\n {/* Chip actions */}\r\n <div className=\"chip-action-container d-flex justify-content-between\">\r\n <Link\r\n to=\"#\"\r\n className=\"font-weight-bold pt-1 ml-3 ml-sm-0\"\r\n onClick={e => {\r\n e.preventDefault();\r\n this.ClearSearch();\r\n }}\r\n >\r\n Nulstil <span className=\"d-none d-lg-inline\">søgning</span>\r\n </Link>\r\n <CsvExportLink paramsString={paramsString} warnWhenExportingResult={searchResult.warnWhenExportingResult} />\r\n </div>\r\n {/* Database-filter */}\r\n <CollapsibleBox\r\n isOpen={this.props.documentClassificationFilterIsOpen}\r\n onOpenClose={innerState => this.props.setDocumentClassificationIsOpen(innerState)}\r\n className=\"filterbox tree-filterbox\"\r\n icon={IconType.Database}\r\n heading=\"Søgeområde\"\r\n >\r\n <CollapsableTree\r\n listOfNodes={this.state.documentClassificationsList}\r\n onChange={this.onDocumentClassificationFilterChange}\r\n className=\"collapsable-tree-container\"\r\n activeTreeStructure={true}\r\n onArrowClick={this.onDocumentClassificationFilterArrowClick}\r\n />\r\n </CollapsibleBox>\r\n {/* Historisk-Toggle */}\r\n <CollapsibleBox\r\n isOpen={this.props.historialFilterIsOpen}\r\n onOpenClose={innerState => this.props.setHistorialIsOpen(innerState)}\r\n className=\"filterbox historisk-toggle-button\"\r\n heading=\"Historisk\"\r\n icon={IconType.History}\r\n >\r\n <ToggleButton\r\n on={historicDocumentsIncluded}\r\n text={\"Inkludér historiske dokumenter\"}\r\n toggleHandler={e => this.historyToggleHandler(e)}\r\n ></ToggleButton>\r\n </CollapsibleBox>\r\n {/* Årgange-filter */}\r\n <CollapsibleBox\r\n isOpen={this.props.yearFilterIsOpen}\r\n onOpenClose={innerState => this.props.setYearIsOpen(innerState)}\r\n className=\"filterbox\"\r\n icon={IconType.CalendarAlt}\r\n heading=\"Årgang\"\r\n >\r\n <DoubleSlider min={yearLow} max={new Date().getFullYear()} defaultValueLow={yearStart} defaultValueHigh={yearEnd} onChanged={this.onYearChange} />\r\n <br />\r\n\r\n <Row>\r\n <Col>\r\n <Input\r\n aria-label=\"Søg startende fra årgang\"\r\n type=\"number\"\r\n value={yearStartTmp}\r\n onChange={e => this.onYearStartChange(Number.parseFloat(e.currentTarget.value))}\r\n onBlur={e => this.onYearStartBlur(Number.parseFloat(e.currentTarget.value))}\r\n />\r\n </Col>\r\n <Col>\r\n <Input\r\n aria-label=\"Søg til og med årgang\"\r\n type=\"number\"\r\n value={yearEndTmp}\r\n onChange={e => this.onYearEndChange(Number.parseFloat(e.currentTarget.value))}\r\n onBlur={e => this.onYearEndBlur(Number.parseFloat(e.currentTarget.value))}\r\n />\r\n </Col>\r\n </Row>\r\n </CollapsibleBox>\r\n {/* Ministerie-filter */}\r\n <CollapsibleBox\r\n isOpen={this.props.ressortFilterIsOpen}\r\n onOpenClose={innerState => this.props.setRessortIsOpen(innerState)}\r\n className=\"filterbox tree-filterbox\"\r\n icon={IconType.City}\r\n heading=\"Ministerium\"\r\n >\r\n <CollapsableTree\r\n listOfNodes={this.state.ressortList}\r\n onChange={this.onRessortFilterChange}\r\n className=\"collapsable-tree-container\"\r\n activeTreeStructure={true}\r\n onArrowClick={this.onArrowClick}\r\n />\r\n </CollapsibleBox>\r\n {/* FOB Myndighed */}\r\n <CollapsibleBox\r\n isOpen={this.props.myndighedFilterIsOpen}\r\n onOpenClose={innerState => this.props.setMyndighedIsOpen(innerState)}\r\n className=\"filterbox tree-filterbox\"\r\n icon={IconType.UserTie}\r\n heading=\"Myndighed (FOB)\"\r\n >\r\n <CollapsableTree\r\n listOfNodes={this.state.FOBList}\r\n onChange={this.onFOBFilterChange}\r\n className=\"collapsable-tree-container\"\r\n activeTreeStructure={true}\r\n onArrowClick={this.onFOBArrowClick}\r\n />\r\n </CollapsibleBox>\r\n {/* Law registry filter FO */}\r\n <CollapsibleBox\r\n isOpen={this.props.lawRegistryFilterIsOpen}\r\n onOpenClose={innerState => this.props.setLawRegistryIsOpen(innerState)}\r\n className=\"filterbox tree-filterbox\"\r\n icon={IconType.Font}\r\n heading=\"Lovregister (FOB)\"\r\n >\r\n <Keyword keys={keys} keywordSections={this.state.tagSectionList} handleKeywordChecked={this.onKeywordChecked} />\r\n </CollapsibleBox>\r\n </Col>\r\n\r\n {/* Search result */}\r\n <Col lg={8} className=\"mt-3 mt-lg-0\">\r\n <SearchResultView\r\n searchResultItems={searchResult.documents}\r\n isGridViewActive={this.props.isGridViewActive}\r\n renderGridItem={(searchResultItem: ISearchDocument) => <GridViewDocument document={searchResultItem} />}\r\n renderItem={(searchResultItem: ISearchDocument) => <Document document={searchResultItem} />}\r\n renderFailedSearchErrorMessage={this.showFailedSearch}\r\n renderChips={this.renderChips}\r\n isError={searchResult.isError}\r\n resultCount={searchResult.resultCount}\r\n searchOrderBy={selectedOrderByValue}\r\n orderByValues={OrderByValues.map(obv => obv)}\r\n onOrderByChanged={this.onOrderByChange}\r\n isSearchDirectionAscending={ascendingOrder}\r\n onSearchDirectionChange={this.onOrderChange}\r\n onGridViewToggled={this.onGridViewToggle}\r\n onPageChange={this.onPageChange}\r\n activePage={activePage}\r\n pageCount={searchResult.pageCount}\r\n activePageSize={activePageSize}\r\n onPageSizeChange={this.onPageSizeChange}\r\n ></SearchResultView>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n }\r\n\r\n private showFailedSearch = () => {\r\n const idxOfSearchTermWithSuspiciousChars = this.state.searchTerms.findIndex(st => st.match(/[(){}!:^[\\]\\\\]/)); // Special characters that may introduce a queryparsing error from elastic search\r\n return (\r\n <React.Fragment>\r\n <p>Din søgning fejlede desværre.</p>\r\n {idxOfSearchTermWithSuspiciousChars > -1 && (\r\n <>\r\n <p>\r\n Dette kan måske skyldes fritekstsøgningen på <strong>'{this.state.searchTerms[idxOfSearchTermWithSuspiciousChars]}'</strong>, der indeholder\r\n specialtegn.\r\n <br />\r\n <Link\r\n to=\"#\"\r\n onClick={e => {\r\n e.preventDefault();\r\n this.removeSearchTerm(idxOfSearchTermWithSuspiciousChars);\r\n }}\r\n >\r\n Fjern evt. dette søgekrav (tryk her).\r\n </Link>\r\n </p>\r\n <p>\r\n Eller præciser din søgning ved hjælp af den{\" \"}\r\n <Link to=\"/extremesearch\" title=\"Avanceret søgning\">\r\n avancerede søgefunktion.\r\n </Link>\r\n </p>\r\n </>\r\n )}\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n private renderChips = () => {\r\n return (\r\n /* same order as the filters */\r\n <React.Fragment>\r\n {this.state.searchTerms.map((searchTerm, index) => {\r\n return (\r\n <SearchChip icon={IconType.Search} title={searchTerm} key={\"chip_searchTerm_\" + index} onClick={() => this.removeSearchTerm(index)}>\r\n {removeNewline(searchTerm, \" \")}\r\n </SearchChip>\r\n );\r\n })}\r\n {this.state.titles.map((title, index) => {\r\n return (\r\n <SearchChip icon={IconType.PollH} title={removeNewline(title, \" \")} key={\"chip_ttl_\" + index} onClick={() => this.removeTitle(index)}>\r\n Titel: {removeNewline(title, \" \")}\r\n </SearchChip>\r\n );\r\n })}\r\n\r\n {this.state.popularTitles.map((popularTitle, index) => {\r\n return (\r\n <SearchChip icon={IconType.PollH} key={\"chip_pttl_\" + index} onClick={() => this.removePopularTitle(index)}>\r\n Populærtitel: {removeNewline(popularTitle, \" \")}\r\n </SearchChip>\r\n );\r\n })}\r\n {this.state.stikord.map((stikord, index) => {\r\n return (\r\n <SearchChip icon={IconType.Tag} key={\"chip_eo_\" + index} onClick={() => this.removeStikord(index)}>\r\n Stikord: {removeNewline(stikord, \" \")}\r\n </SearchChip>\r\n );\r\n })}\r\n {this.state.documentNumberRange && (\r\n <SearchChip icon={IconType.Hashtag} onClick={() => this.removeDocumentNumberRange()}>\r\n Nr: {this.state.documentNumberRange}\r\n </SearchChip>\r\n )}\r\n {this.state.month && (\r\n <SearchChip icon={IconType.CalendarAlt} onClick={() => this.removeMonthAndDay()}>\r\n {this.state.day && `Dato: ${this.state.day}. ${months[+this.state.month - 1]}`}\r\n {!this.state.day && `Måned: ${months[+this.state.month - 1]}`}\r\n </SearchChip>\r\n )}\r\n {this.state.ppm && (\r\n <SearchChip icon={IconType.BookReader} onClick={this.removePublicationMedia}>\r\n Publikationsmedie: {publicationMediaMap[this.state.ppm]}\r\n </SearchChip>\r\n )}\r\n {this.state.celexNumber && (\r\n <SearchChip icon={IconType.EuroSign} onClick={this.removeCelexNumber}>\r\n Celex-nummer: {this.state.celexNumber}\r\n </SearchChip>\r\n )}\r\n {this.state.documentClassificationsList.map((documentClassificationParent: ICollapsableTreeNode, indexParent: number) => {\r\n return documentClassificationParent && !documentClassificationParent.children!.some(child => child.checked === false) ? (\r\n <SearchChip icon={IconType.Database} key={\"chip_doctype_\" + indexParent} onClick={this.onDocumentTypeChipRemove(documentClassificationParent)}>\r\n {documentClassificationParent.label}\r\n </SearchChip>\r\n ) : (\r\n documentClassificationParent.children!.map((docTypeChild: ICollapsableTreeNode, indexChild: number) => {\r\n return (\r\n docTypeChild.checked && (\r\n <SearchChip\r\n icon={IconType.Database}\r\n key={\"chip_doctype_\" + indexParent + \"_\" + indexChild}\r\n onClick={this.onDocumentTypeChipRemove(docTypeChild)}\r\n >\r\n {documentClassificationParent.label} {\">\"} {docTypeChild.label}\r\n </SearchChip>\r\n )\r\n );\r\n })\r\n );\r\n })}\r\n\r\n {!this.state.historicDocumentsIncluded && (\r\n <SearchChip icon={IconType.History} onClick={() => this.removeHistoricChip()}>\r\n Historisk fravalgt\r\n </SearchChip>\r\n )}\r\n {this.state.fromDate && (\r\n <SearchChip icon={IconType.CalendarAlt} onClick={this.onDateChipRemove}>\r\n Fra dato: {format(this.state.fromDate, DateFormats.Default)}\r\n </SearchChip>\r\n )}\r\n {this.isYearFilterChipVisible() && (\r\n <SearchChip icon={IconType.CalendarAlt} onClick={this.onYearChipRemove}>\r\n År: {this.state.yearStart}-{this.state.yearEnd}\r\n </SearchChip>\r\n )}\r\n {this.state.ressortList.map((ressortParent: ICollapsableTreeNode, indexParent: number) => {\r\n return (\r\n ressortParent.checked && (\r\n <SearchChip icon={IconType.City} key={\"chip_ressort_\" + indexParent} onClick={this.onRessortChipRemove(ressortParent)}>\r\n {ressortParent.label}\r\n </SearchChip>\r\n )\r\n );\r\n })}\r\n {this.state.FOBList.map((FOBParent: ICollapsableTreeNode, indexParent: number) => {\r\n return (\r\n FOBParent.checked && (\r\n <SearchChip icon={IconType.UserTie} key={\"chip_FOB_\" + indexParent} onClick={this.onFOBChipRemove(FOBParent)}>\r\n {FOBParent.label}\r\n </SearchChip>\r\n )\r\n );\r\n })}\r\n {this.state.tagSectionList.map(section =>\r\n section.keywords.map(tag => {\r\n return (\r\n tag.checked && (\r\n <SearchChip icon={IconType.Font} key={\"chip_tag_\" + tag.id} onClick={this.onTagChipRemove(section.id, tag.id)}>\r\n {tag.label}\r\n </SearchChip>\r\n )\r\n );\r\n })\r\n )}\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n private removeSearchTerm = (index: number) => {\r\n this.state.searchTerms.splice(index, 1);\r\n this.setState({ searchTerms: this.state.searchTerms, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n private removeTitle = (index: number) => {\r\n this.state.titles.splice(index, 1);\r\n this.setState({ titles: this.state.titles, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n private removePopularTitle = (index: number) => {\r\n this.state.popularTitles.splice(index, 1);\r\n this.setState({ popularTitles: this.state.popularTitles, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n private removeStikord = (index: number) => {\r\n this.state.stikord.splice(index, 1);\r\n this.setState({ stikord: this.state.stikord, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private removeDocumentNumberRange = () => {\r\n this.setState({ documentNumberRange: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private removeMonthAndDay = () => {\r\n this.setState({ month: \"\", day: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private removePublicationMedia = () => {\r\n this.setState({ ppm: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private removeCelexNumber = () => {\r\n this.setState({ celexNumber: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private removeHistoricChip = () => {\r\n this.setState({ historicDocumentsIncluded: true, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private onSearchButtonClicked = (searchTerm: string, skipNumberYearMatch: boolean = false) => {\r\n const trimmedSearchTerm = searchTerm.trim();\r\n if (!trimmedSearchTerm) {\r\n return;\r\n }\r\n\r\n if (!skipNumberYearMatch) {\r\n const numberYearMatch = trimmedSearchTerm.match(numberAndYearRegExp);\r\n const numberMatches = trimmedSearchTerm.match(allNumbersRegExp);\r\n if (numberYearMatch !== null) {\r\n this.onYearAndNumberMatchClicked(numberYearMatch[1], numberYearMatch[8]);\r\n return;\r\n } else if (numberMatches) {\r\n var validYearsMatch = searchTerm.match(validYearsRegExp);\r\n var year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n var num = numberMatches.find(x => x !== year) || \"\";\r\n this.onYearAndNumberMatchClicked(num, year);\r\n return;\r\n }\r\n }\r\n\r\n const newSearchTerms = [...this.state.searchTerms];\r\n if (!newSearchTerms.some(t => t === trimmedSearchTerm)) {\r\n newSearchTerms.push(trimmedSearchTerm);\r\n }\r\n\r\n this.setState(\r\n {\r\n currentSearchTerm: \"\",\r\n searchTerms: newSearchTerms,\r\n liveSearchState: defaultLiveSearchState,\r\n activePage: 0,\r\n },\r\n this.setParamsAndSearch\r\n );\r\n };\r\n\r\n private onLiveSearchTermChange = (rawSearchTerm: string, forceSeach: boolean) => {\r\n var trimmedSearchTerm = rawSearchTerm.trim();\r\n const newLiveSearchState: ILiveSearchState = { liveSearchTerm: rawSearchTerm, hits: [], staticLiveSearchItemsCount: 0 };\r\n let counter = 0; // Counter for static live search items\r\n\r\n if (!trimmedSearchTerm) {\r\n this.setState({ currentSearchTerm: rawSearchTerm, liveSearchState: newLiveSearchState });\r\n return;\r\n }\r\n\r\n // If only different in spaces, update state but dont do livesearch request\r\n if (trimmedSearchTerm === this.state.currentSearchTerm.trim() && !forceSeach) {\r\n this.setState({ currentSearchTerm: rawSearchTerm });\r\n return;\r\n }\r\n\r\n // \"Number/year\" livesearch results\r\n const numberMatches = rawSearchTerm.match(allNumbersRegExp);\r\n const numberYearMatch = rawSearchTerm.match(numberAndYearRegExp);\r\n if (numberYearMatch !== null) {\r\n const buildText = getNumberAndYearText(numberYearMatch);\r\n\r\n newLiveSearchState.hits.push({\r\n text: buildText,\r\n onClick: () => this.onYearAndNumberMatchClicked(numberYearMatch[1], numberYearMatch[8]),\r\n aria: \"Klik her for at \" + buildText.replace(\"Søg\", \"søge\"),\r\n icon: IconType.Hashtag,\r\n });\r\n counter++;\r\n } else if (numberMatches !== null && typeof numberMatches !== \"undefined\") {\r\n var validYearsMatch = rawSearchTerm.match(validYearsRegExp);\r\n var year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n var num = numberMatches.find(x => x !== year) || \"\";\r\n\r\n const buildText = getNumberText(num) + getYearText(year);\r\n newLiveSearchState.hits.push({\r\n text: buildText,\r\n onClick: () => this.onYearAndNumberMatchClicked(num, year),\r\n aria: \"Klik her for at \" + buildText.replace(\"Søg\", \"søge\"),\r\n icon: IconType.Hashtag,\r\n });\r\n counter++;\r\n }\r\n\r\n // \"Search for\" livesearch results\r\n const quoteDelimited: RegExp = /\"[^\"]+\"$/;\r\n if (quoteDelimited.test(trimmedSearchTerm)) {\r\n newLiveSearchState.hits.push({\r\n text: \"Søg efter nøjagtigt udtryk <strong>\" + trimmedSearchTerm + \"</strong>\",\r\n onClick: () => this.onSearchButtonClicked(trimmedSearchTerm, true),\r\n aria: \"Klik her for at søge efter nøjagtigt udtryk \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n } else {\r\n newLiveSearchState.hits.push({\r\n text: \"Søg efter <strong>\" + trimmedSearchTerm + \"</strong>\",\r\n onClick: () => this.onSearchButtonClicked(trimmedSearchTerm, true),\r\n aria: \"Klik her for at søge efter \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n\r\n newLiveSearchState.hits.push({\r\n text: 'Søg efter nøjagtigt udtryk \"<strong>' + trimmedSearchTerm + '</strong>\"',\r\n onClick: () => this.onSearchButtonClicked('\"' + trimmedSearchTerm + '\"', true),\r\n aria: \"Klik her for at søge efter nøjagtigt udtryk \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n }\r\n\r\n // Update the static live search items counter\r\n newLiveSearchState.staticLiveSearchItemsCount = counter;\r\n\r\n this.setState(\r\n { currentSearchTerm: rawSearchTerm, liveSearchState: newLiveSearchState },\r\n debounce(() => this.getDynamicLiveSearchItems(newLiveSearchState), 200)\r\n );\r\n };\r\n\r\n private getDynamicLiveSearchItems = (newLiveSearchState: ILiveSearchState) => {\r\n // Block dynamic live search for outdated/debounced calls and less than 3 characters\r\n if (this.state.currentSearchTerm === newLiveSearchState.liveSearchTerm && newLiveSearchState.liveSearchTerm.trim().length > 2) {\r\n this.getTop3SearchResultItems();\r\n }\r\n };\r\n\r\n private getTop3SearchResultItems() {\r\n var lst: ILiveSearchState = this.state.liveSearchState;\r\n var params = this.buildParams();\r\n\r\n if (this.state.currentSearchTerm !== \"\") {\r\n if (params.t) {\r\n params.t = [...params.t, this.state.currentSearchTerm]; // Create a new cloned list of searchterms and expand it (preventing state manipulation)\r\n } else {\r\n params.t = [this.state.currentSearchTerm];\r\n }\r\n }\r\n\r\n const paramsString = qs.stringify(params);\r\n const paramsQuery = `?${paramsString}`;\r\n apiGET<IDocumentSearchResult>(\"api/documentsearch\", {\r\n params: qs.parse(paramsQuery),\r\n paramsSerializer: (p: object) => qs.stringify(p),\r\n }).then(response => {\r\n if (this.state.currentSearchTerm !== lst.liveSearchTerm) {\r\n //If the search term is not the same as current search term - then this is NOT the lates response - ignore result\r\n return;\r\n }\r\n\r\n const hits = response.documents.slice(0, 3).map(doc => ({\r\n text: doc.title,\r\n icon: IconType.FileImport,\r\n onClick: () => this.props.history.push(doc.retsinfoLink),\r\n template: LiveResultTemplateEnum.DOUBLE_LINE_WITH_HEADINGS_AND_LABEL,\r\n aria: \"Klik her for at gå direkte til dokument \" + doc.shortName,\r\n heading: doc.shortName,\r\n subHeading: doc.popularTitle,\r\n headingPrefix: \"Gå direkte til\",\r\n label: doc.isHistoryFlag && showDocumentStateBadge(doc.geografiskDaekningId, doc.retsinfoKlassifikationId) ? \"(historisk)\" : undefined,\r\n }));\r\n\r\n // remember to prepend hits with existing items\r\n this.setState({ liveSearchState: { ...lst, hits: [...lst.hits, ...hits] } }, this.getLiveSearchSuggestionItems);\r\n });\r\n }\r\n\r\n private getLiveSearchSuggestionItems() {\r\n var lst: ILiveSearchState = this.state.liveSearchState;\r\n var params = qs.parse(this.props.paramsString);\r\n\r\n apiGET<LiveSearchHitDto[]>(\"api/documentsearch/suggestions\", {\r\n params: { q: lst.liveSearchTerm.trim(), dt: params.dt },\r\n paramsSerializer: (p: object) => qs.stringify(p),\r\n })\r\n .then(result => {\r\n if (this.state.currentSearchTerm !== lst.liveSearchTerm) {\r\n return;\r\n }\r\n const hits: ILiveResultItemProps[] = result.map((hit: LiveSearchHitDto) => ({\r\n text: `Mener du \"<strong>${hit.value.replace(/\\\\n/g, \"<br />\")}</strong>\"`,\r\n icon: hit.field === MatchField.Stikord ? IconType.Tag : IconType.PollH,\r\n onClick: () => this.addLiveSearchTerm(hit),\r\n label: hit.field === MatchField.Title ? \"(titel)\" : hit.field === MatchField.PopularTitle ? \"(populærtitel)\" : \"(stikord)\",\r\n template: LiveResultTemplateEnum.DOUBLE_LINE_WITH_LABEL,\r\n aria:\r\n \"Klik her for at søge efter dokumenter med \" +\r\n (hit.field === MatchField.Title ? \"(titel)\" : hit.field === MatchField.PopularTitle ? \"(populærtitel)\" : \"(stikord)\") +\r\n \": \" +\r\n hit.value,\r\n }));\r\n\r\n // remember to prepend hits with existing items\r\n this.setState({ liveSearchState: { ...lst, hits: [...lst.hits, ...hits] } });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n public addLiveSearchTerm = (hit: LiveSearchHitDto) => {\r\n const stateKey: keyof IDocumentSearchParamsState =\r\n hit.field === MatchField.Title ? \"titles\" : hit.field === MatchField.PopularTitle ? \"popularTitles\" : \"stikord\";\r\n const arr = [...this.state[stateKey]];\r\n\r\n if (!arr.some(t => t === hit.value)) {\r\n arr.push(hit.value);\r\n }\r\n this.setState({ currentSearchTerm: \"\", liveSearchState: defaultLiveSearchState, ...{ [stateKey]: arr } }, this.setParamsAndSearch);\r\n };\r\n\r\n private onYearAndNumberMatchClicked = (num: string, year: string | null) => {\r\n if (year != null) {\r\n this.setState(\r\n {\r\n yearStart: +year,\r\n yearEnd: +year,\r\n yearStartTmp: +year,\r\n yearEndTmp: +year,\r\n documentNumberRange: num,\r\n liveSearchState: defaultLiveSearchState,\r\n currentSearchTerm: \"\",\r\n activePage: 0,\r\n },\r\n this.setParamsAndSearch\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n yearStart: +yearLow,\r\n yearEnd: +yearHigh,\r\n yearStartTmp: +yearLow,\r\n yearEndTmp: +yearHigh,\r\n documentNumberRange: num,\r\n liveSearchState: defaultLiveSearchState,\r\n currentSearchTerm: \"\",\r\n activePage: 0,\r\n },\r\n this.setParamsAndSearch\r\n );\r\n }\r\n };\r\n\r\n private onPageChange = (newPage: number) => {\r\n this.setState({ activePage: newPage - 1 }, this.setParamsAndSearch);\r\n this.scrollToTop();\r\n };\r\n\r\n private onPageSizeChange = (newPageSize: number) => {\r\n this.setState({ activePageSize: newPageSize, activePage: 0 }, this.setParamsAndSearch);\r\n this.scrollToTop();\r\n };\r\n\r\n private scrollToTop() {\r\n const scrollHere = document.getElementById(\"scroll-here\")!;\r\n window.getComputedStyle(scrollHere).display === \"none\" ? window.scrollTo(0, 0) : scrollHere.scrollIntoView();\r\n }\r\n\r\n private onYearChange = (yearStart: number, yearEnd: number) => {\r\n if (\r\n this.state.yearStart !== yearStart ||\r\n this.state.yearEnd !== yearEnd ||\r\n this.state.yearStart !== this.state.yearStartTmp ||\r\n this.state.yearEnd !== this.state.yearEndTmp\r\n ) {\r\n this.setState({ yearStart, yearEnd, yearStartTmp: yearStart, yearEndTmp: yearEnd, month: \"\", day: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n }\r\n };\r\n\r\n private onYearStartChange = (year: number) => {\r\n this.setState({ yearStartTmp: isNaNOrEmptyString(year) ? \"\" : year });\r\n if (!isNaNOrEmptyString(year)) {\r\n const startClamped = clampYear(year);\r\n if (startClamped === year) {\r\n const end = this.state.yearEnd > startClamped ? this.state.yearEnd : startClamped;\r\n this.onYearChange(startClamped, end);\r\n }\r\n }\r\n };\r\n\r\n private onYearEndChange = (year: number) => {\r\n this.setState({ yearEndTmp: isNaNOrEmptyString(year) ? \"\" : year });\r\n if (!isNaNOrEmptyString(year)) {\r\n const endClamped = clampYear(year);\r\n if (endClamped === year) {\r\n const start = this.state.yearStart < endClamped ? this.state.yearStart : endClamped;\r\n this.onYearChange(start, endClamped);\r\n }\r\n }\r\n };\r\n\r\n private onYearStartBlur = (year: number) => {\r\n if (isNaNOrEmptyString(year) || year < yearLow || year > yearHigh) {\r\n this.onYearChange(yearLow, this.state.yearEnd);\r\n }\r\n };\r\n\r\n private onYearEndBlur = (year: number) => {\r\n if (isNaNOrEmptyString(year) || year < yearLow || year > yearHigh) {\r\n this.onYearChange(this.state.yearStart, yearHigh);\r\n }\r\n };\r\n\r\n private onYearChipRemove = () => {\r\n this.setState(\r\n {\r\n month: \"\",\r\n day: \"\",\r\n yearStart: defaultParams.yl,\r\n yearEnd: defaultParams.yh,\r\n yearStartTmp: defaultParams.yl,\r\n yearEndTmp: defaultParams.yh,\r\n activePage: 0,\r\n },\r\n this.setParamsAndSearch\r\n );\r\n };\r\n\r\n private onDateChipRemove = () => this.setState({ fromDate: undefined }, this.setParamsAndSearch);\r\n\r\n private isYearFilterChipVisible = () => !(this.state.yearStart === yearLow && this.state.yearEnd === new Date().getFullYear());\r\n\r\n private setParamsAndSearch() {\r\n const params: Partial<DocumentSearchParams> = this.buildParams();\r\n const paramsString = qs.stringify(params);\r\n const paramsQuery = `?${paramsString}`;\r\n\r\n this.props.history.replace(paramsString ? paramsQuery : this.props.history.location.pathname);\r\n this.doSearch(paramsQuery);\r\n this.props.setParams(paramsQuery === \"?\" ? \"\" : paramsQuery);\r\n // Force update on liveseach\r\n if (this.state.currentSearchTerm) this.onLiveSearchTermChange(this.state.currentSearchTerm, true);\r\n }\r\n\r\n private buildParams() {\r\n const {\r\n activePage,\r\n ascendingOrder,\r\n selectedOrderByValue,\r\n yearStart,\r\n yearEnd,\r\n ressortList,\r\n documentClassificationsList,\r\n FOBList,\r\n searchTerms,\r\n documentNumberRange,\r\n historicDocumentsIncluded,\r\n month,\r\n day,\r\n tagSectionList,\r\n ppm,\r\n celexNumber,\r\n titles,\r\n popularTitles,\r\n stikord,\r\n fromDate,\r\n activePageSize,\r\n } = this.state;\r\n\r\n const params: Partial<DocumentSearchParams> = {};\r\n\r\n if (activePage !== defaultParams.page) {\r\n params.page = activePage;\r\n }\r\n\r\n if (activePageSize !== PageSize.Ten) {\r\n params.ps = activePageSize;\r\n }\r\n\r\n if (ascendingOrder) {\r\n params.d = ascendingOrder;\r\n }\r\n\r\n if (selectedOrderByValue && selectedOrderByValue.key !== defaultParams.o) {\r\n params.o = selectedOrderByValue.key;\r\n }\r\n\r\n if (yearStart !== defaultParams.yl) {\r\n params.yl = yearStart;\r\n }\r\n\r\n if (yearEnd !== defaultParams.yh) {\r\n params.yh = yearEnd;\r\n }\r\n\r\n if (documentNumberRange !== \"\") {\r\n params.dnr = documentNumberRange;\r\n }\r\n if (historicDocumentsIncluded !== defaultParams.h) {\r\n params.h = historicDocumentsIncluded;\r\n }\r\n\r\n if (ressortList.some(ressorter => ressorter.checked)) {\r\n params.r = ressortList.filter(ressorter => ressorter.checked).map(r => r.value);\r\n }\r\n\r\n if (FOBList.some(fob => fob.checked)) {\r\n params.f = FOBList.filter(fob => fob.checked).map(f => f.value);\r\n }\r\n\r\n if (searchTerms.length > 0) {\r\n params.t = searchTerms;\r\n }\r\n\r\n if (month !== defaultParams.mth) {\r\n params.mth = month;\r\n }\r\n\r\n if (day !== defaultParams.day) {\r\n params.day = day;\r\n }\r\n\r\n if (ppm !== defaultParams.ppm) {\r\n params.ppm = ppm;\r\n }\r\n\r\n if (celexNumber !== defaultParams.ce) {\r\n params.ce = celexNumber;\r\n }\r\n\r\n if (tagSectionList.some(section => section.keywords.some(tag => tag.checked))) {\r\n params.lr = tagSectionList.flatMap(section => section.keywords.filter(tag => tag.checked).map(e => e.id));\r\n }\r\n\r\n if (documentClassificationsList.some(section => section.indeterminate || section.checked)) {\r\n params.dt = documentClassificationsList\r\n .filter(section => section.indeterminate || section.checked)\r\n .flatMap(section => section.children!)\r\n .filter(docType => !docType.noCheckBox)\r\n .filter(docType => docType.checked)\r\n .map(docType => docType.value);\r\n }\r\n\r\n if (titles.length > 0) {\r\n params.ttl = titles;\r\n }\r\n\r\n if (popularTitles.length > 0) {\r\n params.pttl = popularTitles;\r\n }\r\n\r\n if (stikord.length > 0) {\r\n params.so = stikord;\r\n }\r\n\r\n if (fromDate) {\r\n params.dl = format(fromDate, DateFormats.Internal);\r\n }\r\n return params;\r\n }\r\n\r\n private getRessortFilters(ressorts: IRessort[]): ICollapsableTreeNode[] {\r\n return ressorts.map(ressorter => {\r\n return {\r\n value: ressorter.id,\r\n label: ressorter.name,\r\n checked: this.props.paramsOrDefaults.r.some(r => r === ressorter.id),\r\n children: undefined,\r\n isOpen: false,\r\n indeterminate: undefined,\r\n isChild: false,\r\n };\r\n });\r\n }\r\n\r\n private getFOBRessortFilters(fobRessorter: IRessort[]): ICollapsableTreeNode[] {\r\n return fobRessorter.map(fobRessort => {\r\n return {\r\n value: fobRessort.id,\r\n label: fobRessort.name,\r\n checked: this.props.paramsOrDefaults.f.some(f => f === fobRessort.id),\r\n children: undefined,\r\n isOpen: false,\r\n indeterminate: undefined,\r\n isChild: false,\r\n };\r\n });\r\n }\r\n\r\n private getDocumentClassificationFilter(documentClassifications: IDocumentClassification[]): ICollapsableTreeNode[] {\r\n const documentClassificationFilter: ICollapsableTreeNode[] = [];\r\n\r\n documentClassifications.map((documentClassification: IDocumentClassification, parentIndex: number) => {\r\n documentClassificationFilter[parentIndex] = {\r\n value: documentClassification.ids,\r\n label: documentClassification.displayName,\r\n children: [],\r\n checked: false,\r\n isOpen: false,\r\n isChild: false,\r\n };\r\n\r\n return documentClassification.documentTypes.map((documentType: IDocumentType, childIndex: number) => {\r\n return (documentClassificationFilter[parentIndex].children![childIndex] = {\r\n value: documentType.documentTypeId,\r\n label: documentType.name,\r\n isChild: true,\r\n checked: this.props.paramsOrDefaults.dt.some(dt => dt === documentType.documentTypeId),\r\n isOpen: false,\r\n });\r\n });\r\n });\r\n\r\n for (const filter of documentClassificationFilter) {\r\n filter.checked = filter.children!.filter(c => !c.noCheckBox).every(f => f.checked) ? true : false;\r\n filter.indeterminate = !filter.checked && filter.children!.filter(c => !c.noCheckBox).some(f => f.checked) ? \" \" : undefined;\r\n filter.isOpen = filter.checked || filter.indeterminate;\r\n }\r\n\r\n return documentClassificationFilter;\r\n }\r\n\r\n private getTagSectionListFilters(tags: ITagSectionList): IKeywordSection[] {\r\n var tagList: IKeywordSection[] = [this.addTagSection(tags.lawRegistry, \"\", \"lawRegistry\")];\r\n return tagList;\r\n }\r\n\r\n private addTagSection(tagSection: ITag[], label: string, id: string): IKeywordSection {\r\n var tagFilterSection: IKeywordSection = { id: id, label: label, keywords: [] };\r\n tagSection.forEach((tag, index) => {\r\n tagFilterSection.keywords[index] = {\r\n key: tag.key,\r\n label: tag.label,\r\n id: tag.id,\r\n checked: this.props.paramsOrDefaults.lr.some(e => e === tag.id),\r\n };\r\n });\r\n return tagFilterSection;\r\n }\r\n\r\n private onRessortChipRemove = (selectedNode: ICollapsableTreeNode) => () => {\r\n this.onRessortFilterChange(selectedNode);\r\n };\r\n\r\n private onDocumentTypeChipRemove = (selectedNode: ICollapsableTreeNode) => () => {\r\n this.onDocumentClassificationFilterChange(selectedNode);\r\n };\r\n\r\n private onRessortFilterChange = (selectedNode: ICollapsableTreeNode) => {\r\n toggleNodeCheckedAndUpdate(selectedNode, this.state.ressortList);\r\n\r\n this.setState({ ressortList: this.state.ressortList, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private onFOBChipRemove = (selectedNode: ICollapsableTreeNode) => () => {\r\n this.onFOBFilterChange(selectedNode);\r\n };\r\n\r\n private onFOBFilterChange = (selectedNode: ICollapsableTreeNode) => {\r\n toggleNodeCheckedAndUpdate(selectedNode, this.state.FOBList);\r\n this.props.setMyndighedIsOpen(this.state.FOBList.some(fob => fob.checked) || this.props.myndighedFilterIsOpen);\r\n this.setState({ FOBList: this.state.FOBList, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private onDocumentClassificationFilterChange = (selectedNode: ICollapsableTreeNode) => {\r\n toggleNodeCheckedAndUpdate(selectedNode, this.state.documentClassificationsList);\r\n\r\n this.setState({ documentClassificationsList: this.state.documentClassificationsList, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private onTagChipRemove = (sectionId: string, tagId: string) => () => {\r\n this.onKeywordChecked(sectionId, tagId);\r\n };\r\n\r\n private onKeywordChecked = (sectionId: string, keywordId: string) => {\r\n const updatedTagSectionList = updateKeywordOnChecked(sectionId, keywordId, [...this.state.tagSectionList]);\r\n\r\n this.props.setLawRegistryIsOpen(updatedTagSectionList.some(section => section.keywords.some(key => key.checked)) || this.props.lawRegistryFilterIsOpen);\r\n this.setState({ tagSectionList: updatedTagSectionList, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private historyToggleHandler = (e: React.SyntheticEvent) => {\r\n e.preventDefault();\r\n this.setState({ historicDocumentsIncluded: !this.state.historicDocumentsIncluded, activePage: 0 }, this.setParamsAndSearch);\r\n };\r\n\r\n private ClearSearch = () => {\r\n const clearedRessortFilters = this.clearAllRessortFilters();\r\n const clearedDocumentClassificationFilters = this.clearAllDocumentClassificationFilters();\r\n const clearedFOBList = this.clearAllFOBFilters();\r\n const clearedLawRegistryFilters = this.clearAllLawRegistryFilters();\r\n\r\n this.setState(\r\n {\r\n yearStart: yearLow,\r\n yearEnd: yearHigh,\r\n yearStartTmp: yearLow,\r\n yearEndTmp: yearHigh,\r\n month: \"\",\r\n day: \"\",\r\n ppm: \"\",\r\n ressortList: clearedRessortFilters,\r\n documentClassificationsList: clearedDocumentClassificationFilters,\r\n documentNumberRange: \"\",\r\n searchTerms: defaultParams.t,\r\n FOBList: clearedFOBList,\r\n tagSectionList: clearedLawRegistryFilters,\r\n selectedOrderByValue: OrderByValues[0],\r\n ascendingOrder: defaultParams.d,\r\n activePage: 0,\r\n historicDocumentsIncluded: defaultParams.h,\r\n celexNumber: \"\",\r\n titles: defaultParams.ttl,\r\n popularTitles: defaultParams.pttl,\r\n stikord: defaultParams.so,\r\n fromDate: parsedDateOrDefault(defaultParams.dl),\r\n },\r\n this.setParamsAndSearch\r\n );\r\n };\r\n\r\n private clearAllRessortFilters = () => {\r\n this.state.ressortList.forEach(filter => (filter.checked = false));\r\n return this.state.ressortList;\r\n };\r\n\r\n private clearAllDocumentClassificationFilters = () => {\r\n this.state.documentClassificationsList.forEach(section => {\r\n section.checked = false;\r\n section.indeterminate = undefined;\r\n section.children!.forEach(filter => {\r\n if (!filter.noCheckBox) {\r\n filter.checked = false;\r\n }\r\n });\r\n });\r\n return this.state.documentClassificationsList;\r\n };\r\n\r\n private clearAllFOBFilters = () => {\r\n this.state.FOBList.forEach(filter => (filter.checked = false));\r\n return this.state.FOBList;\r\n };\r\n\r\n private clearAllLawRegistryFilters = () => {\r\n this.state.tagSectionList.forEach(section => section.keywords.forEach(tag => (tag.checked = false)));\r\n return [...this.state.tagSectionList];\r\n };\r\n\r\n private onFOBArrowClick = (selectedNode: ICollapsableTreeNode) => {\r\n updateOnArrowClick(selectedNode, this.state.FOBList);\r\n this.setState({ ressortList: this.state.FOBList });\r\n };\r\n\r\n private onArrowClick = (selectedNode: ICollapsableTreeNode) => {\r\n updateOnArrowClick(selectedNode, this.state.ressortList);\r\n this.setState({ ressortList: this.state.ressortList });\r\n };\r\n\r\n private onDocumentClassificationFilterArrowClick = (selectedNode: ICollapsableTreeNode) => {\r\n updateOnArrowClick(selectedNode, this.state.documentClassificationsList);\r\n this.setState({ documentClassificationsList: this.state.documentClassificationsList });\r\n };\r\n\r\n private doSearchDocumentCount(paramsString: string) {\r\n apiGET<{ [k: string]: number | undefined }>(\"api/documentsearch/countdocumenttype\", {\r\n params: qs.parse(paramsString),\r\n paramsSerializer: (p: object) => qs.stringify(p),\r\n }).then(response => {\r\n for (const child of this.state.documentClassificationsList.flatMap(p => p.children || [])) {\r\n child.count = response[child.value] || 0;\r\n }\r\n this.setState({\r\n documentClassificationsList: this.state.documentClassificationsList,\r\n });\r\n });\r\n }\r\n\r\n private doSearch(paramsString: string) {\r\n apiGET<IDocumentSearchResult>(\"api/documentsearch\", {\r\n params: qs.parse(paramsString),\r\n paramsSerializer: (p: object) => qs.stringify(p),\r\n }).then(response => {\r\n this.setState({ searchResult: response });\r\n });\r\n\r\n this.doSearchDocumentCount(paramsString);\r\n }\r\n}\r\n\r\nexport default connect(\r\n ({ documentSearch, ressorter, documentClassifications, tags, filter }: AppState, ownProps: IDocumentsContainerProps): IDocumentsContainerProps => {\r\n return {\r\n ...ownProps,\r\n paramsString: documentSearch.params,\r\n paramsOrDefaults: documentSearch.parseWithDefaults(defaultParams),\r\n ressorter: ressorter.ministryRessorter,\r\n fobRessorter: ressorter.fobRessorter,\r\n documentClassifications: documentClassifications.documentClassifications,\r\n tags: tags,\r\n lawRegistryFilterIsOpen: filter.lawRegistryFilterIsOpen,\r\n myndighedFilterIsOpen: filter.myndighedFilterIsOpen,\r\n documentClassificationFilterIsOpen: filter.documentClassificationFilterIsOpen,\r\n historialFilterIsOpen: filter.historialFilterIsOpen,\r\n yearFilterIsOpen: filter.yearFilterIsOpen,\r\n ressortFilterIsOpen: filter.ressortFilterIsOpen,\r\n isGridViewActive: documentSearch.isGridViewActive,\r\n };\r\n },\r\n dispatch =>\r\n bindActionCreators(\r\n {\r\n ...DocumentSearchActions,\r\n ...RessortActions,\r\n ...DocumentClassificationActions,\r\n ...TagActions,\r\n ...FilterReducerActions,\r\n },\r\n dispatch\r\n )\r\n)(DocumentsContainer);\r\n","export enum MatchField {\r\n Title = 1,\r\n PopularTitle = 2,\r\n Stikord = 3,\r\n}\r\n"],"names":["CsvSizeWarningDialog","props","dismissed","confirmed","isModalOpen","isOpen","toggle","color","onClick","GridViewDocument","document","React","show","setShow","showReprintNotes","setShowReprintNotes","toggleReprintNotes","ReprintNotes","ressort","ressortName","toggleModal","docId","id","title","shortName","Container","className","Row","Col","md","fullScreen","property","EliProperty","datatype","DataType","offentliggoerelsesDato","showDocumentStateBadge","geografiskDaekningId","retsinfoKlassifikationId","Badge","isHistoryFlag","resource","EliResource","hasReprintNotes","Button","Link","to","retsinfoLink","nlToBr","toString","rev","rel","typeof","EliClass","about","popularTitle","undefined","fobRessortNames","length","join","e","preventDefault","onKeyUp","key","tabIndex","Icon","icon","IconType","iconSize","RelatedDocs","geografiskDakning","retsinfoKlassifikation","GeografiskDaekning","includes","CsvExportLink","state","isFetchingData","isWarningDialogOpen","this","Spinner","as","animation","size","role","setState","exportSearch","paramsString","beginExport","warnWhenExportingResult","apiGET","params","qs","paramsSerializer","p","responseType","result","FileSaver","publicationMediaMap","keys","numberAndYearRegExp","allNumbersRegExp","validYearsRegExp","removeNewline","str","replaceWith","replace","getNumberText","number","getYearText","year","getNumberAndYearText","arr","buildText","NavigationGroup","defaultLiveSearchState","liveSearchTerm","hits","staticLiveSearchItemsCount","yearLow","yearHigh","Date","getFullYear","defaultParams","page","ps","PageSize","yh","yl","o","OrderByValues","d","r","EmptyStringArray","dt","f","t","dnr","h","mth","day","ppm","lr","ce","pttl","ttl","so","dl","isNaNOrEmptyString","numOrEmptyString","Number","isNaN","clampYear","Math","min","max","paramsToDspState","dsp","activePage","activePageSize","selectedOrderByValue","obv","ascendingOrder","yearStart","yearEnd","searchTerms","documentNumberRange","historicDocumentsIncluded","month","celexNumber","titles","popularTitles","stikord","fromDate","parsedDateOrDefault","dateString","defaultValue","date","parse","DateFormats","getTime","DocumentsContainer","searchResult","pageCount","documents","resultCount","paramsOrDefaults","ressortList","FOBList","builtFilters","documentClassificationsList","currentSearchTerm","liveSearchState","yearStartTmp","yearEndTmp","tagSectionList","label","keywords","onOrderByChange","value","isDefaultDirectionAscending","setParamsAndSearch","onOrderChange","onGridViewToggle","toggleGridViewActive","showFailedSearch","idxOfSearchTermWithSuspiciousChars","findIndex","st","match","removeSearchTerm","renderChips","map","searchTerm","index","SearchChip","removeTitle","removePopularTitle","removeStikord","removeDocumentNumberRange","removeMonthAndDay","months","removePublicationMedia","removeCelexNumber","documentClassificationParent","indexParent","children","some","child","checked","onDocumentTypeChipRemove","docTypeChild","indexChild","removeHistoricChip","onDateChipRemove","format","isYearFilterChipVisible","onYearChipRemove","ressortParent","onRessortChipRemove","FOBParent","onFOBChipRemove","section","tag","onTagChipRemove","splice","onSearchButtonClicked","skipNumberYearMatch","trimmedSearchTerm","trim","numberYearMatch","numberMatches","onYearAndNumberMatchClicked","validYearsMatch","num","find","x","newSearchTerms","push","onLiveSearchTermChange","rawSearchTerm","forceSeach","newLiveSearchState","counter","text","aria","test","debounce","getDynamicLiveSearchItems","getTop3SearchResultItems","addLiveSearchTerm","hit","stateKey","field","MatchField","onPageChange","newPage","scrollToTop","onPageSizeChange","newPageSize","onYearChange","onYearStartChange","startClamped","end","onYearEndChange","endClamped","start","onYearStartBlur","onYearEndBlur","selectedNode","onRessortFilterChange","onDocumentClassificationFilterChange","toggleNodeCheckedAndUpdate","onFOBFilterChange","setMyndighedIsOpen","fob","myndighedFilterIsOpen","sectionId","tagId","onKeywordChecked","keywordId","updatedTagSectionList","updateKeywordOnChecked","setLawRegistryIsOpen","lawRegistryFilterIsOpen","historyToggleHandler","ClearSearch","clearedRessortFilters","clearAllRessortFilters","clearedDocumentClassificationFilters","clearAllDocumentClassificationFilters","clearedFOBList","clearAllFOBFilters","clearedLawRegistryFilters","clearAllLawRegistryFilters","forEach","filter","indeterminate","noCheckBox","onFOBArrowClick","updateOnArrowClick","onArrowClick","onDocumentClassificationFilterArrowClick","initFiltersAndSearch","getRessorter","getFobRessorter","getDocumentClassification","getTags","prev","isGridViewActive","location","search","setParams","history","ressorter","fobRessorter","tags","lawRegistry","documentClassifications","stateFromParams","getRessortFilters","getFOBRessortFilters","getTagSectionListFilters","getDocumentClassificationFilter","doSearch","Card","LiveSearch","onChange","data","searchPlaceHolder","buttonStyle","autofocus","lg","CollapsibleBox","documentClassificationFilterIsOpen","onOpenClose","innerState","setDocumentClassificationIsOpen","heading","CollapsableTree","listOfNodes","activeTreeStructure","historialFilterIsOpen","setHistorialIsOpen","ToggleButton","on","toggleHandler","yearFilterIsOpen","setYearIsOpen","DoubleSlider","defaultValueLow","defaultValueHigh","onChanged","Input","type","parseFloat","currentTarget","onBlur","ressortFilterIsOpen","setRessortIsOpen","Keyword","keywordSections","handleKeywordChecked","SearchResultView","searchResultItems","renderGridItem","searchResultItem","renderItem","Document","renderFailedSearchErrorMessage","isError","searchOrderBy","orderByValues","onOrderByChanged","isSearchDirectionAscending","onSearchDirectionChange","onGridViewToggled","lst","buildParams","paramsQuery","then","response","slice","doc","template","LiveResultTemplateEnum","subHeading","headingPrefix","getLiveSearchSuggestionItems","q","catch","error","console","log","scrollHere","getElementById","window","getComputedStyle","display","scrollTo","scrollIntoView","pathname","flatMap","docType","ressorts","name","isChild","fobRessort","documentClassificationFilter","documentClassification","parentIndex","ids","displayName","documentTypes","documentType","childIndex","documentTypeId","c","every","addTagSection","tagSection","tagFilterSection","count","doSearchDocumentCount","connect","ownProps","documentSearch","parseWithDefaults","ministryRessorter","dispatch","bindActionCreators","DocumentSearchActions","RessortActions","DocumentClassificationActions","TagActions","FilterReducerActions"],"sourceRoot":""}