@defra/flood-webchat 0.0.1-beta.30 → 0.0.1-beta.32

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 CHANGED
@@ -16,8 +16,10 @@ __webpack_require__.r(__webpack_exports__);
16
16
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
17
17
  /* harmony import */ var _lib_classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/classnames */ "./src/client/lib/classnames.js");
18
18
  /* harmony import */ var _panel_panel_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../panel/panel.jsx */ "./src/client/components/panel/panel.jsx");
19
- /* harmony import */ var _store_useApp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/useApp */ "./src/client/store/useApp.js");
20
- /* harmony import */ var _lib_history_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../lib/history.js */ "./src/client/lib/history.js");
19
+ /* harmony import */ var _skip_link_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../skip-link.jsx */ "./src/client/components/skip-link.jsx");
20
+ /* harmony import */ var _store_useApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../store/useApp */ "./src/client/store/useApp.js");
21
+ /* harmony import */ var _lib_history_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../lib/history.js */ "./src/client/lib/history.js");
22
+
21
23
 
22
24
 
23
25
 
@@ -31,7 +33,7 @@ function Availability() {
31
33
  unseenCount,
32
34
  threadId,
33
35
  setUnseenCount
34
- } = (0,_store_useApp__WEBPACK_IMPORTED_MODULE_3__.useApp)();
36
+ } = (0,_store_useApp__WEBPACK_IMPORTED_MODULE_4__.useApp)();
35
37
  const [isFixed, setIsFixed] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
36
38
  const buttonRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
37
39
  const onClick = e => {
@@ -39,9 +41,9 @@ function Availability() {
39
41
  setUnseenCount(0);
40
42
  setChatVisibility(!isChatOpen);
41
43
  if (!isChatOpen) {
42
- (0,_lib_history_js__WEBPACK_IMPORTED_MODULE_4__.historyPushState)();
44
+ (0,_lib_history_js__WEBPACK_IMPORTED_MODULE_5__.historyPushState)();
43
45
  } else {
44
- (0,_lib_history_js__WEBPACK_IMPORTED_MODULE_4__.historyReplaceState)();
46
+ (0,_lib_history_js__WEBPACK_IMPORTED_MODULE_5__.historyReplaceState)();
45
47
  }
46
48
  };
47
49
  const onKeyDown = event => {
@@ -100,7 +102,7 @@ function Availability() {
100
102
  "data-module": "govuk-button"
101
103
  }, TextComponent, unseenCount > 0 && !isChatOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
102
104
  className: "wc-availability__unseen"
103
- }, unseenCount) : null))), isChatOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_jsx__WEBPACK_IMPORTED_MODULE_2__.Panel, null));
105
+ }, unseenCount) : null))), isChatOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_panel_panel_jsx__WEBPACK_IMPORTED_MODULE_2__.Panel, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_skip_link_jsx__WEBPACK_IMPORTED_MODULE_3__.SkipLink, null));
104
106
  case 'EXISTING':
105
107
  case 'UNAVAILABLE':
106
108
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
@@ -1175,6 +1177,46 @@ function Unavailable() {
1175
1177
 
1176
1178
  /***/ }),
1177
1179
 
1180
+ /***/ "./src/client/components/skip-link.jsx":
1181
+ /*!*********************************************!*\
1182
+ !*** ./src/client/components/skip-link.jsx ***!
1183
+ \*********************************************/
1184
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1185
+
1186
+ __webpack_require__.r(__webpack_exports__);
1187
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1188
+ /* harmony export */ SkipLink: () => (/* binding */ SkipLink)
1189
+ /* harmony export */ });
1190
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1191
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1192
+ /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "react-dom");
1193
+ /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
1194
+ /* harmony import */ var _store_useApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store/useApp */ "./src/client/store/useApp.js");
1195
+
1196
+
1197
+
1198
+ const SkipLink = () => {
1199
+ const {
1200
+ thread
1201
+ } = (0,_store_useApp__WEBPACK_IMPORTED_MODULE_2__.useApp)();
1202
+ if (!thread) {
1203
+ return null;
1204
+ }
1205
+ const targetContainer = document.getElementById('skip-links');
1206
+ if (!targetContainer) {
1207
+ return null;
1208
+ }
1209
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1210
+ href: "#webchat",
1211
+ className: "govuk-skip-link",
1212
+ "data-module": "govuk-skip-link",
1213
+ "data-wc-skiplink": true,
1214
+ "data-wc-open-btn": true
1215
+ }, "Skip to webchat"), targetContainer));
1216
+ };
1217
+
1218
+ /***/ }),
1219
+
1178
1220
  /***/ "./src/client/hooks/useFocusedElements.js":
1179
1221
  /*!************************************************!*\
1180
1222
  !*** ./src/client/hooks/useFocusedElements.js ***!
@@ -1329,10 +1371,10 @@ const historyPushState = () => {
1329
1371
  };
1330
1372
  const historyReplaceState = () => {
1331
1373
  if (window.history.state?.history) {
1332
- window.history.back();
1374
+ return window.history.back();
1333
1375
  }
1334
1376
  const url = window.location.href.split('#')[0];
1335
- window.history.replaceState(null, null, url);
1377
+ return window.history.replaceState(null, null, url);
1336
1378
  };
1337
1379
 
1338
1380
  /***/ }),
