@defra/flood-webchat 0.0.1-beta.16 → 0.0.1-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +263 -39
- package/dist/client.js.map +1 -1
- package/package.json +1 -1
- package/src/client/components/availability/availability.jsx +2 -1
- package/src/client/components/availability/availability.scss +105 -5
- package/src/client/components/chat/chat.jsx +5 -3
- package/src/client/components/panel/panel-header.jsx +3 -1
- package/src/client/components/panel/panel.jsx +15 -4
- package/src/client/components/screens/settings.jsx +67 -0
- package/src/client/index.jsx +3 -3
- package/src/client/lib/message-notification.js +36 -0
- package/src/client/store/AppProvider.jsx +26 -2
- package/src/client/store/actions-map.js +24 -2
- package/src/client/store/constants.js +3 -0
- package/src/client/store/reducer.js +3 -4
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","mappings":";;;;;;;;;;;;;;;;;;;AAA0D;AAET;AACP;AACC;AAEpC,SAASO,YAAYA,CAAA,EAAI;EAC9B,MAAM;IAAEC,YAAY;IAAEC,QAAQ;IAAEC,UAAU;IAAEC;EAAkB,CAAC,GAAGL,qDAAM,CAAC,CAAC;EAE1E,MAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGV,+CAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMW,SAAS,GAAGZ,6CAAM,CAAC,CAAC;EAE1B,MAAMa,OAAO,GAAGA,CAAA,KAAM;IACpBJ,iBAAiB,CAAC,CAACD,UAAU,CAAC;EAChC,CAAC;EAED,MAAMM,SAAS,GAAGC,KAAK,IAAI;IACzB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBD,KAAK,CAACE,cAAc,CAAC,CAAC;IACxB;EACF,CAAC;EAED,MAAMC,OAAO,GAAGH,KAAK,IAAI;IACvB,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MACrBP,iBAAiB,CAAC,CAACD,UAAU,CAAC;IAChC;EACF,CAAC;EAED,MAAMW,oBAAoB,GAAGC,OAAO,IAAI;IACtC,MAAM,CAACC,KAAK,CAAC,GAAGD,OAAO;IACvB,MAAME,WAAW,GAAG,CAACD,KAAK,CAACE,cAAc,IAAIF,KAAK,CAACG,kBAAkB,CAACC,GAAG,GAAG,CAAC;IAC7Ed,UAAU,CAAC,CAACH,UAAU,IAAIc,WAAW,CAAC;EACxC,CAAC;EAEDvB,gDAAS,CAAC,MAAM;IACd,MAAM2B,QAAQ,GAAG,IAAIC,MAAM,CAACC,oBAAoB,CAACT,oBAAoB,EAAE;MACrEU,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGlB,SAAS,CAACmB,OAAO,EAAED,aAAa;IAEtD,IAAIA,aAAa,EAAE;MACjBJ,QAAQ,CAACM,OAAO,CAACF,aAAa,CAAC;IACjC;IAEA,OAAO,MAAM;MACX,IAAIA,aAAa,EAAE;QACjBJ,QAAQ,CAACO,SAAS,CAACH,aAAa,CAAC;MACnC;IACF,CAAC;EACH,CAAC,EAAE,CAAClB,SAAS,EAAEJ,UAAU,CAAC,CAAC;EAE3BT,gDAAS,CAAC,MAAM;IACdmC,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC,mBAAmB,EAAE3B,OAAO,CAAC;IACvEwB,QAAQ,CAACI,IAAI,CAACF,SAAS,CAACC,MAAM,CAAC,mBAAmB,EAAE3B,OAAO,CAAC;EAC9D,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,IAAI6B,aAAa,gBAAIzC,0DAAA,CAAAA,uDAAA,QAAE,WAAW,CAAE;EAEpC,IAAI,CAACS,QAAQ,CAACmC,MAAM,EAAE;IACpBH,aAAa,gBAAIzC,0DAAA,CAAAA,uDAAA,QAAE,YAAY,CAAE;EACnC;EAEA,QAAQQ,YAAY;IAClB,KAAK,WAAW;MACd,oBACER,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA;QACE6C,SAAS,EAAEzC,2DAAU,CAAC,iBAAiB,EAAEQ,OAAO,IAAI,wBAAwB,EAAEF,UAAU,IAAI,SAAS,CAAE;QACvGoC,GAAG,EAAEhC;MAAU,gBAEfd,0DAAA;QAAK6C,SAAS,EAAC;MAAwB,gBACrC7C,0DAAA;QACE6C,SAAS,EAAC,uBAAuB;QACjCE,IAAI,EAAC,UAAU;QACfC,SAAS,EAAC,OAAO;QACjBjC,OAAO,EAAEA,OAAQ;QACjBK,OAAO,EAAEA,OAAQ;QACjBJ,SAAS,EAAEA;MAAU,GAEpByB,aACA,CACA,CACF,CAAC,EACL/B,UAAU,iBAAIV,0DAAA,CAACK,mDAAK,MAAE,CACvB,CAAC;IAEP,KAAK,UAAU;IACf,KAAK,aAAa;MAChB,oBACEL,0DAAA;QAAG6C,SAAS,EAAC;MAAY,GAAC,wDAAyD,CAAC;IAExF;MACE,oBACE7C,0DAAA;QAAG6C,SAAS,EAAC;MAAY,GAAC,uBAAwB,CAAC;EAEzD;AACF;;;;;;;;;;;;;;;;;;;;;;;;ACjG0D;AAClB;AAEe;AACA;AACP;AAEF;AAC0B;AACN;AAE3D,SAASU,IAAIA,CAAE;EAAEC;AAAU,CAAC,EAAE;EACnC,MAAM;IAAEhD,YAAY;IAAEiD,MAAM;IAAEhD,QAAQ;IAAEiD,KAAK;IAAEC,WAAW;IAAEC;EAAc,CAAC,GAAGtD,wDAAM,CAAC,CAAC;EAEtF,MAAM,CAACuD,WAAW,EAAEC,cAAc,CAAC,GAAG3D,+CAAQ,CAAC,EAAE,CAAC;EAElD,MAAM4D,UAAU,GAAG7D,6CAAM,CAAC,CAAC;EAE3BmD,kFAAmB,CAACU,UAAU,CAAC9B,OAAO,EAAE4B,WAAW,CAAC;EAEpD5D,gDAAS,CAAC,MAAM;IACd,IAAIQ,QAAQ,CAACmC,MAAM,KAAK,CAAC,EAAE;MACzB,MAAMoB,QAAQ,GAAG5B,QAAQ,CAAC6B,aAAa,CAAC,UAAU,CAAC;MACnDD,QAAQ,CAACE,SAAS,GAAGF,QAAQ,CAACG,YAAY;IAC5C;EACF,CAAC,EAAE,CAAC1D,QAAQ,EAAEmD,aAAa,CAAC,CAAC;EAE7B3D,gDAAS,CAAC,MAAM;IACd,MAAMmE,KAAK,GAAGhC,QAAQ,CAAC6B,aAAa,CAAC,iBAAiB,CAAC;IAEvD,IAAIJ,WAAW,CAACjB,MAAM,KAAK,CAAC,EAAE;MAC5BwB,KAAK,CAAC9B,SAAS,CAAC+B,MAAM,CAAC,uBAAuB,CAAC;IACjD,CAAC,MAAM;MACLD,KAAK,CAAC9B,SAAS,CAACgC,GAAG,CAAC,uBAAuB,CAAC;IAC9C;EACF,CAAC,EAAE,CAACT,WAAW,CAAC,CAAC;EAEjB,MAAMU,QAAQ,GAAGC,CAAC,IAAI;IACpBV,cAAc,CAACU,CAAC,CAACC,MAAM,EAAEC,KAAK,CAAC;EACjC,CAAC;EAED,MAAMC,SAAS,GAAGjB,KAAK,EAAEkB,QAAQ,IAAIlB,KAAK,EAAEmB,SAAS;EAErD,IAAIC,sBAAsB,GAAG,yBAAyB;EAEtD,IAAInB,WAAW,KAAK,QAAQ,EAAE;IAC5BmB,sBAAsB,GAAGH,SAAS,GAAI,GAAEA,SAAU,oBAAmB,GAAG,0BAA0B;EACpG,CAAC,MAAM,IAAIhB,WAAW,EAAE;IACtB,IAAIgB,SAAS,EAAE;MACbG,sBAAsB,GAAI,yBAAwBH,SAAU,EAAC;IAC/D,CAAC,MAAM;MACLG,sBAAsB,GAAG,iCAAiC;IAC5D;EACF;EAEA,IAAItE,YAAY,KAAK,aAAa,EAAE;IAClCsE,sBAAsB,GAAG,oCAAoC;EAC/D;EAEA,MAAMC,WAAW,GAAGP,CAAC,IAAI;IACvBA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAElB,IAAI4C,UAAU,CAAC9B,OAAO,CAACyC,KAAK,CAAC9B,MAAM,KAAK,CAAC,EAAE;MACzC;IACF;IAEA,IAAI;MACFa,MAAM,CAACuB,eAAe,CAAC/B,oDAAY,CAACc,UAAU,CAAC9B,OAAO,CAACyC,KAAK,CAACO,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;IAC9C;IAEApB,cAAc,CAAC,EAAE,CAAC;EACpB,CAAC;EAED,MAAMuB,QAAQ,GAAGA,CAAA,KAAM;IACrB,MAAMC,UAAU,GAAGhC,4EAAgB,CAAC7C,QAAQ,CAAC;IAE7C,MAAM8E,YAAY,GAAGnD,QAAQ,CAAC6B,aAAa,CAAC,sBAAsB,CAAC;IAEnEsB,YAAY,CAACC,YAAY,CAAC,MAAM,EAAG,iCAAgCF,UAAW,EAAC,CAAC;IAChFC,YAAY,CAACE,KAAK,CAAC,CAAC;EACtB,CAAC;EAED,oBACEzF,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACkD,gEAAW,MAAE,CAAC,eAEflD,0DAAA;IAAK6C,SAAS,EAAC;EAAW,gBACxB7C,0DAAA;IAAG6C,SAAS,EAAC;EAAsC,GAAEiC,sBAA0B,CAAC,eAChF9E,0DAAA;IAAG6C,SAAS,EAAC,sCAAsC;IAACE,IAAI,EAAC,GAAG;IAAC,eAAY,cAAc;IAAChC,OAAO,EAAEyC;EAAU,GAAC,UAAW,CACpH,CAAC,eAENxD,0DAAA;IAAK6C,SAAS,EAAC;EAAS,gBACtB7C,0DAAA;IAAK6C,SAAS,EAAC;EAAe,gBAC5B7C,0DAAA;IAAI6C,SAAS,EAAC;EAAmB,GAC9BpC,QAAQ,CAACmC,MAAM,GACZnC,QAAQ,CAACiF,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,kBAAK5F,0DAAA,CAACoD,yDAAO;IAAClC,GAAG,EAAEyE,GAAG,CAACE,EAAG;IAACC,OAAO,EAAEH,GAAI;IAACI,eAAe,EAAEtF,QAAQ,CAACmF,KAAK,GAAG,CAAC;EAAE,CAAE,CAAC,CAAC,GAC1G,IAAI,EACPhC,aAAa,gBAEV5D,0DAAA;IAAI6C,SAAS,EAAC;EAAsC,gBAClD7C,0DAAA;IAAK6C,SAAS,EAAC;EAAoC,GAAE8B,SAAS,EAAC,YAAe,CAAC,eAC/E3E,0DAAA;IAAK6C,SAAS,EAAC;EAAwB,gBACrC7C,0DAAA;IAAKgG,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACC,CAAC,EAAC,KAAK;IAACC,CAAC,EAAC,KAAK;IAACC,OAAO,EAAC;EAAW,gBAC7DpG,0DAAA;IAAQqG,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,GAAG;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eAChEzG,0DAAA;IAAQqG,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC,eACjEzG,0DAAA;IAAQqG,MAAM,EAAC,MAAM;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACC,IAAI,EAAC;EAAc,CAAE,CAC7D,CACF,CACH,CAAC,GAEL,IACF,CACD,CACF,CAAC,eAENzG,0DAAA,CAACmD,gEAAW,qBACVnD,0DAAA;IAAK6C,SAAS,EAAC;EAAkB,gBAC/B7C,0DAAA;IAAM6C,SAAS,EAAC,SAAS;IAAC6D,UAAU;EAAA,gBAClC1G,0DAAA;IAAO6C,SAAS,EAAC,iDAAiD;IAAC8D,OAAO,EAAC;EAAkB,GAAC,cAChF,eAAA3G,0DAAA;IAAM6C,SAAS,EAAC;EAAuB,GAAC,sBAA0B,CACzE,CAAC,eAER7C,0DAAA;IACE8C,GAAG,EAAEiB,UAAW;IAChB6C,IAAI,EAAC,GAAG;IACR,iBAAc,MAAM;IACpB/D,SAAS,EAAC,uDAAuD;IACjEgD,EAAE,EAAC,kBAAkB;IACrBgB,IAAI,EAAC,SAAS;IACdtC,QAAQ,EAAEA,QAAS;IACnBG,KAAK,EAAEb;EAAY,CACpB,CAAC,eAEF7D,0DAAA;IACE8G,IAAI,EAAC,QAAQ;IACbjE,SAAS,EAAC,mDAAmD;IAC7D6B,KAAK,EAAC,MAAM;IACZ,6BAA0B,MAAM;IAChC3D,OAAO,EAAEgE;EAAY,CACtB,CACG,CACH,CAAC,eAEN/E,0DAAA;IAAK6C,SAAS,EAAC;EAAqB,gBAClC7C,0DAAA;IACE+C,IAAI,EAAC,GAAG;IACRF,SAAS,EAAC,0BAA0B;IACpC,eAAY;EAAc,GAC3B,UAEE,CAAC,eACJ7C,0DAAA;IACE+C,IAAI,EAAC,GAAG;IACR8C,EAAE,EAAC,qBAAqB;IACxBhD,SAAS,EAAC,0BAA0B;IACpC,eAAY,cAAc;IAC1BkE,QAAQ,EAAC,kCAAkC;IAC3ChG,OAAO,EAAEsE;EAAS,GACnB,WAEE,CACA,CACM,CACb,CAAC;AAEP;;;;;;;;;;;;;;;;ACvKyB;AAElB,MAAM2B,YAAY,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAC1C,MAAMC,IAAI,GAAGC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC;EAEhC,MAAMI,SAAS,GAAG7C,CAAC,IAAI;IACrBA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAClB,MAAMD,GAAG,GAAGsD,CAAC,CAACC,MAAM,CAAC6C,YAAY,CAAC,UAAU,CAAC;IAC7ClF,QAAQ,CAAC6B,aAAa,CAAE,OAAM/C,GAAI,EAAC,CAAC,CAACqG,KAAK,CAAC,CAAC;EAC9C,CAAC;EAED,IAAIL,IAAI,CAACtE,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,IAAI;EACb;EAEA,oBACE5C,0DAAA;IAAK6C,SAAS,EAAC,oDAAoD;IAAC,eAAY,qBAAqB;IAAC2E,QAAQ,EAAC;EAAI,gBACjHxH,0DAAA;IAAKyH,IAAI,EAAC;EAAO,gBACfzH,0DAAA;IAAI6F,EAAE,EAAC,UAAU;IAAChD,SAAS,EAAC;EAA4B,GAAC,oBAErD,CAAC,eACL7C,0DAAA;IAAK6C,SAAS,EAAC;EAA2B,gBACxC7C,0DAAA;IAAI6C,SAAS,EAAC;EAAsC,GACjDqE,IAAI,CAACxB,GAAG,CAACxE,GAAG,iBACXlB,0DAAA;IAAIkB,GAAG,EAAEA;EAAI,gBACXlB,0DAAA;IAAG+C,IAAI,EAAC,GAAG;IAAC,YAAU7B,GAAI;IAACH,OAAO,EAAEsG;EAAU,GAAEJ,MAAM,CAAC/F,GAAG,CAAK,CAC7D,CACL,CACC,CACD,CACF,CACF,CAAC;AAEV,CAAC;;;;;;;;;;;;;;;;;ACjCwB;AACwB;AAE1C,SAASkC,OAAOA,CAAE;EAAE0C,OAAO;EAAEC;AAAgB,CAAC,EAAE;EACrD,MAAM2B,QAAQ,GAAG5B,OAAO,CAAC6B,SAAS,KAAK,UAAU;EAEjD,MAAMC,0BAA0B,GAAG9B,OAAO,EAAE6B,SAAS,KAAK5B,eAAe,EAAE4B,SAAS;EAEpF,oBACE3H,0DAAA;IAAI6C,SAAS,EAAEzC,2DAAU,CAAC,6BAA6B,EAAEsH,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,gBAC1F1H,0DAAA;IAAK6C,SAAS,EAAC;EAAoC,GAChD+E,0BAA0B,GAAG,IAAI,gBAAG5H,0DAAA,eAAO0H,QAAQ,GAAG5B,OAAO,CAAC+B,QAAQ,GAAG,KAAY,CAAC,eACvF7H,0DAAA;IAAM6C,SAAS,EAAC;EAAuB,GAAC,GAAO,CAC5C,CAAC,eACN7C,0DAAA;IAAG6C,SAAS,EAAEzC,2DAAU,CAAC,eAAe,EAAE,cAAc,EAAEsH,QAAQ,GAAG,UAAU,GAAG,SAAS;EAAE,GAC1F5B,OAAO,CAACgC,IACR,CACD,CAAC;AAET;;;;;;;;;;;;;;;;ACnByB;AAElB,SAAS3E,WAAWA,CAAE;EAAE4E;AAAS,CAAC,EAAE;EACzC,oBACE/H,0DAAA;IAAK6C,SAAS,EAAC;EAAW,GACvBkF,QACE,CAAC;AAEV;;;;;;;;;;;;;;;;;ACRyB;AACqB;AAEvC,SAAS7E,WAAWA,CAAA,EAAI;EAC7B,MAAM;IAAEO,MAAM;IAAE9C;EAAkB,CAAC,GAAGL,wDAAM,CAAC,CAAC;EAE9C,MAAM0H,OAAO,GAAGxD,CAAC,IAAI;IACnBA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAClBR,iBAAiB,CAAC,KAAK,CAAC;EAC1B,CAAC;EAED,IAAIsH,eAAe,gBACjBjI,0DAAA;IAAQ6C,SAAS,EAAC,kBAAkB;IAAC,cAAW,mBAAmB;IAAC9B,OAAO,EAAEiH;EAAQ,gBACnFhI,0DAAA;IAAK,eAAY,MAAM;IAACkI,SAAS,EAAC,OAAO;IAAClC,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC,IAAI;IAACG,OAAO,EAAC;EAAW,gBAClFpG,0DAAA;IAAMmI,CAAC,EAAC,gGAAgG;IAAC1B,IAAI,EAAC;EAAc,CAAE,CAC3H,CACC,CACT;EAED,IAAIhD,MAAM,EAAE;IACVwE,eAAe,gBACbjI,0DAAA;MAAQ6C,SAAS,EAAC,iBAAiB;MAAC,cAAW,sBAAsB;MAAC9B,OAAO,EAAEiH;IAAQ,gBACrFhI,0DAAA;MAAK,eAAY,MAAM;MAACkI,SAAS,EAAC,OAAO;MAAClC,KAAK,EAAC,IAAI;MAACC,MAAM,EAAC,IAAI;MAACG,OAAO,EAAC;IAAW,gBAClFpG,0DAAA;MAAMmI,CAAC,EAAC,iDAAiD;MAAC1B,IAAI,EAAC;IAAc,CAAE,CAC5E,CACC,CACT;EACH;EAEA,oBACEzG,0DAAA;IAAK6C,SAAS,EAAC;EAAW,gBACxB7C,0DAAA;IAAI6F,EAAE,EAAC,iBAAiB;IAAChD,SAAS,EAAC;EAAkC,GAAC,mBAElE,CAAC,EAEJoF,eACE,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;ACtC+D;AACvB;AAES;AACQ;AAClB;AACiB;AACP;AAEH;AACQ;AACgB;AAE/D,SAAS5H,KAAKA,CAAA,EAAI;EACvB,MAAM;IAAEuI,GAAG;IAAEpI,YAAY;IAAEiD,MAAM;IAAEoF,QAAQ;IAAEC,SAAS;IAAEC,WAAW;IAAEpI,iBAAiB;IAAEqI;EAAY,CAAC,GAAG1I,wDAAM,CAAC,CAAC;EAChH,MAAM;IAAE2I,WAAW;IAAEC;EAAc,CAAC,GAAGR,gEAAU,CAACE,GAAG,CAAC;EAEtD,MAAM,CAACO,MAAM,EAAEC,SAAS,CAAC,GAAGjJ,+CAAQ,CAAC0I,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EAEtDF,gFAAkB,CAACQ,MAAM,CAAC;;EAE1B;AACF;AACA;EACElJ,gDAAS,CAAC,MAAM;IACd,MAAMoJ,cAAc,GAAGjH,QAAQ,CAACkH,gBAAgB,CAAC,SAAS,EAAEC,WAAW,CAAC;IAExE,OAAO,MAAM;MACXnH,QAAQ,CAACoH,mBAAmB,CAAC,SAAS,EAAEH,cAAc,CAAC;IACzD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACEpJ,gDAAS,CAAC,MAAM;IACd,MAAMwJ,OAAO,GAAG,MAAAA,CAAA,KAAY;MAC1B,IAAI;QACF,MAAMC,aAAa,GAAG,MAAMT,WAAW,CAACJ,QAAQ,CAAC;QACjDC,SAAS,CAACY,aAAa,CAAC;QAExB,MAAMC,eAAe,GAAG,MAAMT,aAAa,CAACQ,aAAa,EAAEb,QAAQ,CAAC;QACpEG,WAAW,CAACW,eAAe,CAAC;MAC9B,CAAC,CAAC,OAAOzE,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,GAAG,CAAC;QAE5C6D,WAAW,CAAC,CAAC;QACbD,SAAS,CAAC,CAAC;QACXM,SAAS,CAAC,CAAC,CAAC;MACd;IACF,CAAC;IAED,IAAIP,QAAQ,EAAE;MACXpF,MAAM,GAAI2F,SAAS,CAAC,CAAC,CAAC,GAAGK,OAAO,CAAC,CAAC;IACrC;EACF,CAAC,EAAE,CAAChG,MAAM,EAAEoF,QAAQ,CAAC,CAAC;EAEtB,MAAMU,WAAW,GAAGnB,kDAAW,CAAC5D,CAAC,IAAI;IACnC,IAAIA,CAAC,CAACtD,GAAG,KAAK,QAAQ,IAAIsD,CAAC,CAACtD,GAAG,KAAK,KAAK,EAAE;MACzCP,iBAAiB,CAAC,KAAK,CAAC;IAC1B;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiJ,kBAAkB,GAAGC,SAAS,IAAIrF,CAAC,IAAI;IAC3CA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAClBiI,SAAS,CAACS,SAAS,CAAC;EACtB,CAAC;EAED,MAAMC,SAAS,GAAGF,kBAAkB,CAACT,MAAM,GAAG,CAAC,CAAC;EAChD,MAAMY,MAAM,GAAGH,kBAAkB,CAACT,MAAM,GAAG,CAAC,CAAC;EAC7C,MAAM3F,SAAS,GAAGoG,kBAAkB,CAAC,CAAC,CAAC;EACvC,MAAMI,QAAQ,GAAGJ,kBAAkB,CAAC,CAAC,CAAC;EAEtC,MAAMK,gBAAgB,GAAGzF,CAAC,IAAI;IAC5BA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAClBgE,OAAO,CAACC,GAAG,CAAC,oBAAoB,CAAC;EACnC,CAAC;EAED,IAAI8E,eAAe;EAEnB,QAAQf,MAAM;IACZ,KAAK,CAAC;MACJe,eAAe,gBAAGlK,0DAAA,CAACsI,0DAAO;QAACwB,SAAS,EAAEA;MAAU,CAAE,CAAC;MACnD;IACF,KAAK,CAAC;MACJI,eAAe,gBAAGlK,0DAAA,CAACuI,kEAAW;QAACwB,MAAM,EAAEA;MAAO,CAAE,CAAC;MACjD;IACF,KAAK,CAAC;MACJG,eAAe,gBAAGlK,0DAAA,CAACuD,gDAAI;QAAC6F,SAAS,EAAEA,SAAU;QAAC5F,SAAS,EAAEA;MAAU,CAAE,CAAC;MACtE;IACF,KAAK,CAAC;MACJ0G,eAAe,gBAAGlK,0DAAA,CAACyI,0DAAO;QAACuB,QAAQ,EAAEA,QAAS;QAACC,gBAAgB,EAAEA;MAAiB,CAAE,CAAC;MACrF;IACF;MACEC,eAAe,gBAAGlK,0DAAA,CAACsI,0DAAO;QAACwB,SAAS,EAAEA;MAAU,CAAE,CAAC;EACvD;EAEA,IAAItJ,YAAY,KAAK,aAAa,EAAE;IAClC0J,eAAe,gBAAGlK,0DAAA,CAACwI,iEAAW,MAAE,CAAC;EACnC;EAEA,MAAM2B,SAAS,gBACbnK,0DAAA;IAAK6F,EAAE,EAAC,UAAU;IAAChD,SAAS,EAAC,UAAU;IAAC4E,IAAI,EAAC,QAAQ;IAACD,QAAQ,EAAC,IAAI;IAAC,cAAW,MAAM;IAAC,mBAAgB;EAAiB,GACpH0C,eACE,CACN;EAED,oBACElK,0DAAA,CAAAA,uDAAA,qBACGqI,uDAAY,CAAC8B,SAAS,EAAE/H,QAAQ,CAACI,IAAI,CACtC,CAAC;AAEP;;;;;;;;;;;;;;;;;AChHyB;AAC8B;AAEhD,SAASiG,OAAOA,CAAE;EAAEuB,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EACvD,oBACEjK,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACkD,gEAAW,MAAE,CAAC,eACflD,0DAAA;IAAK6C,SAAS,EAAC;EAAS,gBACtB7C,0DAAA;IAAI6C,SAAS,EAAC,iBAAiB;IAAC,aAAU;EAAQ,GAAC,wCAA0C,CAAC,eAC9F7C,0DAAA;IAAK6C,SAAS,EAAC;EAAoB,gBACjC7C,0DAAA;IAAG+C,IAAI,EAAC,GAAG;IAACF,SAAS,EAAC,mCAAmC;IAAC,eAAY,cAAc;IAAC9B,OAAO,EAAEkJ;EAAiB,GAAC,eAAgB,CAAC,eACjIjK,0DAAA;IAAG+C,IAAI,EAAC,GAAG;IAACF,SAAS,EAAC,iCAAiC;IAAC9B,OAAO,EAAEiJ;EAAS,GAAC,iBAAkB,CAC1F,CACF,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AChByB;AAC8B;AAEhD,SAAS1B,OAAOA,CAAE;EAAEwB;AAAU,CAAC,EAAE;EACtC,oBACE9J,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACkD,gEAAW,MAAE,CAAC,eAEflD,0DAAA;IAAK6C,SAAS,EAAC;EAAS,gBACtB7C,0DAAA;IAAI6C,SAAS,EAAC,iBAAiB;IAAC,aAAU;EAAQ,GAAC,8BAAgC,CAAC,eACpF7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,wDAAyD,CAAC,eAEtF7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,6BAA8B,CAAC,eAC3D7C,0DAAA;IAAI6C,SAAS,EAAC;EAA4C,gBACxD7C,0DAAA,aAAI,gDAAkD,CAAC,eACvDA,0DAAA,aAAI,0CAA4C,CAAC,eACjDA,0DAAA,aAAI,uDAAyD,CAC3D,CAAC,eAELA,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAEvB,0BAA0B,eAE5B7C,0DAAA;IAAG6C,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAA+C,GAAC,4BAE5E,CAAC,EAEF,OAAO,eAET/C,0DAAA;IAAG6C,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAAyD,GAAC,oCAEtF,CAAC,KACH,CAAC,eACJ/C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,wBAAsB,eAAA7C,0DAAA;IAAG6C,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAAuC,GAAC,gBAAiB,CAAC,KAAI,CAAC,eAEhJ/C,0DAAA;IAAQ6C,SAAS,EAAC,mCAAmC;IAAC,eAAY,cAAc;IAAC9B,OAAO,EAAE+I;EAAU,GAAC,UAAgB,CAAC,eAEtH9J,0DAAA;IAAI6C,SAAS,EAAC;EAAiB,GAAC,yBAA2B,CAAC,eAE5D7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,mEAAoE,CAAC,eACjG7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,gBACzB7C,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,4BAEN,eAAAA,0DAAA,WAAK,CAAC,sCAEN,eAAAA,0DAAA,WAAK,CAAC,eACNA,0DAAA;IAAG6C,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAA6B,GAAC,kCAAmC,CAC/F,CACA,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;ACtD0D;AAC9B;AAEwB;AACG;AACT;AACQ;AACU;AAEhE,MAAMsH,mBAAmB,GAAG,GAAG;AAExB,SAAS9B,WAAWA,CAAE;EAAEwB;AAAO,CAAC,EAAE;EACvC,MAAM;IAAEnB,GAAG;IAAE0B,aAAa;IAAEvB,WAAW;IAAED;EAAU,CAAC,GAAGxI,wDAAM,CAAC,CAAC;EAC/D,MAAM;IAAEiK,eAAe;IAAEtB;EAAY,CAAC,GAAGP,gEAAU,CAACE,GAAG,CAAC;EAExD,MAAM,CAAC3B,MAAM,EAAEuD,SAAS,CAAC,GAAGrK,+CAAQ,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,CAACsK,cAAc,EAAEC,iBAAiB,CAAC,GAAGvK,+CAAQ,CAAC,CAAC,CAAC;EAEvD,MAAMwK,OAAO,GAAGzK,6CAAM,CAAC,CAAC;EACxB,MAAM0K,WAAW,GAAG1K,6CAAM,CAAC,CAAC;EAE5BD,gDAAS,CAAC,MAAM;IACd,IAAIkH,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACrE,MAAM,EAAE;MAC9BR,QAAQ,CAAC6B,aAAa,CAAC,sBAAsB,CAAC,EAAEsD,KAAK,CAAC,CAAC;IACzD;EACF,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;EAEZ,MAAM4D,gBAAgB,GAAGrG,CAAC,IAAI;IAC5BkG,iBAAiB,CAAClG,CAAC,CAACC,MAAM,CAACC,KAAK,CAAC9B,MAAM,CAAC;EAC1C,CAAC;EAED,MAAMkI,aAAa,GAAG,MAAMtG,CAAC,IAAI;IAC/BA,CAAC,CAACrD,cAAc,CAAC,CAAC;IAElB,MAAM+F,IAAI,GAAG,CAAC,CAAC;IAEf,IAAIyD,OAAO,CAAC1I,OAAO,CAACyC,KAAK,CAAC9B,MAAM,KAAK,CAAC,EAAE;MACtCsE,IAAI,CAACL,IAAI,GAAG,iBAAiB;IAC/B;IAEA,IAAI+D,WAAW,CAAC3I,OAAO,CAACyC,KAAK,CAAC9B,MAAM,KAAK,CAAC,EAAE;MAC1CsE,IAAI,CAAC6D,QAAQ,GAAG,qBAAqB;IACvC;IAEA,IAAIH,WAAW,CAAC3I,OAAO,CAACyC,KAAK,CAAC9B,MAAM,GAAGyH,mBAAmB,EAAE;MAC1DnD,IAAI,CAAC6D,QAAQ,GAAG,8CAA8C;IAChE;IAEA,IAAI5D,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACtE,MAAM,KAAK,CAAC,EAAE;MAClC,IAAI;QACF,MAAMiG,QAAQ,GAAGuB,oCAAO,CAAC,CAAC;QAC1B,MAAMa,UAAU,GAAG,MAAMV,eAAe,CAAC,CAAC;QAC1C,MAAM9G,MAAM,GAAG,MAAMwF,WAAW,CAACJ,QAAQ,CAAC;QAE1CD,GAAG,CAACsC,WAAW,CAAC,CAAC,CAACC,OAAO,CAACR,OAAO,CAAC1I,OAAO,CAACyC,KAAK,CAAC;QAEhD,MAAMjB,MAAM,CAAC2H,SAAS,CAACR,WAAW,CAAC3I,OAAO,CAACyC,KAAK,IAAI,oBAAoB,CAAC;QAEzE4F,aAAa,CAACW,UAAU,CAAC;QACzBlC,WAAW,CAACF,QAAQ,CAAC;QACrBC,SAAS,CAACrF,MAAM,CAAC;MACnB,CAAC,CAAC,OAAOyB,GAAG,EAAE;QACZC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEF,GAAG,CAAC;MAC1C;IACF;IAEAsF,SAAS,CAACtD,IAAI,CAAC;EACjB,CAAC;EAED,MAAMmE,qBAAqB,GAAGhB,mBAAmB,IAAII,cAAc;EACnE,MAAMa,uBAAuB,GAAGjB,mBAAmB,GAAGI,cAAc;EACpE,MAAMc,sBAAsB,GAAGd,cAAc,GAAGJ,mBAAmB;EAEnE,IAAImB,YAAY,GAAI,YAAWF,uBAAwB,uBAAsB;EAE7E,IAAI,CAACD,qBAAqB,EAAE;IAC1BG,YAAY,GAAI,YAAWD,sBAAuB,sBAAqB;EACzE;EAEA,oBACEvL,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACkD,gEAAW,MAAE,CAAC,eAEflD,0DAAA;IAAK6C,SAAS,EAAC;EAAS,gBACtB7C,0DAAA;IAAG+C,IAAI,EAAC,GAAG;IAACF,SAAS,EAAC,8BAA8B;IAAC9B,OAAO,EAAEgJ;EAAO,GAAC,8BAEnE,CAAC,eAEJ/J,0DAAA,CAACgH,yEAAY;IAACC,MAAM,EAAEA;EAAO,CAAE,CAAC,eAEhCjH,0DAAA;IAAI6C,SAAS,EAAC,iBAAiB;IAAC,aAAU;EAAQ,GAAC,wBAE/C,CAAC,eAEL7C,0DAAA,4BACEA,0DAAA;IAAK6C,SAAS,EAAEzC,8DAAU,CAAC,kBAAkB,EAAE6G,MAAM,CAACJ,IAAI,IAAI,yBAAyB;EAAE,gBACvF7G,0DAAA;IAAO6C,SAAS,EAAC,aAAa;IAAC8D,OAAO,EAAC;EAAS,GAAC,WAE1C,CAAC,EACPM,MAAM,CAACJ,IAAI,iBACV7G,0DAAA;IAAG6C,SAAS,EAAC;EAAqB,gBAChC7C,0DAAA;IAAM6C,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,KAAC,EAACoE,MAAM,CAACJ,IAC7D,CACJ,eACD7G,0DAAA;IACE8C,GAAG,EAAE6H,OAAQ;IACb9H,SAAS,EAAEzC,8DAAU,CAAC,aAAa,EAAE6G,MAAM,CAACJ,IAAI,IAAI,oBAAoB,CAAE;IAC1EhB,EAAE,EAAC,SAAS;IACZgB,IAAI,EAAC,MAAM;IACXC,IAAI,EAAC,MAAM;IACX,eAAY;EAAwB,CACrC,CACE,CAAC,eAEN9G,0DAAA;IAAK6C,SAAS,EAAC,uBAAuB;IAAC,eAAY,uBAAuB;IAAC,kBAAe;EAAK,gBAC7F7C,0DAAA;IAAK6C,SAAS,EAAEzC,8DAAU,CAAC,kBAAkB,EAAE6G,MAAM,CAAC8D,QAAQ,IAAI,yBAAyB;EAAE,gBAC3F/K,0DAAA;IAAO6C,SAAS,EAAC,aAAa;IAAC8D,OAAO,EAAC;EAAa,GAAC,eAE9C,CAAC,EACPM,MAAM,CAAC8D,QAAQ,iBACd/K,0DAAA;IAAG6C,SAAS,EAAC;EAAqB,gBAChC7C,0DAAA;IAAM6C,SAAS,EAAC;EAAuB,GAAC,QAAY,CAAC,EACpDoE,MAAM,CAAC8D,QACP,CACJ,eACD/K,0DAAA;IACE8C,GAAG,EAAE8H,WAAY;IACjB/E,EAAE,EAAC,aAAa;IAChBgB,IAAI,EAAC,UAAU;IACfD,IAAI,EAAC,GAAG;IACR,oBAAiB,kBAAkB;IACnCrC,QAAQ,EAAEsG,gBAAiB;IAC3BhI,SAAS,EAAEzC,8DAAU,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,CAACiL,qBAAqB,IAAIpE,MAAM,CAAC8D,QAAQ,GAAG,uBAAuB,GAAG,EAAE,CAAE;IAC9I,eAAY;EAA4B,CACzC,CAAC,eACF/K,0DAAA;IAAK6F,EAAE,EAAC,kBAAkB;IAAChD,SAAS,EAAC,2CAA2C;IAAC4I,KAAK,EAAE;MAAEC,KAAK,EAAG,GAAE,CAACL,qBAAqB,GAAG,SAAS,GAAG,EAAG;IAAE,CAAE;IAAC,eAAY;EAAM,GAChKG,YACE,CAAC,eACNxL,0DAAA;IAAK6C,SAAS,EAAC,wDAAwD;IAAC,aAAU;EAAQ,GACvF2I,YACE,CACF,CACF,CAAC,eAENxL,0DAAA;IACE6C,SAAS,EAAC,wDAAwD;IAClE,eAAY,cAAc;IAC1B9B,OAAO,EAAE+J;EAAc,GACxB,cAEO,CACJ,CACH,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;AC3JyB;AAC8B;AAEhD,SAAStC,WAAWA,CAAA,EAAI;EAC7B,oBACExI,0DAAA,CAAAA,uDAAA,qBACEA,0DAAA,CAACkD,gEAAW,MAAE,CAAC,eAEflD,0DAAA;IAAK6C,SAAS,EAAC;EAAS,gBACtB7C,0DAAA;IAAI6F,EAAE,EAAC,aAAa;IAAChD,SAAS,EAAC;EAAiB,GAAC,oCAAsC,CAAC,eACxF7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,qCAAsC,CAAC,eACnE7C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,gBACzB7C,0DAAA,iBAAQ,oBAA0B,CAAC,eACnCA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,4BACN,eAAAA,0DAAA,WAAK,CAAC,sCACN,eAAAA,0DAAA,WAAK,CAAC,eAAAA,0DAAA;IAAG6C,SAAS,EAAC,YAAY;IAACE,IAAI,EAAC;EAA6B,GAAC,kCAAmC,CACrG,CAAC,eACJ/C,0DAAA;IAAG6C,SAAS,EAAC;EAAc,GAAC,oEAAqE,CAC9F,CACL,CAAC;AAEP;;;;;;;;;;;;;;;;;ACtBwD;AAExD,MAAM8I,aAAa,GAAGC,IAAI,IAAI;EAC5B,KAAK,MAAMC,IAAI,IAAIzJ,QAAQ,CAACI,IAAI,CAACuF,QAAQ,EAAE;IACzC,IAAI8D,IAAI,CAAChG,EAAE,KAAK,UAAU,EAAE;MACzB+F,IAAI,GAAIC,IAAI,CAACrG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,GAAGqG,IAAI,CAACC,eAAe,CAAC,aAAa,CAAC;IACzF;EACF;AACF,CAAC;AAEM,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,SAAS,GAAG,CAChB,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,2CAA2C,CAC5C;EAED,MAAMC,QAAQ,GAAG7J,QAAQ,CAACI,IAAI,CAAC0J,gBAAgB,CAACF,SAAS,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;EACpE,OAAOC,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAACK,MAAM,CAAC9H,CAAC,IAAI,CAACA,CAAC,CAAC+H,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC/H,CAAC,CAAC+H,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvG,CAAC;AAED,MAAM5D,kBAAkB,GAAGQ,MAAM,IAAI;EACnC,MAAM,CAACqD,aAAa,EAAEC,gBAAgB,CAAC,GAAGtM,+CAAQ,CAAC,EAAE,CAAC;EAEtD,MAAMa,SAAS,GAAGoH,kDAAW,CAAC5D,CAAC,IAAI;IACjC,MAAMkI,mBAAmB,GAAGtK,QAAQ,CAAC6B,aAAa,CAAC,WAAW,CAAC;IAE/D,IAAIO,CAAC,CAACtD,GAAG,KAAK,KAAK,EAAE;MACnB,IAAIwL,mBAAmB,IAAI,CAACtK,QAAQ,CAACuK,aAAa,CAACJ,OAAO,CAAC,WAAW,CAAC,EAAE;QACvEG,mBAAmB,CAACnF,KAAK,CAAC,CAAC;MAC7B;MAEA,IAAI/C,CAAC,CAACoI,QAAQ,EAAE;QACd,IAAIxK,QAAQ,CAACuK,aAAa,KAAKH,aAAa,CAAC,CAAC,CAAC,EAAE;UAC/CA,aAAa,CAACA,aAAa,CAAC5J,MAAM,GAAG,CAAC,CAAC,CAAC2E,KAAK,CAAC,CAAC;UAC/C/C,CAAC,CAACrD,cAAc,CAAC,CAAC;QACpB,CAAC,MAAM,IAAIiB,QAAQ,CAACuK,aAAa,KAAKvK,QAAQ,CAAC6B,aAAa,CAAC,WAAW,CAAC,EAAE;UACzEuI,aAAa,CAACA,aAAa,CAAC5J,MAAM,GAAG,CAAC,CAAC,EAAE2E,KAAK,CAAC,CAAC;UAChD/C,CAAC,CAACrD,cAAc,CAAC,CAAC;QACpB;MACF,CAAC,MAAM,IAAIiB,QAAQ,CAACuK,aAAa,KAAKH,aAAa,CAACA,aAAa,CAAC5J,MAAM,GAAG,CAAC,CAAC,EAAE;QAC7E4J,aAAa,CAAC,CAAC,CAAC,CAACjF,KAAK,CAAC,CAAC;QACxB/C,CAAC,CAACrD,cAAc,CAAC,CAAC;MACpB;IACF;EACF,CAAC,EAAE,CAACqL,aAAa,CAAC,CAAC;EAEnBvM,gDAAS,CAAC,MAAM;IACdwM,gBAAgB,CAACV,oBAAoB,CAAC,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC5C,MAAM,CAAC,CAAC;EAEZlJ,gDAAS,CAAC,MAAM;IACd0L,aAAa,CAAC,IAAI,CAAC;IAEnB,MAAMkB,YAAY,GAAGzK,QAAQ,CAAC6B,aAAa,CAAC,WAAW,CAAC;IACxD4I,YAAY,CAACtF,KAAK,CAAC,CAAC;IAEpBnF,QAAQ,CAACkH,gBAAgB,CAAC,SAAS,EAAEtI,SAAS,CAAC;IAE/C,OAAO,MAAM;MACX2K,aAAa,CAAC,CAAC;MACfvJ,QAAQ,CAACI,IAAI,CAACyB,aAAa,CAAC,wBAAwB,CAAC,EAAEsD,KAAK,CAAC,CAAC;MAC9DnF,QAAQ,CAACoH,mBAAmB,CAAC,SAAS,EAAExI,SAAS,CAAC;IACpD,CAAC;EACH,CAAC,EAAE,CAACwL,aAAa,CAAC,CAAC;AACrB,CAAC;;;;;;;;;;;;;;;;;ACpEgC;AAE1B,MAAMnJ,mBAAmB,GAAGA,CAACyJ,WAAW,EAAEpI,KAAK,KAAK;EACzDzE,gDAAS,CAAC,MAAM;IACd,IAAI6M,WAAW,EAAE;MACfA,WAAW,CAACrB,KAAK,CAACxF,MAAM,GAAG,KAAK;MAEhC,MAAM9B,YAAY,GAAG2I,WAAW,CAAC3I,YAAY;MAE7C2I,WAAW,CAACrB,KAAK,CAACxF,MAAM,GAAI,GAAE9B,YAAa,IAAG;IAChD;EACF,CAAC,EAAE,CAAC2I,WAAW,EAAEpI,KAAK,CAAC,CAAC;AAC1B,CAAC;;;;;;;;;;;;;;ACZM,eAAeqI,iBAAiBA,CAAEC,QAAQ,EAAE;EACjD,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACF,QAAQ,CAAC;EACtC,MAAMG,IAAI,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;EAElC,OAAO;IACL5M,YAAY,EAAE2M,IAAI,CAAC3M,YAAY,IAAI;EACrC,CAAC;AACH;;;;;;;;;;;;;;ACPO,MAAMJ,UAAU,GAAGA,CAAC,GAAGiN,OAAO,KAAKA,OAAO,CAACf,MAAM,CAACgB,SAAS,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,CAAC,CAACnB,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;ACA/F;AACY;AACR;AAEzB,MAAMqB,gBAAgB,GAAG1H,OAAO,IAAI;EACzC,OAAO;IACLD,EAAE,EAAEC,OAAO,CAACD,EAAE;IACdiC,IAAI,EAAE7E,oDAAY,CAAC6C,OAAO,CAAC2H,cAAc,EAAE3F,IAAI,CAAC;IAChD4F,SAAS,EAAE,IAAIC,IAAI,CAAC7H,OAAO,CAAC4H,SAAS,CAAC;IACtCE,IAAI,EAAE9H,OAAO,CAAC+H,qBAAqB,EAAEC,QAAQ,EAAE7I,IAAI,CAAC,CAAC,IAAI,IAAI;IAC7D4C,QAAQ,EAAE/B,OAAO,CAACiI,UAAU,EAAElJ,SAAS,IAAI,IAAI;IAC/C8C,SAAS,EAAE7B,OAAO,CAAC6B;EACrB,CAAC;AACH,CAAC;AAEM,MAAMqG,iBAAiB,GAAGvN,QAAQ,IAAIA,QAAQ,CAACiF,GAAG,CAACI,OAAO,IAAI0H,gBAAgB,CAAC1H,OAAO,CAAC,CAAC;AAExF,MAAMxC,gBAAgB,GAAG7C,QAAQ,IAAI;EAC1C,MAAMwN,GAAG,GAAGV,2CAAQ,CAACW,KAAK,CAAC,CAAC;EAC5BD,GAAG,CAACE,OAAO,CAAC,eAAe,CAAC;EAE5B,IAAIC,MAAM,GAAI,iCAAgCH,GAAG,CAACI,QAAQ,CAAC,0BAA0B,CAAE,UAASjE,oCAAO,CAAC,CAAC,CAACkE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,OAAM;EAE9H,KAAK,MAAMxI,OAAO,IAAIrF,QAAQ,EAAE;IAC9B,MAAM;MAAEqH,IAAI;MAAEH,SAAS;MAAEiG,IAAI;MAAE/F,QAAQ;MAAE6F;IAAU,CAAC,GAAG5H,OAAO;IAE9D,MAAMyI,MAAM,GAAG5G,SAAS,KAAK,SAAS,GAAGiG,IAAI,GAAI,GAAE/F,QAAS,sBAAqB;IACjF,MAAM2G,IAAI,GAAGjB,2CAAQ,CAACkB,UAAU,CAAC,IAAId,IAAI,CAACD,SAAS,CAAC,CAAC,CAACS,OAAO,CAAC,eAAe,CAAC,CAACE,QAAQ,CAAC,0BAA0B,CAAC;IAEnHD,MAAM,IAAK,IAAGI,IAAK,KAAID,MAAO,OAAMzG,IAAK,MAAK;EAChD;EAEAsG,MAAM,GAAGA,MAAM,CAACM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;EAEhE,OAAOC,kBAAkB,CAACP,MAAM,CAAC;AACnC,CAAC;;;;;;;;;;;;;;;;;;;;ACnC2E;AACZ;AAEoC;AAE7F,MAAMgB,UAAU,gBAAGR,oDAAa,CAACI,qDAAY,CAAC;AAE9C,MAAMK,WAAW,GAAGA,CAAC;EAAEzG,GAAG;EAAEpI,YAAY;EAAEuH;AAAS,CAAC,KAAK;EAC9D,MAAM,CAACuH,KAAK,EAAEC,QAAQ,CAAC,GAAGV,iDAAU,CAACI,gDAAO,EAAED,qDAAY,CAAC;;EAE3D;AACF;AACA;EACE,MAAMQ,mBAAmB,GAAGhL,CAAC,IAAI;IAC/B+K,QAAQ,CAAC;MAAEzI,IAAI,EAAE,WAAW;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAACwC;IAAc,CAAC,CAAC;IACrEJ,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAACyC,OAAO,CAACC;IAAO,CAAC,CAAC;EAC/E,CAAC;EAED,MAAMC,sBAAsB,GAAGtL,CAAC,IAAI;IAClC+K,QAAQ,CAAC;MAAEzI,IAAI,EAAE,WAAW;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAACwC;IAAc,CAAC,CAAC;IACrEJ,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAAC4C,IAAI,CAACF;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMG,oBAAoB,GAAGA,CAAA,KAAM;IACjCT,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAE;IAAK,CAAC,CAAC;EACvD,CAAC;EAED,MAAMQ,kBAAkB,GAAGA,CAAA,KAAM;IAC/BV,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAE;IAAM,CAAC,CAAC;EACxD,CAAC;EAED,MAAMS,gBAAgB,GAAG1L,CAAC,IAAI;IAC5B+K,QAAQ,CAAC;MAAEzI,IAAI,EAAE,aAAa;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAACrH;IAAQ,CAAC,CAAC;IACjEyJ,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAAC4C,IAAI,CAACF;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED,MAAMM,sBAAsB,GAAG3L,CAAC,IAAI;IAClC+K,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAEjL,CAAC,CAACkL,MAAM,CAACvC,IAAI,CAAC4C,IAAI,CAACF;IAAO,CAAC,CAAC;EAC5E,CAAC;EAED5P,gDAAS,CAAC,MAAM;IACd2I,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAACsB,kBAAkB,EAAEb,mBAAmB,CAAC;IAClE5G,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAACuB,eAAe,EAAEJ,gBAAgB,CAAC;IAC5DtH,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAACwB,oBAAoB,EAAEP,oBAAoB,CAAC;IACrEpH,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAACyB,kBAAkB,EAAEP,kBAAkB,CAAC;IACjErH,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAAC0B,sBAAsB,EAAEX,sBAAsB,CAAC;IACzElH,GAAG,CAACwH,WAAW,CAACrB,2EAAS,CAAC2B,sBAAsB,EAAEP,sBAAsB,CAAC;EAC3E,CAAC,EAAE,CAACvH,GAAG,CAAC,CAAC;;EAET;AACF;AACA;EACE3I,gDAAS,CAAC,MAAM;IACdsP,QAAQ,CAAC;MAAEzI,IAAI,EAAE,kBAAkB;MAAE2I,OAAO,EAAEjP;IAAa,CAAC,CAAC;IAE7D8J,aAAa,CAACzI,MAAM,CAAC8O,YAAY,CAACC,OAAO,CAAC1B,gEAAuB,CAAC,CAAC;IACnEnG,WAAW,CAAClH,MAAM,CAAC8O,YAAY,CAACC,OAAO,CAACzB,8DAAqB,CAAC,CAAC;IAE/D,IAAItN,MAAM,CAACgP,QAAQ,CAACC,IAAI,KAAK,UAAU,EAAE;MACvCnQ,iBAAiB,CAAC,IAAI,CAAC;IACzB;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE,MAAMA,iBAAiB,GAAG8O,OAAO,IAAI;IACnC,IAAI,CAACA,OAAO,EAAE;MACZ5N,MAAM,CAACgP,QAAQ,CAACC,IAAI,GAAG,EAAE;IAC3B;IAEAvB,QAAQ,CAAC;MAAEzI,IAAI,EAAE,qBAAqB;MAAE2I;IAAQ,CAAC,CAAC;EACpD,CAAC;EAED,MAAMnF,aAAa,GAAGW,UAAU,IAAI;IAClCsE,QAAQ,CAAC;MAAEzI,IAAI,EAAE,iBAAiB;MAAE2I,OAAO,EAAExE;IAAW,CAAC,CAAC;EAC5D,CAAC;EAED,MAAMlC,WAAW,GAAGF,QAAQ,IAAI;IAC9B0G,QAAQ,CAAC;MAAEzI,IAAI,EAAE,eAAe;MAAE2I,OAAO,EAAE5G;IAAS,CAAC,CAAC;EACxD,CAAC;EAED,MAAMC,SAAS,GAAGrF,MAAM,IAAI;IAC1B8L,QAAQ,CAAC;MAAEzI,IAAI,EAAE,YAAY;MAAE2I,OAAO,EAAEhM;IAAO,CAAC,CAAC;EACnD,CAAC;EAED,MAAMuF,WAAW,GAAGvI,QAAQ,IAAI;IAC9B8O,QAAQ,CAAC;MAAEzI,IAAI,EAAE,cAAc;MAAE2I,OAAO,EAAEhP;IAAS,CAAC,CAAC;EACvD,CAAC;;EAED;AACF;AACA;EACE,MAAMsQ,KAAK,GAAGjC,8CAAO,CAAC,OAAO;IAC3B,GAAGQ,KAAK;IACR1G,GAAG;IACH0B,aAAa;IACbvB,WAAW;IACXD,SAAS;IACTE,WAAW;IACXrI,iBAAiB;IACjB6O,mBAAmB;IACnBM,sBAAsB;IACtBE,oBAAoB;IACpBC,kBAAkB;IAClBC,gBAAgB;IAChBC;EACF,CAAC,CAAC,CAAC;EAEH,oBACEnQ,0DAAA,CAACoP,UAAU,CAAC4B,QAAQ;IAACtM,KAAK,EAAEqM;EAAM,GAC/BhJ,QACkB,CAAC;AAE1B,CAAC;;;;;;;;;;;;;;;;AClH8E;AACL;AAE1E,MAAMuC,aAAa,GAAGA,CAACgF,KAAK,EAAEG,OAAO,KAAK;EACxC,IAAIA,OAAO,EAAE;IACX5N,MAAM,CAAC8O,YAAY,CAACM,OAAO,CAAC/B,6DAAuB,EAAEO,OAAO,CAAC;EAC/D,CAAC,MAAM;IACL5N,MAAM,CAAC8O,YAAY,CAACO,UAAU,CAAChC,6DAAuB,CAAC;EACzD;EAEA,OAAO;IACL,GAAGI,KAAK;IACRrE,UAAU,EAAEwE;EACd,CAAC;AACH,CAAC;AAED,MAAM1G,WAAW,GAAGA,CAACuG,KAAK,EAAEG,OAAO,KAAK;EACtC,IAAIA,OAAO,EAAE;IACX5N,MAAM,CAAC8O,YAAY,CAACM,OAAO,CAAC9B,2DAAqB,EAAEM,OAAO,CAAC;EAC7D,CAAC,MAAM;IACL5N,MAAM,CAAC8O,YAAY,CAACO,UAAU,CAAC/B,2DAAqB,CAAC;EACvD;EAEA,OAAO;IACL,GAAGG,KAAK;IACRzG,QAAQ,EAAE4G;EACZ,CAAC;AACH,CAAC;AAED,MAAM9O,iBAAiB,GAAGA,CAAC2O,KAAK,EAAEG,OAAO,KAAK;EAC5C,OAAO;IACL,GAAGH,KAAK;IACR5O,UAAU,EAAE+O;EACd,CAAC;AACH,CAAC;AAED,MAAM0B,eAAe,GAAGA,CAAC7B,KAAK,EAAEG,OAAO,KAAK;EAC1C,OAAO;IACL,GAAGH,KAAK;IACR9O,YAAY,EAAEiP;EAChB,CAAC;AACH,CAAC;AAED,MAAM3G,SAAS,GAAGA,CAACwG,KAAK,EAAEG,OAAO,KAAK;EACpC,OAAO;IACL,GAAGH,KAAK;IACR7L,MAAM,EAAEgM;EACV,CAAC;AACH,CAAC;AAED,MAAM2B,UAAU,GAAGA,CAAC9B,KAAK,EAAEG,OAAO,KAAK;EACrC,OAAO;IACL,GAAGH,KAAK;IACR7O,QAAQ,EAAE,CAAC,GAAG6O,KAAK,CAAC7O,QAAQ,EAAE+M,yEAAgB,CAACiC,OAAO,CAAC;EACzD,CAAC;AACH,CAAC;AAED,MAAMzG,WAAW,GAAGA,CAACsG,KAAK,EAAEG,OAAO,KAAK;EACtC,OAAO;IACL,GAAGH,KAAK;IACR7O,QAAQ,EAAEuN,0EAAiB,CAACyB,OAAO,CAAC,CAAC4B,OAAO,CAAC;EAC/C,CAAC;AACH,CAAC;AAED,MAAMC,QAAQ,GAAGA,CAAChC,KAAK,EAAEG,OAAO,KAAK;EACnC,OAAO;IACL,GAAGH,KAAK;IACR5L,KAAK,EAAE+L;EACT,CAAC;AACH,CAAC;AAED,MAAM8B,gBAAgB,GAAGA,CAACjC,KAAK,EAAEG,OAAO,KAAK;EAC3C,OAAO;IACL,GAAGH,KAAK;IACR1L,aAAa,EAAE6L;EACjB,CAAC;AACH,CAAC;AAED,MAAM+B,cAAc,GAAGA,CAAClC,KAAK,EAAEG,OAAO,KAAK;EACzC,OAAO;IACL,GAAGH,KAAK;IACR3L,WAAW,EAAE8L;EACf,CAAC;AACH,CAAC;AAEM,MAAMgC,UAAU,GAAG;EACxBC,mBAAmB,EAAE/Q,iBAAiB;EACtCgR,gBAAgB,EAAER,eAAe;EACjCS,eAAe,EAAEtH,aAAa;EAC9BuH,aAAa,EAAE9I,WAAW;EAC1B+I,UAAU,EAAEhJ,SAAS;EACrBiJ,WAAW,EAAEX,UAAU;EACvBY,YAAY,EAAEhJ,WAAW;EACzBiJ,SAAS,EAAEX,QAAQ;EACnBY,gBAAgB,EAAEX,gBAAgB;EAClCY,gBAAgB,EAAEX;AACpB,CAAC;;;;;;;;;;;;;;;;;;AChGyC;AAEnC,MAAMtC,uBAAuB,GAAG,qBAAqB;AACrD,MAAMC,qBAAqB,GAAG,mBAAmB;AAEjD,MAAMH,YAAY,GAAG;EAC1BxO,YAAY,EAAE,IAAI;EAClByK,UAAU,EAAE,IAAI;EAChBpC,QAAQ,EAAE,IAAI;EACdpF,MAAM,EAAE,IAAI;EACZhD,QAAQ,EAAE,EAAE;EACZiD,KAAK,EAAE,IAAI;EACXC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE,KAAK;EACpBlD,UAAU,EAAE;AACd,CAAC;AAEM,MAAMuO,OAAO,GAAGA,CAACK,KAAK,EAAE8C,MAAM,KAAK;EACxC,MAAM;IAAEtL,IAAI;IAAE2I;EAAQ,CAAC,GAAG2C,MAAM;EAEhC,MAAMC,EAAE,GAAGZ,oDAAU,CAAC3K,IAAI,CAAC;EAE3B,IAAIuL,EAAE,EAAE;IACN,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAI,CAAC,SAAI,EAAEjD,KAAK,EAAEG,OAAO,CAAC;IACpD,OAAO6C,cAAc,CAAC,CAAC;EACzB;EAEA,OAAOhD,KAAK;AACd,CAAC;;;;;;;;;;;;;;;;;AC5BiC;AAEY;AAEvC,MAAMhP,MAAM,GAAGA,CAAA,KAAMkS,iDAAU,CAACpD,wDAAU,CAAC;;;;;;;;;;;;;;ACJ3C,MAAM1G,UAAU,GAAGE,GAAG,IAAI;EAC/B,MAAM6J,OAAO,GAAG,MAAAA,CAAA,KAAY7J,GAAG,CAAC8J,SAAS,CAAC,CAAC;EAE3C,MAAMnI,eAAe,GAAG,MAAAA,CAAA,KAAY;IAClC,MAAM0C,QAAQ,GAAG,MAAMwF,OAAO,CAAC,CAAC;IAChC,OAAOxF,QAAQ,EAAE0F,gBAAgB,CAACC,oBAAoB;EACxD,CAAC;EAED,MAAM3J,WAAW,GAAG,MAAMJ,QAAQ,IAAI;IACpC,MAAM4J,OAAO,CAAC,CAAC;IACf,OAAO7J,GAAG,CAACiK,SAAS,CAAChK,QAAQ,CAAC;EAChC,CAAC;EAED,MAAMK,aAAa,GAAG,MAAAA,CAAOzF,MAAM,EAAEoF,QAAQ,KAAK;IAChD,MAAM4J,OAAO,CAAC,CAAC;IAEf,MAAMK,SAAS,GAAG,MAAMrP,MAAM,CAACgG,OAAO,CAACZ,QAAQ,CAAC;IAEhD,MAAMkK,WAAW,GAAG,EAAE;IACtB,IAAIpJ,eAAe,GAAGmJ,SAAS,CAACrS,QAAQ;IAExC,OAAOkJ,eAAe,CAAC/G,MAAM,EAAE;MAC7B+G,eAAe,CAACjE,GAAG,CAACC,GAAG,IAAIoN,WAAW,CAACC,IAAI,CAACrN,GAAG,CAAC,CAAC;MAEjD,IAAI;QACF,MAAMsH,QAAQ,GAAG,MAAMxJ,MAAM,CAACwP,gBAAgB,CAAC,CAAC;QAChDtJ,eAAe,GAAGsD,QAAQ,CAACE,IAAI,CAAC1M,QAAQ;MAC1C,CAAC,CAAC,OAAOyE,GAAG,EAAE;QACZyE,eAAe,GAAG,EAAE;MACtB;IACF;IAEA,OAAOoJ,WAAW;EACpB,CAAC;EAED,OAAO;IAAEN,OAAO;IAAElI,eAAe;IAAEtB,WAAW;IAAEC;EAAc,CAAC;AACjE,CAAC;;;;;;;;;;ACpCD;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACNyB;AACoB;AACiB;AACW;AACb;AACP;AACO;AAErD,eAAekK,IAAIA,CAAEC,SAAS,EAAEC,OAAO,EAAE;EAC9C,MAAM1K,GAAG,GAAG,IAAIuK,yEAAO,CAAC;IACtBI,OAAO,EAAED,OAAO,CAACC,OAAO;IACxBC,SAAS,EAAEF,OAAO,CAACE,SAAS;IAC5BvI,UAAU,EAAEpJ,MAAM,CAAC8O,YAAY,CAACC,OAAO,CAAC1B,sEAAuB,CAAC,IAAI,EAAE;IACtEuE,WAAW,EAAEH,OAAO,CAACG;EACvB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAGR,4DAAU,CAACG,SAAS,CAAC;EAClC,IAAI7S,YAAY;EAChB,IAAI;IACF,MAAMmT,MAAM,GAAG,MAAM5G,0EAAiB,CAACuG,OAAO,CAACM,oBAAoB,CAAC;IACpEpT,YAAY,GAAGmT,MAAM,CAACnT,YAAY;EACpC,CAAC,CAAC,OAAOgE,CAAC,EAAE;IACVhE,YAAY,GAAG,aAAa;EAC9B;EACAkT,IAAI,CAACG,MAAM,eACT7T,0DAAA,CAACqP,+DAAW;IAACzG,GAAG,EAAEA,GAAI;IAACpI,YAAY,EAAEA;EAAa,gBAChDR,0DAAA,CAACO,mFAAY;IAACC,YAAY,EAAEA;EAAa,CAAE,CAChC,CACf,CAAC;AACH,C","sources":["webpack://@defra/flood-webchat/./src/client/components/availability/availability.jsx","webpack://@defra/flood-webchat/./src/client/components/chat/chat.jsx","webpack://@defra/flood-webchat/./src/client/components/errorSummary/error-summary.jsx","webpack://@defra/flood-webchat/./src/client/components/message/message.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-footer.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-header.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/end-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/pre-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/request-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/unavailable.jsx","webpack://@defra/flood-webchat/./src/client/hooks/useFocusedElements.js","webpack://@defra/flood-webchat/./src/client/hooks/useTextareaAutosize.js","webpack://@defra/flood-webchat/./src/client/lib/check-availability.js","webpack://@defra/flood-webchat/./src/client/lib/classnames.js","webpack://@defra/flood-webchat/./src/client/lib/transform-messages.js","webpack://@defra/flood-webchat/./src/client/store/AppProvider.jsx","webpack://@defra/flood-webchat/./src/client/store/actions-map.js","webpack://@defra/flood-webchat/./src/client/store/reducer.js","webpack://@defra/flood-webchat/./src/client/store/useApp.js","webpack://@defra/flood-webchat/./src/client/store/useChatSdk.js","webpack://@defra/flood-webchat/external commonjs \"@nice-devone/nice-cxone-chat-web-sdk\"","webpack://@defra/flood-webchat/external commonjs \"luxon\"","webpack://@defra/flood-webchat/external commonjs \"react\"","webpack://@defra/flood-webchat/external commonjs \"react-dom\"","webpack://@defra/flood-webchat/external commonjs \"react-dom/client\"","webpack://@defra/flood-webchat/external commonjs \"sanitize-html\"","webpack://@defra/flood-webchat/external commonjs \"uuid\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/runtime/compat get default export","webpack://@defra/flood-webchat/webpack/runtime/define property getters","webpack://@defra/flood-webchat/webpack/runtime/hasOwnProperty shorthand","webpack://@defra/flood-webchat/webpack/runtime/make namespace object","webpack://@defra/flood-webchat/./src/client/index.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\n\nimport { classnames } from '../../lib/classnames'\nimport { Panel } from '../panel/panel.jsx'\nimport { useApp } from '../../store/useApp'\n\nexport function Availability () {\n const { availability, messages, isChatOpen, setChatVisibility } = useApp()\n\n const [isFixed, setIsFixed] = useState(false)\n const buttonRef = useRef()\n\n const onClick = () => {\n setChatVisibility(!isChatOpen)\n }\n\n const onKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault()\n }\n }\n\n const onKeyUp = event => {\n if (event.key === ' ') {\n setChatVisibility(!isChatOpen)\n }\n }\n\n const intersectionCallback = entries => {\n const [entry] = entries\n const isBelowFold = !entry.isIntersecting && entry.boundingClientRect.top > 0\n setIsFixed(!isChatOpen && isBelowFold)\n }\n\n useEffect(() => {\n const observer = new window.IntersectionObserver(intersectionCallback, {\n rootMargin: '35px'\n })\n\n const parentElement = buttonRef.current?.parentElement\n\n if (parentElement) {\n observer.observe(parentElement)\n }\n\n return () => {\n if (parentElement) {\n observer.unobserve(parentElement)\n }\n }\n }, [buttonRef, isChatOpen])\n\n useEffect(() => {\n document.documentElement.classList.toggle('wc-scroll-padding', isFixed)\n document.body.classList.toggle('wc-scroll-padding', isFixed)\n }, [isFixed])\n\n let TextComponent = (<>Show Chat</>)\n\n if (!messages.length) {\n TextComponent = (<>Start Chat</>)\n }\n\n switch (availability) {\n case 'AVAILABLE':\n return (\n <>\n <div\n className={classnames('wc-availability', isFixed && 'wc-availability--fixed', isChatOpen && 'wc-open')}\n ref={buttonRef}\n >\n <div className='wc-availability__inner'>\n <a\n className='wc-availability__link'\n href='#webchat'\n draggable='false'\n onClick={onClick}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n >\n {TextComponent}\n </a>\n </div>\n </div>\n {isChatOpen && <Panel />}\n </>\n )\n case 'EXISTING':\n case 'UNAVAILABLE':\n return (\n <p className='govuk-body'>When it is available, a 'start chat' link will appear.</p>\n )\n default:\n return (\n <p className='govuk-body'>Checking availability</p>\n )\n }\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport sanitizeHtml from 'sanitize-html'\n\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { PanelFooter } from '../panel/panel-footer.jsx'\nimport { Message } from '../message/message.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useTextareaAutosize } from '../../hooks/useTextareaAutosize.js'\nimport { formatTranscript } from '../../lib/transform-messages.js'\n\nexport function Chat ({ onEndChat }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n\n const messageRef = useRef()\n\n useTextareaAutosize(messageRef.current, userMessage)\n\n useEffect(() => {\n if (messages.length !== 0) {\n const chatBody = document.querySelector('.wc-body')\n chatBody.scrollTop = chatBody.scrollHeight\n }\n }, [messages, isAgentTyping])\n\n useEffect(() => {\n const label = document.querySelector('.wc-form__label')\n\n if (userMessage.length === 0) {\n label.classList.remove('govuk-visually-hidden')\n } else {\n label.classList.add('govuk-visually-hidden')\n }\n }, [userMessage])\n\n const onChange = e => {\n setUserMessage(e.target?.value)\n }\n\n const agentName = agent?.nickname || agent?.firstName\n\n let connectionHeadlineText = 'Connecting to Floodline'\n\n if (agentStatus === 'closed') {\n connectionHeadlineText = agentName ? `${agentName} ended the session` : 'Session ended by advisor'\n } else if (agentStatus) {\n if (agentName) {\n connectionHeadlineText = `You are speaking with ${agentName}`\n } else {\n connectionHeadlineText = 'No advisers currently available'\n }\n }\n\n if (availability === 'UNAVAILABLE') {\n connectionHeadlineText = 'Webchat is not currently available'\n }\n\n const sendMessage = e => {\n e.preventDefault()\n\n if (messageRef.current.value.length === 0) {\n return\n }\n\n try {\n thread.sendTextMessage(sanitizeHtml(messageRef.current.value.trim()))\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n\n const saveChat = () => {\n const transcript = formatTranscript(messages)\n\n const saveChatLink = document.querySelector('#transcript-download')\n\n saveChatLink.setAttribute('href', `data:text/plain;charset=utf-8,${transcript}`)\n saveChatLink.click()\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability govuk-body-s'>{connectionHeadlineText}</p>\n <a className='wc-status__link govuk-!-font-size-16' href='#' data-module='govuk-button' onClick={onEndChat}>End chat</a>\n </div>\n\n <div className='wc-body'>\n <div className='wc-chat__body'>\n <ul className='wc-chat__messages'>\n {messages.length\n ? messages.map((msg, index) => <Message key={msg.id} message={msg} previousMessage={messages[index - 1]} />)\n : null}\n {isAgentTyping\n ? (\n <li className='wc-chat__message govuk-body outbound'>\n <div className='wc-chat__from govuk-!-font-size-14'>{agentName} is typing</div>\n <div className='wc-chat__text outbound'>\n <svg width='28' height='16' x='0px' y='0px' viewBox='0 0 28 16'>\n <circle stroke='none' cx='3' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='14' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='25' cy='8' r='3' fill='currentColor' />\n </svg>\n </div>\n </li>\n )\n : null}\n </ul>\n </div>\n </div>\n\n <PanelFooter>\n <div className='wc-footer__input'>\n <form className='wc-form' noValidate>\n <label className='govuk-label wc-form__label govuk-!-font-size-16' htmlFor='wc-form-textarea'>\n Your message<span className='govuk-visually-hidden'> (enter key submits)</span>\n </label>\n\n <textarea\n ref={messageRef}\n rows='1'\n aria-required='true'\n className='wc-form__textarea govuk-textarea govuk-!-font-size-16'\n id='wc-form-textarea'\n name='message'\n onChange={onChange}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button govuk-!-font-size-16'\n value='Send'\n data-prevent-double-click='true'\n onClick={sendMessage}\n />\n </form>\n </div>\n\n <div className='wc-footer__settings'>\n <a\n href='#'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n >\n Settings\n </a>\n <a\n href='#'\n id='transcript-download'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n download='floodline-webchat-transcript.txt'\n onClick={saveChat}\n >\n Save chat\n </a>\n </div>\n </PanelFooter>\n </>\n )\n}\n","import React from 'react'\n\nexport const ErrorSummary = ({ errors }) => {\n const errs = Object.keys(errors)\n\n const goToInput = e => {\n e.preventDefault()\n const key = e.target.getAttribute('data-key')\n document.querySelector(`#wc-${key}`).focus()\n }\n\n if (errs.length === 0) {\n return null\n }\n\n return (\n <div className='govuk-error-summary govuk-!-static-margin-bottom-7' data-module='govuk-error-summary' tabIndex='-1'>\n <div role='alert'>\n <h2 id='wc-error' className='govuk-error-summary__title'>\n There is a problem\n </h2>\n <div className='govuk-error-summary__body'>\n <ul className='govuk-list govuk-error-summary__list'>\n {errs.map(key => (\n <li key={key}>\n <a href='#' data-key={key} onClick={goToInput}>{errors[key]}</a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { classnames } from '../../lib/classnames'\n\nexport function Message ({ message, previousMessage }) {\n const outbound = message.direction === 'outbound'\n\n const messageOwnerSameAsPrevious = message?.direction === previousMessage?.direction\n\n return (\n <li className={classnames('wc-chat__message govuk-body', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from govuk-!-font-size-14'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <p className={classnames('wc-chat__text', 'govuk-body-s', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </p>\n </li>\n )\n}\n","import React from 'react'\n\nexport function PanelFooter ({ children }) {\n return (\n <div className='wc-footer'>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { useApp } from '../../store/useApp.js'\n\nexport function PanelHeader () {\n const { thread, setChatVisibility } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n }\n\n let ButtonComponent = (\n <button className='wc-header__close' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10,8.6L15.6,3L17,4.4L11.4,10L17,15.6L15.6,17L10,11.4L4.4,17L3,15.6L8.6,10L3,4.4L4.4,3L10,8.6Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n if (thread) {\n ButtonComponent = (\n <button className='wc-header__hide' aria-label='Minimise the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z' fill='currentColor' />\n </svg>\n </button>\n )\n }\n\n return (\n <div className='wc-header'>\n <h2 id='wc-header-title' className='wc-header__title govuk-heading-s'>\n Floodline Webchat\n </h2>\n\n {ButtonComponent}\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { PreChat } from '../screens/pre-chat.jsx'\nimport { RequestChat } from '../screens/request-chat.jsx'\nimport { Chat } from '../chat/chat.jsx'\nimport { Unavailable } from '../screens/unavailable.jsx'\nimport { EndChat } from '../screens/end-chat.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\n\nexport function Panel () {\n const { sdk, availability, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n const escapeKeyEvent = document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', escapeKeyEvent)\n }\n }, [])\n\n /**\n * Recovers the thread if there is a threadId but no thread loaded in to state\n */\n useEffect(() => {\n const recover = async () => {\n try {\n const fetchedThread = await fetchThread(threadId)\n setThread(fetchedThread)\n\n const fetchedMessages = await fetchMessages(fetchedThread, threadId)\n setMessages(fetchedMessages)\n } catch (err) {\n console.log('[Chat Error] fetchThread', err)\n\n setThreadId()\n setThread()\n setScreen(0)\n }\n }\n\n if (threadId) {\n (thread) ? setScreen(2) : recover()\n }\n }, [thread, threadId])\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n setChatVisibility(false)\n }\n }, [])\n\n const handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const onForward = handleScreenChange(screen + 1)\n const onBack = handleScreenChange(screen - 1)\n const onEndChat = handleScreenChange(3)\n const onResume = handleScreenChange(2)\n\n const onEndChatConfirm = e => {\n e.preventDefault()\n console.log('confirmed end chat')\n }\n\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onForward={onForward} />\n break\n case 1:\n ScreenComponent = <RequestChat onBack={onBack} />\n break\n case 2:\n ScreenComponent = <Chat setScreen={setScreen} onEndChat={onEndChat} />\n break\n case 3:\n ScreenComponent = <EndChat onResume={onResume} onEndChatConfirm={onEndChatConfirm} />\n break\n default:\n ScreenComponent = <PreChat onForward={onForward} />\n }\n\n if (availability === 'UNAVAILABLE') {\n ScreenComponent = <Unavailable />\n }\n\n const Component = (\n <div id='wc-panel' className='wc-panel' role='dialog' tabIndex='-1' aria-modal='true' aria-labelledby='wc-header-title'>\n {ScreenComponent}\n </div>\n )\n\n return (\n <>\n {createPortal(Component, document.body)}\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function EndChat ({ onResume, onEndChatConfirm }) {\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <h3 className='govuk-heading-s' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a href='#' className='govuk-button govuk-!-font-size-16' data-module='govuk-button' onClick={onEndChatConfirm}>Yes, end chat</a>\n <a href='#' className='govuk-link govuk-!-font-size-16' onClick={onResume}>No, resume chat</a>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onForward }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 className='govuk-heading-s' aria-live='polite'>What you can use webchat for</h3>\n <p className='govuk-body-s'>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p className='govuk-body-s'>You can use webchat to get:</p>\n <ul className='govuk-list govuk-list--bullet govuk-body-s'>\n <li>current flood warnings and alerts in your area</li>\n <li>information on the flood warning service</li>\n <li>advice on what to do before, during and after a flood</li>\n </ul>\n\n <p className='govuk-body-s'>\n {\n 'There are other ways to '\n }\n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings'>\n sign up for flood warnings\n </a>\n {\n ' and '\n }\n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login'>\n manage your flood warnings account\n </a>.\n </p>\n <p className='govuk-body-s'>Do not use webchat to <a className='govuk-link' href='https://www.gov.uk/report-flood-cause'>report a flood</a>.</p>\n\n <button className='govuk-button govuk-!-font-size-16' data-module='govuk-button' onClick={onForward}>Continue</button>\n\n <h3 className='govuk-heading-s'>Other flood information</h3>\n\n <p className='govuk-body-s'>Call Floodline for all other flood and flood warning information.</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />\n Telephone: 0345 988 1188\n <br />\n Textphone: 0345 602 6340\n <br />\n Open 24 hours a day, 7 days a week\n <br />\n <a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n </div>\n </>\n )\n}\n","import React, { useRef, useState, useEffect } from 'react'\nimport * as uuid from 'uuid'\n\nimport { classnames } from '../../lib/classnames.js'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { ErrorSummary } from '../errorSummary/error-summary.jsx'\n\nconst QUESTION_MAX_LENGTH = 500\n\nexport function RequestChat ({ onBack }) {\n const { sdk, setCustomerId, setThreadId, setThread } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n\n const nameRef = useRef()\n const questionRef = useRef()\n\n useEffect(() => {\n if (Object.keys(errors).length) {\n document.querySelector('.govuk-error-summary')?.focus()\n }\n }, [errors])\n\n const onQuestionChange = e => {\n setQuestionLength(e.target.value.length)\n }\n\n const onRequestChat = async e => {\n e.preventDefault()\n\n const errs = {}\n\n if (nameRef.current.value.length === 0) {\n errs.name = 'Enter your name'\n }\n\n if (questionRef.current.value.length === 0) {\n errs.question = 'Enter your question'\n }\n\n if (questionRef.current.value.length > QUESTION_MAX_LENGTH) {\n errs.question = 'Your question must be 500 characters or less'\n }\n\n if (Object.keys(errs).length === 0) {\n try {\n const threadId = uuid.v4()\n const customerId = await fetchCustomerId()\n const thread = await fetchThread(threadId)\n\n sdk.getCustomer().setName(nameRef.current.value)\n\n await thread.startChat(questionRef.current.value || 'Begin conversation')\n\n setCustomerId(customerId)\n setThreadId(threadId)\n setThread(thread)\n } catch (err) {\n console.log('[Request Chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n const isQuestionLengthValid = QUESTION_MAX_LENGTH >= questionLength\n const questionLengthRemaining = QUESTION_MAX_LENGTH - questionLength\n const questionLengthExceeded = questionLength - QUESTION_MAX_LENGTH\n\n let questionHint = `You have ${questionLengthRemaining} characters remaining`\n\n if (!isQuestionLengthValid) {\n questionHint = `You have ${questionLengthExceeded} characters too many`\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onBack}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 className='govuk-heading-s' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='govuk-label' htmlFor='wc-name'>\n Your name\n </label>\n {errors.name && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span> {errors.name}\n </p>\n )}\n <input\n ref={nameRef}\n className={classnames('govuk-input', errors.name && 'govuk-input--error')}\n id='wc-name'\n name='name'\n type='text'\n data-testid='request-chat-user-name'\n />\n </div>\n\n <div className='govuk-character-count' data-module='govuk-character-count' data-maxlength='500'>\n <div className={classnames('govuk-form-group', errors.question && 'govuk-form-group--error')}>\n <label className='govuk-label' htmlFor='wc-question'>\n Your question\n </label>\n {errors.question && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span>\n {errors.question}\n </p>\n )}\n <textarea\n ref={questionRef}\n id='wc-question'\n name='question'\n rows='5'\n aria-describedby='wc-question-info'\n onChange={onQuestionChange}\n className={classnames('govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div id='wc-question-info' className='govuk-hint govuk-character-count__message' style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }} aria-hidden='true'>\n {questionHint}\n </div>\n <div className='govuk-character-count__sr-status govuk-visually-hidden' aria-live='polite'>\n {questionHint}\n </div>\n </div>\n </div>\n\n <button\n className='govuk-button govuk-!-margin-top-1 govuk-!-font-size-16'\n data-module='govuk-button'\n onClick={onRequestChat}\n >\n Request chat\n </button>\n </form>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Unavailable () {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 id='wc-subtitle' className='govuk-heading-m'>Webchat is currently not available</h3>\n <p className='govuk-body-s'>Try again later, or call Floodline:</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />Telephone: 0345 988 1188\n <br />Textphone: 0345 602 6340\n <br />Open 24 hours a day, 7 days a week\n <br /><a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n <p className='govuk-body-s'>We're running webchat as a trial, it will not always be available.</p>\n </div>\n </>\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nconst setAriaHidden = bool => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n (bool) ? node.setAttribute('aria-hidden', 'true') : node.removeAttribute('aria-hidden')\n }\n }\n}\n\nexport const getFocusableElements = () => {\n const selectors = [\n '#wc-panel a:not([disabled])',\n '#wc-panel button:not([disabled])',\n '#wc-panel select:not([disabled])',\n '#wc-panel input:not([disabled])',\n '#wc-panel textarea:not([disabled])',\n '#wc-panel *[tabindex=\"0\"]:not([disabled])'\n ]\n\n const elements = document.body.querySelectorAll(selectors.join(','))\n return Array.from(elements).filter(e => !e.closest('[hidden]') && !e.closest('[aria-hidden=\"true\"]'))\n}\n\nconst useFocusedElements = screen => {\n const [panelElements, setPanelElements] = useState([])\n\n const onKeyDown = useCallback(e => {\n const webchatPanelElement = document.querySelector('#wc-panel')\n\n if (e.key === 'Tab') {\n if (webchatPanelElement && !document.activeElement.closest('#wc-panel')) {\n webchatPanelElement.focus()\n }\n\n if (e.shiftKey) {\n if (document.activeElement === panelElements[0]) {\n panelElements[panelElements.length - 1].focus()\n e.preventDefault()\n } else if (document.activeElement === document.querySelector('#wc-panel')) {\n panelElements[panelElements.length - 1]?.focus()\n e.preventDefault()\n }\n } else if (document.activeElement === panelElements[panelElements.length - 1]) {\n panelElements[0].focus()\n e.preventDefault()\n }\n }\n }, [panelElements])\n\n useEffect(() => {\n setPanelElements(getFocusableElements())\n }, [screen])\n\n useEffect(() => {\n setAriaHidden(true)\n\n const panelElement = document.querySelector('#wc-panel')\n panelElement.focus()\n\n document.addEventListener('keydown', onKeyDown)\n\n return () => {\n setAriaHidden()\n document.body.querySelector('.wc-availability__link')?.focus()\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [panelElements])\n}\n\nexport { useFocusedElements }\n","import { useEffect } from 'react'\n\nexport const useTextareaAutosize = (textAreaRef, value) => {\n useEffect(() => {\n if (textAreaRef) {\n textAreaRef.style.height = '0px'\n\n const scrollHeight = textAreaRef.scrollHeight\n\n textAreaRef.style.height = `${scrollHeight}px`\n }\n }, [textAreaRef, value])\n}\n","export async function checkAvailability (endpoint) {\n const response = await fetch(endpoint)\n const data = await response.json()\n\n return {\n availability: data.availability || 'UNAVAILABLE'\n }\n}\n","export const classnames = (...classes) => classes.filter(classname => classname && typeof classname === 'string').join(' ')\n","import * as uuid from 'uuid'\nimport sanitizeHtml from 'sanitize-html'\nimport { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: sanitizeHtml(message.messageContent?.text),\n createdAt: new Date(message.createdAt),\n user: message.authorEndUserIdentity?.fullName?.trim() || null,\n assignee: message.authorUser?.firstName || null,\n direction: message.direction\n }\n}\n\nexport const transformMessages = messages => messages.map(message => transformMessage(message))\n\nexport const formatTranscript = messages => {\n const now = DateTime.local()\n now.setZone('Europe/London')\n\n let string = `Floodline webchat transcript, ${now.toFormat('HH:mm:ss a, dd LLLL yyyy')}, (ID: ${uuid.v4().split('-')[0]})\\n\\n`\n\n for (const message of messages) {\n const { text, direction, user, assignee, createdAt } = message\n\n const author = direction === 'inbound' ? user : `${assignee} (Floodline adviser)`\n const date = DateTime.fromJSDate(new Date(createdAt)).setZone('Europe/London').toFormat('HH:mm:ss a, dd LLLL yyyy')\n\n string += `[${date}] ${author}: \\n${text}\\n\\n`\n }\n\n string = string.replace(/<a\\b[^>]*>/i, '').replace(/<\\/a>/i, '')\n\n return encodeURIComponent(string)\n}\n","import React, { createContext, useEffect, useReducer, useMemo } from 'react'\nimport { ChatEvent } from '@nice-devone/nice-cxone-chat-web-sdk'\n\nimport { initialState, reducer, CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY } from './reducer.js'\n\nexport const AppContext = createContext(initialState)\n\nexport const AppProvider = ({ sdk, availability, children }) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n\n /**\n * SDK event handlers\n */\n const onLiveChatRecovered = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.contact.status })\n }\n\n const onAssignedAgentChanged = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onAgentTypingStarted = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: true })\n }\n\n const onAgentTypingEnded = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: false })\n }\n\n const onMessageCreated = e => {\n dispatch({ type: 'SET_MESSAGE', payload: e.detail.data.message })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onContactStatusChanged = e => {\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n useEffect(() => {\n sdk.onChatEvent(ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered)\n sdk.onChatEvent(ChatEvent.MESSAGE_CREATED, onMessageCreated)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_STARTED, onAgentTypingStarted)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_ENDED, onAgentTypingEnded)\n sdk.onChatEvent(ChatEvent.ASSIGNED_AGENT_CHANGED, onAssignedAgentChanged)\n sdk.onChatEvent(ChatEvent.CONTACT_STATUS_CHANGED, onContactStatusChanged)\n }, [sdk])\n\n /**\n * Initialize customerId, threadId and whether the webchat should be open\n */\n useEffect(() => {\n dispatch({ type: 'SET_AVAILABILITY', payload: availability })\n\n setCustomerId(window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY))\n setThreadId(window.localStorage.getItem(THREAD_ID_STORAGE_KEY))\n\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\n if (!payload) {\n window.location.hash = ''\n }\n\n dispatch({ type: 'SET_CHAT_VISIBILITY', payload })\n }\n\n const setCustomerId = customerId => {\n dispatch({ type: 'SET_CUSTOMER_ID', payload: customerId })\n }\n\n const setThreadId = threadId => {\n dispatch({ type: 'SET_THREAD_ID', payload: threadId })\n }\n\n const setThread = thread => {\n dispatch({ type: 'SET_THREAD', payload: thread })\n }\n\n const setMessages = messages => {\n dispatch({ type: 'SET_MESSAGES', payload: messages })\n }\n\n /**\n * Application-wide state and state functions\n */\n const store = useMemo(() => ({\n ...state,\n sdk,\n setCustomerId,\n setThreadId,\n setThread,\n setMessages,\n setChatVisibility,\n onLiveChatRecovered,\n onAssignedAgentChanged,\n onAgentTypingStarted,\n onAgentTypingEnded,\n onMessageCreated,\n onContactStatusChanged\n }))\n\n return (\n <AppContext.Provider value={store}>\n {children}\n </AppContext.Provider>\n )\n}\n","import { transformMessages, transformMessage } from '../lib/transform-messages'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY } from './reducer'\n\nconst setCustomerId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(CUSTOMER_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(CUSTOMER_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n customerId: payload\n }\n}\n\nconst setThreadId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(THREAD_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(THREAD_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n threadId: payload\n }\n}\n\nconst setChatVisibility = (state, payload) => {\n return {\n ...state,\n isChatOpen: payload\n }\n}\n\nconst setAvailability = (state, payload) => {\n return {\n ...state,\n availability: payload\n }\n}\n\nconst setThread = (state, payload) => {\n return {\n ...state,\n thread: payload\n }\n}\n\nconst setMessage = (state, payload) => {\n return {\n ...state,\n messages: [...state.messages, transformMessage(payload)]\n }\n}\n\nconst setMessages = (state, payload) => {\n return {\n ...state,\n messages: transformMessages(payload).reverse()\n }\n}\n\nconst setAgent = (state, payload) => {\n return {\n ...state,\n agent: payload\n }\n}\n\nconst setAgentIsTyping = (state, payload) => {\n return {\n ...state,\n isAgentTyping: payload\n }\n}\n\nconst setAgentStatus = (state, payload) => {\n return {\n ...state,\n agentStatus: payload\n }\n}\n\nexport const actionsMap = {\n SET_CHAT_VISIBILITY: setChatVisibility,\n SET_AVAILABILITY: setAvailability,\n SET_CUSTOMER_ID: setCustomerId,\n SET_THREAD_ID: setThreadId,\n SET_THREAD: setThread,\n SET_MESSAGE: setMessage,\n SET_MESSAGES: setMessages,\n SET_AGENT: setAgent,\n SET_AGENT_TYPING: setAgentIsTyping,\n SET_AGENT_STATUS: setAgentStatus\n}\n","import { actionsMap } from './actions-map'\n\nexport const CUSTOMER_ID_STORAGE_KEY = 'webchat_customer_id'\nexport const THREAD_ID_STORAGE_KEY = 'webchat_thread_id'\n\nexport const initialState = {\n availability: null,\n customerId: null,\n threadId: null,\n thread: null,\n messages: [],\n agent: null,\n agentStatus: null,\n isAgentTyping: false,\n isChatOpen: false\n}\n\nexport const reducer = (state, action) => {\n const { type, payload } = action\n\n const fn = actionsMap[type]\n\n if (fn) {\n const actionFunction = fn.bind(this, state, payload)\n return actionFunction()\n }\n\n return state\n}\n","import { useContext } from 'react'\n\nimport { AppContext } from './AppProvider.jsx'\n\nexport const useApp = () => useContext(AppContext)\n","export const useChatSdk = sdk => {\n const connect = async () => sdk.authorize()\n\n const fetchCustomerId = async () => {\n const response = await connect()\n return response?.consumerIdentity.idOnExternalPlatform\n }\n\n const fetchThread = async threadId => {\n await connect()\n return sdk.getThread(threadId)\n }\n\n const fetchMessages = async (thread, threadId) => {\n await connect()\n\n const recovered = await thread.recover(threadId)\n\n const allMessages = []\n let fetchedMessages = recovered.messages\n\n while (fetchedMessages.length) {\n fetchedMessages.map(msg => allMessages.push(msg))\n\n try {\n const response = await thread.loadMoreMessages()\n fetchedMessages = response.data.messages\n } catch (err) {\n fetchedMessages = []\n }\n }\n\n return allMessages\n }\n\n return { connect, fetchCustomerId, fetchThread, fetchMessages }\n}\n","module.exports = require(\"@nice-devone/nice-cxone-chat-web-sdk\");","module.exports = require(\"luxon\");","module.exports = require(\"react\");","module.exports = require(\"react-dom\");","module.exports = require(\"react-dom/client\");","module.exports = require(\"sanitize-html\");","module.exports = require(\"uuid\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ChatSdk } from '@nice-devone/nice-cxone-chat-web-sdk'\nimport { Availability } from './components/availability/availability.jsx'\nimport { checkAvailability } from './lib/check-availability'\nimport { AppProvider } from './store/AppProvider.jsx'\nimport { CUSTOMER_ID_STORAGE_KEY } from './store/reducer.js'\n\nexport async function init (container, options) {\n const sdk = new ChatSdk({\n brandId: options.brandId,\n channelId: options.channelId,\n customerId: window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY) || '',\n environment: options.environment\n })\n\n const root = createRoot(container)\n let availability\n try {\n const result = await checkAvailability(options.availabilityEndpoint)\n availability = result.availability\n } catch (e) {\n availability = 'UNAVAILABLE'\n }\n root.render(\n <AppProvider sdk={sdk} availability={availability}>\n <Availability availability={availability} />\n </AppProvider>\n )\n}\n"],"names":["React","useEffect","useRef","useState","classnames","Panel","useApp","Availability","availability","messages","isChatOpen","setChatVisibility","isFixed","setIsFixed","buttonRef","onClick","onKeyDown","event","key","preventDefault","onKeyUp","intersectionCallback","entries","entry","isBelowFold","isIntersecting","boundingClientRect","top","observer","window","IntersectionObserver","rootMargin","parentElement","current","observe","unobserve","document","documentElement","classList","toggle","body","TextComponent","createElement","Fragment","length","className","ref","href","draggable","sanitizeHtml","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","Chat","onEndChat","thread","agent","agentStatus","isAgentTyping","userMessage","setUserMessage","messageRef","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","e","target","value","agentName","nickname","firstName","connectionHeadlineText","sendMessage","sendTextMessage","trim","err","console","log","saveChat","transcript","saveChatLink","setAttribute","click","map","msg","index","id","message","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","htmlFor","rows","name","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","tabIndex","role","outbound","direction","messageOwnerSameAsPrevious","assignee","text","children","onClose","ButtonComponent","focusable","d","useCallback","createPortal","PreChat","RequestChat","Unavailable","EndChat","useChatSdk","useFocusedElements","sdk","threadId","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","escapeKeyEvent","addEventListener","onEscapeKey","removeEventListener","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","onForward","onBack","onResume","onEndChatConfirm","ScreenComponent","Component","uuid","QUESTION_MAX_LENGTH","setCustomerId","fetchCustomerId","setErrors","questionLength","setQuestionLength","nameRef","questionRef","onQuestionChange","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","style","color","setAriaHidden","bool","node","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","shiftKey","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","DateTime","transformMessage","messageContent","createdAt","Date","user","authorEndUserIdentity","fullName","authorUser","transformMessages","now","local","setZone","string","toFormat","split","author","date","fromJSDate","replace","encodeURIComponent","createContext","useReducer","useMemo","ChatEvent","initialState","reducer","CUSTOMER_ID_STORAGE_KEY","THREAD_ID_STORAGE_KEY","AppContext","AppProvider","state","dispatch","onLiveChatRecovered","payload","detail","inboxAssignee","contact","status","onAssignedAgentChanged","case","onAgentTypingStarted","onAgentTypingEnded","onMessageCreated","onContactStatusChanged","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","localStorage","getItem","location","hash","store","Provider","setItem","removeItem","setAvailability","setMessage","reverse","setAgent","setAgentIsTyping","setAgentStatus","actionsMap","SET_CHAT_VISIBILITY","SET_AVAILABILITY","SET_CUSTOMER_ID","SET_THREAD_ID","SET_THREAD","SET_MESSAGE","SET_MESSAGES","SET_AGENT","SET_AGENT_TYPING","SET_AGENT_STATUS","action","fn","actionFunction","bind","useContext","connect","authorize","consumerIdentity","idOnExternalPlatform","getThread","recovered","allMessages","push","loadMoreMessages","createRoot","ChatSdk","init","container","options","brandId","channelId","environment","root","result","availabilityEndpoint","render"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"client.js","mappings":"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","sources":["webpack://@defra/flood-webchat/./src/client/components/availability/availability.jsx","webpack://@defra/flood-webchat/./src/client/components/chat/chat.jsx","webpack://@defra/flood-webchat/./src/client/components/errorSummary/error-summary.jsx","webpack://@defra/flood-webchat/./src/client/components/message/message.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-footer.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel-header.jsx","webpack://@defra/flood-webchat/./src/client/components/panel/panel.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/end-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/pre-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/request-chat.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/settings.jsx","webpack://@defra/flood-webchat/./src/client/components/screens/unavailable.jsx","webpack://@defra/flood-webchat/./src/client/hooks/useFocusedElements.js","webpack://@defra/flood-webchat/./src/client/hooks/useTextareaAutosize.js","webpack://@defra/flood-webchat/./src/client/lib/check-availability.js","webpack://@defra/flood-webchat/./src/client/lib/classnames.js","webpack://@defra/flood-webchat/./src/client/lib/message-notification.js","webpack://@defra/flood-webchat/./src/client/lib/transform-messages.js","webpack://@defra/flood-webchat/./src/client/store/AppProvider.jsx","webpack://@defra/flood-webchat/./src/client/store/actions-map.js","webpack://@defra/flood-webchat/./src/client/store/constants.js","webpack://@defra/flood-webchat/./src/client/store/reducer.js","webpack://@defra/flood-webchat/./src/client/store/useApp.js","webpack://@defra/flood-webchat/./src/client/store/useChatSdk.js","webpack://@defra/flood-webchat/external commonjs \"@nice-devone/nice-cxone-chat-web-sdk\"","webpack://@defra/flood-webchat/external commonjs \"luxon\"","webpack://@defra/flood-webchat/external commonjs \"react\"","webpack://@defra/flood-webchat/external commonjs \"react-dom\"","webpack://@defra/flood-webchat/external commonjs \"react-dom/client\"","webpack://@defra/flood-webchat/external commonjs \"sanitize-html\"","webpack://@defra/flood-webchat/external commonjs \"uuid\"","webpack://@defra/flood-webchat/webpack/bootstrap","webpack://@defra/flood-webchat/webpack/runtime/compat get default export","webpack://@defra/flood-webchat/webpack/runtime/define property getters","webpack://@defra/flood-webchat/webpack/runtime/hasOwnProperty shorthand","webpack://@defra/flood-webchat/webpack/runtime/make namespace object","webpack://@defra/flood-webchat/./src/client/index.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\n\nimport { classnames } from '../../lib/classnames'\nimport { Panel } from '../panel/panel.jsx'\nimport { useApp } from '../../store/useApp'\n\nexport function Availability () {\n const { availability, messages, isChatOpen, setChatVisibility, unseenCount } = useApp()\n\n const [isFixed, setIsFixed] = useState(false)\n const buttonRef = useRef()\n\n const onClick = () => {\n setChatVisibility(!isChatOpen)\n }\n\n const onKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault()\n }\n }\n\n const onKeyUp = event => {\n if (event.key === ' ') {\n setChatVisibility(!isChatOpen)\n }\n }\n\n const intersectionCallback = entries => {\n const [entry] = entries\n const isBelowFold = !entry.isIntersecting && entry.boundingClientRect.top > 0\n setIsFixed(!isChatOpen && isBelowFold)\n }\n\n useEffect(() => {\n const observer = new window.IntersectionObserver(intersectionCallback, {\n rootMargin: '35px'\n })\n\n const parentElement = buttonRef.current?.parentElement\n\n if (parentElement) {\n observer.observe(parentElement)\n }\n\n return () => {\n if (parentElement) {\n observer.unobserve(parentElement)\n }\n }\n }, [buttonRef, isChatOpen])\n\n useEffect(() => {\n document.documentElement.classList.toggle('wc-scroll-padding', isFixed)\n document.body.classList.toggle('wc-scroll-padding', isFixed)\n }, [isFixed])\n\n let TextComponent = (<>Show Chat</>)\n\n if (!messages.length) {\n TextComponent = (<>Start Chat</>)\n }\n\n switch (availability) {\n case 'AVAILABLE':\n return (\n <>\n <div\n className={classnames('wc-availability', isFixed && 'wc-availability--fixed', isChatOpen && 'wc-open')}\n ref={buttonRef}\n >\n <div className='wc-availability__inner'>\n <a\n className='wc-availability__link'\n href='#webchat'\n draggable='false'\n onClick={onClick}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n >\n {TextComponent}\n {unseenCount > 0 && !isChatOpen ? <span className='wc-open-btn__unseen'>{unseenCount}</span> : null}\n </a>\n </div>\n </div>\n {isChatOpen && <Panel />}\n </>\n )\n case 'EXISTING':\n case 'UNAVAILABLE':\n return (\n <p className='govuk-body'>When it is available, a 'start chat' link will appear.</p>\n )\n default:\n return (\n <p className='govuk-body'>Checking availability</p>\n )\n }\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport sanitizeHtml from 'sanitize-html'\n\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { PanelFooter } from '../panel/panel-footer.jsx'\nimport { Message } from '../message/message.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useTextareaAutosize } from '../../hooks/useTextareaAutosize.js'\nimport { formatTranscript } from '../../lib/transform-messages.js'\n\nexport function Chat ({ onEndChat, onSettings }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping, settings } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n\n const messageRef = useRef()\n\n useTextareaAutosize(messageRef.current, userMessage)\n\n useEffect(() => {\n if (settings.scroll && messages.length !== 0) {\n const chatBody = document.querySelector('.wc-body')\n chatBody.scrollTop = chatBody.scrollHeight\n }\n }, [messages, isAgentTyping])\n\n useEffect(() => {\n const label = document.querySelector('.wc-form__label')\n\n if (userMessage.length === 0) {\n label.classList.remove('govuk-visually-hidden')\n } else {\n label.classList.add('govuk-visually-hidden')\n }\n }, [userMessage])\n\n const onChange = e => {\n setUserMessage(e.target?.value)\n }\n\n const agentName = agent?.nickname || agent?.firstName\n\n let connectionHeadlineText = 'Connecting to Floodline'\n\n if (agentStatus === 'closed') {\n connectionHeadlineText = agentName ? `${agentName} ended the session` : 'Session ended by advisor'\n } else if (agentStatus) {\n if (agentName) {\n connectionHeadlineText = `You are speaking with ${agentName}`\n } else {\n connectionHeadlineText = 'No advisers currently available'\n }\n }\n\n if (availability === 'UNAVAILABLE') {\n connectionHeadlineText = 'Webchat is not currently available'\n }\n\n const sendMessage = e => {\n e.preventDefault()\n\n if (messageRef.current.value.length === 0) {\n return\n }\n\n try {\n thread.sendTextMessage(sanitizeHtml(messageRef.current.value.trim()))\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n\n const saveChat = () => {\n const transcript = formatTranscript(messages)\n\n const saveChatLink = document.querySelector('#transcript-download')\n\n saveChatLink.setAttribute('href', `data:text/plain;charset=utf-8,${transcript}`)\n saveChatLink.click()\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability govuk-body-s'>{connectionHeadlineText}</p>\n <a className='wc-status__link govuk-!-font-size-16' href='#' data-module='govuk-button' onClick={onEndChat}>End chat</a>\n </div>\n\n <div className='wc-body'>\n <div className='wc-chat__body'>\n <ul className='wc-chat__messages'>\n {messages.length\n ? messages.map((msg, index) => <Message key={msg.id} message={msg} previousMessage={messages[index - 1]} />)\n : null}\n {isAgentTyping\n ? (\n <li className='wc-chat__message govuk-body outbound'>\n <div className='wc-chat__from govuk-!-font-size-14'>{agentName} is typing</div>\n <div className='wc-chat__text outbound'>\n <svg width='28' height='16' x='0px' y='0px' viewBox='0 0 28 16'>\n <circle stroke='none' cx='3' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='14' cy='8' r='3' fill='currentColor' />\n <circle stroke='none' cx='25' cy='8' r='3' fill='currentColor' />\n </svg>\n </div>\n </li>\n )\n : null}\n </ul>\n </div>\n </div>\n\n <PanelFooter>\n <div className='wc-footer__input'>\n <form className='wc-form' noValidate>\n <label className='govuk-label wc-form__label govuk-!-font-size-16' htmlFor='wc-form-textarea'>\n Your message<span className='govuk-visually-hidden'> (enter key submits)</span>\n </label>\n\n <textarea\n ref={messageRef}\n rows='1'\n aria-required='true'\n className='wc-form__textarea govuk-textarea govuk-!-font-size-16'\n id='wc-form-textarea'\n name='message'\n onChange={onChange}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button govuk-!-font-size-16'\n value='Send'\n data-prevent-double-click='true'\n onClick={sendMessage}\n />\n </form>\n </div>\n\n <div className='wc-footer__settings'>\n <a\n href='#'\n id='wc-settings'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n onClick={onSettings}\n >\n Settings\n </a>\n <a\n href='#'\n id='transcript-download'\n className='wc-footer__settings-link'\n data-module='govuk-button'\n download='floodline-webchat-transcript.txt'\n onClick={saveChat}\n >\n Save chat\n </a>\n </div>\n </PanelFooter>\n </>\n )\n}\n","import React from 'react'\n\nexport const ErrorSummary = ({ errors }) => {\n const errs = Object.keys(errors)\n\n const goToInput = e => {\n e.preventDefault()\n const key = e.target.getAttribute('data-key')\n document.querySelector(`#wc-${key}`).focus()\n }\n\n if (errs.length === 0) {\n return null\n }\n\n return (\n <div className='govuk-error-summary govuk-!-static-margin-bottom-7' data-module='govuk-error-summary' tabIndex='-1'>\n <div role='alert'>\n <h2 id='wc-error' className='govuk-error-summary__title'>\n There is a problem\n </h2>\n <div className='govuk-error-summary__body'>\n <ul className='govuk-list govuk-error-summary__list'>\n {errs.map(key => (\n <li key={key}>\n <a href='#' data-key={key} onClick={goToInput}>{errors[key]}</a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { classnames } from '../../lib/classnames'\n\nexport function Message ({ message, previousMessage }) {\n const outbound = message.direction === 'outbound'\n\n const messageOwnerSameAsPrevious = message?.direction === previousMessage?.direction\n\n return (\n <li className={classnames('wc-chat__message govuk-body', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from govuk-!-font-size-14'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <p className={classnames('wc-chat__text', 'govuk-body-s', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </p>\n </li>\n )\n}\n","import React from 'react'\n\nexport function PanelFooter ({ children }) {\n return (\n <div className='wc-footer'>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { useApp } from '../../store/useApp.js'\n\nexport function PanelHeader () {\n const { thread, setChatVisibility, setUnseenCount } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n thread.lastMessageSeen()\n setUnseenCount(0)\n }\n\n let ButtonComponent = (\n <button className='wc-header__close' aria-label='Close the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10,8.6L15.6,3L17,4.4L11.4,10L17,15.6L15.6,17L10,11.4L4.4,17L3,15.6L8.6,10L3,4.4L4.4,3L10,8.6Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n if (thread) {\n ButtonComponent = (\n <button className='wc-header__hide' aria-label='Minimise the webchat' onClick={onClose}>\n <svg aria-hidden='true' focusable='false' width='20' height='20' viewBox='0 0 20 20'>\n <path d='M10 14.4l-7-7L4.4 6l5.6 5.6L15.6 6 17 7.4l-7 7z' fill='currentColor' />\n </svg>\n </button>\n )\n }\n\n return (\n <div className='wc-header'>\n <h2 id='wc-header-title' className='wc-header__title govuk-heading-s'>\n Floodline Webchat\n </h2>\n\n {ButtonComponent}\n </div>\n )\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { PreChat } from '../screens/pre-chat.jsx'\nimport { RequestChat } from '../screens/request-chat.jsx'\nimport { Chat } from '../chat/chat.jsx'\nimport { Unavailable } from '../screens/unavailable.jsx'\nimport { EndChat } from '../screens/end-chat.jsx'\nimport { Settings } from '../screens/settings.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\n\nexport function Panel () {\n const { sdk, availability, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages, setUnseenCount } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n const escapeKeyEvent = document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', escapeKeyEvent)\n }\n }, [])\n\n /**\n * Recovers the thread if there is a threadId but no thread loaded in to state\n */\n useEffect(() => {\n const recover = async () => {\n try {\n const fetchedThread = await fetchThread(threadId)\n setThread(fetchedThread)\n\n const fetchedMessages = await fetchMessages(fetchedThread, threadId)\n setMessages(fetchedMessages)\n } catch (err) {\n console.log('[Chat Error] fetchThread', err)\n\n setThreadId()\n setThread()\n setScreen(0)\n }\n }\n\n if (threadId) {\n if (thread) {\n thread.lastMessageSeen()\n setUnseenCount(0)\n setScreen(2)\n } else {\n recover()\n }\n }\n }, [thread, threadId])\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n setChatVisibility(false)\n }\n }, [])\n\n const handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const onForward = handleScreenChange(screen + 1)\n const onBack = handleScreenChange(screen - 1)\n const onEndChat = handleScreenChange(3)\n const onResume = handleScreenChange(2)\n const onSettings = handleScreenChange(5)\n\n const onEndChatConfirm = e => {\n e.preventDefault()\n console.log('confirmed end chat')\n }\n\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onForward={onForward} />\n break\n case 1:\n ScreenComponent = <RequestChat onBack={onBack} />\n break\n case 2:\n ScreenComponent = <Chat onSettings={onSettings} onEndChat={onEndChat} />\n break\n case 3:\n ScreenComponent = <EndChat onResume={onResume} onEndChatConfirm={onEndChatConfirm} />\n break\n case 5:\n ScreenComponent = <Settings onCancel={onResume} />\n break\n default:\n ScreenComponent = <PreChat onForward={onForward} />\n }\n\n if (availability === 'UNAVAILABLE') {\n ScreenComponent = <Unavailable />\n }\n\n const Component = (\n <div id='wc-panel' role='dialog' className='wc-panel' tabIndex='-1' aria-modal='true' aria-labelledby='wc-header-title'>\n {ScreenComponent}\n </div>\n )\n\n return (\n <>\n {createPortal(Component, document.body)}\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function EndChat ({ onResume, onEndChatConfirm }) {\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <h3 className='govuk-heading-s' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a href='#' className='govuk-button govuk-!-font-size-16' data-module='govuk-button' onClick={onEndChatConfirm}>Yes, end chat</a>\n <a href='#' className='govuk-link govuk-!-font-size-16' onClick={onResume}>No, resume chat</a>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onForward }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 className='govuk-heading-s' aria-live='polite'>What you can use webchat for</h3>\n <p className='govuk-body-s'>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p className='govuk-body-s'>You can use webchat to get:</p>\n <ul className='govuk-list govuk-list--bullet govuk-body-s'>\n <li>current flood warnings and alerts in your area</li>\n <li>information on the flood warning service</li>\n <li>advice on what to do before, during and after a flood</li>\n </ul>\n\n <p className='govuk-body-s'>\n {\n 'There are other ways to '\n }\n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings'>\n sign up for flood warnings\n </a>\n {\n ' and '\n }\n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login'>\n manage your flood warnings account\n </a>.\n </p>\n <p className='govuk-body-s'>Do not use webchat to <a className='govuk-link' href='https://www.gov.uk/report-flood-cause'>report a flood</a>.</p>\n\n <button className='govuk-button govuk-!-font-size-16' data-module='govuk-button' onClick={onForward}>Continue</button>\n\n <h3 className='govuk-heading-s'>Other flood information</h3>\n\n <p className='govuk-body-s'>Call Floodline for all other flood and flood warning information.</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />\n Telephone: 0345 988 1188\n <br />\n Textphone: 0345 602 6340\n <br />\n Open 24 hours a day, 7 days a week\n <br />\n <a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n </div>\n </>\n )\n}\n","import React, { useRef, useState, useEffect } from 'react'\nimport * as uuid from 'uuid'\n\nimport { classnames } from '../../lib/classnames.js'\nimport { PanelHeader } from '../panel/panel-header.jsx'\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { ErrorSummary } from '../errorSummary/error-summary.jsx'\n\nconst QUESTION_MAX_LENGTH = 500\n\nexport function RequestChat ({ onBack }) {\n const { sdk, setCustomerId, setThreadId, setThread } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n\n const nameRef = useRef()\n const questionRef = useRef()\n\n useEffect(() => {\n if (Object.keys(errors).length) {\n document.querySelector('.govuk-error-summary')?.focus()\n }\n }, [errors])\n\n const onQuestionChange = e => {\n setQuestionLength(e.target.value.length)\n }\n\n const onRequestChat = async e => {\n e.preventDefault()\n\n const errs = {}\n\n if (nameRef.current.value.length === 0) {\n errs.name = 'Enter your name'\n }\n\n if (questionRef.current.value.length === 0) {\n errs.question = 'Enter your question'\n }\n\n if (questionRef.current.value.length > QUESTION_MAX_LENGTH) {\n errs.question = 'Your question must be 500 characters or less'\n }\n\n if (Object.keys(errs).length === 0) {\n try {\n const threadId = uuid.v4()\n const customerId = await fetchCustomerId()\n const thread = await fetchThread(threadId)\n\n sdk.getCustomer().setName(nameRef.current.value)\n\n await thread.startChat(questionRef.current.value || 'Begin conversation')\n\n setCustomerId(customerId)\n setThreadId(threadId)\n setThread(thread)\n } catch (err) {\n console.log('[Request Chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n const isQuestionLengthValid = QUESTION_MAX_LENGTH >= questionLength\n const questionLengthRemaining = QUESTION_MAX_LENGTH - questionLength\n const questionLengthExceeded = questionLength - QUESTION_MAX_LENGTH\n\n let questionHint = `You have ${questionLengthRemaining} characters remaining`\n\n if (!isQuestionLengthValid) {\n questionHint = `You have ${questionLengthExceeded} characters too many`\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onBack}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 className='govuk-heading-s' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='govuk-label' htmlFor='wc-name'>\n Your name\n </label>\n {errors.name && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span> {errors.name}\n </p>\n )}\n <input\n ref={nameRef}\n className={classnames('govuk-input', errors.name && 'govuk-input--error')}\n id='wc-name'\n name='name'\n type='text'\n data-testid='request-chat-user-name'\n />\n </div>\n\n <div className='govuk-character-count' data-module='govuk-character-count' data-maxlength='500'>\n <div className={classnames('govuk-form-group', errors.question && 'govuk-form-group--error')}>\n <label className='govuk-label' htmlFor='wc-question'>\n Your question\n </label>\n {errors.question && (\n <p className='govuk-error-message'>\n <span className='govuk-visually-hidden'>Error:</span>\n {errors.question}\n </p>\n )}\n <textarea\n ref={questionRef}\n id='wc-question'\n name='question'\n rows='5'\n aria-describedby='wc-question-info'\n onChange={onQuestionChange}\n className={classnames('govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div id='wc-question-info' className='govuk-hint govuk-character-count__message' style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }} aria-hidden='true'>\n {questionHint}\n </div>\n <div className='govuk-character-count__sr-status govuk-visually-hidden' aria-live='polite'>\n {questionHint}\n </div>\n </div>\n </div>\n\n <button\n className='govuk-button govuk-!-margin-top-1 govuk-!-font-size-16'\n data-module='govuk-button'\n onClick={onRequestChat}\n >\n Request chat\n </button>\n </form>\n </div>\n </>\n )\n}\n","import React, { useState } from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nimport { useApp } from '../../store/useApp.js'\n\nexport function Settings ({ onCancel }) {\n const { settings, setSettings } = useApp()\n\n const [optionAudio, setOptionAudio] = useState(settings.audio)\n const [optionScroll, setOptionScroll] = useState(settings.scroll)\n\n const onSave = e => {\n e.preventDefault()\n\n setSettings({ audio: optionAudio, scroll: optionScroll })\n onCancel(e)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <fieldset className='govuk-fieldset govuk-!-margin-bottom-4'>\n <legend className='govuk-fieldset__legend govuk-fieldset__legend'>\n <h3 id='wc-subtitle' className='govuk-heading-s'>Change settings</h3>\n </legend>\n <div className='govuk-checkboxes govuk-checkboxes--small' data-module='govuk-checkboxes'>\n <div className='govuk-checkboxes__item'>\n <input\n id='audio'\n name='audio'\n type='checkbox'\n value='audio'\n className='govuk-checkboxes__input'\n defaultChecked={optionAudio}\n onChange={() => setOptionAudio(!optionAudio)}\n />\n <label className='govuk-label govuk-checkboxes__label govuk-!-font-size-16' htmlFor='audio'>\n Play a sound when receiving a new message\n </label>\n </div>\n <div className='govuk-checkboxes__item'>\n <input\n id='scroll'\n name='scroll'\n type='checkbox'\n value='scroll'\n className='govuk-checkboxes__input'\n defaultChecked={optionScroll}\n onChange={() => setOptionScroll(!optionScroll)}\n />\n <label className='govuk-label govuk-checkboxes__label govuk-!-font-size-16' htmlFor='scroll'>\n Scroll automatically to a new message\n </label>\n </div>\n </div>\n </fieldset>\n\n <div className='govuk-button-group'>\n <a id='settings-save' href='#' className='govuk-button govuk-!-font-size-16' data-module='govuk-button' onClick={onSave}>Save</a>\n <a id='settings-cancel' href='#' className='govuk-link govuk-!-font-size-16' data-module='govuk-button' onClick={onCancel}>Cancel</a>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Unavailable () {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <h3 id='wc-subtitle' className='govuk-heading-m'>Webchat is currently not available</h3>\n <p className='govuk-body-s'>Try again later, or call Floodline:</p>\n <p className='govuk-body-s'>\n <strong>Floodline helpline</strong>\n <br />Telephone: 0345 988 1188\n <br />Textphone: 0345 602 6340\n <br />Open 24 hours a day, 7 days a week\n <br /><a className='govuk-link' href='https://gov.uk/call-charges'>Find out more about call charges</a>\n </p>\n <p className='govuk-body-s'>We're running webchat as a trial, it will not always be available.</p>\n </div>\n </>\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nconst setAriaHidden = bool => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n (bool) ? node.setAttribute('aria-hidden', 'true') : node.removeAttribute('aria-hidden')\n }\n }\n}\n\nexport const getFocusableElements = () => {\n const selectors = [\n '#wc-panel a:not([disabled])',\n '#wc-panel button:not([disabled])',\n '#wc-panel select:not([disabled])',\n '#wc-panel input:not([disabled])',\n '#wc-panel textarea:not([disabled])',\n '#wc-panel *[tabindex=\"0\"]:not([disabled])'\n ]\n\n const elements = document.body.querySelectorAll(selectors.join(','))\n return Array.from(elements).filter(e => !e.closest('[hidden]') && !e.closest('[aria-hidden=\"true\"]'))\n}\n\nconst useFocusedElements = screen => {\n const [panelElements, setPanelElements] = useState([])\n\n const onKeyDown = useCallback(e => {\n const webchatPanelElement = document.querySelector('#wc-panel')\n\n if (e.key === 'Tab') {\n if (webchatPanelElement && !document.activeElement.closest('#wc-panel')) {\n webchatPanelElement.focus()\n }\n\n if (e.shiftKey) {\n if (document.activeElement === panelElements[0]) {\n panelElements[panelElements.length - 1].focus()\n e.preventDefault()\n } else if (document.activeElement === document.querySelector('#wc-panel')) {\n panelElements[panelElements.length - 1]?.focus()\n e.preventDefault()\n }\n } else if (document.activeElement === panelElements[panelElements.length - 1]) {\n panelElements[0].focus()\n e.preventDefault()\n }\n }\n }, [panelElements])\n\n useEffect(() => {\n setPanelElements(getFocusableElements())\n }, [screen])\n\n useEffect(() => {\n setAriaHidden(true)\n\n const panelElement = document.querySelector('#wc-panel')\n panelElement.focus()\n\n document.addEventListener('keydown', onKeyDown)\n\n return () => {\n setAriaHidden()\n document.body.querySelector('.wc-availability__link')?.focus()\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [panelElements])\n}\n\nexport { useFocusedElements }\n","import { useEffect } from 'react'\n\nexport const useTextareaAutosize = (textAreaRef, value) => {\n useEffect(() => {\n if (textAreaRef) {\n textAreaRef.style.height = '0px'\n\n const scrollHeight = textAreaRef.scrollHeight\n\n textAreaRef.style.height = `${scrollHeight}px`\n }\n }, [textAreaRef, value])\n}\n","export async function checkAvailability (endpoint) {\n const response = await fetch(endpoint)\n const data = await response.json()\n\n return {\n availability: data.availability || 'UNAVAILABLE'\n }\n}\n","export const classnames = (...classes) => classes.filter(classname => classname && typeof classname === 'string').join(' ')\n","export const messageNotification = audioUrl => {\n let buffer\n\n const context = new (window.AudioContext || window.webkitAudioContext)()\n\n if (context.state === 'suspended') {\n const events = ['touchstart', 'touchend', 'mousedown', 'wheel', 'keydown', 'click']\n\n const unlock = _e => {\n events.forEach(event => {\n document.body.removeEventListener(event, unlock)\n })\n\n context.resume()\n }\n\n events.forEach(event => {\n document.body.addEventListener(event, unlock, false)\n })\n }\n\n fetch(audioUrl)\n .then(response => response.arrayBuffer())\n .then(data => context.decodeAudioData(data))\n .then(decodedData => {\n buffer = decodedData\n })\n .catch(console.error)\n\n return () => {\n const source = context.createBufferSource()\n source.buffer = buffer\n source.connect(context.destination)\n source.start()\n }\n}\n","import * as uuid from 'uuid'\nimport sanitizeHtml from 'sanitize-html'\nimport { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: sanitizeHtml(message.messageContent?.text),\n createdAt: new Date(message.createdAt),\n user: message.authorEndUserIdentity?.fullName?.trim() || null,\n assignee: message.authorUser?.firstName || null,\n direction: message.direction\n }\n}\n\nexport const transformMessages = messages => messages.map(message => transformMessage(message))\n\nexport const formatTranscript = messages => {\n const now = DateTime.local()\n now.setZone('Europe/London')\n\n let string = `Floodline webchat transcript, ${now.toFormat('HH:mm:ss a, dd LLLL yyyy')}, (ID: ${uuid.v4().split('-')[0]})\\n\\n`\n\n for (const message of messages) {\n const { text, direction, user, assignee, createdAt } = message\n\n const author = direction === 'inbound' ? user : `${assignee} (Floodline adviser)`\n const date = DateTime.fromJSDate(new Date(createdAt)).setZone('Europe/London').toFormat('HH:mm:ss a, dd LLLL yyyy')\n\n string += `[${date}] ${author}: \\n${text}\\n\\n`\n }\n\n string = string.replace(/<a\\b[^>]*>/i, '').replace(/<\\/a>/i, '')\n\n return encodeURIComponent(string)\n}\n","import React, { createContext, useEffect, useReducer, useMemo } from 'react'\nimport { ChatEvent } from '@nice-devone/nice-cxone-chat-web-sdk'\n\nimport { messageNotification } from '../lib/message-notification.js'\n\nimport { initialState, reducer } from './reducer.js'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants.js'\n\nexport const AppContext = createContext(initialState)\n\nexport const AppProvider = ({ sdk, availability, options, children }) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n\n const playSound = messageNotification(options.audioUrl)\n\n /**\n * SDK event handlers\n */\n const onLiveChatRecovered = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.contact.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.contact.customerStatistics.unseenMessagesCount })\n }\n\n const onAssignedAgentChanged = e => {\n dispatch({ type: 'SET_AGENT', payload: e.detail.data.inboxAssignee })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n const onAgentTypingStarted = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: true })\n }\n\n const onAgentTypingEnded = () => {\n dispatch({ type: 'SET_AGENT_TYPING', payload: false })\n }\n\n const onMessageCreated = e => {\n dispatch({ type: 'SET_MESSAGE', payload: e.detail.data.message })\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: e.detail.data.case.customerStatistics.unseenMessagesCount })\n\n const isAudioOn = JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)).audio\n\n if (isAudioOn && e.detail.data.message.direction === 'outbound') {\n playSound()\n }\n }\n\n const onContactStatusChanged = e => {\n dispatch({ type: 'SET_AGENT_STATUS', payload: e.detail.data.case.status })\n }\n\n useEffect(() => {\n sdk.onChatEvent(ChatEvent.LIVECHAT_RECOVERED, onLiveChatRecovered)\n sdk.onChatEvent(ChatEvent.MESSAGE_CREATED, onMessageCreated)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_STARTED, onAgentTypingStarted)\n sdk.onChatEvent(ChatEvent.AGENT_TYPING_ENDED, onAgentTypingEnded)\n sdk.onChatEvent(ChatEvent.ASSIGNED_AGENT_CHANGED, onAssignedAgentChanged)\n sdk.onChatEvent(ChatEvent.CONTACT_STATUS_CHANGED, onContactStatusChanged)\n }, [sdk])\n\n /**\n * Initialize customerId, threadId and whether the webchat should be open\n */\n useEffect(() => {\n dispatch({ type: 'SET_AVAILABILITY', payload: availability })\n\n setCustomerId(window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY))\n setThreadId(window.localStorage.getItem(THREAD_ID_STORAGE_KEY))\n setSettings(JSON.parse(window.localStorage.getItem(SETTINGS_STORAGE_KEY)) || state.settings)\n\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\n if (!payload) {\n window.location.hash = ''\n }\n\n dispatch({ type: 'SET_CHAT_VISIBILITY', payload })\n }\n\n const setCustomerId = customerId => {\n dispatch({ type: 'SET_CUSTOMER_ID', payload: customerId })\n }\n\n const setThreadId = threadId => {\n dispatch({ type: 'SET_THREAD_ID', payload: threadId })\n }\n\n const setThread = thread => {\n dispatch({ type: 'SET_THREAD', payload: thread })\n }\n\n const setMessages = messages => {\n dispatch({ type: 'SET_MESSAGES', payload: messages })\n }\n\n const setSettings = data => {\n dispatch({ type: 'SET_SETTINGS', payload: data })\n }\n\n const setUnseenCount = unseenCount => {\n dispatch({ type: 'SET_UNSEEN_COUNT', payload: unseenCount })\n }\n\n /**\n * Application-wide state and state functions\n */\n const store = useMemo(() => ({\n ...state,\n sdk,\n setSettings,\n setCustomerId,\n setThreadId,\n setThread,\n setMessages,\n setUnseenCount,\n setChatVisibility,\n onLiveChatRecovered,\n onAssignedAgentChanged,\n onAgentTypingStarted,\n onAgentTypingEnded,\n onMessageCreated,\n onContactStatusChanged\n }))\n\n return (\n <AppContext.Provider value={store}>\n {children}\n </AppContext.Provider>\n )\n}\n","import { transformMessages, transformMessage } from '../lib/transform-messages'\nimport { CUSTOMER_ID_STORAGE_KEY, THREAD_ID_STORAGE_KEY, SETTINGS_STORAGE_KEY } from './constants'\n\nconst setSettings = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(SETTINGS_STORAGE_KEY, JSON.stringify(payload))\n } else {\n window.localStorage.removeItem(SETTINGS_STORAGE_KEY)\n }\n\n return {\n ...state,\n settings: payload\n }\n}\n\nconst setCustomerId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(CUSTOMER_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(CUSTOMER_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n customerId: payload\n }\n}\n\nconst setThreadId = (state, payload) => {\n if (payload) {\n window.localStorage.setItem(THREAD_ID_STORAGE_KEY, payload)\n } else {\n window.localStorage.removeItem(THREAD_ID_STORAGE_KEY)\n }\n\n return {\n ...state,\n threadId: payload\n }\n}\n\nconst setChatVisibility = (state, payload) => {\n return {\n ...state,\n isChatOpen: payload\n }\n}\n\nconst setAvailability = (state, payload) => {\n return {\n ...state,\n availability: payload\n }\n}\n\nconst setThread = (state, payload) => {\n return {\n ...state,\n thread: payload\n }\n}\n\nconst setMessage = (state, payload) => {\n return {\n ...state,\n messages: [...state.messages, transformMessage(payload)]\n }\n}\n\nconst setMessages = (state, payload) => {\n return {\n ...state,\n messages: transformMessages(payload).reverse()\n }\n}\n\nconst setAgent = (state, payload) => {\n return {\n ...state,\n agent: payload\n }\n}\n\nconst setAgentIsTyping = (state, payload) => {\n return {\n ...state,\n isAgentTyping: payload\n }\n}\n\nconst setAgentStatus = (state, payload) => {\n return {\n ...state,\n agentStatus: payload\n }\n}\n\nconst setUnseenCount = (state, payload) => {\n return {\n ...state,\n unseenCount: payload\n }\n}\n\nexport const actionsMap = {\n SET_CHAT_VISIBILITY: setChatVisibility,\n SET_AVAILABILITY: setAvailability,\n SET_SETTINGS: setSettings,\n SET_CUSTOMER_ID: setCustomerId,\n SET_THREAD_ID: setThreadId,\n SET_THREAD: setThread,\n SET_MESSAGE: setMessage,\n SET_MESSAGES: setMessages,\n SET_AGENT: setAgent,\n SET_AGENT_TYPING: setAgentIsTyping,\n SET_AGENT_STATUS: setAgentStatus,\n SET_UNSEEN_COUNT: setUnseenCount\n}\n","export const SETTINGS_STORAGE_KEY = 'webchat_settings'\nexport const CUSTOMER_ID_STORAGE_KEY = 'webchat_customer_id'\nexport const THREAD_ID_STORAGE_KEY = 'webchat_thread_id'\n","import { actionsMap } from './actions-map'\n\nexport const initialState = {\n availability: null,\n customerId: null,\n threadId: null,\n thread: null,\n messages: [],\n unseenCount: 0,\n agent: null,\n agentStatus: null,\n isAgentTyping: false,\n isChatOpen: false,\n settings: { audio: true, scroll: true }\n}\n\nexport const reducer = (state, action) => {\n const { type, payload } = action\n\n const fn = actionsMap[type]\n\n if (fn) {\n const actionFunction = fn.bind(this, state, payload)\n return actionFunction()\n }\n\n return state\n}\n","import { useContext } from 'react'\n\nimport { AppContext } from './AppProvider.jsx'\n\nexport const useApp = () => useContext(AppContext)\n","export const useChatSdk = sdk => {\n const connect = async () => sdk.authorize()\n\n const fetchCustomerId = async () => {\n const response = await connect()\n return response?.consumerIdentity.idOnExternalPlatform\n }\n\n const fetchThread = async threadId => {\n await connect()\n return sdk.getThread(threadId)\n }\n\n const fetchMessages = async (thread, threadId) => {\n await connect()\n\n const recovered = await thread.recover(threadId)\n\n const allMessages = []\n let fetchedMessages = recovered.messages\n\n while (fetchedMessages.length) {\n fetchedMessages.map(msg => allMessages.push(msg))\n\n try {\n const response = await thread.loadMoreMessages()\n fetchedMessages = response.data.messages\n } catch (err) {\n fetchedMessages = []\n }\n }\n\n return allMessages\n }\n\n return { connect, fetchCustomerId, fetchThread, fetchMessages }\n}\n","module.exports = require(\"@nice-devone/nice-cxone-chat-web-sdk\");","module.exports = require(\"luxon\");","module.exports = require(\"react\");","module.exports = require(\"react-dom\");","module.exports = require(\"react-dom/client\");","module.exports = require(\"sanitize-html\");","module.exports = require(\"uuid\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ChatSdk } from '@nice-devone/nice-cxone-chat-web-sdk'\nimport { Availability } from './components/availability/availability.jsx'\nimport { checkAvailability } from './lib/check-availability'\nimport { AppProvider } from './store/AppProvider.jsx'\nimport { CUSTOMER_ID_STORAGE_KEY } from './store/constants.js'\n\nexport async function init (container, options) {\n const sdk = new ChatSdk({\n brandId: options.brandId,\n channelId: options.channelId,\n customerId: window.localStorage.getItem(CUSTOMER_ID_STORAGE_KEY) || '',\n environment: options.environment\n })\n\n const root = createRoot(container)\n let availability\n try {\n const result = await checkAvailability(options.availabilityEndpoint)\n availability = result.availability\n } catch (e) {\n availability = 'UNAVAILABLE'\n }\n root.render(\n <AppProvider sdk={sdk} availability={availability} options={options}>\n <Availability />\n </AppProvider>\n )\n}\n"],"names":["React","useEffect","useRef","useState","classnames","Panel","useApp","Availability","availability","messages","isChatOpen","setChatVisibility","unseenCount","isFixed","setIsFixed","buttonRef","onClick","onKeyDown","event","key","preventDefault","onKeyUp","intersectionCallback","entries","entry","isBelowFold","isIntersecting","boundingClientRect","top","observer","window","IntersectionObserver","rootMargin","parentElement","current","observe","unobserve","document","documentElement","classList","toggle","body","TextComponent","createElement","Fragment","length","className","ref","href","draggable","sanitizeHtml","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","Chat","onEndChat","onSettings","thread","agent","agentStatus","isAgentTyping","settings","userMessage","setUserMessage","messageRef","scroll","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","e","target","value","agentName","nickname","firstName","connectionHeadlineText","sendMessage","sendTextMessage","trim","err","console","log","saveChat","transcript","saveChatLink","setAttribute","click","map","msg","index","id","message","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","htmlFor","rows","name","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","tabIndex","role","outbound","direction","messageOwnerSameAsPrevious","assignee","text","children","setUnseenCount","onClose","lastMessageSeen","ButtonComponent","focusable","d","useCallback","createPortal","PreChat","RequestChat","Unavailable","EndChat","Settings","useChatSdk","useFocusedElements","sdk","threadId","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","escapeKeyEvent","addEventListener","onEscapeKey","removeEventListener","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","onForward","onBack","onResume","onEndChatConfirm","ScreenComponent","onCancel","Component","uuid","QUESTION_MAX_LENGTH","setCustomerId","fetchCustomerId","setErrors","questionLength","setQuestionLength","nameRef","questionRef","onQuestionChange","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","style","color","setSettings","optionAudio","setOptionAudio","audio","optionScroll","setOptionScroll","onSave","defaultChecked","setAriaHidden","bool","node","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","shiftKey","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","messageNotification","audioUrl","buffer","context","AudioContext","webkitAudioContext","state","events","unlock","_e","forEach","resume","then","arrayBuffer","decodeAudioData","decodedData","catch","error","source","createBufferSource","connect","destination","start","DateTime","transformMessage","messageContent","createdAt","Date","user","authorEndUserIdentity","fullName","authorUser","transformMessages","now","local","setZone","string","toFormat","split","author","date","fromJSDate","replace","encodeURIComponent","createContext","useReducer","useMemo","ChatEvent","initialState","reducer","CUSTOMER_ID_STORAGE_KEY","THREAD_ID_STORAGE_KEY","SETTINGS_STORAGE_KEY","AppContext","AppProvider","options","dispatch","playSound","onLiveChatRecovered","payload","detail","inboxAssignee","contact","status","customerStatistics","unseenMessagesCount","onAssignedAgentChanged","case","onAgentTypingStarted","onAgentTypingEnded","onMessageCreated","isAudioOn","JSON","parse","localStorage","getItem","onContactStatusChanged","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","location","hash","store","Provider","setItem","stringify","removeItem","setAvailability","setMessage","reverse","setAgent","setAgentIsTyping","setAgentStatus","actionsMap","SET_CHAT_VISIBILITY","SET_AVAILABILITY","SET_SETTINGS","SET_CUSTOMER_ID","SET_THREAD_ID","SET_THREAD","SET_MESSAGE","SET_MESSAGES","SET_AGENT","SET_AGENT_TYPING","SET_AGENT_STATUS","SET_UNSEEN_COUNT","action","fn","actionFunction","bind","useContext","authorize","consumerIdentity","idOnExternalPlatform","getThread","recovered","allMessages","push","loadMoreMessages","createRoot","ChatSdk","init","container","brandId","channelId","environment","root","result","availabilityEndpoint","render"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ import { Panel } from '../panel/panel.jsx'
|
|
|
5
5
|
import { useApp } from '../../store/useApp'
|
|
6
6
|
|
|
7
7
|
export function Availability () {
|
|
8
|
-
const { availability, messages, isChatOpen, setChatVisibility } = useApp()
|
|
8
|
+
const { availability, messages, isChatOpen, setChatVisibility, unseenCount } = useApp()
|
|
9
9
|
|
|
10
10
|
const [isFixed, setIsFixed] = useState(false)
|
|
11
11
|
const buttonRef = useRef()
|
|
@@ -79,6 +79,7 @@ export function Availability () {
|
|
|
79
79
|
onKeyDown={onKeyDown}
|
|
80
80
|
>
|
|
81
81
|
{TextComponent}
|
|
82
|
+
{unseenCount > 0 && !isChatOpen ? <span className='wc-open-btn__unseen'>{unseenCount}</span> : null}
|
|
82
83
|
</a>
|
|
83
84
|
</div>
|
|
84
85
|
</div>
|
|
@@ -34,10 +34,6 @@
|
|
|
34
34
|
margin-bottom: 0;
|
|
35
35
|
fill: govuk-colour('black');
|
|
36
36
|
|
|
37
|
-
@include mq ($from: tablet) {
|
|
38
|
-
margin-right: 10px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
37
|
.govuk-visually-hidden, .wc-availability__unseen {
|
|
42
38
|
pointer-events: none;
|
|
43
39
|
}
|
|
@@ -86,4 +82,108 @@
|
|
|
86
82
|
padding-left: 7px;
|
|
87
83
|
padding-right: 7px;
|
|
88
84
|
}
|
|
89
|
-
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Define a mixin for the common styles
|
|
88
|
+
@mixin link-icon-styles {
|
|
89
|
+
position: relative;
|
|
90
|
+
display: inline-block;
|
|
91
|
+
margin-right: 5px;
|
|
92
|
+
fill: govuk-colour('black');
|
|
93
|
+
@include govuk-font($size: 19);
|
|
94
|
+
|
|
95
|
+
&:last-of-type {
|
|
96
|
+
margin-right: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@include mq ($from: tablet) {
|
|
100
|
+
margin-right: 10px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&__icon {
|
|
104
|
+
color: govuk-colour('black');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
svg {
|
|
108
|
+
position: relative;
|
|
109
|
+
display: inline-block;
|
|
110
|
+
color: currentcolor;
|
|
111
|
+
vertical-align: top;
|
|
112
|
+
margin-right: 7px;
|
|
113
|
+
top: 1px;
|
|
114
|
+
|
|
115
|
+
@include mq ($from: tablet) {
|
|
116
|
+
margin-right: 8px;
|
|
117
|
+
top: 4px;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&:hover {
|
|
122
|
+
color: $govuk-link-hover-colour;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&:active {
|
|
126
|
+
color: govuk-colour('black');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.defra-link-icon {
|
|
131
|
+
@include link-icon-styles;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.wc-open-btn {
|
|
135
|
+
@include link-icon-styles;
|
|
136
|
+
margin-bottom: 0;
|
|
137
|
+
|
|
138
|
+
&:visited {
|
|
139
|
+
color: $govuk-link-colour;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
span {
|
|
143
|
+
pointer-events: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
svg {
|
|
147
|
+
@include mq ($from: 'tablet') {
|
|
148
|
+
top: 3px;
|
|
149
|
+
}
|
|
150
|
+
color: govuk-colour('black');
|
|
151
|
+
pointer-events: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
&:focus {
|
|
155
|
+
box-shadow: none;
|
|
156
|
+
background-color: transparent;
|
|
157
|
+
text-decoration: underline;
|
|
158
|
+
color: $govuk-focus-colour;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
&:hover:not(:focus):not(:active) {
|
|
162
|
+
color: $govuk-link-hover-colour;
|
|
163
|
+
|
|
164
|
+
svg {
|
|
165
|
+
color: govuk-colour('dark-blue');
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.wc-open-btn__unseen {
|
|
169
|
+
background-color: govuk-colour('dark-blue');
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
&__unseen {
|
|
174
|
+
display: inline-block;
|
|
175
|
+
position: relative;
|
|
176
|
+
border-radius: 10px;
|
|
177
|
+
background-color: govuk-colour('black');
|
|
178
|
+
color: #ffffff;
|
|
179
|
+
font-weight: bold;
|
|
180
|
+
font-size: 14px;
|
|
181
|
+
padding: 0 6px;
|
|
182
|
+
margin-left: 5px;
|
|
183
|
+
@include mq ($from: tablet) {
|
|
184
|
+
top: -1px;
|
|
185
|
+
padding-left: 7px;
|
|
186
|
+
padding-right: 7px;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -9,8 +9,8 @@ import { useApp } from '../../store/useApp.js'
|
|
|
9
9
|
import { useTextareaAutosize } from '../../hooks/useTextareaAutosize.js'
|
|
10
10
|
import { formatTranscript } from '../../lib/transform-messages.js'
|
|
11
11
|
|
|
12
|
-
export function Chat ({ onEndChat }) {
|
|
13
|
-
const { availability, thread, messages, agent, agentStatus, isAgentTyping } = useApp()
|
|
12
|
+
export function Chat ({ onEndChat, onSettings }) {
|
|
13
|
+
const { availability, thread, messages, agent, agentStatus, isAgentTyping, settings } = useApp()
|
|
14
14
|
|
|
15
15
|
const [userMessage, setUserMessage] = useState('')
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ export function Chat ({ onEndChat }) {
|
|
|
19
19
|
useTextareaAutosize(messageRef.current, userMessage)
|
|
20
20
|
|
|
21
21
|
useEffect(() => {
|
|
22
|
-
if (messages.length !== 0) {
|
|
22
|
+
if (settings.scroll && messages.length !== 0) {
|
|
23
23
|
const chatBody = document.querySelector('.wc-body')
|
|
24
24
|
chatBody.scrollTop = chatBody.scrollHeight
|
|
25
25
|
}
|
|
@@ -146,8 +146,10 @@ export function Chat ({ onEndChat }) {
|
|
|
146
146
|
<div className='wc-footer__settings'>
|
|
147
147
|
<a
|
|
148
148
|
href='#'
|
|
149
|
+
id='wc-settings'
|
|
149
150
|
className='wc-footer__settings-link'
|
|
150
151
|
data-module='govuk-button'
|
|
152
|
+
onClick={onSettings}
|
|
151
153
|
>
|
|
152
154
|
Settings
|
|
153
155
|
</a>
|
|
@@ -2,11 +2,13 @@ import React from 'react'
|
|
|
2
2
|
import { useApp } from '../../store/useApp.js'
|
|
3
3
|
|
|
4
4
|
export function PanelHeader () {
|
|
5
|
-
const { thread, setChatVisibility } = useApp()
|
|
5
|
+
const { thread, setChatVisibility, setUnseenCount } = useApp()
|
|
6
6
|
|
|
7
7
|
const onClose = e => {
|
|
8
8
|
e.preventDefault()
|
|
9
9
|
setChatVisibility(false)
|
|
10
|
+
thread.lastMessageSeen()
|
|
11
|
+
setUnseenCount(0)
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
let ButtonComponent = (
|