{"version":3,"file":"static/chunks/58149f3d-bda90c1ac2015783.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@sm/question-ui/respondent-survey.js","webpack://_N_E/"],"sourcesContent":["import React__default, { useLayoutEffect, useEffect, useRef, useState, useCallback, useMemo, forwardRef, useContext, createContext, useImperativeHandle } from 'react';\nimport { c as classNames, E as ErrorBoundary, F as FixedSizeList, N as Ne, d as de, Y as Ye, P as Pe, u as useSortable, C as CSS, K as KeyboardCode, a as PointerSensor$1, b as KeyboardSensor$1, e as useSensors, f as useSensor, D as DndContext, g as closestCenter, S as SortableContext, v as verticalListSortingStrategy, h as DragOverlay, i as arrayMove } from './vendor-3a2071be.js';\nimport { createUseStyles, useTheme } from 'react-jss';\nimport { sanitizeString } from '@sm/utils';\nimport { uniqueId, visuallyHidden as visuallyHidden$1 } from '@wds/utils';\nimport ReactDOM from 'react-dom';\nimport { defineMessages, t, T, L10NContext } from '@sm/intl';\nimport getFontWeights from '@sm/webassets/SurveyTheme/getFontWeights';\nimport { c as contrastColor } from './theme-22bba55b.js';\nimport isDark from '@sm/webassets/SurveyTheme/isDark';\n\nconst useStyles$X = createUseStyles({\n rowStyles: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n});\n\nfunction Row({ id, className, children, ...props }) {\n const { rowStyles } = useStyles$X();\n return (React__default.createElement(\"div\", { id: id, className: classNames(rowStyles, className), ...props }, children));\n}\n\nconst useStyles$W = createUseStyles((theme) => ({\n tooltip: {\n 'span[data-tooltip] &': {\n display: 'none',\n },\n [`@media (min-width: ${theme.breakpoints?.md.min ?? '769px'})`]: {\n 'span[data-tooltip]:hover &, span[data-tooltip]:focus &': {\n display: 'inline-block',\n },\n },\n position: 'absolute',\n left: ({ center }) => center,\n bottom: 20,\n width: 275,\n transform: 'translate(-50%, -5px)',\n textAlign: 'center',\n zIndex: 12,\n fontSize: 13,\n '&:after': {\n position: 'absolute',\n bottom: -4,\n left: '50%',\n width: 10,\n height: 10,\n backgroundColor: 'white',\n content: '\"\"',\n marginLeft: -5,\n transform: 'rotate(45deg)',\n boxShadow: [[3, 5, 5, 'rgb(0 0 0 / 0.07)']],\n zIndex: 13,\n },\n },\n tooltipBody: {\n display: 'inline-block',\n maxWidth: 275,\n color: 'black',\n fontWeight: 300,\n fontFamily: theme.fontFamily,\n fontStyle: 'normal',\n boxShadow: [[0, 2, 10, 0, 'rgb(0 0 0 / 0.14)']],\n background: 'white',\n padding: [[12, 16]],\n lineHeight: 1.4,\n borderRadius: 2,\n textAlign: 'left',\n },\n}));\n\nconst defaultSelectors = [\n 'a[href]',\n 'button',\n 'textarea',\n 'input:not([type=\"hidden\"])',\n 'select',\n 'details',\n '[tabindex]:not([tabindex=\"-1\"])',\n];\nconst useFocusTrap = ({ selectors = defaultSelectors, } = {}) => {\n const focusRef = React__default.useRef(null);\n const [focusableEls, setEls] = React__default.useState([]);\n React__default.useEffect(() => {\n if (focusRef.current) {\n const els = Array.from(focusRef.current.querySelectorAll(selectors.join(',')));\n setEls(els);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusRef]);\n function handleFocus(e) {\n if (focusRef.current) {\n const focusableElements = focusableEls;\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n else if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n React__default.useEffect(() => {\n const handleKeyDown = (e) => {\n if (e.key === 'Tab') {\n handleFocus(e);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n });\n return focusRef;\n};\n\nconst useStyles$V = createUseStyles((theme) => ({\n modalOverlay: {\n zIndex: 999,\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: 'rgba(0,0,0,0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n modal: {\n position: 'relative',\n width: '85vw',\n minHeight: '20vw',\n marginBottom: 20,\n background: 'white',\n borderRadius: 2,\n },\n closeBtn: {\n position: 'absolute',\n cursor: 'pointer',\n background: 'transparent',\n right: 0,\n border: 0,\n padding: 8,\n marginTop: 0,\n color: 'black',\n zIndex: 105,\n },\n tooltipText: {\n color: theme.questionBody?.color || '#333E48',\n fontFamily: theme.fontFamily,\n fontSize: 13,\n fontWeight: 400,\n lineHeight: '1.4',\n padding: [28, 12, 16],\n },\n}));\n\nconst COPY$e = defineMessages({\n CLOSE_MODAL: {\n id: 'Modal.CloseModal',\n defaultMessage: 'Close tooltip',\n description: '[Type: label][Vis: Med] - close button text',\n },\n});\nfunction Modal({ tooltip, closeModal }) {\n const { modalOverlay, closeBtn, modal, tooltipText } = useStyles$V();\n const closeRef = React__default.useRef(null);\n const tooltipId = uniqueId('tooltip-modal');\n const focusRef = useFocusTrap();\n const handleClick = (e) => {\n // click on button or overlay should close modal\n e.stopPropagation();\n if (e.currentTarget === e.target) {\n closeModal();\n }\n };\n React__default.useEffect(() => {\n // listen for ESC to close modal\n const handleKeydown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n closeModal();\n }\n };\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [closeModal]);\n React__default.useEffect(() => {\n closeRef.current?.focus();\n }, []);\n return (React__default.createElement(\"div\", { className: modalOverlay, onClick: handleClick, \"aria-hidden\": \"true\" },\n React__default.createElement(\"div\", { ref: focusRef, className: modal, role: \"dialog\", \"aria-modal\": \"true\", \"aria-describedby\": tooltipId },\n React__default.createElement(\"button\", { type: \"button\", className: closeBtn, ref: closeRef, onClick: handleClick, \"aria-label\": t(COPY$e.CLOSE_MODAL) }, \"\\u00D7\"),\n React__default.createElement(\"p\", { id: tooltipId, className: tooltipText }, tooltip))));\n}\n\n/** Displays a tooltip on hover for large screens and a modal on click for small screens */\nconst Tooltip = ({ container, className, id = '' }) => {\n /** container center position to display tooltip */\n const center = container.offsetWidth / 2;\n const text = container.getAttribute('data-tooltip') ?? '';\n const theme = useTheme();\n const { tooltip, tooltipBody } = useStyles$W({ center });\n const [showModal, setShowModal] = React__default.useState(false);\n const [mode, setMode] = React__default.useState('TOOLTIP');\n const closeModal = () => {\n setShowModal(false);\n container.focus();\n };\n React__default.useEffect(() => {\n container.setAttribute('role', 'tooltip');\n // make tooltip anchor focusable\n if (!container.hasAttribute('tabIndex')) {\n container.setAttribute('tabIndex', '0');\n }\n // opens modal if matches small screen breakpoint\n const openModal = () => {\n const mql = window.matchMedia(`(max-width: ${theme?.breakpoints?.md.min ?? '769px'})`);\n if (mql.matches) {\n setMode('MODAL');\n setShowModal(true);\n }\n else {\n setMode('TOOLTIP');\n }\n };\n const handleClick = () => {\n openModal();\n };\n const handleKeydown = (e) => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n openModal();\n }\n };\n // listen for click, ENTER or SPACE to open modal\n container.addEventListener('click', handleClick);\n container.addEventListener('keydown', handleKeydown);\n return () => {\n container.removeEventListener('click', handleClick);\n container.removeEventListener('keydown', handleKeydown);\n };\n }, [container, theme]);\n const modalEl = showModal ? (React__default.createElement(Modal, { tooltip: text, closeModal: closeModal })) : null;\n const tooltipEl = (React__default.createElement(\"div\", { className: classNames(tooltip, className) },\n React__default.createElement(\"span\", { id: id, className: tooltipBody, \"aria-hidden\": \"true\" }, text)));\n const child = mode === 'MODAL' ? modalEl : tooltipEl;\n const containerEl = mode === 'MODAL' ? document.body : container;\n return ReactDOM.createPortal(child, containerEl);\n};\n\nconst listSpacing = {\n margin: [16, 0],\n padding: [0, 0, 0, 40],\n};\nconst mediaReset = {\n border: 0,\n maxWidth: '100%',\n};\nconst useStyles$U = createUseStyles({\n richTextContent: {\n // Typography\n '& a': {\n // Links are not themed by default. Users must select a link color in the editor\n color: 'blue',\n textDecoration: 'underline',\n '&:hover': {\n cursor: 'pointer',\n },\n '&:focus': {\n outline: 'currentColor auto 1px',\n },\n },\n '& ol': {\n ...listSpacing,\n listStyleType: 'decimal',\n },\n '& ul': {\n ...listSpacing,\n listStyle: 'disc outside none',\n '& ul li': {\n listStyle: 'circle',\n },\n },\n '& p': {\n margin: [13, 0],\n },\n '& b': {\n fontWeight: 'bold',\n },\n '& strong': {\n fontWeight: 'bold',\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& i': {\n fontStyle: 'italic',\n },\n '& big': {\n fontSize: 'larger',\n },\n '& small': {\n fontSize: 'smaller',\n },\n '& sup': {\n fontSize: '75%',\n lineHeight: 0,\n position: 'relative',\n top: '-0.5em',\n verticalAlign: 'baseline',\n },\n // Media embeds\n '& iframe': mediaReset,\n '& img': {\n ...mediaReset,\n height: 'auto',\n '-ms-interpolation-mode': 'bicubic',\n },\n '& span[data-tooltip]': {\n position: 'relative',\n display: 'inline',\n borderBottom: [[1, 'dashed']],\n textDecoration: 'inherit',\n cursor: 'pointer',\n },\n },\n});\n\n// Support iframe video embeds and their matching attributes\nconst sanitizeOptions = {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: [\n 'target',\n 'allow',\n 'allowfullscreen',\n 'frameborder',\n 'sandbox',\n 'scrolling',\n ],\n};\nfunction RichText({ id: elementId, element: Element = 'div', text, className, ...containerProps }) {\n const { richTextContent } = useStyles$U();\n const [tooltipNodes, setTooltipNodes] = React__default.useState([]);\n const tooltipRef = React__default.useRef(null);\n React__default.useEffect(() => {\n if (tooltipRef?.current) {\n const el = tooltipRef?.current;\n setTooltipNodes(Array.from(el.querySelectorAll('[data-tooltip]')));\n }\n }, []);\n return (React__default.createElement(React__default.Fragment, null,\n React__default.createElement(Element, { id: elementId, className: classNames(richTextContent, className), dangerouslySetInnerHTML: {\n __html: sanitizeString(text, sanitizeOptions),\n }, ref: tooltipRef, translate: \"no\", ...containerProps }),\n tooltipNodes.map((container) => {\n const id = uniqueId('rich-text-tooltip');\n container.setAttribute('aria-describedby', id);\n return React__default.createElement(Tooltip, { key: id, container: container, id: id });\n })));\n}\n\nconst useStyles$T = createUseStyles((theme) => ({\n wdsIcons: ({ color, size }) => {\n const fontSize = size\n ? { fontSize: theme.iconSize[size] }\n : { fontSize: 'inherit' };\n const chosenColor = \n // @ts-expect-error Fallback styles are acceptable\n theme.palette?.text[color] ||\n theme.palette?.[color]?.main ||\n 'currentColor';\n return {\n ...fontSize,\n width: '1em',\n height: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n fill: chosenColor,\n };\n },\n}));\n\n// https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\nconst getDisplayName = (Component) => Component.displayName || Component.name || 'Component';\nfunction withIcon(Component) {\n function WithIcon({ color, title, size, ...rest }) {\n const classes = useStyles$T({ color, size });\n return (React__default.createElement(\"svg\", { className: classes.wdsIcons, viewBox: \"0 0 16 16\", preserveAspectRatio: \"xMidYMid\", \"aria-label\": title, role: title ? 'img' : 'presentation', ...rest },\n React__default.createElement(Component, null)));\n }\n WithIcon.displayName = `WithIcon(${getDisplayName(Component)})`;\n WithIcon.getOriginalComponent = () => Component;\n return WithIcon;\n}\n\nconst useSurveyIconStyles = createUseStyles({\n svgContainer: {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n },\n});\n\nlet instance = 0;\nfunction withSvgIcon(Component, displayName = 'SvgElement') {\n function SvgIcon({ id, 'aria-labelledby': ariaLabelledBy, title, viewBox = '0 0 16 16', className, ...props }) {\n instance += 1;\n const styles = useSurveyIconStyles();\n const hasTitle = !!title && !ariaLabelledBy;\n const iconTitleId = id ? `${id}-icon-title` : `icon-title-${instance}`;\n return (React__default.createElement(\"svg\", { className: classNames(styles.svgContainer, className), viewBox: viewBox, preserveAspectRatio: \"xMidYMid\", \"aria-hidden\": hasTitle ? undefined : true, \"aria-labelledby\": hasTitle ? iconTitleId : ariaLabelledBy, role: hasTitle ? 'img' : undefined, focusable: \"false\", ...props, \"data-testid\": displayName },\n hasTitle && React__default.createElement(\"title\", { id: iconTitleId }, title),\n React__default.createElement(Component, null)));\n }\n SvgIcon.displayName = displayName;\n return SvgIcon;\n}\n\nfunction DocumentXIconPath() {\n return (React__default.createElement(\"path\", { d: \"m5.94.005 8.012.012C14.53.018 15 .487 15 1.067V14.95c0 .58-.47 1.05-1.05 1.05H2.05C1.47 16 1 15.53 1 14.95V4.94L5.94.004zM7 1.505V4.95c0 .541-.41.987-.936 1.044L5.95 6H2.5v8.5h11V1.514L7 1.505zM6.557 7.53 8 8.973 9.443 7.53a.765.765 0 0 1 1.083 1.082l-1.444 1.443 1.444 1.444a.765.765 0 0 1-1.083 1.082L8 11.138 6.557 12.58A.765.765 0 1 1 5.474 11.5l1.444-1.444-1.444-1.443A.765.765 0 1 1 6.557 7.53zM5.5 2.563 3.561 4.5H5.5V2.562z\" }));\n}\nvar IconDocumentX = withIcon(DocumentXIconPath);\n\nconst useStyles$S = createUseStyles((theme) => {\n return {\n fallbackComponent: {\n fontFamily: theme.questionBody?.fontFamily ?? {},\n color: theme.questionColor,\n border: `1px solid ${theme.questionColor}`,\n borderRadius: '5px',\n width: '100%',\n height: '100%',\n minHeight: '220px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& svg': {\n fill: theme.questionColor,\n },\n },\n errorMessage: {\n marginLeft: `8px`, // equivalent to wrench theme.spacing[2]\n },\n };\n});\n\nconst COPY$d = defineMessages({\n ERROR: {\n id: 'FallbackComponent.ERROR',\n defaultMessage: 'Error loading question',\n description: '[Type: label][Vis: high] - error message indicating a question could not be loaded',\n },\n});\nfunction FallbackComponent() {\n const { fallbackComponent, errorMessage } = useStyles$S();\n return (React__default.createElement(\"div\", { className: fallbackComponent },\n React__default.createElement(IconDocumentX, null),\n React__default.createElement(\"p\", { className: errorMessage }, t(COPY$d.ERROR))));\n}\n\nconst withErrorBoundary = (Component) => {\n const displayName = Component.displayName || Component.name || 'Component';\n function ComponentWithErrorBoundary(props) {\n return (React__default.createElement(ErrorBoundary, { FallbackComponent: FallbackComponent },\n React__default.createElement(Component, { ...props })));\n }\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n return ComponentWithErrorBoundary;\n};\n\nconst createFieldId = (questionId) => `question-field-${questionId}`;\nconst createLegendId = (questionId) => `question-title-legend-${questionId}`;\nconst createErrorRowId = (questionId) => `error-row-${questionId}`;\nconst createErrorId = (questionId) => `${questionId}-validation-message`;\n\n/**\n * Hook to split question-choices by type and filter for visibility\n */\nfunction useQuestionChoices(choices = [], columns = []) {\n const options = choices.filter((c) => !!c && c.visible);\n const columnOptions = columns.filter((c) => !!c && c.visible);\n return {\n options,\n /** Standard column options (Matrix) */\n columnOptions,\n /** Standard answer options */\n sortableOptions: options.filter((c) => !c.type),\n /** None-Of-The-Above (NOTA) option */\n notaOption: options.find((c) => c.type === 'NOTA'),\n /** Other answer option */\n otherOption: options.find((c) => c.type === 'ANSWER'),\n /** Other comment option - One comment for the question */\n commentOption: options.find((c) => c.type === 'COMMENT'),\n /** Other comment option - One comment per row (e.g. for Matrix) */\n commentColumnOption: options.find((c) => c.type === 'COMMENT_COLUMN'),\n };\n}\n\nconst useStyles$R = createUseStyles((theme) => {\n return {\n button: {\n color: theme.nextButton.color,\n backgroundColor: theme.nextButton.backgroundColor,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: 15,\n border: [1, 'solid', 'transparent'],\n borderRadius: 2,\n padding: [1, 6],\n maxWidth: '100%',\n minWidth: 60,\n minHeight: 40,\n cursor: 'pointer',\n overflowWrap: 'break-word',\n transition: `all .2s linear`,\n '&:focus, &:hover': {\n outlineOffset: 5,\n outline: `1px solid ${theme.answerColor}`,\n // Safari seems to have an outline bug, may not render without boxshadow\n boxShadow: '0 0 4px transparent',\n },\n },\n };\n});\n\nconst COPY$c = defineMessages({\n OK_LABEL: {\n id: 'Button.OK_LABEL',\n defaultMessage: 'OK',\n description: '[Type: button][Vis: high] - question ok label',\n },\n});\n// This might need to be a prop later once confirmed\nconst MAX_LENGTH = 20;\nfunction Button({ text = t(COPY$c.OK_LABEL), type = 'button', className, ...props }) {\n const { button } = useStyles$R();\n const slicedText = text.length <= MAX_LENGTH ? text : text.slice(0, MAX_LENGTH);\n return (\n // eslint-disable-next-line react/button-has-type\n React__default.createElement(\"button\", { className: classNames(button, className), type: type, ...props }, slicedText));\n}\n\n/*eslint spaced-comment: [\"error\", \"never\", { \"exceptions\": [\"NOSONAR\"] }] */\n/**\n * SSR Safe version of useLayoutEffect\n * @see https://code.corp.surveymonkey.com/webplatform/smweb/blob/master/apps/contentweb/src/app/pages/MRX/helpers/useIsomorphicLayoutEffect.js\n *\n * Note: `NOSONAR` is used to bypass a `minor:code-smell` error that states `createElement` is deprecated.\n * The eslint rule above disables the spaced comments to use NOSONAR as stated in the docs.\n */\nconst useSSRSafeLayoutEffect = typeof window !== 'undefined' &&\n typeof window?.document?.createElement !== 'undefined' //NOSONAR\n ? useLayoutEffect\n : useEffect;\n\n/** Referentially stable empty function\n *\n * e.g. as default or placeholder */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst EmptyFn = () => { };\n\n/* eslint-disable no-param-reassign, no-plusplus */\n/**\n * @name EasingFunctions- Useful easing equations\n * @comment only considering the t value for the range [0, 1] => [0, 1]\n */\nconst easingFunctions = {\n /** @comment linear - no easing, no acceleration */\n linear: (t) => t,\n /** @comment easeInQuad - accelerating from zero velocity */\n easeInQuad: (t) => t * t,\n /** @comment easeOutQuad - decelerating to zero velocity */\n easeOutQuad: (t) => t * (2 - t),\n /** @comment easeInOutQuad - acceleration until halfway, then deceleration */\n easeInOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),\n /** @comment easeInCubic - accelerating from zero velocity */\n easeInCubic: (t) => t * t * t,\n /** @comment easeOutCubic - decelerating to zero velocity */\n easeOutCubic: (t) => --t * t * t + 1,\n /** @comment easeInOutCubic - acceleration until halfway, then deceleration */\n easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n /** @comment easeInQuart - accelerating from zero velocity */\n easeInQuart: (t) => t * t * t * t,\n /** @comment easeOutQuart - decelerating to zero velocity */\n easeOutQuart: (t) => 1 - --t * t * t * t,\n /** @comment easeInOutQuart - acceleration until halfway, then deceleration */\n easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,\n /** @comment easeInQuint - accelerating from zero velocity */\n easeInQuint: (t) => t * t * t * t * t,\n /** @comment easeOutQuint - decelerating to zero velocity */\n easeOutQuint: (t) => 1 + --t * t * t * t * t,\n /** @comment easeInOutQuint - acceleration until halfway, then deceleration */\n easeInOutQuint: (t) => t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t,\n};\n/**\n * Given a start/end point of a scroll and time elapsed, calculate the scroll position we should be at\n */\nfunction getValue(start, end, elapsed, duration, easingType = 'linear') {\n if (elapsed > duration) {\n return end;\n }\n const easing = typeof easingType === 'string' ? easingFunctions[easingType] : easingType;\n return start + (end - start) * easing(elapsed / duration);\n}\n/**\n * Smoothly animate between two values\n */\nfunction animate({ fromValue, toValue, onStart, onUpdate, onComplete, duration = 600, delay = 0, easingType = 'easeOutQuart', }) {\n const startTime = performance.now() + delay;\n const tick = () => {\n const elapsed = performance.now() - startTime;\n const time = getValue(fromValue, toValue, elapsed, duration, easingType);\n const callback = elapsed <= duration ? tick : onComplete ?? EmptyFn;\n const updateAnimation = () => {\n onUpdate(time, callback);\n };\n window.requestAnimationFrame(updateAnimation);\n };\n onStart?.();\n if (delay > 0) {\n setTimeout(() => {\n tick();\n }, delay);\n }\n else {\n tick();\n }\n}\n\nconst useStyles$Q = createUseStyles({\n visuallyHidden: visuallyHidden$1,\n});\nfunction VisuallyHidden$1({ children, element: Element, }) {\n const { visuallyHidden } = useStyles$Q();\n return React__default.createElement(Element, { className: visuallyHidden }, children);\n}\n\nconst useStyles$P = createUseStyles({\n paddingBox: ({ padding, width }) => {\n return {\n paddingTop: padding?.top || 0,\n paddingBottom: padding?.bottom || 0,\n paddingLeft: padding?.left || 0,\n paddingRight: padding?.right || 0,\n width: width\n ? `${width.width}${width.format === 'PERCENT' ? '%' : 'px'}`\n : '100%',\n maxWidth: '100%',\n };\n },\n});\n\nfunction QuestionSpacing({ padding, width, children, ...props }) {\n const { paddingBox } = useStyles$P({ padding, width });\n return (React__default.createElement(\"div\", { className: paddingBox, \"data-testid\": \"QuestionSpacing__paddingBox\", ...props }, children));\n}\n\n/**\n * Hook that calls the provided callback function when the ref element is blurred,\n * only if the next focus is outside the ref element\n *\n * @example\n * const ref = useRef(null);\n * useOnFocusLeave(ref, ()=> onLeaveQuestion());\n *
\n */\nfunction useOnFocusLeave(ref, focusCallback) {\n useEffect(() => {\n const ele = ref?.current;\n function handleFocus(e) {\n if (!ele?.contains(e.relatedTarget)) {\n focusCallback(ref);\n }\n }\n ele?.addEventListener('focusout', handleFocus);\n return () => {\n ele?.removeEventListener('focusout', handleFocus);\n };\n }, [ref, focusCallback]);\n}\n\nconst useStyles$O = createUseStyles({\n footerRow: ({ hasFooterPadding }) => ({\n paddingTop: hasFooterPadding ? 20 : 0,\n }),\n containerStyles: {\n position: 'relative',\n transition: 'opacity 500ms ease-out',\n },\n errorRow: {\n overflow: 'hidden',\n },\n formReset: {\n border: 0,\n minWidth: 0,\n },\n headerRow: {\n marginBottom: 24,\n width: '100%',\n },\n});\n\nconst COPY$b = defineMessages({\n QUESTION_TITLE: {\n id: 'QuestionFieldLayoutTemplate.QUESTION_TITLE',\n defaultMessage: 'Question Title',\n description: '[Type: Label][Vis: low] - question landmark for screen readers only',\n },\n});\nfunction QuestionFieldLayoutTemplate({ footer, hasFooterPadding, children, clickShield, error, id, padding, width = { width: 100, format: 'PERCENT' }, title, onSubmit, \n// eslint-disable-next-line @typescript-eslint/no-empty-function\nonLeave = () => { }, ...props }) {\n const { footerRow, containerStyles, formReset, errorRow, headerRow, } = useStyles$O({\n hasFooterPadding,\n clickShield,\n });\n const containerRef = useRef(null);\n const errorRef = useRef(null);\n /** Keep track of last error to enable error-hiding animation */\n const [lastShownError, setLastShownError] = useState(error);\n const handleKeydown = useCallback((event) => {\n if (event.key === 'Enter') {\n onSubmit?.();\n }\n }, [onSubmit]);\n /**\n * resolves double height animate issue with RAWR-1240\n */\n const isAnimating = useRef(false);\n useSSRSafeLayoutEffect(() => {\n const el = errorRef.current;\n if (!el || isAnimating.current) {\n return;\n }\n const hasError = !!error;\n const initialHeight = el.offsetHeight;\n el.style.height = 'auto'; // remove height to measure full size\n const { offsetHeight } = el;\n const fromValue = hasError ? 0 : offsetHeight;\n const toValue = hasError ? offsetHeight : 0;\n // don't animate if value is already correct (e.g. at initial load)\n if (initialHeight === toValue) {\n el.style.height = `${initialHeight}px`;\n return;\n }\n el.style.height = `${initialHeight}px`;\n animate({\n fromValue,\n toValue,\n duration: 300,\n delay: 200,\n onUpdate: (height, next) => {\n el.style.height = `${height}px`;\n next();\n },\n onStart: () => {\n isAnimating.current = true;\n },\n onComplete: () => {\n setLastShownError(error);\n isAnimating.current = false;\n },\n });\n }, [error]);\n const fieldsetRef = useRef(null);\n useOnFocusLeave(fieldsetRef, onLeave);\n useEffect(() => {\n const { current: container } = containerRef;\n container?.addEventListener('keydown', handleKeydown);\n return () => {\n return container?.removeEventListener('keydown', handleKeydown);\n };\n }, [containerRef, handleKeydown]);\n /**\n * This id is queried in RespWeb to calculate the offset for scroll-to-error animations in classic mode\n * ref: https://code.corp.surveymonkey.com/webplatform/smweb/pull/10725\n */\n let errorRowId;\n /** used in RespWeb for OQAATView */\n let fieldId;\n /** used in RespWeb for OQAATView */\n let questionTitleId;\n if (id) {\n errorRowId = createErrorRowId(id);\n fieldId = createFieldId(id);\n questionTitleId = createLegendId(id);\n }\n return (React__default.createElement(\"div\", { ref: containerRef, id: fieldId, ...props, className: containerStyles },\n React__default.createElement(VisuallyHidden$1, { element: \"div\" },\n React__default.createElement(T, { desc: COPY$b.QUESTION_TITLE })),\n React__default.createElement(QuestionSpacing, { padding: padding, width: width },\n React__default.createElement(\"div\", { ref: errorRef, id: errorRowId, className: errorRow }, error || lastShownError),\n React__default.createElement(\"fieldset\", { ref: fieldsetRef, className: formReset },\n React__default.createElement(\"legend\", { id: questionTitleId, className: headerRow, tabIndex: -1 }, title),\n children),\n footer && React__default.createElement(\"div\", { className: footerRow }, footer))));\n}\n\n/**\n * Calculate the max number of children each column can be filled in the layout\n * @param columns number of columns\n * @param total total child count\n * @description Based on the current implementation in production (as of Jan 20, 2021),\n * - if columns = 1, the max number of children per column = total (render all children vertically)\n * - if columns > 1, the max number of children per column = (total / columns) + 1\n */\nconst calculateMaxNumOfChildrenPerColumn = (columns, total) => {\n if (columns === 1) {\n return total;\n }\n const childrenPerColumn = total / columns;\n if (childrenPerColumn % 1 === 0) {\n return childrenPerColumn;\n }\n return Math.floor(childrenPerColumn) + 1;\n};\n/**\n * Divide the children array into slices for rendering\n * @param childrenArr - children array\n * @param maxCellsPerCol - maximum number of children per slice\n * @param totalColumns - number of columns\n * @example\n * childrenArr = [option1, option2, option3, option4, option5, option6, option7]\n * childrenPerSlice = 2\n * totalColumns = 3\n * output: [[option1, option2, option3], [option4, option5], [option6, option7]]\n */\nconst sliceChildren = (childrenArr, maxCellsPerCol, totalColumns) => {\n let index = 0;\n const result = [];\n const partialColumnsCount = totalColumns * maxCellsPerCol - childrenArr.length;\n // Calculate the number of fullColumns, to conditionally push slice with the correct # of cells\n let fullColumnsCount = totalColumns - partialColumnsCount;\n while (index < childrenArr.length) {\n if (fullColumnsCount > 0) {\n result.push(childrenArr.slice(index, index + maxCellsPerCol));\n index += maxCellsPerCol;\n }\n else {\n result.push(childrenArr.slice(index, index + maxCellsPerCol - 1));\n index += maxCellsPerCol - 1;\n }\n fullColumnsCount -= 1;\n }\n return result;\n};\n\nconst useStyles$N = createUseStyles((theme) => ({\n containerVertical: {\n display: 'initial',\n },\n containerHorizontal: {\n display: 'block',\n },\n /** shared between horizontal and vertical columns */\n column: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n },\n columnHorizontal: {},\n /** Horizontal Column that adjust width to content width */\n columnHorizontalAutoAdjust: {\n width: 'auto',\n },\n [`@media (min-width: ${theme.breakpoints.xs.min})`]: {\n containerVertical: {\n display: 'flex',\n },\n containerHorizontal: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n },\n [`@media only screen and (min-width: ${theme.breakpoints.lg.min})`]: {\n columnHorizontal: {\n width: '19%',\n },\n },\n [`@media (min-width: ${theme.breakpoints.sm.min}) and (max-width: ${theme.breakpoints.md.max})`]: {\n columnHorizontal: {\n width: '24%',\n },\n },\n [`@media only screen and (max-width: ${theme.breakpoints.xxs.max})`]: {\n columnHorizontal: {\n width: '100%',\n display: 'block',\n },\n columnHorizontalAutoAdjust: {\n width: '100%',\n display: 'block',\n },\n },\n answerLayoutCell: ({ gridCellMargin = '0' }) => ({\n margin: gridCellMargin,\n flex: [0, 0, 'auto'],\n wordBreak: 'normal',\n overflowWrap: 'anywhere',\n }),\n otherLayoutCell: ({ otherCellMargin = '0' }) => ({\n margin: otherCellMargin,\n }),\n}));\n\nfunction QuestionAnswerLayoutTemplate({ children, columns = 1, other, noneOfTheAbove, adjustToContent = false, gridCellMargin, otherCellMargin, }) {\n const { containerVertical, containerHorizontal, column, columnHorizontal, columnHorizontalAutoAdjust, answerLayoutCell, otherLayoutCell, } = useStyles$N({\n columns,\n adjustToContent,\n gridCellMargin,\n otherCellMargin,\n });\n const isHorizontal = columns === 'horizontal';\n /* Based on the columns config, divide the question answers\n (children of this component) into column groups for rendering.\n \n The reason we need to do this is when there are multiple columns,\n the answers are listed vertically instead of horizontally.\n For example:\n If there are 3 answers and 2 columns,\n Then the ordering will be:\n Answer 1 Answer 3\n Answer 2\n \n NOT:\n Answer 1 Answer 2\n Answer 3\n * though `horizontal` uses this\n \n */\n const columnGroups = useMemo(() => {\n const totalChildren = React__default.Children.count(children);\n const totalColumns = columns === 'horizontal' ? totalChildren : columns;\n const childrenArray = React__default.Children.toArray(children);\n if (!other && !!noneOfTheAbove && columns !== 'horizontal') {\n childrenArray.push(noneOfTheAbove);\n }\n const answersPerColumn = columns === 'horizontal'\n ? 1\n : calculateMaxNumOfChildrenPerColumn(totalColumns, totalChildren + (!other && !!noneOfTheAbove ? 1 : 0));\n return sliceChildren(childrenArray, answersPerColumn, totalColumns);\n }, [children, columns, noneOfTheAbove, other]);\n const columnClassNames = isHorizontal\n ? [column, adjustToContent ? columnHorizontalAutoAdjust : columnHorizontal]\n : column;\n return (React__default.createElement(React__default.Fragment, null,\n React__default.createElement(\"div\", { className: isHorizontal ? containerHorizontal : containerVertical }, columnGroups.map((col, columnIndex) => (React__default.createElement(\"div\", { key: `col-${columnIndex + 1}`, className: classNames(columnClassNames), \"data-testid\": \"answer-layout-column\" }, col.map((cell, cellIndex) => (React__default.createElement(\"div\", { key: `cell-${cellIndex + 1}`, \"data-testid\": \"answer-layout-cell\", className: answerLayoutCell }, cell))))))),\n other && React__default.createElement(\"div\", { className: otherLayoutCell }, other),\n ((other && noneOfTheAbove) || columns === 'horizontal') && (React__default.createElement(\"div\", { className: otherLayoutCell, \"data-testid\": \"Other-NOTA\" }, noneOfTheAbove))));\n}\n\nfunction WarningIcon() {\n return (React__default.createElement(\"g\", { className: \"warning-icon\" },\n React__default.createElement(\"path\", { className: \"background\", transform: \"translate(0 .49999)\", d: \"M8.49642,0.635797c.1494.086885.27371.210979.36079.360173L15.8621,12.9978c.2782.4766.1169,1.0883-.3602,1.3662-.1529.0891-.3267.136-.5037.136L1,14.5c-.552285,0-1-.4473-1-.999c0-.1766.046846-.35.135766-.5026L7.1291,0.996589c.27785-.476838.89002-.63837,1.36732-.360792Z\", clipRule: \"evenodd\", fill: \"currentColor\", fillRule: \"evenodd\", stroke: \"none\" }),\n React__default.createElement(\"path\", { className: \"foreground\", transform: \"translate(.000815 .49999)\", d: \"M8,11.2546c-.3797,0-.69349.2794-.74315.6419L7.25,11.9973v.26l.00685.1008C7.30651,12.7206,7.6203,13,8,13s.69349-.2794.74315-.6419L8.75,12.2573v-.26l-.00685-.1008C8.69349,11.534,8.3797,11.2546,8,11.2546ZM8,4c-.3797,0-.69349.2794-.74315.6419L7.25,4.74268v4.54393l.00685.10078c.04966.3625.36345.64191.74315.64191s.69349-.27941.74315-.64191L8.75,9.28661v-4.54393L8.74315,4.6419C8.69349,4.2794,8.3797,4,8,4Z\", clipRule: \"evenodd\", fill: \"#fff\", fillRule: \"evenodd\", stroke: \"none\" })));\n}\nvar WarningIcon$1 = withSvgIcon(WarningIcon, 'WarningIcon');\n\nconst useStyles$M = createUseStyles((theme) => ({\n icon: {\n color: '#F05B24',\n fontSize: theme.fontSize.body,\n alignSelf: 'flex-start',\n marginTop: 2,\n flexShrink: 0,\n },\n validationMessage: {\n fontFamily: theme.fontFamily,\n lineHeight: 1.5,\n color: '#333e48',\n fontWeight: 400,\n fontSize: 16,\n padding: theme.isDark ? 8 : [4, 0],\n backgroundColor: theme.isDark ? 'rgba(255, 255, 255, 0.9)' : '',\n borderRadius: 2,\n display: 'inline-flex',\n gap: 5,\n alignItems: 'center',\n marginBottom: 8,\n [`@media only screen and (max-width: ${theme.breakpoints?.xxs.max})`]: {\n width: '100%',\n padding: theme.isDark ? 4 : [4, 0],\n },\n },\n}));\n\nfunction ValidationMessage({ children, id, tag: Wrapper = 'span', ...props }) {\n const { icon, validationMessage } = useStyles$M();\n return (React__default.createElement(Wrapper, { className: validationMessage, \"aria-live\": \"polite\", id: id, ...props },\n React__default.createElement(WarningIcon$1, { className: icon }),\n React__default.createElement(\"span\", { translate: \"no\" }, children)));\n}\n\nconst useStyles$L = createUseStyles((theme) => {\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputArea: {\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontWeight: fontWeightOptions.medium,\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px',\n },\n lineHeight: '1.15em',\n padding: '6px 60px 6px 6px',\n maxWidth: '100%',\n [breakpointXsMin]: {\n // extra 66px to account for the padding\n width: ({ cols }) => `calc(${cols}ch + 66px)`,\n },\n width: '100%',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n verticalAlign: 'top',\n textSizeAdjust: 'auto',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5,\n },\n '&:disabled': {\n opacity: 0.4,\n },\n },\n };\n});\n\nfunction TextArea({ className, disabled = false, required = false, readOnly = false, cols = 50, ...props }, forwardedRef) {\n const { inputArea } = useStyles$L({ cols });\n return (React__default.createElement(\"textarea\", { className: classNames(inputArea, className), disabled: disabled, \"aria-disabled\": disabled, required: required, \"aria-required\": required, readOnly: readOnly, \"aria-readonly\": readOnly, spellCheck: true, ref: forwardedRef, ...props }));\n}\nvar TextArea$1 = forwardRef(TextArea);\n\nconst useStyles$K = createUseStyles((theme) => {\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputField: {\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px',\n },\n fontWeight: fontWeightOptions.medium,\n lineHeight: '1.5em',\n height: ({ autoHeight }) => (autoHeight ? {} : '50px'),\n maxWidth: '100%',\n width: '100%',\n [breakpointXsMin]: {\n // extra 12px to account for the padding\n width: ({ size }) => `calc(${size}ch + 12px)`,\n },\n padding: '6px',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5,\n },\n '&:disabled': {\n opacity: 0.4,\n },\n },\n };\n});\n\nfunction TextInput({ className, autoHeight = false, size = 50, required = false, disabled = false, readOnly = false, onChange: handleChange, ...props }, forwardedRef) {\n const { inputField } = useStyles$K({\n autoHeight,\n size,\n });\n return (React__default.createElement(\"input\", { type: \"text\", className: classNames(inputField, className), disabled: disabled, \"aria-disabled\": disabled, required: required, \"aria-required\": required, readOnly: readOnly, \"aria-readonly\": readOnly, spellCheck: true, onChange: handleChange, ...props, ref: forwardedRef }));\n}\nvar TextInput$1 = forwardRef(TextInput);\n\nconst useStyles$J = createUseStyles((theme) => {\n return {\n commentLabelText: {\n ...theme.questionBody,\n marginBottom: 5,\n lineHeight: 1.25,\n },\n commentLabel: {\n display: 'block',\n },\n };\n});\n\nfunction CommentChoice({ label, lineCount = 3, charCount = 50, onChange, className, ...props }) {\n const handleChange = (e) => {\n onChange?.(e);\n };\n const { commentLabel, commentLabelText } = useStyles$J();\n const multipleTextLines = lineCount > 1;\n return (React__default.createElement(\"div\", { className: className },\n React__default.createElement(\"label\", { htmlFor: props.id, className: commentLabel, tabIndex: -1 },\n React__default.createElement(\"div\", { className: commentLabelText }, label),\n multipleTextLines ? (React__default.createElement(TextArea$1, { onChange: handleChange, rows: lineCount, cols: charCount, ...props })) : (React__default.createElement(TextInput$1, { autoHeight: true, onChange: handleChange, size: charCount, ...props })))));\n}\n\nconst textReset = {\n margin: 0,\n};\nconst useStyles$I = createUseStyles((theme) => {\n const { fontSize, ...questionTitleFormatting } = theme.questionTitle;\n const questionTitleFontSize = fontSize ?? {};\n return {\n addonContainer: {\n display: 'inline-block',\n margin: [0, 5],\n verticalAlign: 'text-bottom',\n },\n container: {\n position: 'relative',\n display: 'flex',\n },\n questionNumber: ({ isRTL }) => ({\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n flex: [0, 0],\n }),\n questionTitle: ({ useDefaultFrontSize }) => ({\n ...textReset,\n ...questionTitleFormatting,\n color: theme.questionTitle?.color || theme.questionColor,\n fontSize: useDefaultFrontSize && !theme.isAccessible\n ? theme.fontSize.body\n : questionTitleFontSize,\n lineHeight: 1.25,\n whiteSpace: 'normal',\n wordWrap: 'break-word',\n }),\n requiredAsterisk: ({ isRTL }) => ({\n display: 'inline-block',\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n }),\n richText: {\n flex: [1, 0],\n },\n };\n});\n\nfunction RespondentQuestionTitle({ element: Element = 'div', addon, heading, id, number, numbered, required, useDefaultFrontSize = false, ...props }) {\n const { isRTL } = useContext(L10NContext);\n const { addonContainer, container, questionNumber, questionTitle, requiredAsterisk, richText, } = useStyles$I({ useDefaultFrontSize, isRTL });\n return (React__default.createElement(Element, { id: id, className: classNames(container, questionTitle), translate: \"no\", ...props },\n required && (React__default.createElement(\"span\", { \"aria-hidden\": true, className: requiredAsterisk }, \"*\")),\n numbered && React__default.createElement(\"span\", { className: questionNumber },\n number,\n \".\"),\n React__default.createElement(RichText, { element: \"span\", text: heading, className: richText }),\n addon && React__default.createElement(\"span\", { className: addonContainer }, addon)));\n}\n\n// default text to be added as a translation to a specific version of Button directly.\nconst defaultOKConfig = { text: 'OK', visible: false };\nfunction QuestionField({ id, title: titleProps, okButton: { visible: showButton, ...okButtonProps } = defaultOKConfig, error, errorId: errorIdProp, onLeave, padding = { top: 0, bottom: 0, left: 0, right: 0 }, width, children, ...props }) {\n const errorId = errorIdProp ?? createErrorId(id);\n return (React__default.createElement(QuestionFieldLayoutTemplate, { footer: showButton && React__default.createElement(Button, { type: \"button\", ...okButtonProps }), hasFooterPadding: true, clickShield: false, error: error && React__default.createElement(ValidationMessage, { id: errorId }, error), onLeave: onLeave, id: id, padding: padding, width: width, title: React__default.createElement(RespondentQuestionTitle, { ...titleProps }), ...props }, children));\n}\n\nfunction useInputStyles({ onChange, ...props }) {\n /** extract props without affecting passthrough */\n const { checked: isChecked, defaultChecked: isDefaultChecked, disabled: isDisabled, 'aria-disabled': isAriaDisabled, readOnly: isReadOnly, 'aria-readonly': isAriaReadOnly, } = props;\n /** configure style-props */\n const disabled = isDisabled || isAriaDisabled === 'true';\n const readOnly = isReadOnly || isAriaReadOnly === 'true';\n const [checked, setIsChecked] = useState(isDefaultChecked ?? isChecked ?? false);\n React__default.useEffect(() => {\n setIsChecked(isChecked ?? false);\n }, [isChecked]);\n /** handle change for checked style (controlled/uncontrolled) */\n const handleChange = (e) => {\n setIsChecked(e.target.checked);\n onChange?.(e);\n };\n const styleProps = {\n checked,\n disabled,\n readOnly,\n };\n const inputProps = { ...props, onChange: handleChange };\n return {\n styleProps,\n inputProps,\n };\n}\n\nconst radioGroupContext = createContext(undefined);\n\nfunction useRadioGroup() {\n return useContext(radioGroupContext);\n}\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps, no-console */\nfunction throwControlChangeError(isControlled, controlled, name, state) {\n const conState = ['controlled', 'uncontrolled'];\n const stateStr = isControlled ? conState : [...conState].reverse();\n if (isControlled !== (controlled !== undefined)) {\n console.error([\n `@sm/question-ui: A component is changing the ${stateStr[0]} ${state} state of ${name} to be ${stateStr[1]}.`,\n 'Elements should not switch from uncontrolled to controlled (or vice versa).',\n `Decide between using a controlled or uncontrolled ${name} element for the lifetime of the component.`,\n \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\",\n 'More info: https://fb.me/react-controlled-components',\n ].join('\\n'));\n }\n}\nfunction throwDefaultStateError(isControlled, defaultValue, defaultProp, name, state) {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\n `@sm/question-ui: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. `,\n `To suppress this warning opt to use a controlled ${name}.`,\n ].join('\\n'));\n }\n}\nfunction useControlledState({ controlled, default: defaultProp, name, state = 'value', }) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const { current: isControlled } = React__default.useRef(controlled !== undefined);\n const [valueState, setValue] = React__default.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n const { current: defaultValue } = React__default.useRef(defaultProp);\n React__default.useEffect(() => {\n throwControlChangeError(isControlled, controlled, name, state);\n throwDefaultStateError(isControlled, defaultValue, defaultProp, name, state);\n }, [state, name, controlled, defaultProp]);\n }\n const setValueIfUncontrolled = React__default.useCallback((newValue) => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, [setValue]);\n return [value, setValueIfUncontrolled];\n}\n\nfunction setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n // eslint-disable-next-line no-param-reassign\n ref.current = value;\n }\n}\n/**\n * useForkRef\n * Joins refs together and returns a combination of the two as a new ref\n *\n * @param refA\n * @param refB\n */\nfunction useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n\n/**\n * SMQ Tier 3\n */\nfunction RadioGroup({ children, name: nameProp, value: valueProp, defaultValue, onChange, disabled = false, readOnly = false, ...divProps }) {\n const [value, setValueState] = useControlledState({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup',\n });\n const handleChange = (e) => {\n setValueState(e.value);\n onChange?.(e);\n };\n const name = nameProp;\n return (React__default.createElement(radioGroupContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n , { \n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value: { name, onChange: handleChange, value, disabled, readOnly } },\n React__default.createElement(\"div\", { role: \"radiogroup\", ...divProps }, children)));\n}\n\nconst useStyles$H = createUseStyles({\n inputContainer: {\n display: 'inline-flex',\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n width: '1em',\n minWidth: '1em',\n cursor: 'pointer',\n },\n input: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n opacity: 0.00001,\n zIndex: 1,\n margin: 0,\n cursor: ({ disabled, readOnly }) => disabled || readOnly ? 'default' : 'pointer',\n pointerEvents: ({ disabled, readOnly }) => disabled || readOnly ? 'none' : undefined,\n },\n controlIcon: {\n width: '100%',\n height: '100%',\n opacity: ({ checked }) => (checked ? 1 : 0),\n transition: 'opacity .2s linear',\n },\n});\n\nfunction BaseInput({ element: Element = 'span', className, icon, checked: checkedProp, defaultChecked, onClick, onChange, ...inputProps }, forwardedRef) {\n /** extract props without affecting passthrough */\n const { disabled: disabledProp, 'aria-disabled': ariaDisabledProp, readOnly: readOnlyProp, 'aria-readonly': ariaReadOnlyProp, } = inputProps;\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const [checked, setChecked] = useControlledState({\n controlled: checkedProp,\n default: defaultChecked,\n state: 'checked',\n name: 'BaseInput',\n });\n const handleChange = (e) => {\n if (e.nativeEvent.defaultPrevented) {\n return;\n }\n if (disabled || readOnly) {\n e.preventDefault();\n return;\n }\n const newChecked = e.target.checked;\n setChecked(newChecked);\n onChange?.(e);\n };\n const handleClick = (e) => {\n if (disabled || readOnly) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n };\n const { inputContainer, input, controlIcon } = useStyles$H({\n disabled,\n readOnly,\n checked,\n });\n return (React__default.createElement(Element, { className: classNames(inputContainer, className) },\n React__default.createElement(\"input\", { className: input, checked: checkedProp, defaultChecked: defaultChecked, onChange: handleChange, onClick: handleClick, ...inputProps, ref: forwardedRef }),\n React__default.cloneElement(icon, {\n className: controlIcon,\n })));\n}\nvar BaseInput$1 = forwardRef(BaseInput);\n\nfunction RadioIcon() {\n return (React__default.createElement(\"g\", { className: \"radio-icon\" },\n React__default.createElement(\"ellipse\", { fill: \"currentColor\", className: \"background\", transform: \"translate(8 8)\", rx: \"8\", ry: \"8\" }),\n React__default.createElement(\"path\", { fill: \"#fff\", className: \"checkmark\", transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\", d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\" })));\n}\nvar RadioIcon$1 = withSvgIcon(RadioIcon, 'RadioIcon');\n\nconst useStyles$G = createUseStyles((theme) => ({\n radioInput: {\n color: theme.isDark ? '#fff' : '#000',\n backgroundColor: ({ checked }) => {\n if (checked) {\n return theme.isDark ? '#fff' : '#000';\n }\n return '#fff';\n },\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '100%',\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff',\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff',\n },\n '& input': {\n cursor: 'pointer',\n },\n },\n}));\n\nfunction RadioInput({ className, ...props }, forwardedRef) {\n const { inputProps, styleProps } = useInputStyles(props);\n const styles = useStyles$G(styleProps);\n return (React__default.createElement(BaseInput$1, { type: \"radio\", className: classNames(styles.radioInput, className), icon: React__default.createElement(RadioIcon$1, null), ref: forwardedRef, ...inputProps }));\n}\nvar RadioInput$1 = forwardRef(RadioInput);\n\n// get the margin top by taking the font size and the line height and divide by 2 to get the margin top\nconst marginTopHelper$1 = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\nconst useStyles$F = createUseStyles((theme) => ({\n controlLabel: ({ checked, disabled }) => {\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked\n ? theme.correctAnswerHighlightColor\n : 'transparent',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked\n ? fontWeightOptions.medium\n : theme.questionBody.fontWeight ?? fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor],\n },\n '&:focus-within': {\n background: theme.correctAnswerHighlightColor,\n },\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({ inputSize }) => inputSize ?? '1em',\n marginTop: marginTopHelper$1(theme.questionBody?.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8,\n },\n },\n}));\n\nfunction Radio({ children: label = '', className, onChange, checked: checkedProp, name: nameProp, disabled: disabledProp, readOnly: readOnlyProp, inputSize, ...props }, forwardedRef) {\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = radioGroup.value === props.value;\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n const disabled = radioGroup?.disabled ?? disabledProp;\n const readOnly = radioGroup?.readOnly ?? readOnlyProp;\n const handleChange = (e) => {\n const { id, checked: isChecked, value } = e.target;\n radioGroup?.onChange({ id, checked: isChecked, value });\n onChange?.({ id, checked: isChecked, value });\n };\n const { inputProps, styleProps } = useInputStyles({\n ...props,\n name,\n checked,\n disabled,\n readOnly,\n onChange: handleChange,\n });\n const { controlLabel, icon } = useStyles$F({ ...styleProps, inputSize });\n return (React__default.createElement(\"label\", { tabIndex: -1, htmlFor: props.id, className: classNames(controlLabel, className) },\n React__default.createElement(RadioInput$1, { ...inputProps, ref: forwardedRef, className: icon }),\n React__default.createElement(RichText, { element: \"span\", text: label })));\n}\nvar Radio$1 = forwardRef(Radio);\n\nconst useStyles$E = createUseStyles((theme) => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowStyles: {\n borderRadius: '3px',\n textAlign: 'center',\n cursor: 'pointer',\n alignItems: 'center',\n padding: '3px',\n ...theme.questionBody,\n fontSize: '20px',\n },\n rowLabel: {\n margin: [0, 2, 0, 2],\n fontSize: '18px',\n padding: '3px',\n width: ({ width = 60 }) => `${width}%`,\n /**\n * There is a known jss issue that results in media query\n * checks not occurring for all mapped elements, hence the use of !important\n * https://github.com/cssinjs/jss/issues/1320\n * https://github.com/cssinjs/jss/issues/1327#issuecomment-707967909\n * Because function rules/values have higher source order specificity (rendered after static rules),\n * we're using !important to override that.\n * */\n [breakpointSmMax]: {\n width: ['50%', '!important'],\n },\n },\n rowRadio: {\n justifyContent: 'center',\n gap: 0,\n padding: '3px',\n fontSize: 'inherit',\n width: ({ radioWidth = 20 }) => `${radioWidth}%`,\n [breakpointSmMax]: {\n width: ['25%', '!important'],\n },\n },\n };\n});\n\nfunction BestWorstRow({ id: rowId, label, value = null, columnIds = [], className, onChange, onClick, onKeyDown, width, ...props }) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [bestColId, worstColId] = columnIds;\n const bestRadioId = `${rowId}_${bestColId}`;\n const worstRadioId = `${rowId}_${worstColId}`;\n const labelId = `${rowId}_label`;\n const radioEvents = { onClick, onKeyDown };\n const radioWidth = width !== undefined ? (100 - width) / 2 : DEFAULT_RADIO_WIDTH;\n const handleChange = (e) => {\n onChange?.({ id: rowId, value: e.value, checked: e.checked });\n };\n const { rowStyles, rowLabel, rowRadio } = useStyles$E({ width, radioWidth });\n return (React__default.createElement(Row, { className: classNames(rowStyles, className), ...props },\n React__default.createElement(Radio$1, { id: bestRadioId, className: rowRadio, value: bestColId, name: rowId, checked: value === bestColId, \"aria-labelledby\": `${bestColId} ${labelId}`, onChange: handleChange, ...radioEvents }),\n React__default.createElement(\"span\", { className: rowLabel },\n React__default.createElement(RichText, { id: labelId, element: \"span\", text: label })),\n React__default.createElement(Radio$1, { id: worstRadioId, className: rowRadio, value: worstColId, name: rowId, checked: value === worstColId, \"aria-labelledby\": `${worstColId} ${labelId}`, onChange: handleChange, ...radioEvents })));\n}\n\nconst useStyles$D = createUseStyles((theme) => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowList: {\n '& > :nth-child(even)': {\n backgroundColor: theme.input.bgColor,\n },\n },\n headerColumn: ({ radioWidth = 20 }) => ({\n display: 'table',\n width: `${radioWidth}%`,\n padding: '5px 8px',\n alignItems: 'center',\n textAlign: 'center',\n ...theme.questionBody,\n fontSize: '14px',\n [breakpointSmMax]: {\n width: '25%',\n },\n }),\n labelColumn: ({ labelWidth = 60 }) => ({\n display: 'table',\n width: `${labelWidth}%`,\n margin: [0, 2, 0, 2],\n padding: '3px',\n [breakpointSmMax]: {\n width: '50%',\n },\n }),\n };\n});\n\nfunction BestWorst({ id: questionId, disabled: _dis, readOnly: _ro, choices: fields = [], responses = [], columnChoices = [], onChange, labelWidth, ...questionFieldProps }) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [selectedChoices, setSelectedChoices] = useState(responses);\n const [bestAnswerColumn, worstAnswerColumn] = columnChoices;\n const columnIds = columnChoices?.map((c) => c.id);\n const errorId = createErrorId(questionId);\n const radioWidth = labelWidth !== undefined ? (100 - labelWidth) / 2 : DEFAULT_RADIO_WIDTH;\n /** Filter choices that exist and are visible */\n const { options: rowFields } = useQuestionChoices(fields);\n /** determines whether a radio should be rendered as checked or unchecked */\n const getRadioSelection = (id) => {\n return selectedChoices.find((c) => c.id === id)?.value[0].id ?? '';\n };\n /** unChecks selected choice */\n const unCheckOption = (radioId) => {\n const newChoices = selectedChoices.filter((c) => !radioId.match(c.id));\n setSelectedChoices(newChoices);\n onChange?.(newChoices);\n };\n /** handles adding new checked selection to responses */\n const handleChange = (e) => {\n let newChoices = [];\n const rowId = e.id;\n const rowValue = e.value;\n /** remove any other checked radio in the same row or column */\n newChoices = selectedChoices.filter((row) => !(row.id === rowId || row.value.find((col) => col.value === rowValue)));\n newChoices.push({\n id: rowId,\n value: [{ id: rowValue, value: rowValue }],\n });\n setSelectedChoices(newChoices);\n onChange?.(newChoices);\n };\n const handleClick = (e) => {\n const input = e.target;\n const isSelected = selectedChoices.find((c) => input.id.match(c.id));\n if (isSelected && input.checked) {\n unCheckOption(input.id);\n }\n };\n const handleKeyboard = (e) => {\n const input = e.target;\n const isSelected = selectedChoices.find((c) => input.id.match(c.id));\n if (e.code === 'Space' && isSelected) {\n e.preventDefault();\n unCheckOption(input.id);\n }\n };\n const { headerColumn, rowList, labelColumn } = useStyles$D({\n labelWidth,\n radioWidth,\n });\n return (\n /*\n NOTE: The id has been modified to work in hybrid mode. The id needs to\n be different from the question-field id created in the responseweb.\n */\n React__default.createElement(QuestionField, { id: `hybrid-${questionId}`, \"data-testid\": \"BestWorstQuestionType\", ...questionFieldProps },\n React__default.createElement(\"div\", { className: rowList },\n React__default.createElement(Row, null,\n React__default.createElement(RichText, { id: bestAnswerColumn?.id, element: \"span\", text: bestAnswerColumn?.label, className: classNames(headerColumn) }),\n React__default.createElement(\"span\", { className: classNames(headerColumn, labelColumn) }),\n React__default.createElement(RichText, { id: worstAnswerColumn?.id, element: \"span\", text: worstAnswerColumn?.label, className: classNames(headerColumn) })),\n rowFields?.map((field) => {\n const rowId = `${questionId}_${field.id}`;\n return (React__default.createElement(BestWorstRow, { key: rowId, id: rowId, label: field.label, width: labelWidth, value: getRadioSelection(rowId), columnIds: columnIds, onChange: handleChange, onClick: handleClick, onKeyDown: handleKeyboard, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined }));\n }))));\n}\nvar BestWorst$1 = withErrorBoundary(BestWorst);\n\nfunction CheckboxIcon() {\n return (React__default.createElement(\"g\", { className: \"checkbox-icon\" },\n React__default.createElement(\"rect\", { fill: \"currentColor\", className: \"background\", width: \"16\", height: \"16\", rx: \"2\", ry: \"2\" }),\n React__default.createElement(\"path\", { fill: \"#fff\", className: \"checkmark\", transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\", d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\" })));\n}\nvar CheckboxIcon$1 = withSvgIcon(CheckboxIcon, 'CheckboxIcon');\n\nfunction SelectIcon() {\n return (React__default.createElement(\"g\", { className: \"select-icon\" },\n React__default.createElement(\"polygon\", { className: \"select-arrow select-arrow-top\", transform: \"matrix(1.4619 0 0 1.4619 5.8783 5.4791)\", points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\", fill: \"currentColor\", stroke: \"transparent\", strokeLinejoin: \"round\", strokeWidth: \".5\" }),\n React__default.createElement(\"polygon\", { className: \"select-arrow select-arrow-bottom\", transform: \"matrix(-1.4619 0 0 -1.4619 10.122 10.522)\", points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\", fill: \"currentColor\", stroke: \"transparent\", strokeLinejoin: \"round\", strokeWidth: \".5\" })));\n}\nvar SelectIcon$1 = withSvgIcon(SelectIcon, 'SelectIcon');\n\nfunction CaretDown() {\n return (React__default.createElement(\"g\", { className: \"caret-down-icon\" },\n React__default.createElement(\"path\", { d: \"M13.254 4c.19.001.38.088.526.26.267.316.29.81.073 1.158l-.073.1L8.53 11.74l-.084.086a.66.66 0 0 1-.901-.007l-.076-.08L2.22 5.523l-.073-.1a1.024 1.024 0 0 1 0-1.058l.073-.1.084-.085a.674.674 0 0 1 .446-.175V4h10.504z\", fill: \"currentColor\" })));\n}\nvar CaretDownIcon = withSvgIcon(CaretDown, 'CaretDownIcon');\n\nfunction CaretDownOutline() {\n return (React__default.createElement(\"g\", { className: \"caret-down-icon\" },\n React__default.createElement(\"path\", { d: \"m922.74 642.16l-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", transform: \"matrix(-.016568 0 0 -.016568 15.842 16.026)\", fill: \"currentcolor\" })));\n}\nvar CaretDownOutlineIcon = withSvgIcon(CaretDownOutline, 'CaretDownOutlineIcon');\n\nfunction CaretUpOutline() {\n return (React__default.createElement(\"g\", { className: \"caret-up-icon\" },\n React__default.createElement(\"path\", { d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", transform: \"matrix(.016568 0 0 .016568 .15803 -.025552)\", fill: \"currentcolor\" })));\n}\nvar CaretUpOutlineIcon = withSvgIcon(CaretUpOutline, 'CaretUpOutlineIcon');\n\nfunction CaretLeftOutline() {\n return (React__default.createElement(\"g\", { className: \"caret-left-icon\" },\n React__default.createElement(\"path\", { transform: \"matrix(0 -.016568 .016568 0 -.025552 15.842)\", d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", fill: \"currentcolor\" })));\n}\nvar CaretLeftOutlineIcon = withSvgIcon(CaretLeftOutline, 'CaretLeftOutlineIcon');\n\nfunction CaretRightOutline() {\n return (React__default.createElement(\"g\", { className: \"caret-right-icon\" },\n React__default.createElement(\"path\", { transform: \"matrix(0 .016568 -.016568 0 16.026 .15803)\", d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", fill: \"currentcolor\" })));\n}\nvar CaretRightOutlineIcon = withSvgIcon(CaretRightOutline, 'CaretRightOutlineIcon');\n\nfunction DragHandleIcon() {\n return (React__default.createElement(\"g\", { className: \"drag-handle-icon\" },\n React__default.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 2)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n React__default.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 5.3333)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n React__default.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 8.6667)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n React__default.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 12)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" })));\n}\nvar DragHandleIcon$1 = withSvgIcon(DragHandleIcon, 'DragHandleIcon');\n\nfunction Calendar() {\n return (React__default.createElement(\"g\", { fill: \"currentcolor\", transform: \"matrix(.031614 0 0 .031614 .33438 .33438)\" },\n React__default.createElement(\"path\", { d: \"m405.17 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n React__default.createElement(\"path\", { d: \"m314.23 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n React__default.createElement(\"path\", { d: \"m223.28 363.15h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n React__default.createElement(\"path\", { d: \"m132.34 363.15h-55.725c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c-1e-3 -2.209-1.792-4-4.001-4z\" }),\n React__default.createElement(\"path\", { d: \"m349.44 340.41h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m258.5 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m167.56 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m76.611 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m349.44 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m258.5 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\" }),\n React__default.createElement(\"path\", { d: \"m363.37 114.86h6.938c10.543 0 19.09-8.549 19.09-19.091v-72.39c0-10.54-8.547-19.089-19.09-19.089h-6.938c-10.545 0-19.092 8.549-19.092 19.089v72.389c2e-3 10.543 8.549 19.092 19.092 19.092z\" }),\n React__default.createElement(\"path\", { d: \"m118.5 115.33h6.938c10.544 0 19.091-8.55 19.091-19.091v-72.389c0-10.541-8.547-19.09-19.091-19.09h-6.938c-10.543 0-19.09 8.549-19.09 19.09v72.389c0 10.541 8.547 19.091 19.09 19.091z\" }),\n React__default.createElement(\"path\", { d: \"M453.916,43.558h-48.996v57.209c0,19.084-15.525,29.61-34.607,29.61h-6.938c-19.084,0-34.609-15.526-34.609-34.61v-52.209h-168.713v52.682c0,19.084-15.525,34.61-34.609,34.61h-6.938c-19.083,0-34.608-15.526-34.608-34.61v-52.682h-52.862C13.923,43.558,0,57.481,0,74.595v375.03c0,17.114,13.923,31.037,31.036,31.037h422.88c17.113,0,31.035-13.923,31.035-31.037v-375.03c.002-17.113-13.922-31.037-31.035-31.037Zm0,406.067h-422.879l-.001-283.213h422.886l.016,283.212c-.002,0-.008.001-.022.001Z\" })));\n}\nvar CalendarIcon = withSvgIcon(Calendar, 'CalendarIcon');\n\nfunction CheckOutlineIcon() {\n return (React__default.createElement(\"g\", { className: \"checkoutline-icon\" },\n React__default.createElement(\"path\", { fill: \"currentcolor\", transform: \"matrix(.8 0 0 0.8-1.6-1.6)\", d: \"M10.6,13.8L8.45,11.65q-.275-.275-.7-.275t-.7.275-.275.7.275.7L9.9,15.9q.3.3.7.3t.7-.3l5.65-5.65q.275-.275.275-.7t-.275-.7-.7-.275-.7.275L10.6,13.8ZM12,22q-2.075,0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175t-.788-3.9q0-2.075.788-3.9t2.137-3.175Q6.275,3.575,8.1,2.788t3.9-.788q2.075,0,3.9.788t3.175,2.137q1.35,1.35,2.138,3.175t.787,3.9q0,2.075-.788,3.9t-2.137,3.175q-1.35,1.35-3.175,2.138t-3.9.787Zm0-2q3.35,0,5.675-2.325t2.325-5.675-2.325-5.675-5.675-2.325-5.675,2.325Q4,8.65,4,12t2.325,5.675t5.675,2.325Zm0-8\" })));\n}\nwithSvgIcon(CheckOutlineIcon, 'CheckOutlineIcon');\n\nfunction CloseOutlineIcon() {\n return (React__default.createElement(\"g\", { className: \"closeoutline-icon\", fill: \"currentColor\" },\n React__default.createElement(\"path\", { d: \"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zm6.5 8a6.5 6.5 0 1 0-13 0 6.5 6.5 0 0 0 13 0zm-3.318-3.182a.75.75 0 0 1 0 1.06L9.061 8l2.121 2.121a.75.75 0 0 1-1.06 1.061L8 9.061l-2.121 2.121a.75.75 0 0 1-1.061-1.06L6.939 8 4.818 5.879a.75.75 0 0 1 1.06-1.061L8 6.939l2.121-2.121a.75.75 0 0 1 1.061 0z\" })));\n}\nwithSvgIcon(CloseOutlineIcon, 'CloseOutlineIcon');\n\nfunction CloudArrowUpIcon() {\n return (React__default.createElement(\"g\", { className: \"cloudarrowup-icon\", fill: \"currentColor\" },\n React__default.createElement(\"path\", { d: \"m8.446 6.397.084.073 2.5 2.5a.75.75 0 0 1-.976 1.133l-.084-.073-1.22-1.219v5.439a.75.75 0 0 1-1.493.102l-.007-.102V8.811l-1.22 1.22a.75.75 0 0 1-.976.072l-.084-.073a.75.75 0 0 1-.073-.976l.073-.084 2.5-2.5a.75.75 0 0 1 .976-.073zM9.5 1a4.75 4.75 0 0 1 4.677 5.586l-.057.271-.013.046.113.06a3.499 3.499 0 0 1 1.757 2.64l.018.213.005.193a3.491 3.491 0 0 1-3.3 3.486l-.191.005H10.75a.75.75 0 1 1 0-1.5h1.759c1.05 0 1.91-.812 1.986-1.843l.005-.148c0-.922-.63-1.717-1.511-1.936a.75.75 0 0 1-.507-1.027 3.25 3.25 0 1 0-6.1-2.213.75.75 0 0 1-1.07.453l-.217-.136a1.25 1.25 0 0 0-1.716 1.654l.12.212a.75.75 0 0 1-.494 1.048 1.998 1.998 0 0 0 .346 3.93L3.5 12h1.75a.75.75 0 1 1 0 1.5H3.5a3.5 3.5 0 0 1-3.495-3.308L0 10c0-1.217.626-2.308 1.597-2.936l.175-.107.063-.034-.02-.08-.036-.195-.022-.198-.007-.2a2.75 2.75 0 0 1 3.18-2.717l.209.042.12.033.094-.177a4.753 4.753 0 0 1 3.692-2.41l.236-.016L9.5 1z\" })));\n}\nwithSvgIcon(CloudArrowUpIcon, 'CloudArrowUpIcon');\n\nconst useStyles$C = createUseStyles((theme) => ({\n checkboxInput: ({ checked, disabled, readOnly }) => {\n const checkBgColor = checked ? theme.questionColor : '#fff';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.questionColor,\n borderRadius: 2,\n backgroundColor,\n border: `1px solid ${disabled || readOnly ? '#aaa' : theme.questionColor}`,\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff',\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff',\n },\n '& input': {\n cursor: 'pointer',\n },\n };\n },\n}));\n\nfunction CheckboxInput({ className, ...props }, ref) {\n const { inputProps, styleProps } = useInputStyles(props);\n const { checkboxInput } = useStyles$C(styleProps);\n return (React__default.createElement(BaseInput$1, { ref: ref, type: \"checkbox\", className: classNames(checkboxInput, className), icon: React__default.createElement(CheckboxIcon$1, null), ...inputProps }));\n}\nvar CheckboxInput$1 = React__default.forwardRef(CheckboxInput);\n\n// get the margin top by taking the font size and the line height and divide by 2 to get the margin top\nconst marginTopHelper = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\nconst useStyles$B = createUseStyles((theme) => ({\n checkboxContainer: ({ checked, disabled }) => {\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked\n ? fontWeightOptions.medium\n : theme.questionBody.fontWeight ?? fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor],\n },\n '&:focus-within': {\n background: theme.input.bgColor,\n },\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({ inputSize }) => inputSize ?? '1em',\n marginTop: marginTopHelper(theme.questionBody?.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8,\n },\n },\n}));\n\nfunction Checkbox$2({ children: label = '', inputSize, onChange, ...props }, ref) {\n const handleChange = (e) => {\n onChange?.({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value,\n });\n };\n const { inputProps, styleProps } = useInputStyles({\n ...props,\n onChange: handleChange,\n });\n const { checkboxContainer, icon } = useStyles$B({ ...styleProps, inputSize });\n return (React__default.createElement(\"label\", { htmlFor: inputProps.id, className: checkboxContainer, tabIndex: -1 },\n React__default.createElement(CheckboxInput$1, { ref: ref, ...inputProps, className: icon }),\n React__default.createElement(RichText, { element: \"span\", text: label })));\n}\nvar Checkbox$3 = forwardRef(Checkbox$2);\n\nconst useStyles$A = createUseStyles((theme) => ({\n checkbox: {\n '& label': {\n alignItems: 'baseline',\n },\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n textInput: {\n opacity: ({ isChecked }) => (isChecked ? 1 : 0.5),\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%',\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal',\n },\n checkHover: {\n '&:hover': {\n outline: 'none',\n cursor: 'pointer',\n },\n },\n}));\n\nfunction CheckboxTextfield(props) {\n const { id, children: label, value: inputValue = '', defaultValue, maxLength, onClick, onKeyDown, onChange, checked: checkedProp = false, ...checkboxProps } = props;\n const [isChecked, setIsChecked] = useState(checkedProp);\n const [value, setValue] = React__default.useState(defaultValue || inputValue);\n const { checkbox, textInput, checkHover } = useStyles$A({\n isChecked,\n });\n const handleValueChange = (e) => {\n setValue(e.value);\n onChange?.({ id, value: e.value, checked: e.checked });\n };\n const handleInputChange = (e) => {\n if (!isChecked) {\n setIsChecked(true);\n }\n handleValueChange({ id, value: e.target.value, checked: true });\n };\n const inputRef = React__default.useRef(null);\n const handleCheckboxClick = (e) => {\n if (!isChecked && e.clientX !== 0 && e.clientY !== 0) {\n inputRef.current?.focus();\n }\n setIsChecked(!isChecked);\n onClick?.(e);\n };\n const handleTextboxClick = () => {\n if (!isChecked) {\n setIsChecked(true);\n }\n handleValueChange({ id, value, checked: true });\n };\n const handleKeyDown = (e) => {\n if (e.code === 'Space') {\n e.preventDefault();\n setIsChecked(!isChecked);\n handleValueChange({ id, value, checked: !isChecked });\n return;\n }\n onKeyDown?.(e);\n };\n React__default.useEffect(() => {\n setIsChecked(checkedProp);\n }, [checkedProp]);\n return (React__default.createElement(React__default.Fragment, null,\n React__default.createElement(Checkbox$3, { id: `checkbox-input-${id}`, checked: isChecked, onKeyDown: handleKeyDown, onClick: handleCheckboxClick, onChange: handleValueChange, className: checkbox, value: value, maxLength: maxLength, ...checkboxProps }, label),\n React__default.createElement(TextInput$1, { id: `checkbox-field-${id}`, onChange: handleInputChange, onClick: handleTextboxClick, className: classNames(textInput, { [checkHover]: !isChecked }), defaultValue: defaultValue, autoHeight: true, maxLength: maxLength, tabIndex: isChecked ? 0 : -1, ref: inputRef })));\n}\n\n/**\n * Maximum input characters is 20,000\n * Resolves: RAWR-1186\n */\nconst TEXT_INPUT_MAX_CHARS = 20000;\n\nconst useStyles$z = createUseStyles({\n commentChoiceContainer: {\n marginTop: '10px',\n },\n});\n\nconst INPUT_SIZE$2 = 20;\nfunction Checkbox({ id: questionId, required: _req, readOnly: _ro, disabled, columnLayout, choices = [], responses = [], choiceNoneOfTheAbove, choiceOther, choiceComment, onChange, ...questionFieldProps }) {\n const [selectedChoices, setSelectedChoices] = useState(responses);\n const errorId = createErrorId(questionId);\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => responses.find((c) => c.id === id)?.value;\n const handleDefault = (id) => responses.find((c) => c.id === id)?.value;\n const isChecked = (id) => !!selectedChoices.find((item) => item.id === id);\n const handleChange = (e) => {\n // 1. remove NOTA from array\n const newState = selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleNAChange = (e) => {\n const newState = selectedChoices.filter((c) => c.type === 'COMMENT');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'NOTA' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleOtherChange = (e) => {\n const newState = selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'ANSWER' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleCommentChange = (e) => {\n const newState = selectedChoices.filter((c) => c.type !== 'COMMENT');\n if (newState && !!e.target.value) {\n newState.push({\n id: e.target.id,\n value: e.target.value,\n type: 'COMMENT',\n });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const { commentChoiceContainer } = useStyles$z();\n return (React__default.createElement(QuestionField, { id: questionId, \"data-testid\": \"CheckboxQuestionType\", ...questionFieldProps },\n React__default.createElement(QuestionAnswerLayoutTemplate, { gridCellMargin: [0, 2, 5, 2], otherCellMargin: [0, 2, 5, 2], noneOfTheAbove: choiceNoneOfTheAbove &&\n choiceNoneOfTheAbove?.visible && (React__default.createElement(Checkbox$3, { id: choiceNoneOfTheAbove.id, value: choiceNoneOfTheAbove.id, onChange: handleNAChange, checked: isChecked(choiceNoneOfTheAbove.id), disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choiceNoneOfTheAbove.label)), other: choiceOther?.type === 'ANSWER' &&\n choiceOther?.visible && (React__default.createElement(CheckboxTextfield, { id: choiceOther.id, defaultValue: handleDefault(choiceOther.id), onChange: handleOtherChange, checked: isChecked(choiceOther.id), maxLength: TEXT_INPUT_MAX_CHARS, disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choiceOther.label)), columns: columnLayout }, choices?.map((choice) => {\n return (React__default.createElement(Checkbox$3, { key: choice.id, id: choice.id, onChange: handleChange, checked: isChecked(choice.id), value: choice.id, disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choice.label));\n })),\n choiceComment && (React__default.createElement(CommentChoice, { id: choiceComment.id, label: choiceComment.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(choiceComment.id), lineCount: choiceComment.linesCount, charCount: choiceComment.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, className: commentChoiceContainer }))));\n}\nvar Checkbox$1 = withErrorBoundary(Checkbox);\n\nfunction CommentBox({ id: questionId, required, disabled, readOnly, responses: defaultResponses = [], onChange, cols = 50, rows = 3, ...fieldProps }) {\n const { error, errorId = createErrorId(questionId), title: { id: titleId }, } = fieldProps;\n const defaultValue = useMemo(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const handleChange = (e) => {\n const responses = e.target.value\n ? [{ id: questionId, value: e.target.value }]\n : [];\n onChange?.(responses);\n };\n return (React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"CommentBoxQuestionType\", ...fieldProps },\n React__default.createElement(TextArea$1, { name: questionId, defaultValue: defaultValue, disabled: disabled, readOnly: readOnly, required: required, cols: cols, rows: rows, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, \"aria-labelledby\": titleId, maxLength: TEXT_INPUT_MAX_CHARS })));\n}\nvar CommentBox$1 = withErrorBoundary(CommentBox);\n\nconst useStyles$y = createUseStyles((theme) => {\n const { color, fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n selectContainerStyles: {\n maxWidth: '100%',\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n transition: 'all 0.1s linear',\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`,\n },\n color: '#000',\n },\n selectStyles: {\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n fontSize,\n fontFamily,\n fontWeight,\n lineHeight: 'normal',\n outline: 'none',\n backgroundColor: '#fff',\n color: 'inherit',\n maxWidth: '100%',\n padding: '6px 1.75em 6px 6px',\n verticalAlign: 'bottom',\n textSizeAdjust: 'auto',\n // Prevent de fault chevron from showing\n mozAppearance: 'none',\n webkitAppearance: 'none',\n appearance: 'none',\n transition: 'border 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`,\n },\n },\n selectIconStyles: {\n position: 'absolute',\n width: '1em',\n height: '1em',\n display: 'block',\n margin: '0 .5em',\n right: 0,\n zIndex: 2,\n pointerEvents: 'none',\n },\n disabledStyles: {\n opacity: 0.4,\n },\n };\n});\n\nfunction NativeSelect({ required, children, disabled, className, icon = React__default.createElement(SelectIcon$1, null), ...props }) {\n const { selectStyles, selectContainerStyles, selectIconStyles, disabledStyles, } = useStyles$y();\n const { className: iconClasses, ...iconProps } = icon.props;\n return (React__default.createElement(\"div\", { className: classNames(selectContainerStyles, disabled ? disabledStyles : {}, className) },\n React__default.cloneElement(icon, {\n // this will apply our placement styles, along with any other supplied classes\n className: classNames(selectIconStyles, iconClasses),\n // apply all other props.\n ...iconProps,\n }),\n React__default.createElement(\"select\", { className: selectStyles, required: required, \"aria-required\": required, \"data-testid\": \"select\", disabled: disabled, ...props }, children)));\n}\n\nconst useStyles$x = createUseStyles(({ questionBody: { fontFamily, fontSize, fontWeight }, }) => ({\n selectOption: {\n fontFamily,\n fontSize,\n fontWeight,\n },\n}));\nfunction SelectAnswerOption({ id, label, ...props }) {\n const { selectOption } = useStyles$x();\n return (React__default.createElement(\"option\", { id: id, \"data-testid\": \"select-answer-option\", className: selectOption, ...props }, label));\n}\n\nconst useStyles$w = createUseStyles((theme) => {\n const { color, fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n inputGroup: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: ({ rtl }) => (rtl ? 'row-reverse' : 'row'),\n transition: 'all 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`,\n },\n },\n input: {\n border: 'none',\n textAlign: ({ rtl }) => (rtl ? 'right' : 'left'),\n height: ({ height }) => height || 'auto',\n width: 'calc(100% - 30px)',\n outline: 'currentColor none medium',\n backgroundColor: '#FFF',\n padding: '6px 0 6px 10px',\n fontSize,\n fontFamily,\n fontWeight,\n },\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n height: ({ height }) => height || 'auto',\n width: 30,\n backgroundColor: '#FFF',\n border: 'none',\n },\n buttonIcon: {\n transform: ({ isOpen }) => (isOpen ? 'rotate(180deg)' : 'rotate(0)'),\n },\n };\n});\n\nconst ComboBoxInputGroup = React__default.forwardRef(({ isOpen, value, height, rtl = false, onChange, open, close, onKeyDown, 'aria-activedescendant': ariaActiveDescendant, 'aria-autocomplete': ariaAutocomplete, 'aria-controls': ariaControls, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, className, ...rest }, ref) => {\n const inputRef = useRef(null);\n useImperativeHandle(ref, () => inputRef.current);\n const { inputGroup, input, button, buttonIcon } = useStyles$w({\n isOpen,\n height,\n rtl,\n });\n return (React__default.createElement(\"div\", { className: classNames(inputGroup, className), ...rest },\n React__default.createElement(\"input\", { className: input, type: \"text\", role: \"combobox\", \"aria-autocomplete\": ariaAutocomplete, \"aria-expanded\": isOpen, \"aria-controls\": ariaControls, \"aria-activedescendant\": ariaActiveDescendant, value: value, onChange: onChange, onClick: open, onKeyDown: onKeyDown, ref: inputRef }),\n React__default.createElement(\"button\", { className: button, type: \"button\", tabIndex: -1, \"aria-expanded\": isOpen, \"aria-controls\": ariaControls, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, onClick: () => {\n if (isOpen) {\n close();\n }\n else {\n open();\n }\n inputRef.current?.focus();\n } },\n React__default.createElement(CaretDownIcon, { className: buttonIcon }))));\n});\n\nconst useStyles$v = createUseStyles({\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n '&:focus-visible': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1,\n },\n },\n});\n\n/**\n * Scroll to the item at the specified index if it is fully or partially obscured\n * */\nconst scrollToItem = (itemRect, containerRef) => {\n const ulRect = containerRef.current?.getBoundingClientRect();\n if (!ulRect || !containerRef.current) {\n return;\n }\n if (itemRect.top < ulRect.top) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop -= ulRect.top - itemRect.top;\n }\n else if (itemRect.bottom > ulRect.bottom) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop += itemRect.bottom - ulRect.bottom;\n }\n};\n/**\n * Returns the number of items visible inside the listbox given its current dimensions\n * note: if height is 0, it will return 10 as a default to satisfy tests\n * */\nconst numItemsVisible = (containerHeight, itemHeight = 48) => {\n return !containerHeight ? 10 : Math.round(containerHeight / itemHeight);\n};\n\n/**\n * Focus another item in the listBox depending on which key is pressed\n * @param key The key that was pressed\n * @param focusedIndex The index of the currently focused item\n * @param itemCount The number of items in the listBox\n * @param visibleItemCount The number of items visible in the listBox\n * @param focusItem Function which updates the the currently focused item\n */\nconst focusNext = (key, focusedIndex, itemCount, visibleItemCount, focusItem) => {\n const lastIndex = itemCount - 1;\n if (key === 'End') {\n focusItem(lastIndex);\n return;\n }\n if (focusedIndex === null) {\n focusItem(0);\n return;\n }\n switch (key) {\n case 'Down':\n case 'ArrowDown':\n if (focusedIndex < lastIndex) {\n focusItem(focusedIndex + 1);\n }\n else {\n focusItem(0);\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (focusedIndex > 0) {\n focusItem(focusedIndex - 1);\n }\n else {\n focusItem(lastIndex);\n }\n break;\n case 'PageDown':\n if (focusedIndex < lastIndex - visibleItemCount) {\n focusItem(focusedIndex + visibleItemCount);\n }\n else {\n focusItem(lastIndex);\n }\n break;\n case 'PageUp':\n if (focusedIndex > visibleItemCount) {\n focusItem(focusedIndex - visibleItemCount);\n }\n else {\n focusItem(0);\n }\n break;\n case 'Home':\n focusItem(0);\n break;\n }\n};\n\nReact__default.forwardRef(({ children, focusedIndex: externalFocusedIndex, tabIndex, onKeyDown, onClick, onChange, className, ...rest }, ref) => {\n const { listBox } = useStyles$v();\n const [focusedIndex, setFocusedIndex] = useState(null);\n // override internal focusedIndex with external state if provided\n useEffect(() => {\n if (externalFocusedIndex !== undefined) {\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const itemsRef = useRef([]);\n const ulRef = useRef(null);\n const focusItem = (index) => {\n setFocusedIndex(index);\n };\n useImperativeHandle(ref, () => ulRef.current);\n useEffect(() => {\n if (focusedIndex === null) {\n return;\n }\n // Scroll to the currently focused item anytime the focused index changes\n scrollToItem(itemsRef.current?.[focusedIndex].getBoundingClientRect(), ulRef);\n // call the onChange callback if the focused index changes\n onChange?.({\n target: itemsRef.current[focusedIndex],\n value: itemsRef.current[focusedIndex].dataset.value ?? '',\n });\n }, [focusedIndex]);\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n if ([\n 'Down',\n 'Up',\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'End',\n 'Home',\n ].includes(e.key)) {\n e.preventDefault();\n // Focus another item in the listBox depending on which key is pressed\n focusNext(e.key, focusedIndex, itemsRef.current.length, numItemsVisible(ulRef.current?.getBoundingClientRect().height), focusItem);\n }\n };\n const handleClick = (e) => {\n onClick?.(e);\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n }\n };\n const interactiveProps = {\n tabIndex,\n 'aria-activedescendant': tabIndex !== undefined && focusedIndex !== null\n ? `ListBoxItem-${focusedIndex}`\n : undefined,\n };\n return (React__default.createElement(\"ul\", { ref: ulRef, className: classNames(listBox, className), role: \"listbox\", onKeyDown: handleKeyDown, onClick: handleClick, ...interactiveProps, ...rest }, React__default.Children.map(children, (child, index) => React__default.isValidElement(child) &&\n React__default.cloneElement(child, {\n key: child.props.value,\n id: child.props.id ?? `ListBoxItem-${index}`,\n selected: index === focusedIndex,\n ref: (el) => {\n itemsRef.current[index] = el;\n },\n }))));\n});\n\nconst useStyles$u = createUseStyles({\n listBoxItem: ({ selected, disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n backgroundColor: '#FFF',\n cursor: 'pointer',\n ...(selected && {\n backgroundColor: 'rgb(237, 238, 238)',\n }),\n '&:hover, &:focus': {\n backgroundColor: 'rgb(237, 238, 238)',\n },\n '&:active': {\n backgroundColor: 'rgb(224, 226, 226)',\n },\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n }),\n});\n\nconst ListBoxItem = React__default.forwardRef(({ children, disabled, selected, value, className, ...rest }, ref) => {\n const { listBoxItem } = useStyles$u({\n disabled,\n selected,\n });\n return (React__default.createElement(\"li\", { ref: ref, \"data-value\": value, className: classNames(listBoxItem, className), role: \"option\", \"aria-selected\": selected ? true : undefined, ...rest }, children));\n});\n\nconst useStyles$t = createUseStyles({\n listBoxContainer: {\n // TODO: Possible to utilize focus-visible to show only on keyboard interaction? (with child)\n '&:focus-within': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1,\n },\n },\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n padding: 0,\n },\n});\n\nconst ARIA_ACTIVEDESCENDANT = 'aria-activedescendant';\n/**\n * A virtualized version of the List component, using `react-window` to render large datasets. This component should only be used when the number of items would cause performance issues with the standard List component (most likely >500 items).\n */\nconst VirtualizedListBox = React__default.forwardRef(({ height = 325, width = 175, itemSize, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, [ARIA_ACTIVEDESCENDANT]: ariaActiveDescendant, tabIndex, itemCount, focusedIndex: externalFocusedIndex, onChange, onKeyDown, onClick, className, children, ...rest }, ref) => {\n const [focusedIndex, setFocusedIndex] = useState(null);\n const listRef = useRef(null);\n const innerRef = useRef(null);\n const outerRef = useRef(null);\n const itemsRef = useRef([]);\n // override internal focusedIndex with external state if provided\n useEffect(() => {\n if (externalFocusedIndex !== undefined) {\n if (externalFocusedIndex !== null) {\n listRef.current?.scrollToItem(externalFocusedIndex);\n }\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const { listBoxContainer, listBox } = useStyles$t();\n const handleChange = (item) => {\n onChange?.({\n target: item,\n value: item.dataset.value ?? '',\n });\n };\n /**\n * Scroll to and focus the item at the specified index\n */\n const focusItem = (index) => {\n listRef.current?.scrollToItem(index);\n setFocusedIndex(index);\n handleChange(itemsRef.current[index]);\n };\n useImperativeHandle(ref, () => ({\n listRef,\n innerRef,\n outerRef,\n itemsRef,\n }));\n const handleKeyDown = useCallback((e) => {\n onKeyDown?.(e);\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n if ([\n 'Down',\n 'Up',\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'End',\n 'Home',\n ].includes(e.key)) {\n e.preventDefault();\n // Focus another item in the listBox depending on which key is pressed\n focusNext(e.key, focusedIndex, itemCount, numItemsVisible(outerRef.current?.getBoundingClientRect().height), focusItem);\n }\n }, [focusedIndex, itemCount, onKeyDown]);\n const handleClick = useCallback((e) => {\n onClick?.(e);\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n handleChange(e.target);\n }\n }, [onClick]);\n useLayoutEffect(() => {\n const listElement = innerRef.current;\n outerRef.current?.removeAttribute('tabindex');\n if (listElement) {\n listElement.className = listBox;\n listElement.setAttribute('role', 'listbox');\n listElement.addEventListener('keydown', handleKeyDown);\n listElement.addEventListener('click', handleClick);\n if (tabIndex === undefined) {\n listElement.removeAttribute('tabindex');\n }\n else {\n listElement.setAttribute('tabindex', tabIndex?.toString());\n }\n if (ariaLabel) {\n listElement.setAttribute('aria-label', ariaLabel);\n }\n if (ariaLabelledBy) {\n listElement.setAttribute('aria-labelledby', ariaLabelledBy);\n }\n }\n return () => {\n if (listElement) {\n listElement.removeEventListener('keydown', handleKeyDown);\n listElement.removeEventListener('click', handleClick);\n }\n };\n }, [\n ariaLabel,\n ariaLabelledBy,\n handleClick,\n handleKeyDown,\n listBox,\n tabIndex,\n ]);\n useLayoutEffect(() => {\n const listElement = innerRef.current;\n if (ariaActiveDescendant ||\n (tabIndex !== undefined && focusedIndex !== null)) {\n listElement?.setAttribute(ARIA_ACTIVEDESCENDANT, ariaActiveDescendant ?? `ListBoxItem-${focusedIndex}`);\n }\n else {\n listElement?.removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n }, [ariaActiveDescendant, focusedIndex, tabIndex]);\n return (React__default.createElement(FixedSizeList, { className: classNames(listBoxContainer, className), itemSize: itemSize, height: Math.min(height, itemCount * itemSize), width: width, innerElementType: \"ul\", innerRef: innerRef, outerRef: outerRef, overscanCount: 10, itemCount: itemCount, ref: listRef, ...rest }, (props) => React__default.cloneElement(children(props), {\n id: children(props).props.id ?? `ListBoxItem-${props.index}`,\n selected: props.index === focusedIndex,\n ref: (el) => {\n itemsRef.current[props.index] = el;\n },\n })));\n});\n\nconst useStyles$s = createUseStyles((theme) => {\n return {\n comboBox: {\n display: 'inline-block',\n width: ({ width }) => width,\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`,\n },\n },\n listBox: {\n display: ({ isOpen }) => (isOpen ? 'block' : 'none'),\n '&:focus-within': {\n outline: 'none',\n },\n border: '1px solid rgb(204, 204, 204)',\n },\n listBoxItem: {\n direction: ({ rtl }) => (rtl ? 'rtl' : 'ltr'),\n paddingLeft: '10px',\n },\n };\n});\n\nfunction ComboBox({ id, options, height, width = '100%', itemSize = 48, className, classes, filterOnChange = false, value: outsideValue = '', optionAlign = 'center', filter, onChange, rtl = false, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...rest }) {\n const comboBoxRef = useRef(null);\n const inputRef = useRef(null);\n const listBoxRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [value, setValue] = useState(outsideValue);\n const [currentOptions, setCurrentOptions] = useState(options);\n const [focusedIndex, setFocusedIndex] = useState(null);\n const [filterActive, setFilterActive] = useState(!filterOnChange);\n // the initial value of the input field when the listbox is opened (used to control whether the filter is active or not)\n const [valueOnOpen, setValueOnOpen] = useState(outsideValue);\n /** For preventing onChange being called on first render */\n const firstRender = useRef(true);\n const { comboBox, listBox, listBoxItem } = useStyles$s({\n isOpen,\n width,\n rtl,\n });\n const closeListBox = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n const openListBox = () => {\n if (!isOpen) {\n setValueOnOpen(value);\n setIsOpen(true);\n }\n };\n // close the listbox when the user clicks outside of it\n useOnFocusLeave(comboBoxRef, () => {\n closeListBox();\n setFocusedIndex(null);\n });\n const focusItem = (index) => {\n setFocusedIndex(index);\n };\n // call onChange when value changes\n useEffect(() => {\n if (firstRender.current) {\n firstRender.current = false;\n }\n else {\n onChange?.({\n value,\n target: inputRef.current,\n });\n }\n }, [value]);\n // filter the current options if a filter is provided and filtering is active. If filtering is inactive, reset the current options to the original options\n useEffect(() => {\n if (filter && filterActive) {\n setCurrentOptions(options.filter((option) => filter(option, value)));\n }\n else if (!filterActive) {\n setCurrentOptions(options);\n }\n }, [options, value, filter, filterActive]);\n // if filterOnChange is true, activate filtering if the value has changed since the listbox was opened, otherwise deactivate filtering\n useEffect(() => {\n if (filterOnChange) {\n setFilterActive(value !== valueOnOpen);\n }\n }, [filterOnChange, value, valueOnOpen]);\n // if the current value matches an option when the list opens, focus it and center it in the list\n useEffect(() => {\n if (isOpen) {\n const matchingOption = currentOptions.find((option) => option.label === value);\n if (matchingOption) {\n listBoxRef.current?.listRef.current?.scrollToItem(currentOptions.indexOf(matchingOption), optionAlign // position the option in the list according to the alignment (default is `center`)\n );\n setFocusedIndex(currentOptions.indexOf(matchingOption));\n }\n }\n }, [isOpen, currentOptions, value, optionAlign]);\n useEffect(() => {\n setValue(outsideValue);\n }, [outsideValue]);\n const handleKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowDown':\n case 'Down':\n case 'ArrowUp':\n case 'Up':\n case 'PageDown':\n case 'PageUp':\n e.preventDefault();\n openListBox();\n if (!e.altKey) {\n focusNext(e.key, focusedIndex, currentOptions.length, numItemsVisible(listBoxRef.current?.outerRef.current?.getBoundingClientRect()\n .height, itemSize), focusItem);\n }\n break;\n case 'Escape':\n if (isOpen) {\n closeListBox();\n setFocusedIndex(null);\n }\n else {\n setValue('');\n }\n break;\n case 'Enter':\n e.preventDefault();\n if (isOpen) {\n if (focusedIndex !== null) {\n setValue(listBoxRef.current?.itemsRef.current?.[focusedIndex]\n .textContent ?? '');\n }\n closeListBox();\n setFocusedIndex(null);\n }\n break;\n }\n };\n const handleListBoxClick = () => {\n inputRef.current?.focus();\n closeListBox();\n };\n const activeDescendant = focusedIndex !== null && currentOptions[focusedIndex]\n ? `${id}-${currentOptions[focusedIndex].value}`\n : undefined;\n return (React__default.createElement(\"div\", { className: classNames(comboBox, classes?.comboBox, className), ref: comboBoxRef, ...rest },\n React__default.createElement(ComboBoxInputGroup, { ref: inputRef, className: classes?.inputGroup, height: height, rtl: rtl, value: value, isOpen: isOpen, \"aria-controls\": `${id}-listbox`, \"aria-autocomplete\": filter ? 'list' : 'none', \"aria-activedescendant\": activeDescendant, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, open: openListBox, close: closeListBox, onChange: (e) => setValue(e.target.value), onKeyDown: handleKeyDown }),\n React__default.createElement(VirtualizedListBox, { ref: listBoxRef, itemSize: itemSize, itemCount: currentOptions.length, className: classNames(listBox, classes?.listBox), focusedIndex: focusedIndex, width: comboBoxRef.current?.clientWidth, onChange: (e) => setValue(e.target?.textContent ?? ''), onClick: handleListBoxClick, tabIndex: -1, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, \"aria-activedescendant\": activeDescendant, \n /**\n * adding inline style to overwrite react-window inline styles as per their docs\n * https://github.com/bvaughn/react-window\n */\n style: { position: 'absolute' } }, ({ index, style }) => (React__default.createElement(ListBoxItem, { className: classNames(listBoxItem, classes?.listBoxItem), style: style, value: currentOptions[index].value, id: `${id}-${currentOptions[index].value}`, key: `${id}-${currentOptions[index].value}` }, currentOptions[index].label)))));\n}\n\n/**\n * Visually Hidden CSS properties\n * @description common css-properties to visually hide text and available for screen-readers.\n * There may be times where the css-specificity may not be high enough for the class to be invoked,\n * Ergo, the use of `!important` which will help ensure the properties are applied at any specificity.\n * @example\n * // usage with `react-jss`\n * import visuallyHiddenProperties from './utils/visuallyHidden';\n *\n * const useStyles = createUseStyles({\n * srOnly: {...visuallyHiddenProperties}\n * })\n */\nvar visuallyHidden = {\n border: [[0], '!important'],\n /**\n * @desc for backwards compatibility\n * @deprecated\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip\n * @see https://caniuse.com/mdn-css_properties_clip\n */\n clip: ['rect(1px, 1px, 1px, 1px)', '!important'],\n /**\n * @desc future-proof version\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path\n * @see https://caniuse.com/css-clip-path\n */\n clipPath: ['inset(50%)', '!important'],\n height: ['1px', '!important'],\n margin: ['-1px', '!important'],\n overflow: ['hidden', '!important'],\n padding: [[0], '!important'],\n position: ['absolute', '!important'],\n width: ['1px', '!important'],\n /**\n * @desc preventing text to be condensed\n * @see https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n */\n whiteSpace: ['nowrap', '!important'],\n};\n\nconst useStyles$r = createUseStyles({\n srOnly: visuallyHidden,\n});\n\n/** default element for the visually hidden component */\nconst DEFAULT_ELEMENT = 'span';\n/**\n * A component to have visually hidden text still available to Assistive\n * Technologies, such as screen-readers.\n * All HTML properties are available on the selected `element` tag used.\n */\nfunction VisuallyHidden({ element: Tag = DEFAULT_ELEMENT, className, ...props }) {\n const { srOnly } = useStyles$r();\n return React__default.createElement(Tag, { className: classNames(srOnly, className), ...props });\n}\n\nconst useCalendarStyles = createUseStyles({\n calendarPickerWrapper: {\n width: ({ width }) => width,\n height: ({ height }) => height,\n border: '1px solid #CCCCCC',\n padding: '10px',\n background: '#FFFFFF',\n color: '#333333',\n },\n calendarControls: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: '20px',\n },\n button: {\n border: 'none',\n borderRadius: 0,\n background: 'transparent',\n width: '60px',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n backgroundColor: '#05467E',\n color: '#FFFFFF',\n },\n },\n comboboxWrapper: {\n display: 'flex',\n flexGrow: 1,\n '& > div': {\n width: '50%',\n },\n },\n monthWrapper: {\n display: 'grid',\n margin: '32px 0 0',\n gridTemplateColumns: `repeat(1, 100%)`,\n gridGap: '0 64px',\n },\n});\nconst useMonthStyles = createUseStyles({\n weekdayLabel: {\n textAlign: 'center',\n marginBottom: '10px',\n fontSize: '10px',\n },\n weekGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyContent: 'center',\n },\n});\nconst useDayStyles = createUseStyles({\n dayDefault: {\n padding: '8px',\n border: '1px solid #CCCCCC',\n borderRadius: '0',\n color: '#001217',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n color: '#FFFFFF',\n backgroundColor: '#05467E',\n borderColor: '#05467E',\n },\n },\n daySelected: {\n color: '#FFFFFF',\n backgroundColor: '#71c9ed',\n },\n daySelectedFirstOrLast: {\n color: '#FFFFFF',\n backgroundColor: '#000000',\n borderColor: '#000000',\n },\n dayDisabled: {\n color: '#808285',\n backgroundColor: '#FFFFFF',\n },\n});\n\nconst COPY$a = defineMessages({\n DAY_OF_MONTH: {\n id: 'Day.dayOfMonth',\n defaultMessage: '{dayInCalendar, date, full}',\n description: '[Type: label][Vis: high] - label for the full date',\n },\n});\nfunction Day({ dayLabel, date, focusedDate, isDateSelected, isDateFocused, isDateHovered, onDateHover, onDateSelect, onDateFocus, isFirstOrLastSelectedDate, }) {\n const dayRef = useRef(null);\n const fn = () => false;\n const { isSelected, isSelectedStartOrEnd, isWithinHoverRange, disabledDate, onClick, onKeyDown, onMouseEnter, tabIndex, } = Ne({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked: fn,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef,\n });\n useEffect(() => {\n if (dayRef && dayRef.current && isDateFocused(date)) {\n dayRef.current.focus();\n }\n }, [dayRef, date, isDateFocused]);\n const { dayDefault, daySelected, daySelectedFirstOrLast, dayDisabled, } = useDayStyles();\n if (!dayLabel) {\n return React__default.createElement(\"div\", null);\n }\n return (React__default.createElement(\"button\", { onClick: onClick, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, tabIndex: tabIndex, type: \"button\", ref: dayRef, \"aria-label\": t(COPY$a.DAY_OF_MONTH, { dayInCalendar: date }), className: classNames(dayDefault, {\n [daySelected]: isSelected || isWithinHoverRange,\n [daySelectedFirstOrLast]: isSelectedStartOrEnd,\n [dayDisabled]: disabledDate,\n }) }, dayLabel));\n}\n\nconst COPY$9 = defineMessages({\n DAY_OF_WEEK_LEGEND_SHORT: {\n id: 'Month.dayOfWeekLegendShort',\n defaultMessage: '{dayOfTheWeek, select, Mo {Mo} Tu {Tu} We {We} Th {Th} Fr {Fr} Sa {Sa} Su {Su}}',\n description: '[Type: label][Vis: high] - label for the day of the week in shorthand',\n },\n DAY_OF_WEEK_LEGEND_FULL: {\n id: 'Month.dayOfWeekLegendLong',\n defaultMessage: '{dayOfTheWeek, select, Mo {Monday} Tu {Tuesday} We {Wednesday} Th {Thursday} Fr {Friday} Sa {Saturday} Su {Sunday}}',\n description: '[Type: label][Vis: high] - label for the day of the week',\n },\n});\nfunction Month({ year, month, firstDayOfWeek, ...dayProps }) {\n const { days, weekdayLabels } = de({\n year,\n month,\n firstDayOfWeek,\n });\n const { weekdayLabel, weekGrid } = useMonthStyles();\n return (React__default.createElement(\"div\", null,\n React__default.createElement(\"div\", { className: weekGrid, role: \"grid\" },\n weekdayLabels.map((dayLabel) => (React__default.createElement(\"div\", { className: weekdayLabel, key: dayLabel, role: \"columnheader\" },\n React__default.createElement(\"span\", { role: \"presentation\" },\n React__default.createElement(T, { desc: COPY$9.DAY_OF_WEEK_LEGEND_SHORT, values: { dayOfTheWeek: dayLabel } })),\n React__default.createElement(VisuallyHidden, null,\n React__default.createElement(T, { desc: COPY$9.DAY_OF_WEEK_LEGEND_FULL, values: { dayOfTheWeek: dayLabel } }))))),\n days.map((day, index) => {\n if (typeof day === 'object') {\n return (React__default.createElement(Day, { date: day.date, key: day.dayLabel, dayLabel: day.dayLabel, ...dayProps }));\n }\n const emptyDayKey = `empty-day-${index}`;\n return React__default.createElement(\"div\", { key: emptyDayKey });\n }))));\n}\n\nconst COPY$8 = defineMessages({\n PREVIOUS_MONTH: {\n id: 'CalendarPicker.previousMonth',\n defaultMessage: 'Previous Month',\n description: '[Type: button][Vis: high] - button label to go to previous month',\n },\n NEXT_MONTH: {\n id: 'CalendarPicker.nextMonth',\n defaultMessage: 'Next Month',\n description: '[Type: button][Vis: high] - button label to go to next month',\n },\n MONTH_SELECT: {\n id: 'CalendarPicker.month',\n defaultMessage: 'Select a month',\n description: '[Type: label][Vis: high] - label for month selection combo box',\n },\n YEAR_SELECT: {\n id: 'CalendarPicker.year',\n defaultMessage: 'Select a year',\n description: '[Type: label][Vis: high] - label for year selection combo box',\n },\n MONTHS: {\n id: 'CalendarPicker.months',\n defaultMessage: '{months, select, January {January} February {February} March {March} April {April} May {May} June {June} July {July} August {August} September {September} October {October} November {November} December {December}}',\n description: '[Type: label][Vis: high] - label for the months',\n },\n});\nconst startingYear = new Date().getFullYear() - 200;\nconst yearOptions = [...Array(251)].map((_, year) => ({\n label: `${startingYear + year}`,\n value: `${startingYear + year}`,\n}));\nfunction getPreviousMonth(currentMonth) {\n let newDate;\n if (currentMonth.getMonth() - 1 < 0) {\n newDate = new Date(currentMonth.getFullYear() - 1, 11, currentMonth.getDate());\n }\n else {\n const prevMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), 0).getDate();\n if (currentMonth.getDate() > prevMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, prevMonthLastDay);\n }\n else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, currentMonth.getDate());\n }\n }\n return newDate;\n}\nfunction getNextMonth(currentMonth) {\n let newDate;\n if (currentMonth.getMonth() + 1 > 11) {\n newDate = new Date(currentMonth.getFullYear() + 1, 0, currentMonth.getDate());\n }\n else {\n const nextMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 2, 0).getDate();\n if (currentMonth.getDate() > nextMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, nextMonthLastDay);\n }\n else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, currentMonth.getDate());\n }\n }\n return newDate;\n}\nconst comboBoxSeedId = 'calendar-picker-combobox';\nfunction CalendarPicker({ onDaySelect, onDateChange, initialSelectedDate = new Date(), width = '300px', height = 'auto', startingDayOfWeek = 0, }) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input'],\n });\n const comboboxId = useMemo(() => uniqueId(comboBoxSeedId), []);\n const selectId = useMemo(() => uniqueId('calendar-picker-select'), []);\n const [state, setState] = useState(initialSelectedDate);\n const handleDateChange = ({ startDate }) => {\n const d = startDate ?? new Date();\n setState(d);\n onDaySelect?.(d);\n };\n const { firstDayOfWeek, activeMonths, isDateSelected, isDateHovered, isFirstOrLastSelectedDate, isDateFocused, focusedDate, onDateHover, onDateSelect, onDateFocus, goToDate, } = Ye({\n startDate: state,\n endDate: null,\n focusedInput: Pe,\n onDatesChange: handleDateChange,\n numberOfMonths: 1,\n /*\n * minBookingDays and exactBookingDays are used to remove the date range feature\n * see: https://github.com/tomgreenwood1/react-datepicker/tree/f2b1969cb4808c68d578428c4c5e6ed98c96461e/packages/hooks#exactminbookingdays-boolean--undefined-default-false\n */\n minBookingDays: 1,\n exactMinBookingDays: true,\n /*\n * firstDayofWeek is used to set the first day of the week. 0 = Sunday, 1 = Monday, etc.\n */\n firstDayOfWeek: startingDayOfWeek,\n });\n const currentMonth = activeMonths[0];\n const { comboboxWrapper, calendarControls, calendarPickerWrapper, button, monthWrapper, } = useCalendarStyles({\n height,\n width,\n });\n // populate monthOptions array\n const monthNames = [\n t(COPY$8.MONTHS, { months: 'January' }),\n t(COPY$8.MONTHS, { months: 'February' }),\n t(COPY$8.MONTHS, { months: 'March' }),\n t(COPY$8.MONTHS, { months: 'April' }),\n t(COPY$8.MONTHS, { months: 'May' }),\n t(COPY$8.MONTHS, { months: 'June' }),\n t(COPY$8.MONTHS, { months: 'July' }),\n t(COPY$8.MONTHS, { months: 'August' }),\n t(COPY$8.MONTHS, { months: 'September' }),\n t(COPY$8.MONTHS, { months: 'October' }),\n t(COPY$8.MONTHS, { months: 'November' }),\n t(COPY$8.MONTHS, { months: 'December' }),\n ];\n const monthOptions = monthNames.map((name) => ({\n label: name,\n value: name,\n }));\n const getMonthLabel = (monthNamesIndex) => {\n return monthNames[monthNamesIndex];\n };\n const handleMonthChange = (e) => {\n const monthIndex = monthOptions.findIndex((i) => i.value === e.target.value);\n const newDate = new Date(currentMonth.year, monthIndex, state.getDate());\n if (monthIndex !== -1) {\n goToDate(newDate);\n setState(newDate);\n onDateChange?.(newDate);\n }\n };\n const handleYearChange = (e) => {\n if (e.value.length >= 4) {\n const newDate = new Date(parseInt(e.value, 10), currentMonth.month, state.getDate());\n goToDate(newDate);\n setState(newDate);\n onDateChange?.(newDate);\n }\n };\n const handleGoToPreviousMonths = () => {\n const newDate = getPreviousMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange?.(newDate);\n };\n const handleGoToNextMonths = () => {\n const newDate = getNextMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange?.(newDate);\n };\n return (React__default.createElement(\"div\", { className: calendarPickerWrapper, \"data-testid\": \"CalendarPicker\", ref: focusTrapRef },\n React__default.createElement(\"div\", { className: calendarControls },\n React__default.createElement(\"button\", { type: \"button\", onClick: handleGoToPreviousMonths, className: button, \"aria-label\": t(COPY$8.PREVIOUS_MONTH), \"data-testid\": \"previous-month-button\" },\n React__default.createElement(CaretLeftOutlineIcon, null)),\n React__default.createElement(\"div\", { className: comboboxWrapper },\n React__default.createElement(\"div\", null,\n React__default.createElement(NativeSelect, { id: selectId, value: getMonthLabel(currentMonth.month), onChange: handleMonthChange }, monthOptions.map((option) => (React__default.createElement(SelectAnswerOption, { value: option.value, label: option.value, key: option.value }))))),\n React__default.createElement(\"div\", null,\n React__default.createElement(ComboBox, { id: comboboxId, \"aria-label\": t(COPY$8.YEAR_SELECT), options: yearOptions, value: currentMonth.year.toString(), onChange: handleYearChange }))),\n React__default.createElement(\"button\", { type: \"button\", onClick: handleGoToNextMonths, className: button, \"aria-label\": t(COPY$8.NEXT_MONTH), \"data-testid\": \"next-month-button\" },\n React__default.createElement(CaretRightOutlineIcon, null))),\n React__default.createElement(\"div\", { className: monthWrapper },\n React__default.createElement(Month, { year: currentMonth.year, month: currentMonth.month, firstDayOfWeek: firstDayOfWeek, onChange: goToDate, focusedDate: focusedDate, isDateSelected: isDateSelected, isDateFocused: isDateFocused, isDateHovered: isDateHovered, onDateHover: onDateHover, onDateSelect: onDateSelect, onDateFocus: onDateFocus, isFirstOrLastSelectedDate: isFirstOrLastSelectedDate }))));\n}\n\nconst useStyles$q = createUseStyles({\n container: {\n visibility: ({ calendarVisibility }) => {\n return calendarVisibility ? 'visible' : 'hidden';\n },\n },\n});\n\nconst DisclosureContainer = forwardRef(function DisclosureContainer({ onClose, visible = false, className, ...props }, ref) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input'],\n });\n const disclosureRef = useForkRef(focusTrapRef, ref);\n useEffect(() => {\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n const handleClick = (e) => {\n const target = e.target;\n const clickedOutside = !focusTrapRef.current?.contains(target);\n const comboBoxOptionClicked = !target.id.startsWith(comboBoxSeedId);\n if (visible && clickedOutside && comboBoxOptionClicked) {\n onClose?.();\n }\n };\n if (visible) {\n /*\n * RAWR-1437\n * Delay setting up the EventListener to after the current render, otherwise the handleClick triggers\n * when the calendar first opens and closes the calendar right away.\n */\n setTimeout(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('click', handleClick);\n }, 0);\n }\n else {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n }\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible]);\n const { container } = useStyles$q({\n calendarVisibility: visible,\n });\n return (React__default.createElement(\"div\", { ref: disclosureRef, className: classNames(container, className), ...props }));\n});\n\n// constants.ts\nconst US_DATE_FORMAT = 'MM/DD/YYYY';\nconst EURO_DATE_FORMAT = 'DD/MM/YYYY';\n\nconst validDateStringCheck = (dateString) => {\n const badValues = ['0', ' '];\n const isValid = dateString.every((value) => {\n // eslint-disable-next-line no-restricted-globals\n return badValues.indexOf(value) === -1 && !isNaN(parseInt(value, 10));\n });\n return dateString.length === 3 && isValid;\n};\nconst toDateString = (date, format = US_DATE_FORMAT) => {\n if (!date) {\n return '';\n }\n const segments = date.toISOString().split('T')[0].split('-');\n const [y, m, d] = segments.map((s) => s);\n if (format === US_DATE_FORMAT) {\n return `${m}/${d}/${y}`;\n }\n return `${d}/${m}/${y}`;\n};\nconst stringToDate = (dateString, format = US_DATE_FORMAT) => {\n if (!dateString) {\n return new Date();\n }\n if (!validDateStringCheck(dateString.split('/'))) {\n return new Date();\n }\n if (format === EURO_DATE_FORMAT) {\n const [d, m, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n }\n const [m, d, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n};\n\nconst useStyles$p = createUseStyles((theme) => {\n return {\n container: {\n position: 'relative',\n },\n dateInputWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n dateInput: {\n maxWidth: '175px',\n maxHeight: '36px',\n padding: '6px 36px 6px 6px',\n },\n calendarButton: {\n borderRadius: 'none',\n border: 'none',\n marginLeft: '-37px',\n height: '34px',\n width: '36px',\n fontSize: '15px',\n color: '#404040',\n backgroundColor: '#EFEFEF',\n '&:focus, &:hover': {\n cursor: 'pointer',\n outline: `2px solid ${theme.primaryAccentColor}`,\n background: 'linear-gradient(0deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.2) 30%, #EFEFEF 100%)',\n },\n '&:focus': {\n borderRadius: '3px',\n },\n '&:active': {\n background: 'linear-gradient(0deg, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.4) 30%, #EFEFEF 100%)',\n },\n '&:disabled': {\n opacity: '.5',\n },\n },\n calendarWrapper: {\n position: 'absolute',\n bottom: ({ calendarPosition }) => calendarPosition,\n zIndex: 100,\n },\n commentLabel: {\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n marginBottom: 5,\n display: 'block',\n fontSize: '14px',\n },\n };\n});\n\nconst COPY$7 = defineMessages({\n DATE_LABEL: {\n id: 'DateInput.dateLabel',\n defaultMessage: 'Date',\n description: '[Type: label][Vis: high] - label for date input',\n },\n DATE_BUTTON_LABEL: {\n id: 'DateInput.dateButton',\n defaultMessage: 'Open calendar',\n description: '[Type: button][Vis: high] - aria text for opening the calendar picker',\n },\n US_DATE_FORMAT: {\n id: 'DateInput.usDateFormat',\n defaultMessage: 'MM/DD/YYYY',\n description: '[Type: label][Vis: high] - ISO 8601 US date character format notation. No localized delimiter translation.',\n },\n INTL_DATE_FORMAT: {\n id: 'DateInput.intlDateFormat',\n defaultMessage: 'DD/MM/YYYY',\n description: '[Type: label][Vis: high] - ISO 8601 International date character format notation.',\n },\n});\nfunction DateInput({ onChange, dateFormat = US_DATE_FORMAT, value, defaultValue, id, className, required, 'aria-describedby': ariaDescribedBy, }) {\n const [calendarVisibility, setCalendarVisibility] = useState(false);\n const dateInputID = useMemo(() => uniqueId('date-input-'), []);\n const inputRef = useRef(null);\n const calendarButtonRef = useRef(null);\n const disclosureRef = useRef(null);\n const calendarPosition = useRef('100%');\n useSSRSafeLayoutEffect(() => {\n if (inputRef.current && disclosureRef.current) {\n const inputBound = inputRef.current.getBoundingClientRect();\n const disclosureBound = disclosureRef.current.getBoundingClientRect();\n if (inputBound.top < disclosureBound.height) {\n // not enough space\n calendarPosition.current = 'auto';\n }\n else {\n calendarPosition.current = '100%';\n }\n }\n }, [calendarVisibility]);\n const lastFocus = useRef(null);\n const handleCalendarVisibility = () => {\n lastFocus.current = document.activeElement;\n setCalendarVisibility((s) => {\n return !s;\n });\n };\n const handleDisclosureClose = () => {\n lastFocus.current?.focus();\n setCalendarVisibility(false);\n };\n const handleDaySelect = (date) => {\n const dateString = toDateString(date, dateFormat);\n onChange?.(dateString);\n handleDisclosureClose();\n };\n const handleInputChange = (e) => {\n onChange?.(e.target.value);\n };\n const { dateInput, calendarButton, calendarWrapper, commentLabel, dateInputWrapper, container, } = useStyles$p({\n calendarPosition: calendarPosition.current,\n });\n return (React__default.createElement(\"div\", { className: classNames(container, className), id: id },\n React__default.createElement(\"label\", { htmlFor: dateInputID, className: commentLabel },\n React__default.createElement(T, { desc: COPY$7.DATE_LABEL })),\n React__default.createElement(\"div\", { className: dateInputWrapper },\n React__default.createElement(TextInput$1, { \"data-testid\": \"DateInput\", className: dateInput, maxLength: 10, onChange: handleInputChange, defaultValue: defaultValue, value: value, ref: inputRef, placeholder: dateFormat === 'DD/MM/YYYY'\n ? t(COPY$7.INTL_DATE_FORMAT)\n : t(COPY$7.US_DATE_FORMAT), id: dateInputID, \"aria-describedby\": ariaDescribedBy, required: required }),\n React__default.createElement(\"button\", { type: \"button\", ref: calendarButtonRef, className: calendarButton, onClick: handleCalendarVisibility, \"aria-expanded\": calendarVisibility, \"aria-label\": t(COPY$7.DATE_BUTTON_LABEL) },\n React__default.createElement(CalendarIcon, null))),\n React__default.createElement(DisclosureContainer, { className: calendarWrapper, onClose: handleDisclosureClose, ref: disclosureRef, visible: calendarVisibility, \"data-testid\": \"DisclosureContainer\" },\n React__default.createElement(CalendarPicker, { onDaySelect: handleDaySelect, initialSelectedDate: stringToDate(value, dateFormat) }))));\n}\n\nconst useStyles$o = createUseStyles((theme) => ({\n container: {\n display: 'flex',\n },\n inputContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n label: {\n fontSize: '14px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n width: '100%',\n display: 'block',\n marginBottom: '5px',\n },\n input: {\n /**\n * including specific height and width values to match production\n */\n maxWidth: '50px',\n maxHeight: '36px',\n textAlign: 'center',\n },\n separator: {\n width: '20px',\n height: '36px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n srOnly: {\n ...visuallyHidden,\n },\n}));\n\nconst COPY$6 = defineMessages({\n TIME_LABEL: {\n id: 'TimeInput.timeLabel',\n defaultMessage: 'Time',\n description: '[Type: label][Vis: high] - label for time input',\n },\n HOUR_LABEL: {\n id: 'TimeInput.hour',\n defaultMessage: 'Hour',\n description: '[Type: label][Vis: high] - label for hour input',\n },\n MINUTES_LABEL: {\n id: 'TimeInput.minutes',\n defaultMessage: 'Minutes',\n description: '[Type: label][Vis: high] - label for minutes input',\n },\n DAYTIME_LABEL: {\n id: 'TimeInput.daytimeLabel',\n defaultMessage: 'AM/PM',\n description: '[Type: label][Vis: high] - label for daytime AM/PM select',\n },\n AM: {\n id: 'TimeInput.am',\n defaultMessage: 'AM',\n description: '[Type: label][Vis: high] - label for ante meridiem',\n },\n PM: {\n id: 'TimeInput.pm',\n defaultMessage: 'PM',\n description: '[Type: label][Vis: high] - label for post meridiem',\n },\n HOUR_PLACEHOLDER: {\n id: 'TimeInput.hhPlaceholder',\n defaultMessage: 'hh',\n description: '[Type: placeholder][Vis: high] - placeholder text for hour input',\n },\n MINUTE_PLACEHOLDER: {\n id: 'TimeInput.mmPlaceholder',\n defaultMessage: 'mm',\n description: '[Type: placeholder][Vis: high] - placeholder text for minutes input',\n },\n});\nfunction TimeInput({ onChange, defaultValue = { hour: '', minute: '', period: 'AM' }, id = uniqueId('TimeInput-'), className, required, 'aria-describedby': ariaDescribedBy, }) {\n const [state, setState] = useState(defaultValue);\n const timeLabelID = `${id}-time-label`;\n const hourLabelID = `${id}-hour-label`;\n const hourInputID = `${id}-hour-input`;\n const minuteLabelID = `${id}-minute-label`;\n const minuteInputID = `${id}-minute-input`;\n const periodLabelID = `${id}-period-label`;\n const periodSelectID = `${id}-period-input`;\n const handleHourChange = (e) => {\n const newState = { ...state, hour: e.target.value };\n // if hour is > 12, set daytime period to PM\n if (!Number.isNaN(parseInt(newState.hour, 10)) &&\n parseInt(newState.hour, 10) > 12) {\n newState.period = 'PM';\n }\n if (!newState.period) {\n newState.period = 'AM';\n }\n setState(newState);\n onChange?.(newState);\n };\n const handleHourOnBlur = (e) => {\n const newState = { ...state };\n // if hour is > 12, subtract 12 from the hour value to maintain 12 hour time\n if (!Number.isNaN(parseInt(e.target.value, 10)) &&\n parseInt(e.target.value, 10) > 12) {\n newState.hour = String(parseInt(e.target.value, 10) - 12);\n setState(newState);\n onChange?.(newState);\n }\n };\n const handleMinuteChange = (e) => {\n const newState = { ...state, minute: e.target.value };\n setState(newState);\n onChange?.(newState);\n };\n const handleSelectChange = (e) => {\n const newState = { ...state, period: e.target.value };\n setState(newState);\n onChange?.(newState);\n };\n const { container, inputContainer, input, label, separator, srOnly, } = useStyles$o();\n return (React__default.createElement(\"div\", { className: classNames(container, className), id: id, \"data-testid\": \"TimeInput\" },\n React__default.createElement(\"div\", { className: inputContainer },\n React__default.createElement(\"div\", { className: label, id: timeLabelID },\n React__default.createElement(T, { desc: COPY$6.TIME_LABEL })),\n React__default.createElement(\"label\", { htmlFor: hourInputID, id: hourLabelID, \"aria-labelledby\": `${timeLabelID} ${hourLabelID}`, className: srOnly },\n React__default.createElement(T, { desc: COPY$6.HOUR_LABEL })),\n React__default.createElement(TextInput$1, { className: input, maxLength: 2, onChange: handleHourChange, onBlur: handleHourOnBlur, value: state.hour, placeholder: t(COPY$6.HOUR_PLACEHOLDER), id: hourInputID, required: required, \"aria-describedby\": ariaDescribedBy }),\n React__default.createElement(\"span\", { className: separator }, \":\"),\n React__default.createElement(\"label\", { htmlFor: minuteInputID, id: minuteLabelID, \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`, className: srOnly },\n React__default.createElement(T, { desc: COPY$6.MINUTES_LABEL })),\n React__default.createElement(TextInput$1, { className: input, maxLength: 2, onChange: handleMinuteChange, value: state.minute, placeholder: t(COPY$6.MINUTE_PLACEHOLDER), id: minuteInputID, \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`, required: required, \"aria-describedby\": ariaDescribedBy })),\n React__default.createElement(\"div\", null,\n React__default.createElement(\"label\", { id: periodLabelID, htmlFor: periodSelectID, className: label },\n React__default.createElement(T, { desc: COPY$6.DAYTIME_LABEL })),\n React__default.createElement(NativeSelect, { id: periodSelectID, value: state.period, onChange: handleSelectChange, required: required },\n React__default.createElement(SelectAnswerOption, { value: \"AM\", label: t(COPY$6.AM) }),\n React__default.createElement(SelectAnswerOption, { value: \"PM\", label: t(COPY$6.PM) })))));\n}\n\nconst useStyles$n = createUseStyles((theme) => {\n const { fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: '7px',\n color: theme.answerColor,\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n marginBottom: '14px',\n },\n inputContainer: {\n display: 'flex',\n gap: '35px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexDirection: 'column',\n gap: '5px',\n },\n },\n inlineErrorContainer: {\n padding: '10px 0',\n fontSize: '16px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n '& ul': {\n padding: 0,\n margin: 0,\n },\n '& ul li': {\n paddingBottom: '0.2rem',\n listStyle: 'none',\n '&:before': {\n content: '\"*\"',\n marginRight: '5px',\n },\n },\n },\n };\n});\n\nconst COPY$5 = defineMessages({\n DATE_INTL_FORMAT_ERROR: {\n id: 'DateTime.dateIntlFormatError',\n defaultMessage: 'Please provide date in DD/MM/YYYY format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error (using ISO 8601 US date character format notation)',\n },\n DATE_US_FORMAT_ERROR: {\n id: 'DateTime.dateUsFormatError',\n defaultMessage: 'Please provide date in MM/DD/YYYY format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error (using ISO 8601 international date character format notation)',\n },\n ERROR_ENTER_HOURS: {\n id: 'DateTime.errorEnterHours',\n defaultMessage: 'Please enter hours from 0 to 12.',\n description: '[Type: label][Vis: high] - label for incorrect or missing hour input',\n },\n ERROR_ENTER_MINUTES: {\n id: 'DateTime.errorEnterMinutes',\n defaultMessage: 'Please enter minutes from 0 to 59.',\n description: '[Type: label][Vis: high] - label for incorrect or missing minute input',\n },\n ERROR_SELECT_PERIOD: {\n id: 'DateTime.errorSelectPeriod',\n defaultMessage: 'Please select AM/PM.',\n description: '[Type: label][Vis: high] - label for incorrect or missing period selection',\n },\n});\nfunction DateTime({ id: questionId, required, choices = [], responses = [], showDate = true, showTime = true, dateFormat, onChange, inlineErrors = [], ...questionFieldProps }) {\n const [responseValues, setResponseValues] = useState(responses);\n const errorId = createErrorId(questionId);\n /** Translation keys may change so this separates the key from the message */\n const errorMessage = useMemo(() => {\n return {\n ERROR_PROVIDE_DATE_INTL_FORMAT: t(COPY$5.DATE_INTL_FORMAT_ERROR),\n ERROR_PROVIDE_DATE_US_FORMAT: t(COPY$5.DATE_US_FORMAT_ERROR),\n ERROR_ENTER_HOURS: t(COPY$5.ERROR_ENTER_HOURS),\n ERROR_ENTER_MINUTES: t(COPY$5.ERROR_ENTER_MINUTES),\n ERROR_SELECT_PERIOD: t(COPY$5.ERROR_SELECT_PERIOD),\n };\n }, []);\n const getDateValueById = (id) => {\n const choice = responseValues.find((item) => item.id === id);\n return choice?.value.date;\n };\n const getTimeValueById = (id) => {\n const choice = responseValues.find((item) => item.id === id);\n return {\n hour: choice?.value.hour,\n minute: choice?.value.minute,\n period: choice?.value.period,\n };\n };\n const handleDateChange = (id, date) => {\n const newState = responseValues.filter((r) => r.id !== id);\n const prevState = responseValues.find((r) => r.id === id) ?? {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM',\n },\n };\n if (date) {\n const newResponse = {\n id,\n value: { ...prevState.value, date },\n };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const handleTimeChange = (id, time) => {\n const newState = responseValues.filter((r) => r.id !== id);\n const prevState = responseValues.find((r) => r.id === id) ?? {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM',\n },\n };\n if (time) {\n const newResponse = {\n id,\n value: { ...prevState.value, ...time },\n };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const { container, label, inputContainer, inlineErrorContainer, } = useStyles$n();\n return (React__default.createElement(QuestionField, { id: questionId, \"data-testid\": \"DateTimeQuestionType\", ...questionFieldProps }, choices?.map((choice) => {\n return (React__default.createElement(\"div\", { className: container, key: choice.id, id: choice.id },\n React__default.createElement(\"div\", { className: label }, choice.label),\n React__default.createElement(\"div\", { className: inputContainer },\n showDate && (React__default.createElement(DateInput, { onChange: (date) => handleDateChange(choice.id, date), value: getDateValueById(choice.id), dateFormat: dateFormat, required: required, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined })),\n showTime && (React__default.createElement(TimeInput, { onChange: (time) => handleTimeChange(choice.id, time), defaultValue: getTimeValueById(choice.id), required: required }))),\n inlineErrors.length > 0 && (React__default.createElement(\"div\", { className: inlineErrorContainer },\n React__default.createElement(\"ul\", null, inlineErrors\n .filter((e) => e.fieldId === choice.id)\n .map((error) => (React__default.createElement(\"li\", { key: `${error.fieldId}-${error.detail}` }, errorMessage[error.detail]))))))));\n })));\n}\nvar DateTime$1 = withErrorBoundary(DateTime);\n\nconst useStyles$m = createUseStyles((theme) => {\n const defaultFontSize = theme.fontSize.body;\n const { fontFamily = 'inherit', fontWeight = 'inherit', fontStyle = 'inherit', textDecoration = 'inherit', highlightColor = 'inherit', color = 'inherit', } = theme.questionBody ?? {};\n return {\n otherStyles: {\n marginTop: '5px',\n display: 'block',\n },\n hiddenInput: {\n display: 'none',\n },\n commentChoice: {\n marginTop: 10,\n },\n label: {\n display: 'block',\n marginTop: '10px',\n position: 'relative',\n fontFamily,\n fontWeight,\n fontStyle,\n textDecoration,\n highlightColor,\n color,\n fontSize: defaultFontSize,\n },\n };\n});\n\n/**\n * MultipleChoice Question Type (Tier 2)\n */\nfunction Dropdown({ id: questionId, disabled, required: _required, readOnly: _readOnly, choices = [], choiceOther, choiceComment, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, otherOption, commentOption, } = useQuestionChoices([...choices, choiceOther, choiceComment]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n const { otherStyles, hiddenInput, commentChoice } = useStyles$m();\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value;\n };\n /**\n * Default value for the choices\n */\n const defaultValue = useMemo(() => {\n return defaultResponses.find((c) => c.type !== 'COMMENT')?.id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /**\n * Other Answer Textfield state\n */\n const [otherText, setOtherText] = useState((otherOption && getDefaultValueById(otherOption.id)) || '');\n const handleSelectChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.value);\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n if (type === 'ANSWER') {\n /** Want to update the value with the value of the TextField texts, when otherAnswer is selected */\n responses.push({ id, type, value: otherText });\n }\n else {\n responses.push({ id, type, value: e.target.value });\n }\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * Other Answer Textfield Change\n */\n const handleTextChange = (e) => {\n const choiceData = options.find((c) => c.type === 'ANSWER');\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n setOtherText(e.target.value);\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const isOtherAnswerSelected = !!responseValue.find((c) => c.type === 'ANSWER');\n const multipleTextLines = otherOption && otherOption?.linesCount > 1;\n return (React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"DropdownQuestionType\", ...fieldProps },\n React__default.createElement(NativeSelect, { defaultValue: defaultValue, disabled: disabled, onChange: handleSelectChange },\n React__default.createElement(SelectAnswerOption, { value: undefined }),\n \" \",\n sortableOptions?.map((choice) => {\n return (React__default.createElement(SelectAnswerOption, { key: choice.id, id: choice.id, label: choice.label, value: choice.id }));\n }),\n otherOption && (React__default.createElement(SelectAnswerOption, { key: otherOption.id, id: otherOption.id, label: otherOption.label, value: otherOption.id }))),\n otherOption &&\n (multipleTextLines ? (React__default.createElement(TextArea$1, { defaultValue: getDefaultValueById(otherOption.id), autoFocus: false, rows: otherOption.linesCount, cols: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, onChange: handleTextChange, className: classNames(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected,\n }), tabIndex: isOtherAnswerSelected ? 0 : -1 })) : (React__default.createElement(TextInput$1, { defaultValue: getDefaultValueById(otherOption.id), autoFocus: false, autoHeight: true, size: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, onChange: handleTextChange, className: classNames(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected,\n }), tabIndex: isOtherAnswerSelected ? 0 : -1 }))),\n commentOption && (React__default.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, className: commentChoice }))));\n}\nvar Dropdown$1 = withErrorBoundary(Dropdown);\n\nconst useStyles$l = createUseStyles((theme) => ({\n imageChoice: {\n display: 'flex',\n position: 'relative',\n },\n labelContainer: ({ checked, disabled }) => {\n const borderColor = disabled && !checked ? 'transparent' : theme.primaryAccentColor;\n return {\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n cursor: 'pointer',\n width: '100%',\n border: [\n 1,\n 'solid',\n checked\n ? theme.questionColor\n : theme.questionBody.highlightColor ?? 'rgb(208, 210, 211)',\n ],\n borderRadius: 2,\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n '&:hover': {\n border: [1, 'solid', borderColor],\n },\n '&:focus-within': {\n border: [1, 'solid', borderColor],\n },\n };\n },\n controlImage: {\n position: 'absolute',\n right: '-1',\n top: '-1',\n width: '26px',\n height: '26px',\n transitionDuration: '0.3s',\n border: 'none',\n borderRadius: 2,\n zIndex: 10,\n transform: ({ checked }) => (checked ? 'scale(1)' : 'scale(0)'),\n },\n optionLabel: ({ checked }) => {\n return {\n padding: '9px 7px',\n width: '100%',\n wordWrap: 'break-word',\n fontWeight: checked ? 'bold' : 'normal',\n '&:focus-within': {\n background: theme.questionBody.highlightColor ?? 'rgb(208, 210, 211)',\n },\n };\n },\n imageContainer: {\n paddingTop: '75%',\n width: '100%',\n position: 'relative',\n '& > img': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n },\n inputContainer: {\n width: '100%',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: '#EFEFEF',\n },\n}));\n\nconst useStyles$k = createUseStyles((theme) => ({\n imageInput: ({ checked, disabled, readOnly }) => {\n const checkBgColor = checked ? theme.questionColor : 'transparent';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.input.activeColor,\n border: 'none',\n borderRadius: 4,\n backgroundColor,\n '& .checkmark': {\n fill: contrastColor(theme.input.activeColor),\n },\n '& input': {\n cursor: 'pointer',\n },\n };\n },\n}));\n\nfunction ImageInput({ className, type, ...props }, ref) {\n const { inputProps, styleProps } = useInputStyles(props);\n const { imageInput } = useStyles$k(styleProps);\n return (React__default.createElement(BaseInput$1, { ref: ref, type: type, className: classNames(imageInput, className), icon: React__default.createElement(CheckboxIcon$1, null), ...inputProps }));\n}\nvar ImageInput$1 = React__default.forwardRef(ImageInput);\n\nfunction ImageChoice$2({ id, type, alt = '', label, src: imageSrc, className, checked, name, onChange, onKeyDown, onClick, disabled: disabledProp, 'aria-disabled': ariaDisabledProp, readOnly: readOnlyProp, 'aria-readonly': ariaReadOnlyProp, ...inputProps }, ref) {\n const handleChange = (e) => {\n onChange?.({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value,\n });\n };\n const handleClick = (e) => {\n onClick?.(e);\n if (e.isDefaultPrevented()) {\n return;\n }\n const target = e.target;\n let checkVal = true;\n if (!inputProps.required && checked) {\n checkVal = false;\n }\n onChange?.({\n id: target.id,\n checked: checkVal,\n value: target.value,\n });\n };\n const handleKeyboard = (e) => {\n onKeyDown?.(e);\n if (e.isDefaultPrevented()) {\n return;\n }\n const target = e.target;\n if (!inputProps.required && checked && e.code === 'Space') {\n e.preventDefault();\n onChange?.({\n id: target.id,\n checked: false,\n value: target.value,\n });\n }\n };\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const { imageChoice, controlImage, inputContainer, labelContainer, optionLabel, imageContainer, } = useStyles$l({\n disabled,\n readOnly,\n checked,\n });\n const imageId = `${id}-image`;\n const labelId = `${id}-label`;\n const ariaDescribeId = alt ? imageId : undefined;\n const imageInputEvents = type === 'radio'\n ? {\n onClick: handleClick,\n onKeyDown: handleKeyboard,\n onChange: handleChange,\n }\n : { onChange: handleChange };\n return (React__default.createElement(\"div\", { className: imageChoice },\n React__default.createElement(\"label\", { htmlFor: id, className: classNames(labelContainer, className), tabIndex: -1 },\n React__default.createElement(\"div\", { className: inputContainer },\n React__default.createElement(ImageInput$1, { \"aria-labelledby\": labelId, \"aria-describedby\": ariaDescribeId, ref: ref, checked: checked, className: controlImage, id: id, type: type, value: id, name: name, ...inputProps, ...imageInputEvents }),\n React__default.createElement(\"div\", { className: imageContainer },\n React__default.createElement(\"img\", { id: imageId, src: imageSrc, alt: alt }))),\n label && (React__default.createElement(\"span\", { id: labelId, className: optionLabel }, label)))));\n}\nvar ImageChoiceOption = forwardRef(ImageChoice$2);\n\nconst useStyles$j = createUseStyles((theme) => {\n const isFull = theme.layout.includes('CENTER') || theme.layout.includes('BANNER');\n const isThird = theme.layout.includes('THIRD');\n const isHalf = theme.layout.includes('HALF') ||\n (theme.layout.includes('FULL') && !theme.layout.includes('CENTER'));\n const cols3 = 'repeat(3, minmax(0, 1fr))';\n const cols2 = 'repeat(2, minmax(0, 1fr))';\n const cols1 = 'minmax(0, 1fr)';\n return {\n imageChoiceContainer: {\n display: 'grid',\n flexWrap: 'wrap',\n gap: '25px',\n width: '100%',\n gridTemplateColumns: 'minmax(0, 1fr)',\n [`@media (min-width: ${theme.breakpoints?.md.min})`]: {\n gridTemplateColumns: isFull || isThird ? cols2 : cols1,\n },\n [`@media (min-width: ${theme.breakpoints?.lg.min})`]: {\n gridTemplateColumns: () => {\n if (isFull || isThird) {\n return cols3;\n }\n if (isHalf) {\n return cols2;\n }\n return cols1;\n },\n },\n [`@media (min-width: ${theme.breakpoints?.xl.min})`]: {\n gridTemplateColumns: isHalf ? cols2 : cols3,\n },\n },\n imageChoice: {\n width: '100%',\n },\n noneOfTheAboveContainer: {\n marginTop: '15px',\n },\n };\n});\n\nconst INPUT_SIZE$1 = 20;\nfunction ImageChoice({ id: questionId, readOnly, required, disabled, multiple = false, choices = [], choiceNoneOfTheAbove, onChange, responses = [], ...questionFieldProps }) {\n const imageChoiceType = multiple ? 'checkbox' : 'radio';\n const groupName = !multiple ? `${questionId}-imageChoice` : undefined;\n const errorId = createErrorId(questionId);\n const [selectedChoices, setSelectedChoices] = useState(responses);\n const handleChange = (e) => {\n const newState = !multiple\n ? []\n : selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n if (e.checked) {\n newState.push({ id: e.id, value: e.value });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleNAChange = (e) => {\n const newState = [];\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'NOTA' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const isChecked = (id) => !!selectedChoices.find((item) => item.id === id);\n const { imageChoiceContainer, imageChoice, noneOfTheAboveContainer, } = useStyles$j();\n return (React__default.createElement(QuestionField, { id: questionId, \"data-testid\": \"ImageChoiceQuestionType\", errorId: errorId, ...questionFieldProps },\n React__default.createElement(\"div\", { className: imageChoiceContainer }, choices?.map((choice) => {\n return (React__default.createElement(ImageChoiceOption, { key: choice.id, id: choice.id, required: required, disabled: disabled, readOnly: readOnly, label: choice.label, onChange: handleChange, className: imageChoice, value: choice.id, src: choice.image.url, alt: choice.image.altText || '', name: groupName, type: imageChoiceType, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, checked: isChecked(choice.id) }));\n })),\n choiceNoneOfTheAbove && choiceNoneOfTheAbove?.visible && (React__default.createElement(\"div\", { className: noneOfTheAboveContainer },\n React__default.createElement(Checkbox$3, { id: choiceNoneOfTheAbove.id, value: choiceNoneOfTheAbove.id, onChange: handleNAChange, checked: isChecked(choiceNoneOfTheAbove.id), disabled: disabled, readOnly: readOnly, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$1 }, choiceNoneOfTheAbove.label)))));\n}\nvar ImageChoice$1 = withErrorBoundary(ImageChoice);\n\nconst useStyles$i = createUseStyles({\n imageStyles: {\n maxWidth: '100%',\n display: 'block',\n },\n});\n\nfunction Image({ alt = '', className, ...props }) {\n const { imageStyles } = useStyles$i();\n return (React__default.createElement(\"img\", { className: classNames(imageStyles, className), \"data-testid\": \"image\", alt: alt, ...props }));\n}\n\nconst useStyles$h = createUseStyles((theme) => {\n return {\n presentationalTitleStyles: {\n fontFamily: theme.questionTitle.fontFamily ?? 'inherit',\n fontSize: theme.questionTitle.fontSize ?? '16px',\n fontWeight: theme.questionTitle.fontWeight ?? (theme.isAccessible ? 500 : 300),\n marginBottom: '24px',\n textDecoration: theme.questionTitle.textDecoration ?? 'inherit',\n },\n buttonStyles: {\n marginTop: '20px',\n },\n };\n});\n\nfunction ImagePresentational({ text, image, padding = { top: 0, bottom: 0, left: 0, right: 0 }, id, okButton = { visible: false }, }) {\n const richTextId = `text-presentational-header-${id}`;\n const { presentationalTitleStyles, buttonStyles } = useStyles$h();\n const { visible: showButton, ...buttonProps } = okButton;\n return (React__default.createElement(QuestionSpacing, { padding: padding, \"data-testid\": \"ImagePresentational\" },\n text && (React__default.createElement(RichText, { id: richTextId, element: \"div\", text: text, className: presentationalTitleStyles })),\n React__default.createElement(Image, { ...image }),\n showButton && React__default.createElement(Button, { ...buttonProps, className: buttonStyles })));\n}\nvar ImagePresentational$1 = withErrorBoundary(ImagePresentational);\n\nconst useStyles$g = createUseStyles((theme) => ({\n radioInput: {\n '& label': {\n alignItems: 'baseline',\n },\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n textInput: {\n opacity: ({ checked }) => (checked ? 1 : 0.5),\n cursor: ({ checked }) => (checked ? 'inherit' : 'pointer'),\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%',\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal',\n },\n checkHover: {\n '&:hover': {\n outline: 'none',\n },\n },\n}));\n\nfunction RadioTextfield({ refs, ...props }) {\n const { id, children: label, checked: checkedProp = false, value: valueProp, defaultValue, lineCount = 1, charCount = 50, maxLength, onClick, onChange, ...radioProps } = props;\n const radioGroup = useRadioGroup();\n const [checked, setChecked] = useState(checkedProp);\n const [value, setValue] = useState(defaultValue || valueProp);\n const radioInputRef = useRef(null);\n const radioRef = useForkRef(radioInputRef, refs?.radio);\n const textInputRef = useRef(null);\n const inputRef = useForkRef(textInputRef, refs?.text);\n const multipleTextLines = lineCount > 1;\n const handleValueChange = (e) => {\n radioGroup?.onChange(e);\n setValue(e.value);\n onChange?.(e);\n };\n const handleInputChange = (e) => {\n handleValueChange({ id, value: e.target.value, checked });\n };\n const handleFocusChange = (e) => {\n handleValueChange({ id, value: e.target.value, checked });\n };\n const handleClick = (e) => {\n /**\n * Selection via keyboard calls onClick event - check for\n * mouse-position to ensure we were called by a pointing device.\n */\n if (!checked && e.clientX !== 0 && e.clientY !== 0) {\n textInputRef?.current?.focus();\n }\n setChecked(true);\n onClick?.(e);\n };\n useEffect(() => {\n setChecked(checkedProp);\n }, [checkedProp]);\n useEffect(() => {\n if (radioGroup?.value !== value) {\n setChecked(false);\n }\n }, [radioGroup, value]);\n const { radioInput, textInput, checkHover } = useStyles$g({\n checked,\n });\n return (React__default.createElement(React__default.Fragment, null,\n React__default.createElement(Radio$1, { id: `radio-input-${id}`, checked: checked, value: value, onClick: handleClick, onChange: handleValueChange, className: radioInput, ref: radioRef, ...radioProps }, label),\n multipleTextLines ? (React__default.createElement(TextArea$1, { id: `radio-field-${id}`, defaultValue: defaultValue, autoFocus: false, rows: lineCount, cols: charCount, maxLength: maxLength, onClick: handleClick, onChange: handleInputChange, onBlur: handleFocusChange, onFocus: handleFocusChange, className: classNames(textInput, {\n [checkHover]: !checked,\n }), ref: inputRef, tabIndex: checked ? 0 : -1 })) : (React__default.createElement(TextInput$1, { id: `radio-field-${id}`, defaultValue: defaultValue, autoFocus: false, autoHeight: true, size: charCount, maxLength: maxLength, onClick: handleClick, onChange: handleInputChange, onBlur: handleFocusChange, onFocus: handleFocusChange, className: classNames(textInput, {\n [checkHover]: !checked,\n }), ref: inputRef, tabIndex: checked ? 0 : -1 }))));\n}\n\nconst useStyles$f = createUseStyles({\n commentChoiceContainer: {\n marginTop: '10px',\n },\n});\n\nconst INPUT_SIZE = 20;\n/**\n * MultipleChoice Question Type (Tier 2)\n */\nfunction MultipleChoice({ id: questionId, required, disabled, readOnly, columnLayout = 1, choices = [], choiceNoneOfTheAbove, choiceOther, choiceComment, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const groupId = createFieldId(questionId);\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, notaOption, otherOption, commentOption, } = useQuestionChoices([\n ...choices,\n choiceNoneOfTheAbove,\n choiceOther,\n choiceComment,\n ]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value;\n };\n /**\n * Default value for the group\n */\n const defaultValue = useMemo(() => defaultResponses.find((c) => c.type !== 'COMMENT')?.value, \n // defaultValues should not be changed post render (breaks rules of controlled components)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /**\n * Determine if choice is selected\n * @return TRUE if the choice.id exists in responses\n */\n const isChecked = (id) => {\n return !!responseValue.find((c) => c.id === id);\n };\n const handleRadioChange = (e) => {\n const choiceData = options.find((c) => e.id.match(c.id));\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * deselect choice if the question is not required\n */\n const unCheckOption = () => {\n if (required) {\n return;\n }\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleClick = (e) => {\n // match is used since RadioTextfield applies a prefix\n // to maintain unique ID's'\n const input = e.target;\n const isSelected = responseValue.find((c) => input.id.match(c.id));\n if (isSelected && input.checked) {\n e.preventDefault();\n unCheckOption();\n }\n };\n const handleKeyboard = (e) => {\n const isSelected = responseValue.find((c) => e.target.id.match(c.id));\n if (isSelected && e.code === 'Space') {\n e.preventDefault();\n unCheckOption();\n }\n };\n const radioEvents = { onClick: handleClick, onKeyDown: handleKeyboard };\n const radioGroupProps = {\n disabled,\n readOnly,\n name: groupId,\n defaultValue,\n onChange: handleRadioChange,\n };\n const { commentChoiceContainer } = useStyles$f();\n return (React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"MultipleChoiceQuestionType\", ...fieldProps },\n React__default.createElement(RadioGroup, { ...radioGroupProps },\n React__default.createElement(QuestionAnswerLayoutTemplate, { gridCellMargin: [0, 2, 5, 2], otherCellMargin: [0, 2, 5, 2], columns: columnLayout, other: otherOption && (React__default.createElement(RadioTextfield, { id: otherOption.id, checked: isChecked(otherOption.id), defaultValue: getDefaultValueById(otherOption.id), lineCount: otherOption.linesCount, charCount: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, otherOption.label)), noneOfTheAbove: notaOption && (React__default.createElement(Radio$1, { id: notaOption.id, value: notaOption.id, checked: isChecked(notaOption.id), \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, notaOption.label)) }, sortableOptions.map((choice) => (React__default.createElement(Radio$1, { id: choice.id, key: choice.id, value: choice.id, checked: isChecked(choice.id), \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, choice.label)))),\n commentOption && (React__default.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, className: commentChoiceContainer })))));\n}\n\nconst useStyles$e = createUseStyles((theme) => {\n const { fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'row',\n wordBreak: 'break-word',\n marginBottom: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexWrap: 'wrap',\n },\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n flex: '0 0 20%',\n marginRight: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flex: '0 0 100%',\n margin: '0 2px 2px 0',\n },\n },\n input: {\n marginTop: 'auto',\n flex: 'auto',\n },\n };\n});\n\nfunction MultipleTextbox({ id: questionId, required, disabled, readOnly, choices = [], responses = [], onChange, size, ...fieldProps }) {\n const [responseValues, setResponseValues] = useState(responses);\n const { error, errorId = createErrorId(questionId) } = fieldProps;\n const getDefaultValueById = (id) => {\n const defaultChoice = responseValues.find((item) => item.id === id);\n return defaultChoice?.value;\n };\n const handleChange = (e) => {\n const newState = responseValues.filter((response) => response.id !== e.target.id);\n if (e.target.value) {\n const newResponse = { id: e.target.id, value: e.target.value };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const { container, label, input } = useStyles$e();\n return (React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"MultipleTextbox\", ...fieldProps }, choices?.map((choice) => {\n const labelId = `${choice.id}-label`;\n return (React__default.createElement(\"div\", { className: container, key: choice.id },\n React__default.createElement(\"label\", { className: label, id: labelId, htmlFor: choice.id },\n React__default.createElement(RichText, { element: \"span\", text: choice.label })),\n React__default.createElement(TextInput$1, { id: choice.id, defaultValue: getDefaultValueById(choice.id), required: required, disabled: disabled, readOnly: readOnly, size: size, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, maxLength: TEXT_INPUT_MAX_CHARS, className: input })));\n })));\n}\n\nconst useStyles$d = createUseStyles((theme) => {\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n npsContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minWidth: 230,\n },\n npsLabel: {\n color: theme.questionColor,\n fontFamily: theme.questionBody.fontFamily,\n fontSize: 14,\n fontWeight: fontWeightOptions.light,\n lineHeight: 1.25,\n },\n npsRatingButtonList: {\n margin: 0,\n padding: 0,\n display: 'inline-flex',\n listStyleType: 'none',\n border: [1, 'solid', theme.primaryAccentColor],\n borderRadius: 4,\n overflow: 'hidden',\n outline: [2, 'solid', 'transparent'],\n outlineOffset: 2,\n width: '100%',\n },\n npsRatingButton: ({ isRTL }) => ({\n padding: 0,\n minWidth: 20,\n flex: '1 1 9.09%',\n '& + $npsRatingButton': {\n borderLeft: isRTL ? 0 : [2, 'solid', theme.primaryAccentColor],\n borderRight: isRTL ? [2, 'solid', theme.primaryAccentColor] : 0,\n },\n }),\n minLabel: ({ isRTL }) => ({\n margin: isRTL ? [0, 4, 2, 0] : [0, 0, 2, 4],\n }),\n maxLabel: ({ isRTL }) => ({\n margin: isRTL ? [0, 0, 2, 4] : [0, 4, 2, 0],\n }),\n srOnly: visuallyHidden$1,\n };\n});\n\nconst useStyles$c = createUseStyles((theme) => {\n // theme.correctAnswerHighlightColor is the correct color, but not an accurate token.\n const focusBackgroundColor = theme.correctAnswerHighlightColor;\n return {\n container: {\n position: 'relative',\n display: 'flex',\n cursor: 'pointer',\n },\n radio: {\n appearance: 'none',\n outline: 'none',\n position: 'absolute',\n width: '100%',\n height: '100%',\n '&:focus + $label, &:hover + $label': {\n border: [2, 'solid', theme.primaryAccentColor],\n backgroundColor: focusBackgroundColor,\n },\n '&:checked + $label': {\n backgroundColor: theme.questionColor,\n color: theme.primaryBackgroundColor,\n fontWeight: 'bold',\n transition: 'background 200ms ease',\n },\n },\n label: {\n position: 'relative',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n border: [2, 'solid', 'transparent'],\n backgroundColor: theme.primaryBackgroundColor,\n color: theme.questionColor,\n fontFamily: theme.fontFamily,\n fontSize: 15,\n fontWeight: 700,\n padding: [10, 0],\n width: '100%',\n },\n };\n});\nfunction NpsRatingButton({ id, className, children: label, component: Tag = 'div', ...props }) {\n const styles = useStyles$c();\n return (React__default.createElement(Tag, { className: classNames(styles.container, className) },\n React__default.createElement(\"input\", { id: id, type: \"radio\", className: styles.radio, ...props }),\n React__default.createElement(\"label\", { className: classNames(styles.label), htmlFor: id }, label)));\n}\n\nconst COPY$4 = defineMessages({\n NPS_QUESTION_TITLE: {\n id: 'Nps.QUESTION_TITLE',\n defaultMessage: '
On a scale of {minValue} to {maxValue},
{heading}
{minValue} for {minLabelText}, {maxValue} for {maxLabelText}
',\n description: '[Type: header][Vis: high] - question title',\n },\n});\nfunction Nps({ id: questionId, choices = [], className, title, rowId, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const defaultValue = useMemo(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const [responseValue, setResponseValue] = useState(defaultValue);\n const ratingChanged = ({ target: { value: clickedAnswerValue }, }) => {\n if (clickedAnswerValue) {\n setResponseValue(clickedAnswerValue);\n const response = [{ id: rowId, value: clickedAnswerValue }];\n onChange?.(response);\n }\n };\n const { isRTL } = useContext(L10NContext);\n const errorId = createErrorId(questionId);\n const { npsContainer, npsLabel, minLabel, maxLabel, srOnly, npsRatingButtonList, npsRatingButton, } = useStyles$d({\n isRTL,\n });\n const { heading } = title;\n const minFullLabel = choices[0]?.label ?? '';\n const maxFullLabel = choices.slice(-1)[0]?.label ?? '';\n const [minLabelText, minValue] = minFullLabel.split(' - ');\n const [maxLabelText, maxValue] = maxFullLabel.split(' - ');\n const instructionsId = `${questionId}-instructions`;\n const accessibleHeading = t(COPY$4.NPS_QUESTION_TITLE, {\n minValue,\n maxValue,\n minLabelText,\n maxLabelText,\n heading,\n instructionsId,\n srOnlyClass: classNames(srOnly),\n });\n const accessibleTitle = {\n ...title,\n heading: accessibleHeading,\n };\n return (React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"NpsQuestionType\", title: accessibleTitle, ...fieldProps },\n React__default.createElement(\"div\", { className: classNames(npsContainer, className) },\n React__default.createElement(\"span\", { className: classNames(npsLabel, minLabel) }, minLabelText),\n React__default.createElement(\"span\", { className: classNames(npsLabel, maxLabel) }, maxLabelText),\n React__default.createElement(\"ol\", { className: classNames(npsRatingButtonList) }, choices.map((c) => (React__default.createElement(NpsRatingButton, { id: `${questionId}-${c.id}`, key: `${questionId}-${c.id}`, name: `${questionId}-rating`, value: c.id, component: \"li\", className: classNames(npsRatingButton), onChange: ratingChanged, defaultChecked: responseValue === c.id, \"aria-describedby\": instructionsId }, c.label.includes('-') ? c.label.split(' - ')[1] : c.label)))))));\n}\n\nconst useStyles$b = createUseStyles((theme) => ({\n gridCell: {\n display: 'flex',\n flex: '1 auto',\n position: 'relative',\n padding: 3,\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n background: theme.correctAnswerHighlightColor,\n marginTop: '5px',\n marginBottom: '5px',\n },\n },\n}));\n\nfunction GridCell({ children, row, col, ...props }) {\n const { gridCell } = useStyles$b();\n return (React__default.createElement(\"td\", { className: gridCell, tabIndex: -1, ...{ col, row, ...props } }, children));\n}\n\nconst useStyles$a = createUseStyles((theme) => ({\n labelVisible: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n textAlign: 'left',\n width: 150,\n padding: [3, 3, 3, 7],\n fontWeight: getFontWeights(theme.questionBody.fontFamily).light,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: theme.questionBody.fontSize ?? {},\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n width: '100%',\n },\n },\n labelHidden: { display: 'none' },\n rowStyles: {\n display: 'flex',\n width: '100%',\n color: theme.answerColor,\n border: 'none',\n cursor: 'pointer',\n background: theme.correctAnswerHighlightColor,\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n flexDirection: 'column',\n marginTop: 5,\n marginBottom: 5,\n },\n },\n}));\n\nfunction GridRow({ id: rowId, row: rowIndex, label, columnDataArray, hideLabel, className, gridComponent, }) {\n const { rowStyles, labelHidden, labelVisible } = useStyles$a();\n const labelClass = hideLabel ? labelHidden : labelVisible;\n return (React__default.createElement(\"tr\", { id: rowId, className: classNames(className, rowStyles), \"data-row\": true },\n React__default.createElement(\"th\", { id: `${rowId}-header`, scope: \"row\", className: labelClass },\n React__default.createElement(RichText, { element: \"span\", text: label })),\n columnDataArray.map(({ id: colId }, colIndex) => {\n const cellId = `${rowId}-${colId}-cell`;\n const props = {\n rowId,\n rowIndex,\n colId,\n colIndex,\n label,\n 'aria-labelledby': `${rowId}-header ${colId}-header`,\n };\n return (React__default.createElement(GridCell, { id: cellId, key: cellId, row: rowIndex, col: colIndex }, gridComponent?.({ ...props })));\n })));\n}\n\nconst useStyles$9 = createUseStyles((theme) => ({\n gridContainer: {\n width: '100%',\n },\n gridStyles: {\n display: 'flex',\n flexWrap: 'wrap',\n color: theme.answerColor,\n border: 'none',\n },\n stripeBasic: {\n '& tr:nth-child(even)': {\n background: 'transparent',\n },\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n '& tr': {\n background: 'transparent',\n },\n },\n },\n stripeOther: {\n '& tr': {\n background: 'transparent',\n width: '100%',\n },\n // alternating elements 2 at a time (1+2, 5+6, 9+10) with n starting at 0\n '& tr:nth-child(4n+1), & tr:nth-child(4n+2)': {\n background: theme.correctAnswerHighlightColor,\n },\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n '& tr:nth-child(4n+1), & tr:nth-child(4n+2)': {\n background: 'transparent',\n },\n },\n },\n columnContainer: {\n display: 'flex',\n width: '100%',\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n display: 'none',\n },\n },\n columnHeader: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n flex: 1,\n padding: 3,\n color: theme.answerColor,\n fontWeight: getFontWeights(theme.questionBody.fontFamily).light,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: 14,\n },\n bufferVisible: {\n width: '150px',\n },\n bufferHidden: { display: 'none' },\n}));\n\nfunction MatrixGrid({ id, className, rowDataArray, columnDataArray, commentColumnOtherOption, hideLabel, gridComponent, commentColumnComponent, useArrowKeyNavigation, }) {\n const gridRef = useRef(null);\n const position = useRef({ row: 0, col: 0 });\n useEffect(() => {\n // gathers all others in the matrix\n const otherTabIndex = document.querySelectorAll(`[data-other] input`);\n // sets others tabIndex -1\n otherTabIndex.forEach((i) => {\n i.setAttribute('tabindex', '-1');\n });\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '0');\n });\n /** If true \"other\" inputs are rendered per-row */\n const hasCommentColumnOther = commentColumnOtherOption?.type === 'COMMENT_COLUMN' &&\n commentColumnComponent;\n let computedRows;\n if (hasCommentColumnOther) {\n // fill rows with artificial rows for the other column options\n computedRows = rowDataArray.reduce((acc, row) => {\n return [\n ...acc,\n row,\n {\n ...row,\n id: `${row.id}-other`,\n associatedId: row.id,\n isOtherRow: true,\n },\n ];\n }, []);\n }\n else {\n computedRows = rowDataArray;\n }\n const handleKeyDown = (e) => {\n const target = e.target;\n if (!gridRef.current?.contains(target)) {\n return;\n }\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n const nextColumn = position.current.col + 1;\n const nextRow = position.current.row + 1;\n const previousColumn = position.current.col - 1;\n const previousRow = position.current.row - 1;\n const currentOther = document.querySelector(`[data-other] [row='${position.current.row}'] input`);\n if (e.key === 'ArrowRight' && nextColumn < columnDataArray.length) {\n const nextElement = document.querySelector(`[col='${nextColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement?.focus();\n position.current = { col: nextColumn, row: position.current.row };\n }\n if (e.key === 'ArrowLeft' && previousColumn >= 0) {\n const nextElement = document.querySelector(`[col='${previousColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement?.focus();\n position.current = { col: previousColumn, row: position.current.row };\n }\n if (e.key === 'ArrowUp' && previousRow >= 0) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${previousRow}'] [data-component]`);\n const previousOther = document.querySelector(`[data-other] [row='${position.current.row - 1}'] input`);\n if (previousOther) {\n focusedElement?.setAttribute('tabindex', '-1');\n previousOther.setAttribute('tabindex', '0');\n previousOther?.focus();\n e.preventDefault();\n }\n else {\n currentOther?.setAttribute('tabindex', '-1');\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n nextElement?.focus();\n e.preventDefault();\n }\n position.current = { col: position.current.col, row: previousRow };\n }\n if (e.key === 'ArrowDown' && nextRow < computedRows.length) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${nextRow}'] [data-component]`);\n const nextOther = document.querySelector(`[data-other] [row='${position.current.row + 1}'] input`);\n if (nextOther) {\n focusedElement?.setAttribute('tabindex', '-1');\n nextOther.setAttribute('tabindex', '0');\n nextOther?.focus();\n e.preventDefault();\n }\n else {\n currentOther?.setAttribute('tabindex', '-1');\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n nextElement?.focus();\n e.preventDefault();\n }\n position.current = { col: position.current.col, row: nextRow };\n }\n };\n const { gridStyles, columnContainer, columnHeader, bufferHidden, bufferVisible, stripeBasic, stripeOther, gridContainer, } = useStyles$9();\n const columnCount = columnDataArray.length;\n const renderStripe = commentColumnOtherOption ? stripeOther : stripeBasic;\n const bufferClass = hideLabel ? bufferHidden : bufferVisible;\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n React__default.createElement(\"table\", { onKeyDown: useArrowKeyNavigation ? handleKeyDown : undefined, tabIndex: -1, ref: gridRef, className: gridContainer },\n React__default.createElement(\"thead\", null,\n React__default.createElement(\"tr\", { className: columnContainer },\n React__default.createElement(\"td\", { className: bufferClass }),\n columnDataArray.map((column) => {\n return (React__default.createElement(\"th\", { id: `${column.id}-header`, scope: \"col\", key: column.id, className: columnHeader },\n React__default.createElement(RichText, { element: \"span\", text: column.label })));\n }))),\n React__default.createElement(\"tbody\", { id: id, className: classNames(className, gridStyles, renderStripe) }, computedRows.map((row, rowIndex) => !row.isOtherRow ? (React__default.createElement(GridRow, { id: row.id, hideLabel: hideLabel, key: row.id, row: rowIndex, label: row.label, columnDataArray: columnDataArray, gridComponent: gridComponent })) : (React__default.createElement(\"tr\", { \"data-row\": true, \"data-other\": true, key: row.id },\n React__default.createElement(GridCell, { id: `${rowIndex}-${columnCount + 1}-cell`, \n // eslint-disable-next-line react/no-array-index-key\n key: `${rowIndex}-${columnCount + 1}-cell`, row: rowIndex, col: columnCount + 1, colSpan: columnCount + 1 }, commentColumnComponent?.({\n commentColumnOtherOption,\n row,\n columnCount,\n }))))))));\n}\n\nconst useStyles$8 = createUseStyles(() => ({\n cellInputWrapper: () => {\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n };\n },\n}));\n\nconst UNSELECTED_OPTION = 'unselectedOption';\nconst COPY$3 = defineMessages({\n SELECT_AN_OPTION: {\n id: 'MatrixDropdown.EmptyTopNativeSelect',\n defaultMessage: 'Select an option',\n description: 'Label for screen readers when the top/default selection is empty',\n },\n});\nfunction MatrixDropdown({ id: questionId, choices: rows = [], columnChoices: columns = [], choiceComment, onChange, responses: defaultResponses = [], disabled: _disabled, readOnly: _ro, ...questionFieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions: sortableRows, commentOption, } = useQuestionChoices([...rows, choiceComment]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices (i.e. choiceComment)\n * Matrix provides a 2D Array construct\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value[0]?.value;\n };\n const handleChange = (e, gridCell) => {\n const { rowId, colId } = gridCell;\n const storedValuesForGrid = responseValue.filter((r) => !(r.id === rowId || r.type === 'COMMENT'));\n const rowDataContainingChange = responseValue.find((r) => r.id === rowId) || {\n id: rowId,\n value: [],\n };\n const prevCellsForChangedRow = rowDataContainingChange.value.filter((cell) => cell.id !== colId);\n const newCellData = { id: colId, value: e.target.value };\n // remove old data for the changed cell\n const newCellsForChangedRow = prevCellsForChangedRow.filter((cell) => cell.id !== colId);\n if (newCellData.value !== UNSELECTED_OPTION) {\n newCellsForChangedRow.push(newCellData);\n }\n // add the new row if at least one cell has a value other than UNSELECTED_OPTION\n const newRowForGrid = newCellsForChangedRow.length > 0\n ? [{ ...rowDataContainingChange, value: newCellsForChangedRow }]\n : [];\n const responses = [...storedValuesForGrid, ...newRowForGrid];\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n const response = { id, type, value: e.target.value };\n // @note: ensure to loop the values when transforming in RespWeb\n responses.push({\n id,\n type,\n value: [response],\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * Default value for the choices\n */\n const defaultValue = useMemo(() => {\n return defaultResponses.find((c) => c.type !== 'COMMENT')?.id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { cellInputWrapper } = useStyles$8();\n const selectAnOptionWithDashes = `-- ${t(COPY$3.SELECT_AN_OPTION)} --`;\n return (React__default.createElement(QuestionField, { id: questionId, \"data-testid\": \"MatrixDropdownQuestionType\", errorId: errorId, ...questionFieldProps },\n React__default.createElement(MatrixGrid, { id: questionId, columnDataArray: columns, rowDataArray: sortableRows, \n // eslint-disable-next-line react/no-unstable-nested-components\n gridComponent: (gridCell) => {\n const { colId } = gridCell;\n return (React__default.createElement(\"div\", { className: cellInputWrapper },\n React__default.createElement(NativeSelect, { onChange: (e) => handleChange(e, gridCell), defaultValue: defaultValue, \"aria-labelledby\": gridCell['aria-labelledby'] },\n React__default.createElement(SelectAnswerOption, { value: UNSELECTED_OPTION, label: selectAnOptionWithDashes }),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n columns\n .find((col) => col.id === colId)\n .choices.map((choice) => {\n return (React__default.createElement(SelectAnswerOption, { key: choice.id, id: choice.id, label: choice.label, value: choice.id }));\n }))));\n } }),\n commentOption && (React__default.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS }))));\n}\n\nconst useStyles$7 = createUseStyles((theme) => ({\n cellInputWrapper: ({ checked }) => ({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n '&:hover': {\n border: [1, checked ? 'solid' : 'dashed', theme.questionColor],\n },\n backgroundColor: checked ? theme.input.bgColor : 'transparent',\n '&:focus-within': {\n backgroundColor: theme.input.bgColor,\n },\n justifyContent: 'center',\n padding: 5,\n borderRadius: 4,\n cursor: 'pointer',\n }),\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n cellInputWrapper: {\n justifyContent: 'flex-start !important',\n alignItems: 'flex-start !important',\n },\n },\n labelForMobileView: ({ checked }) => ({\n marginLeft: 10,\n marginBottom: 2,\n fontWeight: checked ? 'bold' : null,\n }),\n [`@media (min-width: ${theme.breakpoints?.sm.min})`]: {\n labelForMobileView: { display: 'none' },\n },\n}));\n\nfunction RatingInput({ qid: questionId, gridCell, checked = false, isMultipleSelectionsPerRow = false, className, onChange, columnChoices, ...props }) {\n const { rowId = '', colId = '', 'aria-labelledby': ariaLabelledBy } = gridCell || {};\n const CheckboxOrRadio = isMultipleSelectionsPerRow\n ? CheckboxInput$1\n : RadioInput$1;\n const inputId = `${questionId}-${rowId}-${colId}`;\n const handleInputChange = (e) => {\n onChange?.({\n id: rowId,\n value: e.target.value,\n checked: e.target.checked,\n });\n };\n const { cellInputWrapper, labelForMobileView } = useStyles$7({ checked });\n const columnLabel = columnChoices.find((column) => column.id === colId)?.label || '';\n return (React__default.createElement(\"label\", { htmlFor: inputId, \"aria-labelledby\": ariaLabelledBy, className: cellInputWrapper },\n React__default.createElement(CheckboxOrRadio, { id: inputId, value: colId, \"data-component\": true, tabIndex: -1, checked: checked, onChange: handleInputChange, className: className, ...props }),\n React__default.createElement(RichText, { element: \"span\", className: labelForMobileView, text: columnLabel })));\n}\n\nconst useStyles$6 = createUseStyles({\n gridComponentStyle: {\n display: 'flex',\n flexShrink: 0,\n width: 20,\n height: 20,\n },\n commentChoiceContainer: {\n width: '100%',\n },\n commentColumnContainer: {\n margin: '1em',\n },\n});\n\nfunction MatrixRating({ id: questionId, isMultipleSelectionsPerRow = false, choices = [], columnChoices = [], choiceOther, hideLabel, choiceNoneOfTheAbove, required, choiceComment, isForcedRanking, onChange, responses: defaultResponses = [], disabled: _disabled, readOnly: _ro, ...questionFieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, commentOption, commentColumnOption, columnOptions, } = useQuestionChoices([\n ...choices,\n choiceNoneOfTheAbove\n ? { ...choiceNoneOfTheAbove, type: 'NOTA' }\n : undefined,\n choiceOther,\n choiceComment,\n ], [\n ...columnChoices,\n choiceNoneOfTheAbove\n ? { ...choiceNoneOfTheAbove, type: 'NOTA' }\n : undefined,\n ]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices (i.e. choiceComment)\n * Matrix provides a 2D Array construct\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value[0]?.value;\n };\n const isChecked = (rowId, colId) => {\n return !!responseValue.find((r) => r.id === rowId && r.value.find((c) => c.id === colId));\n };\n const unCheckOption = (unSelectOptionID) => {\n if (required) {\n return;\n }\n const result = responseValue.filter((option) => {\n return option.id !== unSelectOptionID;\n });\n setResponseValue(result);\n onChange?.(result);\n };\n const handleClick = (e, gridCell) => {\n const input = e.target;\n const checkedOption = responseValue.find((option) => option.id === gridCell.rowId && option.value[0].id === gridCell.colId);\n if (input.checked && !!checkedOption) {\n e.preventDefault();\n unCheckOption(checkedOption.id);\n }\n };\n const handleKeyboard = (e, gridCell) => {\n const checkedOption = responseValue.find((option) => option.id === gridCell.rowId && option.value[0].id === gridCell.colId);\n if (checkedOption && e.code === 'Space') {\n e.preventDefault();\n unCheckOption(checkedOption.id);\n }\n };\n const handleChange = (e, gridCell) => {\n const { id: rowId, value: colId, checked } = e;\n const isNa = gridCell.colIndex > columnChoices.length - 1;\n const type = isNa ? 'NOTA' : undefined;\n const prevRows = responseValue.filter((r) => r.id !== rowId);\n const currentRow = (!isNa &&\n responseValue.find((r) => r.id === rowId && r.type !== 'NOTA')) || {\n id: rowId,\n value: [],\n type,\n };\n const currentCols = isMultipleSelectionsPerRow\n ? currentRow.value.filter((c) => c.value !== colId)\n : [];\n if (checked) {\n currentCols.push({ id: colId, value: colId });\n }\n const newRows = currentCols.length\n ? [{ ...currentRow, value: currentCols }]\n : [];\n if (isForcedRanking) {\n const filteredRows = prevRows.find((r) => r.value[0].value === currentCols[0].value);\n if (filteredRows && !isNa) {\n const found = prevRows.indexOf(filteredRows);\n prevRows.splice(found, 1);\n }\n }\n const rows = [...prevRows, ...newRows];\n const responses = rows;\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n const response = { id, type, value: e.target.value };\n // @note: ensure to loop the values when transforming in RespWeb\n responses.push({\n id,\n type,\n value: [response],\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentColumnChange = (e, associatedRowId) => {\n if (!commentColumnOption) {\n return; // mainly here for type-safety\n }\n const currentRowData = responseValue.find(({ id }) => id === associatedRowId);\n const allButNewValue = currentRowData?.value.filter(({ id }) => id !== commentColumnOption.id) ??\n [];\n const isDelete = !e.target.value &&\n !!currentRowData &&\n allButNewValue.length < currentRowData?.value.length;\n const newValue = isDelete\n ? allButNewValue\n : [\n ...allButNewValue,\n {\n id: commentColumnOption.id,\n value: e.target.value,\n type: 'COMMENT_COLUMN',\n },\n ];\n const responses = responseValue.filter(({ id }) => id !== associatedRowId);\n if (newValue.length > 0) {\n responses.push({\n id: associatedRowId,\n value: newValue,\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const { gridComponentStyle, commentChoiceContainer, commentColumnContainer, } = useStyles$6();\n return (React__default.createElement(QuestionField, { id: questionId, \"data-testid\": \"MatrixRatingQuestionType\", errorId: errorId, ...questionFieldProps },\n React__default.createElement(MatrixGrid, { id: questionId, hideLabel: hideLabel, columnDataArray: columnOptions, rowDataArray: sortableOptions, \n // eslint-disable-next-line react/no-unstable-nested-components\n gridComponent: (gridCell) => (React__default.createElement(RatingInput, { qid: questionId, gridCell: gridCell, isMultipleSelectionsPerRow: isMultipleSelectionsPerRow, checked: isChecked(gridCell.rowId, gridCell.colId), onChange: (e) => handleChange(e, gridCell), onClick: isMultipleSelectionsPerRow\n ? undefined\n : (e) => handleClick(e, gridCell), onKeyDown: isMultipleSelectionsPerRow\n ? undefined\n : (e) => handleKeyboard(e, gridCell), className: gridComponentStyle, columnChoices: columnOptions })), commentColumnOtherOption: commentColumnOption, commentColumnComponent: commentColumnOption\n ? // eslint-disable-next-line react/no-unstable-nested-components\n (commentProps) => (React__default.createElement(CommentChoice, { id: `${commentProps.row.id}-comment`, label: commentColumnOption?.label, onChange: (e) => commentProps.row.associatedId &&\n handleCommentColumnChange(e, commentProps.row.associatedId), lineCount: commentColumnOption.linesCount, charCount: commentColumnOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, className: commentColumnContainer }))\n : undefined, useArrowKeyNavigation: true }),\n commentOption && (React__default.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, className: commentChoiceContainer }))));\n}\n\nconst useStyles$5 = createUseStyles((theme) => {\n const breakpointSmMin = `@media screen and (max-width: ${theme.breakpoints.sm.min})`;\n const { bgColor: listItemBackground, activeColor: listItemBorderActive, } = theme.input;\n const flexStart = 'flex-start';\n const lineHeight = 1.25;\n const controlsPadding = 6;\n const controlsFontSize = 'inherit';\n // helps align label-first-line to controls center\n const labelOffset = Math.floor(controlsPadding / lineHeight);\n return {\n listItem: {\n position: 'relative',\n userSelect: 'none',\n lineHeight: 0,\n outline: 'none',\n zIndex: ({ ghost }) => (ghost ? 5 : 'auto'),\n '&:active, &:focus, &:focus-within': {\n zIndex: 5,\n },\n '&:active $content, &:focus-within $content': {\n outlineWidth: 1,\n outlineStyle: ({ ghost }) => (ghost ? 'dashed' : 'solid'),\n outlineColor: listItemBorderActive,\n },\n '&:active $content, &:focus $content': {\n outlineWidth: 3,\n outlineStyle: ({ ghost }) => (ghost ? 'dashed' : 'solid'),\n outlineColor: listItemBorderActive,\n },\n },\n rankItemContainer: {\n display: 'flex',\n fontSize: theme.questionBody.fontSize,\n lineHeight,\n color: theme.questionBody.color,\n },\n orderIndex: {\n padding: '16px 5px 10px 5px',\n visibility: ({ ranksVisible }) => (ranksVisible ? 'visible' : 'hidden'),\n minWidth: '45px',\n display: 'flex',\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: flexStart,\n alignItems: flexStart,\n gap: 10,\n flex: '1 auto',\n borderWidth: 1,\n borderRadius: 4,\n borderStyle: 'solid',\n borderColor: 'transparent',\n background: isDark(theme.questionBody.color || '#fff')\n ? listItemBackground\n : 'rgba(255, 255, 255, 0.15)',\n padding: 10,\n cursor: 'move',\n [breakpointSmMin]: {\n flexWrap: 'wrap',\n },\n },\n dragHandle: {\n outline: 'none',\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n fontSize: controlsFontSize,\n lineHeight: 0,\n padding: controlsPadding,\n touchAction: 'none',\n '&::after': {\n content: \"''\",\n position: 'absolute',\n display: 'block',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n },\n label: {\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n display: 'flex',\n justifyContent: flexStart,\n alignItems: flexStart,\n flex: '1 auto',\n paddingTop: labelOffset,\n '& iframe': {\n position: 'relative',\n },\n overflowWrap: 'anywhere',\n [breakpointSmMin]: {\n order: 3,\n paddingLeft: '6px',\n width: '100%',\n },\n },\n controls: {\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10,\n fontSize: controlsFontSize,\n [breakpointSmMin]: {\n order: 2,\n flex: '1 1 auto',\n justifyContent: 'flex-end',\n },\n },\n };\n});\n\nfunction RankingRow({ className, dragListeners, dragRef, ghost, id, position, label, controls, onFocus, ranksVisible = true, ...props }, ref) {\n const { listItem, rankItemContainer, orderIndex, content: contentContainer, dragHandle: dragHandleContainer, label: labelContainer, controls: controlsContainer, } = useStyles$5({ ghost, ranksVisible });\n const labelId = `${id}-label`;\n const index = position ?? -1;\n const indexLabel = index >= 0 ? index + 1 : '';\n return (React__default.createElement(\"li\", { id: id, className: classNames('rankItem', listItem, className), ref: ref, ...props },\n React__default.createElement(\"div\", { className: rankItemContainer },\n React__default.createElement(\"span\", { className: classNames('OrderIndex', orderIndex), \"data-testid\": \"RankingRow__OrderIndex\", \"aria-hidden\": true }, indexLabel),\n React__default.createElement(\"div\", { className: classNames('rankItem__content', contentContainer) },\n React__default.createElement(\"div\", { \"data-testid\": \"RankingRow__DragHandle\", className: classNames('rankItem__dragHandle', dragHandleContainer), onFocus: onFocus, \"data-pos\": index, ref: dragRef, ...dragListeners },\n React__default.createElement(DragHandleIcon$1, { className: \"rankItem__dragHandleIcon\" })),\n React__default.createElement(\"div\", { \"data-testid\": \"RankingRow__Label\", className: classNames('rankItem__label', labelContainer) },\n React__default.createElement(RichText, { id: labelId, element: \"div\", className: \"rankItem__richText\", translate: \"no\", text: label })),\n React__default.createElement(\"div\", { \"data-no-dnd\": \"true\", \"data-testid\": \"RankingRow__Controls\", className: classNames('rankItem__controls', controlsContainer) }, controls)))));\n}\nvar RankingRow$1 = forwardRef(RankingRow);\n\n/**\n * OrderButton\n *\n * @todo: replace instances with reusable `Button` component that satisfies\n * all scenarios, variants and themes.\n */\nconst useStyles$4 = createUseStyles((theme) => ({\n orderButton: {\n color: '#000',\n backgroundColor: '#fff',\n fontSize: 'inherit',\n border: [1, 'solid', '#000'],\n borderRadius: 4,\n padding: [6, 6],\n maxWidth: '100%',\n cursor: 'pointer',\n lineHeight: 0,\n outlineColor: theme.primaryAccentColor,\n '&[aria-disabled]': {\n backgroundColor: 'rgba(255,255,255,.5)',\n borderColor: 'rgba(0,0,0,.5)',\n pointerEvents: 'none',\n cursor: 'default',\n },\n '&[aria-disabled] > svg': {\n opacity: 0.5,\n cursor: 'default',\n },\n '&:focus, &:focus-visible': {\n borderColor: theme.primaryAccentColor,\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n },\n '@media (hover: hover) and (pointer: fine)': {\n orderButton: {\n '&:hover': {\n borderColor: theme.primaryAccentColor,\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n },\n },\n srOnly: visuallyHidden,\n}));\nfunction OrderButton({ icon, children: label, className, disabled, ...props }) {\n const { orderButton, srOnly } = useStyles$4();\n return (React__default.createElement(\"button\", { type: \"button\", \"aria-disabled\": disabled || undefined, className: classNames('order-button', orderButton, className), ...props },\n icon,\n React__default.createElement(\"span\", { className: srOnly }, label)));\n}\n\nconst useStyles$3 = createUseStyles({\n controlsContainer: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10,\n },\n applicableControl: {\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n },\n});\n\nconst COPY$2 = defineMessages({\n RANK_NA: {\n id: 'OrderControl.NA',\n defaultMessage: 'N/A',\n description: '[Type: label][Vis: high] - not applicable label',\n },\n ARIA_RANK_NA: {\n id: 'OrderControl.AriaNA',\n defaultMessage: 'Not Applicable',\n description: '[Type: label][Vis: high] - accessible not applicable label',\n },\n});\nconst RANK_DIRECTION_BACKWARD = -1;\nconst RANK_DIRECTION_FORWARD = 1;\nfunction OrderControl({ id, labels, position, showApplicability = true, applicable: defaultApplicable = true, className, onApplicableChange, onOrderUp, onOrderDown, disableOrderUp = false, disableOrderDown = false, ...props }) {\n const [applicable, setApplicable] = useState(defaultApplicable);\n const currentIndex = position ?? -1;\n const handleOrderUp = (_e) => {\n onOrderUp?.({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_BACKWARD,\n });\n };\n const handleOrderDown = (_e) => {\n onOrderDown?.({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_FORWARD,\n });\n };\n const handleApplicableChange = (e) => {\n const isApplicable = !e.target.checked;\n onApplicableChange?.({\n id,\n applicable: isApplicable,\n });\n setApplicable(isApplicable);\n };\n const applicableId = `${id}-applicable`;\n const { controlsContainer, applicableControl } = useStyles$3();\n return (React__default.createElement(\"div\", { id: id, className: classNames(controlsContainer, className), ...props },\n React__default.createElement(OrderButton, { disabled: disableOrderUp || !applicable, onClick: handleOrderUp, icon: React__default.createElement(CaretUpOutlineIcon, null) }, labels.orderUpLabel),\n React__default.createElement(OrderButton, { disabled: disableOrderDown || !applicable, onClick: handleOrderDown, icon: React__default.createElement(CaretDownOutlineIcon, null) }, labels.orderDownLabel),\n showApplicability && (React__default.createElement(\"label\", { className: classNames('order-na', applicableControl), htmlFor: applicableId, \"aria-label\": t(COPY$2.ARIA_RANK_NA) },\n React__default.createElement(CheckboxInput$1, { id: applicableId, checked: !applicable, onChange: handleApplicableChange }),\n React__default.createElement(T, { desc: COPY$2.RANK_NA })))));\n}\n\nconst useStyles$2 = createUseStyles({\n item: {},\n itemDisabled: {\n '& .rankItem__dragHandle::after': {\n cursor: 'default',\n },\n '& .rankItem__dragHandle, & .rankItem__label': {\n opacity: 0.5,\n },\n },\n});\n\nconst COPY$1 = defineMessages({\n ARIA_RANK_MOVE_UP: {\n id: 'RankingItem.AriaRankMoveUp',\n defaultMessage: 'Move up {label}',\n description: '[Type: button][Vis: high] - accessible rank move up label',\n },\n ARIA_RANK_MOVE_DOWN: {\n id: 'RankingItem.AriaRankMoveDown',\n defaultMessage: 'Move down {label}',\n description: '[Type: button][Vis: high] - accessible rank move down label',\n },\n});\nconst stripHTML = (str) => {\n const ref = document.createElement('div');\n ref.innerHTML = str;\n return ref.textContent || ref.innerText || '';\n};\nfunction RankingItem({ id, className, label, position: index, listLength, applicable, showApplicability, onApplicableChange, onOrderUp, onOrderDown, ranksVisible, ...props }) {\n const textOnlyLabel = stripHTML(label);\n const controlLabels = {\n orderUpLabel: t(COPY$1.ARIA_RANK_MOVE_UP, { label: textOnlyLabel }),\n orderDownLabel: t(COPY$1.ARIA_RANK_MOVE_DOWN, { label: textOnlyLabel }),\n };\n const { attributes, listeners, setNodeRef, transform, transition, isDragging, setActivatorNodeRef, } = useSortable({\n id,\n /*\n * role=listitem is forced to override DnD-kits use of role=button.\n * This re-instates proper a11y announcements of the role\n */\n attributes: { role: 'listitem', tabIndex: -1 },\n disabled: !applicable,\n data: {\n id,\n position: index,\n label,\n applicable,\n showApplicability,\n },\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n const handleOrderUp = (e) => {\n onOrderUp?.({ ...e, id });\n };\n const handleOrderDown = (e) => {\n onOrderDown?.({ ...e, id });\n };\n const handleApplicableChange = (e) => {\n onApplicableChange?.({ ...e, id });\n };\n const { item, itemDisabled } = useStyles$2({ applicable });\n return (React__default.createElement(RankingRow$1, { id: id, label: label, position: index, className: classNames(item, { [itemDisabled]: !applicable }, className), ref: setNodeRef, style: style, ghost: isDragging, ...attributes, dragListeners: listeners, dragRef: setActivatorNodeRef, ranksVisible: ranksVisible, controls: React__default.createElement(OrderControl, { id: `${id}-control`, position: index, applicable: applicable, showApplicability: !!showApplicability, onApplicableChange: handleApplicableChange, onOrderUp: handleOrderUp, onOrderDown: handleOrderDown, labels: controlLabels, disableOrderUp: index === 0, disableOrderDown: index === listLength - 1 }), ...props }));\n}\n\nconst useRankingIds = ({ rankings, choiceNotApplicable, }) => {\n return useMemo(() => {\n const order = rankings\n .filter((r) => !!r && r.visible)\n .sort((a, b) => Number(a.label) - Number(b.label))\n .map((r) => r.id);\n if (choiceNotApplicable) {\n order.push(choiceNotApplicable.id);\n }\n return order;\n }, [rankings, choiceNotApplicable]);\n};\nconst useRankingState = ({ choices, rankingIds, defaultResponses = [], choiceNotApplicable, }) => {\n const findResponseByChoiceId = (id) => defaultResponses.find((r) => r.id === id);\n const findPositionByRankId = (id) => rankingIds.findIndex((rid) => rid === id);\n return useState(() => {\n // Filter choices that exist and are visible, add rankable meta data\n return choices\n .filter((c) => !!c && c.visible)\n .map(({ id, label }, defaultIndex) => {\n const { value: rankId = rankingIds[defaultIndex], type } = findResponseByChoiceId(id) || {};\n const item = {\n id,\n label,\n type,\n value: rankId,\n applicable: rankId !== choiceNotApplicable?.id,\n index: findPositionByRankId(rankId),\n };\n return item;\n })\n .sort((a, b) => a.index - b.index);\n });\n};\n\n/* istanbul ignore file */\nfunction shouldHandleEvent(element) {\n let cur = element;\n while (cur) {\n if (cur.dataset && cur.dataset.noDnd) {\n return false;\n }\n cur = cur.parentElement;\n }\n return true;\n}\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter],\n};\nclass PointerSensor extends PointerSensor$1 {\n}\nPointerSensor.activators = [\n {\n eventName: 'onPointerDown',\n handler: ({ nativeEvent: event }, { onActivation }) => {\n if (!shouldHandleEvent(event.target)) {\n return false;\n }\n onActivation?.({ event });\n return true;\n },\n },\n];\nclass KeyboardSensor extends KeyboardSensor$1 {\n}\nKeyboardSensor.activators = [\n {\n eventName: 'onKeyDown',\n handler: ({ nativeEvent: event }, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {\n const { code } = event;\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n if ((activator && event.target !== activator) ||\n !shouldHandleEvent(event.target)) {\n return false;\n }\n event.preventDefault();\n onActivation?.({ event });\n return true;\n }\n return false;\n },\n },\n];\n\nconst useStyles$1 = createUseStyles({\n list: {\n '& > *': {\n WebkitUserSelect: 'none',\n WebkitTouchCallout: 'none',\n },\n },\n listItem: {\n marginBottom: 10,\n },\n dragOverlay: {\n opacity: 0.5,\n '& .rankItem__orderIndex, & .rankItem__controls': {\n opacity: 0,\n },\n },\n srOnly: { ...visuallyHidden },\n});\n\nconst COPY = defineMessages({\n ARIA_RANK_MOVED_UP: {\n id: 'Ranking.AriaRankMovedUp',\n defaultMessage: '{label} moved up to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved up label',\n },\n ARIA_RANK_MOVED_DOWN: {\n id: 'Ranking.AriaRankMovedDown',\n defaultMessage: '{label} moved down to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved down label',\n },\n ARIA_RANK_MOVED_TO_TOP: {\n id: 'Ranking.AriaRankAtTop',\n defaultMessage: '{label} moved to the top of the list',\n description: '[Type: button][Vis: high] - accessible ranking at top of list',\n },\n ARIA_RANK_MOVED_TO_BOTTOM: {\n id: 'Ranking.AriaRankAtBottom',\n defaultMessage: '{label} moved to the bottom of the list',\n description: '[Type: button][Vis: high] - accessible ranking at bottom of list',\n },\n});\n/** Turn off a11y announcements for Drag and Drop in the DnDContext - this is handled by the order buttons */\nconst emptyStringNoop = () => '';\nconst dndAnnouncements = {\n onDragStart: emptyStringNoop,\n onDragMove: emptyStringNoop,\n onDragOver: emptyStringNoop,\n onDragEnd: emptyStringNoop,\n onDragCancel: emptyStringNoop,\n};\nconst dndAccessibility = {\n announcements: dndAnnouncements,\n screenReaderInstructions: {\n draggable: '',\n },\n};\nfunction Ranking({ id: questionId, disabled: _dis, readOnly: _ro, choices = /* istanbul ignore next: cannot reach default branch */ [], rankings = /* istanbul ignore next: cannot reach default branch */ [], choiceNotApplicable, responses: defaultResponses = [], onChange, hideRanks = false, ...fieldProps }) {\n /**\n * @author [kmukasa@surveymonkey.com]\n * @description The id has been modified to work in __hybrid__ mode. The `id` needs to\n * be different from the question-field `id` normally created/used.\n * @see https://code.corp.surveymonkey.com/webplatform/smquestions/pull/1204\n * @todo remove prefix 'hybrid-' when no longer required\n */\n const fieldId = `hybrid-${questionId}`;\n /**\n * @description `createLegendId` is used internally by [QuestionFieldLayoutTemplate](https://code.corp.surveymonkey.com/webplatform/smquestions/blob/master/packages/question-ui/src/capabilities/respondent-survey/components/QuestionFieldLayoutTemplate/QuestionFieldLayoutTemplate.tsx#L157)\n * to create an id. This `id` cannot be passed down via props. It is recreated here for `ARIA` referencing.\n */\n const questionTitleId = createLegendId(fieldId);\n const errorId = createErrorId(questionId);\n const sensors = useSensors(useSensor(PointerSensor));\n // toggles display of N/A choice\n const showApplicability = choiceNotApplicable !== undefined;\n // create ranking order (N/A choice is last)\n const rankingIds = useRankingIds({ rankings, choiceNotApplicable });\n const [, setActiveId] = useState(null);\n const [activeItem, setActiveItem] = useState(null);\n // for Aria-Live\n const [statusMessage, announceStatus] = useState('');\n const setAnnoucement = (str) => {\n setTimeout(() => announceStatus(''), 5000);\n announceStatus(str);\n };\n const [ranksVisible, setRanksVisible] = useState(hideRanks);\n const [listItems, setListItems] = useRankingState({\n choices,\n defaultResponses,\n choiceNotApplicable,\n rankingIds,\n });\n /* istanbul ignore next */\n const getItemIndices = (items, fromId, toId) => {\n const fromIndex = items.findIndex((item) => item.id === fromId);\n const toIndex = items.findIndex((item) => item.id === toId);\n return { fromIndex, toIndex };\n };\n /* istanbul ignore next */\n const moveById = (items, fromId, toId) => {\n const { fromIndex, toIndex } = getItemIndices(items, fromId, toId);\n return arrayMove(items, fromIndex, toIndex);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const moveItem = (fromId, toId) => {\n setListItems((items) => moveById(items, fromId, toId));\n };\n const { list, listItem, dragOverlay, srOnly } = useStyles$1();\n const orderedListProps = {\n /**\n * role is forced for a11y, so SR's will announce properly,\n * this is somehow lost or manipulated, possibly, by DnD-Kit\n */\n role: 'list',\n className: list,\n 'aria-labelledby': questionTitleId,\n };\n const updateRankingOrder = (current, next) => {\n const nextValue = Math.max(0, Math.min(next, listItems.length - 1));\n const responses = arrayMove(listItems, current, nextValue).map((response, index) => ({\n ...response,\n index,\n value: rankingIds[index],\n }));\n setRanksVisible(true);\n setListItems(responses);\n onChange?.(responses);\n };\n const announcePosition = (current, next, label) => {\n const nextPos = Math.max(0, Math.min(next, listItems.length - 1));\n if (current === nextPos)\n return; // no change in position\n const position = nextPos + 1; // announce non-zero base number\n let message = COPY.ARIA_RANK_MOVED_DOWN;\n if (nextPos <= 0) {\n // moved to top\n message = COPY.ARIA_RANK_MOVED_TO_TOP;\n }\n else if (nextPos < current) {\n // moved up\n message = COPY.ARIA_RANK_MOVED_UP;\n }\n else if (nextPos >= listItems.length - 1) {\n // moved to bottom\n message = COPY.ARIA_RANK_MOVED_TO_BOTTOM;\n }\n setAnnoucement(t(message, { label, position }));\n };\n const handleOrderUp = (e) => {\n const { id: rowId, value: currentPosition, direction = /* istanbul ignore next: cannot reach default branch */ 0, } = e;\n const item = listItems.find((li) => li.id === rowId);\n const nextPosition = currentPosition + direction;\n updateRankingOrder(currentPosition, nextPosition);\n announcePosition(currentPosition, nextPosition, item.label);\n };\n const handleOrderDown = (e) => {\n const { id: rowId, value: currentPosition, direction = /* istanbul ignore next: cannot reach default branch */ 0, } = e;\n const item = listItems.find((li) => li.id === rowId);\n const nextPosition = currentPosition + direction;\n updateRankingOrder(currentPosition, nextPosition);\n announcePosition(currentPosition, nextPosition, item.label);\n };\n const handleApplicableChange = (e) => {\n /* istanbul ignore else: should never branch */\n if (showApplicability) {\n const { id, applicable } = e;\n const responses = listItems.map((item) => ({\n ...item,\n ...(item.id === id ? { applicable } : {}),\n ...(item.id === id && !applicable\n ? { value: choiceNotApplicable.id }\n : {}),\n }));\n setListItems(responses);\n onChange?.(responses);\n }\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const handleDragStart = ({ active }) => {\n setActiveId(active.id);\n setActiveItem(active);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const handleDragEnd = ({ active, over }) => {\n if (active.id !== over?.id) {\n moveItem(active.id, over?.id);\n }\n setRanksVisible(true);\n setActiveId(null);\n setActiveItem(null);\n };\n return (React__default.createElement(QuestionField, { id: `hybrid-${questionId}`, errorId: errorId, \"data-testid\": \"RankingQuestionType\", ...fieldProps },\n React__default.createElement(\"div\", { role: \"status\", \"aria-live\": \"assertive\", \"aria-atomic\": \"true\", className: srOnly }, statusMessage),\n React__default.createElement(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragStart: handleDragStart, onDragEnd: handleDragEnd, accessibility: dndAccessibility },\n React__default.createElement(SortableContext, { items: listItems, strategy: verticalListSortingStrategy },\n React__default.createElement(\"ol\", { ...orderedListProps }, listItems.map(({ id: itemId, label, applicable }, index) => {\n return (React__default.createElement(RankingItem, { id: itemId, key: itemId, label: label, position: index, listLength: listItems.length, applicable: applicable, showApplicability: !!showApplicability, onApplicableChange: handleApplicableChange, onOrderUp: handleOrderUp, onOrderDown: handleOrderDown, className: listItem, ranksVisible: ranksVisible }));\n })),\n React__default.createElement(DragOverlay, null, \n /* istanbul ignore next: cannot test drag-and-drop logic */ activeItem ? (React__default.createElement(RankingRow$1, { id: activeItem.id, className: dragOverlay, label: activeItem.data.current?.label, position: activeItem.data.current?.index, ranksVisible: ranksVisible })) : null)))));\n}\n\nfunction SingleTextbox({ id: questionId, required, disabled, readOnly, responses: defaultResponses = [], onChange, size, ...fieldProps }) {\n const { error, errorId = createErrorId(questionId), title: { id: titleId }, } = fieldProps;\n const defaultValue = useMemo(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const handleChange = (e) => {\n const responses = e.target.value\n ? [{ id: questionId, value: e.target.value }]\n : [];\n onChange?.(responses);\n };\n return (React__default.createElement(\"div\", null,\n React__default.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"SingleTextboxQuestionType\", ...fieldProps },\n React__default.createElement(TextInput$1, { name: questionId, defaultValue: defaultValue, required: required, disabled: disabled, readOnly: readOnly, size: size, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, \"aria-labelledby\": titleId, maxLength: TEXT_INPUT_MAX_CHARS }))));\n}\nvar SingleTextbox$1 = withErrorBoundary(SingleTextbox);\n\nconst useStyles = createUseStyles((theme) => {\n return {\n textPresentationalStyles: {\n fontFamily: theme.questionTitle.fontFamily ?? 'inherit',\n fontSize: theme.questionTitle.fontSize ?? '16px',\n fontWeight: theme.questionTitle.fontWeight ?? (theme.isAccessible ? 500 : 300),\n textDecoration: theme.questionTitle.textDecoration ?? 'inherit',\n fontStyle: theme.questionTitle.fontStyle ?? 'inherit',\n color: theme.questionTitle.color ?? 'inherit',\n },\n buttonStyles: {\n marginTop: '20px',\n },\n };\n});\n\nfunction TextPresentational({ text, padding = { top: 0, bottom: 0, left: 0, right: 0 }, id, okButton = { visible: false }, }) {\n const richTextId = `text-presentational-${id}`;\n const { textPresentationalStyles, buttonStyles } = useStyles();\n const { visible: showButton, ...buttonProps } = okButton;\n return (React__default.createElement(QuestionSpacing, { padding: padding, \"data-testid\": \"TextPresentational\" },\n React__default.createElement(RichText, { id: richTextId, element: \"div\", text: text, className: textPresentationalStyles }),\n showButton && React__default.createElement(Button, { ...buttonProps, className: buttonStyles })));\n}\nvar TextPresentational$1 = withErrorBoundary(TextPresentational);\n\nexport { BestWorst$1 as BestWorst, CaretDownIcon, CaretDownOutlineIcon, Checkbox$1 as Checkbox, CommentBox$1 as CommentBox, DateTime$1 as DateTime, Dropdown$1 as Dropdown, ImageChoice$1 as ImageChoice, ImagePresentational$1 as ImagePresentational, MatrixDropdown, MatrixRating, MultipleChoice, MultipleTextbox, NativeSelect, SelectAnswerOption as NativeSelectOption, Nps, Ranking, SingleTextbox$1 as SingleTextbox, TextPresentational$1 as TextPresentational };\n//# sourceMappingURL=respondent-survey.js.map\n","\"use strict\";\n(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[610],{\n\n/***/ 4481:\n/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$0\": function() { return /* binding */ Nps; },\n/* harmony export */ \"Fy\": function() { return /* binding */ TextPresentational$1; },\n/* harmony export */ \"Lt\": function() { return /* binding */ Dropdown$1; },\n/* harmony export */ \"Nw\": function() { return /* binding */ MultipleTextbox; },\n/* harmony export */ \"Um\": function() { return /* binding */ MatrixDropdown; },\n/* harmony export */ \"XZ\": function() { return /* binding */ Checkbox$1; },\n/* harmony export */ \"_\": function() { return /* binding */ SingleTextbox$1; },\n/* harmony export */ \"mZ\": function() { return /* binding */ MultipleChoice; },\n/* harmony export */ \"nB\": function() { return /* binding */ ImagePresentational$1; },\n/* harmony export */ \"ou\": function() { return /* binding */ DateTime$1; },\n/* harmony export */ \"q5\": function() { return /* binding */ CommentBox$1; },\n/* harmony export */ \"sU\": function() { return /* binding */ MatrixRating; },\n/* harmony export */ \"tE\": function() { return /* binding */ CaretDownOutlineIcon; },\n/* harmony export */ \"xL\": function() { return /* binding */ ImageChoice$1; }\n/* harmony export */ });\n/* unused harmony exports BestWorst, CaretDownIcon, NativeSelect, NativeSelectOption, Ranking */\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3534);\n/* harmony import */ var react_jss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(389);\n/* harmony import */ var react_jss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1928);\n/* harmony import */ var _sm_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7351);\n/* harmony import */ var _wds_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5420);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3935);\n/* harmony import */ var _sm_intl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2497);\n/* harmony import */ var _sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3918);\n/* harmony import */ var _theme_22bba55b_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6889);\n/* harmony import */ var _sm_webassets_SurveyTheme_isDark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2561);\n\n\n\n\n\n\n\n\n\n\n\nconst useStyles$X = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n rowStyles: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n});\n\nfunction Row({ id, className, children, ...props }) {\n const { rowStyles } = useStyles$X();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { id: id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(rowStyles, className), ...props }, children));\n}\n\nconst useStyles$W = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n tooltip: {\n 'span[data-tooltip] &': {\n display: 'none',\n },\n [`@media (min-width: ${theme.breakpoints?.md.min ?? '769px'})`]: {\n 'span[data-tooltip]:hover &, span[data-tooltip]:focus &': {\n display: 'inline-block',\n },\n },\n position: 'absolute',\n left: ({ center }) => center,\n bottom: 20,\n width: 275,\n transform: 'translate(-50%, -5px)',\n textAlign: 'center',\n zIndex: 12,\n fontSize: 13,\n '&:after': {\n position: 'absolute',\n bottom: -4,\n left: '50%',\n width: 10,\n height: 10,\n backgroundColor: 'white',\n content: '\"\"',\n marginLeft: -5,\n transform: 'rotate(45deg)',\n boxShadow: [[3, 5, 5, 'rgb(0 0 0 / 0.07)']],\n zIndex: 13,\n },\n },\n tooltipBody: {\n display: 'inline-block',\n maxWidth: 275,\n color: 'black',\n fontWeight: 300,\n fontFamily: theme.fontFamily,\n fontStyle: 'normal',\n boxShadow: [[0, 2, 10, 0, 'rgb(0 0 0 / 0.14)']],\n background: 'white',\n padding: [[12, 16]],\n lineHeight: 1.4,\n borderRadius: 2,\n textAlign: 'left',\n },\n}));\n\nconst defaultSelectors = [\n 'a[href]',\n 'button',\n 'textarea',\n 'input:not([type=\"hidden\"])',\n 'select',\n 'details',\n '[tabindex]:not([tabindex=\"-1\"])',\n];\nconst useFocusTrap = ({ selectors = defaultSelectors, } = {}) => {\n const focusRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const [focusableEls, setEls] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (focusRef.current) {\n const els = Array.from(focusRef.current.querySelectorAll(selectors.join(',')));\n setEls(els);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusRef]);\n function handleFocus(e) {\n if (focusRef.current) {\n const focusableElements = focusableEls;\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n else if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n const handleKeyDown = (e) => {\n if (e.key === 'Tab') {\n handleFocus(e);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n });\n return focusRef;\n};\n\nconst useStyles$V = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n modalOverlay: {\n zIndex: 999,\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: 'rgba(0,0,0,0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n modal: {\n position: 'relative',\n width: '85vw',\n minHeight: '20vw',\n marginBottom: 20,\n background: 'white',\n borderRadius: 2,\n },\n closeBtn: {\n position: 'absolute',\n cursor: 'pointer',\n background: 'transparent',\n right: 0,\n border: 0,\n padding: 8,\n marginTop: 0,\n color: 'black',\n zIndex: 105,\n },\n tooltipText: {\n color: theme.questionBody?.color || '#333E48',\n fontFamily: theme.fontFamily,\n fontSize: 13,\n fontWeight: 400,\n lineHeight: '1.4',\n padding: [28, 12, 16],\n },\n}));\n\nconst COPY$e = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n CLOSE_MODAL: {\n id: 'Modal.CloseModal',\n defaultMessage: 'Close tooltip',\n description: '[Type: label][Vis: Med] - close button text',\n },\n});\nfunction Modal({ tooltip, closeModal }) {\n const { modalOverlay, closeBtn, modal, tooltipText } = useStyles$V();\n const closeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const tooltipId = (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)('tooltip-modal');\n const focusRef = useFocusTrap();\n const handleClick = (e) => {\n // click on button or overlay should close modal\n e.stopPropagation();\n if (e.currentTarget === e.target) {\n closeModal();\n }\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n // listen for ESC to close modal\n const handleKeydown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n closeModal();\n }\n };\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [closeModal]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n closeRef.current?.focus();\n }, []);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: modalOverlay, onClick: handleClick, \"aria-hidden\": \"true\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { ref: focusRef, className: modal, role: \"dialog\", \"aria-modal\": \"true\", \"aria-describedby\": tooltipId },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { type: \"button\", className: closeBtn, ref: closeRef, onClick: handleClick, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$e.CLOSE_MODAL) }, \"\\u00D7\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"p\", { id: tooltipId, className: tooltipText }, tooltip))));\n}\n\n/** Displays a tooltip on hover for large screens and a modal on click for small screens */\nconst Tooltip = ({ container, className, id = '' }) => {\n /** container center position to display tooltip */\n const center = container.offsetWidth / 2;\n const text = container.getAttribute('data-tooltip') ?? '';\n const theme = (0,react_jss__WEBPACK_IMPORTED_MODULE_8__/* .useTheme */ .Fg)();\n const { tooltip, tooltipBody } = useStyles$W({ center });\n const [showModal, setShowModal] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const [mode, setMode] = react__WEBPACK_IMPORTED_MODULE_0__.useState('TOOLTIP');\n const closeModal = () => {\n setShowModal(false);\n container.focus();\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n container.setAttribute('role', 'tooltip');\n // make tooltip anchor focusable\n if (!container.hasAttribute('tabIndex')) {\n container.setAttribute('tabIndex', '0');\n }\n // opens modal if matches small screen breakpoint\n const openModal = () => {\n const mql = window.matchMedia(`(max-width: ${theme?.breakpoints?.md.min ?? '769px'})`);\n if (mql.matches) {\n setMode('MODAL');\n setShowModal(true);\n }\n else {\n setMode('TOOLTIP');\n }\n };\n const handleClick = () => {\n openModal();\n };\n const handleKeydown = (e) => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n openModal();\n }\n };\n // listen for click, ENTER or SPACE to open modal\n container.addEventListener('click', handleClick);\n container.addEventListener('keydown', handleKeydown);\n return () => {\n container.removeEventListener('click', handleClick);\n container.removeEventListener('keydown', handleKeydown);\n };\n }, [container, theme]);\n const modalEl = showModal ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Modal, { tooltip: text, closeModal: closeModal })) : null;\n const tooltipEl = (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(tooltip, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { id: id, className: tooltipBody, \"aria-hidden\": \"true\" }, text)));\n const child = mode === 'MODAL' ? modalEl : tooltipEl;\n const containerEl = mode === 'MODAL' ? document.body : container;\n return react_dom__WEBPACK_IMPORTED_MODULE_4__.createPortal(child, containerEl);\n};\n\nconst listSpacing = {\n margin: [16, 0],\n padding: [0, 0, 0, 40],\n};\nconst mediaReset = {\n border: 0,\n maxWidth: '100%',\n};\nconst useStyles$U = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n richTextContent: {\n // Typography\n '& a': {\n // Links are not themed by default. Users must select a link color in the editor\n color: 'blue',\n textDecoration: 'underline',\n '&:hover': {\n cursor: 'pointer',\n },\n '&:focus': {\n outline: 'currentColor auto 1px',\n },\n },\n '& ol': {\n ...listSpacing,\n listStyleType: 'decimal',\n },\n '& ul': {\n ...listSpacing,\n listStyle: 'disc outside none',\n '& ul li': {\n listStyle: 'circle',\n },\n },\n '& p': {\n margin: [13, 0],\n },\n '& b': {\n fontWeight: 'bold',\n },\n '& strong': {\n fontWeight: 'bold',\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& i': {\n fontStyle: 'italic',\n },\n '& big': {\n fontSize: 'larger',\n },\n '& small': {\n fontSize: 'smaller',\n },\n '& sup': {\n fontSize: '75%',\n lineHeight: 0,\n position: 'relative',\n top: '-0.5em',\n verticalAlign: 'baseline',\n },\n // Media embeds\n '& iframe': mediaReset,\n '& img': {\n ...mediaReset,\n height: 'auto',\n '-ms-interpolation-mode': 'bicubic',\n },\n '& span[data-tooltip]': {\n position: 'relative',\n display: 'inline',\n borderBottom: [[1, 'dashed']],\n textDecoration: 'inherit',\n cursor: 'pointer',\n },\n },\n});\n\n// Support iframe video embeds and their matching attributes\nconst sanitizeOptions = {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: [\n 'target',\n 'allow',\n 'allowfullscreen',\n 'frameborder',\n 'sandbox',\n 'scrolling',\n ],\n};\nfunction RichText({ id: elementId, element: Element = 'div', text, className, ...containerProps }) {\n const { richTextContent } = useStyles$U();\n const [tooltipNodes, setTooltipNodes] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]);\n const tooltipRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (tooltipRef?.current) {\n const el = tooltipRef?.current;\n setTooltipNodes(Array.from(el.querySelectorAll('[data-tooltip]')));\n }\n }, []);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Element, { id: elementId, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(richTextContent, className), dangerouslySetInnerHTML: {\n __html: (0,_sm_utils__WEBPACK_IMPORTED_MODULE_2__.sanitizeString)(text, sanitizeOptions),\n }, ref: tooltipRef, translate: \"no\", ...containerProps }),\n tooltipNodes.map((container) => {\n const id = (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)('rich-text-tooltip');\n container.setAttribute('aria-describedby', id);\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Tooltip, { key: id, container: container, id: id });\n })));\n}\n\nconst useStyles$T = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n wdsIcons: ({ color, size }) => {\n const fontSize = size\n ? { fontSize: theme.iconSize[size] }\n : { fontSize: 'inherit' };\n const chosenColor = \n // @ts-expect-error Fallback styles are acceptable\n theme.palette?.text[color] ||\n theme.palette?.[color]?.main ||\n 'currentColor';\n return {\n ...fontSize,\n width: '1em',\n height: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n fill: chosenColor,\n };\n },\n}));\n\n// https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\nconst getDisplayName = (Component) => Component.displayName || Component.name || 'Component';\nfunction withIcon(Component) {\n function WithIcon({ color, title, size, ...rest }) {\n const classes = useStyles$T({ color, size });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", { className: classes.wdsIcons, viewBox: \"0 0 16 16\", preserveAspectRatio: \"xMidYMid\", \"aria-label\": title, role: title ? 'img' : 'presentation', ...rest },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, null)));\n }\n WithIcon.displayName = `WithIcon(${getDisplayName(Component)})`;\n WithIcon.getOriginalComponent = () => Component;\n return WithIcon;\n}\n\nconst useSurveyIconStyles = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n svgContainer: {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n },\n});\n\nlet instance = 0;\nfunction withSvgIcon(Component, displayName = 'SvgElement') {\n function SvgIcon({ id, 'aria-labelledby': ariaLabelledBy, title, viewBox = '0 0 16 16', className, ...props }) {\n instance += 1;\n const styles = useSurveyIconStyles();\n const hasTitle = !!title && !ariaLabelledBy;\n const iconTitleId = id ? `${id}-icon-title` : `icon-title-${instance}`;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(styles.svgContainer, className), viewBox: viewBox, preserveAspectRatio: \"xMidYMid\", \"aria-hidden\": hasTitle ? undefined : true, \"aria-labelledby\": hasTitle ? iconTitleId : ariaLabelledBy, role: hasTitle ? 'img' : undefined, focusable: \"false\", ...props, \"data-testid\": displayName },\n hasTitle && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", { id: iconTitleId }, title),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, null)));\n }\n SvgIcon.displayName = displayName;\n return SvgIcon;\n}\n\nfunction DocumentXIconPath() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m5.94.005 8.012.012C14.53.018 15 .487 15 1.067V14.95c0 .58-.47 1.05-1.05 1.05H2.05C1.47 16 1 15.53 1 14.95V4.94L5.94.004zM7 1.505V4.95c0 .541-.41.987-.936 1.044L5.95 6H2.5v8.5h11V1.514L7 1.505zM6.557 7.53 8 8.973 9.443 7.53a.765.765 0 0 1 1.083 1.082l-1.444 1.443 1.444 1.444a.765.765 0 0 1-1.083 1.082L8 11.138 6.557 12.58A.765.765 0 1 1 5.474 11.5l1.444-1.444-1.444-1.443A.765.765 0 1 1 6.557 7.53zM5.5 2.563 3.561 4.5H5.5V2.562z\" }));\n}\nvar IconDocumentX = withIcon(DocumentXIconPath);\n\nconst useStyles$S = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n fallbackComponent: {\n fontFamily: theme.questionBody?.fontFamily ?? {},\n color: theme.questionColor,\n border: `1px solid ${theme.questionColor}`,\n borderRadius: '5px',\n width: '100%',\n height: '100%',\n minHeight: '220px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& svg': {\n fill: theme.questionColor,\n },\n },\n errorMessage: {\n marginLeft: `8px`, // equivalent to wrench theme.spacing[2]\n },\n };\n});\n\nconst COPY$d = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n ERROR: {\n id: 'FallbackComponent.ERROR',\n defaultMessage: 'Error loading question',\n description: '[Type: label][Vis: high] - error message indicating a question could not be loaded',\n },\n});\nfunction FallbackComponent() {\n const { fallbackComponent, errorMessage } = useStyles$S();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: fallbackComponent },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(IconDocumentX, null),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"p\", { className: errorMessage }, (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$d.ERROR))));\n}\n\nconst withErrorBoundary = (Component) => {\n const displayName = Component.displayName || Component.name || 'Component';\n function ComponentWithErrorBoundary(props) {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.E, { FallbackComponent: FallbackComponent },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, { ...props })));\n }\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n return ComponentWithErrorBoundary;\n};\n\nconst createFieldId = (questionId) => `question-field-${questionId}`;\nconst createLegendId = (questionId) => `question-title-legend-${questionId}`;\nconst createErrorRowId = (questionId) => `error-row-${questionId}`;\nconst createErrorId = (questionId) => `${questionId}-validation-message`;\n\n/**\n * Hook to split question-choices by type and filter for visibility\n */\nfunction useQuestionChoices(choices = [], columns = []) {\n const options = choices.filter((c) => !!c && c.visible);\n const columnOptions = columns.filter((c) => !!c && c.visible);\n return {\n options,\n /** Standard column options (Matrix) */\n columnOptions,\n /** Standard answer options */\n sortableOptions: options.filter((c) => !c.type),\n /** None-Of-The-Above (NOTA) option */\n notaOption: options.find((c) => c.type === 'NOTA'),\n /** Other answer option */\n otherOption: options.find((c) => c.type === 'ANSWER'),\n /** Other comment option - One comment for the question */\n commentOption: options.find((c) => c.type === 'COMMENT'),\n /** Other comment option - One comment per row (e.g. for Matrix) */\n commentColumnOption: options.find((c) => c.type === 'COMMENT_COLUMN'),\n };\n}\n\nconst useStyles$R = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n button: {\n color: theme.nextButton.color,\n backgroundColor: theme.nextButton.backgroundColor,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: 15,\n border: [1, 'solid', 'transparent'],\n borderRadius: 2,\n padding: [1, 6],\n maxWidth: '100%',\n minWidth: 60,\n minHeight: 40,\n cursor: 'pointer',\n overflowWrap: 'break-word',\n transition: `all .2s linear`,\n '&:focus, &:hover': {\n outlineOffset: 5,\n outline: `1px solid ${theme.answerColor}`,\n // Safari seems to have an outline bug, may not render without boxshadow\n boxShadow: '0 0 4px transparent',\n },\n },\n };\n});\n\nconst COPY$c = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n OK_LABEL: {\n id: 'Button.OK_LABEL',\n defaultMessage: 'OK',\n description: '[Type: button][Vis: high] - question ok label',\n },\n});\n// This might need to be a prop later once confirmed\nconst MAX_LENGTH = 20;\nfunction Button({ text = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$c.OK_LABEL), type = 'button', className, ...props }) {\n const { button } = useStyles$R();\n const slicedText = text.length <= MAX_LENGTH ? text : text.slice(0, MAX_LENGTH);\n return (\n // eslint-disable-next-line react/button-has-type\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(button, className), type: type, ...props }, slicedText));\n}\n\n/*eslint spaced-comment: [\"error\", \"never\", { \"exceptions\": [\"NOSONAR\"] }] */\n/**\n * SSR Safe version of useLayoutEffect\n * @see https://code.corp.surveymonkey.com/webplatform/smweb/blob/master/apps/contentweb/src/app/pages/MRX/helpers/useIsomorphicLayoutEffect.js\n *\n * Note: `NOSONAR` is used to bypass a `minor:code-smell` error that states `createElement` is deprecated.\n * The eslint rule above disables the spaced comments to use NOSONAR as stated in the docs.\n */\nconst useSSRSafeLayoutEffect = typeof window !== 'undefined' &&\n typeof window?.document?.createElement !== 'undefined' //NOSONAR\n ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect\n : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\n/** Referentially stable empty function\n *\n * e.g. as default or placeholder */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst EmptyFn = () => { };\n\n/* eslint-disable no-param-reassign, no-plusplus */\n/**\n * @name EasingFunctions- Useful easing equations\n * @comment only considering the t value for the range [0, 1] => [0, 1]\n */\nconst easingFunctions = {\n /** @comment linear - no easing, no acceleration */\n linear: (t) => t,\n /** @comment easeInQuad - accelerating from zero velocity */\n easeInQuad: (t) => t * t,\n /** @comment easeOutQuad - decelerating to zero velocity */\n easeOutQuad: (t) => t * (2 - t),\n /** @comment easeInOutQuad - acceleration until halfway, then deceleration */\n easeInOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),\n /** @comment easeInCubic - accelerating from zero velocity */\n easeInCubic: (t) => t * t * t,\n /** @comment easeOutCubic - decelerating to zero velocity */\n easeOutCubic: (t) => --t * t * t + 1,\n /** @comment easeInOutCubic - acceleration until halfway, then deceleration */\n easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n /** @comment easeInQuart - accelerating from zero velocity */\n easeInQuart: (t) => t * t * t * t,\n /** @comment easeOutQuart - decelerating to zero velocity */\n easeOutQuart: (t) => 1 - --t * t * t * t,\n /** @comment easeInOutQuart - acceleration until halfway, then deceleration */\n easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,\n /** @comment easeInQuint - accelerating from zero velocity */\n easeInQuint: (t) => t * t * t * t * t,\n /** @comment easeOutQuint - decelerating to zero velocity */\n easeOutQuint: (t) => 1 + --t * t * t * t * t,\n /** @comment easeInOutQuint - acceleration until halfway, then deceleration */\n easeInOutQuint: (t) => t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t,\n};\n/**\n * Given a start/end point of a scroll and time elapsed, calculate the scroll position we should be at\n */\nfunction getValue(start, end, elapsed, duration, easingType = 'linear') {\n if (elapsed > duration) {\n return end;\n }\n const easing = typeof easingType === 'string' ? easingFunctions[easingType] : easingType;\n return start + (end - start) * easing(elapsed / duration);\n}\n/**\n * Smoothly animate between two values\n */\nfunction animate({ fromValue, toValue, onStart, onUpdate, onComplete, duration = 600, delay = 0, easingType = 'easeOutQuart', }) {\n const startTime = performance.now() + delay;\n const tick = () => {\n const elapsed = performance.now() - startTime;\n const time = getValue(fromValue, toValue, elapsed, duration, easingType);\n const callback = elapsed <= duration ? tick : onComplete ?? EmptyFn;\n const updateAnimation = () => {\n onUpdate(time, callback);\n };\n window.requestAnimationFrame(updateAnimation);\n };\n onStart?.();\n if (delay > 0) {\n setTimeout(() => {\n tick();\n }, delay);\n }\n else {\n tick();\n }\n}\n\nconst useStyles$Q = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n visuallyHidden: _wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .visuallyHidden */ .jy,\n});\nfunction VisuallyHidden$1({ children, element: Element, }) {\n const { visuallyHidden } = useStyles$Q();\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Element, { className: visuallyHidden }, children);\n}\n\nconst useStyles$P = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n paddingBox: ({ padding, width }) => {\n return {\n paddingTop: padding?.top || 0,\n paddingBottom: padding?.bottom || 0,\n paddingLeft: padding?.left || 0,\n paddingRight: padding?.right || 0,\n width: width\n ? `${width.width}${width.format === 'PERCENT' ? '%' : 'px'}`\n : '100%',\n maxWidth: '100%',\n };\n },\n});\n\nfunction QuestionSpacing({ padding, width, children, ...props }) {\n const { paddingBox } = useStyles$P({ padding, width });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: paddingBox, \"data-testid\": \"QuestionSpacing__paddingBox\", ...props }, children));\n}\n\n/**\n * Hook that calls the provided callback function when the ref element is blurred,\n * only if the next focus is outside the ref element\n *\n * @example\n * const ref = useRef(null);\n * useOnFocusLeave(ref, ()=> onLeaveQuestion());\n *
\n */\nfunction useOnFocusLeave(ref, focusCallback) {\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const ele = ref?.current;\n function handleFocus(e) {\n if (!ele?.contains(e.relatedTarget)) {\n focusCallback(ref);\n }\n }\n ele?.addEventListener('focusout', handleFocus);\n return () => {\n ele?.removeEventListener('focusout', handleFocus);\n };\n }, [ref, focusCallback]);\n}\n\nconst useStyles$O = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n footerRow: ({ hasFooterPadding }) => ({\n paddingTop: hasFooterPadding ? 20 : 0,\n }),\n containerStyles: {\n position: 'relative',\n transition: 'opacity 500ms ease-out',\n },\n errorRow: {\n overflow: 'hidden',\n },\n formReset: {\n border: 0,\n minWidth: 0,\n },\n headerRow: {\n marginBottom: 24,\n width: '100%',\n },\n});\n\nconst COPY$b = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n QUESTION_TITLE: {\n id: 'QuestionFieldLayoutTemplate.QUESTION_TITLE',\n defaultMessage: 'Question Title',\n description: '[Type: Label][Vis: low] - question landmark for screen readers only',\n },\n});\nfunction QuestionFieldLayoutTemplate({ footer, hasFooterPadding, children, clickShield, error, id, padding, width = { width: 100, format: 'PERCENT' }, title, onSubmit, \n// eslint-disable-next-line @typescript-eslint/no-empty-function\nonLeave = () => { }, ...props }) {\n const { footerRow, containerStyles, formReset, errorRow, headerRow, } = useStyles$O({\n hasFooterPadding,\n clickShield,\n });\n const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const errorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n /** Keep track of last error to enable error-hiding animation */\n const [lastShownError, setLastShownError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(error);\n const handleKeydown = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((event) => {\n if (event.key === 'Enter') {\n onSubmit?.();\n }\n }, [onSubmit]);\n /**\n * resolves double height animate issue with RAWR-1240\n */\n const isAnimating = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n useSSRSafeLayoutEffect(() => {\n const el = errorRef.current;\n if (!el || isAnimating.current) {\n return;\n }\n const hasError = !!error;\n const initialHeight = el.offsetHeight;\n el.style.height = 'auto'; // remove height to measure full size\n const { offsetHeight } = el;\n const fromValue = hasError ? 0 : offsetHeight;\n const toValue = hasError ? offsetHeight : 0;\n // don't animate if value is already correct (e.g. at initial load)\n if (initialHeight === toValue) {\n el.style.height = `${initialHeight}px`;\n return;\n }\n el.style.height = `${initialHeight}px`;\n animate({\n fromValue,\n toValue,\n duration: 300,\n delay: 200,\n onUpdate: (height, next) => {\n el.style.height = `${height}px`;\n next();\n },\n onStart: () => {\n isAnimating.current = true;\n },\n onComplete: () => {\n setLastShownError(error);\n isAnimating.current = false;\n },\n });\n }, [error]);\n const fieldsetRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n useOnFocusLeave(fieldsetRef, onLeave);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const { current: container } = containerRef;\n container?.addEventListener('keydown', handleKeydown);\n return () => {\n return container?.removeEventListener('keydown', handleKeydown);\n };\n }, [containerRef, handleKeydown]);\n /**\n * This id is queried in RespWeb to calculate the offset for scroll-to-error animations in classic mode\n * ref: https://code.corp.surveymonkey.com/webplatform/smweb/pull/10725\n */\n let errorRowId;\n /** used in RespWeb for OQAATView */\n let fieldId;\n /** used in RespWeb for OQAATView */\n let questionTitleId;\n if (id) {\n errorRowId = createErrorRowId(id);\n fieldId = createFieldId(id);\n questionTitleId = createLegendId(id);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { ref: containerRef, id: fieldId, ...props, className: containerStyles },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(VisuallyHidden$1, { element: \"div\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$b.QUESTION_TITLE })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionSpacing, { padding: padding, width: width },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { ref: errorRef, id: errorRowId, className: errorRow }, error || lastShownError),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"fieldset\", { ref: fieldsetRef, className: formReset },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"legend\", { id: questionTitleId, className: headerRow, tabIndex: -1 }, title),\n children),\n footer && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: footerRow }, footer))));\n}\n\n/**\n * Calculate the max number of children each column can be filled in the layout\n * @param columns number of columns\n * @param total total child count\n * @description Based on the current implementation in production (as of Jan 20, 2021),\n * - if columns = 1, the max number of children per column = total (render all children vertically)\n * - if columns > 1, the max number of children per column = (total / columns) + 1\n */\nconst calculateMaxNumOfChildrenPerColumn = (columns, total) => {\n if (columns === 1) {\n return total;\n }\n const childrenPerColumn = total / columns;\n if (childrenPerColumn % 1 === 0) {\n return childrenPerColumn;\n }\n return Math.floor(childrenPerColumn) + 1;\n};\n/**\n * Divide the children array into slices for rendering\n * @param childrenArr - children array\n * @param maxCellsPerCol - maximum number of children per slice\n * @param totalColumns - number of columns\n * @example\n * childrenArr = [option1, option2, option3, option4, option5, option6, option7]\n * childrenPerSlice = 2\n * totalColumns = 3\n * output: [[option1, option2, option3], [option4, option5], [option6, option7]]\n */\nconst sliceChildren = (childrenArr, maxCellsPerCol, totalColumns) => {\n let index = 0;\n const result = [];\n const partialColumnsCount = totalColumns * maxCellsPerCol - childrenArr.length;\n // Calculate the number of fullColumns, to conditionally push slice with the correct # of cells\n let fullColumnsCount = totalColumns - partialColumnsCount;\n while (index < childrenArr.length) {\n if (fullColumnsCount > 0) {\n result.push(childrenArr.slice(index, index + maxCellsPerCol));\n index += maxCellsPerCol;\n }\n else {\n result.push(childrenArr.slice(index, index + maxCellsPerCol - 1));\n index += maxCellsPerCol - 1;\n }\n fullColumnsCount -= 1;\n }\n return result;\n};\n\nconst useStyles$N = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n containerVertical: {\n display: 'initial',\n },\n containerHorizontal: {\n display: 'block',\n },\n /** shared between horizontal and vertical columns */\n column: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n },\n columnHorizontal: {},\n /** Horizontal Column that adjust width to content width */\n columnHorizontalAutoAdjust: {\n width: 'auto',\n },\n [`@media (min-width: ${theme.breakpoints.xs.min})`]: {\n containerVertical: {\n display: 'flex',\n },\n containerHorizontal: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n },\n [`@media only screen and (min-width: ${theme.breakpoints.lg.min})`]: {\n columnHorizontal: {\n width: '19%',\n },\n },\n [`@media (min-width: ${theme.breakpoints.sm.min}) and (max-width: ${theme.breakpoints.md.max})`]: {\n columnHorizontal: {\n width: '24%',\n },\n },\n [`@media only screen and (max-width: ${theme.breakpoints.xxs.max})`]: {\n columnHorizontal: {\n width: '100%',\n display: 'block',\n },\n columnHorizontalAutoAdjust: {\n width: '100%',\n display: 'block',\n },\n },\n answerLayoutCell: ({ gridCellMargin = '0' }) => ({\n margin: gridCellMargin,\n flex: [0, 0, 'auto'],\n wordBreak: 'normal',\n overflowWrap: 'anywhere',\n }),\n otherLayoutCell: ({ otherCellMargin = '0' }) => ({\n margin: otherCellMargin,\n }),\n}));\n\nfunction QuestionAnswerLayoutTemplate({ children, columns = 1, other, noneOfTheAbove, adjustToContent = false, gridCellMargin, otherCellMargin, }) {\n const { containerVertical, containerHorizontal, column, columnHorizontal, columnHorizontalAutoAdjust, answerLayoutCell, otherLayoutCell, } = useStyles$N({\n columns,\n adjustToContent,\n gridCellMargin,\n otherCellMargin,\n });\n const isHorizontal = columns === 'horizontal';\n /* Based on the columns config, divide the question answers\n (children of this component) into column groups for rendering.\n \n The reason we need to do this is when there are multiple columns,\n the answers are listed vertically instead of horizontally.\n For example:\n If there are 3 answers and 2 columns,\n Then the ordering will be:\n Answer 1 Answer 3\n Answer 2\n \n NOT:\n Answer 1 Answer 2\n Answer 3\n * though `horizontal` uses this\n \n */\n const columnGroups = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n const totalChildren = react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children);\n const totalColumns = columns === 'horizontal' ? totalChildren : columns;\n const childrenArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n if (!other && !!noneOfTheAbove && columns !== 'horizontal') {\n childrenArray.push(noneOfTheAbove);\n }\n const answersPerColumn = columns === 'horizontal'\n ? 1\n : calculateMaxNumOfChildrenPerColumn(totalColumns, totalChildren + (!other && !!noneOfTheAbove ? 1 : 0));\n return sliceChildren(childrenArray, answersPerColumn, totalColumns);\n }, [children, columns, noneOfTheAbove, other]);\n const columnClassNames = isHorizontal\n ? [column, adjustToContent ? columnHorizontalAutoAdjust : columnHorizontal]\n : column;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: isHorizontal ? containerHorizontal : containerVertical }, columnGroups.map((col, columnIndex) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { key: `col-${columnIndex + 1}`, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(columnClassNames), \"data-testid\": \"answer-layout-column\" }, col.map((cell, cellIndex) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { key: `cell-${cellIndex + 1}`, \"data-testid\": \"answer-layout-cell\", className: answerLayoutCell }, cell))))))),\n other && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: otherLayoutCell }, other),\n ((other && noneOfTheAbove) || columns === 'horizontal') && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: otherLayoutCell, \"data-testid\": \"Other-NOTA\" }, noneOfTheAbove))));\n}\n\nfunction WarningIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"warning-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { className: \"background\", transform: \"translate(0 .49999)\", d: \"M8.49642,0.635797c.1494.086885.27371.210979.36079.360173L15.8621,12.9978c.2782.4766.1169,1.0883-.3602,1.3662-.1529.0891-.3267.136-.5037.136L1,14.5c-.552285,0-1-.4473-1-.999c0-.1766.046846-.35.135766-.5026L7.1291,0.996589c.27785-.476838.89002-.63837,1.36732-.360792Z\", clipRule: \"evenodd\", fill: \"currentColor\", fillRule: \"evenodd\", stroke: \"none\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { className: \"foreground\", transform: \"translate(.000815 .49999)\", d: \"M8,11.2546c-.3797,0-.69349.2794-.74315.6419L7.25,11.9973v.26l.00685.1008C7.30651,12.7206,7.6203,13,8,13s.69349-.2794.74315-.6419L8.75,12.2573v-.26l-.00685-.1008C8.69349,11.534,8.3797,11.2546,8,11.2546ZM8,4c-.3797,0-.69349.2794-.74315.6419L7.25,4.74268v4.54393l.00685.10078c.04966.3625.36345.64191.74315.64191s.69349-.27941.74315-.64191L8.75,9.28661v-4.54393L8.74315,4.6419C8.69349,4.2794,8.3797,4,8,4Z\", clipRule: \"evenodd\", fill: \"#fff\", fillRule: \"evenodd\", stroke: \"none\" })));\n}\nvar WarningIcon$1 = withSvgIcon(WarningIcon, 'WarningIcon');\n\nconst useStyles$M = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n icon: {\n color: '#F05B24',\n fontSize: theme.fontSize.body,\n alignSelf: 'flex-start',\n marginTop: 2,\n flexShrink: 0,\n },\n validationMessage: {\n fontFamily: theme.fontFamily,\n lineHeight: 1.5,\n color: '#333e48',\n fontWeight: 400,\n fontSize: 16,\n padding: theme.isDark ? 8 : [4, 0],\n backgroundColor: theme.isDark ? 'rgba(255, 255, 255, 0.9)' : '',\n borderRadius: 2,\n display: 'inline-flex',\n gap: 5,\n alignItems: 'center',\n marginBottom: 8,\n [`@media only screen and (max-width: ${theme.breakpoints?.xxs.max})`]: {\n width: '100%',\n padding: theme.isDark ? 4 : [4, 0],\n },\n },\n}));\n\nfunction ValidationMessage({ children, id, tag: Wrapper = 'span', ...props }) {\n const { icon, validationMessage } = useStyles$M();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Wrapper, { className: validationMessage, \"aria-live\": \"polite\", id: id, ...props },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(WarningIcon$1, { className: icon }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { translate: \"no\" }, children)));\n}\n\nconst useStyles$L = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily);\n return {\n inputArea: {\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontWeight: fontWeightOptions.medium,\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px',\n },\n lineHeight: '1.15em',\n padding: '6px 60px 6px 6px',\n maxWidth: '100%',\n [breakpointXsMin]: {\n // extra 66px to account for the padding\n width: ({ cols }) => `calc(${cols}ch + 66px)`,\n },\n width: '100%',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n verticalAlign: 'top',\n textSizeAdjust: 'auto',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5,\n },\n '&:disabled': {\n opacity: 0.4,\n },\n },\n };\n});\n\nfunction TextArea({ className, disabled = false, required = false, readOnly = false, cols = 50, ...props }, forwardedRef) {\n const { inputArea } = useStyles$L({ cols });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"textarea\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(inputArea, className), disabled: disabled, \"aria-disabled\": disabled, required: required, \"aria-required\": required, readOnly: readOnly, \"aria-readonly\": readOnly, spellCheck: true, ref: forwardedRef, ...props }));\n}\nvar TextArea$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(TextArea);\n\nconst useStyles$K = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily);\n return {\n inputField: {\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px',\n },\n fontWeight: fontWeightOptions.medium,\n lineHeight: '1.5em',\n height: ({ autoHeight }) => (autoHeight ? {} : '50px'),\n maxWidth: '100%',\n width: '100%',\n [breakpointXsMin]: {\n // extra 12px to account for the padding\n width: ({ size }) => `calc(${size}ch + 12px)`,\n },\n padding: '6px',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5,\n },\n '&:disabled': {\n opacity: 0.4,\n },\n },\n };\n});\n\nfunction TextInput({ className, autoHeight = false, size = 50, required = false, disabled = false, readOnly = false, onChange: handleChange, ...props }, forwardedRef) {\n const { inputField } = useStyles$K({\n autoHeight,\n size,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"text\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(inputField, className), disabled: disabled, \"aria-disabled\": disabled, required: required, \"aria-required\": required, readOnly: readOnly, \"aria-readonly\": readOnly, spellCheck: true, onChange: handleChange, ...props, ref: forwardedRef }));\n}\nvar TextInput$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(TextInput);\n\nconst useStyles$J = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n commentLabelText: {\n ...theme.questionBody,\n marginBottom: 5,\n lineHeight: 1.25,\n },\n commentLabel: {\n display: 'block',\n },\n };\n});\n\nfunction CommentChoice({ label, lineCount = 3, charCount = 50, onChange, className, ...props }) {\n const handleChange = (e) => {\n onChange?.(e);\n };\n const { commentLabel, commentLabelText } = useStyles$J();\n const multipleTextLines = lineCount > 1;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: className },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: props.id, className: commentLabel, tabIndex: -1 },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: commentLabelText }, label),\n multipleTextLines ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextArea$1, { onChange: handleChange, rows: lineCount, cols: charCount, ...props })) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { autoHeight: true, onChange: handleChange, size: charCount, ...props })))));\n}\n\nconst textReset = {\n margin: 0,\n};\nconst useStyles$I = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const { fontSize, ...questionTitleFormatting } = theme.questionTitle;\n const questionTitleFontSize = fontSize ?? {};\n return {\n addonContainer: {\n display: 'inline-block',\n margin: [0, 5],\n verticalAlign: 'text-bottom',\n },\n container: {\n position: 'relative',\n display: 'flex',\n },\n questionNumber: ({ isRTL }) => ({\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n flex: [0, 0],\n }),\n questionTitle: ({ useDefaultFrontSize }) => ({\n ...textReset,\n ...questionTitleFormatting,\n color: theme.questionTitle?.color || theme.questionColor,\n fontSize: useDefaultFrontSize && !theme.isAccessible\n ? theme.fontSize.body\n : questionTitleFontSize,\n lineHeight: 1.25,\n whiteSpace: 'normal',\n wordWrap: 'break-word',\n }),\n requiredAsterisk: ({ isRTL }) => ({\n display: 'inline-block',\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n }),\n richText: {\n flex: [1, 0],\n },\n };\n});\n\nfunction RespondentQuestionTitle({ element: Element = 'div', addon, heading, id, number, numbered, required, useDefaultFrontSize = false, ...props }) {\n const { isRTL } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .L10NContext */ .kR);\n const { addonContainer, container, questionNumber, questionTitle, requiredAsterisk, richText, } = useStyles$I({ useDefaultFrontSize, isRTL });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Element, { id: id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(container, questionTitle), translate: \"no\", ...props },\n required && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { \"aria-hidden\": true, className: requiredAsterisk }, \"*\")),\n numbered && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: questionNumber },\n number,\n \".\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: heading, className: richText }),\n addon && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: addonContainer }, addon)));\n}\n\n// default text to be added as a translation to a specific version of Button directly.\nconst defaultOKConfig = { text: 'OK', visible: false };\nfunction QuestionField({ id, title: titleProps, okButton: { visible: showButton, ...okButtonProps } = defaultOKConfig, error, errorId: errorIdProp, onLeave, padding = { top: 0, bottom: 0, left: 0, right: 0 }, width, children, ...props }) {\n const errorId = errorIdProp ?? createErrorId(id);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionFieldLayoutTemplate, { footer: showButton && react__WEBPACK_IMPORTED_MODULE_0__.createElement(Button, { type: \"button\", ...okButtonProps }), hasFooterPadding: true, clickShield: false, error: error && react__WEBPACK_IMPORTED_MODULE_0__.createElement(ValidationMessage, { id: errorId }, error), onLeave: onLeave, id: id, padding: padding, width: width, title: react__WEBPACK_IMPORTED_MODULE_0__.createElement(RespondentQuestionTitle, { ...titleProps }), ...props }, children));\n}\n\nfunction useInputStyles({ onChange, ...props }) {\n /** extract props without affecting passthrough */\n const { checked: isChecked, defaultChecked: isDefaultChecked, disabled: isDisabled, 'aria-disabled': isAriaDisabled, readOnly: isReadOnly, 'aria-readonly': isAriaReadOnly, } = props;\n /** configure style-props */\n const disabled = isDisabled || isAriaDisabled === 'true';\n const readOnly = isReadOnly || isAriaReadOnly === 'true';\n const [checked, setIsChecked] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(isDefaultChecked ?? isChecked ?? false);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n setIsChecked(isChecked ?? false);\n }, [isChecked]);\n /** handle change for checked style (controlled/uncontrolled) */\n const handleChange = (e) => {\n setIsChecked(e.target.checked);\n onChange?.(e);\n };\n const styleProps = {\n checked,\n disabled,\n readOnly,\n };\n const inputProps = { ...props, onChange: handleChange };\n return {\n styleProps,\n inputProps,\n };\n}\n\nconst radioGroupContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\n\nfunction useRadioGroup() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(radioGroupContext);\n}\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps, no-console */\nfunction throwControlChangeError(isControlled, controlled, name, state) {\n const conState = ['controlled', 'uncontrolled'];\n const stateStr = isControlled ? conState : [...conState].reverse();\n if (isControlled !== (controlled !== undefined)) {\n console.error([\n `@sm/question-ui: A component is changing the ${stateStr[0]} ${state} state of ${name} to be ${stateStr[1]}.`,\n 'Elements should not switch from uncontrolled to controlled (or vice versa).',\n `Decide between using a controlled or uncontrolled ${name} element for the lifetime of the component.`,\n \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\",\n 'More info: https://fb.me/react-controlled-components',\n ].join('\\n'));\n }\n}\nfunction throwDefaultStateError(isControlled, defaultValue, defaultProp, name, state) {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\n `@sm/question-ui: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. `,\n `To suppress this warning opt to use a controlled ${name}.`,\n ].join('\\n'));\n }\n}\nfunction useControlledState({ controlled, default: defaultProp, name, state = 'value', }) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const { current: isControlled } = react__WEBPACK_IMPORTED_MODULE_0__.useRef(controlled !== undefined);\n const [valueState, setValue] = react__WEBPACK_IMPORTED_MODULE_0__.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (false) {}\n const setValueIfUncontrolled = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((newValue) => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, [setValue]);\n return [value, setValueIfUncontrolled];\n}\n\nfunction setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n // eslint-disable-next-line no-param-reassign\n ref.current = value;\n }\n}\n/**\n * useForkRef\n * Joins refs together and returns a combination of the two as a new ref\n *\n * @param refA\n * @param refB\n */\nfunction useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n\n/**\n * SMQ Tier 3\n */\nfunction RadioGroup({ children, name: nameProp, value: valueProp, defaultValue, onChange, disabled = false, readOnly = false, ...divProps }) {\n const [value, setValueState] = useControlledState({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup',\n });\n const handleChange = (e) => {\n setValueState(e.value);\n onChange?.(e);\n };\n const name = nameProp;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(radioGroupContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n , { \n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value: { name, onChange: handleChange, value, disabled, readOnly } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { role: \"radiogroup\", ...divProps }, children)));\n}\n\nconst useStyles$H = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n inputContainer: {\n display: 'inline-flex',\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n width: '1em',\n minWidth: '1em',\n cursor: 'pointer',\n },\n input: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n opacity: 0.00001,\n zIndex: 1,\n margin: 0,\n cursor: ({ disabled, readOnly }) => disabled || readOnly ? 'default' : 'pointer',\n pointerEvents: ({ disabled, readOnly }) => disabled || readOnly ? 'none' : undefined,\n },\n controlIcon: {\n width: '100%',\n height: '100%',\n opacity: ({ checked }) => (checked ? 1 : 0),\n transition: 'opacity .2s linear',\n },\n});\n\nfunction BaseInput({ element: Element = 'span', className, icon, checked: checkedProp, defaultChecked, onClick, onChange, ...inputProps }, forwardedRef) {\n /** extract props without affecting passthrough */\n const { disabled: disabledProp, 'aria-disabled': ariaDisabledProp, readOnly: readOnlyProp, 'aria-readonly': ariaReadOnlyProp, } = inputProps;\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const [checked, setChecked] = useControlledState({\n controlled: checkedProp,\n default: defaultChecked,\n state: 'checked',\n name: 'BaseInput',\n });\n const handleChange = (e) => {\n if (e.nativeEvent.defaultPrevented) {\n return;\n }\n if (disabled || readOnly) {\n e.preventDefault();\n return;\n }\n const newChecked = e.target.checked;\n setChecked(newChecked);\n onChange?.(e);\n };\n const handleClick = (e) => {\n if (disabled || readOnly) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n };\n const { inputContainer, input, controlIcon } = useStyles$H({\n disabled,\n readOnly,\n checked,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Element, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(inputContainer, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { className: input, checked: checkedProp, defaultChecked: defaultChecked, onChange: handleChange, onClick: handleClick, ...inputProps, ref: forwardedRef }),\n react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(icon, {\n className: controlIcon,\n })));\n}\nvar BaseInput$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(BaseInput);\n\nfunction RadioIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"radio-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ellipse\", { fill: \"currentColor\", className: \"background\", transform: \"translate(8 8)\", rx: \"8\", ry: \"8\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { fill: \"#fff\", className: \"checkmark\", transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\", d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\" })));\n}\nvar RadioIcon$1 = withSvgIcon(RadioIcon, 'RadioIcon');\n\nconst useStyles$G = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n radioInput: {\n color: theme.isDark ? '#fff' : '#000',\n backgroundColor: ({ checked }) => {\n if (checked) {\n return theme.isDark ? '#fff' : '#000';\n }\n return '#fff';\n },\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '100%',\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff',\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff',\n },\n '& input': {\n cursor: 'pointer',\n },\n },\n}));\n\nfunction RadioInput({ className, ...props }, forwardedRef) {\n const { inputProps, styleProps } = useInputStyles(props);\n const styles = useStyles$G(styleProps);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(BaseInput$1, { type: \"radio\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(styles.radioInput, className), icon: react__WEBPACK_IMPORTED_MODULE_0__.createElement(RadioIcon$1, null), ref: forwardedRef, ...inputProps }));\n}\nvar RadioInput$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(RadioInput);\n\n// get the margin top by taking the font size and the line height and divide by 2 to get the margin top\nconst marginTopHelper$1 = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\nconst useStyles$F = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n controlLabel: ({ checked, disabled }) => {\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked\n ? theme.correctAnswerHighlightColor\n : 'transparent',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked\n ? fontWeightOptions.medium\n : theme.questionBody.fontWeight ?? fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor],\n },\n '&:focus-within': {\n background: theme.correctAnswerHighlightColor,\n },\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({ inputSize }) => inputSize ?? '1em',\n marginTop: marginTopHelper$1(theme.questionBody?.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8,\n },\n },\n}));\n\nfunction Radio({ children: label = '', className, onChange, checked: checkedProp, name: nameProp, disabled: disabledProp, readOnly: readOnlyProp, inputSize, ...props }, forwardedRef) {\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = radioGroup.value === props.value;\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n const disabled = radioGroup?.disabled ?? disabledProp;\n const readOnly = radioGroup?.readOnly ?? readOnlyProp;\n const handleChange = (e) => {\n const { id, checked: isChecked, value } = e.target;\n radioGroup?.onChange({ id, checked: isChecked, value });\n onChange?.({ id, checked: isChecked, value });\n };\n const { inputProps, styleProps } = useInputStyles({\n ...props,\n name,\n checked,\n disabled,\n readOnly,\n onChange: handleChange,\n });\n const { controlLabel, icon } = useStyles$F({ ...styleProps, inputSize });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { tabIndex: -1, htmlFor: props.id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(controlLabel, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RadioInput$1, { ...inputProps, ref: forwardedRef, className: icon }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: label })));\n}\nvar Radio$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(Radio);\n\nconst useStyles$E = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowStyles: {\n borderRadius: '3px',\n textAlign: 'center',\n cursor: 'pointer',\n alignItems: 'center',\n padding: '3px',\n ...theme.questionBody,\n fontSize: '20px',\n },\n rowLabel: {\n margin: [0, 2, 0, 2],\n fontSize: '18px',\n padding: '3px',\n width: ({ width = 60 }) => `${width}%`,\n /**\n * There is a known jss issue that results in media query\n * checks not occurring for all mapped elements, hence the use of !important\n * https://github.com/cssinjs/jss/issues/1320\n * https://github.com/cssinjs/jss/issues/1327#issuecomment-707967909\n * Because function rules/values have higher source order specificity (rendered after static rules),\n * we're using !important to override that.\n * */\n [breakpointSmMax]: {\n width: ['50%', '!important'],\n },\n },\n rowRadio: {\n justifyContent: 'center',\n gap: 0,\n padding: '3px',\n fontSize: 'inherit',\n width: ({ radioWidth = 20 }) => `${radioWidth}%`,\n [breakpointSmMax]: {\n width: ['25%', '!important'],\n },\n },\n };\n});\n\nfunction BestWorstRow({ id: rowId, label, value = null, columnIds = [], className, onChange, onClick, onKeyDown, width, ...props }) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [bestColId, worstColId] = columnIds;\n const bestRadioId = `${rowId}_${bestColId}`;\n const worstRadioId = `${rowId}_${worstColId}`;\n const labelId = `${rowId}_label`;\n const radioEvents = { onClick, onKeyDown };\n const radioWidth = width !== undefined ? (100 - width) / 2 : DEFAULT_RADIO_WIDTH;\n const handleChange = (e) => {\n onChange?.({ id: rowId, value: e.value, checked: e.checked });\n };\n const { rowStyles, rowLabel, rowRadio } = useStyles$E({ width, radioWidth });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Row, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(rowStyles, className), ...props },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Radio$1, { id: bestRadioId, className: rowRadio, value: bestColId, name: rowId, checked: value === bestColId, \"aria-labelledby\": `${bestColId} ${labelId}`, onChange: handleChange, ...radioEvents }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: rowLabel },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: labelId, element: \"span\", text: label })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Radio$1, { id: worstRadioId, className: rowRadio, value: worstColId, name: rowId, checked: value === worstColId, \"aria-labelledby\": `${worstColId} ${labelId}`, onChange: handleChange, ...radioEvents })));\n}\n\nconst useStyles$D = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowList: {\n '& > :nth-child(even)': {\n backgroundColor: theme.input.bgColor,\n },\n },\n headerColumn: ({ radioWidth = 20 }) => ({\n display: 'table',\n width: `${radioWidth}%`,\n padding: '5px 8px',\n alignItems: 'center',\n textAlign: 'center',\n ...theme.questionBody,\n fontSize: '14px',\n [breakpointSmMax]: {\n width: '25%',\n },\n }),\n labelColumn: ({ labelWidth = 60 }) => ({\n display: 'table',\n width: `${labelWidth}%`,\n margin: [0, 2, 0, 2],\n padding: '3px',\n [breakpointSmMax]: {\n width: '50%',\n },\n }),\n };\n});\n\nfunction BestWorst({ id: questionId, disabled: _dis, readOnly: _ro, choices: fields = [], responses = [], columnChoices = [], onChange, labelWidth, ...questionFieldProps }) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [selectedChoices, setSelectedChoices] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(responses);\n const [bestAnswerColumn, worstAnswerColumn] = columnChoices;\n const columnIds = columnChoices?.map((c) => c.id);\n const errorId = createErrorId(questionId);\n const radioWidth = labelWidth !== undefined ? (100 - labelWidth) / 2 : DEFAULT_RADIO_WIDTH;\n /** Filter choices that exist and are visible */\n const { options: rowFields } = useQuestionChoices(fields);\n /** determines whether a radio should be rendered as checked or unchecked */\n const getRadioSelection = (id) => {\n return selectedChoices.find((c) => c.id === id)?.value[0].id ?? '';\n };\n /** unChecks selected choice */\n const unCheckOption = (radioId) => {\n const newChoices = selectedChoices.filter((c) => !radioId.match(c.id));\n setSelectedChoices(newChoices);\n onChange?.(newChoices);\n };\n /** handles adding new checked selection to responses */\n const handleChange = (e) => {\n let newChoices = [];\n const rowId = e.id;\n const rowValue = e.value;\n /** remove any other checked radio in the same row or column */\n newChoices = selectedChoices.filter((row) => !(row.id === rowId || row.value.find((col) => col.value === rowValue)));\n newChoices.push({\n id: rowId,\n value: [{ id: rowValue, value: rowValue }],\n });\n setSelectedChoices(newChoices);\n onChange?.(newChoices);\n };\n const handleClick = (e) => {\n const input = e.target;\n const isSelected = selectedChoices.find((c) => input.id.match(c.id));\n if (isSelected && input.checked) {\n unCheckOption(input.id);\n }\n };\n const handleKeyboard = (e) => {\n const input = e.target;\n const isSelected = selectedChoices.find((c) => input.id.match(c.id));\n if (e.code === 'Space' && isSelected) {\n e.preventDefault();\n unCheckOption(input.id);\n }\n };\n const { headerColumn, rowList, labelColumn } = useStyles$D({\n labelWidth,\n radioWidth,\n });\n return (\n /*\n NOTE: The id has been modified to work in hybrid mode. The id needs to\n be different from the question-field id created in the responseweb.\n */\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: `hybrid-${questionId}`, \"data-testid\": \"BestWorstQuestionType\", ...questionFieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: rowList },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Row, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: bestAnswerColumn?.id, element: \"span\", text: bestAnswerColumn?.label, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(headerColumn) }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(headerColumn, labelColumn) }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: worstAnswerColumn?.id, element: \"span\", text: worstAnswerColumn?.label, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(headerColumn) })),\n rowFields?.map((field) => {\n const rowId = `${questionId}_${field.id}`;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(BestWorstRow, { key: rowId, id: rowId, label: field.label, width: labelWidth, value: getRadioSelection(rowId), columnIds: columnIds, onChange: handleChange, onClick: handleClick, onKeyDown: handleKeyboard, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined }));\n }))));\n}\nvar BestWorst$1 = withErrorBoundary(BestWorst);\n\nfunction CheckboxIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"checkbox-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", { fill: \"currentColor\", className: \"background\", width: \"16\", height: \"16\", rx: \"2\", ry: \"2\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { fill: \"#fff\", className: \"checkmark\", transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\", d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\" })));\n}\nvar CheckboxIcon$1 = withSvgIcon(CheckboxIcon, 'CheckboxIcon');\n\nfunction SelectIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"select-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", { className: \"select-arrow select-arrow-top\", transform: \"matrix(1.4619 0 0 1.4619 5.8783 5.4791)\", points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\", fill: \"currentColor\", stroke: \"transparent\", strokeLinejoin: \"round\", strokeWidth: \".5\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", { className: \"select-arrow select-arrow-bottom\", transform: \"matrix(-1.4619 0 0 -1.4619 10.122 10.522)\", points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\", fill: \"currentColor\", stroke: \"transparent\", strokeLinejoin: \"round\", strokeWidth: \".5\" })));\n}\nvar SelectIcon$1 = withSvgIcon(SelectIcon, 'SelectIcon');\n\nfunction CaretDown() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"caret-down-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"M13.254 4c.19.001.38.088.526.26.267.316.29.81.073 1.158l-.073.1L8.53 11.74l-.084.086a.66.66 0 0 1-.901-.007l-.076-.08L2.22 5.523l-.073-.1a1.024 1.024 0 0 1 0-1.058l.073-.1.084-.085a.674.674 0 0 1 .446-.175V4h10.504z\", fill: \"currentColor\" })));\n}\nvar CaretDownIcon = withSvgIcon(CaretDown, 'CaretDownIcon');\n\nfunction CaretDownOutline() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"caret-down-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m922.74 642.16l-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", transform: \"matrix(-.016568 0 0 -.016568 15.842 16.026)\", fill: \"currentcolor\" })));\n}\nvar CaretDownOutlineIcon = withSvgIcon(CaretDownOutline, 'CaretDownOutlineIcon');\n\nfunction CaretUpOutline() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"caret-up-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", transform: \"matrix(.016568 0 0 .016568 .15803 -.025552)\", fill: \"currentcolor\" })));\n}\nvar CaretUpOutlineIcon = withSvgIcon(CaretUpOutline, 'CaretUpOutlineIcon');\n\nfunction CaretLeftOutline() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"caret-left-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { transform: \"matrix(0 -.016568 .016568 0 -.025552 15.842)\", d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", fill: \"currentcolor\" })));\n}\nvar CaretLeftOutlineIcon = withSvgIcon(CaretLeftOutline, 'CaretLeftOutlineIcon');\n\nfunction CaretRightOutline() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"caret-right-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { transform: \"matrix(0 .016568 -.016568 0 16.026 .15803)\", d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\", fill: \"currentcolor\" })));\n}\nvar CaretRightOutlineIcon = withSvgIcon(CaretRightOutline, 'CaretRightOutlineIcon');\n\nfunction DragHandleIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"drag-handle-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 2)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 5.3333)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 8.6667)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", { transform: \"matrix(1 0 0 1.4 1 12)\", width: \"14\", height: \"1.4286\", rx: \".71\", ry: \".71\", strokeWidth: \"0\", fill: \"currentColor\" })));\n}\nvar DragHandleIcon$1 = withSvgIcon(DragHandleIcon, 'DragHandleIcon');\n\nfunction Calendar() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { fill: \"currentcolor\", transform: \"matrix(.031614 0 0 .031614 .33438 .33438)\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m405.17 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m314.23 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m223.28 363.15h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m132.34 363.15h-55.725c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c-1e-3 -2.209-1.792-4-4.001-4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m349.44 340.41h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m258.5 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m167.56 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m76.611 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m349.44 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m258.5 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m363.37 114.86h6.938c10.543 0 19.09-8.549 19.09-19.091v-72.39c0-10.54-8.547-19.089-19.09-19.089h-6.938c-10.545 0-19.092 8.549-19.092 19.089v72.389c2e-3 10.543 8.549 19.092 19.092 19.092z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m118.5 115.33h6.938c10.544 0 19.091-8.55 19.091-19.091v-72.389c0-10.541-8.547-19.09-19.091-19.09h-6.938c-10.543 0-19.09 8.549-19.09 19.09v72.389c0 10.541 8.547 19.091 19.09 19.091z\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"M453.916,43.558h-48.996v57.209c0,19.084-15.525,29.61-34.607,29.61h-6.938c-19.084,0-34.609-15.526-34.609-34.61v-52.209h-168.713v52.682c0,19.084-15.525,34.61-34.609,34.61h-6.938c-19.083,0-34.608-15.526-34.608-34.61v-52.682h-52.862C13.923,43.558,0,57.481,0,74.595v375.03c0,17.114,13.923,31.037,31.036,31.037h422.88c17.113,0,31.035-13.923,31.035-31.037v-375.03c.002-17.113-13.922-31.037-31.035-31.037Zm0,406.067h-422.879l-.001-283.213h422.886l.016,283.212c-.002,0-.008.001-.022.001Z\" })));\n}\nvar CalendarIcon = withSvgIcon(Calendar, 'CalendarIcon');\n\nfunction CheckOutlineIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"checkoutline-icon\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { fill: \"currentcolor\", transform: \"matrix(.8 0 0 0.8-1.6-1.6)\", d: \"M10.6,13.8L8.45,11.65q-.275-.275-.7-.275t-.7.275-.275.7.275.7L9.9,15.9q.3.3.7.3t.7-.3l5.65-5.65q.275-.275.275-.7t-.275-.7-.7-.275-.7.275L10.6,13.8ZM12,22q-2.075,0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175t-.788-3.9q0-2.075.788-3.9t2.137-3.175Q6.275,3.575,8.1,2.788t3.9-.788q2.075,0,3.9.788t3.175,2.137q1.35,1.35,2.138,3.175t.787,3.9q0,2.075-.788,3.9t-2.137,3.175q-1.35,1.35-3.175,2.138t-3.9.787Zm0-2q3.35,0,5.675-2.325t2.325-5.675-2.325-5.675-5.675-2.325-5.675,2.325Q4,8.65,4,12t2.325,5.675t5.675,2.325Zm0-8\" })));\n}\nwithSvgIcon(CheckOutlineIcon, 'CheckOutlineIcon');\n\nfunction CloseOutlineIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"closeoutline-icon\", fill: \"currentColor\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zm6.5 8a6.5 6.5 0 1 0-13 0 6.5 6.5 0 0 0 13 0zm-3.318-3.182a.75.75 0 0 1 0 1.06L9.061 8l2.121 2.121a.75.75 0 0 1-1.06 1.061L8 9.061l-2.121 2.121a.75.75 0 0 1-1.061-1.06L6.939 8 4.818 5.879a.75.75 0 0 1 1.06-1.061L8 6.939l2.121-2.121a.75.75 0 0 1 1.061 0z\" })));\n}\nwithSvgIcon(CloseOutlineIcon, 'CloseOutlineIcon');\n\nfunction CloudArrowUpIcon() {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"g\", { className: \"cloudarrowup-icon\", fill: \"currentColor\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", { d: \"m8.446 6.397.084.073 2.5 2.5a.75.75 0 0 1-.976 1.133l-.084-.073-1.22-1.219v5.439a.75.75 0 0 1-1.493.102l-.007-.102V8.811l-1.22 1.22a.75.75 0 0 1-.976.072l-.084-.073a.75.75 0 0 1-.073-.976l.073-.084 2.5-2.5a.75.75 0 0 1 .976-.073zM9.5 1a4.75 4.75 0 0 1 4.677 5.586l-.057.271-.013.046.113.06a3.499 3.499 0 0 1 1.757 2.64l.018.213.005.193a3.491 3.491 0 0 1-3.3 3.486l-.191.005H10.75a.75.75 0 1 1 0-1.5h1.759c1.05 0 1.91-.812 1.986-1.843l.005-.148c0-.922-.63-1.717-1.511-1.936a.75.75 0 0 1-.507-1.027 3.25 3.25 0 1 0-6.1-2.213.75.75 0 0 1-1.07.453l-.217-.136a1.25 1.25 0 0 0-1.716 1.654l.12.212a.75.75 0 0 1-.494 1.048 1.998 1.998 0 0 0 .346 3.93L3.5 12h1.75a.75.75 0 1 1 0 1.5H3.5a3.5 3.5 0 0 1-3.495-3.308L0 10c0-1.217.626-2.308 1.597-2.936l.175-.107.063-.034-.02-.08-.036-.195-.022-.198-.007-.2a2.75 2.75 0 0 1 3.18-2.717l.209.042.12.033.094-.177a4.753 4.753 0 0 1 3.692-2.41l.236-.016L9.5 1z\" })));\n}\nwithSvgIcon(CloudArrowUpIcon, 'CloudArrowUpIcon');\n\nconst useStyles$C = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n checkboxInput: ({ checked, disabled, readOnly }) => {\n const checkBgColor = checked ? theme.questionColor : '#fff';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.questionColor,\n borderRadius: 2,\n backgroundColor,\n border: `1px solid ${disabled || readOnly ? '#aaa' : theme.questionColor}`,\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff',\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff',\n },\n '& input': {\n cursor: 'pointer',\n },\n };\n },\n}));\n\nfunction CheckboxInput({ className, ...props }, ref) {\n const { inputProps, styleProps } = useInputStyles(props);\n const { checkboxInput } = useStyles$C(styleProps);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(BaseInput$1, { ref: ref, type: \"checkbox\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(checkboxInput, className), icon: react__WEBPACK_IMPORTED_MODULE_0__.createElement(CheckboxIcon$1, null), ...inputProps }));\n}\nvar CheckboxInput$1 = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckboxInput);\n\n// get the margin top by taking the font size and the line height and divide by 2 to get the margin top\nconst marginTopHelper = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\nconst useStyles$B = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n checkboxContainer: ({ checked, disabled }) => {\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked\n ? fontWeightOptions.medium\n : theme.questionBody.fontWeight ?? fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor],\n },\n '&:focus-within': {\n background: theme.input.bgColor,\n },\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({ inputSize }) => inputSize ?? '1em',\n marginTop: marginTopHelper(theme.questionBody?.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8,\n },\n },\n}));\n\nfunction Checkbox$2({ children: label = '', inputSize, onChange, ...props }, ref) {\n const handleChange = (e) => {\n onChange?.({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value,\n });\n };\n const { inputProps, styleProps } = useInputStyles({\n ...props,\n onChange: handleChange,\n });\n const { checkboxContainer, icon } = useStyles$B({ ...styleProps, inputSize });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: inputProps.id, className: checkboxContainer, tabIndex: -1 },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CheckboxInput$1, { ref: ref, ...inputProps, className: icon }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: label })));\n}\nvar Checkbox$3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(Checkbox$2);\n\nconst useStyles$A = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n checkbox: {\n '& label': {\n alignItems: 'baseline',\n },\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n textInput: {\n opacity: ({ isChecked }) => (isChecked ? 1 : 0.5),\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%',\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal',\n },\n checkHover: {\n '&:hover': {\n outline: 'none',\n cursor: 'pointer',\n },\n },\n}));\n\nfunction CheckboxTextfield(props) {\n const { id, children: label, value: inputValue = '', defaultValue, maxLength, onClick, onKeyDown, onChange, checked: checkedProp = false, ...checkboxProps } = props;\n const [isChecked, setIsChecked] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(checkedProp);\n const [value, setValue] = react__WEBPACK_IMPORTED_MODULE_0__.useState(defaultValue || inputValue);\n const { checkbox, textInput, checkHover } = useStyles$A({\n isChecked,\n });\n const handleValueChange = (e) => {\n setValue(e.value);\n onChange?.({ id, value: e.value, checked: e.checked });\n };\n const handleInputChange = (e) => {\n if (!isChecked) {\n setIsChecked(true);\n }\n handleValueChange({ id, value: e.target.value, checked: true });\n };\n const inputRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const handleCheckboxClick = (e) => {\n if (!isChecked && e.clientX !== 0 && e.clientY !== 0) {\n inputRef.current?.focus();\n }\n setIsChecked(!isChecked);\n onClick?.(e);\n };\n const handleTextboxClick = () => {\n if (!isChecked) {\n setIsChecked(true);\n }\n handleValueChange({ id, value, checked: true });\n };\n const handleKeyDown = (e) => {\n if (e.code === 'Space') {\n e.preventDefault();\n setIsChecked(!isChecked);\n handleValueChange({ id, value, checked: !isChecked });\n return;\n }\n onKeyDown?.(e);\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n setIsChecked(checkedProp);\n }, [checkedProp]);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Checkbox$3, { id: `checkbox-input-${id}`, checked: isChecked, onKeyDown: handleKeyDown, onClick: handleCheckboxClick, onChange: handleValueChange, className: checkbox, value: value, maxLength: maxLength, ...checkboxProps }, label),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { id: `checkbox-field-${id}`, onChange: handleInputChange, onClick: handleTextboxClick, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(textInput, { [checkHover]: !isChecked }), defaultValue: defaultValue, autoHeight: true, maxLength: maxLength, tabIndex: isChecked ? 0 : -1, ref: inputRef })));\n}\n\n/**\n * Maximum input characters is 20,000\n * Resolves: RAWR-1186\n */\nconst TEXT_INPUT_MAX_CHARS = 20000;\n\nconst useStyles$z = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n commentChoiceContainer: {\n marginTop: '10px',\n },\n});\n\nconst INPUT_SIZE$2 = 20;\nfunction Checkbox({ id: questionId, required: _req, readOnly: _ro, disabled, columnLayout, choices = [], responses = [], choiceNoneOfTheAbove, choiceOther, choiceComment, onChange, ...questionFieldProps }) {\n const [selectedChoices, setSelectedChoices] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(responses);\n const errorId = createErrorId(questionId);\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => responses.find((c) => c.id === id)?.value;\n const handleDefault = (id) => responses.find((c) => c.id === id)?.value;\n const isChecked = (id) => !!selectedChoices.find((item) => item.id === id);\n const handleChange = (e) => {\n // 1. remove NOTA from array\n const newState = selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleNAChange = (e) => {\n const newState = selectedChoices.filter((c) => c.type === 'COMMENT');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'NOTA' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleOtherChange = (e) => {\n const newState = selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n // 2. if e.target.checked remove item from array\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'ANSWER' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleCommentChange = (e) => {\n const newState = selectedChoices.filter((c) => c.type !== 'COMMENT');\n if (newState && !!e.target.value) {\n newState.push({\n id: e.target.id,\n value: e.target.value,\n type: 'COMMENT',\n });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const { commentChoiceContainer } = useStyles$z();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, \"data-testid\": \"CheckboxQuestionType\", ...questionFieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionAnswerLayoutTemplate, { gridCellMargin: [0, 2, 5, 2], otherCellMargin: [0, 2, 5, 2], noneOfTheAbove: choiceNoneOfTheAbove &&\n choiceNoneOfTheAbove?.visible && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Checkbox$3, { id: choiceNoneOfTheAbove.id, value: choiceNoneOfTheAbove.id, onChange: handleNAChange, checked: isChecked(choiceNoneOfTheAbove.id), disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choiceNoneOfTheAbove.label)), other: choiceOther?.type === 'ANSWER' &&\n choiceOther?.visible && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CheckboxTextfield, { id: choiceOther.id, defaultValue: handleDefault(choiceOther.id), onChange: handleOtherChange, checked: isChecked(choiceOther.id), maxLength: TEXT_INPUT_MAX_CHARS, disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choiceOther.label)), columns: columnLayout }, choices?.map((choice) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Checkbox$3, { key: choice.id, id: choice.id, onChange: handleChange, checked: isChecked(choice.id), value: choice.id, disabled: disabled, readOnly: _ro, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$2 }, choice.label));\n })),\n choiceComment && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: choiceComment.id, label: choiceComment.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(choiceComment.id), lineCount: choiceComment.linesCount, charCount: choiceComment.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, className: commentChoiceContainer }))));\n}\nvar Checkbox$1 = withErrorBoundary(Checkbox);\n\nfunction CommentBox({ id: questionId, required, disabled, readOnly, responses: defaultResponses = [], onChange, cols = 50, rows = 3, ...fieldProps }) {\n const { error, errorId = createErrorId(questionId), title: { id: titleId }, } = fieldProps;\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const handleChange = (e) => {\n const responses = e.target.value\n ? [{ id: questionId, value: e.target.value }]\n : [];\n onChange?.(responses);\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"CommentBoxQuestionType\", ...fieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextArea$1, { name: questionId, defaultValue: defaultValue, disabled: disabled, readOnly: readOnly, required: required, cols: cols, rows: rows, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, \"aria-labelledby\": titleId, maxLength: TEXT_INPUT_MAX_CHARS })));\n}\nvar CommentBox$1 = withErrorBoundary(CommentBox);\n\nconst useStyles$y = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const { color, fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n selectContainerStyles: {\n maxWidth: '100%',\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n transition: 'all 0.1s linear',\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`,\n },\n color: '#000',\n },\n selectStyles: {\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n fontSize,\n fontFamily,\n fontWeight,\n lineHeight: 'normal',\n outline: 'none',\n backgroundColor: '#fff',\n color: 'inherit',\n maxWidth: '100%',\n padding: '6px 1.75em 6px 6px',\n verticalAlign: 'bottom',\n textSizeAdjust: 'auto',\n // Prevent de fault chevron from showing\n mozAppearance: 'none',\n webkitAppearance: 'none',\n appearance: 'none',\n transition: 'border 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`,\n },\n },\n selectIconStyles: {\n position: 'absolute',\n width: '1em',\n height: '1em',\n display: 'block',\n margin: '0 .5em',\n right: 0,\n zIndex: 2,\n pointerEvents: 'none',\n },\n disabledStyles: {\n opacity: 0.4,\n },\n };\n});\n\nfunction NativeSelect({ required, children, disabled, className, icon = react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectIcon$1, null), ...props }) {\n const { selectStyles, selectContainerStyles, selectIconStyles, disabledStyles, } = useStyles$y();\n const { className: iconClasses, ...iconProps } = icon.props;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(selectContainerStyles, disabled ? disabledStyles : {}, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(icon, {\n // this will apply our placement styles, along with any other supplied classes\n className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(selectIconStyles, iconClasses),\n // apply all other props.\n ...iconProps,\n }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"select\", { className: selectStyles, required: required, \"aria-required\": required, \"data-testid\": \"select\", disabled: disabled, ...props }, children)));\n}\n\nconst useStyles$x = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)(({ questionBody: { fontFamily, fontSize, fontWeight }, }) => ({\n selectOption: {\n fontFamily,\n fontSize,\n fontWeight,\n },\n}));\nfunction SelectAnswerOption({ id, label, ...props }) {\n const { selectOption } = useStyles$x();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { id: id, \"data-testid\": \"select-answer-option\", className: selectOption, ...props }, label));\n}\n\nconst useStyles$w = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const { color, fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n inputGroup: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: ({ rtl }) => (rtl ? 'row-reverse' : 'row'),\n transition: 'all 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`,\n },\n },\n input: {\n border: 'none',\n textAlign: ({ rtl }) => (rtl ? 'right' : 'left'),\n height: ({ height }) => height || 'auto',\n width: 'calc(100% - 30px)',\n outline: 'currentColor none medium',\n backgroundColor: '#FFF',\n padding: '6px 0 6px 10px',\n fontSize,\n fontFamily,\n fontWeight,\n },\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n height: ({ height }) => height || 'auto',\n width: 30,\n backgroundColor: '#FFF',\n border: 'none',\n },\n buttonIcon: {\n transform: ({ isOpen }) => (isOpen ? 'rotate(180deg)' : 'rotate(0)'),\n },\n };\n});\n\nconst ComboBoxInputGroup = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(({ isOpen, value, height, rtl = false, onChange, open, close, onKeyDown, 'aria-activedescendant': ariaActiveDescendant, 'aria-autocomplete': ariaAutocomplete, 'aria-controls': ariaControls, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, className, ...rest }, ref) => {\n const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, () => inputRef.current);\n const { inputGroup, input, button, buttonIcon } = useStyles$w({\n isOpen,\n height,\n rtl,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(inputGroup, className), ...rest },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { className: input, type: \"text\", role: \"combobox\", \"aria-autocomplete\": ariaAutocomplete, \"aria-expanded\": isOpen, \"aria-controls\": ariaControls, \"aria-activedescendant\": ariaActiveDescendant, value: value, onChange: onChange, onClick: open, onKeyDown: onKeyDown, ref: inputRef }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: button, type: \"button\", tabIndex: -1, \"aria-expanded\": isOpen, \"aria-controls\": ariaControls, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, onClick: () => {\n if (isOpen) {\n close();\n }\n else {\n open();\n }\n inputRef.current?.focus();\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CaretDownIcon, { className: buttonIcon }))));\n});\n\nconst useStyles$v = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n '&:focus-visible': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1,\n },\n },\n});\n\n/**\n * Scroll to the item at the specified index if it is fully or partially obscured\n * */\nconst scrollToItem = (itemRect, containerRef) => {\n const ulRect = containerRef.current?.getBoundingClientRect();\n if (!ulRect || !containerRef.current) {\n return;\n }\n if (itemRect.top < ulRect.top) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop -= ulRect.top - itemRect.top;\n }\n else if (itemRect.bottom > ulRect.bottom) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop += itemRect.bottom - ulRect.bottom;\n }\n};\n/**\n * Returns the number of items visible inside the listbox given its current dimensions\n * note: if height is 0, it will return 10 as a default to satisfy tests\n * */\nconst numItemsVisible = (containerHeight, itemHeight = 48) => {\n return !containerHeight ? 10 : Math.round(containerHeight / itemHeight);\n};\n\n/**\n * Focus another item in the listBox depending on which key is pressed\n * @param key The key that was pressed\n * @param focusedIndex The index of the currently focused item\n * @param itemCount The number of items in the listBox\n * @param visibleItemCount The number of items visible in the listBox\n * @param focusItem Function which updates the the currently focused item\n */\nconst focusNext = (key, focusedIndex, itemCount, visibleItemCount, focusItem) => {\n const lastIndex = itemCount - 1;\n if (key === 'End') {\n focusItem(lastIndex);\n return;\n }\n if (focusedIndex === null) {\n focusItem(0);\n return;\n }\n switch (key) {\n case 'Down':\n case 'ArrowDown':\n if (focusedIndex < lastIndex) {\n focusItem(focusedIndex + 1);\n }\n else {\n focusItem(0);\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (focusedIndex > 0) {\n focusItem(focusedIndex - 1);\n }\n else {\n focusItem(lastIndex);\n }\n break;\n case 'PageDown':\n if (focusedIndex < lastIndex - visibleItemCount) {\n focusItem(focusedIndex + visibleItemCount);\n }\n else {\n focusItem(lastIndex);\n }\n break;\n case 'PageUp':\n if (focusedIndex > visibleItemCount) {\n focusItem(focusedIndex - visibleItemCount);\n }\n else {\n focusItem(0);\n }\n break;\n case 'Home':\n focusItem(0);\n break;\n }\n};\n\nreact__WEBPACK_IMPORTED_MODULE_0__.forwardRef(({ children, focusedIndex: externalFocusedIndex, tabIndex, onKeyDown, onClick, onChange, className, ...rest }, ref) => {\n const { listBox } = useStyles$v();\n const [focusedIndex, setFocusedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n // override internal focusedIndex with external state if provided\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (externalFocusedIndex !== undefined) {\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const itemsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);\n const ulRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const focusItem = (index) => {\n setFocusedIndex(index);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, () => ulRef.current);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (focusedIndex === null) {\n return;\n }\n // Scroll to the currently focused item anytime the focused index changes\n scrollToItem(itemsRef.current?.[focusedIndex].getBoundingClientRect(), ulRef);\n // call the onChange callback if the focused index changes\n onChange?.({\n target: itemsRef.current[focusedIndex],\n value: itemsRef.current[focusedIndex].dataset.value ?? '',\n });\n }, [focusedIndex]);\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n if ([\n 'Down',\n 'Up',\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'End',\n 'Home',\n ].includes(e.key)) {\n e.preventDefault();\n // Focus another item in the listBox depending on which key is pressed\n focusNext(e.key, focusedIndex, itemsRef.current.length, numItemsVisible(ulRef.current?.getBoundingClientRect().height), focusItem);\n }\n };\n const handleClick = (e) => {\n onClick?.(e);\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n }\n };\n const interactiveProps = {\n tabIndex,\n 'aria-activedescendant': tabIndex !== undefined && focusedIndex !== null\n ? `ListBoxItem-${focusedIndex}`\n : undefined,\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ul\", { ref: ulRef, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(listBox, className), role: \"listbox\", onKeyDown: handleKeyDown, onClick: handleClick, ...interactiveProps, ...rest }, react__WEBPACK_IMPORTED_MODULE_0__.Children.map(children, (child, index) => react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child) &&\n react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(child, {\n key: child.props.value,\n id: child.props.id ?? `ListBoxItem-${index}`,\n selected: index === focusedIndex,\n ref: (el) => {\n itemsRef.current[index] = el;\n },\n }))));\n});\n\nconst useStyles$u = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n listBoxItem: ({ selected, disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n backgroundColor: '#FFF',\n cursor: 'pointer',\n ...(selected && {\n backgroundColor: 'rgb(237, 238, 238)',\n }),\n '&:hover, &:focus': {\n backgroundColor: 'rgb(237, 238, 238)',\n },\n '&:active': {\n backgroundColor: 'rgb(224, 226, 226)',\n },\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n }),\n});\n\nconst ListBoxItem = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(({ children, disabled, selected, value, className, ...rest }, ref) => {\n const { listBoxItem } = useStyles$u({\n disabled,\n selected,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", { ref: ref, \"data-value\": value, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(listBoxItem, className), role: \"option\", \"aria-selected\": selected ? true : undefined, ...rest }, children));\n});\n\nconst useStyles$t = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n listBoxContainer: {\n // TODO: Possible to utilize focus-visible to show only on keyboard interaction? (with child)\n '&:focus-within': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1,\n },\n },\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n padding: 0,\n },\n});\n\nconst ARIA_ACTIVEDESCENDANT = 'aria-activedescendant';\n/**\n * A virtualized version of the List component, using `react-window` to render large datasets. This component should only be used when the number of items would cause performance issues with the standard List component (most likely >500 items).\n */\nconst VirtualizedListBox = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(({ height = 325, width = 175, itemSize, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, [ARIA_ACTIVEDESCENDANT]: ariaActiveDescendant, tabIndex, itemCount, focusedIndex: externalFocusedIndex, onChange, onKeyDown, onClick, className, children, ...rest }, ref) => {\n const [focusedIndex, setFocusedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const listRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const innerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const outerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const itemsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);\n // override internal focusedIndex with external state if provided\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (externalFocusedIndex !== undefined) {\n if (externalFocusedIndex !== null) {\n listRef.current?.scrollToItem(externalFocusedIndex);\n }\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const { listBoxContainer, listBox } = useStyles$t();\n const handleChange = (item) => {\n onChange?.({\n target: item,\n value: item.dataset.value ?? '',\n });\n };\n /**\n * Scroll to and focus the item at the specified index\n */\n const focusItem = (index) => {\n listRef.current?.scrollToItem(index);\n setFocusedIndex(index);\n handleChange(itemsRef.current[index]);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, () => ({\n listRef,\n innerRef,\n outerRef,\n itemsRef,\n }));\n const handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((e) => {\n onKeyDown?.(e);\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n if ([\n 'Down',\n 'Up',\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'End',\n 'Home',\n ].includes(e.key)) {\n e.preventDefault();\n // Focus another item in the listBox depending on which key is pressed\n focusNext(e.key, focusedIndex, itemCount, numItemsVisible(outerRef.current?.getBoundingClientRect().height), focusItem);\n }\n }, [focusedIndex, itemCount, onKeyDown]);\n const handleClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((e) => {\n onClick?.(e);\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n handleChange(e.target);\n }\n }, [onClick]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n const listElement = innerRef.current;\n outerRef.current?.removeAttribute('tabindex');\n if (listElement) {\n listElement.className = listBox;\n listElement.setAttribute('role', 'listbox');\n listElement.addEventListener('keydown', handleKeyDown);\n listElement.addEventListener('click', handleClick);\n if (tabIndex === undefined) {\n listElement.removeAttribute('tabindex');\n }\n else {\n listElement.setAttribute('tabindex', tabIndex?.toString());\n }\n if (ariaLabel) {\n listElement.setAttribute('aria-label', ariaLabel);\n }\n if (ariaLabelledBy) {\n listElement.setAttribute('aria-labelledby', ariaLabelledBy);\n }\n }\n return () => {\n if (listElement) {\n listElement.removeEventListener('keydown', handleKeyDown);\n listElement.removeEventListener('click', handleClick);\n }\n };\n }, [\n ariaLabel,\n ariaLabelledBy,\n handleClick,\n handleKeyDown,\n listBox,\n tabIndex,\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n const listElement = innerRef.current;\n if (ariaActiveDescendant ||\n (tabIndex !== undefined && focusedIndex !== null)) {\n listElement?.setAttribute(ARIA_ACTIVEDESCENDANT, ariaActiveDescendant ?? `ListBoxItem-${focusedIndex}`);\n }\n else {\n listElement?.removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n }, [ariaActiveDescendant, focusedIndex, tabIndex]);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.F, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(listBoxContainer, className), itemSize: itemSize, height: Math.min(height, itemCount * itemSize), width: width, innerElementType: \"ul\", innerRef: innerRef, outerRef: outerRef, overscanCount: 10, itemCount: itemCount, ref: listRef, ...rest }, (props) => react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children(props), {\n id: children(props).props.id ?? `ListBoxItem-${props.index}`,\n selected: props.index === focusedIndex,\n ref: (el) => {\n itemsRef.current[props.index] = el;\n },\n })));\n});\n\nconst useStyles$s = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n comboBox: {\n display: 'inline-block',\n width: ({ width }) => width,\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`,\n },\n },\n listBox: {\n display: ({ isOpen }) => (isOpen ? 'block' : 'none'),\n '&:focus-within': {\n outline: 'none',\n },\n border: '1px solid rgb(204, 204, 204)',\n },\n listBoxItem: {\n direction: ({ rtl }) => (rtl ? 'rtl' : 'ltr'),\n paddingLeft: '10px',\n },\n };\n});\n\nfunction ComboBox({ id, options, height, width = '100%', itemSize = 48, className, classes, filterOnChange = false, value: outsideValue = '', optionAlign = 'center', filter, onChange, rtl = false, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...rest }) {\n const comboBoxRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const listBoxRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const [isOpen, setIsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(outsideValue);\n const [currentOptions, setCurrentOptions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(options);\n const [focusedIndex, setFocusedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const [filterActive, setFilterActive] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(!filterOnChange);\n // the initial value of the input field when the listbox is opened (used to control whether the filter is active or not)\n const [valueOnOpen, setValueOnOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(outsideValue);\n /** For preventing onChange being called on first render */\n const firstRender = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);\n const { comboBox, listBox, listBoxItem } = useStyles$s({\n isOpen,\n width,\n rtl,\n });\n const closeListBox = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n const openListBox = () => {\n if (!isOpen) {\n setValueOnOpen(value);\n setIsOpen(true);\n }\n };\n // close the listbox when the user clicks outside of it\n useOnFocusLeave(comboBoxRef, () => {\n closeListBox();\n setFocusedIndex(null);\n });\n const focusItem = (index) => {\n setFocusedIndex(index);\n };\n // call onChange when value changes\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (firstRender.current) {\n firstRender.current = false;\n }\n else {\n onChange?.({\n value,\n target: inputRef.current,\n });\n }\n }, [value]);\n // filter the current options if a filter is provided and filtering is active. If filtering is inactive, reset the current options to the original options\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filter && filterActive) {\n setCurrentOptions(options.filter((option) => filter(option, value)));\n }\n else if (!filterActive) {\n setCurrentOptions(options);\n }\n }, [options, value, filter, filterActive]);\n // if filterOnChange is true, activate filtering if the value has changed since the listbox was opened, otherwise deactivate filtering\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filterOnChange) {\n setFilterActive(value !== valueOnOpen);\n }\n }, [filterOnChange, value, valueOnOpen]);\n // if the current value matches an option when the list opens, focus it and center it in the list\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (isOpen) {\n const matchingOption = currentOptions.find((option) => option.label === value);\n if (matchingOption) {\n listBoxRef.current?.listRef.current?.scrollToItem(currentOptions.indexOf(matchingOption), optionAlign // position the option in the list according to the alignment (default is `center`)\n );\n setFocusedIndex(currentOptions.indexOf(matchingOption));\n }\n }\n }, [isOpen, currentOptions, value, optionAlign]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setValue(outsideValue);\n }, [outsideValue]);\n const handleKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowDown':\n case 'Down':\n case 'ArrowUp':\n case 'Up':\n case 'PageDown':\n case 'PageUp':\n e.preventDefault();\n openListBox();\n if (!e.altKey) {\n focusNext(e.key, focusedIndex, currentOptions.length, numItemsVisible(listBoxRef.current?.outerRef.current?.getBoundingClientRect()\n .height, itemSize), focusItem);\n }\n break;\n case 'Escape':\n if (isOpen) {\n closeListBox();\n setFocusedIndex(null);\n }\n else {\n setValue('');\n }\n break;\n case 'Enter':\n e.preventDefault();\n if (isOpen) {\n if (focusedIndex !== null) {\n setValue(listBoxRef.current?.itemsRef.current?.[focusedIndex]\n .textContent ?? '');\n }\n closeListBox();\n setFocusedIndex(null);\n }\n break;\n }\n };\n const handleListBoxClick = () => {\n inputRef.current?.focus();\n closeListBox();\n };\n const activeDescendant = focusedIndex !== null && currentOptions[focusedIndex]\n ? `${id}-${currentOptions[focusedIndex].value}`\n : undefined;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(comboBox, classes?.comboBox, className), ref: comboBoxRef, ...rest },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComboBoxInputGroup, { ref: inputRef, className: classes?.inputGroup, height: height, rtl: rtl, value: value, isOpen: isOpen, \"aria-controls\": `${id}-listbox`, \"aria-autocomplete\": filter ? 'list' : 'none', \"aria-activedescendant\": activeDescendant, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, open: openListBox, close: closeListBox, onChange: (e) => setValue(e.target.value), onKeyDown: handleKeyDown }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(VirtualizedListBox, { ref: listBoxRef, itemSize: itemSize, itemCount: currentOptions.length, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(listBox, classes?.listBox), focusedIndex: focusedIndex, width: comboBoxRef.current?.clientWidth, onChange: (e) => setValue(e.target?.textContent ?? ''), onClick: handleListBoxClick, tabIndex: -1, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, \"aria-activedescendant\": activeDescendant, \n /**\n * adding inline style to overwrite react-window inline styles as per their docs\n * https://github.com/bvaughn/react-window\n */\n style: { position: 'absolute' } }, ({ index, style }) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(ListBoxItem, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(listBoxItem, classes?.listBoxItem), style: style, value: currentOptions[index].value, id: `${id}-${currentOptions[index].value}`, key: `${id}-${currentOptions[index].value}` }, currentOptions[index].label)))));\n}\n\n/**\n * Visually Hidden CSS properties\n * @description common css-properties to visually hide text and available for screen-readers.\n * There may be times where the css-specificity may not be high enough for the class to be invoked,\n * Ergo, the use of `!important` which will help ensure the properties are applied at any specificity.\n * @example\n * // usage with `react-jss`\n * import visuallyHiddenProperties from './utils/visuallyHidden';\n *\n * const useStyles = createUseStyles({\n * srOnly: {...visuallyHiddenProperties}\n * })\n */\nvar visuallyHidden = {\n border: [[0], '!important'],\n /**\n * @desc for backwards compatibility\n * @deprecated\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip\n * @see https://caniuse.com/mdn-css_properties_clip\n */\n clip: ['rect(1px, 1px, 1px, 1px)', '!important'],\n /**\n * @desc future-proof version\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path\n * @see https://caniuse.com/css-clip-path\n */\n clipPath: ['inset(50%)', '!important'],\n height: ['1px', '!important'],\n margin: ['-1px', '!important'],\n overflow: ['hidden', '!important'],\n padding: [[0], '!important'],\n position: ['absolute', '!important'],\n width: ['1px', '!important'],\n /**\n * @desc preventing text to be condensed\n * @see https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n */\n whiteSpace: ['nowrap', '!important'],\n};\n\nconst useStyles$r = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n srOnly: visuallyHidden,\n});\n\n/** default element for the visually hidden component */\nconst DEFAULT_ELEMENT = 'span';\n/**\n * A component to have visually hidden text still available to Assistive\n * Technologies, such as screen-readers.\n * All HTML properties are available on the selected `element` tag used.\n */\nfunction VisuallyHidden({ element: Tag = DEFAULT_ELEMENT, className, ...props }) {\n const { srOnly } = useStyles$r();\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Tag, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(srOnly, className), ...props });\n}\n\nconst useCalendarStyles = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n calendarPickerWrapper: {\n width: ({ width }) => width,\n height: ({ height }) => height,\n border: '1px solid #CCCCCC',\n padding: '10px',\n background: '#FFFFFF',\n color: '#333333',\n },\n calendarControls: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: '20px',\n },\n button: {\n border: 'none',\n borderRadius: 0,\n background: 'transparent',\n width: '60px',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n backgroundColor: '#05467E',\n color: '#FFFFFF',\n },\n },\n comboboxWrapper: {\n display: 'flex',\n flexGrow: 1,\n '& > div': {\n width: '50%',\n },\n },\n monthWrapper: {\n display: 'grid',\n margin: '32px 0 0',\n gridTemplateColumns: `repeat(1, 100%)`,\n gridGap: '0 64px',\n },\n});\nconst useMonthStyles = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n weekdayLabel: {\n textAlign: 'center',\n marginBottom: '10px',\n fontSize: '10px',\n },\n weekGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyContent: 'center',\n },\n});\nconst useDayStyles = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n dayDefault: {\n padding: '8px',\n border: '1px solid #CCCCCC',\n borderRadius: '0',\n color: '#001217',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n color: '#FFFFFF',\n backgroundColor: '#05467E',\n borderColor: '#05467E',\n },\n },\n daySelected: {\n color: '#FFFFFF',\n backgroundColor: '#71c9ed',\n },\n daySelectedFirstOrLast: {\n color: '#FFFFFF',\n backgroundColor: '#000000',\n borderColor: '#000000',\n },\n dayDisabled: {\n color: '#808285',\n backgroundColor: '#FFFFFF',\n },\n});\n\nconst COPY$a = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n DAY_OF_MONTH: {\n id: 'Day.dayOfMonth',\n defaultMessage: '{dayInCalendar, date, full}',\n description: '[Type: label][Vis: high] - label for the full date',\n },\n});\nfunction Day({ dayLabel, date, focusedDate, isDateSelected, isDateFocused, isDateHovered, onDateHover, onDateSelect, onDateFocus, isFirstOrLastSelectedDate, }) {\n const dayRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const fn = () => false;\n const { isSelected, isSelectedStartOrEnd, isWithinHoverRange, disabledDate, onClick, onKeyDown, onMouseEnter, tabIndex, } = (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.N)({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked: fn,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef,\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (dayRef && dayRef.current && isDateFocused(date)) {\n dayRef.current.focus();\n }\n }, [dayRef, date, isDateFocused]);\n const { dayDefault, daySelected, daySelectedFirstOrLast, dayDisabled, } = useDayStyles();\n if (!dayLabel) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { onClick: onClick, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, tabIndex: tabIndex, type: \"button\", ref: dayRef, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$a.DAY_OF_MONTH, { dayInCalendar: date }), className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(dayDefault, {\n [daySelected]: isSelected || isWithinHoverRange,\n [daySelectedFirstOrLast]: isSelectedStartOrEnd,\n [dayDisabled]: disabledDate,\n }) }, dayLabel));\n}\n\nconst COPY$9 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n DAY_OF_WEEK_LEGEND_SHORT: {\n id: 'Month.dayOfWeekLegendShort',\n defaultMessage: '{dayOfTheWeek, select, Mo {Mo} Tu {Tu} We {We} Th {Th} Fr {Fr} Sa {Sa} Su {Su}}',\n description: '[Type: label][Vis: high] - label for the day of the week in shorthand',\n },\n DAY_OF_WEEK_LEGEND_FULL: {\n id: 'Month.dayOfWeekLegendLong',\n defaultMessage: '{dayOfTheWeek, select, Mo {Monday} Tu {Tuesday} We {Wednesday} Th {Thursday} Fr {Friday} Sa {Saturday} Su {Sunday}}',\n description: '[Type: label][Vis: high] - label for the day of the week',\n },\n});\nfunction Month({ year, month, firstDayOfWeek, ...dayProps }) {\n const { days, weekdayLabels } = (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.d)({\n year,\n month,\n firstDayOfWeek,\n });\n const { weekdayLabel, weekGrid } = useMonthStyles();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: weekGrid, role: \"grid\" },\n weekdayLabels.map((dayLabel) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: weekdayLabel, key: dayLabel, role: \"columnheader\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { role: \"presentation\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$9.DAY_OF_WEEK_LEGEND_SHORT, values: { dayOfTheWeek: dayLabel } })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(VisuallyHidden, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$9.DAY_OF_WEEK_LEGEND_FULL, values: { dayOfTheWeek: dayLabel } }))))),\n days.map((day, index) => {\n if (typeof day === 'object') {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Day, { date: day.date, key: day.dayLabel, dayLabel: day.dayLabel, ...dayProps }));\n }\n const emptyDayKey = `empty-day-${index}`;\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { key: emptyDayKey });\n }))));\n}\n\nconst COPY$8 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n PREVIOUS_MONTH: {\n id: 'CalendarPicker.previousMonth',\n defaultMessage: 'Previous Month',\n description: '[Type: button][Vis: high] - button label to go to previous month',\n },\n NEXT_MONTH: {\n id: 'CalendarPicker.nextMonth',\n defaultMessage: 'Next Month',\n description: '[Type: button][Vis: high] - button label to go to next month',\n },\n MONTH_SELECT: {\n id: 'CalendarPicker.month',\n defaultMessage: 'Select a month',\n description: '[Type: label][Vis: high] - label for month selection combo box',\n },\n YEAR_SELECT: {\n id: 'CalendarPicker.year',\n defaultMessage: 'Select a year',\n description: '[Type: label][Vis: high] - label for year selection combo box',\n },\n MONTHS: {\n id: 'CalendarPicker.months',\n defaultMessage: '{months, select, January {January} February {February} March {March} April {April} May {May} June {June} July {July} August {August} September {September} October {October} November {November} December {December}}',\n description: '[Type: label][Vis: high] - label for the months',\n },\n});\nconst startingYear = new Date().getFullYear() - 200;\nconst yearOptions = [...Array(251)].map((_, year) => ({\n label: `${startingYear + year}`,\n value: `${startingYear + year}`,\n}));\nfunction getPreviousMonth(currentMonth) {\n let newDate;\n if (currentMonth.getMonth() - 1 < 0) {\n newDate = new Date(currentMonth.getFullYear() - 1, 11, currentMonth.getDate());\n }\n else {\n const prevMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), 0).getDate();\n if (currentMonth.getDate() > prevMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, prevMonthLastDay);\n }\n else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, currentMonth.getDate());\n }\n }\n return newDate;\n}\nfunction getNextMonth(currentMonth) {\n let newDate;\n if (currentMonth.getMonth() + 1 > 11) {\n newDate = new Date(currentMonth.getFullYear() + 1, 0, currentMonth.getDate());\n }\n else {\n const nextMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 2, 0).getDate();\n if (currentMonth.getDate() > nextMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, nextMonthLastDay);\n }\n else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, currentMonth.getDate());\n }\n }\n return newDate;\n}\nconst comboBoxSeedId = 'calendar-picker-combobox';\nfunction CalendarPicker({ onDaySelect, onDateChange, initialSelectedDate = new Date(), width = '300px', height = 'auto', startingDayOfWeek = 0, }) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input'],\n });\n const comboboxId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)(comboBoxSeedId), []);\n const selectId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)('calendar-picker-select'), []);\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialSelectedDate);\n const handleDateChange = ({ startDate }) => {\n const d = startDate ?? new Date();\n setState(d);\n onDaySelect?.(d);\n };\n const { firstDayOfWeek, activeMonths, isDateSelected, isDateHovered, isFirstOrLastSelectedDate, isDateFocused, focusedDate, onDateHover, onDateSelect, onDateFocus, goToDate, } = (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.Y)({\n startDate: state,\n endDate: null,\n focusedInput: _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.P,\n onDatesChange: handleDateChange,\n numberOfMonths: 1,\n /*\n * minBookingDays and exactBookingDays are used to remove the date range feature\n * see: https://github.com/tomgreenwood1/react-datepicker/tree/f2b1969cb4808c68d578428c4c5e6ed98c96461e/packages/hooks#exactminbookingdays-boolean--undefined-default-false\n */\n minBookingDays: 1,\n exactMinBookingDays: true,\n /*\n * firstDayofWeek is used to set the first day of the week. 0 = Sunday, 1 = Monday, etc.\n */\n firstDayOfWeek: startingDayOfWeek,\n });\n const currentMonth = activeMonths[0];\n const { comboboxWrapper, calendarControls, calendarPickerWrapper, button, monthWrapper, } = useCalendarStyles({\n height,\n width,\n });\n // populate monthOptions array\n const monthNames = [\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'January' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'February' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'March' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'April' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'May' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'June' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'July' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'August' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'September' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'October' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'November' }),\n (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.MONTHS, { months: 'December' }),\n ];\n const monthOptions = monthNames.map((name) => ({\n label: name,\n value: name,\n }));\n const getMonthLabel = (monthNamesIndex) => {\n return monthNames[monthNamesIndex];\n };\n const handleMonthChange = (e) => {\n const monthIndex = monthOptions.findIndex((i) => i.value === e.target.value);\n const newDate = new Date(currentMonth.year, monthIndex, state.getDate());\n if (monthIndex !== -1) {\n goToDate(newDate);\n setState(newDate);\n onDateChange?.(newDate);\n }\n };\n const handleYearChange = (e) => {\n if (e.value.length >= 4) {\n const newDate = new Date(parseInt(e.value, 10), currentMonth.month, state.getDate());\n goToDate(newDate);\n setState(newDate);\n onDateChange?.(newDate);\n }\n };\n const handleGoToPreviousMonths = () => {\n const newDate = getPreviousMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange?.(newDate);\n };\n const handleGoToNextMonths = () => {\n const newDate = getNextMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange?.(newDate);\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: calendarPickerWrapper, \"data-testid\": \"CalendarPicker\", ref: focusTrapRef },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: calendarControls },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { type: \"button\", onClick: handleGoToPreviousMonths, className: button, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.PREVIOUS_MONTH), \"data-testid\": \"previous-month-button\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CaretLeftOutlineIcon, null)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: comboboxWrapper },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(NativeSelect, { id: selectId, value: getMonthLabel(currentMonth.month), onChange: handleMonthChange }, monthOptions.map((option) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { value: option.value, label: option.value, key: option.value }))))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComboBox, { id: comboboxId, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.YEAR_SELECT), options: yearOptions, value: currentMonth.year.toString(), onChange: handleYearChange }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { type: \"button\", onClick: handleGoToNextMonths, className: button, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$8.NEXT_MONTH), \"data-testid\": \"next-month-button\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CaretRightOutlineIcon, null))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: monthWrapper },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Month, { year: currentMonth.year, month: currentMonth.month, firstDayOfWeek: firstDayOfWeek, onChange: goToDate, focusedDate: focusedDate, isDateSelected: isDateSelected, isDateFocused: isDateFocused, isDateHovered: isDateHovered, onDateHover: onDateHover, onDateSelect: onDateSelect, onDateFocus: onDateFocus, isFirstOrLastSelectedDate: isFirstOrLastSelectedDate }))));\n}\n\nconst useStyles$q = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n container: {\n visibility: ({ calendarVisibility }) => {\n return calendarVisibility ? 'visible' : 'hidden';\n },\n },\n});\n\nconst DisclosureContainer = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DisclosureContainer({ onClose, visible = false, className, ...props }, ref) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input'],\n });\n const disclosureRef = useForkRef(focusTrapRef, ref);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n const handleClick = (e) => {\n const target = e.target;\n const clickedOutside = !focusTrapRef.current?.contains(target);\n const comboBoxOptionClicked = !target.id.startsWith(comboBoxSeedId);\n if (visible && clickedOutside && comboBoxOptionClicked) {\n onClose?.();\n }\n };\n if (visible) {\n /*\n * RAWR-1437\n * Delay setting up the EventListener to after the current render, otherwise the handleClick triggers\n * when the calendar first opens and closes the calendar right away.\n */\n setTimeout(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('click', handleClick);\n }, 0);\n }\n else {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n }\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible]);\n const { container } = useStyles$q({\n calendarVisibility: visible,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { ref: disclosureRef, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(container, className), ...props }));\n});\n\n// constants.ts\nconst US_DATE_FORMAT = 'MM/DD/YYYY';\nconst EURO_DATE_FORMAT = 'DD/MM/YYYY';\n\nconst validDateStringCheck = (dateString) => {\n const badValues = ['0', ' '];\n const isValid = dateString.every((value) => {\n // eslint-disable-next-line no-restricted-globals\n return badValues.indexOf(value) === -1 && !isNaN(parseInt(value, 10));\n });\n return dateString.length === 3 && isValid;\n};\nconst toDateString = (date, format = US_DATE_FORMAT) => {\n if (!date) {\n return '';\n }\n const segments = date.toISOString().split('T')[0].split('-');\n const [y, m, d] = segments.map((s) => s);\n if (format === US_DATE_FORMAT) {\n return `${m}/${d}/${y}`;\n }\n return `${d}/${m}/${y}`;\n};\nconst stringToDate = (dateString, format = US_DATE_FORMAT) => {\n if (!dateString) {\n return new Date();\n }\n if (!validDateStringCheck(dateString.split('/'))) {\n return new Date();\n }\n if (format === EURO_DATE_FORMAT) {\n const [d, m, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n }\n const [m, d, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n};\n\nconst useStyles$p = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n container: {\n position: 'relative',\n },\n dateInputWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n dateInput: {\n maxWidth: '175px',\n maxHeight: '36px',\n padding: '6px 36px 6px 6px',\n },\n calendarButton: {\n borderRadius: 'none',\n border: 'none',\n marginLeft: '-37px',\n height: '34px',\n width: '36px',\n fontSize: '15px',\n color: '#404040',\n backgroundColor: '#EFEFEF',\n '&:focus, &:hover': {\n cursor: 'pointer',\n outline: `2px solid ${theme.primaryAccentColor}`,\n background: 'linear-gradient(0deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.2) 30%, #EFEFEF 100%)',\n },\n '&:focus': {\n borderRadius: '3px',\n },\n '&:active': {\n background: 'linear-gradient(0deg, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.4) 30%, #EFEFEF 100%)',\n },\n '&:disabled': {\n opacity: '.5',\n },\n },\n calendarWrapper: {\n position: 'absolute',\n bottom: ({ calendarPosition }) => calendarPosition,\n zIndex: 100,\n },\n commentLabel: {\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n marginBottom: 5,\n display: 'block',\n fontSize: '14px',\n },\n };\n});\n\nconst COPY$7 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n DATE_LABEL: {\n id: 'DateInput.dateLabel',\n defaultMessage: 'Date',\n description: '[Type: label][Vis: high] - label for date input',\n },\n DATE_BUTTON_LABEL: {\n id: 'DateInput.dateButton',\n defaultMessage: 'Open calendar',\n description: '[Type: button][Vis: high] - aria text for opening the calendar picker',\n },\n US_DATE_FORMAT: {\n id: 'DateInput.usDateFormat',\n defaultMessage: 'MM/DD/YYYY',\n description: '[Type: label][Vis: high] - ISO 8601 US date character format notation. No localized delimiter translation.',\n },\n INTL_DATE_FORMAT: {\n id: 'DateInput.intlDateFormat',\n defaultMessage: 'DD/MM/YYYY',\n description: '[Type: label][Vis: high] - ISO 8601 International date character format notation.',\n },\n});\nfunction DateInput({ onChange, dateFormat = US_DATE_FORMAT, value, defaultValue, id, className, required, 'aria-describedby': ariaDescribedBy, }) {\n const [calendarVisibility, setCalendarVisibility] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const dateInputID = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)('date-input-'), []);\n const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const calendarButtonRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const disclosureRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const calendarPosition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)('100%');\n useSSRSafeLayoutEffect(() => {\n if (inputRef.current && disclosureRef.current) {\n const inputBound = inputRef.current.getBoundingClientRect();\n const disclosureBound = disclosureRef.current.getBoundingClientRect();\n if (inputBound.top < disclosureBound.height) {\n // not enough space\n calendarPosition.current = 'auto';\n }\n else {\n calendarPosition.current = '100%';\n }\n }\n }, [calendarVisibility]);\n const lastFocus = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const handleCalendarVisibility = () => {\n lastFocus.current = document.activeElement;\n setCalendarVisibility((s) => {\n return !s;\n });\n };\n const handleDisclosureClose = () => {\n lastFocus.current?.focus();\n setCalendarVisibility(false);\n };\n const handleDaySelect = (date) => {\n const dateString = toDateString(date, dateFormat);\n onChange?.(dateString);\n handleDisclosureClose();\n };\n const handleInputChange = (e) => {\n onChange?.(e.target.value);\n };\n const { dateInput, calendarButton, calendarWrapper, commentLabel, dateInputWrapper, container, } = useStyles$p({\n calendarPosition: calendarPosition.current,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(container, className), id: id },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: dateInputID, className: commentLabel },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$7.DATE_LABEL })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: dateInputWrapper },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { \"data-testid\": \"DateInput\", className: dateInput, maxLength: 10, onChange: handleInputChange, defaultValue: defaultValue, value: value, ref: inputRef, placeholder: dateFormat === 'DD/MM/YYYY'\n ? (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$7.INTL_DATE_FORMAT)\n : (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$7.US_DATE_FORMAT), id: dateInputID, \"aria-describedby\": ariaDescribedBy, required: required }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { type: \"button\", ref: calendarButtonRef, className: calendarButton, onClick: handleCalendarVisibility, \"aria-expanded\": calendarVisibility, \"aria-label\": (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$7.DATE_BUTTON_LABEL) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CalendarIcon, null))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(DisclosureContainer, { className: calendarWrapper, onClose: handleDisclosureClose, ref: disclosureRef, visible: calendarVisibility, \"data-testid\": \"DisclosureContainer\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CalendarPicker, { onDaySelect: handleDaySelect, initialSelectedDate: stringToDate(value, dateFormat) }))));\n}\n\nconst useStyles$o = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n container: {\n display: 'flex',\n },\n inputContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n label: {\n fontSize: '14px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n width: '100%',\n display: 'block',\n marginBottom: '5px',\n },\n input: {\n /**\n * including specific height and width values to match production\n */\n maxWidth: '50px',\n maxHeight: '36px',\n textAlign: 'center',\n },\n separator: {\n width: '20px',\n height: '36px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n srOnly: {\n ...visuallyHidden,\n },\n}));\n\nconst COPY$6 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n TIME_LABEL: {\n id: 'TimeInput.timeLabel',\n defaultMessage: 'Time',\n description: '[Type: label][Vis: high] - label for time input',\n },\n HOUR_LABEL: {\n id: 'TimeInput.hour',\n defaultMessage: 'Hour',\n description: '[Type: label][Vis: high] - label for hour input',\n },\n MINUTES_LABEL: {\n id: 'TimeInput.minutes',\n defaultMessage: 'Minutes',\n description: '[Type: label][Vis: high] - label for minutes input',\n },\n DAYTIME_LABEL: {\n id: 'TimeInput.daytimeLabel',\n defaultMessage: 'AM/PM',\n description: '[Type: label][Vis: high] - label for daytime AM/PM select',\n },\n AM: {\n id: 'TimeInput.am',\n defaultMessage: 'AM',\n description: '[Type: label][Vis: high] - label for ante meridiem',\n },\n PM: {\n id: 'TimeInput.pm',\n defaultMessage: 'PM',\n description: '[Type: label][Vis: high] - label for post meridiem',\n },\n HOUR_PLACEHOLDER: {\n id: 'TimeInput.hhPlaceholder',\n defaultMessage: 'hh',\n description: '[Type: placeholder][Vis: high] - placeholder text for hour input',\n },\n MINUTE_PLACEHOLDER: {\n id: 'TimeInput.mmPlaceholder',\n defaultMessage: 'mm',\n description: '[Type: placeholder][Vis: high] - placeholder text for minutes input',\n },\n});\nfunction TimeInput({ onChange, defaultValue = { hour: '', minute: '', period: 'AM' }, id = (0,_wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .uniqueId */ .EL)('TimeInput-'), className, required, 'aria-describedby': ariaDescribedBy, }) {\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultValue);\n const timeLabelID = `${id}-time-label`;\n const hourLabelID = `${id}-hour-label`;\n const hourInputID = `${id}-hour-input`;\n const minuteLabelID = `${id}-minute-label`;\n const minuteInputID = `${id}-minute-input`;\n const periodLabelID = `${id}-period-label`;\n const periodSelectID = `${id}-period-input`;\n const handleHourChange = (e) => {\n const newState = { ...state, hour: e.target.value };\n // if hour is > 12, set daytime period to PM\n if (!Number.isNaN(parseInt(newState.hour, 10)) &&\n parseInt(newState.hour, 10) > 12) {\n newState.period = 'PM';\n }\n if (!newState.period) {\n newState.period = 'AM';\n }\n setState(newState);\n onChange?.(newState);\n };\n const handleHourOnBlur = (e) => {\n const newState = { ...state };\n // if hour is > 12, subtract 12 from the hour value to maintain 12 hour time\n if (!Number.isNaN(parseInt(e.target.value, 10)) &&\n parseInt(e.target.value, 10) > 12) {\n newState.hour = String(parseInt(e.target.value, 10) - 12);\n setState(newState);\n onChange?.(newState);\n }\n };\n const handleMinuteChange = (e) => {\n const newState = { ...state, minute: e.target.value };\n setState(newState);\n onChange?.(newState);\n };\n const handleSelectChange = (e) => {\n const newState = { ...state, period: e.target.value };\n setState(newState);\n onChange?.(newState);\n };\n const { container, inputContainer, input, label, separator, srOnly, } = useStyles$o();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(container, className), id: id, \"data-testid\": \"TimeInput\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: inputContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: label, id: timeLabelID },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$6.TIME_LABEL })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: hourInputID, id: hourLabelID, \"aria-labelledby\": `${timeLabelID} ${hourLabelID}`, className: srOnly },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$6.HOUR_LABEL })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { className: input, maxLength: 2, onChange: handleHourChange, onBlur: handleHourOnBlur, value: state.hour, placeholder: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$6.HOUR_PLACEHOLDER), id: hourInputID, required: required, \"aria-describedby\": ariaDescribedBy }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: separator }, \":\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: minuteInputID, id: minuteLabelID, \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`, className: srOnly },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$6.MINUTES_LABEL })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { className: input, maxLength: 2, onChange: handleMinuteChange, value: state.minute, placeholder: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$6.MINUTE_PLACEHOLDER), id: minuteInputID, \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`, required: required, \"aria-describedby\": ariaDescribedBy })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { id: periodLabelID, htmlFor: periodSelectID, className: label },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_sm_intl__WEBPACK_IMPORTED_MODULE_5__.T, { desc: COPY$6.DAYTIME_LABEL })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(NativeSelect, { id: periodSelectID, value: state.period, onChange: handleSelectChange, required: required },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { value: \"AM\", label: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$6.AM) }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { value: \"PM\", label: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$6.PM) })))));\n}\n\nconst useStyles$n = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const { fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: '7px',\n color: theme.answerColor,\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n marginBottom: '14px',\n },\n inputContainer: {\n display: 'flex',\n gap: '35px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexDirection: 'column',\n gap: '5px',\n },\n },\n inlineErrorContainer: {\n padding: '10px 0',\n fontSize: '16px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n '& ul': {\n padding: 0,\n margin: 0,\n },\n '& ul li': {\n paddingBottom: '0.2rem',\n listStyle: 'none',\n '&:before': {\n content: '\"*\"',\n marginRight: '5px',\n },\n },\n },\n };\n});\n\nconst COPY$5 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n DATE_INTL_FORMAT_ERROR: {\n id: 'DateTime.dateIntlFormatError',\n defaultMessage: 'Please provide date in DD/MM/YYYY format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error (using ISO 8601 US date character format notation)',\n },\n DATE_US_FORMAT_ERROR: {\n id: 'DateTime.dateUsFormatError',\n defaultMessage: 'Please provide date in MM/DD/YYYY format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error (using ISO 8601 international date character format notation)',\n },\n ERROR_ENTER_HOURS: {\n id: 'DateTime.errorEnterHours',\n defaultMessage: 'Please enter hours from 0 to 12.',\n description: '[Type: label][Vis: high] - label for incorrect or missing hour input',\n },\n ERROR_ENTER_MINUTES: {\n id: 'DateTime.errorEnterMinutes',\n defaultMessage: 'Please enter minutes from 0 to 59.',\n description: '[Type: label][Vis: high] - label for incorrect or missing minute input',\n },\n ERROR_SELECT_PERIOD: {\n id: 'DateTime.errorSelectPeriod',\n defaultMessage: 'Please select AM/PM.',\n description: '[Type: label][Vis: high] - label for incorrect or missing period selection',\n },\n});\nfunction DateTime({ id: questionId, required, choices = [], responses = [], showDate = true, showTime = true, dateFormat, onChange, inlineErrors = [], ...questionFieldProps }) {\n const [responseValues, setResponseValues] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(responses);\n const errorId = createErrorId(questionId);\n /** Translation keys may change so this separates the key from the message */\n const errorMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return {\n ERROR_PROVIDE_DATE_INTL_FORMAT: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$5.DATE_INTL_FORMAT_ERROR),\n ERROR_PROVIDE_DATE_US_FORMAT: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$5.DATE_US_FORMAT_ERROR),\n ERROR_ENTER_HOURS: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$5.ERROR_ENTER_HOURS),\n ERROR_ENTER_MINUTES: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$5.ERROR_ENTER_MINUTES),\n ERROR_SELECT_PERIOD: (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$5.ERROR_SELECT_PERIOD),\n };\n }, []);\n const getDateValueById = (id) => {\n const choice = responseValues.find((item) => item.id === id);\n return choice?.value.date;\n };\n const getTimeValueById = (id) => {\n const choice = responseValues.find((item) => item.id === id);\n return {\n hour: choice?.value.hour,\n minute: choice?.value.minute,\n period: choice?.value.period,\n };\n };\n const handleDateChange = (id, date) => {\n const newState = responseValues.filter((r) => r.id !== id);\n const prevState = responseValues.find((r) => r.id === id) ?? {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM',\n },\n };\n if (date) {\n const newResponse = {\n id,\n value: { ...prevState.value, date },\n };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const handleTimeChange = (id, time) => {\n const newState = responseValues.filter((r) => r.id !== id);\n const prevState = responseValues.find((r) => r.id === id) ?? {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM',\n },\n };\n if (time) {\n const newResponse = {\n id,\n value: { ...prevState.value, ...time },\n };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const { container, label, inputContainer, inlineErrorContainer, } = useStyles$n();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, \"data-testid\": \"DateTimeQuestionType\", ...questionFieldProps }, choices?.map((choice) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: container, key: choice.id, id: choice.id },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: label }, choice.label),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: inputContainer },\n showDate && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(DateInput, { onChange: (date) => handleDateChange(choice.id, date), value: getDateValueById(choice.id), dateFormat: dateFormat, required: required, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined })),\n showTime && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TimeInput, { onChange: (time) => handleTimeChange(choice.id, time), defaultValue: getTimeValueById(choice.id), required: required }))),\n inlineErrors.length > 0 && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: inlineErrorContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ul\", null, inlineErrors\n .filter((e) => e.fieldId === choice.id)\n .map((error) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", { key: `${error.fieldId}-${error.detail}` }, errorMessage[error.detail]))))))));\n })));\n}\nvar DateTime$1 = withErrorBoundary(DateTime);\n\nconst useStyles$m = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const defaultFontSize = theme.fontSize.body;\n const { fontFamily = 'inherit', fontWeight = 'inherit', fontStyle = 'inherit', textDecoration = 'inherit', highlightColor = 'inherit', color = 'inherit', } = theme.questionBody ?? {};\n return {\n otherStyles: {\n marginTop: '5px',\n display: 'block',\n },\n hiddenInput: {\n display: 'none',\n },\n commentChoice: {\n marginTop: 10,\n },\n label: {\n display: 'block',\n marginTop: '10px',\n position: 'relative',\n fontFamily,\n fontWeight,\n fontStyle,\n textDecoration,\n highlightColor,\n color,\n fontSize: defaultFontSize,\n },\n };\n});\n\n/**\n * MultipleChoice Question Type (Tier 2)\n */\nfunction Dropdown({ id: questionId, disabled, required: _required, readOnly: _readOnly, choices = [], choiceOther, choiceComment, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, otherOption, commentOption, } = useQuestionChoices([...choices, choiceOther, choiceComment]);\n const [responseValue, setResponseValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultResponses);\n const { otherStyles, hiddenInput, commentChoice } = useStyles$m();\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value;\n };\n /**\n * Default value for the choices\n */\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return defaultResponses.find((c) => c.type !== 'COMMENT')?.id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /**\n * Other Answer Textfield state\n */\n const [otherText, setOtherText] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((otherOption && getDefaultValueById(otherOption.id)) || '');\n const handleSelectChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.value);\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n if (type === 'ANSWER') {\n /** Want to update the value with the value of the TextField texts, when otherAnswer is selected */\n responses.push({ id, type, value: otherText });\n }\n else {\n responses.push({ id, type, value: e.target.value });\n }\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * Other Answer Textfield Change\n */\n const handleTextChange = (e) => {\n const choiceData = options.find((c) => c.type === 'ANSWER');\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n setOtherText(e.target.value);\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const isOtherAnswerSelected = !!responseValue.find((c) => c.type === 'ANSWER');\n const multipleTextLines = otherOption && otherOption?.linesCount > 1;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"DropdownQuestionType\", ...fieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(NativeSelect, { defaultValue: defaultValue, disabled: disabled, onChange: handleSelectChange },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { value: undefined }),\n \" \",\n sortableOptions?.map((choice) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { key: choice.id, id: choice.id, label: choice.label, value: choice.id }));\n }),\n otherOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { key: otherOption.id, id: otherOption.id, label: otherOption.label, value: otherOption.id }))),\n otherOption &&\n (multipleTextLines ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextArea$1, { defaultValue: getDefaultValueById(otherOption.id), autoFocus: false, rows: otherOption.linesCount, cols: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, onChange: handleTextChange, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected,\n }), tabIndex: isOtherAnswerSelected ? 0 : -1 })) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { defaultValue: getDefaultValueById(otherOption.id), autoFocus: false, autoHeight: true, size: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, onChange: handleTextChange, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected,\n }), tabIndex: isOtherAnswerSelected ? 0 : -1 }))),\n commentOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, className: commentChoice }))));\n}\nvar Dropdown$1 = withErrorBoundary(Dropdown);\n\nconst useStyles$l = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n imageChoice: {\n display: 'flex',\n position: 'relative',\n },\n labelContainer: ({ checked, disabled }) => {\n const borderColor = disabled && !checked ? 'transparent' : theme.primaryAccentColor;\n return {\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n cursor: 'pointer',\n width: '100%',\n border: [\n 1,\n 'solid',\n checked\n ? theme.questionColor\n : theme.questionBody.highlightColor ?? 'rgb(208, 210, 211)',\n ],\n borderRadius: 2,\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n '&:hover': {\n border: [1, 'solid', borderColor],\n },\n '&:focus-within': {\n border: [1, 'solid', borderColor],\n },\n };\n },\n controlImage: {\n position: 'absolute',\n right: '-1',\n top: '-1',\n width: '26px',\n height: '26px',\n transitionDuration: '0.3s',\n border: 'none',\n borderRadius: 2,\n zIndex: 10,\n transform: ({ checked }) => (checked ? 'scale(1)' : 'scale(0)'),\n },\n optionLabel: ({ checked }) => {\n return {\n padding: '9px 7px',\n width: '100%',\n wordWrap: 'break-word',\n fontWeight: checked ? 'bold' : 'normal',\n '&:focus-within': {\n background: theme.questionBody.highlightColor ?? 'rgb(208, 210, 211)',\n },\n };\n },\n imageContainer: {\n paddingTop: '75%',\n width: '100%',\n position: 'relative',\n '& > img': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n },\n inputContainer: {\n width: '100%',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: '#EFEFEF',\n },\n}));\n\nconst useStyles$k = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n imageInput: ({ checked, disabled, readOnly }) => {\n const checkBgColor = checked ? theme.questionColor : 'transparent';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.input.activeColor,\n border: 'none',\n borderRadius: 4,\n backgroundColor,\n '& .checkmark': {\n fill: (0,_theme_22bba55b_js__WEBPACK_IMPORTED_MODULE_9__.c)(theme.input.activeColor),\n },\n '& input': {\n cursor: 'pointer',\n },\n };\n },\n}));\n\nfunction ImageInput({ className, type, ...props }, ref) {\n const { inputProps, styleProps } = useInputStyles(props);\n const { imageInput } = useStyles$k(styleProps);\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(BaseInput$1, { ref: ref, type: type, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(imageInput, className), icon: react__WEBPACK_IMPORTED_MODULE_0__.createElement(CheckboxIcon$1, null), ...inputProps }));\n}\nvar ImageInput$1 = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ImageInput);\n\nfunction ImageChoice$2({ id, type, alt = '', label, src: imageSrc, className, checked, name, onChange, onKeyDown, onClick, disabled: disabledProp, 'aria-disabled': ariaDisabledProp, readOnly: readOnlyProp, 'aria-readonly': ariaReadOnlyProp, ...inputProps }, ref) {\n const handleChange = (e) => {\n onChange?.({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value,\n });\n };\n const handleClick = (e) => {\n onClick?.(e);\n if (e.isDefaultPrevented()) {\n return;\n }\n const target = e.target;\n let checkVal = true;\n if (!inputProps.required && checked) {\n checkVal = false;\n }\n onChange?.({\n id: target.id,\n checked: checkVal,\n value: target.value,\n });\n };\n const handleKeyboard = (e) => {\n onKeyDown?.(e);\n if (e.isDefaultPrevented()) {\n return;\n }\n const target = e.target;\n if (!inputProps.required && checked && e.code === 'Space') {\n e.preventDefault();\n onChange?.({\n id: target.id,\n checked: false,\n value: target.value,\n });\n }\n };\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const { imageChoice, controlImage, inputContainer, labelContainer, optionLabel, imageContainer, } = useStyles$l({\n disabled,\n readOnly,\n checked,\n });\n const imageId = `${id}-image`;\n const labelId = `${id}-label`;\n const ariaDescribeId = alt ? imageId : undefined;\n const imageInputEvents = type === 'radio'\n ? {\n onClick: handleClick,\n onKeyDown: handleKeyboard,\n onChange: handleChange,\n }\n : { onChange: handleChange };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: imageChoice },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(labelContainer, className), tabIndex: -1 },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: inputContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(ImageInput$1, { \"aria-labelledby\": labelId, \"aria-describedby\": ariaDescribeId, ref: ref, checked: checked, className: controlImage, id: id, type: type, value: id, name: name, ...inputProps, ...imageInputEvents }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: imageContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"img\", { id: imageId, src: imageSrc, alt: alt }))),\n label && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { id: labelId, className: optionLabel }, label)))));\n}\nvar ImageChoiceOption = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(ImageChoice$2);\n\nconst useStyles$j = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const isFull = theme.layout.includes('CENTER') || theme.layout.includes('BANNER');\n const isThird = theme.layout.includes('THIRD');\n const isHalf = theme.layout.includes('HALF') ||\n (theme.layout.includes('FULL') && !theme.layout.includes('CENTER'));\n const cols3 = 'repeat(3, minmax(0, 1fr))';\n const cols2 = 'repeat(2, minmax(0, 1fr))';\n const cols1 = 'minmax(0, 1fr)';\n return {\n imageChoiceContainer: {\n display: 'grid',\n flexWrap: 'wrap',\n gap: '25px',\n width: '100%',\n gridTemplateColumns: 'minmax(0, 1fr)',\n [`@media (min-width: ${theme.breakpoints?.md.min})`]: {\n gridTemplateColumns: isFull || isThird ? cols2 : cols1,\n },\n [`@media (min-width: ${theme.breakpoints?.lg.min})`]: {\n gridTemplateColumns: () => {\n if (isFull || isThird) {\n return cols3;\n }\n if (isHalf) {\n return cols2;\n }\n return cols1;\n },\n },\n [`@media (min-width: ${theme.breakpoints?.xl.min})`]: {\n gridTemplateColumns: isHalf ? cols2 : cols3,\n },\n },\n imageChoice: {\n width: '100%',\n },\n noneOfTheAboveContainer: {\n marginTop: '15px',\n },\n };\n});\n\nconst INPUT_SIZE$1 = 20;\nfunction ImageChoice({ id: questionId, readOnly, required, disabled, multiple = false, choices = [], choiceNoneOfTheAbove, onChange, responses = [], ...questionFieldProps }) {\n const imageChoiceType = multiple ? 'checkbox' : 'radio';\n const groupName = !multiple ? `${questionId}-imageChoice` : undefined;\n const errorId = createErrorId(questionId);\n const [selectedChoices, setSelectedChoices] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(responses);\n const handleChange = (e) => {\n const newState = !multiple\n ? []\n : selectedChoices.filter((c) => c.id !== e.id && c.type !== 'NOTA');\n if (e.checked) {\n newState.push({ id: e.id, value: e.value });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const handleNAChange = (e) => {\n const newState = [];\n if (e.checked) {\n newState.push({ id: e.id, value: e.value, type: 'NOTA' });\n }\n setSelectedChoices(newState);\n onChange?.(newState);\n };\n const isChecked = (id) => !!selectedChoices.find((item) => item.id === id);\n const { imageChoiceContainer, imageChoice, noneOfTheAboveContainer, } = useStyles$j();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, \"data-testid\": \"ImageChoiceQuestionType\", errorId: errorId, ...questionFieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: imageChoiceContainer }, choices?.map((choice) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(ImageChoiceOption, { key: choice.id, id: choice.id, required: required, disabled: disabled, readOnly: readOnly, label: choice.label, onChange: handleChange, className: imageChoice, value: choice.id, src: choice.image.url, alt: choice.image.altText || '', name: groupName, type: imageChoiceType, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, checked: isChecked(choice.id) }));\n })),\n choiceNoneOfTheAbove && choiceNoneOfTheAbove?.visible && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: noneOfTheAboveContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Checkbox$3, { id: choiceNoneOfTheAbove.id, value: choiceNoneOfTheAbove.id, onChange: handleNAChange, checked: isChecked(choiceNoneOfTheAbove.id), disabled: disabled, readOnly: readOnly, \"aria-describedby\": (questionFieldProps.error && errorId) || undefined, inputSize: INPUT_SIZE$1 }, choiceNoneOfTheAbove.label)))));\n}\nvar ImageChoice$1 = withErrorBoundary(ImageChoice);\n\nconst useStyles$i = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n imageStyles: {\n maxWidth: '100%',\n display: 'block',\n },\n});\n\nfunction Image({ alt = '', className, ...props }) {\n const { imageStyles } = useStyles$i();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"img\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(imageStyles, className), \"data-testid\": \"image\", alt: alt, ...props }));\n}\n\nconst useStyles$h = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n presentationalTitleStyles: {\n fontFamily: theme.questionTitle.fontFamily ?? 'inherit',\n fontSize: theme.questionTitle.fontSize ?? '16px',\n fontWeight: theme.questionTitle.fontWeight ?? (theme.isAccessible ? 500 : 300),\n marginBottom: '24px',\n textDecoration: theme.questionTitle.textDecoration ?? 'inherit',\n },\n buttonStyles: {\n marginTop: '20px',\n },\n };\n});\n\nfunction ImagePresentational({ text, image, padding = { top: 0, bottom: 0, left: 0, right: 0 }, id, okButton = { visible: false }, }) {\n const richTextId = `text-presentational-header-${id}`;\n const { presentationalTitleStyles, buttonStyles } = useStyles$h();\n const { visible: showButton, ...buttonProps } = okButton;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionSpacing, { padding: padding, \"data-testid\": \"ImagePresentational\" },\n text && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: richTextId, element: \"div\", text: text, className: presentationalTitleStyles })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Image, { ...image }),\n showButton && react__WEBPACK_IMPORTED_MODULE_0__.createElement(Button, { ...buttonProps, className: buttonStyles })));\n}\nvar ImagePresentational$1 = withErrorBoundary(ImagePresentational);\n\nconst useStyles$g = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n radioInput: {\n '& label': {\n alignItems: 'baseline',\n },\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n textInput: {\n opacity: ({ checked }) => (checked ? 1 : 0.5),\n cursor: ({ checked }) => (checked ? 'inherit' : 'pointer'),\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%',\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal',\n },\n checkHover: {\n '&:hover': {\n outline: 'none',\n },\n },\n}));\n\nfunction RadioTextfield({ refs, ...props }) {\n const { id, children: label, checked: checkedProp = false, value: valueProp, defaultValue, lineCount = 1, charCount = 50, maxLength, onClick, onChange, ...radioProps } = props;\n const radioGroup = useRadioGroup();\n const [checked, setChecked] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(checkedProp);\n const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultValue || valueProp);\n const radioInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const radioRef = useForkRef(radioInputRef, refs?.radio);\n const textInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const inputRef = useForkRef(textInputRef, refs?.text);\n const multipleTextLines = lineCount > 1;\n const handleValueChange = (e) => {\n radioGroup?.onChange(e);\n setValue(e.value);\n onChange?.(e);\n };\n const handleInputChange = (e) => {\n handleValueChange({ id, value: e.target.value, checked });\n };\n const handleFocusChange = (e) => {\n handleValueChange({ id, value: e.target.value, checked });\n };\n const handleClick = (e) => {\n /**\n * Selection via keyboard calls onClick event - check for\n * mouse-position to ensure we were called by a pointing device.\n */\n if (!checked && e.clientX !== 0 && e.clientY !== 0) {\n textInputRef?.current?.focus();\n }\n setChecked(true);\n onClick?.(e);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setChecked(checkedProp);\n }, [checkedProp]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (radioGroup?.value !== value) {\n setChecked(false);\n }\n }, [radioGroup, value]);\n const { radioInput, textInput, checkHover } = useStyles$g({\n checked,\n });\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(Radio$1, { id: `radio-input-${id}`, checked: checked, value: value, onClick: handleClick, onChange: handleValueChange, className: radioInput, ref: radioRef, ...radioProps }, label),\n multipleTextLines ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextArea$1, { id: `radio-field-${id}`, defaultValue: defaultValue, autoFocus: false, rows: lineCount, cols: charCount, maxLength: maxLength, onClick: handleClick, onChange: handleInputChange, onBlur: handleFocusChange, onFocus: handleFocusChange, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(textInput, {\n [checkHover]: !checked,\n }), ref: inputRef, tabIndex: checked ? 0 : -1 })) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { id: `radio-field-${id}`, defaultValue: defaultValue, autoFocus: false, autoHeight: true, size: charCount, maxLength: maxLength, onClick: handleClick, onChange: handleInputChange, onBlur: handleFocusChange, onFocus: handleFocusChange, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(textInput, {\n [checkHover]: !checked,\n }), ref: inputRef, tabIndex: checked ? 0 : -1 }))));\n}\n\nconst useStyles$f = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n commentChoiceContainer: {\n marginTop: '10px',\n },\n});\n\nconst INPUT_SIZE = 20;\n/**\n * MultipleChoice Question Type (Tier 2)\n */\nfunction MultipleChoice({ id: questionId, required, disabled, readOnly, columnLayout = 1, choices = [], choiceNoneOfTheAbove, choiceOther, choiceComment, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const groupId = createFieldId(questionId);\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, notaOption, otherOption, commentOption, } = useQuestionChoices([\n ...choices,\n choiceNoneOfTheAbove,\n choiceOther,\n choiceComment,\n ]);\n const [responseValue, setResponseValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value;\n };\n /**\n * Default value for the group\n */\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => defaultResponses.find((c) => c.type !== 'COMMENT')?.value, \n // defaultValues should not be changed post render (breaks rules of controlled components)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /**\n * Determine if choice is selected\n * @return TRUE if the choice.id exists in responses\n */\n const isChecked = (id) => {\n return !!responseValue.find((c) => c.id === id);\n };\n const handleRadioChange = (e) => {\n const choiceData = options.find((c) => e.id.match(c.id));\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n if (choiceData) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n responses.push({ id, type, value: e.target.value });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * deselect choice if the question is not required\n */\n const unCheckOption = () => {\n if (required) {\n return;\n }\n const responses = responseValue.filter((c) => c.type === 'COMMENT');\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleClick = (e) => {\n // match is used since RadioTextfield applies a prefix\n // to maintain unique ID's'\n const input = e.target;\n const isSelected = responseValue.find((c) => input.id.match(c.id));\n if (isSelected && input.checked) {\n e.preventDefault();\n unCheckOption();\n }\n };\n const handleKeyboard = (e) => {\n const isSelected = responseValue.find((c) => e.target.id.match(c.id));\n if (isSelected && e.code === 'Space') {\n e.preventDefault();\n unCheckOption();\n }\n };\n const radioEvents = { onClick: handleClick, onKeyDown: handleKeyboard };\n const radioGroupProps = {\n disabled,\n readOnly,\n name: groupId,\n defaultValue,\n onChange: handleRadioChange,\n };\n const { commentChoiceContainer } = useStyles$f();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"MultipleChoiceQuestionType\", ...fieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RadioGroup, { ...radioGroupProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionAnswerLayoutTemplate, { gridCellMargin: [0, 2, 5, 2], otherCellMargin: [0, 2, 5, 2], columns: columnLayout, other: otherOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(RadioTextfield, { id: otherOption.id, checked: isChecked(otherOption.id), defaultValue: getDefaultValueById(otherOption.id), lineCount: otherOption.linesCount, charCount: otherOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, otherOption.label)), noneOfTheAbove: notaOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Radio$1, { id: notaOption.id, value: notaOption.id, checked: isChecked(notaOption.id), \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, notaOption.label)) }, sortableOptions.map((choice) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Radio$1, { id: choice.id, key: choice.id, value: choice.id, checked: isChecked(choice.id), \"aria-describedby\": fieldProps.error && errorId, inputSize: INPUT_SIZE, ...radioEvents }, choice.label)))),\n commentOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, \"aria-describedby\": fieldProps.error && errorId, className: commentChoiceContainer })))));\n}\n\nconst useStyles$e = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const { fontSize, fontFamily, fontWeight } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'row',\n wordBreak: 'break-word',\n marginBottom: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexWrap: 'wrap',\n },\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n flex: '0 0 20%',\n marginRight: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flex: '0 0 100%',\n margin: '0 2px 2px 0',\n },\n },\n input: {\n marginTop: 'auto',\n flex: 'auto',\n },\n };\n});\n\nfunction MultipleTextbox({ id: questionId, required, disabled, readOnly, choices = [], responses = [], onChange, size, ...fieldProps }) {\n const [responseValues, setResponseValues] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(responses);\n const { error, errorId = createErrorId(questionId) } = fieldProps;\n const getDefaultValueById = (id) => {\n const defaultChoice = responseValues.find((item) => item.id === id);\n return defaultChoice?.value;\n };\n const handleChange = (e) => {\n const newState = responseValues.filter((response) => response.id !== e.target.id);\n if (e.target.value) {\n const newResponse = { id: e.target.id, value: e.target.value };\n newState.push(newResponse);\n }\n setResponseValues(newState);\n onChange?.(newState);\n };\n const { container, label, input } = useStyles$e();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"MultipleTextbox\", ...fieldProps }, choices?.map((choice) => {\n const labelId = `${choice.id}-label`;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: container, key: choice.id },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: label, id: labelId, htmlFor: choice.id },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: choice.label })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { id: choice.id, defaultValue: getDefaultValueById(choice.id), required: required, disabled: disabled, readOnly: readOnly, size: size, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, maxLength: TEXT_INPUT_MAX_CHARS, className: input })));\n })));\n}\n\nconst useStyles$d = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const fontWeightOptions = (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily);\n return {\n npsContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minWidth: 230,\n },\n npsLabel: {\n color: theme.questionColor,\n fontFamily: theme.questionBody.fontFamily,\n fontSize: 14,\n fontWeight: fontWeightOptions.light,\n lineHeight: 1.25,\n },\n npsRatingButtonList: {\n margin: 0,\n padding: 0,\n display: 'inline-flex',\n listStyleType: 'none',\n border: [1, 'solid', theme.primaryAccentColor],\n borderRadius: 4,\n overflow: 'hidden',\n outline: [2, 'solid', 'transparent'],\n outlineOffset: 2,\n width: '100%',\n },\n npsRatingButton: ({ isRTL }) => ({\n padding: 0,\n minWidth: 20,\n flex: '1 1 9.09%',\n '& + $npsRatingButton': {\n borderLeft: isRTL ? 0 : [2, 'solid', theme.primaryAccentColor],\n borderRight: isRTL ? [2, 'solid', theme.primaryAccentColor] : 0,\n },\n }),\n minLabel: ({ isRTL }) => ({\n margin: isRTL ? [0, 4, 2, 0] : [0, 0, 2, 4],\n }),\n maxLabel: ({ isRTL }) => ({\n margin: isRTL ? [0, 0, 2, 4] : [0, 4, 2, 0],\n }),\n srOnly: _wds_utils__WEBPACK_IMPORTED_MODULE_3__/* .visuallyHidden */ .jy,\n };\n});\n\nconst useStyles$c = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n // theme.correctAnswerHighlightColor is the correct color, but not an accurate token.\n const focusBackgroundColor = theme.correctAnswerHighlightColor;\n return {\n container: {\n position: 'relative',\n display: 'flex',\n cursor: 'pointer',\n },\n radio: {\n appearance: 'none',\n outline: 'none',\n position: 'absolute',\n width: '100%',\n height: '100%',\n '&:focus + $label, &:hover + $label': {\n border: [2, 'solid', theme.primaryAccentColor],\n backgroundColor: focusBackgroundColor,\n },\n '&:checked + $label': {\n backgroundColor: theme.questionColor,\n color: theme.primaryBackgroundColor,\n fontWeight: 'bold',\n transition: 'background 200ms ease',\n },\n },\n label: {\n position: 'relative',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n border: [2, 'solid', 'transparent'],\n backgroundColor: theme.primaryBackgroundColor,\n color: theme.questionColor,\n fontFamily: theme.fontFamily,\n fontSize: 15,\n fontWeight: 700,\n padding: [10, 0],\n width: '100%',\n },\n };\n});\nfunction NpsRatingButton({ id, className, children: label, component: Tag = 'div', ...props }) {\n const styles = useStyles$c();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Tag, { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(styles.container, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { id: id, type: \"radio\", className: styles.radio, ...props }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(styles.label), htmlFor: id }, label)));\n}\n\nconst COPY$4 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n NPS_QUESTION_TITLE: {\n id: 'Nps.QUESTION_TITLE',\n defaultMessage: '
On a scale of {minValue} to {maxValue},
{heading}
{minValue} for {minLabelText}, {maxValue} for {maxLabelText}
',\n description: '[Type: header][Vis: high] - question title',\n },\n});\nfunction Nps({ id: questionId, choices = [], className, title, rowId, responses: defaultResponses = [], onChange, ...fieldProps }) {\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const [responseValue, setResponseValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultValue);\n const ratingChanged = ({ target: { value: clickedAnswerValue }, }) => {\n if (clickedAnswerValue) {\n setResponseValue(clickedAnswerValue);\n const response = [{ id: rowId, value: clickedAnswerValue }];\n onChange?.(response);\n }\n };\n const { isRTL } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .L10NContext */ .kR);\n const errorId = createErrorId(questionId);\n const { npsContainer, npsLabel, minLabel, maxLabel, srOnly, npsRatingButtonList, npsRatingButton, } = useStyles$d({\n isRTL,\n });\n const { heading } = title;\n const minFullLabel = choices[0]?.label ?? '';\n const maxFullLabel = choices.slice(-1)[0]?.label ?? '';\n const [minLabelText, minValue] = minFullLabel.split(' - ');\n const [maxLabelText, maxValue] = maxFullLabel.split(' - ');\n const instructionsId = `${questionId}-instructions`;\n const accessibleHeading = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$4.NPS_QUESTION_TITLE, {\n minValue,\n maxValue,\n minLabelText,\n maxLabelText,\n heading,\n instructionsId,\n srOnlyClass: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(srOnly),\n });\n const accessibleTitle = {\n ...title,\n heading: accessibleHeading,\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"NpsQuestionType\", title: accessibleTitle, ...fieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(npsContainer, className) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(npsLabel, minLabel) }, minLabelText),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(npsLabel, maxLabel) }, maxLabelText),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ol\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(npsRatingButtonList) }, choices.map((c) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(NpsRatingButton, { id: `${questionId}-${c.id}`, key: `${questionId}-${c.id}`, name: `${questionId}-rating`, value: c.id, component: \"li\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(npsRatingButton), onChange: ratingChanged, defaultChecked: responseValue === c.id, \"aria-describedby\": instructionsId }, c.label.includes('-') ? c.label.split(' - ')[1] : c.label)))))));\n}\n\nconst useStyles$b = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n gridCell: {\n display: 'flex',\n flex: '1 auto',\n position: 'relative',\n padding: 3,\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n background: theme.correctAnswerHighlightColor,\n marginTop: '5px',\n marginBottom: '5px',\n },\n },\n}));\n\nfunction GridCell({ children, row, col, ...props }) {\n const { gridCell } = useStyles$b();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: gridCell, tabIndex: -1, ...{ col, row, ...props } }, children));\n}\n\nconst useStyles$a = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n labelVisible: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n textAlign: 'left',\n width: 150,\n padding: [3, 3, 3, 7],\n fontWeight: (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily).light,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: theme.questionBody.fontSize ?? {},\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n width: '100%',\n },\n },\n labelHidden: { display: 'none' },\n rowStyles: {\n display: 'flex',\n width: '100%',\n color: theme.answerColor,\n border: 'none',\n cursor: 'pointer',\n background: theme.correctAnswerHighlightColor,\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n flexDirection: 'column',\n marginTop: 5,\n marginBottom: 5,\n },\n },\n}));\n\nfunction GridRow({ id: rowId, row: rowIndex, label, columnDataArray, hideLabel, className, gridComponent, }) {\n const { rowStyles, labelHidden, labelVisible } = useStyles$a();\n const labelClass = hideLabel ? labelHidden : labelVisible;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"tr\", { id: rowId, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(className, rowStyles), \"data-row\": true },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"th\", { id: `${rowId}-header`, scope: \"row\", className: labelClass },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: label })),\n columnDataArray.map(({ id: colId }, colIndex) => {\n const cellId = `${rowId}-${colId}-cell`;\n const props = {\n rowId,\n rowIndex,\n colId,\n colIndex,\n label,\n 'aria-labelledby': `${rowId}-header ${colId}-header`,\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(GridCell, { id: cellId, key: cellId, row: rowIndex, col: colIndex }, gridComponent?.({ ...props })));\n })));\n}\n\nconst useStyles$9 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n gridContainer: {\n width: '100%',\n },\n gridStyles: {\n display: 'flex',\n flexWrap: 'wrap',\n color: theme.answerColor,\n border: 'none',\n },\n stripeBasic: {\n '& tr:nth-child(even)': {\n background: 'transparent',\n },\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n '& tr': {\n background: 'transparent',\n },\n },\n },\n stripeOther: {\n '& tr': {\n background: 'transparent',\n width: '100%',\n },\n // alternating elements 2 at a time (1+2, 5+6, 9+10) with n starting at 0\n '& tr:nth-child(4n+1), & tr:nth-child(4n+2)': {\n background: theme.correctAnswerHighlightColor,\n },\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n '& tr:nth-child(4n+1), & tr:nth-child(4n+2)': {\n background: 'transparent',\n },\n },\n },\n columnContainer: {\n display: 'flex',\n width: '100%',\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n display: 'none',\n },\n },\n columnHeader: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n flex: 1,\n padding: 3,\n color: theme.answerColor,\n fontWeight: (0,_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)(theme.questionBody.fontFamily).light,\n fontFamily: theme.questionBody.fontFamily ?? {},\n fontSize: 14,\n },\n bufferVisible: {\n width: '150px',\n },\n bufferHidden: { display: 'none' },\n}));\n\nfunction MatrixGrid({ id, className, rowDataArray, columnDataArray, commentColumnOtherOption, hideLabel, gridComponent, commentColumnComponent, useArrowKeyNavigation, }) {\n const gridRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const position = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({ row: 0, col: 0 });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n // gathers all others in the matrix\n const otherTabIndex = document.querySelectorAll(`[data-other] input`);\n // sets others tabIndex -1\n otherTabIndex.forEach((i) => {\n i.setAttribute('tabindex', '-1');\n });\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '0');\n });\n /** If true \"other\" inputs are rendered per-row */\n const hasCommentColumnOther = commentColumnOtherOption?.type === 'COMMENT_COLUMN' &&\n commentColumnComponent;\n let computedRows;\n if (hasCommentColumnOther) {\n // fill rows with artificial rows for the other column options\n computedRows = rowDataArray.reduce((acc, row) => {\n return [\n ...acc,\n row,\n {\n ...row,\n id: `${row.id}-other`,\n associatedId: row.id,\n isOtherRow: true,\n },\n ];\n }, []);\n }\n else {\n computedRows = rowDataArray;\n }\n const handleKeyDown = (e) => {\n const target = e.target;\n if (!gridRef.current?.contains(target)) {\n return;\n }\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n const nextColumn = position.current.col + 1;\n const nextRow = position.current.row + 1;\n const previousColumn = position.current.col - 1;\n const previousRow = position.current.row - 1;\n const currentOther = document.querySelector(`[data-other] [row='${position.current.row}'] input`);\n if (e.key === 'ArrowRight' && nextColumn < columnDataArray.length) {\n const nextElement = document.querySelector(`[col='${nextColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement?.focus();\n position.current = { col: nextColumn, row: position.current.row };\n }\n if (e.key === 'ArrowLeft' && previousColumn >= 0) {\n const nextElement = document.querySelector(`[col='${previousColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement?.focus();\n position.current = { col: previousColumn, row: position.current.row };\n }\n if (e.key === 'ArrowUp' && previousRow >= 0) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${previousRow}'] [data-component]`);\n const previousOther = document.querySelector(`[data-other] [row='${position.current.row - 1}'] input`);\n if (previousOther) {\n focusedElement?.setAttribute('tabindex', '-1');\n previousOther.setAttribute('tabindex', '0');\n previousOther?.focus();\n e.preventDefault();\n }\n else {\n currentOther?.setAttribute('tabindex', '-1');\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n nextElement?.focus();\n e.preventDefault();\n }\n position.current = { col: position.current.col, row: previousRow };\n }\n if (e.key === 'ArrowDown' && nextRow < computedRows.length) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${nextRow}'] [data-component]`);\n const nextOther = document.querySelector(`[data-other] [row='${position.current.row + 1}'] input`);\n if (nextOther) {\n focusedElement?.setAttribute('tabindex', '-1');\n nextOther.setAttribute('tabindex', '0');\n nextOther?.focus();\n e.preventDefault();\n }\n else {\n currentOther?.setAttribute('tabindex', '-1');\n focusedElement?.setAttribute('tabindex', '-1');\n nextElement?.setAttribute('tabindex', '0');\n nextElement?.focus();\n e.preventDefault();\n }\n position.current = { col: position.current.col, row: nextRow };\n }\n };\n const { gridStyles, columnContainer, columnHeader, bufferHidden, bufferVisible, stripeBasic, stripeOther, gridContainer, } = useStyles$9();\n const columnCount = columnDataArray.length;\n const renderStripe = commentColumnOtherOption ? stripeOther : stripeBasic;\n const bufferClass = hideLabel ? bufferHidden : bufferVisible;\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"table\", { onKeyDown: useArrowKeyNavigation ? handleKeyDown : undefined, tabIndex: -1, ref: gridRef, className: gridContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"thead\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"tr\", { className: columnContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: bufferClass }),\n columnDataArray.map((column) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"th\", { id: `${column.id}-header`, scope: \"col\", key: column.id, className: columnHeader },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", text: column.label })));\n }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"tbody\", { id: id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)(className, gridStyles, renderStripe) }, computedRows.map((row, rowIndex) => !row.isOtherRow ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(GridRow, { id: row.id, hideLabel: hideLabel, key: row.id, row: rowIndex, label: row.label, columnDataArray: columnDataArray, gridComponent: gridComponent })) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"tr\", { \"data-row\": true, \"data-other\": true, key: row.id },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(GridCell, { id: `${rowIndex}-${columnCount + 1}-cell`, \n // eslint-disable-next-line react/no-array-index-key\n key: `${rowIndex}-${columnCount + 1}-cell`, row: rowIndex, col: columnCount + 1, colSpan: columnCount + 1 }, commentColumnComponent?.({\n commentColumnOtherOption,\n row,\n columnCount,\n }))))))));\n}\n\nconst useStyles$8 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)(() => ({\n cellInputWrapper: () => {\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n };\n },\n}));\n\nconst UNSELECTED_OPTION = 'unselectedOption';\nconst COPY$3 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n SELECT_AN_OPTION: {\n id: 'MatrixDropdown.EmptyTopNativeSelect',\n defaultMessage: 'Select an option',\n description: 'Label for screen readers when the top/default selection is empty',\n },\n});\nfunction MatrixDropdown({ id: questionId, choices: rows = [], columnChoices: columns = [], choiceComment, onChange, responses: defaultResponses = [], disabled: _disabled, readOnly: _ro, ...questionFieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions: sortableRows, commentOption, } = useQuestionChoices([...rows, choiceComment]);\n const [responseValue, setResponseValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices (i.e. choiceComment)\n * Matrix provides a 2D Array construct\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value[0]?.value;\n };\n const handleChange = (e, gridCell) => {\n const { rowId, colId } = gridCell;\n const storedValuesForGrid = responseValue.filter((r) => !(r.id === rowId || r.type === 'COMMENT'));\n const rowDataContainingChange = responseValue.find((r) => r.id === rowId) || {\n id: rowId,\n value: [],\n };\n const prevCellsForChangedRow = rowDataContainingChange.value.filter((cell) => cell.id !== colId);\n const newCellData = { id: colId, value: e.target.value };\n // remove old data for the changed cell\n const newCellsForChangedRow = prevCellsForChangedRow.filter((cell) => cell.id !== colId);\n if (newCellData.value !== UNSELECTED_OPTION) {\n newCellsForChangedRow.push(newCellData);\n }\n // add the new row if at least one cell has a value other than UNSELECTED_OPTION\n const newRowForGrid = newCellsForChangedRow.length > 0\n ? [{ ...rowDataContainingChange, value: newCellsForChangedRow }]\n : [];\n const responses = [...storedValuesForGrid, ...newRowForGrid];\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n const response = { id, type, value: e.target.value };\n // @note: ensure to loop the values when transforming in RespWeb\n responses.push({\n id,\n type,\n value: [response],\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n /**\n * Default value for the choices\n */\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return defaultResponses.find((c) => c.type !== 'COMMENT')?.id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { cellInputWrapper } = useStyles$8();\n const selectAnOptionWithDashes = `-- ${(0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__.t)(COPY$3.SELECT_AN_OPTION)} --`;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, \"data-testid\": \"MatrixDropdownQuestionType\", errorId: errorId, ...questionFieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(MatrixGrid, { id: questionId, columnDataArray: columns, rowDataArray: sortableRows, \n // eslint-disable-next-line react/no-unstable-nested-components\n gridComponent: (gridCell) => {\n const { colId } = gridCell;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: cellInputWrapper },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(NativeSelect, { onChange: (e) => handleChange(e, gridCell), defaultValue: defaultValue, \"aria-labelledby\": gridCell['aria-labelledby'] },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { value: UNSELECTED_OPTION, label: selectAnOptionWithDashes }),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n columns\n .find((col) => col.id === colId)\n .choices.map((choice) => {\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SelectAnswerOption, { key: choice.id, id: choice.id, label: choice.label, value: choice.id }));\n }))));\n } }),\n commentOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS }))));\n}\n\nconst useStyles$7 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n cellInputWrapper: ({ checked }) => ({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n '&:hover': {\n border: [1, checked ? 'solid' : 'dashed', theme.questionColor],\n },\n backgroundColor: checked ? theme.input.bgColor : 'transparent',\n '&:focus-within': {\n backgroundColor: theme.input.bgColor,\n },\n justifyContent: 'center',\n padding: 5,\n borderRadius: 4,\n cursor: 'pointer',\n }),\n [`@media (max-width: ${theme.breakpoints?.xs.max})`]: {\n cellInputWrapper: {\n justifyContent: 'flex-start !important',\n alignItems: 'flex-start !important',\n },\n },\n labelForMobileView: ({ checked }) => ({\n marginLeft: 10,\n marginBottom: 2,\n fontWeight: checked ? 'bold' : null,\n }),\n [`@media (min-width: ${theme.breakpoints?.sm.min})`]: {\n labelForMobileView: { display: 'none' },\n },\n}));\n\nfunction RatingInput({ qid: questionId, gridCell, checked = false, isMultipleSelectionsPerRow = false, className, onChange, columnChoices, ...props }) {\n const { rowId = '', colId = '', 'aria-labelledby': ariaLabelledBy } = gridCell || {};\n const CheckboxOrRadio = isMultipleSelectionsPerRow\n ? CheckboxInput$1\n : RadioInput$1;\n const inputId = `${questionId}-${rowId}-${colId}`;\n const handleInputChange = (e) => {\n onChange?.({\n id: rowId,\n value: e.target.value,\n checked: e.target.checked,\n });\n };\n const { cellInputWrapper, labelForMobileView } = useStyles$7({ checked });\n const columnLabel = columnChoices.find((column) => column.id === colId)?.label || '';\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { htmlFor: inputId, \"aria-labelledby\": ariaLabelledBy, className: cellInputWrapper },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(CheckboxOrRadio, { id: inputId, value: colId, \"data-component\": true, tabIndex: -1, checked: checked, onChange: handleInputChange, className: className, ...props }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { element: \"span\", className: labelForMobileView, text: columnLabel })));\n}\n\nconst useStyles$6 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n gridComponentStyle: {\n display: 'flex',\n flexShrink: 0,\n width: 20,\n height: 20,\n },\n commentChoiceContainer: {\n width: '100%',\n },\n commentColumnContainer: {\n margin: '1em',\n },\n});\n\nfunction MatrixRating({ id: questionId, isMultipleSelectionsPerRow = false, choices = [], columnChoices = [], choiceOther, hideLabel, choiceNoneOfTheAbove, required, choiceComment, isForcedRanking, onChange, responses: defaultResponses = [], disabled: _disabled, readOnly: _ro, ...questionFieldProps }) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n const { options, sortableOptions, commentOption, commentColumnOption, columnOptions, } = useQuestionChoices([\n ...choices,\n choiceNoneOfTheAbove\n ? { ...choiceNoneOfTheAbove, type: 'NOTA' }\n : undefined,\n choiceOther,\n choiceComment,\n ], [\n ...columnChoices,\n choiceNoneOfTheAbove\n ? { ...choiceNoneOfTheAbove, type: 'NOTA' }\n : undefined,\n ]);\n const [responseValue, setResponseValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices (i.e. choiceComment)\n * Matrix provides a 2D Array construct\n */\n const getDefaultValueById = (id) => {\n const defaultChoice = defaultResponses.find((c) => c.id === id);\n return defaultChoice?.value[0]?.value;\n };\n const isChecked = (rowId, colId) => {\n return !!responseValue.find((r) => r.id === rowId && r.value.find((c) => c.id === colId));\n };\n const unCheckOption = (unSelectOptionID) => {\n if (required) {\n return;\n }\n const result = responseValue.filter((option) => {\n return option.id !== unSelectOptionID;\n });\n setResponseValue(result);\n onChange?.(result);\n };\n const handleClick = (e, gridCell) => {\n const input = e.target;\n const checkedOption = responseValue.find((option) => option.id === gridCell.rowId && option.value[0].id === gridCell.colId);\n if (input.checked && !!checkedOption) {\n e.preventDefault();\n unCheckOption(checkedOption.id);\n }\n };\n const handleKeyboard = (e, gridCell) => {\n const checkedOption = responseValue.find((option) => option.id === gridCell.rowId && option.value[0].id === gridCell.colId);\n if (checkedOption && e.code === 'Space') {\n e.preventDefault();\n unCheckOption(checkedOption.id);\n }\n };\n const handleChange = (e, gridCell) => {\n const { id: rowId, value: colId, checked } = e;\n const isNa = gridCell.colIndex > columnChoices.length - 1;\n const type = isNa ? 'NOTA' : undefined;\n const prevRows = responseValue.filter((r) => r.id !== rowId);\n const currentRow = (!isNa &&\n responseValue.find((r) => r.id === rowId && r.type !== 'NOTA')) || {\n id: rowId,\n value: [],\n type,\n };\n const currentCols = isMultipleSelectionsPerRow\n ? currentRow.value.filter((c) => c.value !== colId)\n : [];\n if (checked) {\n currentCols.push({ id: colId, value: colId });\n }\n const newRows = currentCols.length\n ? [{ ...currentRow, value: currentCols }]\n : [];\n if (isForcedRanking) {\n const filteredRows = prevRows.find((r) => r.value[0].value === currentCols[0].value);\n if (filteredRows && !isNa) {\n const found = prevRows.indexOf(filteredRows);\n prevRows.splice(found, 1);\n }\n }\n const rows = [...prevRows, ...newRows];\n const responses = rows;\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentChange = (e) => {\n const choiceData = options.find((c) => c.id === e.target.id);\n const responses = responseValue.filter((c) => c.type !== 'COMMENT');\n if (choiceData && !!e.target.value) {\n const { id, type } = choiceData;\n const response = { id, type, value: e.target.value };\n // @note: ensure to loop the values when transforming in RespWeb\n responses.push({\n id,\n type,\n value: [response],\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const handleCommentColumnChange = (e, associatedRowId) => {\n if (!commentColumnOption) {\n return; // mainly here for type-safety\n }\n const currentRowData = responseValue.find(({ id }) => id === associatedRowId);\n const allButNewValue = currentRowData?.value.filter(({ id }) => id !== commentColumnOption.id) ??\n [];\n const isDelete = !e.target.value &&\n !!currentRowData &&\n allButNewValue.length < currentRowData?.value.length;\n const newValue = isDelete\n ? allButNewValue\n : [\n ...allButNewValue,\n {\n id: commentColumnOption.id,\n value: e.target.value,\n type: 'COMMENT_COLUMN',\n },\n ];\n const responses = responseValue.filter(({ id }) => id !== associatedRowId);\n if (newValue.length > 0) {\n responses.push({\n id: associatedRowId,\n value: newValue,\n });\n }\n setResponseValue(responses);\n onChange?.(responses);\n };\n const { gridComponentStyle, commentChoiceContainer, commentColumnContainer, } = useStyles$6();\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, \"data-testid\": \"MatrixRatingQuestionType\", errorId: errorId, ...questionFieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(MatrixGrid, { id: questionId, hideLabel: hideLabel, columnDataArray: columnOptions, rowDataArray: sortableOptions, \n // eslint-disable-next-line react/no-unstable-nested-components\n gridComponent: (gridCell) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(RatingInput, { qid: questionId, gridCell: gridCell, isMultipleSelectionsPerRow: isMultipleSelectionsPerRow, checked: isChecked(gridCell.rowId, gridCell.colId), onChange: (e) => handleChange(e, gridCell), onClick: isMultipleSelectionsPerRow\n ? undefined\n : (e) => handleClick(e, gridCell), onKeyDown: isMultipleSelectionsPerRow\n ? undefined\n : (e) => handleKeyboard(e, gridCell), className: gridComponentStyle, columnChoices: columnOptions })), commentColumnOtherOption: commentColumnOption, commentColumnComponent: commentColumnOption\n ? // eslint-disable-next-line react/no-unstable-nested-components\n (commentProps) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: `${commentProps.row.id}-comment`, label: commentColumnOption?.label, onChange: (e) => commentProps.row.associatedId &&\n handleCommentColumnChange(e, commentProps.row.associatedId), lineCount: commentColumnOption.linesCount, charCount: commentColumnOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, className: commentColumnContainer }))\n : undefined, useArrowKeyNavigation: true }),\n commentOption && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(CommentChoice, { id: commentOption.id, label: commentOption.label, onChange: handleCommentChange, defaultValue: getDefaultValueById(commentOption.id), lineCount: commentOption.linesCount, charCount: commentOption.charsCount, maxLength: TEXT_INPUT_MAX_CHARS, className: commentChoiceContainer }))));\n}\n\nconst useStyles$5 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n const breakpointSmMin = `@media screen and (max-width: ${theme.breakpoints.sm.min})`;\n const { bgColor: listItemBackground, activeColor: listItemBorderActive, } = theme.input;\n const flexStart = 'flex-start';\n const lineHeight = 1.25;\n const controlsPadding = 6;\n const controlsFontSize = 'inherit';\n // helps align label-first-line to controls center\n const labelOffset = Math.floor(controlsPadding / lineHeight);\n return {\n listItem: {\n position: 'relative',\n userSelect: 'none',\n lineHeight: 0,\n outline: 'none',\n zIndex: ({ ghost }) => (ghost ? 5 : 'auto'),\n '&:active, &:focus, &:focus-within': {\n zIndex: 5,\n },\n '&:active $content, &:focus-within $content': {\n outlineWidth: 1,\n outlineStyle: ({ ghost }) => (ghost ? 'dashed' : 'solid'),\n outlineColor: listItemBorderActive,\n },\n '&:active $content, &:focus $content': {\n outlineWidth: 3,\n outlineStyle: ({ ghost }) => (ghost ? 'dashed' : 'solid'),\n outlineColor: listItemBorderActive,\n },\n },\n rankItemContainer: {\n display: 'flex',\n fontSize: theme.questionBody.fontSize,\n lineHeight,\n color: theme.questionBody.color,\n },\n orderIndex: {\n padding: '16px 5px 10px 5px',\n visibility: ({ ranksVisible }) => (ranksVisible ? 'visible' : 'hidden'),\n minWidth: '45px',\n display: 'flex',\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: flexStart,\n alignItems: flexStart,\n gap: 10,\n flex: '1 auto',\n borderWidth: 1,\n borderRadius: 4,\n borderStyle: 'solid',\n borderColor: 'transparent',\n background: (0,_sm_webassets_SurveyTheme_isDark__WEBPACK_IMPORTED_MODULE_10__/* [\"default\"] */ .Z)(theme.questionBody.color || '#fff')\n ? listItemBackground\n : 'rgba(255, 255, 255, 0.15)',\n padding: 10,\n cursor: 'move',\n [breakpointSmMin]: {\n flexWrap: 'wrap',\n },\n },\n dragHandle: {\n outline: 'none',\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n fontSize: controlsFontSize,\n lineHeight: 0,\n padding: controlsPadding,\n touchAction: 'none',\n '&::after': {\n content: \"''\",\n position: 'absolute',\n display: 'block',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n },\n label: {\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n display: 'flex',\n justifyContent: flexStart,\n alignItems: flexStart,\n flex: '1 auto',\n paddingTop: labelOffset,\n '& iframe': {\n position: 'relative',\n },\n overflowWrap: 'anywhere',\n [breakpointSmMin]: {\n order: 3,\n paddingLeft: '6px',\n width: '100%',\n },\n },\n controls: {\n visibility: ({ ghost }) => (ghost ? 'hidden' : 'visible'),\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10,\n fontSize: controlsFontSize,\n [breakpointSmMin]: {\n order: 2,\n flex: '1 1 auto',\n justifyContent: 'flex-end',\n },\n },\n };\n});\n\nfunction RankingRow({ className, dragListeners, dragRef, ghost, id, position, label, controls, onFocus, ranksVisible = true, ...props }, ref) {\n const { listItem, rankItemContainer, orderIndex, content: contentContainer, dragHandle: dragHandleContainer, label: labelContainer, controls: controlsContainer, } = useStyles$5({ ghost, ranksVisible });\n const labelId = `${id}-label`;\n const index = position ?? -1;\n const indexLabel = index >= 0 ? index + 1 : '';\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", { id: id, className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('rankItem', listItem, className), ref: ref, ...props },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: rankItemContainer },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('OrderIndex', orderIndex), \"data-testid\": \"RankingRow__OrderIndex\", \"aria-hidden\": true }, indexLabel),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('rankItem__content', contentContainer) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { \"data-testid\": \"RankingRow__DragHandle\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('rankItem__dragHandle', dragHandleContainer), onFocus: onFocus, \"data-pos\": index, ref: dragRef, ...dragListeners },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(DragHandleIcon$1, { className: \"rankItem__dragHandleIcon\" })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { \"data-testid\": \"RankingRow__Label\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('rankItem__label', labelContainer) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: labelId, element: \"div\", className: \"rankItem__richText\", translate: \"no\", text: label })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { \"data-no-dnd\": \"true\", \"data-testid\": \"RankingRow__Controls\", className: (0,_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.c)('rankItem__controls', controlsContainer) }, controls)))));\n}\nvar RankingRow$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(RankingRow);\n\n/**\n * OrderButton\n *\n * @todo: replace instances with reusable `Button` component that satisfies\n * all scenarios, variants and themes.\n */\nconst useStyles$4 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => ({\n orderButton: {\n color: '#000',\n backgroundColor: '#fff',\n fontSize: 'inherit',\n border: [1, 'solid', '#000'],\n borderRadius: 4,\n padding: [6, 6],\n maxWidth: '100%',\n cursor: 'pointer',\n lineHeight: 0,\n outlineColor: theme.primaryAccentColor,\n '&[aria-disabled]': {\n backgroundColor: 'rgba(255,255,255,.5)',\n borderColor: 'rgba(0,0,0,.5)',\n pointerEvents: 'none',\n cursor: 'default',\n },\n '&[aria-disabled] > svg': {\n opacity: 0.5,\n cursor: 'default',\n },\n '&:focus, &:focus-visible': {\n borderColor: theme.primaryAccentColor,\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n },\n '@media (hover: hover) and (pointer: fine)': {\n orderButton: {\n '&:hover': {\n borderColor: theme.primaryAccentColor,\n outline: `2px solid ${theme.primaryAccentColor}`,\n },\n },\n },\n srOnly: visuallyHidden,\n}));\nfunction OrderButton({ icon, children: label, className, disabled, ...props }) {\n const { orderButton, srOnly } = useStyles$4();\n return (React__default.createElement(\"button\", { type: \"button\", \"aria-disabled\": disabled || undefined, className: classNames('order-button', orderButton, className), ...props },\n icon,\n React__default.createElement(\"span\", { className: srOnly }, label)));\n}\n\nconst useStyles$3 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n controlsContainer: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10,\n },\n applicableControl: {\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n },\n});\n\nconst COPY$2 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n RANK_NA: {\n id: 'OrderControl.NA',\n defaultMessage: 'N/A',\n description: '[Type: label][Vis: high] - not applicable label',\n },\n ARIA_RANK_NA: {\n id: 'OrderControl.AriaNA',\n defaultMessage: 'Not Applicable',\n description: '[Type: label][Vis: high] - accessible not applicable label',\n },\n});\nconst RANK_DIRECTION_BACKWARD = (/* unused pure expression or super */ null && (-1));\nconst RANK_DIRECTION_FORWARD = 1;\nfunction OrderControl({ id, labels, position, showApplicability = true, applicable: defaultApplicable = true, className, onApplicableChange, onOrderUp, onOrderDown, disableOrderUp = false, disableOrderDown = false, ...props }) {\n const [applicable, setApplicable] = useState(defaultApplicable);\n const currentIndex = position ?? -1;\n const handleOrderUp = (_e) => {\n onOrderUp?.({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_BACKWARD,\n });\n };\n const handleOrderDown = (_e) => {\n onOrderDown?.({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_FORWARD,\n });\n };\n const handleApplicableChange = (e) => {\n const isApplicable = !e.target.checked;\n onApplicableChange?.({\n id,\n applicable: isApplicable,\n });\n setApplicable(isApplicable);\n };\n const applicableId = `${id}-applicable`;\n const { controlsContainer, applicableControl } = useStyles$3();\n return (React__default.createElement(\"div\", { id: id, className: classNames(controlsContainer, className), ...props },\n React__default.createElement(OrderButton, { disabled: disableOrderUp || !applicable, onClick: handleOrderUp, icon: React__default.createElement(CaretUpOutlineIcon, null) }, labels.orderUpLabel),\n React__default.createElement(OrderButton, { disabled: disableOrderDown || !applicable, onClick: handleOrderDown, icon: React__default.createElement(CaretDownOutlineIcon, null) }, labels.orderDownLabel),\n showApplicability && (React__default.createElement(\"label\", { className: classNames('order-na', applicableControl), htmlFor: applicableId, \"aria-label\": t(COPY$2.ARIA_RANK_NA) },\n React__default.createElement(CheckboxInput$1, { id: applicableId, checked: !applicable, onChange: handleApplicableChange }),\n React__default.createElement(T, { desc: COPY$2.RANK_NA })))));\n}\n\nconst useStyles$2 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n item: {},\n itemDisabled: {\n '& .rankItem__dragHandle::after': {\n cursor: 'default',\n },\n '& .rankItem__dragHandle, & .rankItem__label': {\n opacity: 0.5,\n },\n },\n});\n\nconst COPY$1 = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n ARIA_RANK_MOVE_UP: {\n id: 'RankingItem.AriaRankMoveUp',\n defaultMessage: 'Move up {label}',\n description: '[Type: button][Vis: high] - accessible rank move up label',\n },\n ARIA_RANK_MOVE_DOWN: {\n id: 'RankingItem.AriaRankMoveDown',\n defaultMessage: 'Move down {label}',\n description: '[Type: button][Vis: high] - accessible rank move down label',\n },\n});\nconst stripHTML = (str) => {\n const ref = document.createElement('div');\n ref.innerHTML = str;\n return ref.textContent || ref.innerText || '';\n};\nfunction RankingItem({ id, className, label, position: index, listLength, applicable, showApplicability, onApplicableChange, onOrderUp, onOrderDown, ranksVisible, ...props }) {\n const textOnlyLabel = stripHTML(label);\n const controlLabels = {\n orderUpLabel: t(COPY$1.ARIA_RANK_MOVE_UP, { label: textOnlyLabel }),\n orderDownLabel: t(COPY$1.ARIA_RANK_MOVE_DOWN, { label: textOnlyLabel }),\n };\n const { attributes, listeners, setNodeRef, transform, transition, isDragging, setActivatorNodeRef, } = useSortable({\n id,\n /*\n * role=listitem is forced to override DnD-kits use of role=button.\n * This re-instates proper a11y announcements of the role\n */\n attributes: { role: 'listitem', tabIndex: -1 },\n disabled: !applicable,\n data: {\n id,\n position: index,\n label,\n applicable,\n showApplicability,\n },\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n const handleOrderUp = (e) => {\n onOrderUp?.({ ...e, id });\n };\n const handleOrderDown = (e) => {\n onOrderDown?.({ ...e, id });\n };\n const handleApplicableChange = (e) => {\n onApplicableChange?.({ ...e, id });\n };\n const { item, itemDisabled } = useStyles$2({ applicable });\n return (React__default.createElement(RankingRow$1, { id: id, label: label, position: index, className: classNames(item, { [itemDisabled]: !applicable }, className), ref: setNodeRef, style: style, ghost: isDragging, ...attributes, dragListeners: listeners, dragRef: setActivatorNodeRef, ranksVisible: ranksVisible, controls: React__default.createElement(OrderControl, { id: `${id}-control`, position: index, applicable: applicable, showApplicability: !!showApplicability, onApplicableChange: handleApplicableChange, onOrderUp: handleOrderUp, onOrderDown: handleOrderDown, labels: controlLabels, disableOrderUp: index === 0, disableOrderDown: index === listLength - 1 }), ...props }));\n}\n\nconst useRankingIds = ({ rankings, choiceNotApplicable, }) => {\n return useMemo(() => {\n const order = rankings\n .filter((r) => !!r && r.visible)\n .sort((a, b) => Number(a.label) - Number(b.label))\n .map((r) => r.id);\n if (choiceNotApplicable) {\n order.push(choiceNotApplicable.id);\n }\n return order;\n }, [rankings, choiceNotApplicable]);\n};\nconst useRankingState = ({ choices, rankingIds, defaultResponses = [], choiceNotApplicable, }) => {\n const findResponseByChoiceId = (id) => defaultResponses.find((r) => r.id === id);\n const findPositionByRankId = (id) => rankingIds.findIndex((rid) => rid === id);\n return useState(() => {\n // Filter choices that exist and are visible, add rankable meta data\n return choices\n .filter((c) => !!c && c.visible)\n .map(({ id, label }, defaultIndex) => {\n const { value: rankId = rankingIds[defaultIndex], type } = findResponseByChoiceId(id) || {};\n const item = {\n id,\n label,\n type,\n value: rankId,\n applicable: rankId !== choiceNotApplicable?.id,\n index: findPositionByRankId(rankId),\n };\n return item;\n })\n .sort((a, b) => a.index - b.index);\n });\n};\n\n/* istanbul ignore file */\nfunction shouldHandleEvent(element) {\n let cur = element;\n while (cur) {\n if (cur.dataset && cur.dataset.noDnd) {\n return false;\n }\n cur = cur.parentElement;\n }\n return true;\n}\nconst defaultKeyboardCodes = {\n start: [_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.K.Space, _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.K.Enter],\n cancel: [_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.K.Esc],\n end: [_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.K.Space, _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.K.Enter],\n};\nclass PointerSensor extends _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.a {\n}\nPointerSensor.activators = [\n {\n eventName: 'onPointerDown',\n handler: ({ nativeEvent: event }, { onActivation }) => {\n if (!shouldHandleEvent(event.target)) {\n return false;\n }\n onActivation?.({ event });\n return true;\n },\n },\n];\nclass KeyboardSensor extends _vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__.b {\n}\nKeyboardSensor.activators = [\n {\n eventName: 'onKeyDown',\n handler: ({ nativeEvent: event }, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {\n const { code } = event;\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n if ((activator && event.target !== activator) ||\n !shouldHandleEvent(event.target)) {\n return false;\n }\n event.preventDefault();\n onActivation?.({ event });\n return true;\n }\n return false;\n },\n },\n];\n\nconst useStyles$1 = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)({\n list: {\n '& > *': {\n WebkitUserSelect: 'none',\n WebkitTouchCallout: 'none',\n },\n },\n listItem: {\n marginBottom: 10,\n },\n dragOverlay: {\n opacity: 0.5,\n '& .rankItem__orderIndex, & .rankItem__controls': {\n opacity: 0,\n },\n },\n srOnly: { ...visuallyHidden },\n});\n\nconst COPY = (0,_sm_intl__WEBPACK_IMPORTED_MODULE_5__/* .defineMessages */ .vU)({\n ARIA_RANK_MOVED_UP: {\n id: 'Ranking.AriaRankMovedUp',\n defaultMessage: '{label} moved up to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved up label',\n },\n ARIA_RANK_MOVED_DOWN: {\n id: 'Ranking.AriaRankMovedDown',\n defaultMessage: '{label} moved down to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved down label',\n },\n ARIA_RANK_MOVED_TO_TOP: {\n id: 'Ranking.AriaRankAtTop',\n defaultMessage: '{label} moved to the top of the list',\n description: '[Type: button][Vis: high] - accessible ranking at top of list',\n },\n ARIA_RANK_MOVED_TO_BOTTOM: {\n id: 'Ranking.AriaRankAtBottom',\n defaultMessage: '{label} moved to the bottom of the list',\n description: '[Type: button][Vis: high] - accessible ranking at bottom of list',\n },\n});\n/** Turn off a11y announcements for Drag and Drop in the DnDContext - this is handled by the order buttons */\nconst emptyStringNoop = () => '';\nconst dndAnnouncements = {\n onDragStart: emptyStringNoop,\n onDragMove: emptyStringNoop,\n onDragOver: emptyStringNoop,\n onDragEnd: emptyStringNoop,\n onDragCancel: emptyStringNoop,\n};\nconst dndAccessibility = {\n announcements: dndAnnouncements,\n screenReaderInstructions: {\n draggable: '',\n },\n};\nfunction Ranking({ id: questionId, disabled: _dis, readOnly: _ro, choices = /* istanbul ignore next: cannot reach default branch */ [], rankings = /* istanbul ignore next: cannot reach default branch */ [], choiceNotApplicable, responses: defaultResponses = [], onChange, hideRanks = false, ...fieldProps }) {\n /**\n * @author [kmukasa@surveymonkey.com]\n * @description The id has been modified to work in __hybrid__ mode. The `id` needs to\n * be different from the question-field `id` normally created/used.\n * @see https://code.corp.surveymonkey.com/webplatform/smquestions/pull/1204\n * @todo remove prefix 'hybrid-' when no longer required\n */\n const fieldId = `hybrid-${questionId}`;\n /**\n * @description `createLegendId` is used internally by [QuestionFieldLayoutTemplate](https://code.corp.surveymonkey.com/webplatform/smquestions/blob/master/packages/question-ui/src/capabilities/respondent-survey/components/QuestionFieldLayoutTemplate/QuestionFieldLayoutTemplate.tsx#L157)\n * to create an id. This `id` cannot be passed down via props. It is recreated here for `ARIA` referencing.\n */\n const questionTitleId = createLegendId(fieldId);\n const errorId = createErrorId(questionId);\n const sensors = useSensors(useSensor(PointerSensor));\n // toggles display of N/A choice\n const showApplicability = choiceNotApplicable !== undefined;\n // create ranking order (N/A choice is last)\n const rankingIds = useRankingIds({ rankings, choiceNotApplicable });\n const [, setActiveId] = useState(null);\n const [activeItem, setActiveItem] = useState(null);\n // for Aria-Live\n const [statusMessage, announceStatus] = useState('');\n const setAnnoucement = (str) => {\n setTimeout(() => announceStatus(''), 5000);\n announceStatus(str);\n };\n const [ranksVisible, setRanksVisible] = useState(hideRanks);\n const [listItems, setListItems] = useRankingState({\n choices,\n defaultResponses,\n choiceNotApplicable,\n rankingIds,\n });\n /* istanbul ignore next */\n const getItemIndices = (items, fromId, toId) => {\n const fromIndex = items.findIndex((item) => item.id === fromId);\n const toIndex = items.findIndex((item) => item.id === toId);\n return { fromIndex, toIndex };\n };\n /* istanbul ignore next */\n const moveById = (items, fromId, toId) => {\n const { fromIndex, toIndex } = getItemIndices(items, fromId, toId);\n return arrayMove(items, fromIndex, toIndex);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const moveItem = (fromId, toId) => {\n setListItems((items) => moveById(items, fromId, toId));\n };\n const { list, listItem, dragOverlay, srOnly } = useStyles$1();\n const orderedListProps = {\n /**\n * role is forced for a11y, so SR's will announce properly,\n * this is somehow lost or manipulated, possibly, by DnD-Kit\n */\n role: 'list',\n className: list,\n 'aria-labelledby': questionTitleId,\n };\n const updateRankingOrder = (current, next) => {\n const nextValue = Math.max(0, Math.min(next, listItems.length - 1));\n const responses = arrayMove(listItems, current, nextValue).map((response, index) => ({\n ...response,\n index,\n value: rankingIds[index],\n }));\n setRanksVisible(true);\n setListItems(responses);\n onChange?.(responses);\n };\n const announcePosition = (current, next, label) => {\n const nextPos = Math.max(0, Math.min(next, listItems.length - 1));\n if (current === nextPos)\n return; // no change in position\n const position = nextPos + 1; // announce non-zero base number\n let message = COPY.ARIA_RANK_MOVED_DOWN;\n if (nextPos <= 0) {\n // moved to top\n message = COPY.ARIA_RANK_MOVED_TO_TOP;\n }\n else if (nextPos < current) {\n // moved up\n message = COPY.ARIA_RANK_MOVED_UP;\n }\n else if (nextPos >= listItems.length - 1) {\n // moved to bottom\n message = COPY.ARIA_RANK_MOVED_TO_BOTTOM;\n }\n setAnnoucement(t(message, { label, position }));\n };\n const handleOrderUp = (e) => {\n const { id: rowId, value: currentPosition, direction = /* istanbul ignore next: cannot reach default branch */ 0, } = e;\n const item = listItems.find((li) => li.id === rowId);\n const nextPosition = currentPosition + direction;\n updateRankingOrder(currentPosition, nextPosition);\n announcePosition(currentPosition, nextPosition, item.label);\n };\n const handleOrderDown = (e) => {\n const { id: rowId, value: currentPosition, direction = /* istanbul ignore next: cannot reach default branch */ 0, } = e;\n const item = listItems.find((li) => li.id === rowId);\n const nextPosition = currentPosition + direction;\n updateRankingOrder(currentPosition, nextPosition);\n announcePosition(currentPosition, nextPosition, item.label);\n };\n const handleApplicableChange = (e) => {\n /* istanbul ignore else: should never branch */\n if (showApplicability) {\n const { id, applicable } = e;\n const responses = listItems.map((item) => ({\n ...item,\n ...(item.id === id ? { applicable } : {}),\n ...(item.id === id && !applicable\n ? { value: choiceNotApplicable.id }\n : {}),\n }));\n setListItems(responses);\n onChange?.(responses);\n }\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const handleDragStart = ({ active }) => {\n setActiveId(active.id);\n setActiveItem(active);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n const handleDragEnd = ({ active, over }) => {\n if (active.id !== over?.id) {\n moveItem(active.id, over?.id);\n }\n setRanksVisible(true);\n setActiveId(null);\n setActiveItem(null);\n };\n return (React__default.createElement(QuestionField, { id: `hybrid-${questionId}`, errorId: errorId, \"data-testid\": \"RankingQuestionType\", ...fieldProps },\n React__default.createElement(\"div\", { role: \"status\", \"aria-live\": \"assertive\", \"aria-atomic\": \"true\", className: srOnly }, statusMessage),\n React__default.createElement(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragStart: handleDragStart, onDragEnd: handleDragEnd, accessibility: dndAccessibility },\n React__default.createElement(SortableContext, { items: listItems, strategy: verticalListSortingStrategy },\n React__default.createElement(\"ol\", { ...orderedListProps }, listItems.map(({ id: itemId, label, applicable }, index) => {\n return (React__default.createElement(RankingItem, { id: itemId, key: itemId, label: label, position: index, listLength: listItems.length, applicable: applicable, showApplicability: !!showApplicability, onApplicableChange: handleApplicableChange, onOrderUp: handleOrderUp, onOrderDown: handleOrderDown, className: listItem, ranksVisible: ranksVisible }));\n })),\n React__default.createElement(DragOverlay, null, \n /* istanbul ignore next: cannot test drag-and-drop logic */ activeItem ? (React__default.createElement(RankingRow$1, { id: activeItem.id, className: dragOverlay, label: activeItem.data.current?.label, position: activeItem.data.current?.index, ranksVisible: ranksVisible })) : null)))));\n}\n\nfunction SingleTextbox({ id: questionId, required, disabled, readOnly, responses: defaultResponses = [], onChange, size, ...fieldProps }) {\n const { error, errorId = createErrorId(questionId), title: { id: titleId }, } = fieldProps;\n const defaultValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => defaultResponses.find((r) => !!r.value)?.value ?? '', \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const handleChange = (e) => {\n const responses = e.target.value\n ? [{ id: questionId, value: e.target.value }]\n : [];\n onChange?.(responses);\n };\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionField, { id: questionId, errorId: errorId, \"data-testid\": \"SingleTextboxQuestionType\", ...fieldProps },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(TextInput$1, { name: questionId, defaultValue: defaultValue, required: required, disabled: disabled, readOnly: readOnly, size: size, onChange: handleChange, \"aria-invalid\": !!error, \"aria-describedby\": error && errorId, \"aria-labelledby\": titleId, maxLength: TEXT_INPUT_MAX_CHARS }))));\n}\nvar SingleTextbox$1 = withErrorBoundary(SingleTextbox);\n\nconst useStyles = (0,react_jss__WEBPACK_IMPORTED_MODULE_7__/* .createUseStyles */ .QM)((theme) => {\n return {\n textPresentationalStyles: {\n fontFamily: theme.questionTitle.fontFamily ?? 'inherit',\n fontSize: theme.questionTitle.fontSize ?? '16px',\n fontWeight: theme.questionTitle.fontWeight ?? (theme.isAccessible ? 500 : 300),\n textDecoration: theme.questionTitle.textDecoration ?? 'inherit',\n fontStyle: theme.questionTitle.fontStyle ?? 'inherit',\n color: theme.questionTitle.color ?? 'inherit',\n },\n buttonStyles: {\n marginTop: '20px',\n },\n };\n});\n\nfunction TextPresentational({ text, padding = { top: 0, bottom: 0, left: 0, right: 0 }, id, okButton = { visible: false }, }) {\n const richTextId = `text-presentational-${id}`;\n const { textPresentationalStyles, buttonStyles } = useStyles();\n const { visible: showButton, ...buttonProps } = okButton;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(QuestionSpacing, { padding: padding, \"data-testid\": \"TextPresentational\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(RichText, { id: richTextId, element: \"div\", text: text, className: textPresentationalStyles }),\n showButton && react__WEBPACK_IMPORTED_MODULE_0__.createElement(Button, { ...buttonProps, className: buttonStyles })));\n}\nvar TextPresentational$1 = withErrorBoundary(TextPresentational);\n\n\n//# sourceMappingURL=respondent-survey.js.map\n\n\n/***/ })\n\n}]);"],"names":["self","push","__unused_webpack___webpack_module__","__webpack_exports__","__webpack_require__","d","Nps","TextPresentational$1","Dropdown$1","MultipleTextbox","MatrixDropdown","Checkbox$1","SingleTextbox$1","MultipleChoice","ImagePresentational$1","DateTime$1","CommentBox$1","MatrixRating","CaretDownOutlineIcon","ImageChoice$1","react__WEBPACK_IMPORTED_MODULE_0__","_vendor_3a2071be_js__WEBPACK_IMPORTED_MODULE_1__","react_jss__WEBPACK_IMPORTED_MODULE_7__","react_jss__WEBPACK_IMPORTED_MODULE_8__","_sm_utils__WEBPACK_IMPORTED_MODULE_2__","_wds_utils__WEBPACK_IMPORTED_MODULE_3__","react_dom__WEBPACK_IMPORTED_MODULE_4__","_sm_intl__WEBPACK_IMPORTED_MODULE_5__","_sm_webassets_SurveyTheme_getFontWeights__WEBPACK_IMPORTED_MODULE_6__","_theme_22bba55b_js__WEBPACK_IMPORTED_MODULE_9__","_sm_webassets_SurveyTheme_isDark__WEBPACK_IMPORTED_MODULE_10__","useStyles$X","QM","rowStyles","display","flexWrap","alignItems","Row","id","className","children","props","createElement","c","useStyles$W","tooltip","theme","breakpoints","md","min","position","left","center","bottom","width","transform","textAlign","zIndex","fontSize","height","backgroundColor","content","marginLeft","boxShadow","tooltipBody","maxWidth","color","fontWeight","fontFamily","fontStyle","background","padding","lineHeight","borderRadius","defaultSelectors","useFocusTrap","selectors","focusRef","useRef","focusableEls","setEls","useState","useEffect","current","els","Array","from","querySelectorAll","join","handleKeyDown","e","key","handleFocus","focusableElements","firstElement","lastElement","length","shiftKey","document","activeElement","focus","preventDefault","addEventListener","removeEventListener","useStyles$V","modalOverlay","top","right","justifyContent","modal","minHeight","marginBottom","closeBtn","cursor","border","marginTop","tooltipText","questionBody","COPY$e","vU","CLOSE_MODAL","defaultMessage","description","Modal","closeModal","closeRef","tooltipId","EL","handleClick","stopPropagation","currentTarget","target","handleKeydown","onClick","ref","role","type","t","Tooltip","container","offsetWidth","text","getAttribute","Fg","showModal","setShowModal","mode","setMode","setAttribute","hasAttribute","openModal","mql","window","matchMedia","matches","code","modalEl","tooltipEl","containerEl","body","createPortal","listSpacing","margin","mediaReset","useStyles$U","richTextContent","textDecoration","outline","listStyleType","listStyle","verticalAlign","borderBottom","sanitizeOptions","ADD_TAGS","ADD_ATTR","RichText","elementId","element","Element","containerProps","tooltipNodes","setTooltipNodes","tooltipRef","el","Fragment","dangerouslySetInnerHTML","__html","sanitizeString","translate","map","useStyles$T","size","iconSize","chosenColor","palette","main","fill","getDisplayName","Component","displayName","name","useSurveyIconStyles","svgContainer","instance","withSvgIcon","SvgIcon","ariaLabelledBy","title","viewBox","styles","hasTitle","iconTitleId","preserveAspectRatio","undefined","focusable","IconDocumentX","withIcon","WithIcon","rest","classes","wdsIcons","getOriginalComponent","useStyles$S","fallbackComponent","questionColor","errorMessage","COPY$d","ERROR","FallbackComponent","withErrorBoundary","ComponentWithErrorBoundary","E","createFieldId","questionId","createLegendId","createErrorRowId","createErrorId","useQuestionChoices","choices","columns","options","filter","visible","columnOptions","sortableOptions","notaOption","find","otherOption","commentOption","commentColumnOption","useStyles$R","button","nextButton","minWidth","overflowWrap","transition","outlineOffset","answerColor","COPY$c","OK_LABEL","Button","slicedText","slice","useSSRSafeLayoutEffect","useLayoutEffect","EmptyFn","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","useStyles$Q","visuallyHidden","jy","VisuallyHidden$1","useStyles$P","paddingBox","paddingTop","paddingBottom","paddingLeft","paddingRight","format","QuestionSpacing","useOnFocusLeave","focusCallback","ele","contains","relatedTarget","useStyles$O","footerRow","hasFooterPadding","containerStyles","errorRow","overflow","formReset","headerRow","COPY$b","QUESTION_TITLE","QuestionFieldLayoutTemplate","footer","clickShield","error","onSubmit","onLeave","containerRef","errorRef","lastShownError","setLastShownError","useCallback","event","isAnimating","hasError","initialHeight","offsetHeight","style","toValue","animate","fromValue","onStart","onUpdate","onComplete","duration","delay","easingType","startTime","performance","now","tick","elapsed","time","getValue","start","end","easing","callback","updateAnimation","requestAnimationFrame","setTimeout","next","fieldsetRef","errorRowId","fieldId","questionTitleId","T","desc","tabIndex","calculateMaxNumOfChildrenPerColumn","total","childrenPerColumn","Math","floor","sliceChildren","childrenArr","maxCellsPerCol","totalColumns","index","result","partialColumnsCount","fullColumnsCount","useStyles$N","containerVertical","containerHorizontal","column","flexDirection","columnHorizontal","columnHorizontalAutoAdjust","xs","lg","sm","max","xxs","answerLayoutCell","gridCellMargin","flex","wordBreak","otherLayoutCell","otherCellMargin","QuestionAnswerLayoutTemplate","other","noneOfTheAbove","adjustToContent","isHorizontal","columnGroups","useMemo","totalChildren","Children","count","childrenArray","toArray","answersPerColumn","columnClassNames","col","columnIndex","cell","cellIndex","WarningIcon$1","clipRule","fillRule","stroke","useStyles$M","icon","alignSelf","flexShrink","validationMessage","isDark","gap","ValidationMessage","tag","Wrapper","useStyles$L","breakpointMedium","breakpointXsMin","fontWeightOptions","Z","inputArea","medium","cols","textSizeAdjust","primaryAccentColor","borderColor","input","bgColor","opacity","TextArea$1","forwardRef","disabled","required","readOnly","forwardedRef","spellCheck","useStyles$K","inputField","autoHeight","TextInput$1","onChange","handleChange","useStyles$J","commentLabelText","commentLabel","CommentChoice","label","lineCount","charCount","htmlFor","multipleTextLines","rows","textReset","useStyles$I","questionTitleFormatting","questionTitle","questionTitleFontSize","addonContainer","questionNumber","isRTL","useDefaultFrontSize","isAccessible","whiteSpace","wordWrap","requiredAsterisk","richText","RespondentQuestionTitle","addon","heading","number","numbered","useContext","kR","defaultOKConfig","QuestionField","titleProps","okButton","showButton","okButtonProps","errorId","errorIdProp","useInputStyles","checked","isChecked","defaultChecked","isDefaultChecked","isDisabled","isAriaDisabled","isReadOnly","isAriaReadOnly","setIsChecked","inputProps","styleProps","radioGroupContext","createContext","useRadioGroup","useControlledState","controlled","default","defaultProp","state","isControlled","valueState","setValue","setValueIfUncontrolled","newValue","setRef","value","useForkRef","refA","refB","refValue","RadioGroup","nameProp","valueProp","defaultValue","divProps","setValueState","Provider","useStyles$H","inputContainer","pointerEvents","controlIcon","BaseInput$1","checkedProp","disabledProp","ariaDisabledProp","readOnlyProp","ariaReadOnlyProp","setChecked","nativeEvent","defaultPrevented","newChecked","cloneElement","RadioIcon$1","rx","ry","useStyles$G","radioInput","RadioInput$1","marginTopHelper$1","useStyles$F","correctAnswerHighlightColor","light","inputSize","marginRight","Radio$1","radioGroup","controlLabel","useStyles$E","breakpointSmMax","rowLabel","rowRadio","radioWidth","BestWorstRow","rowId","columnIds","onKeyDown","bestColId","worstColId","bestRadioId","worstRadioId","labelId","radioEvents","useStyles$D","rowList","headerColumn","labelColumn","labelWidth","_dis","_ro","fields","responses","columnChoices","questionFieldProps","selectedChoices","setSelectedChoices","bestAnswerColumn","worstAnswerColumn","rowFields","getRadioSelection","unCheckOption","newChoices","radioId","match","rowValue","row","isSelected","handleKeyboard","field","CheckboxIcon$1","SelectIcon$1","points","strokeLinejoin","strokeWidth","CaretDownIcon","CaretLeftOutlineIcon","CaretRightOutlineIcon","DragHandleIcon$1","CalendarIcon","useStyles$C","checkBgColor","CheckboxInput$1","checkboxInput","marginTopHelper","useStyles$B","Checkbox$3","checkboxContainer","useStyles$A","checkbox","labelContainer","textInput","checkHover","CheckboxTextfield","inputValue","maxLength","checkboxProps","handleValueChange","handleInputChange","inputRef","handleCheckboxClick","clientX","clientY","handleTextboxClick","useStyles$z","commentChoiceContainer","_req","columnLayout","choiceNoneOfTheAbove","choiceOther","choiceComment","item","newState","handleNAChange","handleOtherChange","handleCommentChange","choice","linesCount","charsCount","defaultResponses","fieldProps","titleId","r","useStyles$y","selectContainerStyles","selectStyles","mozAppearance","webkitAppearance","appearance","selectIconStyles","disabledStyles","NativeSelect","iconClasses","iconProps","useStyles$x","selectOption","SelectAnswerOption","useStyles$w","inputGroup","rtl","buttonIcon","isOpen","ComboBoxInputGroup","open","close","ariaActiveDescendant","ariaAutocomplete","ariaControls","ariaLabel","useImperativeHandle","useStyles$v","listBox","overflowY","overflowX","scrollToItem","itemRect","ulRect","getBoundingClientRect","scrollTop","numItemsVisible","containerHeight","itemHeight","round","focusNext","focusedIndex","itemCount","visibleItemCount","focusItem","lastIndex","externalFocusedIndex","setFocusedIndex","itemsRef","ulRef","dataset","HTMLUListElement","includes","HTMLLIElement","indexOf","interactiveProps","child","isValidElement","selected","useStyles$u","listBoxItem","ListBoxItem","useStyles$t","listBoxContainer","ARIA_ACTIVEDESCENDANT","VirtualizedListBox","itemSize","listRef","innerRef","outerRef","listElement","removeAttribute","toString","F","innerElementType","overscanCount","useStyles$s","comboBox","direction","ComboBox","filterOnChange","outsideValue","optionAlign","comboBoxRef","listBoxRef","setIsOpen","currentOptions","setCurrentOptions","filterActive","setFilterActive","valueOnOpen","setValueOnOpen","firstRender","closeListBox","openListBox","option","matchingOption","altKey","textContent","handleListBoxClick","activeDescendant","clientWidth","clip","clipPath","useStyles$r","srOnly","VisuallyHidden","Tag","useCalendarStyles","calendarPickerWrapper","calendarControls","comboboxWrapper","flexGrow","monthWrapper","gridTemplateColumns","gridGap","useMonthStyles","weekdayLabel","weekGrid","useDayStyles","dayDefault","daySelected","daySelectedFirstOrLast","dayDisabled","COPY$a","DAY_OF_MONTH","Day","dayLabel","date","focusedDate","isDateSelected","isDateFocused","isDateHovered","onDateHover","onDateSelect","onDateFocus","isFirstOrLastSelectedDate","dayRef","isSelectedStartOrEnd","isWithinHoverRange","disabledDate","onMouseEnter","N","isDateBlocked","dayInCalendar","COPY$9","DAY_OF_WEEK_LEGEND_SHORT","DAY_OF_WEEK_LEGEND_FULL","Month","year","month","firstDayOfWeek","dayProps","days","weekdayLabels","values","dayOfTheWeek","day","emptyDayKey","COPY$8","PREVIOUS_MONTH","NEXT_MONTH","MONTH_SELECT","YEAR_SELECT","MONTHS","startingYear","Date","getFullYear","yearOptions","_","comboBoxSeedId","CalendarPicker","onDaySelect","onDateChange","initialSelectedDate","startingDayOfWeek","monthNamesIndex","focusTrapRef","comboboxId","selectId","setState","handleDateChange","startDate","activeMonths","goToDate","Y","endDate","focusedInput","P","onDatesChange","numberOfMonths","minBookingDays","exactMinBookingDays","currentMonth","monthNames","months","monthOptions","handleMonthChange","monthIndex","findIndex","i","newDate","getDate","handleYearChange","parseInt","handleGoToPreviousMonths","getPreviousMonth","getMonth","prevMonthLastDay","handleGoToNextMonths","getNextMonth","nextMonthLastDay","useStyles$q","visibility","calendarVisibility","DisclosureContainer","onClose","disclosureRef","clickedOutside","comboBoxOptionClicked","startsWith","US_DATE_FORMAT","validDateStringCheck","badValues","isValid","dateString","every","isNaN","toDateString","segments","toISOString","split","y","m","s","stringToDate","padStart","useStyles$p","dateInputWrapper","dateInput","maxHeight","calendarButton","calendarWrapper","calendarPosition","COPY$7","DATE_LABEL","DATE_BUTTON_LABEL","INTL_DATE_FORMAT","DateInput","dateFormat","ariaDescribedBy","setCalendarVisibility","dateInputID","calendarButtonRef","inputBound","disclosureBound","lastFocus","handleCalendarVisibility","handleDisclosureClose","handleDaySelect","placeholder","useStyles$o","separator","COPY$6","TIME_LABEL","HOUR_LABEL","MINUTES_LABEL","DAYTIME_LABEL","AM","PM","HOUR_PLACEHOLDER","MINUTE_PLACEHOLDER","TimeInput","hour","minute","period","timeLabelID","hourLabelID","hourInputID","minuteLabelID","minuteInputID","periodLabelID","periodSelectID","handleHourChange","Number","handleHourOnBlur","String","handleMinuteChange","handleSelectChange","onBlur","useStyles$n","inlineErrorContainer","COPY$5","DATE_INTL_FORMAT_ERROR","DATE_US_FORMAT_ERROR","ERROR_ENTER_HOURS","ERROR_ENTER_MINUTES","ERROR_SELECT_PERIOD","showDate","showTime","inlineErrors","responseValues","setResponseValues","ERROR_PROVIDE_DATE_INTL_FORMAT","ERROR_PROVIDE_DATE_US_FORMAT","getDateValueById","getTimeValueById","prevState","newResponse","handleTimeChange","detail","useStyles$m","defaultFontSize","highlightColor","otherStyles","hiddenInput","commentChoice","_required","_readOnly","responseValue","setResponseValue","getDefaultValueById","defaultChoice","otherText","setOtherText","choiceData","handleTextChange","isOtherAnswerSelected","autoFocus","useStyles$l","imageChoice","controlImage","transitionDuration","optionLabel","imageContainer","objectFit","useStyles$k","activeColor","ImageInput$1","imageInput","ImageChoiceOption","alt","src","imageSrc","isDefaultPrevented","checkVal","imageId","useStyles$j","isFull","layout","isThird","isHalf","cols3","cols2","cols1","imageChoiceContainer","xl","noneOfTheAboveContainer","multiple","imageChoiceType","groupName","image","url","altText","useStyles$i","imageStyles","Image","useStyles$h","presentationalTitleStyles","buttonStyles","richTextId","buttonProps","useStyles$g","RadioTextfield","refs","radioProps","radioInputRef","radioRef","radio","textInputRef","handleFocusChange","onFocus","useStyles$f","groupId","handleRadioChange","useStyles$e","response","useStyles$d","npsContainer","npsLabel","npsRatingButtonList","npsRatingButton","borderLeft","borderRight","minLabel","maxLabel","useStyles$c","focusBackgroundColor","primaryBackgroundColor","NpsRatingButton","component","COPY$4","NPS_QUESTION_TITLE","ratingChanged","clickedAnswerValue","minFullLabel","maxFullLabel","minLabelText","minValue","maxLabelText","maxValue","instructionsId","accessibleHeading","srOnlyClass","accessibleTitle","useStyles$b","gridCell","GridCell","useStyles$a","labelVisible","labelHidden","GridRow","rowIndex","columnDataArray","hideLabel","gridComponent","scope","colId","colIndex","cellId","useStyles$9","gridContainer","gridStyles","stripeBasic","stripeOther","columnContainer","columnHeader","bufferVisible","bufferHidden","MatrixGrid","rowDataArray","commentColumnOtherOption","commentColumnComponent","useArrowKeyNavigation","gridRef","otherTabIndex","forEach","focusedElement","querySelector","hasCommentColumnOther","computedRows","reduce","acc","associatedId","isOtherRow","nextColumn","nextRow","previousColumn","previousRow","currentOther","nextElement","previousOther","nextOther","columnCount","colSpan","useStyles$8","cellInputWrapper","UNSELECTED_OPTION","COPY$3","SELECT_AN_OPTION","_disabled","sortableRows","storedValuesForGrid","rowDataContainingChange","prevCellsForChangedRow","newCellData","newCellsForChangedRow","newRowForGrid","selectAnOptionWithDashes","useStyles$7","labelForMobileView","RatingInput","qid","isMultipleSelectionsPerRow","inputId","columnLabel","useStyles$6","gridComponentStyle","commentColumnContainer","isForcedRanking","unSelectOptionID","checkedOption","isNa","prevRows","currentRow","currentCols","newRows","filteredRows","found","splice","handleCommentColumnChange","associatedRowId","currentRowData","allButNewValue","isDelete","commentProps","useStyles$5","breakpointSmMin","listItemBackground","listItemBorderActive","flexStart","controlsFontSize","listItem","userSelect","ghost","outlineWidth","outlineStyle","outlineColor","rankItemContainer","orderIndex","ranksVisible","borderWidth","borderStyle","dragHandle","touchAction","controlsPadding","order","controls","shouldHandleEvent","cur","noDnd","parentElement","dragListeners","dragRef","contentContainer","dragHandleContainer","controlsContainer","orderButton","applicableControl","RANK_NA","ARIA_RANK_NA","itemDisabled","ARIA_RANK_MOVE_UP","ARIA_RANK_MOVE_DOWN","defaultKeyboardCodes","K","Space","Enter","cancel","Esc","PointerSensor","a","activators","eventName","handler","onActivation","KeyboardSensor","b","keyboardCodes","active","activator","activatorNode","list","WebkitUserSelect","WebkitTouchCallout","dragOverlay","ARIA_RANK_MOVED_UP","ARIA_RANK_MOVED_DOWN","ARIA_RANK_MOVED_TO_TOP","ARIA_RANK_MOVED_TO_BOTTOM","useStyles","textPresentationalStyles"],"sourceRoot":""}