@@ -1 +1 @@
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/feedback.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/history.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 \"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'\nimport { historyPushState, historyReplaceState } from '../../lib/history.js'\n\nexport function Availability () {\n const { availability, isChatOpen, setChatVisibility, unseenCount, threadId, setUnseenCount } = useApp()\n\n const [isFixed, setIsFixed] = useState(false)\n const buttonRef = useRef()\n\n const onClick = e => {\n e.preventDefault()\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n\n if (!isChatOpen) {\n historyPushState()\n } else {\n historyReplaceState()\n }\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 setUnseenCount(0)\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 && threadId)\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-u-scroll-padding', isFixed)\n document.body.classList.toggle('wc-u-scroll-padding', isFixed)\n }, [isFixed])\n\n let TextComponent = (<>Show chat</>)\n\n if (!threadId) {\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 role='button'\n data-module='govuk-button'\n >\n {TextComponent}\n {unseenCount > 0 && !isChatOpen ? <span className='wc-availability__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'\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 ({ onEndChatScreen, onSettingsScreen }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping, settings, isKeyboard } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n const [focusVisibleWithin, setFocusVisibleWithin] = useState(false)\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 = () => {\n if (messageRef.current.value.length === 0) {\n return\n }\n\n try {\n thread.sendTextMessage(messageRef.current.value.trim())\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n const handleKeyPress = e => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n sendMessage()\n }\n }\n\n const handleSubmit = e => {\n e.preventDefault()\n sendMessage()\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 }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability'>{connectionHeadlineText}</p>\n <a className='wc-status__link' href='#' data-module='govuk-button' onClick={onEndChatScreen}>End chat</a>\n </div>\n\n <div className='wc-body' tabIndex='0'>\n <ul className='wc-chat'>\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 outbound'>\n <div className='wc-chat__from'>{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\n <PanelFooter>\n <form className={`wc-form${focusVisibleWithin ? ' wc-focus-within' : ''}`} noValidate onSubmit={handleSubmit}>\n <label className='govuk-label wc-form__label' 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'\n id='wc-form-textarea'\n name='message'\n onChange={onChange}\n onKeyDown={handleKeyPress}\n onFocus={() => { setFocusVisibleWithin(isKeyboard) }}\n onBlur={() => { setFocusVisibleWithin(false) }}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button'\n value='Send'\n data-prevent-double-click='true'\n />\n </form>\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={onSettingsScreen}\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='wc-error-summary__title 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 wc-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', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <div className={classnames('wc-chat__text', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </div>\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'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function PanelHeader () {\n const { thread, threadId, setChatVisibility, setUnseenCount, isMobile } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n historyReplaceState()\n\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n }\n\n const BackButtonComponent = (\n <button className='wc-header__back' 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='M4.828,11L12.314,18.485L10.899,19.899L1,10L10.899,0.101L12.314,1.515L4.828,9L19,9L19,11L4.828,11Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const CloseButtonComponent = (\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 const MinimiseButtonComponent = (\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 const isMobileAndHasHistory = isMobile && window.history.state\n const isMobileAndNoHistory = isMobile && !window.history.state\n\n let RightButtonComponent = CloseButtonComponent\n\n if (thread) {\n RightButtonComponent = MinimiseButtonComponent\n\n if (isMobileAndNoHistory) {\n RightButtonComponent = MinimiseButtonComponent\n }\n }\n\n if (!thread && isMobileAndNoHistory) {\n RightButtonComponent = CloseButtonComponent\n }\n\n if (isMobileAndHasHistory) {\n RightButtonComponent = null\n }\n\n return (\n <div className='wc-header'>\n {isMobileAndHasHistory ? BackButtonComponent : null}\n\n <h2 id='wc-header-title' className='wc-header__title'>\n Floodline Webchat\n </h2>\n\n {RightButtonComponent}\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'\nimport { Feedback } from '../screens/feedback.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function Panel () {\n const { sdk, availability, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages, setUnseenCount, isMobile } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n setChatVisibility(false)\n historyReplaceState()\n }\n }, [thread, threadId, setUnseenCount, setChatVisibility])\n\n /**\n * We need ammend classes on the body element to handle mobile behaviour\n */\n useEffect(() => {\n document.body.classList.remove('wc-u-hidden')\n document.getElementsByTagName('html')[0].classList.add('wc-u-html')\n document.body.classList.add('wc-u-body')\n return () => {\n document.getElementsByTagName('html')[0].classList.remove('wc-u-html')\n document.body.classList.remove('wc-u-body')\n }\n }, [isMobile])\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', onEscapeKey)\n }\n }, [onEscapeKey, setChatVisibility])\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 handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const goToPreChatScreen = handleScreenChange(0)\n const goToRequestChatScreen = handleScreenChange(1)\n const goToChatScreen = handleScreenChange(2)\n const goToEndChatScreen = handleScreenChange(3)\n const goToFeedbackScreen = handleScreenChange(4)\n const goToSettingsScreen = handleScreenChange(5)\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n break\n case 1:\n ScreenComponent = <RequestChat onPreChatScreen={goToPreChatScreen} />\n break\n case 2:\n ScreenComponent = <Chat onSettingsScreen={goToSettingsScreen} onEndChatScreen={goToEndChatScreen} />\n break\n case 3:\n ScreenComponent = <EndChat onChatScreen={goToChatScreen} onEndChatConfirm={goToFeedbackScreen} />\n break\n case 4:\n ScreenComponent = <Feedback onCancel={() => setChatVisibility(false)} />\n break\n case 5:\n ScreenComponent = <Settings onCancel={goToChatScreen} />\n break\n default:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\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 <div className='wc-panel__inner'>\n {ScreenComponent}\n </div>\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'\nimport { useApp } from '../../store/useApp.js'\n\nexport function EndChat ({ onChatScreen, onEndChatConfirm }) {\n const { setCustomerId, setThreadId, setMessages, agentStatus, thread, setUnseenCount } = useApp()\n\n const confirmEndChat = async e => {\n e.preventDefault()\n\n setThreadId()\n setMessages([])\n setCustomerId()\n thread.lastMessageSeen()\n setUnseenCount(0)\n\n // End chat if still open\n if (agentStatus !== 'closed') {\n thread.endChat()\n }\n\n onEndChatConfirm(e)\n }\n\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a href='#endChat' role='button' className='wc-button govuk-button' data-module='govuk-button' id='confirmEndChat' onClick={confirmEndChat}>Yes, end chat</a>\n <a href='#resumeChat' role='button' className='wc-link govuk-link' onClick={onChatScreen}>No, resume chat</a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Feedback ({ onCancel }) {\n const feedbackCancel = async e => {\n onCancel(e)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading'>Give Feedback on Floodline webchat</h3>\n <p>Please note we’re unable to respond to feedback.</p>\n <p><a className='govuk-link' href='#' target='_blank' rel='noreferrer'>Feedback Link</a></p>\n <p><a id='feedback-cancel' className='wc-link govuk-link' href='#' data-module='govuk-button' role='button' onClick={feedbackCancel}>Close</a></p>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onContinue }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>What you can use webchat for</h3>\n <p>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p>You can use webchat to get:</p>\n <ul className='wc-list'>\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 <p>\n There are other ways to&nbsp;\n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings' target='_blank' rel='noreferrer'>\n sign up for flood warnings\n </a>\n &nbsp;and&nbsp;\n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login' target='_blank' rel='noreferrer'>\n manage your flood warnings account\n </a>.\n </p>\n <p>\n Do not use webchat to&nbsp;\n <a\n className='govuk-link'\n href='https://www.gov.uk/report-flood-cause'\n target='_blank'\n rel='noreferrer'\n >\n report a flood\n </a>.\n </p>\n\n <button className='govuk-button wc-button govuk-!-margin-top-1' data-module='govuk-button' onClick={onContinue}>Continue</button>\n\n <h3 className='wc-heading'>Other flood information</h3>\n\n <p>Call Floodline for all other flood and flood warning information.</p>\n <p>\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' target='_blank' rel='noreferrer'>Find out more about call charges</a>\n </p>\n </div>\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 ({ onPreChatScreen }) {\n const { sdk, setCustomerId, setThreadId, setThread } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n const [isButtonDisabled, setButtonDisabled] = useState(false)\n\n const nameRef = useRef()\n const questionRef = useRef()\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 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 buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request Chat'\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 setButtonDisabled(true)\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 thread.setCustomField('threadid', threadId)\n } catch (err) {\n console.log('[Request Chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onPreChatScreen}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 className='wc-heading' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('wc-form-group', 'govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='wc-label 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('wc-input', '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='wc-form-group 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='wc-label 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('wc-textarea', 'govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div\n id='wc-question-info'\n className='wc-hint govuk-hint govuk-char-count__msg'\n style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }}\n aria-hidden='true'\n >\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 <div className='wc-inset-text govuk-inset-text'>\n By selecting 'Request chat' you agree to the terms of our&nbsp;\n <a href='https://check-for-flooding.service.gov.uk/privacy-notice' target='_blank' rel='noreferrer' className='govuk-link'>privacy notice</a>.\n </div>\n\n <button\n className='wc-button govuk-button govuk-!-margin-top-1'\n data-module='govuk-button'\n onClick={onRequestChat}\n disabled={isButtonDisabled}\n >\n {buttonLabel}\n </button>\n </form>\n </div>\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 <div className='wc-content'>\n <fieldset className='govuk-fieldset govuk-!-margin-bottom-4'>\n <legend className='govuk-fieldset__legend govuk-fieldset__legend'>\n <h3 id='wc-subtitle' className='wc-heading'>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='wc-label govuk-label govuk-checkboxes__label' 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='wc-label govuk-label govuk-checkboxes__label' 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='wc-button govuk-button' data-module='govuk-button' onClick={onSave}>Save</a>\n <a id='settings-cancel' href='#' className='wc-link govuk-link' data-module='govuk-button' role='button' onClick={onCancel}>Cancel</a>\n </div>\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 ariaHidden = 'aria-hidden'\nconst dataWcInert = 'data-wc-inert'\n\nconst setAriaHidden = isInert => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n // We only want to toggle elements that aren't already inert\n if (isInert && !node.getAttribute(ariaHidden)) {\n node.setAttribute(ariaHidden, 'true')\n node.setAttribute(dataWcInert, '')\n } else if (node.hasAttribute(dataWcInert)) {\n node.removeAttribute(ariaHidden)\n node.removeAttribute(dataWcInert)\n }\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 historyPushState = () => {\n const url = window.location.href.split('#')[0]\n window.history.pushState({ history: true }, null, `${url}#webchat`)\n}\n\nexport const historyReplaceState = () => {\n if (window.history.state?.history) {\n window.history.back()\n }\n\n const url = window.location.href.split('#')[0]\n window.history.replaceState(null, null, url)\n}\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 { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: 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')}\\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 const onMatchMedia = e => {\n dispatch({ type: 'TOGGLE_IS_MOBILE', payload: e.matches })\n }\n\n const onKeydown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: true })\n }\n\n const onPointerdown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: false })\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 // We need to know if it is a mobile and if it is a keyboard interaction\n window.matchMedia('(max-width: 640px)').addEventListener('change', onMatchMedia)\n window.addEventListener('keydown', onKeydown)\n window.addEventListener('pointerdown', onPointerdown)\n // Tidying up\n return () => {\n window.removeEventListener('change', onMatchMedia)\n window.removeEventListener('keydown', onKeydown)\n window.removeEventListener('pointerdown', onPointerdown)\n }\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\n /**\n * Set browser history on start chat click\n */\n useEffect(() => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n\n const onBrowserNavigation = window.addEventListener('popstate', () => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n } else {\n setChatVisibility(false)\n }\n })\n\n return () => {\n window.removeEventListener('popstate', onBrowserNavigation)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\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\nconst toggleIsMobile = (state, payload) => {\n return {\n ...state,\n isMobile: payload\n }\n}\n\nconst toggleIsKeyboard = (state, payload) => {\n return {\n ...state,\n isKeyboard: 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 TOGGLE_IS_MOBILE: toggleIsMobile,\n TOGGLE_IS_KEYBOARD: toggleIsKeyboard\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 isMobile: window.matchMedia('(max-width: 640px)').matches,\n isKeyboard: 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(\"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","historyPushState","historyReplaceState","Availability","availability","isChatOpen","setChatVisibility","unseenCount","threadId","setUnseenCount","isFixed","setIsFixed","buttonRef","onClick","e","preventDefault","onKeyDown","event","key","onKeyUp","intersectionCallback","entries","entry","isBelowFold","isIntersecting","boundingClientRect","top","observer","window","IntersectionObserver","rootMargin","parentElement","current","observe","unobserve","document","documentElement","classList","toggle","body","TextComponent","createElement","Fragment","className","ref","href","draggable","role","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","Chat","onEndChatScreen","onSettingsScreen","thread","messages","agent","agentStatus","isAgentTyping","settings","isKeyboard","userMessage","setUserMessage","focusVisibleWithin","setFocusVisibleWithin","messageRef","scroll","length","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","target","value","agentName","nickname","firstName","connectionHeadlineText","sendMessage","sendTextMessage","trim","err","console","log","handleKeyPress","shiftKey","handleSubmit","saveChat","transcript","saveChatLink","setAttribute","tabIndex","map","msg","index","id","message","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","onSubmit","htmlFor","rows","name","onFocus","onBlur","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","outbound","direction","messageOwnerSameAsPrevious","assignee","text","children","isMobile","onClose","lastMessageSeen","BackButtonComponent","focusable","d","CloseButtonComponent","MinimiseButtonComponent","isMobileAndHasHistory","history","state","isMobileAndNoHistory","RightButtonComponent","useCallback","createPortal","PreChat","RequestChat","Unavailable","EndChat","Settings","Feedback","useChatSdk","useFocusedElements","sdk","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","onEscapeKey","getElementsByTagName","addEventListener","removeEventListener","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","goToPreChatScreen","goToRequestChatScreen","goToChatScreen","goToEndChatScreen","goToFeedbackScreen","goToSettingsScreen","ScreenComponent","onContinue","onPreChatScreen","onChatScreen","onEndChatConfirm","onCancel","Component","setCustomerId","confirmEndChat","endChat","feedbackCancel","rel","uuid","QUESTION_MAX_LENGTH","fetchCustomerId","setErrors","questionLength","setQuestionLength","isButtonDisabled","setButtonDisabled","nameRef","questionRef","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","onQuestionChange","buttonLabel","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","setCustomField","style","color","disabled","setSettings","optionAudio","setOptionAudio","audio","optionScroll","setOptionScroll","onSave","defaultChecked","ariaHidden","dataWcInert","setAriaHidden","isInert","node","hasAttribute","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","url","location","split","pushState","back","replaceState","messageNotification","audioUrl","buffer","context","AudioContext","webkitAudioContext","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","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","onMatchMedia","matches","onKeydown","onPointerdown","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","matchMedia","hash","onBrowserNavigation","store","Provider","setItem","stringify","removeItem","setAvailability","setMessage","reverse","setAgent","setAgentIsTyping","setAgentStatus","toggleIsMobile","toggleIsKeyboard","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","TOGGLE_IS_MOBILE","TOGGLE_IS_KEYBOARD","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":""}
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/feedback.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/components/skip-link.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/history.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 \"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 { SkipLink } from '../skip-link.jsx'\n\nimport { useApp } from '../../store/useApp'\nimport { historyPushState, historyReplaceState } from '../../lib/history.js'\n\nexport function Availability () {\n const { availability, isChatOpen, setChatVisibility, unseenCount, threadId, setUnseenCount } = useApp()\n\n const [isFixed, setIsFixed] = useState(false)\n const buttonRef = useRef()\n\n const onClick = e => {\n e.preventDefault()\n setUnseenCount(0)\n setChatVisibility(!isChatOpen)\n\n if (!isChatOpen) {\n historyPushState()\n } else {\n historyReplaceState()\n }\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 setUnseenCount(0)\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 && threadId)\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-u-scroll-padding', isFixed)\n document.body.classList.toggle('wc-u-scroll-padding', isFixed)\n }, [isFixed])\n\n let TextComponent = (<>Show chat</>)\n\n if (!threadId) {\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 role='button'\n data-module='govuk-button'\n >\n {TextComponent}\n {unseenCount > 0 && !isChatOpen ? <span className='wc-availability__unseen'>{unseenCount}</span> : null}\n </a>\n </div>\n </div>\n {isChatOpen && <Panel />}\n <SkipLink />\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'\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 ({ onEndChatScreen, onSettingsScreen }) {\n const { availability, thread, messages, agent, agentStatus, isAgentTyping, settings, isKeyboard } = useApp()\n\n const [userMessage, setUserMessage] = useState('')\n const [focusVisibleWithin, setFocusVisibleWithin] = useState(false)\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 = () => {\n if (messageRef.current.value.length === 0) {\n return\n }\n\n try {\n thread.sendTextMessage(messageRef.current.value.trim())\n } catch (err) {\n console.log('[Chat Error] sendMessage', err)\n }\n\n setUserMessage('')\n }\n const handleKeyPress = e => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n sendMessage()\n }\n }\n\n const handleSubmit = e => {\n e.preventDefault()\n sendMessage()\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 }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-status'>\n <p className='wc-status__availability'>{connectionHeadlineText}</p>\n <a className='wc-status__link' href='#' data-module='govuk-button' onClick={onEndChatScreen}>End chat</a>\n </div>\n\n <div className='wc-body' tabIndex='0'>\n <ul className='wc-chat'>\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 outbound'>\n <div className='wc-chat__from'>{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\n <PanelFooter>\n <form className={`wc-form${focusVisibleWithin ? ' wc-focus-within' : ''}`} noValidate onSubmit={handleSubmit}>\n <label className='govuk-label wc-form__label' 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'\n id='wc-form-textarea'\n name='message'\n onChange={onChange}\n onKeyDown={handleKeyPress}\n onFocus={() => { setFocusVisibleWithin(isKeyboard) }}\n onBlur={() => { setFocusVisibleWithin(false) }}\n value={userMessage}\n />\n\n <input\n type='submit'\n className='wc-form__button govuk-button'\n value='Send'\n data-prevent-double-click='true'\n />\n </form>\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={onSettingsScreen}\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='wc-error-summary__title 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 wc-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', outbound ? 'outbound' : 'inbound')}>\n <div className='wc-chat__from'>\n {messageOwnerSameAsPrevious ? null : <span>{outbound ? message.assignee : 'You'}</span>}\n <span className='govuk-visually-hidden'>:</span>\n </div>\n <div className={classnames('wc-chat__text', outbound ? 'outbound' : 'inbound')}>\n {message.text}\n </div>\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'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function PanelHeader () {\n const { thread, threadId, setChatVisibility, setUnseenCount, isMobile } = useApp()\n\n const onClose = e => {\n e.preventDefault()\n setChatVisibility(false)\n historyReplaceState()\n\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n }\n\n const BackButtonComponent = (\n <button className='wc-header__back' 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='M4.828,11L12.314,18.485L10.899,19.899L1,10L10.899,0.101L12.314,1.515L4.828,9L19,9L19,11L4.828,11Z' fill='currentColor' />\n </svg>\n </button>\n )\n\n const CloseButtonComponent = (\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 const MinimiseButtonComponent = (\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 const isMobileAndHasHistory = isMobile && window.history.state\n const isMobileAndNoHistory = isMobile && !window.history.state\n\n let RightButtonComponent = CloseButtonComponent\n\n if (thread) {\n RightButtonComponent = MinimiseButtonComponent\n\n if (isMobileAndNoHistory) {\n RightButtonComponent = MinimiseButtonComponent\n }\n }\n\n if (!thread && isMobileAndNoHistory) {\n RightButtonComponent = CloseButtonComponent\n }\n\n if (isMobileAndHasHistory) {\n RightButtonComponent = null\n }\n\n return (\n <div className='wc-header'>\n {isMobileAndHasHistory ? BackButtonComponent : null}\n\n <h2 id='wc-header-title' className='wc-header__title'>\n Floodline Webchat\n </h2>\n\n {RightButtonComponent}\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'\nimport { Feedback } from '../screens/feedback.jsx'\n\nimport { useApp } from '../../store/useApp.js'\nimport { useChatSdk } from '../../store/useChatSdk.js'\nimport { useFocusedElements } from '../../hooks/useFocusedElements.js'\nimport { historyReplaceState } from '../../lib/history.js'\n\nexport function Panel () {\n const { sdk, availability, thread, threadId, setThread, setThreadId, setChatVisibility, setMessages, setUnseenCount, isMobile } = useApp()\n const { fetchThread, fetchMessages } = useChatSdk(sdk)\n\n const [screen, setScreen] = useState(threadId ? 2 : 0)\n\n useFocusedElements(screen)\n\n const onEscapeKey = useCallback(e => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n if (threadId) {\n thread?.lastMessageSeen()\n setUnseenCount(0)\n }\n setChatVisibility(false)\n historyReplaceState()\n }\n }, [thread, threadId, setUnseenCount, setChatVisibility])\n\n /**\n * We need ammend classes on the body element to handle mobile behaviour\n */\n useEffect(() => {\n document.body.classList.remove('wc-u-hidden')\n document.getElementsByTagName('html')[0].classList.add('wc-u-html')\n document.body.classList.add('wc-u-body')\n return () => {\n document.getElementsByTagName('html')[0].classList.remove('wc-u-html')\n document.body.classList.remove('wc-u-body')\n }\n }, [isMobile])\n\n /**\n * Initializes the eventListener for pressing the escape key\n */\n useEffect(() => {\n document.addEventListener('keydown', onEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', onEscapeKey)\n }\n }, [onEscapeKey, setChatVisibility])\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 handleScreenChange = newScreen => e => {\n e.preventDefault()\n setScreen(newScreen)\n }\n\n const goToPreChatScreen = handleScreenChange(0)\n const goToRequestChatScreen = handleScreenChange(1)\n const goToChatScreen = handleScreenChange(2)\n const goToEndChatScreen = handleScreenChange(3)\n const goToFeedbackScreen = handleScreenChange(4)\n const goToSettingsScreen = handleScreenChange(5)\n let ScreenComponent\n\n switch (screen) {\n case 0:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\n break\n case 1:\n ScreenComponent = <RequestChat onPreChatScreen={goToPreChatScreen} />\n break\n case 2:\n ScreenComponent = <Chat onSettingsScreen={goToSettingsScreen} onEndChatScreen={goToEndChatScreen} />\n break\n case 3:\n ScreenComponent = <EndChat onChatScreen={goToChatScreen} onEndChatConfirm={goToFeedbackScreen} />\n break\n case 4:\n ScreenComponent = <Feedback onCancel={() => setChatVisibility(false)} />\n break\n case 5:\n ScreenComponent = <Settings onCancel={goToChatScreen} />\n break\n default:\n ScreenComponent = <PreChat onContinue={goToRequestChatScreen} />\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 <div className='wc-panel__inner'>\n {ScreenComponent}\n </div>\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'\nimport { useApp } from '../../store/useApp.js'\n\nexport function EndChat ({ onChatScreen, onEndChatConfirm }) {\n const { setCustomerId, setThreadId, setMessages, agentStatus, thread, setUnseenCount } = useApp()\n\n const confirmEndChat = async e => {\n e.preventDefault()\n\n setThreadId()\n setMessages([])\n setCustomerId()\n thread.lastMessageSeen()\n setUnseenCount(0)\n\n // End chat if still open\n if (agentStatus !== 'closed') {\n thread.endChat()\n }\n\n onEndChatConfirm(e)\n }\n\n return (\n <>\n <PanelHeader />\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>Are you sure you want to end the chat?</h3>\n <div className='govuk-button-group'>\n <a href='#endChat' role='button' className='wc-button govuk-button' data-module='govuk-button' id='confirmEndChat' onClick={confirmEndChat}>Yes, end chat</a>\n <a href='#resumeChat' role='button' className='wc-link govuk-link' onClick={onChatScreen}>No, resume chat</a>\n </div>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function Feedback ({ onCancel }) {\n const feedbackCancel = async e => {\n onCancel(e)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 id='wc-subtitle' className='wc-heading'>Give Feedback on Floodline webchat</h3>\n <p>Please note we’re unable to respond to feedback.</p>\n <p><a className='govuk-link' href='#' target='_blank' rel='noreferrer'>Feedback Link</a></p>\n <p><a id='feedback-cancel' className='wc-link govuk-link' href='#' data-module='govuk-button' role='button' onClick={feedbackCancel}>Close</a></p>\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { PanelHeader } from '../panel/panel-header.jsx'\n\nexport function PreChat ({ onContinue }) {\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <h3 className='wc-heading' aria-live='polite'>What you can use webchat for</h3>\n <p>Webchat lets you talk directly to a Floodline adviser.</p>\n\n <p>You can use webchat to get:</p>\n <ul className='wc-list'>\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 <p>\n There are other ways to&nbsp;\n <a className='govuk-link' href='https://www.gov.uk/sign-up-for-flood-warnings' target='_blank' rel='noreferrer'>\n sign up for flood warnings\n </a>\n &nbsp;and&nbsp;\n <a className='govuk-link' href='https://www.fws.environment-agency.gov.uk/app/olr/login' target='_blank' rel='noreferrer'>\n manage your flood warnings account\n </a>.\n </p>\n <p>\n Do not use webchat to&nbsp;\n <a\n className='govuk-link'\n href='https://www.gov.uk/report-flood-cause'\n target='_blank'\n rel='noreferrer'\n >\n report a flood\n </a>.\n </p>\n\n <button className='govuk-button wc-button govuk-!-margin-top-1' data-module='govuk-button' onClick={onContinue}>Continue</button>\n\n <h3 className='wc-heading'>Other flood information</h3>\n\n <p>Call Floodline for all other flood and flood warning information.</p>\n <p>\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' target='_blank' rel='noreferrer'>Find out more about call charges</a>\n </p>\n </div>\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 ({ onPreChatScreen }) {\n const { sdk, setCustomerId, setThreadId, setThread } = useApp()\n const { fetchCustomerId, fetchThread } = useChatSdk(sdk)\n const [errors, setErrors] = useState({})\n const [questionLength, setQuestionLength] = useState(0)\n const [isButtonDisabled, setButtonDisabled] = useState(false)\n\n const nameRef = useRef()\n const questionRef = useRef()\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 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 buttonLabel = isButtonDisabled ? 'Requesting...' : 'Request Chat'\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 setButtonDisabled(true)\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 thread.setCustomField('threadid', threadId)\n } catch (err) {\n console.log('[Request Chat Error]', err)\n }\n }\n\n setErrors(errs)\n }\n\n return (\n <>\n <PanelHeader />\n\n <div className='wc-body'>\n <div className='wc-content'>\n <a href='#' className='wc-back-link govuk-back-link' onClick={onPreChatScreen}>\n What you can use webchat for\n </a>\n\n <ErrorSummary errors={errors} />\n\n <h3 className='wc-heading' aria-live='polite'>\n Your name and question\n </h3>\n\n <form>\n <div className={classnames('wc-form-group', 'govuk-form-group', errors.name && 'govuk-form-group--error')}>\n <label className='wc-label 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('wc-input', '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='wc-form-group 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='wc-label 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('wc-textarea', 'govuk-textarea', 'govuk-js-character-count', !isQuestionLengthValid || errors.question ? 'govuk-textarea--error' : '')}\n data-testid='request-chat-user-question'\n />\n <div\n id='wc-question-info'\n className='wc-hint govuk-hint govuk-char-count__msg'\n style={{ color: `${!isQuestionLengthValid ? '#d4351c' : ''}` }}\n aria-hidden='true'\n >\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 <div className='wc-inset-text govuk-inset-text'>\n By selecting 'Request chat' you agree to the terms of our&nbsp;\n <a href='https://check-for-flooding.service.gov.uk/privacy-notice' target='_blank' rel='noreferrer' className='govuk-link'>privacy notice</a>.\n </div>\n\n <button\n className='wc-button govuk-button govuk-!-margin-top-1'\n data-module='govuk-button'\n onClick={onRequestChat}\n disabled={isButtonDisabled}\n >\n {buttonLabel}\n </button>\n </form>\n </div>\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 <div className='wc-content'>\n <fieldset className='govuk-fieldset govuk-!-margin-bottom-4'>\n <legend className='govuk-fieldset__legend govuk-fieldset__legend'>\n <h3 id='wc-subtitle' className='wc-heading'>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='wc-label govuk-label govuk-checkboxes__label' 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='wc-label govuk-label govuk-checkboxes__label' 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='wc-button govuk-button' data-module='govuk-button' onClick={onSave}>Save</a>\n <a id='settings-cancel' href='#' className='wc-link govuk-link' data-module='govuk-button' role='button' onClick={onCancel}>Cancel</a>\n </div>\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 React from 'react'\nimport { createPortal } from 'react-dom'\nimport { useApp } from '../store/useApp'\n\nexport const SkipLink = () => {\n const { thread } = useApp()\n\n if (!thread) {\n return null\n }\n\n const targetContainer = document.getElementById('skip-links')\n\n if (!targetContainer) {\n return null\n }\n\n return (\n <>\n {createPortal(\n <a\n href='#webchat'\n className='govuk-skip-link'\n data-module='govuk-skip-link'\n data-wc-skiplink\n data-wc-open-btn\n >\n Skip to webchat\n </a>,\n targetContainer\n )}\n </>\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nconst ariaHidden = 'aria-hidden'\nconst dataWcInert = 'data-wc-inert'\n\nconst setAriaHidden = isInert => {\n for (const node of document.body.children) {\n if (node.id !== 'wc-panel') {\n // We only want to toggle elements that aren't already inert\n if (isInert && !node.getAttribute(ariaHidden)) {\n node.setAttribute(ariaHidden, 'true')\n node.setAttribute(dataWcInert, '')\n } else if (node.hasAttribute(dataWcInert)) {\n node.removeAttribute(ariaHidden)\n node.removeAttribute(dataWcInert)\n }\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 historyPushState = () => {\n const url = window.location.href.split('#')[0]\n window.history.pushState({ history: true }, null, `${url}#webchat`)\n}\n\nexport const historyReplaceState = () => {\n if (window.history.state?.history) {\n return window.history.back()\n }\n\n const url = window.location.href.split('#')[0]\n return window.history.replaceState(null, null, url)\n}\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 { DateTime } from 'luxon'\n\nexport const transformMessage = message => {\n return {\n id: message.id,\n text: 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')}\\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 const onMatchMedia = e => {\n dispatch({ type: 'TOGGLE_IS_MOBILE', payload: e.matches })\n }\n\n const onKeydown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: true })\n }\n\n const onPointerdown = () => {\n dispatch({ type: 'TOGGLE_IS_KEYBOARD', payload: false })\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 // We need to know if it is a mobile and if it is a keyboard interaction\n window.matchMedia('(max-width: 640px)').addEventListener('change', onMatchMedia)\n window.addEventListener('keydown', onKeydown)\n window.addEventListener('pointerdown', onPointerdown)\n // Tidying up\n return () => {\n window.removeEventListener('change', onMatchMedia)\n window.removeEventListener('keydown', onKeydown)\n window.removeEventListener('pointerdown', onPointerdown)\n }\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\n /**\n * Set browser history on start chat click\n */\n useEffect(() => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n }\n\n const onBrowserNavigation = window.addEventListener('popstate', () => {\n if (window.location.hash === '#webchat') {\n setChatVisibility(true)\n } else {\n setChatVisibility(false)\n }\n })\n\n return () => {\n window.removeEventListener('popstate', onBrowserNavigation)\n }\n }, [])\n\n /**\n * State update functions\n */\n const setChatVisibility = payload => {\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\nconst toggleIsMobile = (state, payload) => {\n return {\n ...state,\n isMobile: payload\n }\n}\n\nconst toggleIsKeyboard = (state, payload) => {\n return {\n ...state,\n isKeyboard: 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 TOGGLE_IS_MOBILE: toggleIsMobile,\n TOGGLE_IS_KEYBOARD: toggleIsKeyboard\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 isMobile: window.matchMedia('(max-width: 640px)').matches,\n isKeyboard: 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(\"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","SkipLink","useApp","historyPushState","historyReplaceState","Availability","availability","isChatOpen","setChatVisibility","unseenCount","threadId","setUnseenCount","isFixed","setIsFixed","buttonRef","onClick","e","preventDefault","onKeyDown","event","key","onKeyUp","intersectionCallback","entries","entry","isBelowFold","isIntersecting","boundingClientRect","top","observer","window","IntersectionObserver","rootMargin","parentElement","current","observe","unobserve","document","documentElement","classList","toggle","body","TextComponent","createElement","Fragment","className","ref","href","draggable","role","PanelHeader","PanelFooter","Message","useTextareaAutosize","formatTranscript","Chat","onEndChatScreen","onSettingsScreen","thread","messages","agent","agentStatus","isAgentTyping","settings","isKeyboard","userMessage","setUserMessage","focusVisibleWithin","setFocusVisibleWithin","messageRef","scroll","length","chatBody","querySelector","scrollTop","scrollHeight","label","remove","add","onChange","target","value","agentName","nickname","firstName","connectionHeadlineText","sendMessage","sendTextMessage","trim","err","console","log","handleKeyPress","shiftKey","handleSubmit","saveChat","transcript","saveChatLink","setAttribute","tabIndex","map","msg","index","id","message","previousMessage","width","height","x","y","viewBox","stroke","cx","cy","r","fill","noValidate","onSubmit","htmlFor","rows","name","onFocus","onBlur","type","download","ErrorSummary","errors","errs","Object","keys","goToInput","getAttribute","focus","outbound","direction","messageOwnerSameAsPrevious","assignee","text","children","isMobile","onClose","lastMessageSeen","BackButtonComponent","focusable","d","CloseButtonComponent","MinimiseButtonComponent","isMobileAndHasHistory","history","state","isMobileAndNoHistory","RightButtonComponent","useCallback","createPortal","PreChat","RequestChat","Unavailable","EndChat","Settings","Feedback","useChatSdk","useFocusedElements","sdk","setThread","setThreadId","setMessages","fetchThread","fetchMessages","screen","setScreen","onEscapeKey","getElementsByTagName","addEventListener","removeEventListener","recover","fetchedThread","fetchedMessages","handleScreenChange","newScreen","goToPreChatScreen","goToRequestChatScreen","goToChatScreen","goToEndChatScreen","goToFeedbackScreen","goToSettingsScreen","ScreenComponent","onContinue","onPreChatScreen","onChatScreen","onEndChatConfirm","onCancel","Component","setCustomerId","confirmEndChat","endChat","feedbackCancel","rel","uuid","QUESTION_MAX_LENGTH","fetchCustomerId","setErrors","questionLength","setQuestionLength","isButtonDisabled","setButtonDisabled","nameRef","questionRef","isQuestionLengthValid","questionLengthRemaining","questionLengthExceeded","questionHint","onQuestionChange","buttonLabel","onRequestChat","question","v4","customerId","getCustomer","setName","startChat","setCustomField","style","color","disabled","setSettings","optionAudio","setOptionAudio","audio","optionScroll","setOptionScroll","onSave","defaultChecked","targetContainer","getElementById","ariaHidden","dataWcInert","setAriaHidden","isInert","node","hasAttribute","removeAttribute","getFocusableElements","selectors","elements","querySelectorAll","join","Array","from","filter","closest","panelElements","setPanelElements","webchatPanelElement","activeElement","panelElement","textAreaRef","checkAvailability","endpoint","response","fetch","data","json","classes","classname","url","location","split","pushState","back","replaceState","messageNotification","audioUrl","buffer","context","AudioContext","webkitAudioContext","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","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","onMatchMedia","matches","onKeydown","onPointerdown","onChatEvent","LIVECHAT_RECOVERED","MESSAGE_CREATED","AGENT_TYPING_STARTED","AGENT_TYPING_ENDED","ASSIGNED_AGENT_CHANGED","CONTACT_STATUS_CHANGED","matchMedia","hash","onBrowserNavigation","store","Provider","setItem","stringify","removeItem","setAvailability","setMessage","reverse","setAgent","setAgentIsTyping","setAgentStatus","toggleIsMobile","toggleIsKeyboard","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","TOGGLE_IS_MOBILE","TOGGLE_IS_KEYBOARD","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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/flood-webchat",
3
- "version": "0.0.1-beta.30",
3
+ "version": "0.0.1-beta.32",
4
4
  "description": "",
