{"version":3,"file":"53863.ddaa12b863abb6af9d31.js","mappings":"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","sources":["webpack://platform/./app/assets/lib/definitions.js","webpack://platform/./app/assets/lib/hooks/use_fetch.js","webpack://platform/./app/assets/lib/therapist_profile/shared.js","webpack://platform/./app/assets/lib/tooltips.js","webpack://platform/./app/assets/lib/utils/fetch.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayEach.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseEach.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseEach.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseFor.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseForOwn.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castFunction.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/forEach.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","webpack://platform/./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js"],"sourcesContent":["/* eslint-disable no-useless-escape */\n\nimport { forEach } from 'lodash'\n\nimport fetch from './utils/fetch.js'\nimport tooltips from './tooltips.js'\n\ndocument.addEventListener('DOMContentLoaded', async () => {\n const base = { terms: [], excludes: [], replaced: [] }\n const page = document.querySelector('main')\n const nodes = page.querySelectorAll('p, ul, a, div')\n const definitions = await getDefinitions()\n let cleanedTerms = ''\n let excludedTerms = ''\n\n if (definitions.length === 0) return\n\n for (const element of definitions) {\n const terms = element.term.split(',')\n\n for (const element of terms) {\n const trimmed = element.replaceAll(/^\\s+|\\s+$/g, '')\n const isExclusion = trimmed.indexOf('!')\n\n if (isExclusion == -1 || isExclusion != 0) {\n base.terms.push(trimmed)\n } else {\n base.excludes.push(trimmed.slice(1))\n }\n }\n }\n\n cleanedTerms = clean(base.terms.join('|'))\n excludedTerms = clean(base.excludes.join('|'))\n\n forEach(nodes, traverse)\n\n function traverse(node) {\n let next\n\n if (node.nodeType === 1) {\n // Element Node\n node = node.firstChild\n if (node) {\n do {\n // Recursively call traverseChildNodes on each child node.\n next = node.nextSibling\n\n // Check if the node is not glossarized.\n if (node.className != 'definition') traverse(node)\n\n node = next\n } while (node)\n }\n } else if (node.nodeType === 3) {\n // Text Node\n const temp = document.createElement('div')\n let data = node.data\n\n const re = new RegExp('(?:^|\\\\b)(' + cleanedTerms + ')(?!\\\\w)', 'ig')\n const reEx = new RegExp('(?:^|\\\\b)(' + excludedTerms + ')(?!\\\\w)', 'ig')\n\n if (re.test(data)) {\n const excl = reEx.exec(data)\n\n data = data.replace(re, function (match, item, offset) {\n base.replaced.push(match)\n\n const ir = new RegExp('(?:^|\\\\b)' + clean(match) + '(?!\\\\w)')\n\n if (ir.test(data)) {\n if (excl && base.excludes.length > 0) {\n const exl = excl.index + excl[0].length\n if (excl.index <= offset && offset <= exl) return match\n }\n\n const desc = getDescription(match)\n return '' + match + ''\n }\n })\n\n temp.innerHTML = data\n while (temp.firstChild) {\n node.parentNode.insertBefore(temp.firstChild, node)\n }\n\n node.remove()\n }\n }\n }\n\n function getDescription(term) {\n const regex = new RegExp('(,|s*)' + clean(term) + '\\\\s*|\\\\,$', 'i')\n\n /**\n * Matches.\n *\n * 1. Starts with \\s* (zero or more spaces)\n * 2. Ends with zero or more spaces.\n * 3. Ends with comma.\n */\n\n for (const element of definitions) {\n if (regex.test(element.term)) {\n return element.description.replaceAll(/\"/gi, '"')\n }\n }\n }\n\n function clean(text) {\n const charsToClean = ['/', '.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '\\\\'].join('|\\\\')\n const reEscape = new RegExp('(\\\\' + charsToClean + ')', 'g')\n return text.replaceAll(reEscape, '\\\\$1')\n }\n\n async function getDefinitions() {\n try {\n return await fetch('/definitions.json', { handleError: false }).json()\n } catch {\n return []\n }\n }\n\n tooltips()\n})\n","import { deepEqual } from 'fast-equals'\nimport humps from 'humps'\n\nexport const createUseFetch = fetch => {\n // Create a set of caches for this hook.\n const caches = []\n\n function useFetch(input, init, options = {}) {\n const { metadata = false, lifespan = 0 } = options\n\n // Check each cache by this useFetch hook.\n for (const cache of caches) {\n // If this cache matches the request,\n if (deepEqual(input, cache.input) && deepEqual(init, cache.init)) {\n // If an error occurred, throw it so that componentDidCatch can handle it.\n if (Object.prototype.hasOwnProperty.call(cache, 'error')) {\n throw cache.error\n }\n\n // If a response was successful, return it.\n if (Object.prototype.hasOwnProperty.call(cache, 'response')) {\n if (metadata) {\n return {\n bodyUsed: cache.bodyUsed,\n contentType: cache.contentType,\n headers: cache.headers,\n ok: cache.ok,\n redirected: cache.redirected,\n response: cache.response,\n status: cache.status,\n statusText: cache.statusText,\n url: cache.url\n }\n }\n\n return cache.response\n }\n\n // If we are still waiting, throw the Promise so that Suspense can fallback.\n throw cache.fetch\n }\n }\n\n // If no request in the cache matched this one, create a new cache entry.\n const cache = {\n // Make the fetch request.\n fetch: fetch(input, init)\n .then(response => {\n if (response instanceof Response === false) return response\n\n cache.contentType = response.headers.get('Content-Type')\n\n if (metadata) {\n cache.bodyUsed = response.bodyUsed\n cache.headers = response.headers\n cache.ok = response.ok\n cache.redirected = response.redirected\n cache.status = response.status\n cache.statusText = response.statusText\n }\n\n if (cache.contentType && cache.contentType.includes('application/json')) {\n if (response.status === 204) return ''\n\n return response.json().then(data => humps.camelizeKeys(data))\n }\n\n return response.text()\n })\n\n // Cache the response.\n .then(response => {\n cache.response = response\n })\n\n // Handle an error.\n .catch(error => {\n cache.error = error\n })\n\n // Invalidate the cache.\n .then(() => {\n if (lifespan > 0) {\n setTimeout(() => {\n const index = caches.indexOf(cache)\n index !== -1 && caches.splice(index, 1)\n }, lifespan)\n }\n }),\n init,\n input\n }\n\n caches.push(cache)\n\n throw cache.fetch\n }\n\n return useFetch\n}\n\nexport default createUseFetch()\n","import tooltips from '../tooltips.js'\n\nexport default function () {\n document.addEventListener('DOMContentLoaded', () => {\n tooltips()\n\n // Handle show all specialisms button.\n const specialismsBtn = document.querySelector('#js__specialismShowAllButton')\n specialismsBtn?.addEventListener(\n 'click',\n function () {\n const nodes = document.querySelectorAll('.js__specialismListItem')\n for (let i = nodes.length - 1; i >= 0; i--) {\n nodes[i].style.display = ''\n }\n\n specialismsBtn.style.display = 'none'\n },\n { once: true }\n )\n\n // Handle show all approaches button.\n const approachesBtn = document.querySelector('#js__approachShowAllButton')\n approachesBtn?.addEventListener(\n 'click',\n function () {\n const nodes = document.querySelectorAll('.js__approachListItem')\n for (let i = nodes.length - 1; i >= 0; i--) {\n nodes[i].style.display = ''\n }\n\n approachesBtn.style.display = 'none'\n },\n { once: true }\n )\n\n // Handle \"read more\" truncation buttons.\n const readMoreBtns = document.querySelectorAll('.js__readMore')\n for (const btn of readMoreBtns) {\n btn.addEventListener(\n 'click',\n function () {\n this.parentElement.querySelector('.js__truncated').style.display = 'none'\n this.parentElement.querySelector('.js__untruncated').style.display = 'block'\n this.style.display = 'none'\n },\n { once: true }\n )\n }\n\n // Handle expand and collapse of specialism list items.\n const elements = document.querySelectorAll('.js__specialismSpan')\n for (let i = elements.length - 1; i >= 0; i--) {\n elements[i].addEventListener('click', function () {\n const children = this.parentElement.querySelector('p')\n children.style.display =\n !children.style.display || children.style.display === 'none' ? 'block' : 'none'\n })\n }\n })\n}\n","import tippy from 'tippy.js'\n\nimport 'tippy.js/dist/tippy.css'\n\nexport default () => {\n tippy('[data-tippy-content]')\n}\n","import { setExtra } from '@sentry/react'\nimport { camelizeKeys, decamelizeKeys } from 'humps'\nimport { store } from 'ibiza'\nimport { isEmpty, isPlainObject, set } from 'lodash'\n\nimport { createUseFetch } from '../hooks/use_fetch.js'\n\nconst responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*'\n}\n\nconst requestMethods = new Set(['get', 'post', 'put', 'patch', 'head', 'delete'])\n\nexport class FetchError extends Error {\n constructor(request, requestOptions, response = null, options = {}) {\n super(response?.statusText || options.cause?.message || response?.status, { ...options })\n\n this.name = 'FetchError'\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else if (response) {\n this.stack = new Error(response.statusText).stack\n }\n\n const requestHeaders = {}\n for (let pair of request.headers.entries()) {\n requestHeaders[pair[0]] = pair[1]\n }\n\n setExtra('fetchRequest', {\n url: request.url,\n method: requestOptions.method || request.method,\n searchParams: requestOptions.searchParams,\n body: requestOptions.bodyParams,\n requestHeaders\n })\n\n this.response = response\n this.request = request\n this.isCriticalError = false\n this.isServerError = false // A server error is one with an HTTP status of 5**.\n this.isClientError = false // A client error is one with an HTTP status of 4**.\n this.isHandled = false // Has the error been handled with a presented error message.\n\n if (response) {\n const ignoreHeaders = new Set(['server-timing'])\n const responseHeaders = {}\n for (let pair of response.headers.entries()) {\n if (ignoreHeaders.has(pair[0])) continue\n\n responseHeaders[pair[0]] = pair[1]\n }\n\n setExtra('fetchResponse', {\n ok: response.ok,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n responseHeaders\n })\n\n if (response.status >= 400 && response.status < 500) {\n if (response.status === 401 || response.status === 429) {\n // Unauthorised or rate limited, so force user to reload and login again.\n this.isCriticalError = true\n }\n\n this.isClientError = true\n } else if (response.status >= 500) {\n this.isServerError = true\n }\n } else {\n this.isCriticalError = true\n }\n }\n}\n\n// Wraps the browser's `fetch()` with a few bells and whistles:\n// - Sets `credentials` to 'same-origin`.\n// - Sets `'X-Requested-With': 'XMLHttpRequest'` header for Rails compat.\n// - Throws a `FetchError` if the response is not `ok`.\n//\n// Returns a Response object with Body methods added for convenience. So you can, for example, call\n// fetch(input).json() directly without having to await the Response first. When called like that,\n// an appropriate Accept header will be set depending on the body method used. Unlike the Body\n// methods of window.Fetch; these will throw an FetchError if the response status is not in the\n// range of 200...299. Also, .json() will return an empty string if the response status is 204\n// instead of throwing a parse error due to an empty body.\n//\n// It has an almost identical API signature, with these additional options as part of the `init`\n// argument:\n//\n// - handleClientError?: Boolean - When true, will present a pretty error message to the user upon a\n// client error. (default: true)\n// - handleServerError?: Boolean - When true, will present a pretty error message to the user upon a\n// server error. (default: true)\n// - handleError?: Boolean - When true, will present a pretty error message to the user upon any\n// error. (default: true)\n// - isCritical?: Boolean - If true, will present any error as a critical one, resulting in an\n// undismissable alert. (default: false)\n// - searchParams?: Object - Search parameters to include in the request URL. Setting this will\n// override all existing search parameters in the `resource`.\n// - buildRequest?: Function - A function that will be called with the `url` and `options`, and\n// should return a `Request` object.\nconst htFetch = (resource, init) => {\n const options = {\n // Custom options\n handleClientError: true,\n handleServerError: true,\n handleError: true,\n searchParams: null,\n isCritical: false,\n\n // Fetch options (defaults)\n credentials: 'same-origin',\n\n // Ensure all works well with browser history, ie. avoiding incorrect cached fetches when\n // clicking back.\n cache: 'no-cache',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': '',\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n\n ...init\n }\n\n let { searchParams, method, buildRequest } = options\n const { handleError, handleClientError, handleServerError, isCritical } = options\n\n if (typeof document !== 'undefined') {\n let token = document.getElementsByName('csrf-token')[0]\n if (token) options.headers['X-CSRF-Token'] = token.getAttribute('content')\n\n // Fetch the therapist/client id from the meta tag, and assign as a header. This allows global\n // access to the current user.\n let therapistId = document.getElementsByName('htp:therapist_id')[0]\n if (therapistId) options.headers['X-Therapist-Id'] = therapistId.getAttribute('content')\n\n let clientId = document.getElementsByName('htp:client_id')[0]\n if (clientId) options.headers['X-Client-Id'] = clientId.getAttribute('content')\n }\n\n // Make sure method value is uppercase to avoid casing issues on server.\n options.method = requestMethods.has(method) ? method.toUpperCase() : method\n\n let bodyParams = {}\n if (options.body) {\n let { body } = options\n\n if (!isPlainObject(body)) {\n if (body instanceof FormData) {\n for (const [name, value] of body.entries()) {\n body = set(body, name, value)\n }\n } else {\n for (const [name, value] of body) {\n body = set(body, name, value)\n }\n }\n }\n\n bodyParams = decamelizeKeys(body)\n\n // Convert keys to snake case (underscored).\n options.body = JSON.stringify(bodyParams)\n }\n\n const url = new URL(resource, location.origin)\n\n // Assign `searchParams` to the `resource`.\n if (searchParams) {\n // Convert param keys to snake case (underscored).\n searchParams = decamelizeKeys(searchParams)\n\n url.search = new URLSearchParams(searchParams)\n }\n\n resource = buildRequest ? buildRequest(url, options) : new Request(url)\n\n function initFetchError({ error, response }) {\n return new FetchError(resource.clone(), { ...options, bodyParams, searchParams }, response, {\n cause: error\n })\n }\n\n function buildFetchError(error, response) {\n if (!(error instanceof FetchError)) {\n error = initFetchError({ error, response })\n }\n\n if (handleError) {\n if (error.isClientError) {\n handleClientError && presentFailure(error, { isCritical })\n } else if (error.isServerError) {\n handleServerError && presentFailure(error, { isCritical })\n } else {\n presentFailure(error, { isCritical })\n }\n }\n\n return error\n }\n\n const result = fetch(resource, options)\n .catch(error => {\n throw buildFetchError(error)\n })\n .then(response => {\n if (!response.ok) {\n const error = initFetchError({ response: response.clone() })\n\n if (error.isClientError) {\n const contentType = response.headers.get('Content-Type')\n if (contentType?.includes('application/json')) {\n return response\n .json()\n .catch(() => {\n handleError && handleClientError && presentFailure(error, { isCritical })\n throw error\n })\n .then(data => {\n // TODO: The server will sometimes have already camelised the keys, but we currently\n // have no way of knowing that. So for now - and because we always want camelised\n // keys - we have to camelise them again here.\n error.responseData = camelizeKeys(data)\n handleError && handleClientError && presentFailure(error, { isCritical })\n throw error\n })\n }\n }\n\n throw buildFetchError(error)\n }\n\n return response\n })\n\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n resource.headers.set('accept', resource.headers.get('accept') || mimeType)\n // eslint-disable-next-line unicorn/no-await-expression-member\n const response = (await result).clone()\n\n if (type === 'json') {\n if (response.status === 204) return ''\n\n // TODO: The server will sometimes have already camelised the keys, but we currently have no\n // way of knowing that. So for now - and because we always want camelised keys - we have to\n // camelise them again here.\n try {\n const json = await response.json()\n return camelizeKeys(json)\n } catch (error) {\n throw buildFetchError(error, response)\n }\n }\n\n return response[type]()\n }\n }\n\n return result\n}\n\nexport default htFetch\n\nexport const useFetch = createUseFetch(htFetch)\n\nexport const presentFailure = async (error, options = {}) => {\n let msg = []\n let title\n\n if (options.message) {\n msg = [options.message]\n } else if (error.isServerError) {\n msg.push(\n `There was a problem with this request (${error.response.statusText}).`,\n 'Most likely this is a problem on our end and we are looking into it as we speak.'\n )\n } else if (error.isClientError) {\n const contentType = error.response.headers.get('Content-Type')\n if (contentType?.includes('application/json')) {\n const data = error.responseData\n\n if (data?.errors && !isEmpty(data.errors)) {\n if (!options.title) {\n title = 'Ooops!'\n msg.push(\n 'We are unable to continue as there is something not quite right with what you',\n 'told us. Please check and rectify the following and try again.
'\n )\n }\n\n const errors = Array.isArray(data.errors) ? data.errors[0] : data.errors\n if (errors.base) {\n msg.push(errors.base[0])\n } else {\n msg.push(errors[Object.keys(errors)[0]][0])\n }\n }\n }\n }\n\n if (msg.length === 0) {\n msg.push(\n 'Apologies, but we have been unable to continue with this request.',\n 'Most likely this is a problem on our end and we are looking into it as we speak.',\n '
Details: ',\n error.message,\n '
'\n )\n }\n\n store.state.fetchError = {\n error,\n title: title || options.title,\n htmlContent: `
${msg.join(' ')}
`,\n canClose: !(error.isCriticalError || options.isCritical),\n onExit: () => {\n delete store.state.fetchError\n }\n }\n\n error.isHandled = true\n\n return error\n}\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n"],"names":["document","addEventListener","async","base","terms","excludes","replaced","nodes","querySelector","querySelectorAll","definitions","fetch","handleError","json","getDefinitions","cleanedTerms","excludedTerms","length","element","term","split","trimmed","replaceAll","isExclusion","indexOf","push","slice","clean","join","forEach","traverse","node","next","nodeType","firstChild","nextSibling","className","temp","createElement","data","re","RegExp","reEx","test","excl","exec","replace","match","item","offset","exl","index","regex","description","getDescription","innerHTML","parentNode","insertBefore","remove","tooltips","text","charsToClean","reEscape","createUseFetch","caches","input","init","options","metadata","lifespan","cache","deepEqual","Object","prototype","hasOwnProperty","call","error","bodyUsed","contentType","headers","ok","redirected","response","status","statusText","url","then","Response","get","includes","humps","catch","setTimeout","splice","specialismsBtn","i","style","display","once","approachesBtn","readMoreBtns","btn","this","parentElement","elements","children","tippy","responseTypes","formData","arrayBuffer","blob","requestMethods","Set","FetchError","Error","constructor","request","requestOptions","super","cause","message","name","captureStackTrace","stack","requestHeaders","pair","entries","setExtra","method","searchParams","body","bodyParams","isCriticalError","isServerError","isClientError","isHandled","ignoreHeaders","responseHeaders","has","type","htFetch","resource","handleClientError","handleServerError","isCritical","credentials","Accept","buildRequest","token","getElementsByName","getAttribute","therapistId","clientId","toUpperCase","isPlainObject","FormData","value","set","decamelizeKeys","JSON","stringify","URL","location","origin","initFetchError","clone","buildFetchError","presentFailure","search","URLSearchParams","Request","result","responseData","camelizeKeys","mimeType","useFetch","title","msg","errors","isEmpty","Array","isArray","keys","store","state","fetchError","htmlContent","canClose","onExit","array","iteratee","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","key","eachFunc","collection","isArrayLike","iterable","object","keysFunc","props","n"],"sourceRoot":""}