{"version":3,"file":"2002.c190afab0e6dd435fc62.bundle.js","mappings":"kLAEO,MAAMA,EAA+B,CACxCC,MAAO,QAEEC,EAAuC,CAChDD,MAAO,aAAmB,MAEjBE,EAAiC,WAAiBD,E,sLCNxD,MAAME,EAAyB,CAClCC,YAAa,MAEJC,EAA2B,WAAiB,CACrDD,YAAa,OCMXE,GAAI,OAAgB,iBACbC,GAAa,SAASC,IAC/B,MAAMC,GAAO,UACP,gCAAEC,IAAoC,UACtC,YAAEN,GAAgBI,GAClB,KAAEG,IAAS,SACjB,IAAKA,EACD,OAAOD,GAAkC,SAAKE,EAAoB,CAAC,GAAK,KAC5E,MAAMC,GAAS,QAAiBF,GAChC,OAAI,QAAaE,GACN,MACH,SAAK,IAAQ,CAAEC,UAAWR,EAAES,QAASC,aAAc,OAAiBC,QAASb,EAAYJ,MAAOkB,SAAS,QAAqCL,EAAQJ,IAAS,IAE3KF,EAAWY,YAAc,aAClB,MAAMP,EAAqB,KAAM,SAAK,IAAgB,CAAEE,UAAWR,EAAES,MAAM,CAAEK,UAAU,MAC9FR,EAAmBO,YAAc,sBAIE,OAAqBZ,EAAYJ,EAAwBE,G,yDC7BrF,MAIMgB,EAAiE,CAC1EC,cAAe,IACfC,mBAAoB,KAEXC,EAA2D,WAAiBH,GCR5EI,EAAmD,CAC5DrB,YDDkE,CAClEkB,cAAe,2EACfC,mBAAoB,uECCXG,EAAgD,WAAiB,CAC1EtB,YAAaoB,ICEJG,GAAuC,SAASnB,IACzD,MAAM,OAAEoB,EAAM,iBAAEC,IAAqB,SACrC,IAAKA,EACD,OAAO,KACX,MAAMC,GAAgB,OAA+BF,GACrD,OAAQ,SAAK,IAAwCG,OAAOC,OAAO,CAAC,EAAGxB,EAAO,CAAEyB,IAAI,OAA8B,2CAA4C,UAAwBL,GAASE,cAAeA,IAAkB,IAEpOH,EAAqCR,YAAc,wCAMU,OAAqBQ,EAAsCF,EAAkDC,G,cCb1K,MAAM,GAAI,OAAgB,qCACbQ,GAAgC,SAAS,KAClD,MAAMzB,GAAO,UACP,gCAAEC,IAAoC,UACtC,KAAEC,IAAS,SACjB,IAAKA,EACD,OAAOD,GAAkC,SAAKyB,EAAuC,CAAC,GAAK,KAE/F,MAAMC,EAAezB,EAAK0B,gBAAiB,OAAoB1B,EAAK0B,qBAAkBC,EAChFC,EAAqB9B,EAAK+B,aAAaJ,EAAaK,gBAM1D,OAAO,SAAK,OAAQV,OAAOC,OAAO,CAAElB,UAAW,EAAEC,SAAW,CAAE2B,SAAUH,IAAsB,IAElGL,EAA8Bf,YAAc,gCACrC,MAAMgB,EAAwC,KAAM,SAAK,MAAO,CAAErB,UAAW,EAAEC,MAAM,CAAEK,UAAU,MACxGe,EAAsChB,YAAc,yCAIE,OAAqBe,EAA+B,CAAC,GAAG,KAAM,I,wBC7B7G,MAAMS,EAA4B,CACrCvC,YAAa,MAEJwC,EAA8B,WAAiB,CACxDxC,YAAa,OCMX,GAAI,OAAgB,oBACbyC,GAAgB,SAASrC,IAClC,MAAMC,GAAO,UACP,gCAAEC,IAAoC,UACtC,YAAEN,GAAgBI,GAClB,KAAEG,IAAS,SACjB,IAAKA,EACD,OAAOD,GAAkC,SAAKoC,EAAuB,CAAC,GAAK,KAC/E,MAAMC,GAAY,QAAoBpC,GACtC,OAAI,QAAaoC,GACN,MACH,SAAK,IAAQ,CAAEjC,UAAW,EAAEC,QAASC,aAAc,OAAiBC,QAASb,EAAYJ,MAAOkB,SAAS,QAAqC6B,EAAWtC,IAAS,IAE9KoC,EAAc1B,YAAc,gBACrB,MAAM2B,EAAwB,KAAM,SAAK,IAAgB,CAAEhC,UAAW,EAAEC,MAAM,CAAEK,UAAU,MACjG0B,EAAsB3B,YAAc,yBAIE,OAAqB0B,EAAeF,EAA2BC,G,eCvBrG,MAAM,GAAI,OAAgB,iBACbI,GAAa,SAAS,KAC/B,MAAMvC,GAAO,UACP,gCAAEC,IAAoC,UACtC,KAAEC,IAAS,SACjB,IAAKA,EACD,OAAOD,GAAkC,SAAKuC,EAAoB,CAAC,GAAK,KAC5E,MAAMC,GAAS,OAAevC,EAAKwC,UACnC,OAAI,QAAaD,GACN,MACH,SAAK,MAAOnB,OAAOC,OAAO,CAAElB,UAAW,EAAEC,SAAW,CAAE2B,UAAU,SAAK,KAAMX,OAAOC,OAAO,CAAElB,UAAW,EAAEsC,QAAQ,SAAW,CAAEV,SAAUQ,EAAOG,KAAIC,IAAU,SAAK,KAAMvB,OAAOC,OAAO,CAAElB,UAAW,EAAEsC,QAAQ,QAAU,CAAEV,SAAUjC,EAAK+B,aAAac,EAAMC,QAAUD,EAAMrB,WAAc,IAEpSe,EAAW7B,YAAc,aAClB,MAAM8B,EAAqB,KAAM,SAAK,MAAO,CAAEnC,UAAW,EAAEC,MAAM,CAAEK,UAAU,MACrF6B,EAAmB9B,YAAc,sBAIE,OAAqB6B,EAAY,CAAC,GAAG,KAAM,I,eCxBvE,MAAMQ,EAA8B,CACvCpD,YAAa,MAEJqD,EAAgC,WAAiB,CAC1DrD,YAAa,OCIX,GAAI,OAAgB,uBACbsD,GAAkB,SAASlD,IACpC,MAAMC,GAAO,UACP,gCAAEC,IAAoC,UACtC,YAAEN,GAAgBI,GAClB,KAAEG,IAAS,SACjB,OAAKA,GAEG,SAAK,IAAQ,CAAEG,UAAW,EAAEC,QAASC,aAAc,OAAiBC,QAASb,EAAYJ,MAAOkB,QAAST,EAAKkD,SAASvD,EAAYwD,OAAQ,CAAEC,KAAMlD,EAAKmD,gBADrJpD,GAAkC,SAAKqD,EAAyB,CAAC,GAAK,IACiG,IAEtLL,EAAgBvC,YAAc,kBACvB,MAAM4C,EAA0B,KAAM,SAAK,IAAgB,CAAEjD,UAAW,EAAEC,MAAM,CAAEK,UAAU,MACnG2C,EAAwB5C,YAAc,2BAIE,OAAqBuC,EAAiBF,EAA6BC,G,8DChB3G,MAAM,IAAI,OAAgB,kBACbO,GAAsB,EAAGC,gBAAiB,SAAK,MAAOlC,OAAOC,OAAO,CAAElB,UAAW,GAAEC,SAAW,CAAE2B,UAAU,UAAM,MAAOX,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,UAAW,CAAEc,cAAeD,EAAUE,QAAW,CAAEzB,SAAU,CAACuB,EAAUE,OAAS,SAAK,MAAOpC,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,YAAa,CAAEgB,UAAWH,EAAUG,UAAWhD,UAAU,KAAW,CAAEsB,UAAU,SAAK,KAAuB,CAAE0B,UAAWH,EAAUG,gBAAmB,UAAM,MAAOrC,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,YAAc,CAAEV,SAAU,EAAC,SAAK,KAAqB,CAAC,IAAI,SAAKqB,EAAyB,CAAC,IAAI,SAAKd,EAAoB,CAAC,IAAI,SAAKd,EAAuC,CAAC,QAAS,UAAM,MAAOJ,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,cAAgB,CAAEV,SAAU,EAAC,SAAKI,EAAuB,CAAC,IAAI,SAAKlC,EAAoB,CAAC,IAAI,SAAK,KAAsB,CAAC,cAC90BoD,GAAoB7C,YAAc,sB,mDCP3B,MAAMkD,GAA4B,WAAiB,CACtDjE,YAAa,MACbkE,OAAQ,MACRC,OAAQ,KACRC,WAAY,QAEHC,GAA0B,CACnCrE,YAAa,MACbkE,OAAQ,MACRC,OAAQ,CAAC,EACTC,WAAY,OCKV,IAAI,OAAgB,kBAIbE,IAAc,SAASlE,IAChC,MAAM,gCAAEE,IAAoC,UACtC,WAAE8D,EAAU,OAAEF,EAAM,YAAElE,EAAW,OAAEmE,GAAW/D,GAC9C,KAAEG,IAAS,SACjB,IAAKA,EACD,OAAOD,GAAkC,SAAKsD,GAAqB,CAAEC,UAAWK,EAAOL,YAAe,KAE1G,MAAMU,EAAuB,CAAEL,OAAQ,CAAEM,UAAU,GAASL,SAAQnE,eACpE,OAAQ,SAAK,MAAO2B,OAAOC,OAAO,CAAElB,UAAW,GAAEC,SAAW,CAAE2B,UAAU,UAAM,MAAOX,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,UAAW,CAAEc,cAAeI,EAAOL,UAAUE,QAAW,CAAEzB,SAAU,CAAC4B,EAAOL,UAAUE,MAAQ,UAAM,MAAOpC,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,cAAgB,CAAEV,SAAU,EAAC,SAAK,KAAe,CAAE4B,OAAQA,EAAOL,UAAWO,WAAYA,EAAYD,OAAQA,KAAW,SAAK,KAAqBxC,OAAOC,OAAO,CAAC,EAAG2C,SAAgC,SAAK,KAAqB5C,OAAOC,OAAO,CAAC,EAAG2C,KAAyB,SAAKhD,EAAsC,CAAEvB,YAAa,CACzjBkB,cAAelB,EAAYyE,uCAC3BtD,mBAAoBnB,EAAY0E,+CAC9BR,EAAOS,kBAAkBZ,OAAQ,SAAK,IAAsB,CAAC,IAAI,UAAM,MAAOpC,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,YAAc,CAAEV,SAAU,EAAC,SAAK,KAAa,CAAE4B,OAAQ,CAAEU,kBAAmB,QAAmB5E,YAAa,CAAEJ,MAAOI,EAAY6E,iBAAmB,SAAKvB,EAAiB,CAAEtD,YAAa,CAAEJ,MAAOI,EAAY8E,iBAAkBtB,OAAQxD,EAAY+E,sBAAwB,SAAKnC,EAAY,CAAC,IAAI,SAAKd,EAA+B,CAAC,QAAS,UAAM,MAAOH,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,cAAgB,CAAEV,SAAU,EAAC,SAAKG,EAAe,CAAEzC,YAAa,CAAEJ,MAAOI,EAAYgF,mBAAqB,SAAK7E,EAAY,CAAEH,YAAa,CAAEJ,MAAOI,EAAYiF,gBAAkB,SAAK,KAAc,CAAEjF,YAAa,CAAEJ,MAAOI,EAAYkF,eAAiBhB,OAAQ,CAAEiB,OAAQjB,EAAOkB,4BAAkC,IAEn0Bd,GAAYvD,YAAc,eAIU,OAAqBuD,GAAaD,GAAyBJ,I,4GCvCxF,MCMD,IAAI,OAAgB,iBACboB,IAAa,SAAS,KAC/B,MAAQ9E,KAAM+E,IAAoB,WAC5B,gCAAEhF,IAAoC,UACtC,iBAAEmB,IAAqB,SAC7B,IAAKA,EACD,OAAOnB,GAAkC,SAAKiF,GAAoB,CAAC,GAAK,KAC5E,MAAMC,EDbwB,EAAC/D,EAAkBzB,KACjD,MAAM,WAAEyF,EAAU,OAAEjE,EAAM,OAAEkE,GAAWjE,EACvC,OAAIgE,EAAWE,SAAS,iBACb3F,EAAY4F,iBACnB,QAAkCpE,EAAQkE,GACnC1F,EAAY6F,gBACnBJ,EAAWE,SAAS,qBACb3F,EAAY8F,oBACnBL,EAAWE,SAAS,iBACb3F,EAAY+F,qBADvB,CAEgB,ECGDC,CAAmBvE,EAAkB6D,GACpD,OAAKE,GAEE,SAAK,OAAQ7D,OAAOC,OAAO,CAAElB,UAAW,GAAEC,SAAW,CAAE2B,SAAUkD,KAD7D,IACuE,IAEtFH,GAAWtE,YAAc,aAClB,MAAMwE,GAAqB,KAAM,SAAK,OAAQ,CAAE7E,UAAW,GAAEC,MAAM,CAAEK,UAAU,MACtFuE,GAAmBxE,YAAc,sBAIE,OAAqBsE,GAAY,CAAC,GAAG,KAAM,I,4BCb9E,MAAM,IAAI,OAAgB,yBAIbY,IAAoB,SAAS7F,IACtC,MAAM,KAAEG,EAAI,YAAEP,EAAW,OAAEkG,EAAM,OAAEhC,EAAM,OAAEC,EAAM,WAAEC,EAAU,cAAE+B,GAAkB/F,EACjF,OAAQ,SAAK,KAAYuB,OAAOC,OAAO,CAAEwE,KAAK,QAAsB7F,EAAM2D,EAAOmC,OAAOrC,UAAWI,EAAWkC,iBAAkBC,gBAAiB,kBAAmC7F,UAAW,GAAEC,SAAW,CAAE2B,UAAU,UAAM,MAAOX,OAAOC,OAAO,CAAElB,UAAW,GAAEsC,QAAQ,UAAW,CAAEc,cAAeI,EAAOL,UAAUE,QAAW,CAAEzB,SAAU,CAAC4B,EAAOsC,kBAAkBzC,OAAS,SAAK,KAAmB,CAAE/D,YAAaA,EAAakG,OAAQA,EAAQ/B,OAAQA,EAAQgC,cAAeA,EAAejC,OAAQA,EAAOsC,qBAAuB,SAAKnB,GAAY,CAAC,IAAI,SAAK,KAAW,CAAEnB,OAAQ,CAAEtD,aAAc,QAAmBwD,WAAYA,IAAeF,EAAOuC,aAAa1C,OAAS,SAAK,KAAQ,CAAErD,UAAW,GAAEsC,QAAQ,iBAAkB0D,MAAO,cAAqB9G,MAAOI,EAAY2G,kBAAmBC,KAAM,YAAkBC,QAAS1C,EAAO2C,8BAAmC,IAE31Bb,GAAkBlF,YAAc,oB,gBChBhC,MAAMgG,IAAU,OAAgB,yBACnBC,GAAsB5G,IAAU,UAAM,MAAOuB,OAAOC,OAAO,CAAElB,UAAW,kBAAoB,CAAE4B,SAAU,EAAC,SAAK,MAAOX,OAAOC,OAAO,CAAElB,UAAWqG,GAAQpG,SAAW,CAAE2B,UAAU,SAAK,MAAOX,OAAOC,OAAO,CAAElB,UAAW,0BAA4B,CAAE4B,UAAU,UAAM,MAAOX,OAAOC,OAAO,CAAElB,UAAWqG,GAAQ/D,QAAQ,UAAW,CAAEc,cAAe1D,EAAMyD,UAAUE,QAAW,CAAEzB,SAAU,EAAC,SAAKiD,GAAoB,CAAC,IAAI,SAAK,KAAmB,CAAC,IAAI,SAAK,OAAQ,CAAE7E,UAAWqG,GAAQ/D,QAAQ,gBAAiB,CAAEhC,UAAU,iBAAyB,SAAK4C,GAAqBjC,OAAOC,OAAO,CAAC,EAAGxB,QAC9kB4G,GAAoBjG,YAAc,sB,gBCGlC,MAAM,IAAI,OAAgB,kBACbkG,IAAc,SAAS7G,IAChC,MAAM,gCAAEE,IAAoC,UACtC,OAAE4D,GAAW9D,GACb,KAAEG,IAAS,SACjB,OAAKA,GAEG,UAAM,MAAOoB,OAAOC,OAAO,CAAElB,UAAW,GAAEC,SAAW,CAAE2B,SAAU,EAAC,SAAK2D,GAAmBtE,OAAOC,OAAO,CAAC,EAAGxB,EAAO,CAAEG,KAAMA,MAAU,SAAK+D,GAAa3C,OAAOC,OAAO,CAAC,EAAGxB,QADtKE,GAAkC,SAAK0G,GAAqB,CAAEnD,UAAWK,EAAOL,YAAe,IACoF,IAElMoD,GAAYlG,YAAc,cAInB,MAAMmG,IAAuB,OAAqBD,GAAa,KAAyB,K,0FCpBxF,MAAME,EAA+BxF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAA+B,CAAE0E,gBAAiB,CAAEc,MAAO,MAAQC,iBAAkB,CAAEC,OAAQ,MAC9JC,EAAiC,WAAiB5F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAuC,CAAE0E,gBAAiB,IAAkCe,iBAAkB,O,qCCGtM,MAAMG,EAA2B7F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAA2B,CAAEyE,OAAQ,CAAErC,UAAW,cAAoCyC,aAAc,CAAE1C,MAAM,GAAQyC,kBAAmB7E,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAA2B,CAAEmC,MAAM,MACrQ0D,EAA6B,WAAiB,CACvDzD,UAAW,UAAgBrC,OAAO+F,OAAO,QAEhCC,EAAmChG,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAmC,CAAEyE,OAAQoB,EAA4BhB,aAAc,WAAiB,CAAE1C,KAAM,gBAAwByC,kBAAmB,WAAiB7E,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAmC,CAAEmC,KAAM,mBAC1T6D,EAA6B,WAAiBD,G,qCCRpD,MAAME,EAAgClG,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAgC,MAAsC,CAAE+E,kBAAmB,iBAAkBmB,4BAAwB5F,IACnN6F,EAAwCpG,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAwC,MAA8C,CAAE+E,kBAAmB,MACjMqB,EAAkC,WAAiBD,G,0BCHzD,MAAME,EAA6B,WAAiBtG,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,KAAyC,KAA2C,CAAEkF,sBAAuB,aAAmB,aCG5NoB,EAA4B,WAAiB,CACtDlI,YAAagI,EACb9B,OAAQ,KACRhC,OAAQ0D,EACRzD,OAAQ8D,EACR7D,WAAYmD,IAEHY,EAA0B,CACnCnI,YAAa6H,EACb3B,OAAQ,KACRhC,OAAQsD,EACRrD,OAAQ,CAAC,EACTC,WAAY+C,E,sEChBT,MAAMiB,EAAkC,CAC3CxI,MAAO,aAEEyI,EAA0C,CACnDzI,MAAO,aAAmB,MAEjB0I,EAAoC,WAAiBD,E,uECN3D,MAAME,EAAoC,CAC7C3I,MAAO,eACP4D,OAAQ,yBAECgF,EAA4C,CACrD5I,MAAO,aAAmB,KAC1B4D,OAAQ,KAECiF,EAAsC,WAAiBD,E,+ECR7D,MAAME,EAA+B,CACxCC,mBAAoB,CAAEvB,MAAO,MAEpBwB,EAAuC,CAChDD,mBAAoB,KAEXE,EAAiC,WAAiBD,E,2FCFxD,MAAME,EAA2B,CACpCjF,UAAWlC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAA6B,CAAEmC,MAAM,IAChFY,kBAAmB,CACfZ,MAAM,GAEVqB,eAAgB,aAGP2D,EAAmC,CAC5ClF,UAF6C,WAAiBlC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,MAAqC,CAAEmC,KAAM,iBAG3IY,kBAAmB,WAAiB,CAAEZ,KAAM,gBAC5CqB,eAAgB,UAAgBzD,OAAO+F,OAAO,OAErCsB,EAA6B,WAAiBD,E,qICZpD,MAAME,EAAgC,CACzCjE,eAAgB,WAChBC,YAAa,WACbC,cAAe,WACfL,aAAc,WACdC,iBAAkB,WAClBC,kBAAmB,YACnBN,uCAAwC,2EACxCC,4CAA6C,sEAEpCwE,EAAwC,CACjDlE,eAAgB,aAAmB,KACnCC,YAAa,aAAmB,KAChCC,cAAe,aAAmB,KAClCL,aAAc,aAAmB,KACjCC,iBAAkB,aAAmB,KACrCC,kBAAmB,IACnBN,uCAAwC,IACxCC,4CAA6C,KAEpCyE,EAAkC,WAAiBD,E,mHCrBzD,MAAME,EAAeC,MAAO7H,EAAQ8H,GAAmB,KAC1D,MAAMC,GAAQ,OAAwB,mBAAoC/H,SACpE,OAAgB,CAClBgI,IAAK,IAAM,kDAA0DhI,GACrE+H,QACAE,eAAe,OAAiB,SAChCC,YACAJ,oBACF,EAEAI,EAAY,CAACC,EAAUF,KACzB,MAAM,KAAElJ,EAAI,YAAEqJ,GAAgBD,EAE9B,OADA,QAAsBC,EAAaH,GAC5BlJ,CAAI,E,eCZR,MAAMsJ,EAAuBR,MAAO7H,IACvC,MAAMsI,GAAW,OAAiB,CAAEtI,WAC9B+H,GAAQ,OAAwB,mCAAoDO,SACpF,OAAgB,CAClBN,IAAK,IAAM,uDAA+DhI,GAC1E+H,QACAE,eAAe,OAAiB,SAChCC,UAAS,GACX,EAEA,EAAY,CAACC,EAAUF,KACzB,MAAM,iBAAEhI,EAAgB,YAAEmI,GAAgBD,EAE1C,OADA,QAAkCC,EAAaH,GACxChI,CAAgB,E,0ICdhBsI,E,kCACX,SAAWA,GACPA,EAAyC,iBAAI,kBAChD,CAFD,CAEGA,IAA2BA,EAAyB,CAAC,IACxD,MAAM7J,GAAI,OAAgB,0BACb8J,GAAqB,SAAS5J,IACvC,MAAM,YAAE6J,EAAW,YAAEjK,EAAW,OAAEkG,EAAM,mBAAEgE,GAAuB9J,EACjE,OAAQ,SAAK,IAASuB,OAAOC,OAAO,CAAC,EAAGuI,EAA2BF,EAAa/D,EAAQlG,GAAc,CAAEU,UAAWR,EAAES,SAAW,CAAE2B,UAAU,SAAK,IAAQ,CAAE1C,MAAOI,EAAYoK,iCAAkCC,SAAUnE,EAAOoE,oCAAqCC,aAAc,WAA0B1D,QAASqD,MAA0B,IAErVF,EAAmBjJ,YAAc,qBACjC,MAAMoJ,EAA6B,CAACF,EAAa/D,EAAQlG,KACrD,GAAQiK,IACCF,EAAuBS,iBACxB,MAAO,CACHH,SAAUnE,EAAOuE,yBACjBC,MAAO1K,EAAY2K,sBACnBC,YAAa5K,EAAY6K,wBAIrC,E,gDCxBG,MAIMC,EAAmC,CAC5CL,yBAA0B,IAC1BH,oCAAqC,KAE5BS,EAA6B,WAAiBD,GCLpD,MAKME,EAAmC,CAC5CC,e,SAAgB,GAEPC,EAA6B,WAAiBF,GCN9CG,EAAwC,CACjDR,sBAAuB,IACvBE,wBAAyB,IACzBT,iCAAkC,KAEzBgB,EAAkC,WAAiBD,GCNnDE,EAA0B,CACnC7J,YAAQU,EACRlC,YDNyC,CACzC2K,sBAAuB,+BACvBE,wBAAyB,sDACzBT,iCAAkC,aCIlClE,OHPoC,CACpCuE,yBAA0B,wBAC1BH,oCAAqC,mBGMrCpG,OFLoC,CACpC+G,eAAgB,CACZK,QAAQ,IEIZhJ,cAAUJ,GAEDqJ,EAA4B,WAAiB,CACtD/J,OAAQ,IACRxB,YAAaoL,EACblF,OAAQ6E,EACR7G,OAAQgH,EACR5I,SAAU,MCNR,GAAI,OAAgB,kBACpBkJ,GAAc,SAASpL,IACzB,MAAM,OAAEoB,EAAM,YAAExB,EAAW,OAAEkG,EAAM,OAAEhC,GAAW9D,EAC1CqL,GAAa,IAAAC,cAAY,IAAMC,QAAQC,IAAI,CAACxC,EAAa5H,GAASqI,EAAqBrI,MAAW,CAACA,KACnG,aAAEqK,EAAY,OAAEC,IAAW,OAAcL,GACzClL,GAAO,OAAYiB,GACnBC,GAAmB,OAAoBD,GAK7C,OAHA,SChByB,EAAC0C,EAAQ3D,KAClC,MAAMF,GAAO,SACP0L,GAAS,IAAAC,UAAQ,KACnB,GAAK9H,EAAOoH,QAAW/K,EAEvB,OAAO,IAAA0L,GAAqB1L,EAAMF,EAAK,GACxC,CAAC6D,EAAQ3D,EAAMF,KAClB,OAAU0L,EAAO,EDWjBG,CAAchI,EAAO+G,eAAgB1K,GACjCsL,IAAiB,aACT,SAAK7B,EAAoB,CAAEhK,YAAaA,EAAakG,OAAQA,EAAQ+D,YAAaF,EAAuBS,iBAAkBN,mBAAoB4B,KAEnJ,SAAK,aAA8BnK,OAAOC,OAAO,CAAEuK,MAAO,CAAE3K,SAAQjB,OAAMkB,qBAAsB,CAAEa,UAAU,SAAK,MAAOX,OAAOC,OAAO,CAAElB,UAAW,EAAEC,MAAM,CAAEyL,QAASP,IAAiB,IAAAQ,WAA2B,CAAE/J,SAAUlC,EAAMkC,cAAiB,IAEjQkJ,EAAYzK,YAAc,cAKnB,MAAMuL,GAAuB,OAAqBd,EAAaH,EAAyBE,E,kFE7B/F,MAAMrL,GAAI,OAAgB,iBACbqM,EAAanM,IACtB,MAAM,UAAEM,EAAS,SAAE4B,GAAalC,EAAOoM,GAAa,QAAOpM,EAAO,CAAC,YAAa,aAChF,OAAQ,UAAM,MAAOuB,OAAOC,OAAO,CAAElB,UAAWR,EAAES,WAAMuB,EAAWxB,IAAc,CAAE4B,SAAU,EAAC,SAAK,IAAOX,OAAOC,OAAO,CAAC,EAAG4K,EAAY,CAAE9L,UAAWR,EAAE8C,QAAQ,aAAc,SAAK,MAAOrB,OAAOC,OAAO,CAAElB,UAAWR,EAAE8C,QAAQ,YAAc,CAAEV,SAAUA,QAAkB,EAE9QiK,EAAWxL,YAAc,Y","sources":["webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/actors/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/actors/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/actors/film-actors.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/advance-booking-period-notification/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/advance-booking-period-notification/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/advance-booking-period-notification/film-advance-booking-period-notification.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/classification-description/film-classification-description.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/directors/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/directors/film-directors.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/genres/film-genres.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/release-date/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/release-date/film-release-date.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/subcomponents/skeleton.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/film-summary.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/status/utils/get-film-status-label.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/status/film-status.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/subcomponents/banner.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/subcomponents/skeleton.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/film-details.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/types/cdn-options.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/types/config.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/types/events.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/details/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/directors/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/release-date/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/types/cdn-options.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/types/config.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/components/film/summary/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-domain/dist/domains/browsing/actions/films/load-film-by-id.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-domain/dist/domains/browsing/actions/films/load-film-availability.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/subcomponents/message.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/types/assets.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/types/config.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/types/display-text.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/types/props.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/film-context.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/context/film/hooks/use-film-schema.js","webpack://vista.digital.curzon/./node_modules/@vista/omnichannel-components-ui/lib/src/lib/subcomponents/hero-banner/hero-banner.js"],"sourcesContent":["import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmActorsDisplayText = {\r\n label: 'Cast'\r\n};\r\nexport const filmActorsDisplayTextValidatorSchema = {\r\n label: Validator.optional(nonEmptyStringValidator)\r\n};\r\nexport const filmActorsDisplayTextValidator = Validator.object(filmActorsDisplayTextValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmActorsDisplayText, filmActorsDisplayTextValidator } from './display-text';\r\nexport const defaultFilmActorsProps = {\r\n displayText: defaultFilmActorsDisplayText\r\n};\r\nexport const filmActorsPropsValidator = Validator.object({\r\n displayText: filmActorsDisplayTextValidator\r\n});\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { isEmptyArray } from '@vista/omnichannel-components-domain';\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useI18n } from '../../../context/occ/hooks/use-i18n';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { Detail, DetailSkeleton } from '../../../subcomponents/detail/detail';\r\nimport { HeadingLevel } from '../../../subcomponents/heading/heading';\r\nimport { getActorsForFilm, getFormattedCastAndCrewMembersString } from '../../../utils/film-utils';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { defaultFilmActorsProps, filmActorsPropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-actors');\r\nexport const FilmActors = observer(props => {\r\n const i18n = useI18n();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { displayText } = props;\r\n const { film } = useFilmContext();\r\n if (!film)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmActorsSkeleton, {}) : null;\r\n const actors = getActorsForFilm(film);\r\n if (isEmptyArray(actors))\r\n return null;\r\n return (_jsx(Detail, { className: b.block(), headingLevel: HeadingLevel.H3, heading: displayText.label, content: getFormattedCastAndCrewMembersString(actors, i18n) }));\r\n});\r\nFilmActors.displayName = 'FilmActors';\r\nexport const FilmActorsSkeleton = () => _jsx(DetailSkeleton, { className: b.block({ skeleton: true }) });\r\nFilmActorsSkeleton.displayName = 'FilmActorsSkeleton';\r\n/**\r\n * The **Film Actors** component renders the list of actors for a film.\r\n */\r\nexport const FilmActorsComponent = withComponentWrapper(FilmActors, defaultFilmActorsProps, filmActorsPropsValidator);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmAdvanceBookingPeriodNotificationDisplayText = {\r\n messageFormat: 'Tickets on sale at select cinemas from ${startsAt|d|Do of MMMM, h:mm A}.',\r\n todayMessageFormat: 'Tickets on sale at select cinemas today from ${startsAt|d|h:mm A}.'\r\n};\r\nexport const filmAdvanceBookingPeriodNotificationDisplayTextValidatorSchema = {\r\n messageFormat: nonEmptyStringValidator,\r\n todayMessageFormat: nonEmptyStringValidator\r\n};\r\nexport const filmAdvanceBookingPeriodNotificationDisplayTextValidator = Validator.object(filmAdvanceBookingPeriodNotificationDisplayTextValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmAdvanceBookingPeriodNotificationDisplayText, filmAdvanceBookingPeriodNotificationDisplayTextValidator } from './display-text';\r\nexport const defaultFilmAdvanceBookingPeriodNotificationProps = {\r\n displayText: defaultFilmAdvanceBookingPeriodNotificationDisplayText\r\n};\r\nexport const filmAdvanceBookingPeriodNotificationValidator = Validator.object({\r\n displayText: filmAdvanceBookingPeriodNotificationDisplayTextValidator\r\n});\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { getAdvanceBookingPeriodForFilm, NotificationType } from '@vista/omnichannel-components-domain';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { getIdForComponentNotification } from '../../../utils/get-id-for-component-notification';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { FilmAdvanceBookingPeriodNotificationUI } from './subcomponents/ui';\r\nimport { defaultFilmAdvanceBookingPeriodNotificationProps, filmAdvanceBookingPeriodNotificationValidator } from './types/props';\r\nexport const FilmAdvanceBookingPeriodNotification = observer(props => {\r\n const { filmId, filmAvailability } = useFilmContext();\r\n if (!filmAvailability)\r\n return null;\r\n const bookingPeriod = getAdvanceBookingPeriodForFilm(filmId);\r\n return (_jsx(FilmAdvanceBookingPeriodNotificationUI, Object.assign({}, props, { id: getIdForComponentNotification('film-advance-booking-period-notification', NotificationType.Error, filmId), bookingPeriod: bookingPeriod })));\r\n});\r\nFilmAdvanceBookingPeriodNotification.displayName = 'FilmAdvanceBookingPeriodNotification';\r\n/**\r\n * The **Film Advance Booking Period Notification** component renders a notification with advance booking period information.\r\n *\r\n * If there is no advance booking period information to show then the **Film Advance Booking Period Notification** component will not render.\r\n */\r\nexport const FilmAdvanceBookingPeriodNotificationComponent = withComponentWrapper(FilmAdvanceBookingPeriodNotification, defaultFilmAdvanceBookingPeriodNotificationProps, filmAdvanceBookingPeriodNotificationValidator);\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { getCensorRatingById } from '@vista/omnichannel-components-domain';\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useI18n } from '../../../context/occ/hooks/use-i18n';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nconst b = bemClassBuilder('v-film-classification-description');\r\nexport const FilmClassificationDescription = observer(() => {\r\n const i18n = useI18n();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { film } = useFilmContext();\r\n if (!film) {\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmClassificationDescriptionSkeleton, {}) : null;\r\n }\r\n const censorRating = film.censorRatingId ? getCensorRatingById(film.censorRatingId) : undefined;\r\n const classificationNote = i18n.translatable(censorRating.classification) // Hack - replacing classification note with classification\r\n // const classificationNote = film.censorRatingNote\r\n // ? i18n.translatable(film.censorRatingNote)\r\n // : i18n.translatable(censorRating === null || censorRating === void 0 ? void 0 : censorRating.classificationDescription);\r\n // if (!classificationNote)\r\n // return null;\r\n return _jsx(\"span\", Object.assign({ className: b.block() }, { children: classificationNote }));\r\n});\r\nFilmClassificationDescription.displayName = 'FilmClassificationDescription';\r\nexport const FilmClassificationDescriptionSkeleton = () => _jsx(\"div\", { className: b.block({ skeleton: true }) });\r\nFilmClassificationDescriptionSkeleton.displayName = 'FilmClassificationDescriptionSkeleton';\r\n/**\r\n * The **Film Classification Description** component renders a film's censor rating classification description.\r\n */\r\nexport const FilmClassificationDescriptionComponent = withComponentWrapper(FilmClassificationDescription, {}, () => true);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmDirectorsDisplayText, filmDirectorsDisplayTextValidator } from './display-text';\r\nexport const defaultFilmDirectorsProps = {\r\n displayText: defaultFilmDirectorsDisplayText\r\n};\r\nexport const filmDirectorsPropsValidator = Validator.object({\r\n displayText: filmDirectorsDisplayTextValidator\r\n});\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { isEmptyArray } from '@vista/omnichannel-components-domain';\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useI18n } from '../../../context/occ/hooks/use-i18n';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { Detail, DetailSkeleton } from '../../../subcomponents/detail/detail';\r\nimport { HeadingLevel } from '../../../subcomponents/heading/heading';\r\nimport { getDirectorsForFilm, getFormattedCastAndCrewMembersString } from '../../../utils/film-utils';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { defaultFilmDirectorsProps, filmDirectorsPropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-directors');\r\nexport const FilmDirectors = observer(props => {\r\n const i18n = useI18n();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { displayText } = props;\r\n const { film } = useFilmContext();\r\n if (!film)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmDirectorsSkeleton, {}) : null;\r\n const directors = getDirectorsForFilm(film);\r\n if (isEmptyArray(directors))\r\n return null;\r\n return (_jsx(Detail, { className: b.block(), headingLevel: HeadingLevel.H3, heading: displayText.label, content: getFormattedCastAndCrewMembersString(directors, i18n) }));\r\n});\r\nFilmDirectors.displayName = 'FilmDirectors';\r\nexport const FilmDirectorsSkeleton = () => _jsx(DetailSkeleton, { className: b.block({ skeleton: true }) });\r\nFilmDirectorsSkeleton.displayName = 'FilmDirectorsSkeleton';\r\n/**\r\n * The **Film Directors** component renders the list of directors for a particular film.\r\n */\r\nexport const FilmDirectorsComponent = withComponentWrapper(FilmDirectors, defaultFilmDirectorsProps, filmDirectorsPropsValidator);\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { getGenresByIds, isEmptyArray } from '@vista/omnichannel-components-domain';\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useI18n } from '../../../context/occ/hooks/use-i18n';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nconst b = bemClassBuilder('v-film-genres');\r\nexport const FilmGenres = observer(() => {\r\n const i18n = useI18n();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { film } = useFilmContext();\r\n if (!film)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmGenresSkeleton, {}) : null;\r\n const genres = getGenresByIds(film.genreIds);\r\n if (isEmptyArray(genres))\r\n return null;\r\n return (_jsx(\"div\", Object.assign({ className: b.block() }, { children: _jsx(\"ul\", Object.assign({ className: b.element('list') }, { children: genres.map(genre => (_jsx(\"li\", Object.assign({ className: b.element('tag') }, { children: i18n.translatable(genre.name) }), genre.id))) })) })));\r\n});\r\nFilmGenres.displayName = 'FilmGenres';\r\nexport const FilmGenresSkeleton = () => _jsx(\"div\", { className: b.block({ skeleton: true }) });\r\nFilmGenresSkeleton.displayName = 'FilmGenresSkeleton';\r\n/**\r\n * The **Film Genres** component renders the genres of a film.\r\n */\r\nexport const FilmGenresComponent = withComponentWrapper(FilmGenres, {}, () => true);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmReleaseDateDisplayText, filmReleaseDateDisplayTextValidator } from './display-text';\r\nexport const defaultFilmReleaseDateProps = {\r\n displayText: defaultFilmReleaseDateDisplayText\r\n};\r\nexport const filmReleaseDatePropsValidator = Validator.object({\r\n displayText: filmReleaseDateDisplayTextValidator\r\n});\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useI18n } from '../../../context/occ/hooks/use-i18n';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { Detail, DetailSkeleton } from '../../../subcomponents/detail/detail';\r\nimport { HeadingLevel } from '../../../subcomponents/heading/heading';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { defaultFilmReleaseDateProps, filmReleaseDatePropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-release-date');\r\nexport const FilmReleaseDate = observer(props => {\r\n const i18n = useI18n();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { displayText } = props;\r\n const { film } = useFilmContext();\r\n if (!film)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmReleaseDateSkeleton, {}) : null;\r\n return (_jsx(Detail, { className: b.block(), headingLevel: HeadingLevel.H3, heading: displayText.label, content: i18n.template(displayText.format, { date: film.releaseDate }) }));\r\n});\r\nFilmReleaseDate.displayName = 'FilmReleaseDate';\r\nexport const FilmReleaseDateSkeleton = () => _jsx(DetailSkeleton, { className: b.block({ skeleton: true }) });\r\nFilmReleaseDateSkeleton.displayName = 'FilmReleaseDateSkeleton';\r\n/**\r\n * The **Film Release Date** component renders the release date of a film.\r\n */\r\nexport const FilmReleaseDateComponent = withComponentWrapper(FilmReleaseDate, defaultFilmReleaseDateProps, filmReleaseDatePropsValidator);\r\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { FilmActorsSkeleton } from '../../actors/film-actors';\r\nimport { FilmClassificationDescriptionSkeleton } from '../../classification-description/film-classification-description';\r\nimport { FilmDirectorsSkeleton } from '../../directors/film-directors';\r\nimport { FilmGenresSkeleton } from '../../genres/film-genres';\r\nimport { FilmReleaseDateSkeleton } from '../../release-date/film-release-date';\r\nimport { FilmRuntimeSkeleton } from '../../runtime/film-runtime';\r\nimport { FilmSynopsisSkeleton } from '../../synopsis/film-synopsis';\r\nimport { FilmThumbnailSkeleton } from '../../thumbnail/subcomponents/ui';\r\nconst b = bemClassBuilder('v-film-summary');\r\nexport const FilmSummarySkeleton = ({ thumbnail }) => (_jsx(\"div\", Object.assign({ className: b.block() }, { children: _jsxs(\"div\", Object.assign({ className: b.element('wrapper', { showThumbnail: thumbnail.show }) }, { children: [thumbnail.show && (_jsx(\"div\", Object.assign({ className: b.element('thumbnail', { mediaType: thumbnail.mediaType, skeleton: true }) }, { children: _jsx(FilmThumbnailSkeleton, { mediaType: thumbnail.mediaType }) }))), _jsxs(\"div\", Object.assign({ className: b.element('primary') }, { children: [_jsx(FilmRuntimeSkeleton, {}), _jsx(FilmReleaseDateSkeleton, {}), _jsx(FilmGenresSkeleton, {}), _jsx(FilmClassificationDescriptionSkeleton, {})] })), _jsxs(\"div\", Object.assign({ className: b.element('secondary') }, { children: [_jsx(FilmDirectorsSkeleton, {}), _jsx(FilmActorsSkeleton, {}), _jsx(FilmSynopsisSkeleton, {})] }))] })) })));\r\nFilmSummarySkeleton.displayName = 'FilmSummarySkeleton';\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { filmWatchlistButtonEventsValidator } from '../../watchlist-button/types/events';\r\nimport { defaultFilmSummaryCdnOptions, filmSummaryCdnOptionsValidator } from './cdn-options';\r\nimport { defaultFilmSummaryConfig, filmSummaryConfigValidator } from './config';\r\nimport { defaultFilmSummaryDisplayText, filmSummaryDisplayTextValidator } from './display-text';\r\nexport const filmSummaryPropsValidator = Validator.object({\r\n displayText: filmSummaryDisplayTextValidator,\r\n config: filmSummaryConfigValidator,\r\n events: filmWatchlistButtonEventsValidator,\r\n cdnOptions: filmSummaryCdnOptionsValidator\r\n});\r\nexport const defaultFilmSummaryProps = {\r\n displayText: defaultFilmSummaryDisplayText,\r\n config: defaultFilmSummaryConfig,\r\n events: {},\r\n cdnOptions: defaultFilmSummaryCdnOptions\r\n};\r\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { HeadingLevel } from '../../../subcomponents';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { FilmActors } from '../actors/film-actors';\r\nimport { FilmAdvanceBookingPeriodNotification } from '../advance-booking-period-notification/film-advance-booking-period-notification';\r\nimport { FilmClassificationDescription } from '../classification-description/film-classification-description';\r\nimport { FilmCustomActionList } from '../custom-action-list/film-custom-action-list';\r\nimport { FilmDirectors } from '../directors/film-directors';\r\nimport { FilmGenres } from '../genres/film-genres';\r\nimport { FilmReleaseDate } from '../release-date/film-release-date';\r\nimport { FilmRuntime } from '../runtime/film-runtime';\r\nimport { FilmSynopsis } from '../synopsis/film-synopsis';\r\nimport { FilmThumbnail } from '../thumbnail/film-thumbnail';\r\nimport { FilmWatchlistButton } from '../watchlist-button/film-watchlist-button';\r\nimport { FilmSummarySkeleton } from './subcomponents/skeleton';\r\nimport { defaultFilmSummaryProps, filmSummaryPropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-summary');\r\n/**\r\n * Renders the summary details of a film.\r\n */\r\nexport const FilmSummary = observer(props => {\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { cdnOptions, config, displayText, events } = props;\r\n const { film } = useFilmContext();\r\n if (!film) {\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmSummarySkeleton, { thumbnail: config.thumbnail }) : null;\r\n }\r\n const watchlistButtonProps = { config: { iconOnly: false }, events, displayText };\r\n return (_jsx(\"div\", Object.assign({ className: b.block() }, { children: _jsxs(\"div\", Object.assign({ className: b.element('wrapper', { showThumbnail: config.thumbnail.show }) }, { children: [config.thumbnail.show ? (_jsxs(\"div\", Object.assign({ className: b.element('thumbnail') }, { children: [_jsx(FilmThumbnail, { config: config.thumbnail, cdnOptions: cdnOptions, events: events }), _jsx(FilmWatchlistButton, Object.assign({}, watchlistButtonProps))] }))) : (_jsx(FilmWatchlistButton, Object.assign({}, watchlistButtonProps))), _jsx(FilmAdvanceBookingPeriodNotification, { displayText: {\r\n messageFormat: displayText.advanceBookingPeriodNotificationFormat,\r\n todayMessageFormat: displayText.advanceBookingPeriodTodayNotificationFormat\r\n } }), config.customFilmActions.show && _jsx(FilmCustomActionList, {}), _jsxs(\"div\", Object.assign({ className: b.element('primary') }, { children: [_jsx(FilmRuntime, { config: { labelHeadingLevel: HeadingLevel.H3 }, displayText: { label: displayText.runtimeLabel } }), _jsx(FilmReleaseDate, { displayText: { label: displayText.releaseDateLabel, format: displayText.releaseDateFormat } }), _jsx(FilmGenres, {}), _jsx(FilmClassificationDescription, {})] })), _jsxs(\"div\", Object.assign({ className: b.element('secondary') }, { children: [_jsx(FilmDirectors, { displayText: { label: displayText.directorsLabel } }), _jsx(FilmActors, { displayText: { label: displayText.actorsLabel } }), _jsx(FilmSynopsis, { displayText: { label: displayText.synopsisLabel }, config: { length: config.synopsisLength } })] }))] })) })));\r\n});\r\nFilmSummary.displayName = 'FilmSummary';\r\n/**\r\n * The **Film Summary** component renders the details of a film.\r\n */\r\nexport const FilmSummaryComponent = withComponentWrapper(FilmSummary, defaultFilmSummaryProps, filmSummaryPropsValidator);\r\n","import { isFilmAvailableForAdvanceBookings } from '@vista/omnichannel-components-domain';\r\nimport { FilmCategory } from '@vista-digital/ocapi-types/v1';\r\nexport const getFilmStatusLabel = (filmAvailability, displayText) => {\r\n const { categories, filmId, siteId } = filmAvailability;\r\n if (categories.includes(FilmCategory.NowShowing))\r\n return displayText.nowShowingLabel;\r\n if (isFilmAvailableForAdvanceBookings(filmId, siteId))\r\n return displayText.preBookNowLabel;\r\n if (categories.includes(FilmCategory.AdvanceBooking))\r\n return displayText.advanceBookingLabel;\r\n if (categories.includes(FilmCategory.ComingSoon))\r\n return displayText.comingSoonLabel;\r\n return undefined;\r\n};\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { useOccDisplayText } from '../../../context/occ/hooks/use-occ-display-text';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { getFilmStatusLabel } from './utils/get-film-status-label';\r\nconst b = bemClassBuilder('v-film-status');\r\nexport const FilmStatus = observer(() => {\r\n const { film: filmDisplayText } = useOccDisplayText();\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { filmAvailability } = useFilmContext();\r\n if (!filmAvailability)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmStatusSkeleton, {}) : null;\r\n const status = getFilmStatusLabel(filmAvailability, filmDisplayText);\r\n if (!status)\r\n return null;\r\n return _jsx(\"span\", Object.assign({ className: b.block() }, { children: status }));\r\n});\r\nFilmStatus.displayName = 'FilmStatus';\r\nexport const FilmStatusSkeleton = () => _jsx(\"span\", { className: b.block({ skeleton: true }) });\r\nFilmStatusSkeleton.displayName = 'FilmStatusSkeleton';\r\n/**\r\n * The **Film Status** component displays a film's status.\r\n */\r\nexport const FilmStatusComponent = withComponentWrapper(FilmStatus, {}, () => true);\r\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { Button } from '../../../../subcomponents/button/button';\r\nimport { ButtonColor } from '../../../../subcomponents/button/types/color';\r\nimport { ButtonSize } from '../../../../subcomponents/button/types/size';\r\nimport { HeadingLevel } from '../../../../subcomponents/heading/heading';\r\nimport { HeroBanner } from '../../../../subcomponents/hero-banner/hero-banner';\r\nimport { ImagePlaceholderType } from '../../../../subcomponents/image/types/placeholder-type';\r\nimport { getFilmCdnUrlForMedia } from '../../../../utils/get-film-cdn-url-for-media';\r\nimport { FilmStatus } from '../../status/film-status';\r\nimport { FilmTitle } from '../../title/film-title';\r\nimport { FilmTrailerButton } from '../../trailer-button/film-trailer-button';\r\nconst b = bemClassBuilder('v-film-details-banner');\r\n/**\r\n * Renders the banner of a film.\r\n */\r\nexport const FilmDetailsBanner = observer(props => {\r\n const { film, displayText, assets, config, events, cdnOptions, subcomponents } = props;\r\n return (_jsx(HeroBanner, Object.assign({ src: getFilmCdnUrlForMedia(film, config.banner.mediaType, cdnOptions.heroBannerImage), placeholderType: ImagePlaceholderType.FilmBackdrop, className: b.block() }, { children: _jsxs(\"div\", Object.assign({ className: b.element('content', { showThumbnail: config.thumbnail.show }) }, { children: [config.playTrailerButton.show && (_jsx(FilmTrailerButton, { displayText: displayText, assets: assets, events: events, subcomponents: subcomponents, config: config.playTrailerButton })), _jsx(FilmStatus, {}), _jsx(FilmTitle, { config: { headingLevel: HeadingLevel.H1 }, cdnOptions: cdnOptions }), config.actionButton.show && (_jsx(Button, { className: b.element('action-button'), color: ButtonColor.Primary, label: displayText.actionButtonLabel, size: ButtonSize.Large, onClick: events.onActionButtonClicked }))] })) })));\r\n});\r\nFilmDetailsBanner.displayName = 'FilmDetailsBanner';\r\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { FilmStatusSkeleton } from '../../status/film-status';\r\nimport { FilmSummarySkeleton } from '../../summary/subcomponents/skeleton';\r\nimport { FilmTitleSkeleton } from '../../title/subcomponents/ui';\r\nconst bBanner = bemClassBuilder('v-film-details-banner');\r\nexport const FilmDetailsSkeleton = props => (_jsxs(\"div\", Object.assign({ className: \"v-film-details\" }, { children: [_jsx(\"div\", Object.assign({ className: bBanner.block() }, { children: _jsx(\"div\", Object.assign({ className: \"v-hero-banner__wrapper\" }, { children: _jsxs(\"div\", Object.assign({ className: bBanner.element('content', { showThumbnail: props.thumbnail.show }) }, { children: [_jsx(FilmStatusSkeleton, {}), _jsx(FilmTitleSkeleton, {}), _jsx(\"span\", { className: bBanner.element('action-button', { skeleton: true }) })] })) })) })), _jsx(FilmSummarySkeleton, Object.assign({}, props))] })));\r\nFilmDetailsSkeleton.displayName = 'FilmDetailsSkeleton';\r\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { useFilmContext } from '../../../context/film/hooks/use-film-context';\r\nimport { useOccConfig } from '../../../context/occ/hooks/use-occ-config';\r\nimport { withComponentWrapper } from '../../../utils/with-component-wrapper';\r\nimport { FilmSummary } from '../summary/film-summary';\r\nimport { FilmDetailsBanner } from './subcomponents/banner';\r\nimport { FilmDetailsSkeleton } from './subcomponents/skeleton';\r\nimport { defaultFilmDetailsProps, filmDetailsPropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-details');\r\nexport const FilmDetails = observer(props => {\r\n const { enableSkeletonLoadingIndicators } = useOccConfig();\r\n const { config } = props;\r\n const { film } = useFilmContext();\r\n if (!film)\r\n return enableSkeletonLoadingIndicators ? _jsx(FilmDetailsSkeleton, { thumbnail: config.thumbnail }) : null;\r\n return (_jsxs(\"div\", Object.assign({ className: b.block() }, { children: [_jsx(FilmDetailsBanner, Object.assign({}, props, { film: film })), _jsx(FilmSummary, Object.assign({}, props))] })));\r\n});\r\nFilmDetails.displayName = 'FilmDetails';\r\n/**\r\n * The **Film Details** component renders the details of a film.\r\n */\r\nexport const FilmDetailsComponent = withComponentWrapper(FilmDetails, defaultFilmDetailsProps, filmDetailsPropsValidator);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { cdnStandardAssetOptionsValidator } from '../../../../validators/cdn-asset-options';\r\nimport { defaultFilmSummaryCdnOptions, filmSummaryCdnOptionsValidatorSchema } from '../../summary/types/cdn-options';\r\nexport const defaultFilmDetailsCdnOptions = Object.assign(Object.assign({}, defaultFilmSummaryCdnOptions), { heroBannerImage: { width: 1920 }, censorRatingIcon: { height: 60 } });\r\nexport const filmDetailsCdnOptionsValidator = Validator.object(Object.assign(Object.assign({}, filmSummaryCdnOptionsValidatorSchema), { heroBannerImage: cdnStandardAssetOptionsValidator, censorRatingIcon: cdnStandardAssetOptionsValidator }));\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { FilmHeroBannerMediaType } from '../../../film-hero-banner/types/media-type';\r\nimport { defaultFilmSummaryConfig, filmSummaryConfigValidatorSchema } from '../../summary/types/config';\r\nimport { defaultFilmTrailerConfig, filmTrailerConfigValidatorSchema } from '../../trailer/types/config';\r\n/**\r\n * Default configuration options for the Film Details component.\r\n */\r\nexport const defaultFilmDetailsConfig = Object.assign(Object.assign({}, defaultFilmSummaryConfig), { banner: { mediaType: FilmHeroBannerMediaType.Backdrop }, actionButton: { show: true }, playTrailerButton: Object.assign(Object.assign({}, defaultFilmTrailerConfig), { show: true }) });\r\nexport const filmDetailsBannerValidator = Validator.object({\r\n mediaType: Validator.oneOf(Object.values(FilmHeroBannerMediaType))\r\n});\r\nexport const filmDetailsConfigValidatorSchema = Object.assign(Object.assign({}, filmSummaryConfigValidatorSchema), { banner: filmDetailsBannerValidator, actionButton: Validator.object({ show: Validator.boolean() }), playTrailerButton: Validator.object(Object.assign(Object.assign({}, filmTrailerConfigValidatorSchema), { show: Validator.boolean() })) });\r\nexport const filmDetailsConfigValidator = Validator.object(filmDetailsConfigValidatorSchema);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmSummaryDisplayText, filmSummaryDisplayTextValidatorSchema } from '../../summary/types/display-text';\r\nimport { defaultFilmTrailerButtonDisplayText, filmTrailerButtonDisplayTextValidatorSchema } from '../../trailer-button/types/display-text';\r\nexport const defaultFilmDetailsDisplayText = Object.assign(Object.assign(Object.assign({}, defaultFilmSummaryDisplayText), defaultFilmTrailerButtonDisplayText), { actionButtonLabel: 'View showtimes', playTrailerButtonLabel: undefined });\r\nexport const filmDetailsDisplayTextValidatorSchema = Object.assign(Object.assign(Object.assign({}, filmSummaryDisplayTextValidatorSchema), filmTrailerButtonDisplayTextValidatorSchema), { actionButtonLabel: nonEmptyStringValidator });\r\nexport const filmDetailsDisplayTextValidator = Validator.object(filmDetailsDisplayTextValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { filmTrailerButtonEventsValidatorSchema } from '../../trailer-button/types/events';\r\nimport { filmWatchlistButtonEventsValidatorSchema } from '../../watchlist-button/types/events';\r\nexport const filmDetailsEventsValidator = Validator.object(Object.assign(Object.assign(Object.assign({}, filmTrailerButtonEventsValidatorSchema), filmWatchlistButtonEventsValidatorSchema), { onActionButtonClicked: Validator.optional(Validator.fn()) }));\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmTrailerButtonAssets, filmTrailerButtonAssetsValidator } from '../../trailer-button/types/assets';\r\nimport { defaultFilmDetailsCdnOptions, filmDetailsCdnOptionsValidator } from './cdn-options';\r\nimport { defaultFilmDetailsConfig, filmDetailsConfigValidator } from './config';\r\nimport { defaultFilmDetailsDisplayText, filmDetailsDisplayTextValidator } from './display-text';\r\nimport { filmDetailsEventsValidator } from './events';\r\nexport const filmDetailsPropsValidator = Validator.object({\r\n displayText: filmDetailsDisplayTextValidator,\r\n assets: filmTrailerButtonAssetsValidator,\r\n config: filmDetailsConfigValidator,\r\n events: filmDetailsEventsValidator,\r\n cdnOptions: filmDetailsCdnOptionsValidator\r\n});\r\nexport const defaultFilmDetailsProps = {\r\n displayText: defaultFilmDetailsDisplayText,\r\n assets: defaultFilmTrailerButtonAssets,\r\n config: defaultFilmDetailsConfig,\r\n events: {},\r\n cdnOptions: defaultFilmDetailsCdnOptions\r\n};\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmDirectorsDisplayText = {\r\n label: 'Directors'\r\n};\r\nexport const filmDirectorsDisplayTextValidatorSchema = {\r\n label: Validator.optional(nonEmptyStringValidator)\r\n};\r\nexport const filmDirectorsDisplayTextValidator = Validator.object(filmDirectorsDisplayTextValidatorSchema);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmReleaseDateDisplayText = {\r\n label: 'Release date',\r\n format: '${date|d|D MMMM YYYY}'\r\n};\r\nexport const filmReleaseDateDisplayTextValidatorSchema = {\r\n label: Validator.optional(nonEmptyStringValidator),\r\n format: nonEmptyStringValidator\r\n};\r\nexport const filmReleaseDateDisplayTextValidator = Validator.object(filmReleaseDateDisplayTextValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { cdnStandardAssetOptionsValidator } from '../../../../validators/cdn-asset-options';\r\nexport const defaultFilmSummaryCdnOptions = {\r\n filmThumbnailImage: { width: 200 }\r\n};\r\nexport const filmSummaryCdnOptionsValidatorSchema = {\r\n filmThumbnailImage: cdnStandardAssetOptionsValidator\r\n};\r\nexport const filmSummaryCdnOptionsValidator = Validator.object(filmSummaryCdnOptionsValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { FilmSynopsisLength } from '../../../../types/film-synopsis-length';\r\nimport { defaultFilmThumbnailConfig, filmThumbnailConfigValidatorSchema } from '../../thumbnail/types/config';\r\n/**\r\n * Default configuration options for the Film Summary component.\r\n */\r\nexport const defaultFilmSummaryConfig = {\r\n thumbnail: Object.assign(Object.assign({}, defaultFilmThumbnailConfig), { show: true }),\r\n customFilmActions: {\r\n show: false\r\n },\r\n synopsisLength: FilmSynopsisLength.Longest\r\n};\r\nexport const filmSummaryFilmThumbnailValidator = Validator.object(Object.assign(Object.assign({}, filmThumbnailConfigValidatorSchema), { show: Validator.boolean() }));\r\nexport const filmSummaryConfigValidatorSchema = {\r\n thumbnail: filmSummaryFilmThumbnailValidator,\r\n customFilmActions: Validator.object({ show: Validator.boolean() }),\r\n synopsisLength: Validator.oneOf(Object.values(FilmSynopsisLength))\r\n};\r\nexport const filmSummaryConfigValidator = Validator.object(filmSummaryConfigValidatorSchema);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nimport { defaultFilmActorsDisplayText } from '../../actors/types/display-text';\r\nimport { defaultFilmDirectorsDisplayText } from '../../directors/types/display-text';\r\nimport { defaultFilmReleaseDateDisplayText } from '../../release-date/types/display-text';\r\nimport { defaultFilmRuntimeDisplayText } from '../../runtime/types/display-text';\r\nimport { defaultFilmSynopsisDisplayText } from '../../synopsis/types/display-text';\r\nexport const defaultFilmSummaryDisplayText = {\r\n directorsLabel: defaultFilmDirectorsDisplayText.label,\r\n actorsLabel: defaultFilmActorsDisplayText.label,\r\n synopsisLabel: defaultFilmSynopsisDisplayText.label,\r\n runtimeLabel: defaultFilmRuntimeDisplayText.label,\r\n releaseDateLabel: defaultFilmReleaseDateDisplayText.label,\r\n releaseDateFormat: defaultFilmReleaseDateDisplayText.format,\r\n advanceBookingPeriodNotificationFormat: 'Tickets on sale at select cinemas from ${startsAt|d|Do of MMMM, h:mm A}.',\r\n advanceBookingPeriodTodayNotificationFormat: 'Tickets on sale at select cinemas today from ${startsAt|d|h:mm A}.'\r\n};\r\nexport const filmSummaryDisplayTextValidatorSchema = {\r\n directorsLabel: Validator.optional(nonEmptyStringValidator),\r\n actorsLabel: Validator.optional(nonEmptyStringValidator),\r\n synopsisLabel: Validator.optional(nonEmptyStringValidator),\r\n runtimeLabel: Validator.optional(nonEmptyStringValidator),\r\n releaseDateLabel: Validator.optional(nonEmptyStringValidator),\r\n releaseDateFormat: nonEmptyStringValidator,\r\n advanceBookingPeriodNotificationFormat: nonEmptyStringValidator,\r\n advanceBookingPeriodTodayNotificationFormat: nonEmptyStringValidator\r\n};\r\nexport const filmSummaryDisplayTextValidator = Validator.object(filmSummaryDisplayTextValidatorSchema);\r\n","import { ocapiClient } from '../../../../api-clients/ocapi/client';\r\nimport { createOrGetFetchedState } from '../../../../utils/fetched-data/create-or-get-fetched-state';\r\nimport { getCacheDuration } from '../../../../utils/get-cache-duration';\r\nimport { loadDataFromApi } from '../../../../utils/load-data-from-api';\r\nimport { browsingDomainStore } from '../../store';\r\nimport { assignFilmRelatedData } from './utils/assign-related-data';\r\nexport const loadFilmById = async (filmId, reloadCachedData = false) => {\r\n const state = createOrGetFetchedState(browsingDomainStore.data.filmsById, filmId);\r\n await loadDataFromApi({\r\n api: () => ocapiClient.instance.v1.browsing.masterData.films.getById(filmId),\r\n state,\r\n cacheDuration: getCacheDuration('films'),\r\n onSuccess,\r\n reloadCachedData\r\n });\r\n};\r\nconst onSuccess = (response, cacheDuration) => {\r\n const { film, relatedData } = response;\r\n assignFilmRelatedData(relatedData, cacheDuration);\r\n return film;\r\n};\r\n","import { ocapiClient } from '../../../../api-clients/ocapi/client';\r\nimport { createOrGetFetchedState } from '../../../../utils/fetched-data/create-or-get-fetched-state';\r\nimport { generateQueryKey } from '../../../../utils/generate-query-key';\r\nimport { getCacheDuration } from '../../../../utils/get-cache-duration';\r\nimport { loadDataFromApi } from '../../../../utils/load-data-from-api';\r\nimport { browsingDomainStore } from '../../store';\r\nimport { assignFilmAvailabilityRelatedData } from './utils/assign-related-data';\r\nexport const loadFilmAvailability = async (filmId) => {\r\n const queryKey = generateQueryKey({ filmId });\r\n const state = createOrGetFetchedState(browsingDomainStore.data.filmAvailabilitiesByQuery, queryKey);\r\n await loadDataFromApi({\r\n api: () => ocapiClient.instance.v1.browsing.availability.films.getForFilm(filmId),\r\n state,\r\n cacheDuration: getCacheDuration('films'),\r\n onSuccess\r\n });\r\n};\r\nconst onSuccess = (response, cacheDuration) => {\r\n const { filmAvailability, relatedData } = response;\r\n assignFilmAvailabilityRelatedData(relatedData, cacheDuration);\r\n return filmAvailability;\r\n};\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { observer } from 'mobx-react';\r\nimport { Button } from '../../../subcomponents/button/button';\r\nimport { ButtonIconPosition } from '../../../subcomponents/button/types/icon-position';\r\nimport { Message } from '../../../subcomponents/message/message';\r\nexport var FilmContextMessageType;\r\n(function (FilmContextMessageType) {\r\n FilmContextMessageType[\"FailedToLoadData\"] = \"FailedToLoadData\";\r\n})(FilmContextMessageType || (FilmContextMessageType = {}));\r\nconst b = bemClassBuilder('v-film-context-message');\r\nexport const FilmContextMessage = observer(props => {\r\n const { messageType, displayText, assets, onRetryButtonClick } = props;\r\n return (_jsx(Message, Object.assign({}, getFilmContextMessageProps(messageType, assets, displayText), { className: b.block() }, { children: _jsx(Button, { label: displayText.failedToLoadDataRetryButtonLabel, iconName: assets.failedToLoadDataRetryButtonIconName, iconPosition: ButtonIconPosition.Right, onClick: onRetryButtonClick }) })));\r\n});\r\nFilmContextMessage.displayName = 'FilmContextMessage';\r\nconst getFilmContextMessageProps = (messageType, assets, displayText) => {\r\n switch (messageType) {\r\n case FilmContextMessageType.FailedToLoadData:\r\n return {\r\n iconName: assets.failedToLoadDataIconName,\r\n title: displayText.failedToLoadDataTitle,\r\n description: displayText.failedToLoadDataMessage\r\n };\r\n default:\r\n return undefined;\r\n }\r\n};\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmContextAssets = {\r\n failedToLoadDataIconName: 'generic-error-message',\r\n failedToLoadDataRetryButtonIconName: 'arrow-clockwise'\r\n};\r\nexport const filmContextAssetsValidatorSchema = {\r\n failedToLoadDataIconName: nonEmptyStringValidator,\r\n failedToLoadDataRetryButtonIconName: nonEmptyStringValidator\r\n};\r\nexport const filmContextAssetsValidator = Validator.object(filmContextAssetsValidatorSchema);\r\n","import { Validator } from '@vista-digital/validator';\r\nimport { structuredDataConfigValidator } from '../../../types/structured-data-config';\r\n/**\r\n * Default configuration options for the Film Context component.\r\n */\r\nexport const defaultFilmContextConfig = {\r\n structuredData: {\r\n enable: false\r\n }\r\n};\r\nexport const filmContextConfigValidatorSchema = {\r\n structuredData: structuredDataConfigValidator\r\n};\r\nexport const filmContextConfigValidator = Validator.object(filmContextConfigValidatorSchema);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nexport const defaultFilmContextDisplayText = {\r\n failedToLoadDataTitle: 'Sorry, something went wrong.',\r\n failedToLoadDataMessage: 'Refresh your browser or try loading the film again.',\r\n failedToLoadDataRetryButtonLabel: 'Try again'\r\n};\r\nexport const filmContextDisplayTextValidatorSchema = {\r\n failedToLoadDataTitle: nonEmptyStringValidator,\r\n failedToLoadDataMessage: nonEmptyStringValidator,\r\n failedToLoadDataRetryButtonLabel: nonEmptyStringValidator\r\n};\r\nexport const filmContextDisplayTextValidator = Validator.object(filmContextDisplayTextValidatorSchema);\r\n","import { nonEmptyStringValidator } from '@vista/omnichannel-components-domain';\r\nimport { Validator } from '@vista-digital/validator';\r\nimport { reactChildrenValidator } from '../../../validators/react-children';\r\nimport { defaultFilmContextAssets, filmContextAssetsValidator } from './assets';\r\nimport { defaultFilmContextConfig, filmContextConfigValidator } from './config';\r\nimport { defaultFilmContextDisplayText, filmContextDisplayTextValidator } from './display-text';\r\nexport const defaultFilmContextProps = {\r\n filmId: undefined,\r\n displayText: defaultFilmContextDisplayText,\r\n assets: defaultFilmContextAssets,\r\n config: defaultFilmContextConfig,\r\n children: undefined\r\n};\r\nexport const filmContextPropsValidator = Validator.object({\r\n filmId: nonEmptyStringValidator,\r\n displayText: filmContextDisplayTextValidator,\r\n assets: filmContextAssetsValidator,\r\n config: filmContextConfigValidator,\r\n children: reactChildrenValidator\r\n});\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { getFilmAvailability, getFilmById, loadFilmAvailability, loadFilmById, LoadingState } from '@vista/omnichannel-components-domain';\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { useLoadAction } from '@vista-digital/react-tools';\r\nimport { observer } from 'mobx-react';\r\nimport { useCallback } from 'react';\r\nimport { useMemberRewards } from '../../hooks/use-member-rewards';\r\nimport { withComponentWrapper } from '../../utils/with-component-wrapper';\r\nimport { useFilmSchema } from './hooks/use-film-schema';\r\nimport { FilmContextMessage, FilmContextMessageType } from './subcomponents/message';\r\nimport { FilmContextInstance } from './types/context';\r\nimport { defaultFilmContextProps, filmContextPropsValidator } from './types/props';\r\nconst b = bemClassBuilder('v-film-context');\r\nconst FilmContext = observer(props => {\r\n const { filmId, displayText, assets, config } = props;\r\n const loadAction = useCallback(() => Promise.all([loadFilmById(filmId), loadFilmAvailability(filmId)]), [filmId]);\r\n const { loadingState, reload } = useLoadAction(loadAction);\r\n const film = getFilmById(filmId);\r\n const filmAvailability = getFilmAvailability(filmId);\r\n // Load member rewards to show reward-restricted booking periods.\r\n useMemberRewards();\r\n // TODO: Investigate if having structured data not contained in the markup is problematic. #286560\r\n useFilmSchema(config.structuredData, film);\r\n if (loadingState === LoadingState.Failure) {\r\n return (_jsx(FilmContextMessage, { displayText: displayText, assets: assets, messageType: FilmContextMessageType.FailedToLoadData, onRetryButtonClick: reload }));\r\n }\r\n return (_jsx(FilmContextInstance.Provider, Object.assign({ value: { filmId, film, filmAvailability } }, { children: _jsx(\"div\", Object.assign({ className: b.block({ loading: loadingState === LoadingState.Loading }) }, { children: props.children })) })));\r\n});\r\nFilmContext.displayName = 'FilmContext';\r\n/**\r\n * The **Film Context** component loads a film from the API and provides it to its children via the `FilmContextInstance`.\r\n * It will render a single error message if the film fails to load.\r\n */\r\nexport const FilmContextComponent = withComponentWrapper(FilmContext, defaultFilmContextProps, filmContextPropsValidator);\r\n","import { useMemo } from 'react';\r\nimport { useSchema } from '../../../hooks/use-schema';\r\nimport { mapFilmToMovieSchema } from '../../../utils/schema-mappers/film';\r\nimport { useI18n } from '../../occ/hooks/use-i18n';\r\nexport const useFilmSchema = (config, film) => {\r\n const i18n = useI18n();\r\n const schema = useMemo(() => {\r\n if (!config.enable || !film)\r\n return undefined;\r\n return mapFilmToMovieSchema(film, i18n);\r\n }, [config, film, i18n]);\r\n useSchema(schema);\r\n};\r\n","import { __rest } from \"tslib\";\r\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\r\nimport { bemClassBuilder } from '@vista-digital/bem-class-builder';\r\nimport { Image } from '../image/image';\r\nconst b = bemClassBuilder('v-hero-banner');\r\nexport const HeroBanner = props => {\r\n const { className, children } = props, imageProps = __rest(props, [\"className\", \"children\"]);\r\n return (_jsxs(\"div\", Object.assign({ className: b.block(undefined, className) }, { children: [_jsx(Image, Object.assign({}, imageProps, { className: b.element('image') })), _jsx(\"div\", Object.assign({ className: b.element('wrapper') }, { children: children }))] })));\r\n};\r\nHeroBanner.displayName = 'HeroBanner';\r\n"],"names":["defaultFilmActorsDisplayText","label","filmActorsDisplayTextValidatorSchema","filmActorsDisplayTextValidator","defaultFilmActorsProps","displayText","filmActorsPropsValidator","b","FilmActors","props","i18n","enableSkeletonLoadingIndicators","film","FilmActorsSkeleton","actors","className","block","headingLevel","heading","content","displayName","skeleton","filmAdvanceBookingPeriodNotificationDisplayTextValidatorSchema","messageFormat","todayMessageFormat","filmAdvanceBookingPeriodNotificationDisplayTextValidator","defaultFilmAdvanceBookingPeriodNotificationProps","filmAdvanceBookingPeriodNotificationValidator","FilmAdvanceBookingPeriodNotification","filmId","filmAvailability","bookingPeriod","Object","assign","id","FilmClassificationDescription","FilmClassificationDescriptionSkeleton","censorRating","censorRatingId","undefined","classificationNote","translatable","classification","children","defaultFilmDirectorsProps","filmDirectorsPropsValidator","FilmDirectors","FilmDirectorsSkeleton","directors","FilmGenres","FilmGenresSkeleton","genres","genreIds","element","map","genre","name","defaultFilmReleaseDateProps","filmReleaseDatePropsValidator","FilmReleaseDate","template","format","date","releaseDate","FilmReleaseDateSkeleton","FilmSummarySkeleton","thumbnail","showThumbnail","show","mediaType","filmSummaryPropsValidator","config","events","cdnOptions","defaultFilmSummaryProps","FilmSummary","watchlistButtonProps","iconOnly","advanceBookingPeriodNotificationFormat","advanceBookingPeriodTodayNotificationFormat","customFilmActions","labelHeadingLevel","runtimeLabel","releaseDateLabel","releaseDateFormat","directorsLabel","actorsLabel","synopsisLabel","length","synopsisLength","FilmStatus","filmDisplayText","FilmStatusSkeleton","status","categories","siteId","includes","nowShowingLabel","preBookNowLabel","advanceBookingLabel","comingSoonLabel","getFilmStatusLabel","FilmDetailsBanner","assets","subcomponents","src","banner","heroBannerImage","placeholderType","playTrailerButton","actionButton","color","actionButtonLabel","size","onClick","onActionButtonClicked","bBanner","FilmDetailsSkeleton","FilmDetails","FilmDetailsComponent","defaultFilmDetailsCdnOptions","width","censorRatingIcon","height","filmDetailsCdnOptionsValidator","defaultFilmDetailsConfig","filmDetailsBannerValidator","values","filmDetailsConfigValidatorSchema","filmDetailsConfigValidator","defaultFilmDetailsDisplayText","playTrailerButtonLabel","filmDetailsDisplayTextValidatorSchema","filmDetailsDisplayTextValidator","filmDetailsEventsValidator","filmDetailsPropsValidator","defaultFilmDetailsProps","defaultFilmDirectorsDisplayText","filmDirectorsDisplayTextValidatorSchema","filmDirectorsDisplayTextValidator","defaultFilmReleaseDateDisplayText","filmReleaseDateDisplayTextValidatorSchema","filmReleaseDateDisplayTextValidator","defaultFilmSummaryCdnOptions","filmThumbnailImage","filmSummaryCdnOptionsValidatorSchema","filmSummaryCdnOptionsValidator","defaultFilmSummaryConfig","filmSummaryConfigValidatorSchema","filmSummaryConfigValidator","defaultFilmSummaryDisplayText","filmSummaryDisplayTextValidatorSchema","filmSummaryDisplayTextValidator","loadFilmById","async","reloadCachedData","state","api","cacheDuration","onSuccess","response","relatedData","loadFilmAvailability","queryKey","FilmContextMessageType","FilmContextMessage","messageType","onRetryButtonClick","getFilmContextMessageProps","failedToLoadDataRetryButtonLabel","iconName","failedToLoadDataRetryButtonIconName","iconPosition","FailedToLoadData","failedToLoadDataIconName","title","failedToLoadDataTitle","description","failedToLoadDataMessage","filmContextAssetsValidatorSchema","filmContextAssetsValidator","filmContextConfigValidatorSchema","structuredData","filmContextConfigValidator","filmContextDisplayTextValidatorSchema","filmContextDisplayTextValidator","defaultFilmContextProps","enable","filmContextPropsValidator","FilmContext","loadAction","useCallback","Promise","all","loadingState","reload","schema","useMemo","m","useFilmSchema","value","loading","Loading","FilmContextComponent","HeroBanner","imageProps"],"sourceRoot":""}