5
5
  "main": "dist/server.js",
6
6
  "browser": "dist/client.js",
@@ -2,6 +2,8 @@ import React, { useEffect, useRef, useState } from 'react'
2
2
 
3
3
  import { classnames } from '../../lib/classnames'
4
4
  import { Panel } from '../panel/panel.jsx'
5
+ import { SkipLink } from '../skip-link.jsx'
6
+
5
7
  import { useApp } from '../../store/useApp'
6
8
  import { historyPushState, historyReplaceState } from '../../lib/history.js'
7
9
 
@@ -96,6 +98,7 @@ export function Availability () {
96
98
  </div>
97
99
  </div>
98
100
  {isChatOpen && <Panel />}
101
+ <SkipLink />
99
102
  </>
100
103
  )
101
104
  case 'EXISTING':
@@ -0,0 +1,34 @@
1
+ import React from 'react'
2
+ import { createPortal } from 'react-dom'
3
+ import { useApp } from '../store/useApp'
4
+
5
+ export const SkipLink = () => {
6
+ const { thread } = useApp()
7
+
8
+ if (!thread) {
9
+ return null
10
+ }
11
+
12
+ const targetContainer = document.getElementById('skip-links')
13
+
14
+ if (!targetContainer) {
15
+ return null
16
+ }
17
+
18
+ return (
19
+ <>
20
+ {createPortal(
21
+ <a
22
+ href='#webchat'
23
+ className='govuk-skip-link'
24
+ data-module='govuk-skip-link'
25
+ data-wc-skiplink
26
+ data-wc-open-btn
27
+ >
28
+ Skip to webchat
29
+ </a>,
30
+ targetContainer
31
+ )}
32
+ </>
33
+ )
34
+ }
@@ -5,9 +5,9 @@ export const historyPushState = () => {
5
5
 
6
6
  export const historyReplaceState = () => {
7
7
  if (window.history.state?.history) {
8
- window.history.back()
8
+ return window.history.back()
9
9
  }
10
10
 
11
11
  const url = window.location.href.split('#')[0]
12
- window.history.replaceState(null, null, url)
12
+ return window.history.replaceState(null, null, url)
13
13
  }