@oncehub/ui-react 2.2.0-beta.8 → 2.2.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui-react.es.js +316 -1623
- package/dist/ui-react.es.js.map +1 -1
- package/dist/ui-react.umd.js +2 -2
- package/dist/ui-react.umd.js.map +1 -1
- package/package.json +3 -2
package/dist/ui-react.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-react.umd.js","names":["React"],"sources":["../src/lib/components/button/button.module.scss","../node_modules/@oncehub/relative-luminance/lib/index.js","../src/lib/components/colors.service.ts","../src/lib/components/button/button.tsx","../src/lib/components/checkbox/checkbox.module.scss","../src/lib/components/checkbox/checkbox.tsx","../src/lib/components/multi-line-input/multi-line-input.module.scss","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/react-device-detect/dist/lib.js","../src/lib/components/multi-line-input/multi-line-input.tsx","../src/lib/components/multi-select/multi-select.module.scss","../src/lib/components/common/pseudo-checkbox/psuedo-checkbox.module.scss","../src/lib/components/common/pseudo-checkbox/pseudo-checkbox.tsx","../src/lib/components/multi-select/multi-select.tsx","../src/lib/components/multi-select-with-count/multi-select-with-count.module.scss","../src/lib/components/multi-select-with-count/multi-select-with-count.tsx","../src/lib/components/quick-multi-select/quick-multi-select.module.scss","../src/lib/components/quick-multi-select/quick-multi-select.tsx","../src/lib/components/quick-select/quick-select.module.scss","../src/lib/components/quick-select/quick-select.tsx","../src/lib/components/scrollbar/scrollbar.module.css","../src/lib/components/scrollbar/scrollbar.tsx","../src/lib/components/select/select.module.scss","../src/lib/components/select/select.tsx","../src/lib/components/select/select-options.tsx","../src/lib/components/select/auto-complete.module.scss","../src/lib/components/select/auto-complete.tsx","../src/lib/components/select/auto-complete-options.tsx","../src/lib/components/single-line-input/single-line-input.module.scss","../src/lib/components/single-line-input/single-line-input.tsx","../src/lib/components/phone/phone.module.scss","../src/lib/components/phone/phone.tsx","../src/lib/components/progress-bar/progress-bar.module.scss","../src/lib/components/progress-bar/progress-bar.tsx","../src/lib/components/radio/radio.module.scss","../src/lib/components/radio/radio.tsx"],"sourcesContent":[".button {\n\t@apply tw-box-border tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-border tw-border-solid tw-text-center tw-shadow-none hover:tw-underline focus:tw-underline disabled:tw-cursor-default disabled:hover:tw-no-underline;\n}\n.primary {\n\t@apply tw-border-transparent tw-bg-[#006bb1] tw-font-medium tw-text-white tw-outline-[#006bb1] focus:tw-outline-2 focus:tw-outline-offset-[3px];\n\t&:disabled {\n\t\t@apply tw-border-[#c8c8c8] tw-bg-[#c8c8c8] tw-text-white;\n\t}\n}\n.secondary {\n\t@apply tw-border-[#006bb1] tw-bg-white tw-font-normal tw-text-[#006bb1] hover:tw-border-transparent hover:tw-outline hover:tw-outline-2 hover:tw-outline-offset-[-2px] hover:tw-outline-[#006bb1] focus:tw-border-transparent focus:tw-outline focus:tw-outline-2 focus:tw-outline-offset-[-2px] focus:tw-outline-[#006bb1];\n\t&:disabled {\n\t\t@apply tw-border-[#c8c8c8] tw-text-[#c8c8c8] hover:tw-outline-0 focus:tw-outline-0;\n\t}\n}\n.small {\n\t@apply tw-min-h-[35px] tw-min-w-[70px] tw-px-[22px] tw-py-[4px] tw-text-sm tw-leading-[22px];\n\t&.rounded {\n\t\t@apply tw-rounded-[18px];\n\t}\n}\n.medium {\n\t@apply tw-min-h-[40px] tw-min-w-[74px] tw-px-[22px] tw-py-[7px] tw-text-sm tw-leading-[22px];\n\t&.rounded {\n\t\t@apply tw-rounded-[20px];\n\t}\n}\n.large {\n\t@apply tw-min-h-[44px] tw-min-w-[94px] tw-px-6 tw-py-[8px] tw-text-base tw-leading-[24px];\n\t&.rounded {\n\t\t@apply tw-rounded-[22px];\n\t}\n}\n.squared {\n\t@apply tw-rounded;\n}\n","const relativeLuminance = (colorCode) => {\n if (!colorCode) {\n throw new Error(\"Please provide a hex color code\");\n }\n const hexRegex = /^#([A-Fa-f0-9]{3}){1,2}$/;\n const isValidHex = hexRegex.test(colorCode);\n if (!isValidHex) {\n throw new Error(\"Please provide a valid hex code\");\n }\n colorCode =\n colorCode.length === 4\n ? colorCode.replace(/^#(.)(.)(.)$/, \"#$1$1$2$2$3$3\")\n : colorCode;\n const hex = colorCode.substring(1);\n const [red, green, blue] = [0, 2, 4].map((startIndex) =>\n Number.parseInt(hex.substring(startIndex, startIndex + 2), 16)\n );\n const lum = (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255;\n return lum < 0.7 ? \"dark\" : \"light\";\n};\n\nexport default relativeLuminance;\n","export class ColorsService {\n static convert3HexTo6(themeColor: string): string {\n if (typeof themeColor === 'string') {\n const isHexColor = /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(themeColor);\n if (isHexColor && themeColor.length === 4) {\n return themeColor.replace(/^#(.)(.)(.)$/, '#$1$1$2$2$3$3');\n }\n }\n return themeColor;\n }\n}\n","import { CSSProperties, ComponentPropsWithRef, FC, ReactNode, forwardRef } from 'react';\nimport styles from './button.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\ninterface ButtonProps extends ComponentPropsWithRef<'button'> {\n /** The content of the button */\n children: ReactNode;\n /** A color scheme to use for the button, defaults to `#006bb1` */\n themeColor?: string;\n /** The style of the button, defaults to `primary` */\n variant?: 'primary' | 'secondary';\n /** The size of the button, defaults to `small` */\n size?: 'small' | 'medium' | 'large';\n /** Shape of the corners, defaults to `rounded` */\n shape?: 'rounded' | 'squared';\n}\n\n/** Primary UI component for user interaction */\nexport const Button: FC<ButtonProps> = forwardRef<HTMLButtonElement, ComponentPropsWithRef<'button'> & ButtonProps>(\n (\n {\n themeColor = '',\n variant = 'primary',\n size = 'small',\n shape = 'rounded',\n children,\n className = '',\n style = {},\n disabled,\n ...rest\n }: ButtonProps,\n ref,\n ) => {\n let buttonStyleObj: CSSProperties = {};\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (!disabled && (theme === 'dark' || theme === 'light')) {\n const backgroundColor = variant === 'primary' ? themeColor : '#ffffff';\n const color =\n variant === 'primary'\n ? theme === 'dark'\n ? '#ffffff'\n : '#333333'\n : theme === 'light'\n ? '#333333'\n : themeColor;\n const borderColor = themeColor === '#ffffff' ? '#c8c8c8' : themeColor;\n buttonStyleObj = {\n backgroundColor: backgroundColor,\n color: color,\n outlineColor: borderColor,\n borderColor: borderColor,\n };\n }\n }\n const buttonClasses = [styles.button, styles[variant], styles[size], styles[shape], className]\n .filter(Boolean)\n .join(' ');\n return (\n <button\n disabled={disabled}\n ref={ref}\n style={{ ...buttonStyleObj, ...style }}\n className={`${buttonClasses}`}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nButton.displayName = 'Button';\n",".checkboxLayout {\n\t@apply tw-inline-flex tw-w-full tw-items-center tw-whitespace-nowrap tw-align-middle;\n\t.checkboxLabel {\n\t\t@apply tw-flex tw-w-full tw-cursor-pointer tw-items-baseline tw-gap-2 tw-text-sm tw-leading-[22px] tw-tracking-[0] tw-text-[#333333];\n\t\t& > span {\n\t\t\t@apply tw-whitespace-normal tw-text-sm tw-leading-[22px] tw-tracking-[0] tw-text-[#333333];\n\t\t}\n\t\t.checkboxInnerContainer {\n\t\t\t@apply tw-relative tw-top-[2px] tw-inline-block tw-h-4 tw-w-4 tw-shrink-0 tw-cursor-pointer tw-whitespace-nowrap tw-border-0 tw-align-middle tw-leading-[0] tw-shadow-none tw-outline-0;\n\t\t\t.checkboxInput {\n\t\t\t\t@apply tw-absolute tw-bottom-0 tw-left-0 tw-h-0 tw-w-0 tw-appearance-none tw-border-0 tw-p-0 tw-opacity-0 tw-outline-0;\n\t\t\t\t&:checked + .checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#006bb1] tw-bg-[#006bb1];\n\t\t\t\t\t.checkboxCheckMark {\n\t\t\t\t\t\t@apply tw-opacity-100;\n\t\t\t\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t\t\t\t@apply tw-animate-[180ms_linear_0ms_checkboxUncheckedChecked];\n\t\t\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&:disabled + .checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t\t\t\t}\n\t\t\t}\n\t\t\t.checkboxFrame {\n\t\t\t\t@apply tw-absolute tw-inset-0 tw-box-border tw-rounded-[3px] tw-border tw-border-solid tw-border-[#9c9c9c] tw-bg-transparent;\n\t\t\t\t.checkboxCheckMark {\n\t\t\t\t\t@apply tw-absolute tw-inset-0 tw-w-full;\n\t\t\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t\t\t@apply tw-stroke-[3px];\n\t\t\t\t\t\tstroke-dashoffset: 23;\n\t\t\t\t\t\tstroke-dasharray: 23;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:focus-visible {\n\t\t\t\t.checkboxFrame {\n\t\t\t\t\t@apply tw-outline tw-outline-2 tw--outline-offset-1 tw-outline-[#006bb1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.visuallyHidden {\n\t\t\tposition: absolute;\n\t\t\twidth: 0px;\n\t\t\theight: 0px;\n\t\t\tmargin: 0px;\n\t\t\tpadding: 0;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(0, 0, 0, 0);\n\t\t\tborder: 0;\n\t\t}\n\t}\n\t&.checkboxDisabled {\n\t\t@apply tw-pointer-events-none tw-cursor-default;\n\t\t.checkboxLabel {\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t.checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.medium {\n\t\t.checkboxLabel {\n\t\t\t& > span {\n\t\t\t\t@apply tw-w-[calc(100%-24px)] tw-text-sm;\n\t\t\t}\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t@apply tw-h-4 tw-w-4;\n\t\t\t}\n\t\t}\n\t}\n\t&.large {\n\t\t.checkboxLabel {\n\t\t\t& > span {\n\t\t\t\t@apply tw-w-[calc(100%-27px)] tw-text-base;\n\t\t\t}\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t@apply tw-top-[4px] tw-h-5 tw-w-5;\n\t\t\t}\n\t\t}\n\t}\n}\n@keyframes checkboxUncheckedChecked {\n\t0%,\n\t50% {\n\t\tstroke-dashoffset: 23;\n\t}\n\t50% {\n\t\tanimation-timing-function: cubic-bezier(0, 0, 0.2, 0.1);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n","import { CSSProperties, ComponentPropsWithRef, FC, ReactNode, forwardRef, useState } from 'react';\nimport styles from './checkbox.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\n\ninterface CheckboxProps extends ComponentPropsWithRef<'input'> {\n children?: ReactNode;\n themeColor?: string;\n checkboxSize?: string;\n}\nconst generateRandomId = () => `checkbox_${Math.random().toString(36).substring(2, 11)}`;\nexport const Checkbox: FC<CheckboxProps> = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n children,\n themeColor = '',\n checkboxSize = 'medium',\n id = generateRandomId(),\n checked = false,\n disabled = false,\n className = '',\n onChange,\n style = {},\n tabIndex,\n ...rest\n }: CheckboxProps,\n ref,\n ) => {\n const [isChecked, setIsChecked] = useState(checked);\n let checkboxStyleObj: CSSProperties = {};\n let borderColor;\n let checkMarkColor = disabled ? '#9b9b9b' : '#ffffff';\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n switch (theme) {\n case 'dark':\n checkMarkColor = disabled ? (isChecked ? '#9b9b9b' : '#f9f9f9') : '#ffffff';\n break;\n case 'light':\n checkMarkColor = disabled ? (isChecked ? '#9b9b9b' : '#f9f9f9') : isChecked ? '#333333' : '#ffffff';\n break;\n default:\n checkMarkColor = '#9b9b9b';\n break;\n }\n const backgroundColor = disabled ? '#f9f9f9' : isChecked ? themeColor : '#ffffff';\n borderColor = disabled ? '#e4e4e4' : themeColor == '#ffffff' ? '#333333' : themeColor;\n if (isChecked) {\n checkboxStyleObj = {\n backgroundColor: backgroundColor,\n borderColor: borderColor,\n outlineColor: borderColor,\n };\n }\n }\n }\n\n const checkboxDisabled = disabled ? styles.checkboxDisabled : '';\n const checkboxClasses = [styles.checkboxLayout, styles[checkboxSize], checkboxDisabled, className]\n .filter(Boolean)\n .join(' ');\n\n const toggleCheckbox = (event: any) => {\n if (event.key != 'Enter') {\n event.preventDefault();\n onChange?.(event.target.checked);\n setIsChecked(!isChecked);\n }\n };\n\n return (\n <>\n <div className={checkboxClasses} data-testid=\"checkbox\">\n <label className={styles.checkboxLabel} htmlFor={id} onClick={(event) => toggleCheckbox(event)}>\n <div\n className={styles.checkboxInnerContainer}\n tabIndex={tabIndex || disabled ? -1 : 0}\n onKeyPress={(event) => toggleCheckbox(event)}\n data-testid=\"checkbox-inner-container\"\n >\n <input\n className={styles.checkboxInput}\n onChange={(event) => toggleCheckbox(event)}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n id={id}\n ref={ref}\n {...rest}\n tabIndex={-1}\n data-testid=\"checkbox-input\"\n />\n <div\n className={styles.checkboxFrame}\n style={{ ...checkboxStyleObj, ...style }}\n data-testid=\"checkbox-frame\"\n >\n <svg\n version=\"1.1\"\n focusable=\"false\"\n className={styles.checkboxCheckMark}\n viewBox=\"0 0 24 24\"\n data-testid=\"check-mark-svg\"\n >\n <path\n className={styles.checkboxCheckMarkPath}\n fill=\"none\"\n stroke={checkMarkColor}\n d=\"M4.1,12.7 9,17.6 20.3,6.3\"\n />\n </svg>\n </div>\n </div>\n {children && <span data-testid=\"checkbox-label\">{children}</span>}\n <div className={styles.visuallyHidden} aria-live=\"polite\" aria-atomic=\"true\">\n {isChecked ? 'Checked' : 'Unchecked'}\n </div>\n </label>\n </div>\n </>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n",".textInputWrapper {\n\t@apply tw-w-full;\n\t.textInput {\n\t\t@apply tw-box-border tw-block tw-h-10 tw-max-h-[225px] tw-w-full tw-resize-none tw-border-0 tw-border-b tw-border-[#333333] tw-px-[10px] tw-pb-2 tw-pt-[7px] tw-text-base tw-text-[#333333] tw-outline-none;\n\t\t&:focus {\n\t\t\t@apply tw-border-b-2 tw-border-[#006bb1] tw-pb-[7px];\n\t\t}\n\t}\n}\n","/* UAParser.js v1.0.41\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.41\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HONOR=\"Honor\",HUAWEI=\"Huawei\",LENOVO=\"Lenovo\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",NVIDIA=\"Nvidia\",ONEPLUS=\"OnePlus\",OPERA=\"Opera\",OPPO=\"OPPO\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\",SUFFIX_BROWSER=\" Browser\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return map.hasOwnProperty(\"*\")?map[\"*\"]:str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bop(?:rg)?x\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" GX\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"Baidu\"]],[/\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i],[VERSION,[NAME,\"Maxthon\"]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,/(heytap|ovi|115)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\\/([-\\w\\.]+)/i],[VERSION,[NAME,\"Quark\"]],[/\\bddg\\/([\\w\\.]+)/i],[VERSION,[NAME,\"DuckDuckGo\"]],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i,/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/slbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Smart Lenovo \"+BROWSER]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI\"+SUFFIX_BROWSER]],[/fxios\\/([\\w\\.-]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihoobrowser\\/?([\\w\\.]*)/i],[VERSION,[NAME,\"360\"]],[/\\b(qq)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1Browser\"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1\"+SUFFIX_BROWSER],VERSION],[/samsungbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,SAMSUNG+\" Internet\"]],[/metasr[\\/ ]?([\\d\\.]+)/i],[VERSION,[NAME,\"Sogou Explorer\"]],[/(sogou)mo\\w+\\/([\\d\\.]+)/i],[[NAME,\"Sogou Mobile\"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i],[NAME,VERSION],[/(lbbrowser|rekonq)/i,/\\[(linkedin)app\\]/i],[NAME],[/ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,/ome\\/([\\w\\.]+).+qihu (360)[es]e/i],[VERSION,NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(Klarna)\\/([\\w\\.]+)/i,/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/(daum)apps[\\/ ]([\\w\\.]+)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(alipay)client\\/([\\w\\.]+)/i,/(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,/(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/(wolvic|librewolf)\\/([\\w\\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/\\b(links) \\(([\\w\\.]+)/i],[NAME,[VERSION,/_/g,\".\"]],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/\\b((amd|x|x86[-_]?|wow|win)64)\\b/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i,/\\b((i[346]|x)86)(pc)?\\b/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i],[[ARCHITECTURE,\"arm\"]],[/((ppc|powerpc)(64)?)( mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/ sun4\\w[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i],[MODEL,[VENDOR,HONOR],[TYPE,TABLET]],[/honor([-\\w ]+)[;\\)]/i],[MODEL,[VENDOR,HONOR],[TYPE,MOBILE]],[/\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,/\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i,/ ([\\w ]+) miui\\/v?\\d/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,OPPO],[TYPE,MOBILE]],[/\\b(opd2(\\d{3}a?))(?: bui|\\))/i],[MODEL,[VENDOR,strMapper,{OnePlus:[\"304\",\"403\",\"203\"],\"*\":OPPO}],[TYPE,TABLET]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv|watch)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,TABLET]],[/(nokia) (t[12][01])/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,/nokia[-_ ]?(([-\\w\\. ]*))/i],[[MODEL,/_/g,\" \"],[TYPE,MOBILE],[VENDOR,\"Nokia\"]],[/(pixel (c|tablet))\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i],[MODEL,[VENDOR,\"TCL\"],[TYPE,TABLET]],[/(itel) ((\\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:[\"p10001l\",\"w7001\"],\"*\":\"mobile\"}]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i],[MODEL,[VENDOR,\"Ulefone\"],[TYPE,MOBILE]],[/; (energy ?\\w+)(?: bui|\\))/i,/; energizer ([\\w ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Energizer\"],[TYPE,MOBILE]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i],[MODEL,[VENDOR,\"Cat\"],[TYPE,MOBILE]],[/((?:new )?andromax[\\w- ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Smartfren\"],[TYPE,MOBILE]],[/droid.+; (a(?:015|06[35]|142p?))/i],[MODEL,[VENDOR,\"Nothing\"],[TYPE,MOBILE]],[/; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,/archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i],[MODEL,[VENDOR,\"Archos\"],[TYPE,TABLET]],[/archos ([\\w ]+)( b|\\))/i,/; (ac[3-6]\\d\\w{2,8})( b|\\))/i],[MODEL,[VENDOR,\"Archos\"],[TYPE,MOBILE]],[/(imo) (tab \\w+)/i,/(infinix) (x1101b?)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,/; (hmd|imo) ([\\w ]+?)(?: bui|\\))/i,/(hp) ([\\w ]+\\w)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w+)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/(shield \\w+ tv)/i],[MODEL,[VENDOR,NVIDIA],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mi(tv|box)-?\\w+) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i],[MODEL,[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield)( bui|\\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,CONSOLE]],[/(playstation \\w+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[MODEL,[VENDOR,OPPO],[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/(opwwe\\d{3})/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,WEARABLE]],[/(moto 360)/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,WEARABLE]],[/(smartwatch 3)/i],[MODEL,[VENDOR,SONY],[TYPE,WEARABLE]],[/(g watch r)/i],[MODEL,[VENDOR,LG],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/(pico) (4|neo3(?: link|pro)?)/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/; (quest( \\d| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/(homepod).+mac os/i],[MODEL,[VENDOR,APPLE],[TYPE,EMBEDDED]],[/windows iot/i],[[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/droid .+?; ([\\w\\. -]+)( bui|\\))/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/(arkweb)\\/([\\w\\.]+)/i],[NAME,VERSION],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/ladybird\\//i],[[NAME,\"LibWeb\"]],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/windows nt 6\\.2; (arm)/i,/windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[VERSION,strMapper,windowsVersionMap],[NAME,\"Windows\"]],[/[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(ubuntu) ([\\w\\.]+) like android/i],[[NAME,/(.+)/,\"$1 Touch\"],VERSION],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/; ]?([\\d\\.]*)/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","import React, { FC, forwardRef, ComponentPropsWithRef, useState, useEffect } from 'react';\nimport styles from './multi-line-input.module.scss';\nimport { isMobile } from 'react-device-detect';\nimport { ColorsService } from '../colors.service';\n\ninterface MultiLineInputProps extends ComponentPropsWithRef<'textarea'> {\n themeColor?: string; // Made themeColor optional\n onSubmit?: () => void; // Submit form function in the parent component\n}\n\nexport const MultiLineInput: FC<MultiLineInputProps> = React.memo(\n forwardRef<HTMLTextAreaElement, MultiLineInputProps>(\n (\n { themeColor = '', onSubmit, style = {}, className = '', onInput, onFocus, onBlur, ...rest }: MultiLineInputProps,\n ref,\n ) => {\n const [isMobileDevice, setIsMobileDevice] = useState(true);\n const [isFocused, setIsFocused] = useState(false);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n\n useEffect(() => {\n setIsMobileDevice(isMobile);\n }, []);\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (!isMobileDevice && e.key === 'Enter') {\n if (!e.shiftKey && onSubmit) {\n e.preventDefault();\n onSubmit();\n }\n }\n };\n\n const autoGrow = (event: any) => {\n onInput?.(event);\n event.target.style.height = '40px';\n event.target.style.height = 2 + event.target.scrollHeight + 'px';\n };\n\n let inputStyleObj = {};\n const textInputClasses = [styles.textInput, className].filter(Boolean).join(' ');\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n inputStyleObj = {\n borderBottomColor: isFocused ? (themeColor !== '#ffffff' ? themeColor : '#c8c8c8') : '',\n };\n\n return (\n <div className={styles.textInputWrapper}>\n <textarea\n data-testid={'textbox-input'}\n ref={ref}\n className={textInputClasses}\n style={{ ...inputStyleObj, ...style }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={(event) => autoGrow(event)}\n onKeyDown={handleKeyPress}\n {...rest}\n />\n </div>\n );\n },\n ),\n);\n",".multiSelectContainer {\n\t@apply tw-relative tw-w-full;\n\t.listOptionsWrap {\n\t\t@apply tw-relative tw-w-full;\n\t\t.selectedValuesWrap {\n\t\t\t@apply tw-relative tw-h-10 tw-w-full;\n\t\t\t.selectedValues {\n\t\t\t\t@apply tw-box-border tw-border-solid tw-block tw-h-full tw-w-full tw-overflow-hidden tw-overflow-ellipsis tw-whitespace-nowrap tw-border-0 tw-border-b-[1px] tw-border-b-[#333333] tw-pb-2 tw-pl-[10px] tw-pr-11 tw-pt-2 tw-text-base tw-leading-4 tw-text-[#333333] tw-placeholder-[#666666] focus-within:tw-outline-none focus:tw-border-b-2 focus:tw-border-[#006BB1] focus:tw-pb-[7px] focus-visible:tw-outline-none;\n\t\t\t\t&.focused {\n\t\t\t\t\t@apply tw-border-b-2 tw-border-[#006BB1] tw-pb-[7px] tw-outline-none;\n\t\t\t\t}\n\t\t\t\t&.placeholder {\n\t\t\t\t\t@apply tw-text-[#666666];\n\t\t\t\t}\n\t\t\t}\n\t\t\t.dropDownIcon {\n\t\t\t\t@apply tw-absolute tw-right-2 tw-top-1/2 tw-flex tw-h-full tw-w-7 -tw-translate-y-1/2 tw-cursor-pointer tw-items-center tw-justify-center;\n\t\t\t}\n\t\t}\n\t}\n}\n.optionsListContainer {\n\t@apply tw-absolute tw-z-10 tw-mt-0 tw-max-h-[293px] tw-w-full tw-bg-white tw-pb-16 tw-text-sm tw-leading-[22px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] focus:tw-outline-none;\n\t&.top {\n\t\ttransform: translateY(calc(-100% - 40px));\n\t}\n\t.optionsListWrap {\n\t\t@apply tw-max-h-[225px] tw-overflow-auto tw-py-4;\n\t\t.searchInputWrap {\n\t\t\t@apply tw-mb-2 tw-h-10 tw-px-[10px];\n\t\t\t.searchInput {\n\t\t\t\t@apply tw-h-full tw-w-full tw-py-2 tw-pl-[10px] tw-box-border tw-outline tw-outline-1 tw-outline-offset-[-2px] tw-outline-[#C8C8C8];\n\t\t\t}\n\t\t}\n\t\tul{\n\t\t\t@apply tw-p-0 tw-m-0;\n\t\t}\n\t\t.optionsList {\n\t\t\t@apply tw-flex tw-list-none tw-items-start tw-gap-2 tw-px-[10px] tw-py-2 tw-box-border;\n\t\t\tspan {\n\t\t\t\tword-break: break-word;\n\t\t\t\t@apply tw-block tw-w-[calc(100%-22px)] tw-text-sm tw-leading-[22px] tw-break-words;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t\t&.focused {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t}\n\t}\n\t.btnContainer {\n\t\t@apply tw-absolute tw-box-border tw-inset-x-0 tw-flex tw-h-[64px] tw-w-full tw-items-center tw-justify-end tw-border-0 tw-border-t tw-border-solid tw-border-t-[#C8C8C8] tw-px-[18px];\n\t\t.hiddenButton{\n\t\t\t@apply tw-absolute tw-left-[-9999px] tw-h-0 tw-w-0 tw-opacity-0;\n\t\t}\n\t}\n}\n\n.optionsListContainer ::-webkit-scrollbar {\n\twidth: 6px;\n}\n.optionsListContainer ::-webkit-scrollbar-thumb {\n\tbackground-color: darkgrey;\n\tborder-radius: 6px;\n}\n\n.announcement{\n\t@apply tw-pointer-events-none tw-h-0 tw-overflow-hidden tw-opacity-0;\n}",".pseudoCheckbox {\n\t@apply tw-relative tw-box-border tw-h-4 tw-w-4 tw-rounded-[3px] tw-border tw-border-solid tw-border-[#9C9C9C] tw-top-[3px];\n\t.checkboxCheckMark {\n\t\t@apply tw-absolute tw-inset-0 tw-w-full;\n\t\t.checkboxCheckMarkPath {\n\t\t\t@apply tw-stroke-[3px];\n\t\t\tstroke-dashoffset: 23;\n\t\t\tstroke-dasharray: 23;\n\t\t}\n\t}\n\t&.checked {\n\t\t@apply tw-border-[#006bb1] tw-bg-[#006bb1];\n\t\t.checkboxCheckMark {\n\t\t\t@apply tw-opacity-100;\n\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t@apply tw-animate-[180ms_linear_0ms_checkboxUncheckedChecked];\n\t\t\t\tstroke-dashoffset: 0;\n\t\t\t}\n\t\t}\n\t}\n\t&.checkboxDisabled {\n\t\t@apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t}\n}\n\n@keyframes checkboxUncheckedChecked {\n\t0%,\n\t50% {\n\t\tstroke-dashoffset: 23;\n\t}\n\t50% {\n\t\tanimation-timing-function: cubic-bezier(0, 0, 0.2, 0.1);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n","import { CSSProperties, ComponentPropsWithRef, FC } from 'react';\nimport luminance from '@oncehub/relative-luminance';\nimport styles from './psuedo-checkbox.module.scss';\nimport { ColorsService } from '../../colors.service';\n\ninterface CheckboxProps extends ComponentPropsWithRef<'div'> {\n themeColor?: string;\n checked?: boolean;\n disabled?: boolean;\n}\nconst PseudoCheckbox: FC<CheckboxProps> = ({ checked = false, themeColor = '', disabled = false }) => {\n let checkboxStyleObj: CSSProperties = {};\n let backgroundColor = '#006bb1';\n let checkMarkColor = disabled ? '#9b9b9b' : '#ffffff';\n const checkboxDisabled = disabled ? styles.checkboxDisabled : '';\n const isChecked = checked ? styles.checked : '';\n const checkboxClasses = [styles.pseudoCheckbox, isChecked, checkboxDisabled].filter(Boolean).join(' ');\n let borderColor;\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n if (disabled) {\n checkMarkColor = checked ? '#9b9b9b' : '#f9f9f9';\n } else {\n checkMarkColor = theme == 'light' ? '#333333' : '#ffffff';\n }\n backgroundColor = disabled ? '#f9f9f9' : checked ? themeColor : '#ffffff';\n borderColor = disabled ? '#e4e4e4' : themeColor === '#ffffff' ? '#333333' : themeColor;\n if (checked) {\n checkboxStyleObj = {\n backgroundColor: backgroundColor,\n borderColor: borderColor,\n outlineColor: borderColor,\n };\n }\n } else {\n checkMarkColor = '#9b9b9b';\n }\n }\n\n return (\n <div\n style={checkboxStyleObj}\n className={checkboxClasses}\n role=\"checkbox\"\n aria-checked={checked}\n aria-hidden=\"true\"\n tabIndex={-1}\n data-testid=\"checkbox-input\"\n >\n <svg version=\"1.1\" focusable=\"false\" className={styles.checkboxCheckMark} viewBox=\"0 0 24 24\">\n <path\n className={styles.checkboxCheckMarkPath}\n fill=\"none\"\n stroke={checkMarkColor}\n d=\"M4.1,12.7 9,17.6 20.3,6.3\"\n />\n </svg>\n </div>\n );\n};\n\nPseudoCheckbox.displayName = 'Checkbox';\nexport default PseudoCheckbox;\n","import React, { useState, useEffect, useRef, CSSProperties, KeyboardEvent } from 'react';\nimport { IOption } from '../../interfaces/select.type';\nimport { Button } from '../button/button';\nimport styles from './multi-select.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport PseudoCheckbox from '../common/pseudo-checkbox/pseudo-checkbox';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const MultiSelect: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n}) => {\n const filteredOptions = useRef(options);\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const [searchTerm, setSearchTerm] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const hiddenButtonRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n const optionsListRef = useRef<HTMLUListElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState(-1); // -1 means no focus\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n const [isMounted, setIsMounted] = useState(false);\n let multiSelectStyleObj: CSSProperties = {};\n const [dropdownPosition, setDropdownPosition] = useState({ left: 0, top: 0 });\n const [typingTimeout, setTypingTimeout] = useState<NodeJS.Timeout | null>(null);\n const shiftKeyPressedRef = useRef(false);\n const multiSelectRef = useRef<HTMLDivElement | null>(null);\n\n const setfocusOnDropdownClose = () => {\n setTimeout(() => {\n const selectFocusElement = selectRef.current?.children[0] as HTMLElement;\n selectFocusElement.focus();\n }, 0);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (selectDropdownRef.current && !selectDropdownRef.current.contains(event.target as Node)) {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.addEventListener('resize', handleOnResize);\n };\n }, []);\n\n const announceOption = (text: any): void => {\n const announcement = document.getElementById('announcement');\n if (announcement) {\n announcement.textContent = text;\n announcement.setAttribute('aria-live', 'assertive');\n setTimeout(() => {\n announcement.textContent = '';\n announcement.setAttribute('aria-live', 'off');\n }, 1000); // Announce and clear after 1 second (adjust as needed)\n }\n };\n\n useEffect(() => {\n const filtered = options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));\n filteredOptions.current = filtered;\n }, [options, searchTerm]);\n\n /* istanbul ignore next */\n const selectedText =\n selectedOptions.length > 0\n ? selectedOptions\n .map((value) => {\n const selectedOption = options.find((option) => option.value === value);\n return selectedOption?.label !== null ? selectedOption?.label : '';\n })\n .filter((label) => label !== '')\n .join(', ')\n : 'Select your option';\n\n const handleLiClick = (id: string) => {\n const clickedOption = options.find((option) => option.value === id);\n if (clickedOption && !clickedOption.disable && (maxOptions === undefined || selectedOptions.length <= maxOptions)) {\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit && dropdownOpen) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n announceOption(`${clickedOption?.label} ${newSelectedValues.includes(id) ? 'selected' : 'not selected'}`);\n }\n }\n };\n\n const toggleDropDown = (open: boolean) => {\n getDropdownPosition();\n setDropdownOpen(open);\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n announceOption('use up and down arrow keys to navigate');\n }, 0);\n };\n\n const calculateRemainingScroll = (): number => {\n return pageScrollHeight.current - (windowHeight.current + window.scrollY);\n };\n\n const getDropdownPosition = () => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n const remainingScroll = calculateRemainingScroll();\n const remainingSpace = windowHeight.current - selectRect.bottom;\n let topPosition;\n /* istanbul ignore next */\n if (selectDropdownRect) {\n const selectHeight = selectRect.height;\n const selectTopPosition = selectRect.top;\n const selectDropdownHeight = selectDropdownRect.height;\n const noSpaceAvailableAbove = selectDropdownHeight > selectTopPosition + window.scrollY;\n if (\n (selectTopPosition < selectDropdownHeight &&\n (noSpaceAvailableAbove ||\n (noSpaceAvailableAbove && remainingSpace < selectDropdownHeight) ||\n remainingScroll > selectDropdownHeight ||\n remainingSpace > selectDropdownHeight)) ||\n (selectTopPosition > selectDropdownHeight && remainingSpace > selectDropdownHeight)\n ) {\n topPosition = selectRect.y + selectHeight;\n } else {\n topPosition = selectRect.y - selectDropdownHeight;\n }\n\n setDropdownPosition({\n left: selectRect.left,\n top: topPosition ?? selectRect.top,\n });\n }\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, [dropdownOpen]);\n\n const doneButtonKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n event.preventDefault();\n if (event.key === 'Shift') {\n shiftKeyPressedRef.current = true;\n } else if ((event.shiftKey && shiftKeyPressedRef.current && event.key === 'Tab') || event.key === 'Tab') {\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n }, 0);\n shiftKeyPressedRef.current = false;\n } else if (event.key === 'Escape' || event.key === 'Enter' || event.key === 'Space' || event.key === ' ') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n } else {\n shiftKeyPressedRef.current = false;\n }\n };\n\n /* istanbul ignore next */\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const { key } = event;\n if (key === 'Tab' || (event.shiftKey && key === 'Tab')) {\n setTimeout(() => {\n doneButtonRef.current?.focus();\n }, 0);\n } else if (key === 'ArrowDown' || key === 'ArrowUp') {\n event.preventDefault();\n setTimeout(() => {\n hiddenButtonRef.current?.focus();\n }, 0);\n let newFocusedIndex = focusedIndex;\n if (key === 'ArrowDown') {\n newFocusedIndex = Math.min(focusedIndex + 1, filteredOptions.current.length - 1);\n } else if (key === 'ArrowUp') {\n newFocusedIndex = Math.max(focusedIndex - 1, 0);\n }\n // If focus is on the first option and the Up arrow is pressed, move focus to the last option\n if (focusedIndex === 0 && event.key === 'ArrowUp') {\n newFocusedIndex = filteredOptions.current.length - 1;\n }\n // If focus is on the last option and the Down arrow is pressed, move focus to the first option\n else if (focusedIndex === filteredOptions.current.length - 1 && event.key === 'ArrowDown') {\n newFocusedIndex = 0;\n }\n setFocusedIndex(newFocusedIndex);\n if (optionsListRef.current && newFocusedIndex >= 0) {\n const focusedOption = optionsListRef.current.querySelectorAll(`.${styles.optionsList}`)[\n newFocusedIndex\n ] as HTMLElement;\n const isFocusedOptionSelected = focusedOption.children[0].getAttribute('aria-checked');\n const textToAnnounced = `${focusedOption.textContent} ${\n isFocusedOptionSelected === 'true' ? 'selected' : 'not selected'\n } ${newFocusedIndex + 1} out of ${filteredOptions.current.length}`;\n announceOption(textToAnnounced);\n if (focusedOption) {\n focusedOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n } else if (key === 'Enter' || key === 'Space' || key === ' ') {\n if (focusedIndex !== -1) {\n handleLiClick(filteredOptions.current[focusedIndex].value);\n }\n } else if (key === 'Escape') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n }\n };\n\n useEffect(() => {\n if (typingTimeout) {\n clearTimeout(typingTimeout);\n }\n const timeout = setTimeout(() => {\n const filteredResults = filteredOptions.current.length\n ? `${filteredOptions.current.length} results are available, use up and down arrow keys to navigate`\n : 'No results available';\n if (dropdownOpen) {\n announceOption(filteredResults);\n }\n }, 500);\n setTypingTimeout(timeout);\n }, [searchTerm]);\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n useEffect(() => {\n const multiSelect = multiSelectRef.current;\n if (multiSelect) {\n multiSelect.addEventListener('focus', handleFocus);\n multiSelect.addEventListener('blur', handleBlur);\n }\n return () => {\n if (multiSelect) {\n multiSelect.removeEventListener('focus', handleFocus);\n multiSelect.removeEventListener('blur', handleBlur);\n }\n };\n }, [handleFocus, handleBlur]);\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#c8c8c8' : isFocused || dropdownOpen ? themeColor : '#333333';\n if (theme === 'dark' || theme === 'light') {\n multiSelectStyleObj = {\n borderBottomColor: borderColor,\n };\n }\n }\n\n const closeOverlay = () => {\n setDropdownOpen(false);\n };\n\n return (\n <div className={styles.multiSelectContainer}>\n <div className={styles.listOptionsWrap}>\n <div className={`${className} ${styles.selectedValuesWrap}`} ref={selectRef}>\n <div\n className={`${styles.selectedValues} ${dropdownOpen ? styles.focused : ''} ${\n selectedOptions.length === 0 ? styles.placeholder : ''\n }`}\n ref={multiSelectRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={() => toggleDropDown(!dropdownOpen)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n toggleDropDown(!dropdownOpen);\n }\n }}\n tabIndex={0}\n data-testid={'selected-input'}\n style={{ ...multiSelectStyleObj, ...style }}\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-multiselectable=\"true\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n >\n {selectedText}\n </div>\n <span\n className={styles.dropDownIcon}\n onClick={() => toggleDropDown(!dropdownOpen)}\n data-testid={'arrow-button'}\n >\n <svg width=\"12px\" height=\"7px\" viewBox=\"0 0 12 7\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-2360.000000, -295.000000)\" fill=\"#666666\">\n <g transform=\"translate(2006.000000, 248.000000)\">\n <path\n d=\"M358.027356,44.3431458 L358.027146,50.6581458 L364.343146,50.6589352 L364.343146,52.3431458 L358.027146,52.3421458 L358.027356,52.3431458 L356.343146,52.3431458 L356.343146,44.3431458 L358.027356,44.3431458 Z\"\n transform=\"translate(360.343146, 48.343146) scale(-1, -1) rotate(-225.000000) translate(-360.343146, -48.343146)\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n </div>\n <div id=\"announcement\" aria-live=\"assertive\" role=\"alert\" className={styles.announcement}></div>\n {isMounted\n ? createPortal(\n <>\n {dropdownOpen && selectRef && (\n <div\n onClick={closeOverlay}\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n className={`${styles.optionsListContainer}`}\n ref={selectDropdownRef}\n onClick={(e) => e.stopPropagation()}\n style={{\n opacity: dropdownPosition.left ? 1 : 0,\n width: selectRef.current ? selectRef.current.clientWidth : 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n }}\n >\n <div className={styles.optionsListWrap}>\n {options.length >= 6 && (\n <div className={styles.searchInputWrap}>\n <input\n type=\"text\"\n ref={searchInputRef}\n placeholder=\"Type to filter\"\n className={styles.searchInput}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n data-testid={'search-input'}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n />\n </div>\n )}\n <ul ref={optionsListRef} role=\"listbox\">\n {filteredOptions.current.map((option, index) => (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n key={option.value}\n className={`${styles.optionsList} ${index === focusedIndex ? styles.focused : ''}`}\n onClick={() => handleLiClick(option.value)}\n aria-selected={index === focusedIndex}\n role=\"option\"\n >\n <PseudoCheckbox\n themeColor={themeColor}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n />\n <span>{option.label}</span>\n </li>\n ))}\n </ul>\n </div>\n <div className={styles.btnContainer}>\n <input\n ref={hiddenButtonRef}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n className={styles.hiddenButton}\n />\n <Button\n themeColor={themeColor}\n variant=\"primary\"\n size=\"medium\"\n onClick={() => {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n onSelectionChange(selectedOptions);\n }}\n data-testid={'done-button'}\n onKeyDown={(event) => {\n doneButtonKeyDown(event);\n }}\n ref={doneButtonRef}\n >\n Done\n </Button>\n </div>\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n </div>\n );\n};\n",".multiSelectContainer {\n\t@apply tw-relative tw-w-auto;\n\t.listOptionsWrap {\n\t\t@apply tw-relative tw-w-full;\n\t\t.selectedValuesWrap {\n\t\t\t@apply tw-relative tw-h-[38px] tw-w-full tw-mt-[1px];\n\t\t\t.selectedValues {\n\t\t\t\t@apply tw-box-border tw-border-solid tw-flex tw-items-center tw-justify-between tw-cursor-pointer tw-h-full tw-w-full tw-overflow-hidden tw-overflow-ellipsis tw-whitespace-nowrap tw-border-0 tw-border-b-[1px] tw-border-b-[#c8c8c8] tw-pb-2 tw-pl-[10px] tw-pt-2 tw-text-[14px] tw-leading-[20px] tw-text-[#333333] focus-within:tw-outline-none focus:tw-pb-[7px] focus-visible:tw-outline-none tw-relative; \n\t\t\t\t&:focus {\n\t\t\t\t\tborder-bottom: 2px solid var(--theme-color, #006bb1);\n\t\t\t\t}\n\t\t\t\t&.focused {\n\t\t\t\t\t@apply tw-pb-[7px] tw-outline-none;\n\t\t\t\t}\n\t\t\t\t.countAndIconContainer {\n\t\t\t\t\t@apply tw-flex tw-items-center;\n\t\t\t\t}\n\t\t\t\t&.rounded {\n\t\t\t\t\t@apply tw-rounded-full tw-border tw-border-[#c8c8c8] tw-pl-4 tw-py-2 tw-pb-2 tw-pt-2 tw-h-9 tw-mt-0 tw-bg-[#F4F4F4] tw-flex tw-items-center;\n\t\t\t\t\t&.focused, &:hover, &:focus-visible {\n\t\t\t\t\t\tborder-color: var(--theme-color, #006bb1);\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px var(--theme-color, #006bb1);\n\t\t\t\t\t}\n\t\t\t\t\t&.selected {\n\t\t\t\t\t\tborder: 1px solid var(--theme-color, #006bb1);\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px var(--theme-color, #006bb1);\n\t\t\t\t\t\tbackground-color: color-mix(in srgb, var(--theme-color, #006bb1) 18%, transparent);\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: color-mix(in srgb, var(--theme-color, #006bb1) 36%, transparent);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t.selectedCount {\n\t\t\t\t@apply tw-box-border tw-h-[22px] tw-min-w-[22px] tw-rounded-full tw-px-[7px] tw-font-semibold tw-text-white tw-text-[14px] tw-leading-[22px] tw-ml-2 tw-mt-[1px];\n\t\t\t\tbackground-color: var(--theme-color, #006bb1);\n\t\t\t}\n\t\t\t.dropDownIcon {\n\t\t\t\t@apply tw-cursor-pointer tw-ml-2 tw-mr-[18px] tw-mt-0;\n\t\t\t}\n\t\t}\n\t}\n}\n.optionsListContainer {\n\t@apply tw-absolute tw-z-10 tw-mt-0 tw-max-h-[293px] tw-w-[83%] tw-bg-white tw-pb-16 tw-text-sm tw-leading-[22px] tw-max-w-[367px] s767:tw-max-w-[320px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] focus:tw-outline-none;\n\t&.top {\n\t\ttransform: translateY(calc(-100% - 40px));\n\t}\n\t.optionsListWrap {\n\t\t@apply tw-max-h-[225px] tw-overflow-auto tw-py-4;\n\t\t.searchInputWrap {\n\t\t\t@apply tw-mb-2 tw-h-10 tw-px-[10px];\n\t\t\t.searchInput {\n\t\t\t\t@apply tw-h-full tw-w-full tw-py-2 tw-pl-[10px] tw-box-border tw-outline tw-outline-1 tw-outline-offset-[-2px] tw-outline-[#C8C8C8];\n\t\t\t}\n\t\t}\n\t\tul{\n\t\t\t@apply tw-p-0 tw-m-0;\n\t\t}\n\t\t.optionsList {\n\t\t\t@apply tw-flex tw-list-none tw-items-start tw-gap-2 tw-px-[10px] tw-py-2 tw-box-border;\n\t\t\tspan {\n\t\t\t\tword-break: break-word;\n\t\t\t\t@apply tw-block tw-w-[calc(100%-22px)] tw-text-sm tw-leading-[22px] tw-break-words;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t\t&.focused {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t}\n\t}\n\t.btnContainer {\n\t\t@apply tw-absolute tw-box-border tw-inset-x-0 tw-flex tw-h-[64px] tw-w-full tw-items-center tw-justify-end tw-border-0 tw-border-t tw-border-solid tw-border-t-[#C8C8C8] tw-px-[18px];\n\t\t.hiddenButton{\n\t\t\t@apply tw-absolute tw-left-[-9999px] tw-h-0 tw-w-0 tw-opacity-0;\n\t\t}\n\t}\n}\n\n.optionsListContainer ::-webkit-scrollbar {\n\twidth: 6px;\n}\n.optionsListContainer ::-webkit-scrollbar-thumb {\n\tbackground-color: darkgrey;\n\tborder-radius: 6px;\n}\n\n.announcement{\n\t@apply tw-pointer-events-none tw-h-0 tw-overflow-hidden tw-opacity-0 tw-w-[58px];\n}\n","import React, { useState, useEffect, useRef, CSSProperties, KeyboardEvent } from 'react';\nimport { IOption } from '../../interfaces/select.type';\nimport { Button } from '../button/button';\nimport styles from './multi-select-with-count.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport PseudoCheckbox from '../common/pseudo-checkbox/pseudo-checkbox';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n categoryName?: string;\n variant?: 'default' | 'rounded';\n placeholder?: string;\n}\n\nexport const MultiSelectWithCount: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n categoryName = '',\n variant = 'default',\n placeholder = 'Select your option',\n}) => {\n const filteredOptions = useRef(options);\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const [searchTerm, setSearchTerm] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const hiddenButtonRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n const optionsListRef = useRef<HTMLUListElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState(-1); // -1 means no focus\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n const [isMounted, setIsMounted] = useState(false);\n let multiSelectStyleObj: CSSProperties = {};\n const [dropdownPosition, setDropdownPosition] = useState({ left: 0, top: 0 });\n const [typingTimeout, setTypingTimeout] = useState<NodeJS.Timeout | null>(null);\n const shiftKeyPressedRef = useRef(false);\n const multiSelectRef = useRef<HTMLDivElement | null>(null);\n\n // Sync selectedOptions with checkedValue prop changes\n useEffect(() => {\n setSelectedOptions(checkedValue);\n }, [checkedValue]);\n\n const setfocusOnDropdownClose = () => {\n setTimeout(() => {\n const selectFocusElement = selectRef.current?.children[0] as HTMLElement;\n selectFocusElement.focus();\n }, 0);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (selectDropdownRef.current && !selectDropdownRef.current.contains(event.target as Node)) {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.addEventListener('resize', handleOnResize);\n };\n }, []);\n\n const announceOption = (text: any): void => {\n const announcement = document.getElementById('announcement');\n if (announcement) {\n announcement.textContent = text;\n announcement.setAttribute('aria-live', 'assertive');\n setTimeout(() => {\n announcement.textContent = '';\n announcement.setAttribute('aria-live', 'off');\n }, 1000); // Announce and clear after 1 second (adjust as needed)\n }\n };\n\n useEffect(() => {\n const filtered = options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));\n filteredOptions.current = filtered;\n }, [options, searchTerm]);\n\n /* istanbul ignore next */\n const selectedText =\n selectedOptions.length > 1 && categoryName\n ? categoryName\n : selectedOptions.length > 0\n ? selectedOptions\n .map((value) => {\n const selectedOption = options.find((option) => option.value === value);\n return selectedOption?.label !== null ? selectedOption?.label : '';\n })\n .filter((label) => label !== '')\n .join(', ')\n : placeholder;\n\n const handleLiClick = (id: string) => {\n const clickedOption = options.find((option) => option.value === id);\n if (clickedOption && !clickedOption.disable && (maxOptions === undefined || selectedOptions.length <= maxOptions)) {\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit && dropdownOpen) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n setTimeout(() => {\n getDropdownPosition();\n }, 50);\n if (filteredOptions.current.length === 1) {\n setDropdownOpen(false);\n }\n announceOption(`${clickedOption?.label} ${newSelectedValues.includes(id) ? 'selected' : 'not selected'}`);\n }\n }\n };\n\n const toggleDropDown = (open: boolean) => {\n getDropdownPosition();\n setDropdownOpen(open);\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n announceOption('use up and down arrow keys to navigate');\n }, 0);\n };\n\n const getDropdownPosition = () => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n if (selectDropdownRect) {\n const selectDropdownHeight = selectDropdownRect.height;\n const selectDropdownWidth = selectDropdownRect.width;\n const viewportWidth = window.innerWidth;\n\n // Vertical positioning logic\n const spaceBelow = windowHeight.current - selectRect.bottom;\n const spaceAbove = selectRect.top;\n\n let topPosition: number;\n\n // Try to position below first (preferred)\n if (spaceBelow >= selectDropdownHeight) {\n // Enough space below - position dropdown below the select\n topPosition = selectRect.bottom;\n } else if (spaceAbove >= selectDropdownHeight) {\n // Not enough space below but enough above - position above the select\n topPosition = selectRect.top - selectDropdownHeight;\n } else {\n // Not enough space in either direction - choose the side with more space\n if (spaceBelow >= spaceAbove) {\n topPosition = selectRect.bottom;\n } else {\n topPosition = selectRect.top - selectDropdownHeight;\n }\n }\n\n // Horizontal positioning logic\n const spaceRight = viewportWidth - selectRect.left;\n const spaceLeft = selectRect.right;\n\n let leftPosition: number;\n\n // Try to align with select left edge first (preferred)\n if (spaceRight - 20 >= selectDropdownWidth) {\n // Enough space to the right - align with select left edge\n leftPosition = selectRect.left;\n } else if (spaceLeft >= selectDropdownWidth) {\n // Not enough space to the right but enough to the left - align with select right edge\n leftPosition = selectRect.right - selectDropdownWidth + 20;\n } else {\n // Not enough space in either direction - position to stay within viewport\n if (spaceRight >= spaceLeft) {\n // More space to the right - align with left edge but constrain to viewport\n leftPosition = Math.max(20, viewportWidth - selectDropdownWidth - 20);\n } else {\n // More space to the left - align with right edge but constrain to viewport\n leftPosition = Math.max(20, selectRect.right - selectDropdownWidth + 20);\n }\n }\n\n setDropdownPosition({\n left: leftPosition,\n top: topPosition,\n });\n }\n }, 10);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, [dropdownOpen]);\n\n const doneButtonKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n event.preventDefault();\n if (event.key === 'Shift') {\n shiftKeyPressedRef.current = true;\n } else if ((event.shiftKey && shiftKeyPressedRef.current && event.key === 'Tab') || event.key === 'Tab') {\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n }, 0);\n shiftKeyPressedRef.current = false;\n } else if (event.key === 'Escape' || event.key === 'Enter' || event.key === 'Space' || event.key === ' ') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n } else {\n shiftKeyPressedRef.current = false;\n }\n };\n\n /* istanbul ignore next */\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const { key } = event;\n if (key === 'Tab' || (event.shiftKey && key === 'Tab')) {\n setTimeout(() => {\n doneButtonRef.current?.focus();\n }, 0);\n } else if (key === 'ArrowDown' || key === 'ArrowUp') {\n event.preventDefault();\n setTimeout(() => {\n hiddenButtonRef.current?.focus();\n }, 0);\n let newFocusedIndex = focusedIndex;\n if (key === 'ArrowDown') {\n newFocusedIndex = Math.min(focusedIndex + 1, filteredOptions.current.length - 1);\n } else if (key === 'ArrowUp') {\n newFocusedIndex = Math.max(focusedIndex - 1, 0);\n }\n // If focus is on the first option and the Up arrow is pressed, move focus to the last option\n if (focusedIndex === 0 && event.key === 'ArrowUp') {\n newFocusedIndex = filteredOptions.current.length - 1;\n }\n // If focus is on the last option and the Down arrow is pressed, move focus to the first option\n else if (focusedIndex === filteredOptions.current.length - 1 && event.key === 'ArrowDown') {\n newFocusedIndex = 0;\n }\n setFocusedIndex(newFocusedIndex);\n if (optionsListRef.current && newFocusedIndex >= 0) {\n const focusedOption = optionsListRef.current.querySelectorAll(`.${styles.optionsList}`)[\n newFocusedIndex\n ] as HTMLElement;\n const isFocusedOptionSelected = focusedOption.children[0].getAttribute('aria-checked');\n const textToAnnounced = `${focusedOption.textContent} ${\n isFocusedOptionSelected === 'true' ? 'selected' : 'not selected'\n } ${newFocusedIndex + 1} out of ${filteredOptions.current.length}`;\n announceOption(textToAnnounced);\n if (focusedOption) {\n focusedOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n } else if (key === 'Enter' || key === 'Space' || key === ' ') {\n if (focusedIndex !== -1) {\n handleLiClick(filteredOptions.current[focusedIndex].value);\n }\n } else if (key === 'Escape') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n }\n };\n\n useEffect(() => {\n if (typingTimeout) {\n clearTimeout(typingTimeout);\n }\n const timeout = setTimeout(() => {\n const filteredResults = filteredOptions.current.length\n ? `${filteredOptions.current.length} results are available, use up and down arrow keys to navigate`\n : 'No results available';\n if (dropdownOpen) {\n announceOption(filteredResults);\n }\n }, 500);\n setTypingTimeout(timeout);\n }, [searchTerm]);\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n useEffect(() => {\n const multiSelect = multiSelectRef.current;\n if (multiSelect) {\n multiSelect.addEventListener('focus', handleFocus);\n multiSelect.addEventListener('blur', handleBlur);\n }\n return () => {\n if (multiSelect) {\n multiSelect.removeEventListener('focus', handleFocus);\n multiSelect.removeEventListener('blur', handleBlur);\n }\n };\n }, [handleFocus, handleBlur]);\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n // For default variant we use bottom border only, for rounded we use full border.\n multiSelectStyleObj = {\n ['--theme-color' as any]: themeColor,\n };\n }\n }\n\n const closeOverlay = () => {\n setDropdownOpen(false);\n };\n\n const handleDoneButtonClick = () => {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n onSelectionChange(selectedOptions);\n };\n\n return (\n <div className={styles.multiSelectContainer}>\n <div className={styles.listOptionsWrap}>\n <div className={`${className} ${styles.selectedValuesWrap}`} ref={selectRef}>\n <div\n className={`${styles.selectedValues} ${dropdownOpen ? styles.focused : ''} ${selectedOptions.length > 0 ? styles.selected : ''} ${selectedOptions.length > 1 ? styles.countShow : ''} ${\n selectedOptions.length === 0 ? styles.placeholder : ''\n } ${variant === 'rounded' ? styles.rounded : ''}`}\n ref={multiSelectRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={() => toggleDropDown(!dropdownOpen)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n toggleDropDown(!dropdownOpen);\n }\n }}\n tabIndex={0}\n data-testid={'selected-input'}\n style={{ ...multiSelectStyleObj, ...style }}\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-multiselectable=\"true\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n >\n <span>{selectedText}</span>\n <div className={styles.countAndIconContainer}>\n {selectedOptions.length > 1 && (\n <span\n className={styles.selectedCount}\n data-testid={'selected-count'}\n style={{ backgroundColor: themeColor }}\n >\n {selectedOptions.length}\n </span>\n )}\n <span\n className={styles.dropDownIcon}\n onClick={() => toggleDropDown(!dropdownOpen)}\n data-testid={'arrow-button'}\n >\n <svg width=\"12px\" height=\"7px\" viewBox=\"0 0 12 7\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-2360.000000, -295.000000)\" fill=\"#666666\">\n <g transform=\"translate(2006.000000, 248.000000)\">\n <path\n d=\"M358.027356,44.3431458 L358.027146,50.6581458 L364.343146,50.6589352 L364.343146,52.3431458 L358.027146,52.3421458 L358.027356,52.3431458 L356.343146,52.3431458 L356.343146,44.3431458 L358.027356,44.3431458 Z\"\n transform=\"translate(360.343146, 48.343146) scale(-1, -1) rotate(-225.000000) translate(-360.343146, -48.343146)\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div id=\"announcement\" aria-live=\"assertive\" role=\"alert\" className={styles.announcement}></div>\n {isMounted\n ? createPortal(\n <>\n {dropdownOpen && selectRef && (\n <div\n onClick={closeOverlay}\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n className={`${styles.optionsListContainer}`}\n ref={selectDropdownRef}\n onClick={(e) => e.stopPropagation()}\n style={{\n opacity: dropdownPosition.top ? 1 : 0,\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n paddingBottom: filteredOptions.current.length === 1 ? 0 : undefined,\n }}\n >\n <div className={styles.optionsListWrap}>\n {options.length >= 6 && (\n <div className={styles.searchInputWrap}>\n <input\n type=\"text\"\n ref={searchInputRef}\n placeholder=\"Type to filter\"\n className={styles.searchInput}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n data-testid={'search-input'}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n />\n </div>\n )}\n <ul ref={optionsListRef} role=\"listbox\">\n {filteredOptions.current.map((option, index) => (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n key={option.value}\n className={`${styles.optionsList} ${index === focusedIndex ? styles.focused : ''}`}\n onClick={() => handleLiClick(option.value)}\n aria-selected={index === focusedIndex}\n role=\"option\"\n >\n <PseudoCheckbox\n themeColor={themeColor}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n />\n <span>{option.label}</span>\n </li>\n ))}\n </ul>\n </div>\n {filteredOptions.current.length > 1 && (\n <div className={styles.btnContainer}>\n <input\n ref={hiddenButtonRef}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n className={styles.hiddenButton}\n />\n <Button\n themeColor={themeColor}\n variant=\"primary\"\n size=\"medium\"\n disabled={selectedOptions.length > 0 ? false : true}\n onClick={handleDoneButtonClick}\n data-testid={'done-button'}\n onKeyDown={(event) => {\n doneButtonKeyDown(event);\n }}\n ref={doneButtonRef}\n >\n Done\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n </div>\n );\n};\n",".multiSelectContainer {\n position: relative;\n .quickOptionsWrap {\n @apply tw--mr-3 tw-flex tw-flex-row tw-flex-wrap tw-gap-3;\n li {\n word-break: break-word;\n @apply tw-relative tw-box-border tw-inline-flex tw-min-w-[80px] tw-cursor-pointer tw-list-none tw-items-center tw-break-words tw-rounded-[4px] tw-border tw-border-solid tw-border-[#006bb1] tw-bg-transparent tw-px-[14px] tw-py-[8px] tw-text-base tw-leading-6 tw-text-[#006bb1];\n &:hover,\n &:focus-visible,\n &.selected {\n @apply tw-outline tw-outline-2 -tw-outline-offset-2 tw-outline-[#006bb1];\n }\n &:hover,\n &:focus-visible {\n @apply tw-underline;\n }\n &.disabled {\n @apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-text-[#333333] tw-no-underline tw-outline-0 #{!important};\n }\n }\n }\n}\n","import React, { CSSProperties, useRef, useState } from 'react';\nimport { Checkbox } from '../checkbox/checkbox';\nimport styles from './quick-multi-select.module.scss';\nimport { IOption } from '../../interfaces/select.type';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n id?: string;\n}\nexport const QuickMultiSelect: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n id = '',\n}) => {\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const checkboxRefs = useRef<{ [key: string]: HTMLInputElement | null }>({});\n let quickMultiSelectStyleObj: CSSProperties = {};\n let theme: string;\n\n const handleLiClick = (id: string): void => {\n const clickedOption = options.find((option) => option.value === id);\n if (!clickedOption || clickedOption.disable) {\n return;\n }\n const checkbox = checkboxRefs.current[id];\n checkbox?.click();\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n }\n };\n\n if (themeColor) {\n theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#333333' : themeColor;\n if (theme === 'dark' || theme === 'light') {\n quickMultiSelectStyleObj = {\n outlineColor: borderColor,\n borderColor: borderColor,\n color: themeColor === '#ffffff' || theme === 'light' ? '#333333' : themeColor,\n };\n }\n }\n\n return (\n <div className={styles.multiSelectContainer} role=\"group\">\n <ul className={styles.quickOptionsWrap} id={id}>\n {options.map((option) => (\n <li\n style={{ ...quickMultiSelectStyleObj, ...style }}\n key={option.value}\n className={`${className} ${\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n ? styles.disabled\n : ''\n } ${selectedOptions.includes(option.value) ? styles.selected : ''}`}\n tabIndex={option.disable ? -1 : 0}\n onClick={() => handleLiClick(option.value)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space') {\n event.preventDefault();\n handleLiClick(option.value);\n }\n }}\n data-testid={'option-box'}\n >\n <Checkbox\n id={option.value}\n checkboxSize=\"large\"\n tabIndex={-1}\n themeColor={themeColor}\n ref={(checkbox) => {\n checkboxRefs.current[option.value] = checkbox; // Store checkbox reference\n }}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n >\n <span\n style={{\n color:\n (themeColor && (themeColor === '#ffffff' || theme === 'light')) ||\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n ? '#333333'\n : themeColor && (themeColor !== '#ffffff' || theme !== 'light')\n ? themeColor\n : '#006bb1',\n }}\n >\n {option.label}\n </span>\n </Checkbox>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n",".singleSelectWrapper {\n position: relative;\n .quickOption {\n @apply tw-flex tw-flex-row tw-flex-wrap tw-gap-3;\n li {\n @apply tw-relative tw-box-border tw-inline-flex tw-min-h-[44px] tw-min-w-[80px] tw-cursor-pointer tw-list-none tw-items-center tw-rounded-[4px] tw-border tw-border-solid tw-border-[#006bb1] tw-bg-transparent tw-px-6 tw-py-[9px] tw-text-center tw-text-base tw-leading-6 tw-text-[#006bb1];\n word-break: break-word;\n &:hover,\n &:focus-visible,\n &.selected {\n @apply tw-outline tw-outline-2 -tw-outline-offset-2 tw-outline-[#006bb1];\n }\n &:hover,\n &:focus-visible {\n @apply tw-underline;\n }\n .triangle {\n @apply tw-absolute tw-right-0 tw-top-0 tw-inline-block tw-h-0 tw-w-0 tw-border-[11px] tw-border-solid tw-border-b-transparent tw-border-l-transparent tw-border-r-[#006bb1] tw-border-t-[#006bb1];\n .loader {\n @apply tw-absolute tw-left-[0px] tw-top-[-10px] tw-h-[10px] tw-w-[10px] tw-animate-spin tw-rounded-[50%] tw-border-2 tw-border-solid tw-border-[#ffffff] tw-border-r-[#006bb1];\n }\n .checkmarkWrap {\n @apply tw-absolute tw-left-[-1px] tw-top-[-9px];\n .checkmark {\n @apply tw-block tw-animate-[fill_0.4s_ease-in-out_0.4s_forwards,scale_0.3s_ease-in-out_0.9s_both] tw-rounded-[50%] tw-shadow-[inset_0px_0px_0px_transparent];\n stroke-miterlimit: 10;\n .checkmarkCheck {\n @apply tw-origin-[50%_50%] tw-animate-[stroke_0.8s_cubic-bezier(0.5,0,0.45,1)_0.2s_forwards];\n stroke-dasharray: 48;\n stroke-dashoffset: 48;\n }\n }\n }\n }\n &.disabled {\n @apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-text-[#333333] tw-no-underline tw-outline-0 #{!important};\n }\n }\n }\n}\n@keyframes scale {\n 0%,\n 100% {\n transform: none;\n }\n 50% {\n transform: scale3d(1.1, 1.1, 1);\n }\n}\n@keyframes fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px transparent;\n }\n}\n@keyframes stroke {\n 100% {\n stroke-dashoffset: 0;\n }\n}\n","import { CSSProperties, FC, useState } from 'react';\nimport styles from './quick-select.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { IOption } from '../../interfaces/select.type';\nimport { ColorsService } from '../colors.service';\n\ninterface Props {\n options: IOption[];\n onSelect: (option: IOption | undefined) => void;\n selected?: IOption;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n showLoader?: boolean;\n id?: string;\n}\n\nexport const QuickSelect: FC<Props> = ({\n options,\n onSelect,\n selected,\n themeColor,\n className = '',\n style = {},\n showLoader = false,\n id = '',\n}: Props) => {\n const [selectedOption, setSelected] = useState(selected);\n let quickOptionStyleObj: CSSProperties = {};\n let quickOptionTriangleStyleObj: CSSProperties = {};\n let checkmarkColor: string = '#ffffff';\n const selectOption = (option: any) => {\n if (selectedOption?.value === option?.value) {\n setSelected(undefined);\n onSelect(undefined);\n return;\n }\n onSelect(option);\n setSelected(option);\n };\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#333333' : themeColor;\n if (theme === 'dark' || theme === 'light') {\n checkmarkColor = themeColor === '#ffffff' || theme === 'dark' ? '#ffffff' : '#333333';\n quickOptionStyleObj = {\n outlineColor: borderColor,\n borderColor: borderColor,\n color: themeColor === '#ffffff' || theme === 'light' ? '#333333' : themeColor,\n };\n quickOptionTriangleStyleObj = {\n borderRightColor: borderColor,\n borderTopColor: borderColor,\n };\n }\n }\n\n return (\n <div className={styles.singleSelectWrapper}>\n <div className={styles.quickOption}>\n <ul className={styles.quickOption} role=\"radiogroup\" id={id}>\n {options.map((option: IOption) => (\n <li\n tabIndex={option.disable ? -1 : 0}\n className={`${className} ${selectedOption?.value === option.value ? styles.selected : ''} ${\n option.disable ? styles.disabled : ''\n }`}\n style={{ ...quickOptionStyleObj, ...style }}\n key={option.value}\n onClick={() => selectOption(option)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space') {\n event.preventDefault();\n selectOption(option);\n }\n }}\n data-testid={'checkbox-input'}\n role=\"radio\"\n aria-checked={selectedOption?.value === option.value}\n >\n {option.label}\n {selectedOption?.value === option.value && !option.disable && (\n <div className={styles.triangle} style={{ ...quickOptionTriangleStyleObj }}>\n {showLoader && (\n <div className={styles.loader} style={{ borderRightColor: themeColor ?? '#006bb1' }}></div>\n )}\n {!showLoader && (\n <div className={styles.checkmarkWrap}>\n <svg\n className={styles.checkmark}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"11\"\n height=\"9\"\n viewBox=\"0 0 11 9\"\n fill=\"none\"\n >\n <path\n className={styles.checkmarkCheck}\n stroke={checkmarkColor}\n d=\"M2.1 4.34286L4.12857 6.40001L8.9 1.60001\"\n strokeWidth=\"2\"\n />\n </svg>\n </div>\n )}\n </div>\n )}\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n",".scrollbarContainer {\n overflow-y: auto;\n}\n\n.scrollbarContainer::-webkit-scrollbar {\n width: 10px;\n}\n.scrollbarContainer::-webkit-scrollbar-track {\n display: none;\n}\n.scrollbarContainer::-webkit-scrollbar-thumb {\n background-color: #ccc !important;\n border: 2px #fff solid;\n border-radius: 15px;\n}\n\n/* Browsers without `::-webkit-scrollbar-*` support */\n.scrollbarContainer {\n @supports not selector(::-webkit-scrollbar) {\n scrollbar-width: thin;\n scrollbar-color: #ccc #0000;\n }\n}\n","import { ComponentPropsWithRef, FC, forwardRef } from 'react';\nimport styles from './scrollbar.module.css';\n\ninterface ScrollbarProps extends ComponentPropsWithRef<'div'> {\n children: any;\n}\n\nexport const Scrollbar: FC<ScrollbarProps> = forwardRef<HTMLDivElement, ComponentPropsWithRef<'div'> & ScrollbarProps>(\n ({ children, className = '', style = {}, ...rest }: ScrollbarProps, ref) => {\n const scrollbarClass = [styles.scrollbarContainer, className].filter(Boolean).join(' ');\n return (\n <>\n <div ref={ref} style={{ ...style }} className={scrollbarClass} {...rest}>\n {children}\n </div>\n </>\n );\n },\n);\n\nScrollbar.displayName = 'Scrollbar';\n",".select {\n @apply tw-relative;\n .selectContainer {\n @apply tw-relative;\n .selectButton {\n @apply tw-border-solid tw-border-x-0 tw-relative tw-box-border tw-h-10 tw-w-full tw-cursor-pointer tw-border-b tw-border-t tw-border-t-transparent tw-bg-transparent tw-py-1.5 tw-pl-[10px] tw-pr-8 tw-text-left tw-text-base tw-text-[#333333] tw-border-b-[#333333];\n &:focus {\n @apply tw-border-b-2 tw-border-t-2 tw-border-b-[#006bb1] tw-py-[5px] tw-outline-none tw-ring-0;\n }\n &.open {\n @apply tw-border-b-2 tw-border-t-2 tw-border-b-[#006bb1];\n }\n .selectValue {\n @apply tw-flex tw-items-center;\n &.placeholder {\n @apply tw-text-[#666666];\n }\n .seletIcon {\n @apply tw-mr-2 tw-h-5 tw-w-5 tw-flex-shrink-0;\n }\n .selectText {\n @apply tw-block tw-truncate;\n }\n }\n .chevronDownIconSpan {\n @apply tw-pointer-events-none tw-absolute tw-inset-y-0 tw-right-0 tw-flex tw-items-center tw-pr-2;\n .chevronDownIcon {\n @apply tw-h-5 tw-w-5 tw-text-[#333333];\n }\n }\n }\n }\n}\n\n.leave {\n @apply tw-transition tw-ease-in tw-duration-100;\n}\n.leaveFrom {\n @apply tw-opacity-100;\n}\n.leaveTo {\n @apply tw-opacity-0;\n}\n\n.selectOptions {\n @apply tw-max-h-[200px] tw-w-full tw-overflow-auto tw-bg-white tw-list-none tw-m-0 tw-px-0 tw-py-[10px] tw-text-base tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] sm:tw-text-sm [&::-webkit-scrollbar-thumb]:tw-rounded-md [&::-webkit-scrollbar-thumb]:tw-bg-[#a9a9a9] [&::-webkit-scrollbar]:tw-w-[6px];\n &:focus {\n @apply tw-outline-none;\n }\n}\n","import { FC, useEffect, useRef, useState } from 'react';\nimport { Listbox, ListboxButton } from '@headlessui/react';\nimport { IOption } from '../../interfaces/select.type';\nimport { ChevronDownIcon } from '@heroicons/react/20/solid';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport styles from './select.module.scss';\n\ninterface Props {\n children: any;\n selected: IOption | null;\n onSelect: (obj: IOption) => void;\n themeColor?: string;\n placeholder?: string;\n}\n\ninterface IDropdownPosition {\n left: number;\n top: number;\n}\n\nexport const Select: FC<Props> = ({ children, selected, onSelect, themeColor, placeholder }) => {\n const [isMounted, setIsMounted] = useState(false);\n const [open, setOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectButtonRef = useRef<HTMLButtonElement>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const [dropdownPosition, setDropdownPosition] = useState<IDropdownPosition>({ left: 0, top: 0 });\n const [isPositionCalculated, setIsPositionCalculated] = useState(false);\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n\n let borderColor = '#333333';\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.removeEventListener('resize', handleOnResize);\n };\n }, []);\n\n const calculateRemainingScroll = (): number => {\n return pageScrollHeight.current - (windowHeight.current + window.scrollY);\n };\n\n const getDropdownPosition = (): void => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n\n // Reset position calculation state\n setIsPositionCalculated(false);\n\n setTimeout(() => {\n const dropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n const remainingScroll = calculateRemainingScroll();\n const remainingSpace = windowHeight.current - selectRect.bottom;\n\n if (dropdownRect) {\n const dropdownHeight = dropdownRect.height;\n const selectTop = selectRect.top;\n const noSpaceAbove = dropdownHeight >= selectTop + window.scrollY;\n\n const top =\n (dropdownHeight >= selectTop &&\n (noSpaceAbove || remainingScroll >= dropdownHeight || remainingSpace >= dropdownHeight)) ||\n (selectTop >= dropdownHeight && remainingSpace >= dropdownHeight)\n ? selectRect.y + selectRect.height\n : selectRect.y - dropdownHeight;\n\n setDropdownPosition({\n left: selectRect.left,\n top: top ?? selectRect.top,\n });\n\n // Mark position as calculated\n setIsPositionCalculated(true);\n }\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, []);\n\n if (themeColor) {\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const theme = luminance(themeColor);\n if (theme === 'dark' || theme === 'light') {\n borderColor = themeColor === '#ffffff' ? '#c8c8c8' : themeColor;\n }\n }\n\n const handleSelect = (option: any) => {\n onSelect(option);\n };\n\n const handleFocus = () => setIsFocused(true);\n const handleBlur = () => setIsFocused(false);\n\n return (\n <Listbox value={selected} onChange={handleSelect}>\n {({ open: headlessOpen }) => {\n // Sync Headless UI's open state with our local state\n if (headlessOpen !== open) {\n setOpen(headlessOpen);\n if (headlessOpen) {\n getDropdownPosition();\n } else {\n // Reset position calculation when dropdown closes\n setIsPositionCalculated(false);\n }\n }\n\n return (\n <div className={styles.select}>\n <div className={styles.selectContainer} ref={selectRef}>\n <ListboxButton\n ref={selectButtonRef}\n data-testid=\"select-options\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`${styles.selectButton} ${headlessOpen ? styles.open : ''}`}\n style={{\n borderBottomColor: themeColor && (isFocused || headlessOpen) ? borderColor : '',\n }}\n >\n {selected ? (\n <span className={styles.selectValue}>\n {selected.avatar && <img src={selected.avatar} alt=\"\" className={styles.seletIcon} />}\n <span className={styles.selectText}>{selected.label}</span>\n </span>\n ) : (\n placeholder && <span className={`${styles.selectValue} ${styles.placeholder}`}>{placeholder}</span>\n )}\n <span className={styles.chevronDownIconSpan}>\n <ChevronDownIcon\n className={styles.chevronDownIcon}\n aria-hidden=\"true\"\n data-open={open ? true : undefined}\n />\n </span>\n </ListboxButton>\n </div>\n\n {isMounted &&\n createPortal(\n headlessOpen && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n ref={selectDropdownRef}\n style={{\n position: 'absolute',\n opacity: isPositionCalculated ? 1 : 0,\n width: selectRef.current?.clientWidth ?? 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n }}\n >\n {children}\n </div>\n </div>\n ),\n document.body,\n )}\n </div>\n );\n }}\n </Listbox>\n );\n};\n","import React, { FC, Fragment, forwardRef } from 'react';\nimport { Transition, ListboxOption, ListboxOptions } from '@headlessui/react';\nimport styles from './select.module.scss';\ninterface Props {\n children: any;\n setQuery: (query: any) => void;\n}\n\nexport const SelectOptions: FC<Props> = ({ children, setQuery }) => {\n return (\n <Transition\n as={Fragment}\n leave={styles.leave}\n leaveFrom={styles.leaveFrom}\n leaveTo={styles.leaveTo}\n afterLeave={() => setQuery('')}\n >\n <ListboxOptions className={styles.selectOptions}>{children}</ListboxOptions>\n </Transition>\n );\n};\n\ntype SelectOptionProps = { children: React.ReactNode; value: any; className: any; disable: boolean };\nexport type SelectRef = HTMLLIElement;\nexport const SelectOption = forwardRef<SelectRef, SelectOptionProps>((props, ref) => (\n <ListboxOption ref={ref} className={props.className} value={props.value} disabled={props.disable}>\n {props.children}\n </ListboxOption>\n));\n\nSelectOption.displayName = 'SelectOption';\n",".autocomplete {\n @apply tw-relative;\n .autocompleteContainer {\n @apply tw-relative tw-h-10 tw-w-full tw-cursor-default tw-overflow-hidden tw-bg-transparent tw-text-left tw-text-[#333333];\n &.disable {\n @apply tw-text-[#A7A7A7];\n }\n &:focus {\n @apply tw-outline-none;\n }\n &:focus-visible {\n @apply tw-ring-1 tw-ring-[#DFDFDF] tw-ring-offset-2 tw-ring-offset-[#DFDFDF];\n }\n .autocompleteInput {\n @apply tw-h-full tw-w-full tw-bg-transparent tw-box-border tw-border-0 tw-border-b-[1px] tw-border-b-[#333333] tw-pb-2 tw-pl-[10px] tw-pr-10 tw-pt-2 tw-text-base tw-leading-5 tw-placeholder-[#666666] tw-shadow-none;\n &:focus {\n @apply tw-border-b-2 tw-border-b-[#006bb1] tw-pb-[7px] tw-outline-none tw-ring-[0px];\n }\n &:focus-visible {\n @apply tw-ring-[0px];\n }\n /* Headless UI data attributes */\n &[data-focus] {\n @apply tw-border-b-2 tw-border-b-[#006bb1] tw-pb-[7px] tw-outline-none tw-ring-[0px];\n }\n\n &[data-disabled] {\n @apply tw-text-[#A7A7A7] tw-cursor-not-allowed;\n }\n }\n\n .autocompleteButton {\n @apply tw-absolute tw-inset-y-0 tw-right-0 tw-flex tw-items-center tw-pr-2 tw-bg-transparent tw-border-0;\n\n /* Headless UI data attributes */\n &[data-focus] {\n @apply tw-outline-none tw-ring-2 tw-ring-[#006bb1] tw-ring-offset-1;\n }\n\n &[data-disabled] {\n @apply tw-cursor-not-allowed;\n }\n\n .chevronDownIcon {\n @apply tw-h-5 tw-w-5 tw-text-[#333333] tw-transition-transform tw-duration-200;\n &.disable {\n @apply tw-text-[#A7A7A7];\n }\n }\n\n /* Rotate chevron when combobox is open */\n &[data-open] .chevronDownIcon {\n @apply tw-rotate-180;\n }\n }\n }\n}\n\n.leave {\n @apply tw-transition tw-ease-in tw-duration-100;\n}\n.leaveFrom {\n @apply tw-opacity-100;\n}\n.leaveTo {\n @apply tw-opacity-0;\n}\n\n.autocompleteOptions {\n @apply tw-max-h-[210px] tw-w-full tw-overflow-auto tw-bg-white tw-list-none tw-m-0 tw-px-0 tw-py-[10px] tw-text-base tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] sm:tw-text-sm;\n @apply [&::-webkit-scrollbar-thumb]:tw-rounded-md [&::-webkit-scrollbar-thumb]:tw-bg-[#a9a9a9] [&::-webkit-scrollbar]:tw-w-[6px];\n\n /* Headless UI transition data attributes */\n &[data-transition] {\n @apply tw-transition tw-duration-200 tw-ease-out;\n }\n\n &[data-closed] {\n @apply tw-opacity-0 tw-scale-95;\n }\n\n &[data-open] {\n @apply tw-opacity-100 tw-scale-100;\n }\n\n &:focus {\n @apply tw-outline-none;\n }\n}\n","import React, { FC, useRef, useEffect, CSSProperties, useState, useCallback } from 'react';\nimport { Combobox, ComboboxInput, ComboboxButton } from '@headlessui/react';\nimport { IOption } from '../../interfaces/select.type';\nimport { ChevronDownIcon } from '@heroicons/react/20/solid';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport styles from './auto-complete.module.scss';\n\ninterface Props {\n children: any;\n selected: IOption | null;\n onSelect: (obj: IOption | null) => void;\n setQuery?: (query: string) => void;\n disable?: boolean;\n clearSearch?: boolean;\n themeColor?: string;\n}\n\nexport const AutoComplete: FC<Props> = ({\n children,\n selected,\n onSelect,\n setQuery = () => {},\n disable,\n clearSearch = false,\n themeColor,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputButton = useRef<HTMLButtonElement>(null);\n const selectRef = useRef<HTMLDivElement>(null);\n const selectDropdownRef = useRef<HTMLDivElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const [isPositionCalculated, setIsPositionCalculated] = useState(false);\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n\n let OptionStyleObj: CSSProperties = {};\n\n useEffect(() => {\n if (inputRef.current && selected) {\n inputRef.current.value = selected.label || '';\n }\n }, [selected]);\n\n useEffect(() => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n }, []);\n\n const getDropdownPosition = useCallback(() => {\n if (selectRef.current) {\n // Use visualViewport for zoom-aware positioning if available\n const viewport = window.visualViewport;\n const selectRect = selectRef.current.getBoundingClientRect();\n setIsPositionCalculated(false);\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n let left = selectRect.left;\n let top = selectRect.y + selectRect.height;\n let remainingSpace = window.innerHeight - selectRect.bottom;\n let remainingScroll = document.body.scrollHeight - (window.innerHeight + window.scrollY);\n if (viewport) {\n // Adjust for zoom and scroll offset\n left = selectRect.left + viewport.offsetLeft;\n top = selectRect.top + selectRect.height + viewport.offsetTop;\n remainingSpace = viewport.height - (selectRect.bottom - viewport.offsetTop);\n remainingScroll = document.body.scrollHeight - (viewport.height + viewport.pageTop);\n }\n if (selectDropdownRect) {\n const dropdownHeight = selectDropdownRect.height;\n const selectTop = selectRect.top;\n const noSpaceAbove = dropdownHeight >= selectTop + window.scrollY;\n const openTop =\n (dropdownHeight >= selectTop &&\n (noSpaceAbove || remainingScroll >= dropdownHeight || remainingSpace >= dropdownHeight)) ||\n (selectTop >= dropdownHeight && remainingSpace >= dropdownHeight)\n ? top\n : (viewport ? selectRect.top + viewport.offsetTop : selectRect.y) - dropdownHeight;\n setDropdownPosition({\n left,\n top: openTop ?? (viewport ? selectRect.top + viewport.offsetTop : selectRect.top),\n });\n setIsPositionCalculated(true);\n }\n }, 0);\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, []);\n\n const handleInputClick = () => {\n if (typeof isOpen !== 'undefined' && inputRef.current) {\n if (!isOpen) {\n getDropdownPosition();\n setIsFocused(true);\n if (selected) {\n inputRef.current.value = selected.label || '';\n }\n if (clearSearch) {\n inputRef.current.value = '';\n setQuery('');\n }\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));\n } else {\n // If open, close it (toggle behavior)\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));\n setIsFocused(false);\n }\n }\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n let borderColor;\n if (themeColor === '#ffffff') {\n borderColor = '#c8c8c8';\n } else if (isFocused) {\n borderColor = themeColor;\n } else {\n borderColor = '#333333';\n }\n if (theme === 'dark' || theme === 'light') {\n OptionStyleObj = {\n borderBottomColor: borderColor,\n };\n }\n }\n\n return (\n <Combobox value={selected} onChange={onSelect} disabled={disable}>\n {({ open: headlessOpen }) => {\n // Sync Headless UI's open state with our local state and trigger positioning\n if (headlessOpen !== isOpen) {\n setIsOpen(headlessOpen);\n if (headlessOpen) {\n // Calculate positioning when dropdown opens\n getDropdownPosition();\n } else {\n // Reset position calculation when dropdown closes\n setIsPositionCalculated(false);\n }\n }\n\n return (\n <div className={styles.autocomplete}>\n <div ref={selectRef} className={`${styles.autocompleteContainer} ${disable ? styles.disable : ''}`}>\n <ComboboxInput\n ref={inputRef}\n data-testid={'select-input'}\n className={styles.autocompleteInput}\n displayValue={(o: any) => o?.label || ''}\n onChange={(event) => {\n setQuery(event.target.value);\n // Remove getDropdownPosition call to prevent jerk during typing\n }}\n onClick={handleInputClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{ ...OptionStyleObj }}\n placeholder=\"Select your option\"\n autoComplete=\"off\"\n />\n <ComboboxButton className={styles.autocompleteButton} data-testid={'select-button'} ref={inputButton}>\n <ChevronDownIcon\n className={`${styles.chevronDownIcon} ${disable ? styles.disable : ''}`}\n aria-hidden=\"true\"\n data-open={headlessOpen ? true : undefined}\n />\n </ComboboxButton>\n </div>\n\n {isMounted\n ? createPortal(\n <>\n {headlessOpen && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n ref={selectDropdownRef}\n style={{\n position: 'absolute',\n opacity: isPositionCalculated ? 1 : 0,\n width: selectRef.current ? selectRef.current.clientWidth : 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n\n zIndex: 1000,\n }}\n >\n {children}\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n );\n }}\n </Combobox>\n );\n};\n","import React, { FC, Fragment, forwardRef } from 'react';\nimport { Transition, ComboboxOptions, ComboboxOption } from '@headlessui/react';\nimport styles from './auto-complete.module.scss';\n\ninterface Props {\n children: any;\n setQuery: (query: any) => void;\n}\n\nexport const AutoCompleteOptions: FC<Props> = ({ children, setQuery }) => {\n return (\n <Transition\n as={Fragment}\n leave={styles.leave}\n leaveFrom={styles.leaveFrom}\n leaveTo={styles.leaveTo}\n afterLeave={() => setQuery('')}\n >\n <ComboboxOptions className={styles.autocompleteOptions}>{children}</ComboboxOptions>\n </Transition>\n );\n};\n\ntype ComboboxOptionProps = { children: React.ReactNode; value: any; className: any; disable: boolean };\nexport type ComboboxRef = HTMLLIElement;\nexport const AutoCompleteOption = forwardRef<ComboboxRef, ComboboxOptionProps>((props, ref) => (\n <ComboboxOption ref={ref} className={props.className} value={props.value} disabled={props.disable}>\n {props.children}\n </ComboboxOption>\n));\n\nAutoCompleteOption.displayName = 'AutoCompleteOption';\n",".textInputWrapper {\n\t@apply tw-w-full;\n\t.textInput {\n\t\t@apply tw-block tw-h-10 tw-w-full tw-border-0 tw-border-b tw-border-[#333333] tw-px-[10px] tw-pb-2 tw-pt-[7px] tw-text-base tw-text-[#333333] tw-outline-none;\n\t\t&:focus {\n\t\t\t@apply tw-border-b-2 tw-border-[#006bb1] tw-pb-[7px];\n\t\t}\n\t}\n}\n","import React, { FC, forwardRef, ComponentPropsWithRef, useState } from 'react';\nimport styles from './single-line-input.module.scss';\nimport { ColorsService } from '../colors.service';\n\ninterface SingleLineInputProps extends ComponentPropsWithRef<'input'> {\n themeColor?: string; // Made themeColor optional\n}\n\nexport const SingleLineInput: FC<SingleLineInputProps> = React.memo(\n forwardRef<HTMLInputElement, SingleLineInputProps>(\n ({ themeColor = '', style = {}, className = '', onFocus, onBlur, ...rest }: SingleLineInputProps, ref) => {\n const [isFocused, setIsFocused] = useState(false);\n let inputStyleObj = {};\n const textInputClasses = [styles.textInput, className].filter(Boolean).join(' ');\n themeColor = ColorsService.convert3HexTo6(themeColor);\n\n const handleFocus = (): void => {\n setIsFocused(true);\n };\n\n const handleBlur = (): void => {\n setIsFocused(false);\n };\n\n inputStyleObj = {\n borderBottomColor: isFocused ? (themeColor !== '#ffffff' ? themeColor : '#c8c8c8') : '',\n };\n\n return (\n <div className={styles.textInputWrapper}>\n <input\n type=\"text\"\n data-testid={'textbox-input'}\n ref={ref}\n className={textInputClasses}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{ ...inputStyleObj, ...style }}\n {...rest}\n />\n </div>\n );\n },\n ),\n);\n",".phoneWrapper {\n @apply tw-flex tw-max-w-[380px] tw-items-center tw-justify-between tw-gap-3;\n .countryCode {\n @apply tw-h-10 tw-w-full tw-max-w-[110px];\n button {\n @apply tw-h-10 tw-bg-transparent tw-pl-[10px] tw-font-normal;\n background: transparent !important;\n }\n }\n .phoneInputWrap {\n @apply tw-w-full;\n .phoneInput {\n @apply tw-h-10 tw-box-border tw-w-full tw-border-0 tw-border-b tw-border-[#333333] tw-bg-transparent tw-px-[3px] tw-text-base tw-text-[#333333] tw-placeholder-[#666666] tw-outline-none focus:tw-border-b-2 focus:tw-border-[#006bb1];\n &.serverError {\n &:focus {\n @apply tw-border-b-[#f54d4d];\n }\n }\n }\n }\n}\n\n.phonNumberList {\n @apply tw-min-w-[286px];\n\n // Updated for Headless UI 2.0 - now using div elements instead of ul/li\n & > div {\n width: auto;\n\n & > div {\n @apply tw-relative tw-cursor-default tw-select-none tw-px-[10px] tw-py-2;\n\n // Use Headless UI 2.0 data attributes and hover for better styling\n &[data-focus='true'],\n &[data-selected='true'],\n &.active,\n &:hover {\n @apply tw-bg-[#EEEEEE] tw-text-[#333333];\n }\n\n .countryListText {\n @apply tw-flex tw-items-center;\n & > span {\n @apply tw-block tw-truncate tw-font-normal;\n }\n }\n }\n }\n\n // Legacy support for old structure (in case it's still used somewhere)\n ul {\n width: auto;\n li {\n @apply tw-relative tw-cursor-default tw-select-none tw-px-[10px] tw-py-2;\n &.active {\n @apply tw-bg-[#EEEEEE] tw-text-[#333333];\n }\n .countryListText {\n @apply tw-flex tw-items-center;\n & > span {\n @apply tw-block tw-truncate tw-font-normal;\n }\n }\n }\n }\n}\n","import { SelectOption, SelectOptions } from '../select/select-options';\nimport { Select } from '../select/select';\nimport { SingleLineInput } from '../single-line-input';\nimport { IOption } from '../../interfaces/select.type';\nimport React, { FC, useEffect, useRef, useState } from 'react';\nimport styles from './phone.module.scss';\nimport { isValidPhoneNumber, getCountries, getCountryCallingCode } from 'react-phone-number-input/max';\nimport { CountryCode } from 'libphonenumber-js';\nimport en from 'react-phone-number-input/locale/en.json';\nimport { IPhoneData } from '../../interfaces/phone.types';\n\ninterface Props {\n countryShortName: string;\n required?: boolean;\n themeColor?: string;\n onUpdate: (obj: IPhoneData) => void;\n placeholder?: string;\n error?: boolean;\n validate?: boolean;\n id?: string;\n phoneNumberValue?: string | null;\n countryCodeFromURL?: string | null;\n additionalClassName?: string;\n type?: string;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport const Phone: FC<Props> = ({\n countryShortName,\n required = false,\n themeColor = '',\n onUpdate,\n placeholder = '',\n error = false,\n validate = true,\n id = '',\n phoneNumberValue = '',\n countryCodeFromURL = '',\n additionalClassName = '',\n type = 'tel',\n inputMode = 'numeric',\n}) => {\n /* Country Dropdown */\n const [validationError, setValidationError] = useState<boolean>(error);\n const DEFAULT_COUNTRY_CODE = 'US';\n const countryCode = useRef<string>(\n countryShortName && countryShortName !== '001' ? countryShortName : DEFAULT_COUNTRY_CODE,\n );\n\n useEffect(() => {\n if (countryCodeFromURL) {\n const selectedCountry = findCountry(countryCodeFromURL);\n if (selectedCountry) {\n setSelected(selectedCountry);\n countryCode.current = countryCodeFromURL;\n }\n }\n }, [countryCodeFromURL]);\n\n const isSelected = (obj1: any, obj2: any) => {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n return true;\n }\n return false;\n };\n\n const compareCountryCode = (a: string, b: string) => {\n if (en[a as keyof typeof en] < en[b as keyof typeof en]) {\n return -1;\n }\n if (en[a as keyof typeof en] > en[b as keyof typeof en]) {\n return 1;\n }\n return 0;\n };\n\n const countryList: IOption[] = getCountries()\n .sort(compareCountryCode)\n .map((country) => {\n const obj: IOption = {\n label: country + ' +' + getCountryCallingCode(country as CountryCode),\n value: country,\n };\n return obj;\n });\n\n const findCountry = (key: string) => {\n return countryList.find((country) => country.value == key);\n };\n\n const [selected, setSelected] = useState<any | null>(() => {\n const selectedCountry = findCountry(countryCode.current);\n return selectedCountry ? selectedCountry : null;\n });\n\n const onSelectDropDown = (value: any) => {\n countryCode.current = value;\n const selectedCountry = findCountry(value);\n setSelected(selectedCountry);\n processPhoneNumberInput(phoneNumber.current);\n };\n\n /* PhoneNumber input box */\n const phoneNumber = useRef(phoneNumberValue ?? '');\n\n const validatePhoneNumber = (phoneNumber: string) => {\n const trimmedPhoneNumber = phoneNumber.trim();\n\n if (trimmedPhoneNumber && countryCode.current) {\n /* Validation for all digits are same */\n const pattern = /^(\\d)\\1*$/;\n const areAllDigitsSame = pattern.test(phoneNumber.trim());\n if (areAllDigitsSame) return false;\n\n /* Validation according to country code */\n const phoneNumberWithCountryCode = `+${getCountryCallingCode(\n countryCode.current as CountryCode,\n )}${trimmedPhoneNumber}`;\n\n return isValidPhoneNumber(phoneNumberWithCountryCode);\n }\n\n return true;\n };\n\n const processPhoneNumberInput = (phoneNumber: string, initialConsentChecked: boolean = false) => {\n if (!validate) {\n const phoneObject: IPhoneData = {\n phoneNumber: phoneNumber,\n countryCode: countryCode.current,\n error: undefined,\n id: id,\n initialConsentChecked: initialConsentChecked,\n };\n onUpdate(phoneObject);\n }\n phoneNumber = phoneNumber.trim();\n const error = phoneNumber\n ? validatePhoneNumber(phoneNumber)\n ? undefined\n : 'invalid'\n : required\n ? 'required'\n : undefined;\n\n setValidationError(!(!validationError && error !== undefined));\n\n const phoneObject: IPhoneData = {\n phoneNumber: phoneNumber,\n countryCode: countryCode.current,\n error: error,\n id: id,\n initialConsentChecked: initialConsentChecked,\n };\n onUpdate(phoneObject);\n };\n /* PhoneNumber input box ends */\n\n return (\n <>\n {\n <div className={`${styles.phoneWrapper} ${additionalClassName?.trim() || ''}`} data-testid=\"phone-wrapper\">\n <div className={`${styles.countryCode} ouiCountryCode`}>\n <Select selected={selected} onSelect={onSelectDropDown} data-testid=\"phone-select\" themeColor={themeColor}>\n <div className={`${styles.phonNumberList} ouiPhonNumberList`}>\n <SelectOptions setQuery={() => {}} data-testid=\"phone-select-options\">\n {countryList.map((country) => (\n <SelectOption\n disable={false}\n key={country.value}\n value={country.value}\n className={({ active }: { active: boolean }) =>\n `${active || isSelected(selected, country) ? styles.active : ''}`\n }\n data-testid={`phone-select-option-${country.value}`}\n >\n <div className={`${styles.countryListText} ouiCountryListText`}>\n <span>\n {en[country.value as CountryCode]} +{getCountryCallingCode(country.value as CountryCode)}\n </span>\n </div>\n {/* )} */}\n </SelectOption>\n ))}\n </SelectOptions>\n </div>\n </Select>\n </div>\n <div className={`${styles.phoneInputWrap} ouiPhoneInputWrap`}>\n <SingleLineInput\n type={type}\n inputMode={inputMode}\n aria-labelledby=\"phone-number\"\n placeholder={placeholder}\n className={`${styles.phoneInput} ${validationError && validate ? styles.serverError : ''} ouiPhoneInput`}\n id={id}\n value={phoneNumberValue ?? ''}\n onBlur={(e) => {\n phoneNumber.current = e.target.value.trim();\n }}\n onChange={(e) => {\n phoneNumber.current = e.target.value;\n processPhoneNumberInput(phoneNumber.current);\n }}\n data-testid=\"phone-input\"\n themeColor={themeColor}\n />\n </div>\n </div>\n }\n </>\n );\n};\n",".progress {\n position: relative;\n overflow: hidden;\n max-width: 100%;\n width: 100%;\n margin: 0 auto;\n}\n.progress-bar {\n position: absolute;\n display: block;\n left: -60%;\n width: 60%;\n animation-duration: 2s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}","// components/ProgressBar.tsx\nimport React, { useMemo } from 'react';\nimport styles from './progress-bar.module.scss';\n\nexport type ProgressBarProps = {\n /** 0–100 percent (if set, mode becomes \"determinate\") */\n value?: number;\n /** Override mode; if omitted, determinate when `value` is set */\n mode?: 'determinate' | 'indeterminate';\n /** Thickness of the bar in pixels */\n strokeWidth?: number;\n /** CSS color for the filled bar */\n barColor?: string;\n /** CSS color for the track (background) */\n trackColor?: string;\n};\n\nconst ProgressBar: React.FC<ProgressBarProps> = ({\n value,\n mode: propMode,\n strokeWidth = 4,\n barColor = '#1976d2', // default to a primary‑blue\n trackColor = 'rgba(25,118,210,0.3)', // semi‑transparent blue\n}) => {\n const mode = propMode ?? (value != null ? 'determinate' : 'indeterminate');\n const pct = useMemo(() => {\n if (mode === 'determinate' && value != null) {\n return Math.max(0, Math.min(100, value));\n }\n return 0;\n }, [mode, value]);\n\n return (\n <>\n <div\n className={styles.progress}\n role=\"progressbar\"\n aria-valuemin={mode === 'determinate' ? 0 : undefined}\n aria-valuemax={mode === 'determinate' ? 100 : undefined}\n aria-valuenow={mode === 'determinate' ? pct : undefined}\n style={{\n height: strokeWidth,\n backgroundColor: trackColor,\n }}\n >\n <div\n className={styles['progress-bar']}\n style={{\n height: strokeWidth,\n width: mode === 'determinate' ? `${pct}%` : undefined,\n backgroundColor: barColor,\n animationName: mode === 'indeterminate' ? 'loading' : undefined,\n left: mode === 'indeterminate' ? -200 : 0,\n }}\n />\n </div>\n <style>{`\n @keyframes loading {\n 0% {\n left: -200px;\n width: 200px;\n }\n 50% {\n width: 200px;\n }\n 70% {\n width: 70%;\n }\n 80% {\n left: 50%;\n }\n 95% {\n left: 120%;\n }\n to {\n left: 100%;\n }\n }\n `}</style>\n </>\n );\n};\n\nexport { ProgressBar };\n",".radioWrapper {\n @apply tw-flex tw-flex-col;\n .radioBtnBox {\n @apply tw-relative tw-flex tw-items-center;\n .radioBtnLabel {\n @apply tw-my-[7px] tw-flex tw-cursor-pointer;\n .radioBtnInsideLabel {\n @apply tw-relative tw-mr-[10px] tw-w-5 tw-h-5;\n }\n .radioBtnInput {\n @apply tw-absolute tw-w-0 tw-h-0 tw-opacity-0;\n }\n .radioBtnAvatar {\n @apply tw-mr-[9px] tw-w-5 tw-h-5;\n img {\n @apply tw-mt-px tw-w-5 tw-h-5;\n min-width: 20px;\n }\n }\n .radioBtnText {\n @apply tw-text-base tw-text-[16px] tw-leading-[22px];\n word-break: break-word;\n }\n .radioBtnCircle {\n @apply tw-relative tw-mt-px tw-inline-block tw-w-5 tw-h-5 tw-rounded-full tw-border tw-border-solid;\n &.radioBtnChecked {\n @apply tw-border-2;\n }\n }\n .radioBtnCircleInside {\n @apply tw-absolute tw-left-1/2 tw-top-1/2 tw-ml-[-5px] tw-mt-[-5px] tw-w-[10px] tw-h-[10px] tw-rounded-full;\n }\n }\n }\n}\n","import { FC } from 'react';\nimport { IOption } from '../../interfaces';\nimport styles from './radio.module.scss';\n\ninterface RadioProps {\n themeColor?: string;\n name: string;\n checked?: boolean;\n onChange: (option: any) => void;\n option: IOption;\n}\n\nexport const Radio: FC<RadioProps> = ({ themeColor, name, checked, onChange, option }) => {\n const effectiveThemeColor = themeColor?.toLowerCase() === '#ffffff' ? '#c8c8c8' : themeColor;\n\n const handleChange = (option: IOption) => {\n onChange(option);\n };\n\n return (\n <div className={styles.radioWrapper}>\n <div className={styles.radioBtnBox}>\n <label htmlFor={option.value} className={styles.radioBtnLabel}>\n <div className={styles.radioBtnInsideLabel}>\n <input\n type=\"radio\"\n id={option.value}\n name={name}\n value={option.value}\n checked={checked}\n onChange={() => handleChange(option)}\n className={styles.radioBtnInput}\n />\n <span\n className={`${styles.radioBtnCircle} ${checked ? styles.radioBtnChecked : ''}`}\n style={{\n borderColor: checked ? effectiveThemeColor : '#C8C8C8',\n }}\n >\n {checked && (\n <span className={styles.radioBtnCircleInside} style={{ backgroundColor: effectiveThemeColor }}></span>\n )}\n </span>\n </div>\n {option.avatar && (\n <div className={styles.radioBtnAvatar}>\n <img\n aria-hidden={true}\n src={option.avatar}\n width={20}\n height={20}\n alt=\"Location icon\"\n className={styles.radioBtnAvatarImg}\n />\n </div>\n )}\n <div className={styles.radioBtnText}>{option.label}</div>\n </label>\n </div>\n </div>\n );\n};\n\nexport default Radio;\n"],"x_google_ignoreList":[1,7,8],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-react.umd.js","names":[],"sources":["../src/lib/components/button/button.module.scss","../node_modules/@oncehub/relative-luminance/lib/index.js","../src/lib/components/colors.service.ts","../src/lib/components/button/button.tsx","../src/lib/components/checkbox/checkbox.module.scss","../src/lib/components/checkbox/checkbox.tsx","../src/lib/components/multi-line-input/multi-line-input.module.scss","../src/lib/components/multi-line-input/multi-line-input.tsx","../src/lib/components/multi-select/multi-select.module.scss","../src/lib/components/common/pseudo-checkbox/psuedo-checkbox.module.scss","../src/lib/components/common/pseudo-checkbox/pseudo-checkbox.tsx","../src/lib/components/multi-select/multi-select.tsx","../src/lib/components/multi-select-with-count/multi-select-with-count.module.scss","../src/lib/components/multi-select-with-count/multi-select-with-count.tsx","../src/lib/components/quick-multi-select/quick-multi-select.module.scss","../src/lib/components/quick-multi-select/quick-multi-select.tsx","../src/lib/components/quick-select/quick-select.module.scss","../src/lib/components/quick-select/quick-select.tsx","../src/lib/components/scrollbar/scrollbar.module.css","../src/lib/components/scrollbar/scrollbar.tsx","../src/lib/components/select/select.module.scss","../src/lib/components/select/select.tsx","../src/lib/components/select/select-options.tsx","../src/lib/components/select/auto-complete.module.scss","../src/lib/components/select/auto-complete.tsx","../src/lib/components/select/auto-complete-options.tsx","../src/lib/components/single-line-input/single-line-input.module.scss","../src/lib/components/single-line-input/single-line-input.tsx","../src/lib/components/phone/phone.module.scss","../src/lib/components/phone/phone.tsx","../src/lib/components/progress-bar/progress-bar.module.scss","../src/lib/components/progress-bar/progress-bar.tsx","../src/lib/components/radio/radio.module.scss","../src/lib/components/radio/radio.tsx"],"sourcesContent":[".button {\n\t@apply tw-box-border tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-border tw-border-solid tw-text-center tw-shadow-none hover:tw-underline focus:tw-underline disabled:tw-cursor-default disabled:hover:tw-no-underline;\n}\n.primary {\n\t@apply tw-border-transparent tw-bg-[#006bb1] tw-font-medium tw-text-white tw-outline-[#006bb1] focus:tw-outline-2 focus:tw-outline-offset-[3px];\n\t&:disabled {\n\t\t@apply tw-border-[#c8c8c8] tw-bg-[#c8c8c8] tw-text-white;\n\t}\n}\n.secondary {\n\t@apply tw-border-[#006bb1] tw-bg-white tw-font-normal tw-text-[#006bb1] hover:tw-border-transparent hover:tw-outline hover:tw-outline-2 hover:tw-outline-offset-[-2px] hover:tw-outline-[#006bb1] focus:tw-border-transparent focus:tw-outline focus:tw-outline-2 focus:tw-outline-offset-[-2px] focus:tw-outline-[#006bb1];\n\t&:disabled {\n\t\t@apply tw-border-[#c8c8c8] tw-text-[#c8c8c8] hover:tw-outline-0 focus:tw-outline-0;\n\t}\n}\n.small {\n\t@apply tw-min-h-[35px] tw-min-w-[70px] tw-px-[22px] tw-py-[4px] tw-text-sm tw-leading-[22px];\n\t&.rounded {\n\t\t@apply tw-rounded-[18px];\n\t}\n}\n.medium {\n\t@apply tw-min-h-[40px] tw-min-w-[74px] tw-px-[22px] tw-py-[7px] tw-text-sm tw-leading-[22px];\n\t&.rounded {\n\t\t@apply tw-rounded-[20px];\n\t}\n}\n.large {\n\t@apply tw-min-h-[44px] tw-min-w-[94px] tw-px-6 tw-py-[8px] tw-text-base tw-leading-[24px];\n\t&.rounded {\n\t\t@apply tw-rounded-[22px];\n\t}\n}\n.squared {\n\t@apply tw-rounded;\n}\n","const relativeLuminance = (colorCode) => {\n if (!colorCode) {\n throw new Error(\"Please provide a hex color code\");\n }\n const hexRegex = /^#([A-Fa-f0-9]{3}){1,2}$/;\n const isValidHex = hexRegex.test(colorCode);\n if (!isValidHex) {\n throw new Error(\"Please provide a valid hex code\");\n }\n colorCode =\n colorCode.length === 4\n ? colorCode.replace(/^#(.)(.)(.)$/, \"#$1$1$2$2$3$3\")\n : colorCode;\n const hex = colorCode.substring(1);\n const [red, green, blue] = [0, 2, 4].map((startIndex) =>\n Number.parseInt(hex.substring(startIndex, startIndex + 2), 16)\n );\n const lum = (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255;\n return lum < 0.7 ? \"dark\" : \"light\";\n};\n\nexport default relativeLuminance;\n","export class ColorsService {\n static convert3HexTo6(themeColor: string): string {\n if (typeof themeColor === 'string') {\n const isHexColor = /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(themeColor);\n if (isHexColor && themeColor.length === 4) {\n return themeColor.replace(/^#(.)(.)(.)$/, '#$1$1$2$2$3$3');\n }\n }\n return themeColor;\n }\n}\n","import { CSSProperties, ComponentPropsWithRef, FC, ReactNode, forwardRef } from 'react';\nimport styles from './button.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\ninterface ButtonProps extends ComponentPropsWithRef<'button'> {\n /** The content of the button */\n children: ReactNode;\n /** A color scheme to use for the button, defaults to `#006bb1` */\n themeColor?: string;\n /** The style of the button, defaults to `primary` */\n variant?: 'primary' | 'secondary';\n /** The size of the button, defaults to `small` */\n size?: 'small' | 'medium' | 'large';\n /** Shape of the corners, defaults to `rounded` */\n shape?: 'rounded' | 'squared';\n}\n\n/** Primary UI component for user interaction */\nexport const Button: FC<ButtonProps> = forwardRef<HTMLButtonElement, ComponentPropsWithRef<'button'> & ButtonProps>(\n (\n {\n themeColor = '',\n variant = 'primary',\n size = 'small',\n shape = 'rounded',\n children,\n className = '',\n style = {},\n disabled,\n ...rest\n }: ButtonProps,\n ref,\n ) => {\n let buttonStyleObj: CSSProperties = {};\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (!disabled && (theme === 'dark' || theme === 'light')) {\n const backgroundColor = variant === 'primary' ? themeColor : '#ffffff';\n const color =\n variant === 'primary'\n ? theme === 'dark'\n ? '#ffffff'\n : '#333333'\n : theme === 'light'\n ? '#333333'\n : themeColor;\n const borderColor = themeColor === '#ffffff' ? '#c8c8c8' : themeColor;\n buttonStyleObj = {\n backgroundColor: backgroundColor,\n color: color,\n outlineColor: borderColor,\n borderColor: borderColor,\n };\n }\n }\n const buttonClasses = [styles.button, styles[variant], styles[size], styles[shape], className]\n .filter(Boolean)\n .join(' ');\n return (\n <button\n disabled={disabled}\n ref={ref}\n style={{ ...buttonStyleObj, ...style }}\n className={`${buttonClasses}`}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nButton.displayName = 'Button';\n",".checkboxLayout {\n\t@apply tw-inline-flex tw-w-full tw-items-center tw-whitespace-nowrap tw-align-middle;\n\t.checkboxLabel {\n\t\t@apply tw-flex tw-w-full tw-cursor-pointer tw-items-baseline tw-gap-2 tw-text-sm tw-leading-[22px] tw-tracking-[0] tw-text-[#333333];\n\t\t& > span {\n\t\t\t@apply tw-whitespace-normal tw-text-sm tw-leading-[22px] tw-tracking-[0] tw-text-[#333333];\n\t\t}\n\t\t.checkboxInnerContainer {\n\t\t\t@apply tw-relative tw-top-[2px] tw-inline-block tw-h-4 tw-w-4 tw-shrink-0 tw-cursor-pointer tw-whitespace-nowrap tw-border-0 tw-align-middle tw-leading-[0] tw-shadow-none tw-outline-0;\n\t\t\t.checkboxInput {\n\t\t\t\t@apply tw-absolute tw-bottom-0 tw-left-0 tw-h-0 tw-w-0 tw-appearance-none tw-border-0 tw-p-0 tw-opacity-0 tw-outline-0;\n\t\t\t\t&:checked + .checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#006bb1] tw-bg-[#006bb1];\n\t\t\t\t\t.checkboxCheckMark {\n\t\t\t\t\t\t@apply tw-opacity-100;\n\t\t\t\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t\t\t\t@apply tw-animate-[180ms_linear_0ms_checkboxUncheckedChecked];\n\t\t\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&:disabled + .checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t\t\t\t}\n\t\t\t}\n\t\t\t.checkboxFrame {\n\t\t\t\t@apply tw-absolute tw-inset-0 tw-box-border tw-rounded-[3px] tw-border tw-border-solid tw-border-[#9c9c9c] tw-bg-transparent;\n\t\t\t\t.checkboxCheckMark {\n\t\t\t\t\t@apply tw-absolute tw-inset-0 tw-w-full;\n\t\t\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t\t\t@apply tw-stroke-[3px];\n\t\t\t\t\t\tstroke-dashoffset: 23;\n\t\t\t\t\t\tstroke-dasharray: 23;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:focus-visible {\n\t\t\t\t.checkboxFrame {\n\t\t\t\t\t@apply tw-outline tw-outline-2 tw--outline-offset-1 tw-outline-[#006bb1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.visuallyHidden {\n\t\t\tposition: absolute;\n\t\t\twidth: 0px;\n\t\t\theight: 0px;\n\t\t\tmargin: 0px;\n\t\t\tpadding: 0;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(0, 0, 0, 0);\n\t\t\tborder: 0;\n\t\t}\n\t}\n\t&.checkboxDisabled {\n\t\t@apply tw-pointer-events-none tw-cursor-default;\n\t\t.checkboxLabel {\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t.checkboxFrame {\n\t\t\t\t\t@apply tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.medium {\n\t\t.checkboxLabel {\n\t\t\t& > span {\n\t\t\t\t@apply tw-w-[calc(100%-24px)] tw-text-sm;\n\t\t\t}\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t@apply tw-h-4 tw-w-4;\n\t\t\t}\n\t\t}\n\t}\n\t&.large {\n\t\t.checkboxLabel {\n\t\t\t& > span {\n\t\t\t\t@apply tw-w-[calc(100%-27px)] tw-text-base;\n\t\t\t}\n\t\t\t.checkboxInnerContainer {\n\t\t\t\t@apply tw-top-[4px] tw-h-5 tw-w-5;\n\t\t\t}\n\t\t}\n\t}\n}\n@keyframes checkboxUncheckedChecked {\n\t0%,\n\t50% {\n\t\tstroke-dashoffset: 23;\n\t}\n\t50% {\n\t\tanimation-timing-function: cubic-bezier(0, 0, 0.2, 0.1);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n","import { CSSProperties, ComponentPropsWithRef, FC, ReactNode, forwardRef, useState } from 'react';\nimport styles from './checkbox.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\n\ninterface CheckboxProps extends ComponentPropsWithRef<'input'> {\n children?: ReactNode;\n themeColor?: string;\n checkboxSize?: string;\n}\nconst generateRandomId = () => `checkbox_${Math.random().toString(36).substring(2, 11)}`;\nexport const Checkbox: FC<CheckboxProps> = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n children,\n themeColor = '',\n checkboxSize = 'medium',\n id = generateRandomId(),\n checked = false,\n disabled = false,\n className = '',\n onChange,\n style = {},\n tabIndex,\n ...rest\n }: CheckboxProps,\n ref,\n ) => {\n const [isChecked, setIsChecked] = useState(checked);\n let checkboxStyleObj: CSSProperties = {};\n let borderColor;\n let checkMarkColor = disabled ? '#9b9b9b' : '#ffffff';\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n switch (theme) {\n case 'dark':\n checkMarkColor = disabled ? (isChecked ? '#9b9b9b' : '#f9f9f9') : '#ffffff';\n break;\n case 'light':\n checkMarkColor = disabled ? (isChecked ? '#9b9b9b' : '#f9f9f9') : isChecked ? '#333333' : '#ffffff';\n break;\n default:\n checkMarkColor = '#9b9b9b';\n break;\n }\n const backgroundColor = disabled ? '#f9f9f9' : isChecked ? themeColor : '#ffffff';\n borderColor = disabled ? '#e4e4e4' : themeColor == '#ffffff' ? '#333333' : themeColor;\n if (isChecked) {\n checkboxStyleObj = {\n backgroundColor: backgroundColor,\n borderColor: borderColor,\n outlineColor: borderColor,\n };\n }\n }\n }\n\n const checkboxDisabled = disabled ? styles.checkboxDisabled : '';\n const checkboxClasses = [styles.checkboxLayout, styles[checkboxSize], checkboxDisabled, className]\n .filter(Boolean)\n .join(' ');\n\n const toggleCheckbox = (event: any) => {\n if (event.key != 'Enter') {\n event.preventDefault();\n onChange?.(event.target.checked);\n setIsChecked(!isChecked);\n }\n };\n\n return (\n <>\n <div className={checkboxClasses} data-testid=\"checkbox\">\n <label className={styles.checkboxLabel} htmlFor={id} onClick={(event) => toggleCheckbox(event)}>\n <div\n className={styles.checkboxInnerContainer}\n tabIndex={tabIndex || disabled ? -1 : 0}\n onKeyPress={(event) => toggleCheckbox(event)}\n data-testid=\"checkbox-inner-container\"\n >\n <input\n className={styles.checkboxInput}\n onChange={(event) => toggleCheckbox(event)}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n id={id}\n ref={ref}\n {...rest}\n tabIndex={-1}\n data-testid=\"checkbox-input\"\n />\n <div\n className={styles.checkboxFrame}\n style={{ ...checkboxStyleObj, ...style }}\n data-testid=\"checkbox-frame\"\n >\n <svg\n version=\"1.1\"\n focusable=\"false\"\n className={styles.checkboxCheckMark}\n viewBox=\"0 0 24 24\"\n data-testid=\"check-mark-svg\"\n >\n <path\n className={styles.checkboxCheckMarkPath}\n fill=\"none\"\n stroke={checkMarkColor}\n d=\"M4.1,12.7 9,17.6 20.3,6.3\"\n />\n </svg>\n </div>\n </div>\n {children && <span data-testid=\"checkbox-label\">{children}</span>}\n <div className={styles.visuallyHidden} aria-live=\"polite\" aria-atomic=\"true\">\n {isChecked ? 'Checked' : 'Unchecked'}\n </div>\n </label>\n </div>\n </>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n",".textInputWrapper {\n\t@apply tw-w-full;\n\t.textInput {\n\t\t@apply tw-box-border tw-block tw-h-10 tw-max-h-[225px] tw-w-full tw-resize-none tw-border-0 tw-border-b tw-border-[#333333] tw-px-[10px] tw-pb-2 tw-pt-[7px] tw-text-base tw-text-[#333333] tw-outline-none;\n\t\t&:focus {\n\t\t\t@apply tw-border-b-2 tw-border-[#006bb1] tw-pb-[7px];\n\t\t}\n\t}\n}\n","import React, { FC, forwardRef, ComponentPropsWithRef, useState, useEffect } from 'react';\nimport styles from './multi-line-input.module.scss';\nimport { isMobile } from 'react-device-detect';\nimport { ColorsService } from '../colors.service';\n\ninterface MultiLineInputProps extends ComponentPropsWithRef<'textarea'> {\n themeColor?: string; // Made themeColor optional\n onSubmit?: () => void; // Submit form function in the parent component\n}\n\nexport const MultiLineInput: FC<MultiLineInputProps> = React.memo(\n forwardRef<HTMLTextAreaElement, MultiLineInputProps>(\n (\n { themeColor = '', onSubmit, style = {}, className = '', onInput, onFocus, onBlur, ...rest }: MultiLineInputProps,\n ref,\n ) => {\n const [isMobileDevice, setIsMobileDevice] = useState(true);\n const [isFocused, setIsFocused] = useState(false);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n\n useEffect(() => {\n setIsMobileDevice(isMobile);\n }, []);\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (!isMobileDevice && e.key === 'Enter') {\n if (!e.shiftKey && onSubmit) {\n e.preventDefault();\n onSubmit();\n }\n }\n };\n\n const autoGrow = (event: any) => {\n onInput?.(event);\n event.target.style.height = '40px';\n event.target.style.height = 2 + event.target.scrollHeight + 'px';\n };\n\n let inputStyleObj = {};\n const textInputClasses = [styles.textInput, className].filter(Boolean).join(' ');\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n inputStyleObj = {\n borderBottomColor: isFocused ? (themeColor !== '#ffffff' ? themeColor : '#c8c8c8') : '',\n };\n\n return (\n <div className={styles.textInputWrapper}>\n <textarea\n data-testid={'textbox-input'}\n ref={ref}\n className={textInputClasses}\n style={{ ...inputStyleObj, ...style }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={(event) => autoGrow(event)}\n onKeyDown={handleKeyPress}\n {...rest}\n />\n </div>\n );\n },\n ),\n);\n",".multiSelectContainer {\n\t@apply tw-relative tw-w-full;\n\t.listOptionsWrap {\n\t\t@apply tw-relative tw-w-full;\n\t\t.selectedValuesWrap {\n\t\t\t@apply tw-relative tw-h-10 tw-w-full;\n\t\t\t.selectedValues {\n\t\t\t\t@apply tw-box-border tw-border-solid tw-block tw-h-full tw-w-full tw-overflow-hidden tw-overflow-ellipsis tw-whitespace-nowrap tw-border-0 tw-border-b-[1px] tw-border-b-[#333333] tw-pb-2 tw-pl-[10px] tw-pr-11 tw-pt-2 tw-text-base tw-leading-4 tw-text-[#333333] tw-placeholder-[#666666] focus-within:tw-outline-none focus:tw-border-b-2 focus:tw-border-[#006BB1] focus:tw-pb-[7px] focus-visible:tw-outline-none;\n\t\t\t\t&.focused {\n\t\t\t\t\t@apply tw-border-b-2 tw-border-[#006BB1] tw-pb-[7px] tw-outline-none;\n\t\t\t\t}\n\t\t\t\t&.placeholder {\n\t\t\t\t\t@apply tw-text-[#666666];\n\t\t\t\t}\n\t\t\t}\n\t\t\t.dropDownIcon {\n\t\t\t\t@apply tw-absolute tw-right-2 tw-top-1/2 tw-flex tw-h-full tw-w-7 -tw-translate-y-1/2 tw-cursor-pointer tw-items-center tw-justify-center;\n\t\t\t}\n\t\t}\n\t}\n}\n.optionsListContainer {\n\t@apply tw-absolute tw-z-10 tw-mt-0 tw-max-h-[293px] tw-w-full tw-bg-white tw-pb-16 tw-text-sm tw-leading-[22px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] focus:tw-outline-none;\n\t&.top {\n\t\ttransform: translateY(calc(-100% - 40px));\n\t}\n\t.optionsListWrap {\n\t\t@apply tw-max-h-[225px] tw-overflow-auto tw-py-4;\n\t\t.searchInputWrap {\n\t\t\t@apply tw-mb-2 tw-h-10 tw-px-[10px];\n\t\t\t.searchInput {\n\t\t\t\t@apply tw-h-full tw-w-full tw-py-2 tw-pl-[10px] tw-box-border tw-outline tw-outline-1 tw-outline-offset-[-2px] tw-outline-[#C8C8C8];\n\t\t\t}\n\t\t}\n\t\tul{\n\t\t\t@apply tw-p-0 tw-m-0;\n\t\t}\n\t\t.optionsList {\n\t\t\t@apply tw-flex tw-list-none tw-items-start tw-gap-2 tw-px-[10px] tw-py-2 tw-box-border;\n\t\t\tspan {\n\t\t\t\tword-break: break-word;\n\t\t\t\t@apply tw-block tw-w-[calc(100%-22px)] tw-text-sm tw-leading-[22px] tw-break-words;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t\t&.focused {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t}\n\t}\n\t.btnContainer {\n\t\t@apply tw-absolute tw-box-border tw-inset-x-0 tw-flex tw-h-[64px] tw-w-full tw-items-center tw-justify-end tw-border-0 tw-border-t tw-border-solid tw-border-t-[#C8C8C8] tw-px-[18px];\n\t\t.hiddenButton{\n\t\t\t@apply tw-absolute tw-left-[-9999px] tw-h-0 tw-w-0 tw-opacity-0;\n\t\t}\n\t}\n}\n\n.optionsListContainer ::-webkit-scrollbar {\n\twidth: 6px;\n}\n.optionsListContainer ::-webkit-scrollbar-thumb {\n\tbackground-color: darkgrey;\n\tborder-radius: 6px;\n}\n\n.announcement{\n\t@apply tw-pointer-events-none tw-h-0 tw-overflow-hidden tw-opacity-0;\n}",".pseudoCheckbox {\n\t@apply tw-relative tw-box-border tw-h-4 tw-w-4 tw-rounded-[3px] tw-border tw-border-solid tw-border-[#9C9C9C] tw-top-[3px];\n\t.checkboxCheckMark {\n\t\t@apply tw-absolute tw-inset-0 tw-w-full;\n\t\t.checkboxCheckMarkPath {\n\t\t\t@apply tw-stroke-[3px];\n\t\t\tstroke-dashoffset: 23;\n\t\t\tstroke-dasharray: 23;\n\t\t}\n\t}\n\t&.checked {\n\t\t@apply tw-border-[#006bb1] tw-bg-[#006bb1];\n\t\t.checkboxCheckMark {\n\t\t\t@apply tw-opacity-100;\n\t\t\t.checkboxCheckMarkPath {\n\t\t\t\t@apply tw-animate-[180ms_linear_0ms_checkboxUncheckedChecked];\n\t\t\t\tstroke-dashoffset: 0;\n\t\t\t}\n\t\t}\n\t}\n\t&.checkboxDisabled {\n\t\t@apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-bg-[#f9f9f9];\n\t}\n}\n\n@keyframes checkboxUncheckedChecked {\n\t0%,\n\t50% {\n\t\tstroke-dashoffset: 23;\n\t}\n\t50% {\n\t\tanimation-timing-function: cubic-bezier(0, 0, 0.2, 0.1);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n","import { CSSProperties, ComponentPropsWithRef, FC } from 'react';\nimport luminance from '@oncehub/relative-luminance';\nimport styles from './psuedo-checkbox.module.scss';\nimport { ColorsService } from '../../colors.service';\n\ninterface CheckboxProps extends ComponentPropsWithRef<'div'> {\n themeColor?: string;\n checked?: boolean;\n disabled?: boolean;\n}\nconst PseudoCheckbox: FC<CheckboxProps> = ({ checked = false, themeColor = '', disabled = false }) => {\n let checkboxStyleObj: CSSProperties = {};\n let backgroundColor = '#006bb1';\n let checkMarkColor = disabled ? '#9b9b9b' : '#ffffff';\n const checkboxDisabled = disabled ? styles.checkboxDisabled : '';\n const isChecked = checked ? styles.checked : '';\n const checkboxClasses = [styles.pseudoCheckbox, isChecked, checkboxDisabled].filter(Boolean).join(' ');\n let borderColor;\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n if (disabled) {\n checkMarkColor = checked ? '#9b9b9b' : '#f9f9f9';\n } else {\n checkMarkColor = theme == 'light' ? '#333333' : '#ffffff';\n }\n backgroundColor = disabled ? '#f9f9f9' : checked ? themeColor : '#ffffff';\n borderColor = disabled ? '#e4e4e4' : themeColor === '#ffffff' ? '#333333' : themeColor;\n if (checked) {\n checkboxStyleObj = {\n backgroundColor: backgroundColor,\n borderColor: borderColor,\n outlineColor: borderColor,\n };\n }\n } else {\n checkMarkColor = '#9b9b9b';\n }\n }\n\n return (\n <div\n style={checkboxStyleObj}\n className={checkboxClasses}\n role=\"checkbox\"\n aria-checked={checked}\n aria-hidden=\"true\"\n tabIndex={-1}\n data-testid=\"checkbox-input\"\n >\n <svg version=\"1.1\" focusable=\"false\" className={styles.checkboxCheckMark} viewBox=\"0 0 24 24\">\n <path\n className={styles.checkboxCheckMarkPath}\n fill=\"none\"\n stroke={checkMarkColor}\n d=\"M4.1,12.7 9,17.6 20.3,6.3\"\n />\n </svg>\n </div>\n );\n};\n\nPseudoCheckbox.displayName = 'Checkbox';\nexport default PseudoCheckbox;\n","import React, { useState, useEffect, useRef, CSSProperties, KeyboardEvent } from 'react';\nimport { IOption } from '../../interfaces/select.type';\nimport { Button } from '../button/button';\nimport styles from './multi-select.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport PseudoCheckbox from '../common/pseudo-checkbox/pseudo-checkbox';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const MultiSelect: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n}) => {\n const filteredOptions = useRef(options);\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const [searchTerm, setSearchTerm] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const hiddenButtonRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n const optionsListRef = useRef<HTMLUListElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState(-1); // -1 means no focus\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n const [isMounted, setIsMounted] = useState(false);\n let multiSelectStyleObj: CSSProperties = {};\n const [dropdownPosition, setDropdownPosition] = useState({ left: 0, top: 0 });\n const [typingTimeout, setTypingTimeout] = useState<NodeJS.Timeout | null>(null);\n const shiftKeyPressedRef = useRef(false);\n const multiSelectRef = useRef<HTMLDivElement | null>(null);\n\n const setfocusOnDropdownClose = () => {\n setTimeout(() => {\n const selectFocusElement = selectRef.current?.children[0] as HTMLElement;\n selectFocusElement.focus();\n }, 0);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (selectDropdownRef.current && !selectDropdownRef.current.contains(event.target as Node)) {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.addEventListener('resize', handleOnResize);\n };\n }, []);\n\n const announceOption = (text: any): void => {\n const announcement = document.getElementById('announcement');\n if (announcement) {\n announcement.textContent = text;\n announcement.setAttribute('aria-live', 'assertive');\n setTimeout(() => {\n announcement.textContent = '';\n announcement.setAttribute('aria-live', 'off');\n }, 1000); // Announce and clear after 1 second (adjust as needed)\n }\n };\n\n useEffect(() => {\n const filtered = options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));\n filteredOptions.current = filtered;\n }, [options, searchTerm]);\n\n /* istanbul ignore next */\n const selectedText =\n selectedOptions.length > 0\n ? selectedOptions\n .map((value) => {\n const selectedOption = options.find((option) => option.value === value);\n return selectedOption?.label !== null ? selectedOption?.label : '';\n })\n .filter((label) => label !== '')\n .join(', ')\n : 'Select your option';\n\n const handleLiClick = (id: string) => {\n const clickedOption = options.find((option) => option.value === id);\n if (clickedOption && !clickedOption.disable && (maxOptions === undefined || selectedOptions.length <= maxOptions)) {\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit && dropdownOpen) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n announceOption(`${clickedOption?.label} ${newSelectedValues.includes(id) ? 'selected' : 'not selected'}`);\n }\n }\n };\n\n const toggleDropDown = (open: boolean) => {\n getDropdownPosition();\n setDropdownOpen(open);\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n announceOption('use up and down arrow keys to navigate');\n }, 0);\n };\n\n const calculateRemainingScroll = (): number => {\n return pageScrollHeight.current - (windowHeight.current + window.scrollY);\n };\n\n const getDropdownPosition = () => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n const remainingScroll = calculateRemainingScroll();\n const remainingSpace = windowHeight.current - selectRect.bottom;\n let topPosition;\n /* istanbul ignore next */\n if (selectDropdownRect) {\n const selectHeight = selectRect.height;\n const selectTopPosition = selectRect.top;\n const selectDropdownHeight = selectDropdownRect.height;\n const noSpaceAvailableAbove = selectDropdownHeight > selectTopPosition + window.scrollY;\n if (\n (selectTopPosition < selectDropdownHeight &&\n (noSpaceAvailableAbove ||\n (noSpaceAvailableAbove && remainingSpace < selectDropdownHeight) ||\n remainingScroll > selectDropdownHeight ||\n remainingSpace > selectDropdownHeight)) ||\n (selectTopPosition > selectDropdownHeight && remainingSpace > selectDropdownHeight)\n ) {\n topPosition = selectRect.y + selectHeight;\n } else {\n topPosition = selectRect.y - selectDropdownHeight;\n }\n\n setDropdownPosition({\n left: selectRect.left,\n top: topPosition ?? selectRect.top,\n });\n }\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, [dropdownOpen]);\n\n const doneButtonKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n event.preventDefault();\n if (event.key === 'Shift') {\n shiftKeyPressedRef.current = true;\n } else if ((event.shiftKey && shiftKeyPressedRef.current && event.key === 'Tab') || event.key === 'Tab') {\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n }, 0);\n shiftKeyPressedRef.current = false;\n } else if (event.key === 'Escape' || event.key === 'Enter' || event.key === 'Space' || event.key === ' ') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n } else {\n shiftKeyPressedRef.current = false;\n }\n };\n\n /* istanbul ignore next */\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const { key } = event;\n if (key === 'Tab' || (event.shiftKey && key === 'Tab')) {\n setTimeout(() => {\n doneButtonRef.current?.focus();\n }, 0);\n } else if (key === 'ArrowDown' || key === 'ArrowUp') {\n event.preventDefault();\n setTimeout(() => {\n hiddenButtonRef.current?.focus();\n }, 0);\n let newFocusedIndex = focusedIndex;\n if (key === 'ArrowDown') {\n newFocusedIndex = Math.min(focusedIndex + 1, filteredOptions.current.length - 1);\n } else if (key === 'ArrowUp') {\n newFocusedIndex = Math.max(focusedIndex - 1, 0);\n }\n // If focus is on the first option and the Up arrow is pressed, move focus to the last option\n if (focusedIndex === 0 && event.key === 'ArrowUp') {\n newFocusedIndex = filteredOptions.current.length - 1;\n }\n // If focus is on the last option and the Down arrow is pressed, move focus to the first option\n else if (focusedIndex === filteredOptions.current.length - 1 && event.key === 'ArrowDown') {\n newFocusedIndex = 0;\n }\n setFocusedIndex(newFocusedIndex);\n if (optionsListRef.current && newFocusedIndex >= 0) {\n const focusedOption = optionsListRef.current.querySelectorAll(`.${styles.optionsList}`)[\n newFocusedIndex\n ] as HTMLElement;\n const isFocusedOptionSelected = focusedOption.children[0].getAttribute('aria-checked');\n const textToAnnounced = `${focusedOption.textContent} ${\n isFocusedOptionSelected === 'true' ? 'selected' : 'not selected'\n } ${newFocusedIndex + 1} out of ${filteredOptions.current.length}`;\n announceOption(textToAnnounced);\n if (focusedOption) {\n focusedOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n } else if (key === 'Enter' || key === 'Space' || key === ' ') {\n if (focusedIndex !== -1) {\n handleLiClick(filteredOptions.current[focusedIndex].value);\n }\n } else if (key === 'Escape') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n }\n };\n\n useEffect(() => {\n if (typingTimeout) {\n clearTimeout(typingTimeout);\n }\n const timeout = setTimeout(() => {\n const filteredResults = filteredOptions.current.length\n ? `${filteredOptions.current.length} results are available, use up and down arrow keys to navigate`\n : 'No results available';\n if (dropdownOpen) {\n announceOption(filteredResults);\n }\n }, 500);\n setTypingTimeout(timeout);\n }, [searchTerm]);\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n useEffect(() => {\n const multiSelect = multiSelectRef.current;\n if (multiSelect) {\n multiSelect.addEventListener('focus', handleFocus);\n multiSelect.addEventListener('blur', handleBlur);\n }\n return () => {\n if (multiSelect) {\n multiSelect.removeEventListener('focus', handleFocus);\n multiSelect.removeEventListener('blur', handleBlur);\n }\n };\n }, [handleFocus, handleBlur]);\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#c8c8c8' : isFocused || dropdownOpen ? themeColor : '#333333';\n if (theme === 'dark' || theme === 'light') {\n multiSelectStyleObj = {\n borderBottomColor: borderColor,\n };\n }\n }\n\n const closeOverlay = () => {\n setDropdownOpen(false);\n };\n\n return (\n <div className={styles.multiSelectContainer}>\n <div className={styles.listOptionsWrap}>\n <div className={`${className} ${styles.selectedValuesWrap}`} ref={selectRef}>\n <div\n className={`${styles.selectedValues} ${dropdownOpen ? styles.focused : ''} ${\n selectedOptions.length === 0 ? styles.placeholder : ''\n }`}\n ref={multiSelectRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={() => toggleDropDown(!dropdownOpen)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n toggleDropDown(!dropdownOpen);\n }\n }}\n tabIndex={0}\n data-testid={'selected-input'}\n style={{ ...multiSelectStyleObj, ...style }}\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-multiselectable=\"true\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n >\n {selectedText}\n </div>\n <span\n className={styles.dropDownIcon}\n onClick={() => toggleDropDown(!dropdownOpen)}\n data-testid={'arrow-button'}\n >\n <svg width=\"12px\" height=\"7px\" viewBox=\"0 0 12 7\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-2360.000000, -295.000000)\" fill=\"#666666\">\n <g transform=\"translate(2006.000000, 248.000000)\">\n <path\n d=\"M358.027356,44.3431458 L358.027146,50.6581458 L364.343146,50.6589352 L364.343146,52.3431458 L358.027146,52.3421458 L358.027356,52.3431458 L356.343146,52.3431458 L356.343146,44.3431458 L358.027356,44.3431458 Z\"\n transform=\"translate(360.343146, 48.343146) scale(-1, -1) rotate(-225.000000) translate(-360.343146, -48.343146)\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n </div>\n <div id=\"announcement\" aria-live=\"assertive\" role=\"alert\" className={styles.announcement}></div>\n {isMounted\n ? createPortal(\n <>\n {dropdownOpen && selectRef && (\n <div\n onClick={closeOverlay}\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n className={`${styles.optionsListContainer}`}\n ref={selectDropdownRef}\n onClick={(e) => e.stopPropagation()}\n style={{\n opacity: dropdownPosition.left ? 1 : 0,\n width: selectRef.current ? selectRef.current.clientWidth : 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n }}\n >\n <div className={styles.optionsListWrap}>\n {options.length >= 6 && (\n <div className={styles.searchInputWrap}>\n <input\n type=\"text\"\n ref={searchInputRef}\n placeholder=\"Type to filter\"\n className={styles.searchInput}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n data-testid={'search-input'}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n />\n </div>\n )}\n <ul ref={optionsListRef} role=\"listbox\">\n {filteredOptions.current.map((option, index) => (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n key={option.value}\n className={`${styles.optionsList} ${index === focusedIndex ? styles.focused : ''}`}\n onClick={() => handleLiClick(option.value)}\n aria-selected={index === focusedIndex}\n role=\"option\"\n >\n <PseudoCheckbox\n themeColor={themeColor}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n />\n <span>{option.label}</span>\n </li>\n ))}\n </ul>\n </div>\n <div className={styles.btnContainer}>\n <input\n ref={hiddenButtonRef}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n className={styles.hiddenButton}\n />\n <Button\n themeColor={themeColor}\n variant=\"primary\"\n size=\"medium\"\n onClick={() => {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n onSelectionChange(selectedOptions);\n }}\n data-testid={'done-button'}\n onKeyDown={(event) => {\n doneButtonKeyDown(event);\n }}\n ref={doneButtonRef}\n >\n Done\n </Button>\n </div>\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n </div>\n );\n};\n",".multiSelectContainer {\n\t@apply tw-relative tw-w-auto;\n\t.listOptionsWrap {\n\t\t@apply tw-relative tw-w-full;\n\t\t.selectedValuesWrap {\n\t\t\t@apply tw-relative tw-h-[38px] tw-w-full tw-mt-[1px];\n\t\t\t.selectedValues {\n\t\t\t\t@apply tw-box-border tw-border-solid tw-flex tw-items-center tw-justify-between tw-cursor-pointer tw-h-full tw-w-full tw-overflow-hidden tw-overflow-ellipsis tw-whitespace-nowrap tw-border-0 tw-border-b-[1px] tw-border-b-[#c8c8c8] tw-pb-2 tw-pl-[10px] tw-pt-2 tw-text-[14px] tw-leading-[20px] tw-text-[#333333] focus-within:tw-outline-none focus:tw-pb-[7px] focus-visible:tw-outline-none tw-relative; \n\t\t\t\t&:focus {\n\t\t\t\t\tborder-bottom: 2px solid var(--theme-color, #006bb1);\n\t\t\t\t}\n\t\t\t\t&.focused {\n\t\t\t\t\t@apply tw-pb-[7px] tw-outline-none;\n\t\t\t\t}\n\t\t\t\t.countAndIconContainer {\n\t\t\t\t\t@apply tw-flex tw-items-center;\n\t\t\t\t}\n\t\t\t\t&.rounded {\n\t\t\t\t\t@apply tw-rounded-full tw-border tw-border-[#c8c8c8] tw-pl-4 tw-py-2 tw-pb-2 tw-pt-2 tw-h-9 tw-mt-0 tw-bg-[#F4F4F4] tw-flex tw-items-center;\n\t\t\t\t\t&.focused, &:hover, &:focus-visible {\n\t\t\t\t\t\tborder-color: var(--theme-color, #006bb1);\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px var(--theme-color, #006bb1);\n\t\t\t\t\t}\n\t\t\t\t\t&.selected {\n\t\t\t\t\t\tborder: 1px solid var(--theme-color, #006bb1);\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px var(--theme-color, #006bb1);\n\t\t\t\t\t\tbackground-color: color-mix(in srgb, var(--theme-color, #006bb1) 18%, transparent);\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: color-mix(in srgb, var(--theme-color, #006bb1) 36%, transparent);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t.selectedCount {\n\t\t\t\t@apply tw-box-border tw-h-[22px] tw-min-w-[22px] tw-rounded-full tw-px-[7px] tw-font-semibold tw-text-white tw-text-[14px] tw-leading-[22px] tw-ml-2 tw-mt-[1px];\n\t\t\t\tbackground-color: var(--theme-color, #006bb1);\n\t\t\t}\n\t\t\t.dropDownIcon {\n\t\t\t\t@apply tw-cursor-pointer tw-ml-2 tw-mr-[18px] tw-mt-0;\n\t\t\t}\n\t\t}\n\t}\n}\n.optionsListContainer {\n\t@apply tw-absolute tw-z-10 tw-mt-0 tw-max-h-[293px] tw-w-[83%] tw-bg-white tw-pb-16 tw-text-sm tw-leading-[22px] tw-max-w-[367px] s767:tw-max-w-[320px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] focus:tw-outline-none;\n\t&.top {\n\t\ttransform: translateY(calc(-100% - 40px));\n\t}\n\t.optionsListWrap {\n\t\t@apply tw-max-h-[225px] tw-overflow-auto tw-py-4;\n\t\t.searchInputWrap {\n\t\t\t@apply tw-mb-2 tw-h-10 tw-px-[10px];\n\t\t\t.searchInput {\n\t\t\t\t@apply tw-h-full tw-w-full tw-py-2 tw-pl-[10px] tw-box-border tw-outline tw-outline-1 tw-outline-offset-[-2px] tw-outline-[#C8C8C8];\n\t\t\t}\n\t\t}\n\t\tul{\n\t\t\t@apply tw-p-0 tw-m-0;\n\t\t}\n\t\t.optionsList {\n\t\t\t@apply tw-flex tw-list-none tw-items-start tw-gap-2 tw-px-[10px] tw-py-2 tw-box-border;\n\t\t\tspan {\n\t\t\t\tword-break: break-word;\n\t\t\t\t@apply tw-block tw-w-[calc(100%-22px)] tw-text-sm tw-leading-[22px] tw-break-words;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t\t&.focused {\n\t\t\t\t@apply tw-bg-[#EEEEEE];\n\t\t\t}\n\t\t}\n\t}\n\t.btnContainer {\n\t\t@apply tw-absolute tw-box-border tw-inset-x-0 tw-flex tw-h-[64px] tw-w-full tw-items-center tw-justify-end tw-border-0 tw-border-t tw-border-solid tw-border-t-[#C8C8C8] tw-px-[18px];\n\t\t.hiddenButton{\n\t\t\t@apply tw-absolute tw-left-[-9999px] tw-h-0 tw-w-0 tw-opacity-0;\n\t\t}\n\t}\n}\n\n.optionsListContainer ::-webkit-scrollbar {\n\twidth: 6px;\n}\n.optionsListContainer ::-webkit-scrollbar-thumb {\n\tbackground-color: darkgrey;\n\tborder-radius: 6px;\n}\n\n.announcement{\n\t@apply tw-pointer-events-none tw-h-0 tw-overflow-hidden tw-opacity-0 tw-w-[58px];\n}\n","import React, { useState, useEffect, useRef, CSSProperties, KeyboardEvent } from 'react';\nimport { IOption } from '../../interfaces/select.type';\nimport { Button } from '../button/button';\nimport styles from './multi-select-with-count.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport PseudoCheckbox from '../common/pseudo-checkbox/pseudo-checkbox';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n categoryName?: string;\n variant?: 'default' | 'rounded';\n placeholder?: string;\n}\n\nexport const MultiSelectWithCount: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n categoryName = '',\n variant = 'default',\n placeholder = 'Select your option',\n}) => {\n const filteredOptions = useRef(options);\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const [searchTerm, setSearchTerm] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const hiddenButtonRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n const optionsListRef = useRef<HTMLUListElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState(-1); // -1 means no focus\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n const [isMounted, setIsMounted] = useState(false);\n let multiSelectStyleObj: CSSProperties = {};\n const [dropdownPosition, setDropdownPosition] = useState({ left: 0, top: 0 });\n const [typingTimeout, setTypingTimeout] = useState<NodeJS.Timeout | null>(null);\n const shiftKeyPressedRef = useRef(false);\n const multiSelectRef = useRef<HTMLDivElement | null>(null);\n\n // Sync selectedOptions with checkedValue prop changes\n useEffect(() => {\n setSelectedOptions(checkedValue);\n }, [checkedValue]);\n\n const setfocusOnDropdownClose = () => {\n setTimeout(() => {\n const selectFocusElement = selectRef.current?.children[0] as HTMLElement;\n selectFocusElement.focus();\n }, 0);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (selectDropdownRef.current && !selectDropdownRef.current.contains(event.target as Node)) {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.addEventListener('resize', handleOnResize);\n };\n }, []);\n\n const announceOption = (text: any): void => {\n const announcement = document.getElementById('announcement');\n if (announcement) {\n announcement.textContent = text;\n announcement.setAttribute('aria-live', 'assertive');\n setTimeout(() => {\n announcement.textContent = '';\n announcement.setAttribute('aria-live', 'off');\n }, 1000); // Announce and clear after 1 second (adjust as needed)\n }\n };\n\n useEffect(() => {\n const filtered = options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));\n filteredOptions.current = filtered;\n }, [options, searchTerm]);\n\n /* istanbul ignore next */\n const selectedText =\n selectedOptions.length > 1 && categoryName\n ? categoryName\n : selectedOptions.length > 0\n ? selectedOptions\n .map((value) => {\n const selectedOption = options.find((option) => option.value === value);\n return selectedOption?.label !== null ? selectedOption?.label : '';\n })\n .filter((label) => label !== '')\n .join(', ')\n : placeholder;\n\n const handleLiClick = (id: string) => {\n const clickedOption = options.find((option) => option.value === id);\n if (clickedOption && !clickedOption.disable && (maxOptions === undefined || selectedOptions.length <= maxOptions)) {\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit && dropdownOpen) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n setTimeout(() => {\n getDropdownPosition();\n }, 50);\n if (filteredOptions.current.length === 1) {\n setDropdownOpen(false);\n }\n announceOption(`${clickedOption?.label} ${newSelectedValues.includes(id) ? 'selected' : 'not selected'}`);\n }\n }\n };\n\n const toggleDropDown = (open: boolean) => {\n getDropdownPosition();\n setDropdownOpen(open);\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n announceOption('use up and down arrow keys to navigate');\n }, 0);\n };\n\n const getDropdownPosition = () => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n if (selectDropdownRect) {\n const selectDropdownHeight = selectDropdownRect.height;\n const selectDropdownWidth = selectDropdownRect.width;\n const viewportWidth = window.innerWidth;\n\n // Vertical positioning logic\n const spaceBelow = windowHeight.current - selectRect.bottom;\n const spaceAbove = selectRect.top;\n\n let topPosition: number;\n\n // Try to position below first (preferred)\n if (spaceBelow >= selectDropdownHeight) {\n // Enough space below - position dropdown below the select\n topPosition = selectRect.bottom;\n } else if (spaceAbove >= selectDropdownHeight) {\n // Not enough space below but enough above - position above the select\n topPosition = selectRect.top - selectDropdownHeight;\n } else {\n // Not enough space in either direction - choose the side with more space\n if (spaceBelow >= spaceAbove) {\n topPosition = selectRect.bottom;\n } else {\n topPosition = selectRect.top - selectDropdownHeight;\n }\n }\n\n // Horizontal positioning logic\n const spaceRight = viewportWidth - selectRect.left;\n const spaceLeft = selectRect.right;\n\n let leftPosition: number;\n\n // Try to align with select left edge first (preferred)\n if (spaceRight - 20 >= selectDropdownWidth) {\n // Enough space to the right - align with select left edge\n leftPosition = selectRect.left;\n } else if (spaceLeft >= selectDropdownWidth) {\n // Not enough space to the right but enough to the left - align with select right edge\n leftPosition = selectRect.right - selectDropdownWidth + 20;\n } else {\n // Not enough space in either direction - position to stay within viewport\n if (spaceRight >= spaceLeft) {\n // More space to the right - align with left edge but constrain to viewport\n leftPosition = Math.max(20, viewportWidth - selectDropdownWidth - 20);\n } else {\n // More space to the left - align with right edge but constrain to viewport\n leftPosition = Math.max(20, selectRect.right - selectDropdownWidth + 20);\n }\n }\n\n setDropdownPosition({\n left: leftPosition,\n top: topPosition,\n });\n }\n }, 10);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, [dropdownOpen]);\n\n const doneButtonKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n event.preventDefault();\n if (event.key === 'Shift') {\n shiftKeyPressedRef.current = true;\n } else if ((event.shiftKey && shiftKeyPressedRef.current && event.key === 'Tab') || event.key === 'Tab') {\n setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current?.focus();\n } else {\n hiddenButtonRef.current?.focus();\n }\n }, 0);\n shiftKeyPressedRef.current = false;\n } else if (event.key === 'Escape' || event.key === 'Enter' || event.key === 'Space' || event.key === ' ') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n } else {\n shiftKeyPressedRef.current = false;\n }\n };\n\n /* istanbul ignore next */\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const { key } = event;\n if (key === 'Tab' || (event.shiftKey && key === 'Tab')) {\n setTimeout(() => {\n doneButtonRef.current?.focus();\n }, 0);\n } else if (key === 'ArrowDown' || key === 'ArrowUp') {\n event.preventDefault();\n setTimeout(() => {\n hiddenButtonRef.current?.focus();\n }, 0);\n let newFocusedIndex = focusedIndex;\n if (key === 'ArrowDown') {\n newFocusedIndex = Math.min(focusedIndex + 1, filteredOptions.current.length - 1);\n } else if (key === 'ArrowUp') {\n newFocusedIndex = Math.max(focusedIndex - 1, 0);\n }\n // If focus is on the first option and the Up arrow is pressed, move focus to the last option\n if (focusedIndex === 0 && event.key === 'ArrowUp') {\n newFocusedIndex = filteredOptions.current.length - 1;\n }\n // If focus is on the last option and the Down arrow is pressed, move focus to the first option\n else if (focusedIndex === filteredOptions.current.length - 1 && event.key === 'ArrowDown') {\n newFocusedIndex = 0;\n }\n setFocusedIndex(newFocusedIndex);\n if (optionsListRef.current && newFocusedIndex >= 0) {\n const focusedOption = optionsListRef.current.querySelectorAll(`.${styles.optionsList}`)[\n newFocusedIndex\n ] as HTMLElement;\n const isFocusedOptionSelected = focusedOption.children[0].getAttribute('aria-checked');\n const textToAnnounced = `${focusedOption.textContent} ${\n isFocusedOptionSelected === 'true' ? 'selected' : 'not selected'\n } ${newFocusedIndex + 1} out of ${filteredOptions.current.length}`;\n announceOption(textToAnnounced);\n if (focusedOption) {\n focusedOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n } else if (key === 'Enter' || key === 'Space' || key === ' ') {\n if (focusedIndex !== -1) {\n handleLiClick(filteredOptions.current[focusedIndex].value);\n }\n } else if (key === 'Escape') {\n toggleDropDown(false);\n setfocusOnDropdownClose();\n }\n };\n\n useEffect(() => {\n if (typingTimeout) {\n clearTimeout(typingTimeout);\n }\n const timeout = setTimeout(() => {\n const filteredResults = filteredOptions.current.length\n ? `${filteredOptions.current.length} results are available, use up and down arrow keys to navigate`\n : 'No results available';\n if (dropdownOpen) {\n announceOption(filteredResults);\n }\n }, 500);\n setTypingTimeout(timeout);\n }, [searchTerm]);\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n useEffect(() => {\n const multiSelect = multiSelectRef.current;\n if (multiSelect) {\n multiSelect.addEventListener('focus', handleFocus);\n multiSelect.addEventListener('blur', handleBlur);\n }\n return () => {\n if (multiSelect) {\n multiSelect.removeEventListener('focus', handleFocus);\n multiSelect.removeEventListener('blur', handleBlur);\n }\n };\n }, [handleFocus, handleBlur]);\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n if (theme === 'dark' || theme === 'light') {\n // For default variant we use bottom border only, for rounded we use full border.\n multiSelectStyleObj = {\n ['--theme-color' as any]: themeColor,\n };\n }\n }\n\n const closeOverlay = () => {\n setDropdownOpen(false);\n };\n\n const handleDoneButtonClick = () => {\n setDropdownOpen(false);\n setSearchTerm('');\n setfocusOnDropdownClose();\n onSelectionChange(selectedOptions);\n };\n\n return (\n <div className={styles.multiSelectContainer}>\n <div className={styles.listOptionsWrap}>\n <div className={`${className} ${styles.selectedValuesWrap}`} ref={selectRef}>\n <div\n className={`${styles.selectedValues} ${dropdownOpen ? styles.focused : ''} ${selectedOptions.length > 0 ? styles.selected : ''} ${selectedOptions.length > 1 ? styles.countShow : ''} ${\n selectedOptions.length === 0 ? styles.placeholder : ''\n } ${variant === 'rounded' ? styles.rounded : ''}`}\n ref={multiSelectRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={() => toggleDropDown(!dropdownOpen)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space' || event.code === 'Enter') {\n event.preventDefault();\n toggleDropDown(!dropdownOpen);\n }\n }}\n tabIndex={0}\n data-testid={'selected-input'}\n style={{ ...multiSelectStyleObj, ...style }}\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-multiselectable=\"true\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n >\n <span>{selectedText}</span>\n <div className={styles.countAndIconContainer}>\n {selectedOptions.length > 1 && (\n <span\n className={styles.selectedCount}\n data-testid={'selected-count'}\n style={{ backgroundColor: themeColor }}\n >\n {selectedOptions.length}\n </span>\n )}\n <span\n className={styles.dropDownIcon}\n onClick={() => toggleDropDown(!dropdownOpen)}\n data-testid={'arrow-button'}\n >\n <svg width=\"12px\" height=\"7px\" viewBox=\"0 0 12 7\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-2360.000000, -295.000000)\" fill=\"#666666\">\n <g transform=\"translate(2006.000000, 248.000000)\">\n <path\n d=\"M358.027356,44.3431458 L358.027146,50.6581458 L364.343146,50.6589352 L364.343146,52.3431458 L358.027146,52.3421458 L358.027356,52.3431458 L356.343146,52.3431458 L356.343146,44.3431458 L358.027356,44.3431458 Z\"\n transform=\"translate(360.343146, 48.343146) scale(-1, -1) rotate(-225.000000) translate(-360.343146, -48.343146)\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div id=\"announcement\" aria-live=\"assertive\" role=\"alert\" className={styles.announcement}></div>\n {isMounted\n ? createPortal(\n <>\n {dropdownOpen && selectRef && (\n <div\n onClick={closeOverlay}\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n className={`${styles.optionsListContainer}`}\n ref={selectDropdownRef}\n onClick={(e) => e.stopPropagation()}\n style={{\n opacity: dropdownPosition.top ? 1 : 0,\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n paddingBottom: filteredOptions.current.length === 1 ? 0 : undefined,\n }}\n >\n <div className={styles.optionsListWrap}>\n {options.length >= 6 && (\n <div className={styles.searchInputWrap}>\n <input\n type=\"text\"\n ref={searchInputRef}\n placeholder=\"Type to filter\"\n className={styles.searchInput}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n data-testid={'search-input'}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n />\n </div>\n )}\n <ul ref={optionsListRef} role=\"listbox\">\n {filteredOptions.current.map((option, index) => (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n key={option.value}\n className={`${styles.optionsList} ${index === focusedIndex ? styles.focused : ''}`}\n onClick={() => handleLiClick(option.value)}\n aria-selected={index === focusedIndex}\n role=\"option\"\n >\n <PseudoCheckbox\n themeColor={themeColor}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n />\n <span>{option.label}</span>\n </li>\n ))}\n </ul>\n </div>\n {filteredOptions.current.length > 1 && (\n <div className={styles.btnContainer}>\n <input\n ref={hiddenButtonRef}\n onKeyDown={(event) => {\n handleKeyDown(event);\n }}\n className={styles.hiddenButton}\n />\n <Button\n themeColor={themeColor}\n variant=\"primary\"\n size=\"medium\"\n disabled={selectedOptions.length > 0 ? false : true}\n onClick={handleDoneButtonClick}\n data-testid={'done-button'}\n onKeyDown={(event) => {\n doneButtonKeyDown(event);\n }}\n ref={doneButtonRef}\n >\n Done\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n </div>\n );\n};\n",".multiSelectContainer {\n position: relative;\n .quickOptionsWrap {\n @apply tw--mr-3 tw-flex tw-flex-row tw-flex-wrap tw-gap-3;\n li {\n word-break: break-word;\n @apply tw-relative tw-box-border tw-inline-flex tw-min-w-[80px] tw-cursor-pointer tw-list-none tw-items-center tw-break-words tw-rounded-[4px] tw-border tw-border-solid tw-border-[#006bb1] tw-bg-transparent tw-px-[14px] tw-py-[8px] tw-text-base tw-leading-6 tw-text-[#006bb1];\n &:hover,\n &:focus-visible,\n &.selected {\n @apply tw-outline tw-outline-2 -tw-outline-offset-2 tw-outline-[#006bb1];\n }\n &:hover,\n &:focus-visible {\n @apply tw-underline;\n }\n &.disabled {\n @apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-text-[#333333] tw-no-underline tw-outline-0 #{!important};\n }\n }\n }\n}\n","import React, { CSSProperties, useRef, useState } from 'react';\nimport { Checkbox } from '../checkbox/checkbox';\nimport styles from './quick-multi-select.module.scss';\nimport { IOption } from '../../interfaces/select.type';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\n\ninterface Props {\n options: IOption[];\n checkedValue: string[];\n onSelectionChange: (val: string[]) => void;\n maxOptions?: number;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n id?: string;\n}\nexport const QuickMultiSelect: React.FC<Props> = ({\n options,\n checkedValue,\n onSelectionChange,\n maxOptions,\n themeColor,\n className = '',\n style = {},\n id = '',\n}) => {\n const [selectedOptions, setSelectedOptions] = useState<string[]>(checkedValue);\n const checkboxRefs = useRef<{ [key: string]: HTMLInputElement | null }>({});\n let quickMultiSelectStyleObj: CSSProperties = {};\n let theme: string;\n\n const handleLiClick = (id: string): void => {\n const clickedOption = options.find((option) => option.value === id);\n if (!clickedOption || clickedOption.disable) {\n return;\n }\n const checkbox = checkboxRefs.current[id];\n checkbox?.click();\n const isSelected = selectedOptions.includes(id);\n const newSelectedValues = isSelected ? selectedOptions.filter((val) => val !== id) : [...selectedOptions, id];\n const isWithinLimit = maxOptions === undefined || newSelectedValues.length <= maxOptions;\n if (isWithinLimit) {\n setSelectedOptions(newSelectedValues);\n onSelectionChange(newSelectedValues);\n }\n };\n\n if (themeColor) {\n theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#333333' : themeColor;\n if (theme === 'dark' || theme === 'light') {\n quickMultiSelectStyleObj = {\n outlineColor: borderColor,\n borderColor: borderColor,\n color: themeColor === '#ffffff' || theme === 'light' ? '#333333' : themeColor,\n };\n }\n }\n\n return (\n <div className={styles.multiSelectContainer} role=\"group\">\n <ul className={styles.quickOptionsWrap} id={id}>\n {options.map((option) => (\n <li\n style={{ ...quickMultiSelectStyleObj, ...style }}\n key={option.value}\n className={`${className} ${\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n ? styles.disabled\n : ''\n } ${selectedOptions.includes(option.value) ? styles.selected : ''}`}\n tabIndex={option.disable ? -1 : 0}\n onClick={() => handleLiClick(option.value)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space') {\n event.preventDefault();\n handleLiClick(option.value);\n }\n }}\n data-testid={'option-box'}\n >\n <Checkbox\n id={option.value}\n checkboxSize=\"large\"\n tabIndex={-1}\n themeColor={themeColor}\n ref={(checkbox) => {\n checkboxRefs.current[option.value] = checkbox; // Store checkbox reference\n }}\n checked={selectedOptions.includes(option.value)}\n disabled={\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n }\n >\n <span\n style={{\n color:\n (themeColor && (themeColor === '#ffffff' || theme === 'light')) ||\n option.disable ||\n (maxOptions !== undefined &&\n selectedOptions.length >= maxOptions &&\n !selectedOptions.includes(option.value))\n ? '#333333'\n : themeColor && (themeColor !== '#ffffff' || theme !== 'light')\n ? themeColor\n : '#006bb1',\n }}\n >\n {option.label}\n </span>\n </Checkbox>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n",".singleSelectWrapper {\n position: relative;\n .quickOption {\n @apply tw-flex tw-flex-row tw-flex-wrap tw-gap-3;\n li {\n @apply tw-relative tw-box-border tw-inline-flex tw-min-h-[44px] tw-min-w-[80px] tw-cursor-pointer tw-list-none tw-items-center tw-rounded-[4px] tw-border tw-border-solid tw-border-[#006bb1] tw-bg-transparent tw-px-6 tw-py-[9px] tw-text-center tw-text-base tw-leading-6 tw-text-[#006bb1];\n word-break: break-word;\n &:hover,\n &:focus-visible,\n &.selected {\n @apply tw-outline tw-outline-2 -tw-outline-offset-2 tw-outline-[#006bb1];\n }\n &:hover,\n &:focus-visible {\n @apply tw-underline;\n }\n .triangle {\n @apply tw-absolute tw-right-0 tw-top-0 tw-inline-block tw-h-0 tw-w-0 tw-border-[11px] tw-border-solid tw-border-b-transparent tw-border-l-transparent tw-border-r-[#006bb1] tw-border-t-[#006bb1];\n .loader {\n @apply tw-absolute tw-left-[0px] tw-top-[-10px] tw-h-[10px] tw-w-[10px] tw-animate-spin tw-rounded-[50%] tw-border-2 tw-border-solid tw-border-[#ffffff] tw-border-r-[#006bb1];\n }\n .checkmarkWrap {\n @apply tw-absolute tw-left-[-1px] tw-top-[-9px];\n .checkmark {\n @apply tw-block tw-animate-[fill_0.4s_ease-in-out_0.4s_forwards,scale_0.3s_ease-in-out_0.9s_both] tw-rounded-[50%] tw-shadow-[inset_0px_0px_0px_transparent];\n stroke-miterlimit: 10;\n .checkmarkCheck {\n @apply tw-origin-[50%_50%] tw-animate-[stroke_0.8s_cubic-bezier(0.5,0,0.45,1)_0.2s_forwards];\n stroke-dasharray: 48;\n stroke-dashoffset: 48;\n }\n }\n }\n }\n &.disabled {\n @apply tw-pointer-events-none tw-cursor-default tw-border-[#e4e4e4] tw-text-[#333333] tw-no-underline tw-outline-0 #{!important};\n }\n }\n }\n}\n@keyframes scale {\n 0%,\n 100% {\n transform: none;\n }\n 50% {\n transform: scale3d(1.1, 1.1, 1);\n }\n}\n@keyframes fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px transparent;\n }\n}\n@keyframes stroke {\n 100% {\n stroke-dashoffset: 0;\n }\n}\n","import { CSSProperties, FC, useState } from 'react';\nimport styles from './quick-select.module.scss';\nimport luminance from '@oncehub/relative-luminance';\nimport { IOption } from '../../interfaces/select.type';\nimport { ColorsService } from '../colors.service';\n\ninterface Props {\n options: IOption[];\n onSelect: (option: IOption | undefined) => void;\n selected?: IOption;\n themeColor?: string;\n className?: string;\n style?: CSSProperties;\n showLoader?: boolean;\n id?: string;\n}\n\nexport const QuickSelect: FC<Props> = ({\n options,\n onSelect,\n selected,\n themeColor,\n className = '',\n style = {},\n showLoader = false,\n id = '',\n}: Props) => {\n const [selectedOption, setSelected] = useState(selected);\n let quickOptionStyleObj: CSSProperties = {};\n let quickOptionTriangleStyleObj: CSSProperties = {};\n let checkmarkColor: string = '#ffffff';\n const selectOption = (option: any) => {\n if (selectedOption?.value === option?.value) {\n setSelected(undefined);\n onSelect(undefined);\n return;\n }\n onSelect(option);\n setSelected(option);\n };\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const borderColor = themeColor === '#ffffff' ? '#333333' : themeColor;\n if (theme === 'dark' || theme === 'light') {\n checkmarkColor = themeColor === '#ffffff' || theme === 'dark' ? '#ffffff' : '#333333';\n quickOptionStyleObj = {\n outlineColor: borderColor,\n borderColor: borderColor,\n color: themeColor === '#ffffff' || theme === 'light' ? '#333333' : themeColor,\n };\n quickOptionTriangleStyleObj = {\n borderRightColor: borderColor,\n borderTopColor: borderColor,\n };\n }\n }\n\n return (\n <div className={styles.singleSelectWrapper}>\n <div className={styles.quickOption}>\n <ul className={styles.quickOption} role=\"radiogroup\" id={id}>\n {options.map((option: IOption) => (\n <li\n tabIndex={option.disable ? -1 : 0}\n className={`${className} ${selectedOption?.value === option.value ? styles.selected : ''} ${\n option.disable ? styles.disabled : ''\n }`}\n style={{ ...quickOptionStyleObj, ...style }}\n key={option.value}\n onClick={() => selectOption(option)}\n onKeyPress={(event) => {\n if (event.key === ' ' || event.code === 'Space') {\n event.preventDefault();\n selectOption(option);\n }\n }}\n data-testid={'checkbox-input'}\n role=\"radio\"\n aria-checked={selectedOption?.value === option.value}\n >\n {option.label}\n {selectedOption?.value === option.value && !option.disable && (\n <div className={styles.triangle} style={{ ...quickOptionTriangleStyleObj }}>\n {showLoader && (\n <div className={styles.loader} style={{ borderRightColor: themeColor ?? '#006bb1' }}></div>\n )}\n {!showLoader && (\n <div className={styles.checkmarkWrap}>\n <svg\n className={styles.checkmark}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"11\"\n height=\"9\"\n viewBox=\"0 0 11 9\"\n fill=\"none\"\n >\n <path\n className={styles.checkmarkCheck}\n stroke={checkmarkColor}\n d=\"M2.1 4.34286L4.12857 6.40001L8.9 1.60001\"\n strokeWidth=\"2\"\n />\n </svg>\n </div>\n )}\n </div>\n )}\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n",".scrollbarContainer {\n overflow-y: auto;\n}\n\n.scrollbarContainer::-webkit-scrollbar {\n width: 10px;\n}\n.scrollbarContainer::-webkit-scrollbar-track {\n display: none;\n}\n.scrollbarContainer::-webkit-scrollbar-thumb {\n background-color: #ccc !important;\n border: 2px #fff solid;\n border-radius: 15px;\n}\n\n/* Browsers without `::-webkit-scrollbar-*` support */\n.scrollbarContainer {\n @supports not selector(::-webkit-scrollbar) {\n scrollbar-width: thin;\n scrollbar-color: #ccc #0000;\n }\n}\n","import { ComponentPropsWithRef, FC, forwardRef } from 'react';\nimport styles from './scrollbar.module.css';\n\ninterface ScrollbarProps extends ComponentPropsWithRef<'div'> {\n children: any;\n}\n\nexport const Scrollbar: FC<ScrollbarProps> = forwardRef<HTMLDivElement, ComponentPropsWithRef<'div'> & ScrollbarProps>(\n ({ children, className = '', style = {}, ...rest }: ScrollbarProps, ref) => {\n const scrollbarClass = [styles.scrollbarContainer, className].filter(Boolean).join(' ');\n return (\n <>\n <div ref={ref} style={{ ...style }} className={scrollbarClass} {...rest}>\n {children}\n </div>\n </>\n );\n },\n);\n\nScrollbar.displayName = 'Scrollbar';\n",".select {\n @apply tw-relative;\n .selectContainer {\n @apply tw-relative;\n .selectButton {\n @apply tw-border-solid tw-border-x-0 tw-relative tw-box-border tw-h-10 tw-w-full tw-cursor-pointer tw-border-b tw-border-t tw-border-t-transparent tw-bg-transparent tw-py-1.5 tw-pl-[10px] tw-pr-8 tw-text-left tw-text-base tw-text-[#333333] tw-border-b-[#333333];\n &:focus {\n @apply tw-border-b-2 tw-border-t-2 tw-border-b-[#006bb1] tw-py-[5px] tw-outline-none tw-ring-0;\n }\n &.open {\n @apply tw-border-b-2 tw-border-t-2 tw-border-b-[#006bb1];\n }\n .selectValue {\n @apply tw-flex tw-items-center;\n &.placeholder {\n @apply tw-text-[#666666];\n }\n .seletIcon {\n @apply tw-mr-2 tw-h-5 tw-w-5 tw-flex-shrink-0;\n }\n .selectText {\n @apply tw-block tw-truncate;\n }\n }\n .chevronDownIconSpan {\n @apply tw-pointer-events-none tw-absolute tw-inset-y-0 tw-right-0 tw-flex tw-items-center tw-pr-2;\n .chevronDownIcon {\n @apply tw-h-5 tw-w-5 tw-text-[#333333];\n }\n }\n }\n }\n}\n\n.leave {\n @apply tw-transition tw-ease-in tw-duration-100;\n}\n.leaveFrom {\n @apply tw-opacity-100;\n}\n.leaveTo {\n @apply tw-opacity-0;\n}\n\n.selectOptions {\n @apply tw-max-h-[200px] tw-w-full tw-overflow-auto tw-bg-white tw-list-none tw-m-0 tw-px-0 tw-py-[10px] tw-text-base tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] sm:tw-text-sm [&::-webkit-scrollbar-thumb]:tw-rounded-md [&::-webkit-scrollbar-thumb]:tw-bg-[#a9a9a9] [&::-webkit-scrollbar]:tw-w-[6px];\n &:focus {\n @apply tw-outline-none;\n }\n}\n","import { FC, useEffect, useRef, useState } from 'react';\nimport { Listbox, ListboxButton } from '@headlessui/react';\nimport { IOption } from '../../interfaces/select.type';\nimport { ChevronDownIcon } from '@heroicons/react/20/solid';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport styles from './select.module.scss';\n\ninterface Props {\n children: any;\n selected: IOption | null;\n onSelect: (obj: IOption) => void;\n themeColor?: string;\n placeholder?: string;\n}\n\ninterface IDropdownPosition {\n left: number;\n top: number;\n}\n\nexport const Select: FC<Props> = ({ children, selected, onSelect, themeColor, placeholder }) => {\n const [isMounted, setIsMounted] = useState(false);\n const [open, setOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const selectRef = useRef<HTMLDivElement | null>(null);\n const selectButtonRef = useRef<HTMLButtonElement>(null);\n const selectDropdownRef = useRef<HTMLDivElement | null>(null);\n const [dropdownPosition, setDropdownPosition] = useState<IDropdownPosition>({ left: 0, top: 0 });\n const [isPositionCalculated, setIsPositionCalculated] = useState(false);\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n\n let borderColor = '#333333';\n\n const handleOnResize = (): void => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n };\n\n useEffect(() => {\n handleOnResize();\n window.addEventListener('resize', handleOnResize);\n return () => {\n window.removeEventListener('resize', handleOnResize);\n };\n }, []);\n\n const calculateRemainingScroll = (): number => {\n return pageScrollHeight.current - (windowHeight.current + window.scrollY);\n };\n\n const getDropdownPosition = (): void => {\n if (selectRef.current) {\n const selectRect = selectRef.current.getBoundingClientRect();\n\n // Reset position calculation state\n setIsPositionCalculated(false);\n\n setTimeout(() => {\n const dropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n const remainingScroll = calculateRemainingScroll();\n const remainingSpace = windowHeight.current - selectRect.bottom;\n\n if (dropdownRect) {\n const dropdownHeight = dropdownRect.height;\n const selectTop = selectRect.top;\n const noSpaceAbove = dropdownHeight >= selectTop + window.scrollY;\n\n const top =\n (dropdownHeight >= selectTop &&\n (noSpaceAbove || remainingScroll >= dropdownHeight || remainingSpace >= dropdownHeight)) ||\n (selectTop >= dropdownHeight && remainingSpace >= dropdownHeight)\n ? selectRect.y + selectRect.height\n : selectRect.y - dropdownHeight;\n\n setDropdownPosition({\n left: selectRect.left,\n top: top ?? selectRect.top,\n });\n\n // Mark position as calculated\n setIsPositionCalculated(true);\n }\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, []);\n\n if (themeColor) {\n themeColor = ColorsService.convert3HexTo6(themeColor);\n const theme = luminance(themeColor);\n if (theme === 'dark' || theme === 'light') {\n borderColor = themeColor === '#ffffff' ? '#c8c8c8' : themeColor;\n }\n }\n\n const handleSelect = (option: any) => {\n onSelect(option);\n };\n\n const handleFocus = () => setIsFocused(true);\n const handleBlur = () => setIsFocused(false);\n\n return (\n <Listbox value={selected} onChange={handleSelect}>\n {({ open: headlessOpen }) => {\n // Sync Headless UI's open state with our local state\n if (headlessOpen !== open) {\n setOpen(headlessOpen);\n if (headlessOpen) {\n getDropdownPosition();\n } else {\n // Reset position calculation when dropdown closes\n setIsPositionCalculated(false);\n }\n }\n\n return (\n <div className={styles.select}>\n <div className={styles.selectContainer} ref={selectRef}>\n <ListboxButton\n ref={selectButtonRef}\n data-testid=\"select-options\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`${styles.selectButton} ${headlessOpen ? styles.open : ''}`}\n style={{\n borderBottomColor: themeColor && (isFocused || headlessOpen) ? borderColor : '',\n }}\n >\n {selected ? (\n <span className={styles.selectValue}>\n {selected.avatar && <img src={selected.avatar} alt=\"\" className={styles.seletIcon} />}\n <span className={styles.selectText}>{selected.label}</span>\n </span>\n ) : (\n placeholder && <span className={`${styles.selectValue} ${styles.placeholder}`}>{placeholder}</span>\n )}\n <span className={styles.chevronDownIconSpan}>\n <ChevronDownIcon\n className={styles.chevronDownIcon}\n aria-hidden=\"true\"\n data-open={open ? true : undefined}\n />\n </span>\n </ListboxButton>\n </div>\n\n {isMounted &&\n createPortal(\n headlessOpen && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n ref={selectDropdownRef}\n style={{\n position: 'absolute',\n opacity: isPositionCalculated ? 1 : 0,\n width: selectRef.current?.clientWidth ?? 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n }}\n >\n {children}\n </div>\n </div>\n ),\n document.body,\n )}\n </div>\n );\n }}\n </Listbox>\n );\n};\n","import React, { FC, Fragment, forwardRef } from 'react';\nimport { Transition, ListboxOption, ListboxOptions } from '@headlessui/react';\nimport styles from './select.module.scss';\ninterface Props {\n children: any;\n setQuery: (query: any) => void;\n}\n\nexport const SelectOptions: FC<Props> = ({ children, setQuery }) => {\n return (\n <Transition\n as={Fragment}\n leave={styles.leave}\n leaveFrom={styles.leaveFrom}\n leaveTo={styles.leaveTo}\n afterLeave={() => setQuery('')}\n >\n <ListboxOptions className={styles.selectOptions}>{children}</ListboxOptions>\n </Transition>\n );\n};\n\ntype SelectOptionProps = { children: React.ReactNode; value: any; className: any; disable: boolean };\nexport type SelectRef = HTMLLIElement;\nexport const SelectOption = forwardRef<SelectRef, SelectOptionProps>((props, ref) => (\n <ListboxOption ref={ref} className={props.className} value={props.value} disabled={props.disable}>\n {props.children}\n </ListboxOption>\n));\n\nSelectOption.displayName = 'SelectOption';\n",".autocomplete {\n @apply tw-relative;\n .autocompleteContainer {\n @apply tw-relative tw-h-10 tw-w-full tw-cursor-default tw-overflow-hidden tw-bg-transparent tw-text-left tw-text-[#333333];\n &.disable {\n @apply tw-text-[#A7A7A7];\n }\n &:focus {\n @apply tw-outline-none;\n }\n &:focus-visible {\n @apply tw-ring-1 tw-ring-[#DFDFDF] tw-ring-offset-2 tw-ring-offset-[#DFDFDF];\n }\n .autocompleteInput {\n @apply tw-h-full tw-w-full tw-bg-transparent tw-box-border tw-border-0 tw-border-b-[1px] tw-border-b-[#333333] tw-pb-2 tw-pl-[10px] tw-pr-10 tw-pt-2 tw-text-base tw-leading-5 tw-placeholder-[#666666] tw-shadow-none;\n &:focus {\n @apply tw-border-b-2 tw-border-b-[#006bb1] tw-pb-[7px] tw-outline-none tw-ring-[0px];\n }\n &:focus-visible {\n @apply tw-ring-[0px];\n }\n /* Headless UI data attributes */\n &[data-focus] {\n @apply tw-border-b-2 tw-border-b-[#006bb1] tw-pb-[7px] tw-outline-none tw-ring-[0px];\n }\n\n &[data-disabled] {\n @apply tw-text-[#A7A7A7] tw-cursor-not-allowed;\n }\n }\n\n .autocompleteButton {\n @apply tw-absolute tw-inset-y-0 tw-right-0 tw-flex tw-items-center tw-pr-2 tw-bg-transparent tw-border-0;\n\n /* Headless UI data attributes */\n &[data-focus] {\n @apply tw-outline-none tw-ring-2 tw-ring-[#006bb1] tw-ring-offset-1;\n }\n\n &[data-disabled] {\n @apply tw-cursor-not-allowed;\n }\n\n .chevronDownIcon {\n @apply tw-h-5 tw-w-5 tw-text-[#333333] tw-transition-transform tw-duration-200;\n &.disable {\n @apply tw-text-[#A7A7A7];\n }\n }\n\n /* Rotate chevron when combobox is open */\n &[data-open] .chevronDownIcon {\n @apply tw-rotate-180;\n }\n }\n }\n}\n\n.leave {\n @apply tw-transition tw-ease-in tw-duration-100;\n}\n.leaveFrom {\n @apply tw-opacity-100;\n}\n.leaveTo {\n @apply tw-opacity-0;\n}\n\n.autocompleteOptions {\n @apply tw-max-h-[210px] tw-w-full tw-overflow-auto tw-bg-white tw-list-none tw-m-0 tw-px-0 tw-py-[10px] tw-text-base tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.5)] sm:tw-text-sm;\n @apply [&::-webkit-scrollbar-thumb]:tw-rounded-md [&::-webkit-scrollbar-thumb]:tw-bg-[#a9a9a9] [&::-webkit-scrollbar]:tw-w-[6px];\n\n /* Headless UI transition data attributes */\n &[data-transition] {\n @apply tw-transition tw-duration-200 tw-ease-out;\n }\n\n &[data-closed] {\n @apply tw-opacity-0 tw-scale-95;\n }\n\n &[data-open] {\n @apply tw-opacity-100 tw-scale-100;\n }\n\n &:focus {\n @apply tw-outline-none;\n }\n}\n","import React, { FC, useRef, useEffect, CSSProperties, useState, useCallback } from 'react';\nimport { Combobox, ComboboxInput, ComboboxButton } from '@headlessui/react';\nimport { IOption } from '../../interfaces/select.type';\nimport { ChevronDownIcon } from '@heroicons/react/20/solid';\nimport luminance from '@oncehub/relative-luminance';\nimport { ColorsService } from '../colors.service';\nimport { createPortal } from 'react-dom';\nimport styles from './auto-complete.module.scss';\n\ninterface Props {\n children: any;\n selected: IOption | null;\n onSelect: (obj: IOption | null) => void;\n setQuery?: (query: string) => void;\n disable?: boolean;\n clearSearch?: boolean;\n themeColor?: string;\n}\n\nexport const AutoComplete: FC<Props> = ({\n children,\n selected,\n onSelect,\n setQuery = () => {},\n disable,\n clearSearch = false,\n themeColor,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputButton = useRef<HTMLButtonElement>(null);\n const selectRef = useRef<HTMLDivElement>(null);\n const selectDropdownRef = useRef<HTMLDivElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const [isPositionCalculated, setIsPositionCalculated] = useState(false);\n const windowHeight = useRef<number>(0);\n const pageScrollHeight = useRef<number>(0);\n\n let OptionStyleObj: CSSProperties = {};\n\n useEffect(() => {\n if (inputRef.current && selected) {\n inputRef.current.value = selected.label || '';\n }\n }, [selected]);\n\n useEffect(() => {\n windowHeight.current = window.innerHeight;\n pageScrollHeight.current = document.body.scrollHeight;\n setIsMounted(true);\n }, []);\n\n const getDropdownPosition = useCallback(() => {\n if (selectRef.current) {\n // Use visualViewport for zoom-aware positioning if available\n const viewport = window.visualViewport;\n const selectRect = selectRef.current.getBoundingClientRect();\n setIsPositionCalculated(false);\n setTimeout(() => {\n const selectDropdownRect = selectDropdownRef?.current?.getBoundingClientRect();\n let left = selectRect.left;\n let top = selectRect.y + selectRect.height;\n let remainingSpace = window.innerHeight - selectRect.bottom;\n let remainingScroll = document.body.scrollHeight - (window.innerHeight + window.scrollY);\n if (viewport) {\n // Adjust for zoom and scroll offset\n left = selectRect.left + viewport.offsetLeft;\n top = selectRect.top + selectRect.height + viewport.offsetTop;\n remainingSpace = viewport.height - (selectRect.bottom - viewport.offsetTop);\n remainingScroll = document.body.scrollHeight - (viewport.height + viewport.pageTop);\n }\n if (selectDropdownRect) {\n const dropdownHeight = selectDropdownRect.height;\n const selectTop = selectRect.top;\n const noSpaceAbove = dropdownHeight >= selectTop + window.scrollY;\n const openTop =\n (dropdownHeight >= selectTop &&\n (noSpaceAbove || remainingScroll >= dropdownHeight || remainingSpace >= dropdownHeight)) ||\n (selectTop >= dropdownHeight && remainingSpace >= dropdownHeight)\n ? top\n : (viewport ? selectRect.top + viewport.offsetTop : selectRect.y) - dropdownHeight;\n setDropdownPosition({\n left,\n top: openTop ?? (viewport ? selectRect.top + viewport.offsetTop : selectRect.top),\n });\n setIsPositionCalculated(true);\n }\n }, 0);\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', getDropdownPosition);\n window.addEventListener('resize', getDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', getDropdownPosition);\n window.removeEventListener('resize', getDropdownPosition);\n };\n }, []);\n\n const handleInputClick = () => {\n if (typeof isOpen !== 'undefined' && inputRef.current) {\n if (!isOpen) {\n getDropdownPosition();\n setIsFocused(true);\n if (selected) {\n inputRef.current.value = selected.label || '';\n }\n if (clearSearch) {\n inputRef.current.value = '';\n setQuery('');\n }\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));\n } else {\n // If open, close it (toggle behavior)\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));\n setIsFocused(false);\n }\n }\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n if (themeColor) {\n const theme = luminance(themeColor);\n themeColor = ColorsService.convert3HexTo6(themeColor);\n let borderColor;\n if (themeColor === '#ffffff') {\n borderColor = '#c8c8c8';\n } else if (isFocused) {\n borderColor = themeColor;\n } else {\n borderColor = '#333333';\n }\n if (theme === 'dark' || theme === 'light') {\n OptionStyleObj = {\n borderBottomColor: borderColor,\n };\n }\n }\n\n return (\n <Combobox value={selected} onChange={onSelect} disabled={disable}>\n {({ open: headlessOpen }) => {\n // Sync Headless UI's open state with our local state and trigger positioning\n if (headlessOpen !== isOpen) {\n setIsOpen(headlessOpen);\n if (headlessOpen) {\n // Calculate positioning when dropdown opens\n getDropdownPosition();\n } else {\n // Reset position calculation when dropdown closes\n setIsPositionCalculated(false);\n }\n }\n\n return (\n <div className={styles.autocomplete}>\n <div ref={selectRef} className={`${styles.autocompleteContainer} ${disable ? styles.disable : ''}`}>\n <ComboboxInput\n ref={inputRef}\n data-testid={'select-input'}\n className={styles.autocompleteInput}\n displayValue={(o: any) => o?.label || ''}\n onChange={(event) => {\n setQuery(event.target.value);\n // Remove getDropdownPosition call to prevent jerk during typing\n }}\n onClick={handleInputClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{ ...OptionStyleObj }}\n placeholder=\"Select your option\"\n autoComplete=\"off\"\n />\n <ComboboxButton className={styles.autocompleteButton} data-testid={'select-button'} ref={inputButton}>\n <ChevronDownIcon\n className={`${styles.chevronDownIcon} ${disable ? styles.disable : ''}`}\n aria-hidden=\"true\"\n data-open={headlessOpen ? true : undefined}\n />\n </ComboboxButton>\n </div>\n\n {isMounted\n ? createPortal(\n <>\n {headlessOpen && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,0)',\n zIndex: 1000,\n }}\n >\n <div\n ref={selectDropdownRef}\n style={{\n position: 'absolute',\n opacity: isPositionCalculated ? 1 : 0,\n width: selectRef.current ? selectRef.current.clientWidth : 'auto',\n left: dropdownPosition.left,\n top: dropdownPosition.top,\n\n zIndex: 1000,\n }}\n >\n {children}\n </div>\n </div>\n )}\n </>,\n document.body,\n )\n : null}\n </div>\n );\n }}\n </Combobox>\n );\n};\n","import React, { FC, Fragment, forwardRef } from 'react';\nimport { Transition, ComboboxOptions, ComboboxOption } from '@headlessui/react';\nimport styles from './auto-complete.module.scss';\n\ninterface Props {\n children: any;\n setQuery: (query: any) => void;\n}\n\nexport const AutoCompleteOptions: FC<Props> = ({ children, setQuery }) => {\n return (\n <Transition\n as={Fragment}\n leave={styles.leave}\n leaveFrom={styles.leaveFrom}\n leaveTo={styles.leaveTo}\n afterLeave={() => setQuery('')}\n >\n <ComboboxOptions className={styles.autocompleteOptions}>{children}</ComboboxOptions>\n </Transition>\n );\n};\n\ntype ComboboxOptionProps = { children: React.ReactNode; value: any; className: any; disable: boolean };\nexport type ComboboxRef = HTMLLIElement;\nexport const AutoCompleteOption = forwardRef<ComboboxRef, ComboboxOptionProps>((props, ref) => (\n <ComboboxOption ref={ref} className={props.className} value={props.value} disabled={props.disable}>\n {props.children}\n </ComboboxOption>\n));\n\nAutoCompleteOption.displayName = 'AutoCompleteOption';\n",".textInputWrapper {\n\t@apply tw-w-full;\n\t.textInput {\n\t\t@apply tw-block tw-h-10 tw-w-full tw-border-0 tw-border-b tw-border-[#333333] tw-px-[10px] tw-pb-2 tw-pt-[7px] tw-text-base tw-text-[#333333] tw-outline-none;\n\t\t&:focus {\n\t\t\t@apply tw-border-b-2 tw-border-[#006bb1] tw-pb-[7px];\n\t\t}\n\t}\n}\n","import React, { FC, forwardRef, ComponentPropsWithRef, useState } from 'react';\nimport styles from './single-line-input.module.scss';\nimport { ColorsService } from '../colors.service';\n\ninterface SingleLineInputProps extends ComponentPropsWithRef<'input'> {\n themeColor?: string; // Made themeColor optional\n}\n\nexport const SingleLineInput: FC<SingleLineInputProps> = React.memo(\n forwardRef<HTMLInputElement, SingleLineInputProps>(\n ({ themeColor = '', style = {}, className = '', onFocus, onBlur, ...rest }: SingleLineInputProps, ref) => {\n const [isFocused, setIsFocused] = useState(false);\n let inputStyleObj = {};\n const textInputClasses = [styles.textInput, className].filter(Boolean).join(' ');\n themeColor = ColorsService.convert3HexTo6(themeColor);\n\n const handleFocus = (): void => {\n setIsFocused(true);\n };\n\n const handleBlur = (): void => {\n setIsFocused(false);\n };\n\n inputStyleObj = {\n borderBottomColor: isFocused ? (themeColor !== '#ffffff' ? themeColor : '#c8c8c8') : '',\n };\n\n return (\n <div className={styles.textInputWrapper}>\n <input\n type=\"text\"\n data-testid={'textbox-input'}\n ref={ref}\n className={textInputClasses}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{ ...inputStyleObj, ...style }}\n {...rest}\n />\n </div>\n );\n },\n ),\n);\n",".phoneWrapper {\n @apply tw-flex tw-max-w-[380px] tw-items-center tw-justify-between tw-gap-3;\n .countryCode {\n @apply tw-h-10 tw-w-full tw-max-w-[110px];\n button {\n @apply tw-h-10 tw-bg-transparent tw-pl-[10px] tw-font-normal;\n background: transparent !important;\n }\n }\n .phoneInputWrap {\n @apply tw-w-full;\n .phoneInput {\n @apply tw-h-10 tw-box-border tw-w-full tw-border-0 tw-border-b tw-border-[#333333] tw-bg-transparent tw-px-[3px] tw-text-base tw-text-[#333333] tw-placeholder-[#666666] tw-outline-none focus:tw-border-b-2 focus:tw-border-[#006bb1];\n &.serverError {\n &:focus {\n @apply tw-border-b-[#f54d4d];\n }\n }\n }\n }\n}\n\n.phonNumberList {\n @apply tw-min-w-[286px];\n\n // Updated for Headless UI 2.0 - now using div elements instead of ul/li\n & > div {\n width: auto;\n\n & > div {\n @apply tw-relative tw-cursor-default tw-select-none tw-px-[10px] tw-py-2;\n\n // Use Headless UI 2.0 data attributes and hover for better styling\n &[data-focus='true'],\n &[data-selected='true'],\n &.active,\n &:hover {\n @apply tw-bg-[#EEEEEE] tw-text-[#333333];\n }\n\n .countryListText {\n @apply tw-flex tw-items-center;\n & > span {\n @apply tw-block tw-truncate tw-font-normal;\n }\n }\n }\n }\n\n // Legacy support for old structure (in case it's still used somewhere)\n ul {\n width: auto;\n li {\n @apply tw-relative tw-cursor-default tw-select-none tw-px-[10px] tw-py-2;\n &.active {\n @apply tw-bg-[#EEEEEE] tw-text-[#333333];\n }\n .countryListText {\n @apply tw-flex tw-items-center;\n & > span {\n @apply tw-block tw-truncate tw-font-normal;\n }\n }\n }\n }\n}\n","import { SelectOption, SelectOptions } from '../select/select-options';\nimport { Select } from '../select/select';\nimport { SingleLineInput } from '../single-line-input';\nimport { IOption } from '../../interfaces/select.type';\nimport React, { FC, useEffect, useRef, useState } from 'react';\nimport styles from './phone.module.scss';\nimport { isValidPhoneNumber, getCountries, getCountryCallingCode } from 'react-phone-number-input/max';\nimport { CountryCode } from 'libphonenumber-js';\nimport en from 'react-phone-number-input/locale/en.json';\nimport { IPhoneData } from '../../interfaces/phone.types';\n\ninterface Props {\n countryShortName: string;\n required?: boolean;\n themeColor?: string;\n onUpdate: (obj: IPhoneData) => void;\n placeholder?: string;\n error?: boolean;\n validate?: boolean;\n id?: string;\n phoneNumberValue?: string | null;\n countryCodeFromURL?: string | null;\n additionalClassName?: string;\n type?: string;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport const Phone: FC<Props> = ({\n countryShortName,\n required = false,\n themeColor = '',\n onUpdate,\n placeholder = '',\n error = false,\n validate = true,\n id = '',\n phoneNumberValue = '',\n countryCodeFromURL = '',\n additionalClassName = '',\n type = 'tel',\n inputMode = 'numeric',\n}) => {\n /* Country Dropdown */\n const [validationError, setValidationError] = useState<boolean>(error);\n const DEFAULT_COUNTRY_CODE = 'US';\n const countryCode = useRef<string>(\n countryShortName && countryShortName !== '001' ? countryShortName : DEFAULT_COUNTRY_CODE,\n );\n\n useEffect(() => {\n if (countryCodeFromURL) {\n const selectedCountry = findCountry(countryCodeFromURL);\n if (selectedCountry) {\n setSelected(selectedCountry);\n countryCode.current = countryCodeFromURL;\n }\n }\n }, [countryCodeFromURL]);\n\n const isSelected = (obj1: any, obj2: any) => {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n return true;\n }\n return false;\n };\n\n const compareCountryCode = (a: string, b: string) => {\n if (en[a as keyof typeof en] < en[b as keyof typeof en]) {\n return -1;\n }\n if (en[a as keyof typeof en] > en[b as keyof typeof en]) {\n return 1;\n }\n return 0;\n };\n\n const countryList: IOption[] = getCountries()\n .sort(compareCountryCode)\n .map((country) => {\n const obj: IOption = {\n label: country + ' +' + getCountryCallingCode(country as CountryCode),\n value: country,\n };\n return obj;\n });\n\n const findCountry = (key: string) => {\n return countryList.find((country) => country.value == key);\n };\n\n const [selected, setSelected] = useState<any | null>(() => {\n const selectedCountry = findCountry(countryCode.current);\n return selectedCountry ? selectedCountry : null;\n });\n\n const onSelectDropDown = (value: any) => {\n countryCode.current = value;\n const selectedCountry = findCountry(value);\n setSelected(selectedCountry);\n processPhoneNumberInput(phoneNumber.current);\n };\n\n /* PhoneNumber input box */\n const phoneNumber = useRef(phoneNumberValue ?? '');\n\n const validatePhoneNumber = (phoneNumber: string) => {\n const trimmedPhoneNumber = phoneNumber.trim();\n\n if (trimmedPhoneNumber && countryCode.current) {\n /* Validation for all digits are same */\n const pattern = /^(\\d)\\1*$/;\n const areAllDigitsSame = pattern.test(phoneNumber.trim());\n if (areAllDigitsSame) return false;\n\n /* Validation according to country code */\n const phoneNumberWithCountryCode = `+${getCountryCallingCode(\n countryCode.current as CountryCode,\n )}${trimmedPhoneNumber}`;\n\n return isValidPhoneNumber(phoneNumberWithCountryCode);\n }\n\n return true;\n };\n\n const processPhoneNumberInput = (phoneNumber: string, initialConsentChecked: boolean = false) => {\n if (!validate) {\n const phoneObject: IPhoneData = {\n phoneNumber: phoneNumber,\n countryCode: countryCode.current,\n error: undefined,\n id: id,\n initialConsentChecked: initialConsentChecked,\n };\n onUpdate(phoneObject);\n }\n phoneNumber = phoneNumber.trim();\n const error = phoneNumber\n ? validatePhoneNumber(phoneNumber)\n ? undefined\n : 'invalid'\n : required\n ? 'required'\n : undefined;\n\n setValidationError(!(!validationError && error !== undefined));\n\n const phoneObject: IPhoneData = {\n phoneNumber: phoneNumber,\n countryCode: countryCode.current,\n error: error,\n id: id,\n initialConsentChecked: initialConsentChecked,\n };\n onUpdate(phoneObject);\n };\n /* PhoneNumber input box ends */\n\n return (\n <>\n {\n <div className={`${styles.phoneWrapper} ${additionalClassName?.trim() || ''}`} data-testid=\"phone-wrapper\">\n <div className={`${styles.countryCode} ouiCountryCode`}>\n <Select selected={selected} onSelect={onSelectDropDown} data-testid=\"phone-select\" themeColor={themeColor}>\n <div className={`${styles.phonNumberList} ouiPhonNumberList`}>\n <SelectOptions setQuery={() => {}} data-testid=\"phone-select-options\">\n {countryList.map((country) => (\n <SelectOption\n disable={false}\n key={country.value}\n value={country.value}\n className={({ active }: { active: boolean }) =>\n `${active || isSelected(selected, country) ? styles.active : ''}`\n }\n data-testid={`phone-select-option-${country.value}`}\n >\n <div className={`${styles.countryListText} ouiCountryListText`}>\n <span>\n {en[country.value as CountryCode]} +{getCountryCallingCode(country.value as CountryCode)}\n </span>\n </div>\n {/* )} */}\n </SelectOption>\n ))}\n </SelectOptions>\n </div>\n </Select>\n </div>\n <div className={`${styles.phoneInputWrap} ouiPhoneInputWrap`}>\n <SingleLineInput\n type={type}\n inputMode={inputMode}\n aria-labelledby=\"phone-number\"\n placeholder={placeholder}\n className={`${styles.phoneInput} ${validationError && validate ? styles.serverError : ''} ouiPhoneInput`}\n id={id}\n value={phoneNumberValue ?? ''}\n onBlur={(e) => {\n phoneNumber.current = e.target.value.trim();\n }}\n onChange={(e) => {\n phoneNumber.current = e.target.value;\n processPhoneNumberInput(phoneNumber.current);\n }}\n data-testid=\"phone-input\"\n themeColor={themeColor}\n />\n </div>\n </div>\n }\n </>\n );\n};\n",".progress {\n position: relative;\n overflow: hidden;\n max-width: 100%;\n width: 100%;\n margin: 0 auto;\n}\n.progress-bar {\n position: absolute;\n display: block;\n left: -60%;\n width: 60%;\n animation-duration: 2s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}","// components/ProgressBar.tsx\nimport React, { useMemo } from 'react';\nimport styles from './progress-bar.module.scss';\n\nexport type ProgressBarProps = {\n /** 0–100 percent (if set, mode becomes \"determinate\") */\n value?: number;\n /** Override mode; if omitted, determinate when `value` is set */\n mode?: 'determinate' | 'indeterminate';\n /** Thickness of the bar in pixels */\n strokeWidth?: number;\n /** CSS color for the filled bar */\n barColor?: string;\n /** CSS color for the track (background) */\n trackColor?: string;\n};\n\nconst ProgressBar: React.FC<ProgressBarProps> = ({\n value,\n mode: propMode,\n strokeWidth = 4,\n barColor = '#1976d2', // default to a primary‑blue\n trackColor = 'rgba(25,118,210,0.3)', // semi‑transparent blue\n}) => {\n const mode = propMode ?? (value != null ? 'determinate' : 'indeterminate');\n const pct = useMemo(() => {\n if (mode === 'determinate' && value != null) {\n return Math.max(0, Math.min(100, value));\n }\n return 0;\n }, [mode, value]);\n\n return (\n <>\n <div\n className={styles.progress}\n role=\"progressbar\"\n aria-valuemin={mode === 'determinate' ? 0 : undefined}\n aria-valuemax={mode === 'determinate' ? 100 : undefined}\n aria-valuenow={mode === 'determinate' ? pct : undefined}\n style={{\n height: strokeWidth,\n backgroundColor: trackColor,\n }}\n >\n <div\n className={styles['progress-bar']}\n style={{\n height: strokeWidth,\n width: mode === 'determinate' ? `${pct}%` : undefined,\n backgroundColor: barColor,\n animationName: mode === 'indeterminate' ? 'loading' : undefined,\n left: mode === 'indeterminate' ? -200 : 0,\n }}\n />\n </div>\n <style>{`\n @keyframes loading {\n 0% {\n left: -200px;\n width: 200px;\n }\n 50% {\n width: 200px;\n }\n 70% {\n width: 70%;\n }\n 80% {\n left: 50%;\n }\n 95% {\n left: 120%;\n }\n to {\n left: 100%;\n }\n }\n `}</style>\n </>\n );\n};\n\nexport { ProgressBar };\n",".radioWrapper {\n @apply tw-flex tw-flex-col;\n .radioBtnBox {\n @apply tw-relative tw-flex tw-items-center;\n .radioBtnLabel {\n @apply tw-my-[7px] tw-flex tw-cursor-pointer;\n .radioBtnInsideLabel {\n @apply tw-relative tw-mr-[10px] tw-w-5 tw-h-5;\n }\n .radioBtnInput {\n @apply tw-absolute tw-w-0 tw-h-0 tw-opacity-0;\n }\n .radioBtnAvatar {\n @apply tw-mr-[9px] tw-w-5 tw-h-5;\n img {\n @apply tw-mt-px tw-w-5 tw-h-5;\n min-width: 20px;\n }\n }\n .radioBtnText {\n @apply tw-text-base tw-text-[16px] tw-leading-[22px];\n word-break: break-word;\n }\n .radioBtnCircle {\n @apply tw-relative tw-mt-px tw-inline-block tw-w-5 tw-h-5 tw-rounded-full tw-border tw-border-solid;\n &.radioBtnChecked {\n @apply tw-border-2;\n }\n }\n .radioBtnCircleInside {\n @apply tw-absolute tw-left-1/2 tw-top-1/2 tw-ml-[-5px] tw-mt-[-5px] tw-w-[10px] tw-h-[10px] tw-rounded-full;\n }\n }\n }\n}\n","import { FC } from 'react';\nimport { IOption } from '../../interfaces';\nimport styles from './radio.module.scss';\n\ninterface RadioProps {\n themeColor?: string;\n name: string;\n checked?: boolean;\n onChange: (option: any) => void;\n option: IOption;\n}\n\nexport const Radio: FC<RadioProps> = ({ themeColor, name, checked, onChange, option }) => {\n const effectiveThemeColor = themeColor?.toLowerCase() === '#ffffff' ? '#c8c8c8' : themeColor;\n\n const handleChange = (option: IOption) => {\n onChange(option);\n };\n\n return (\n <div className={styles.radioWrapper}>\n <div className={styles.radioBtnBox}>\n <label htmlFor={option.value} className={styles.radioBtnLabel}>\n <div className={styles.radioBtnInsideLabel}>\n <input\n type=\"radio\"\n id={option.value}\n name={name}\n value={option.value}\n checked={checked}\n onChange={() => handleChange(option)}\n className={styles.radioBtnInput}\n />\n <span\n className={`${styles.radioBtnCircle} ${checked ? styles.radioBtnChecked : ''}`}\n style={{\n borderColor: checked ? effectiveThemeColor : '#C8C8C8',\n }}\n >\n {checked && (\n <span className={styles.radioBtnCircleInside} style={{ backgroundColor: effectiveThemeColor }}></span>\n )}\n </span>\n </div>\n {option.avatar && (\n <div className={styles.radioBtnAvatar}>\n <img\n aria-hidden={true}\n src={option.avatar}\n width={20}\n height={20}\n alt=\"Location icon\"\n className={styles.radioBtnAvatarImg}\n />\n </div>\n )}\n <div className={styles.radioBtnText}>{option.label}</div>\n </label>\n </div>\n </div>\n );\n};\n\nexport default Radio;\n"],"x_google_ignoreList":[1],"mappings":"gmDCAM,EAAqB,GAAc,CACvC,GAAI,CAAC,EACH,MAAU,MAAM,iCAAiC,EAInD,GAAI,CADe,2BAAS,KAAK,CACnB,EACZ,MAAU,MAAM,iCAAiC,EAEnD,EACE,EAAU,SAAW,EACjB,EAAU,QAAQ,eAAgB,eAAe,EACjD,EACN,IAAM,EAAM,EAAU,UAAU,CAAC,EAC3B,CAAC,EAAK,EAAO,GAAQ,CAAC,EAAG,EAAG,CAAC,EAAE,IAAK,GACxC,OAAO,SAAS,EAAI,UAAU,EAAY,EAAa,CAAC,EAAG,EAAE,CAC/D,EAEA,OADa,MAAS,EAAM,MAAS,EAAQ,MAAS,GAAQ,IACjD,GAAM,OAAS,OAC9B,ECnBa,EAAb,KAA2B,CACzB,OAAO,eAAe,EAA4B,CAOhD,OANI,OAAO,GAAe,UACL,6BAA6B,KAAK,CACjD,GAAc,EAAW,SAAW,EAC/B,EAAW,QAAQ,eAAgB,eAAe,EAGtD,CACT,CACF,ECQa,GAAA,EAAA,EAAA,aAET,CACE,aAAa,GACb,UAAU,UACV,OAAO,QACP,QAAQ,UACR,WACA,YAAY,GACZ,QAAQ,CAAC,EACT,WACA,GAAG,GAEL,IACG,CACH,IAAI,EAAgC,CAAC,EACrC,GAAI,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAElC,GADA,EAAa,EAAc,eAAe,CAAU,EAChD,CAAC,IAAa,IAAU,QAAU,IAAU,SAAU,CACxD,IAAM,EAAkB,IAAY,UAAY,EAAa,UACvD,EACJ,IAAY,UACR,IAAU,OACR,UACA,UACF,IAAU,QACV,UACA,EACA,EAAc,IAAe,UAAY,UAAY,EAC3D,EAAiB,CACE,kBACV,QACP,aAAc,EACD,aACf,CACF,CACF,CACA,IAAM,EAAgB,CAAC,EAAO,OAAQ,EAAO,GAAU,EAAO,GAAO,EAAO,GAAQ,CAAS,EAC1F,OAAO,OAAO,EACd,KAAK,GAAG,EACX,OACE,EAAA,EAAA,KAAC,SAAD,CACY,WACL,MACL,MAAO,CAAE,GAAG,EAAgB,GAAG,CAAM,EACrC,UAAW,GAAG,IACd,GAAI,EAEH,UACK,CAAA,CAEZ,CACF,EAEA,EAAO,YAAc,0hBE/Df,MAAyB,YAAY,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,IACxE,GAAA,EAAA,EAAA,aAET,CACE,WACA,aAAa,GACb,eAAe,SACf,KAAK,EAAiB,EACtB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WACA,QAAQ,CAAC,EACT,WACA,GAAG,GAEL,IACG,CACH,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,CAAO,EAC9C,EAAkC,CAAC,EACnC,EACA,EAAiB,EAAW,UAAY,UAC5C,GAAI,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAElC,GADA,EAAa,EAAc,eAAe,CAAU,EAChD,IAAU,QAAU,IAAU,QAAS,CACzC,OAAQ,EAAR,CACE,IAAK,OACH,EAAiB,EAAY,EAAY,UAAY,UAAa,UAClE,MACF,IAAK,QACH,EAAiB,EAAY,EAAY,UAAY,UAAa,EAAY,UAAY,UAC1F,MACF,QACE,EAAiB,UACjB,KACJ,CACA,IAAM,EAAkB,EAAW,UAAY,EAAY,EAAa,UACxE,EAAc,EAAW,UAAY,GAAc,UAAY,UAAY,EACvE,IACF,EAAmB,CACA,kBACJ,cACb,aAAc,CAChB,EAEJ,CACF,CAEA,IAAM,EAAmB,EAAW,EAAO,iBAAmB,GACxD,EAAkB,CAAC,EAAO,eAAgB,EAAO,GAAe,EAAkB,CAAS,EAC9F,OAAO,OAAO,EACd,KAAK,GAAG,EAEL,EAAkB,GAAe,CACjC,EAAM,KAAO,UACf,EAAM,eAAe,EACrB,IAAW,EAAM,OAAO,OAAO,EAC/B,EAAa,CAAC,CAAS,EAE3B,EAEA,OACE,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAiB,cAAY,qBAC3C,EAAA,EAAA,MAAC,QAAD,CAAO,UAAW,EAAO,cAAe,QAAS,EAAI,QAAU,GAAU,EAAe,CAAK,WAA7F,EACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,EAAO,uBAClB,SAAU,GAAY,EAAW,GAAK,EACtC,WAAa,GAAU,EAAe,CAAK,EAC3C,cAAY,oCAJd,EAME,EAAA,EAAA,KAAC,QAAD,CACE,UAAW,EAAO,cAClB,SAAW,GAAU,EAAe,CAAK,EACzC,KAAK,WACL,QAAS,EACC,WACN,KACC,MACL,GAAI,EACJ,SAAU,GACV,cAAY,gBACb,CAAA,GACD,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAO,cAClB,MAAO,CAAE,GAAG,EAAkB,GAAG,CAAM,EACvC,cAAY,2BAEZ,EAAA,EAAA,KAAC,MAAD,CACE,QAAQ,MACR,UAAU,QACV,UAAW,EAAO,kBAClB,QAAQ,YACR,cAAY,2BAEZ,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,sBAClB,KAAK,OACL,OAAQ,EACR,EAAE,2BACH,CAAA,CACE,CAAA,CACF,CAAA,CACF,IACJ,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,iBAAkB,UAAe,CAAA,GAChE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,eAAgB,YAAU,SAAS,cAAY,gBACnE,EAAY,UAAY,WACtB,CAAA,CACA,GACJ,CAAA,CACL,CAAA,CAEN,CACF,EAEA,EAAS,YAAc,+FEpHV,EAA0C,EAAA,QAAM,MAAA,EAAA,EAAA,aAGvD,CAAE,aAAa,GAAI,WAAU,QAAQ,CAAC,EAAG,YAAY,GAAI,UAAS,UAAS,SAAQ,GAAG,GACtF,IACG,CACH,GAAM,CAAC,EAAgB,IAAA,EAAA,EAAA,UAA8B,EAAI,EACnD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAChD,EAAa,EAAc,eAAe,CAAU,GAEpD,EAAA,EAAA,eAAgB,CACd,EAAkB,EAAA,QAAQ,CAC5B,EAAG,CAAC,CAAC,EAEL,IAAM,EAAkB,GAA2B,CAC7C,CAAC,GAAkB,EAAE,MAAQ,SAC3B,CAAC,EAAE,UAAY,IACjB,EAAE,eAAe,EACjB,EAAS,EAGf,EAEM,EAAY,GAAe,CAC/B,IAAU,CAAK,EACf,EAAM,OAAO,MAAM,OAAS,OAC5B,EAAM,OAAO,MAAM,OAAS,EAAI,EAAM,OAAO,aAAe,IAC9D,EAEI,EAAgB,CAAC,EACf,EAAmB,CAAC,EAAO,UAAW,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAEzE,MAAoB,CACxB,EAAa,EAAI,CACnB,EAEM,MAAmB,CACvB,EAAa,EAAK,CACpB,EAMA,MAJA,GAAgB,CACd,kBAAmB,EAAa,IAAe,UAAyB,UAAb,EAA0B,EACvF,GAGE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,2BACrB,EAAA,EAAA,KAAC,WAAD,CACE,cAAa,gBACR,MACL,UAAW,EACX,MAAO,CAAE,GAAG,EAAe,GAAG,CAAM,EACpC,QAAS,EACT,OAAQ,EACR,QAAU,GAAU,EAAS,CAAK,EAClC,UAAW,EACX,GAAI,CACL,CAAA,CACE,CAAA,CAET,CACF,CACF,45BG7DM,GAAqC,CAAE,UAAU,GAAO,aAAa,GAAI,WAAW,MAAY,CACpG,IAAI,EAAkC,CAAC,EACnC,EAAkB,UAClB,EAAiB,EAAW,UAAY,UACtC,EAAmB,EAAW,EAAO,iBAAmB,GACxD,EAAY,EAAU,EAAO,QAAU,GACvC,EAAkB,CAAC,EAAO,eAAgB,EAAW,CAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACjG,EACJ,GAAI,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAClC,EAAa,EAAc,eAAe,CAAU,EAChD,IAAU,QAAU,IAAU,SAChC,AAGE,EAHE,EACe,EAAU,UAAY,UAEtB,GAAS,QAAU,UAAY,UAElD,EAAkB,EAAW,UAAY,EAAU,EAAa,UAChE,EAAc,EAAW,UAAY,IAAe,UAAY,UAAY,EACxE,IACF,EAAmB,CACA,kBACJ,cACb,aAAc,CAChB,IAGF,EAAiB,SAErB,CAEA,OACE,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,EACP,UAAW,EACX,KAAK,WACL,eAAc,EACd,cAAY,OACZ,SAAU,GACV,cAAY,2BAEZ,EAAA,EAAA,KAAC,MAAD,CAAK,QAAQ,MAAM,UAAU,QAAQ,UAAW,EAAO,kBAAmB,QAAQ,sBAChF,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,sBAClB,KAAK,OACL,OAAQ,EACR,EAAE,2BACH,CAAA,CACE,CAAA,CACF,CAAA,CAET,EAEA,EAAe,YAAc,WC5C7B,IAAa,GAAgC,CAC3C,UACA,eACA,oBACA,aACA,aACA,YAAY,GACZ,QAAQ,CAAC,KACL,CACJ,IAAM,GAAA,EAAA,EAAA,QAAyB,CAAO,EAChC,CAAC,EAAiB,IAAA,EAAA,EAAA,UAAyC,CAAY,EACvE,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,EAAE,EACzC,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAK,EAChD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,GAAA,EAAA,EAAA,QAA0C,IAAI,EAC9C,GAAA,EAAA,EAAA,QAAkD,IAAI,EACtD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,GAAA,EAAA,EAAA,QAAkD,IAAI,EACtD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAE,EAC7C,GAAA,EAAA,EAAA,QAA8B,CAAC,EAC/B,GAAA,EAAA,EAAA,QAAkC,CAAC,EACnC,CAAC,EAAW,KAAA,EAAA,EAAA,UAAyB,EAAK,EAC5C,EAAqC,CAAC,EACpC,CAAC,EAAkB,IAAA,EAAA,EAAA,UAAgC,CAAE,KAAM,EAAG,IAAK,CAAE,CAAC,EACtE,CAAC,EAAe,IAAA,EAAA,EAAA,UAAoD,IAAI,EACxE,GAAA,EAAA,EAAA,QAA4B,EAAK,EACjC,GAAA,EAAA,EAAA,QAA+C,IAAI,EAEnD,MAAgC,CACpC,eAAiB,EACY,EAAU,SAAS,SAAS,IACpC,MAAM,CAC3B,EAAG,CAAC,CACN,GAEA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAsB,GAAsB,CAC5C,EAAkB,SAAW,CAAC,EAAkB,QAAQ,SAAS,EAAM,MAAc,IACvF,EAAgB,EAAK,EACrB,EAAc,EAAE,EAChB,EAAwB,EAE5B,EAEA,OADA,SAAS,iBAAiB,YAAa,CAAkB,MAC5C,CACX,SAAS,oBAAoB,YAAa,CAAkB,CAC9D,CACF,EAAG,CAAC,CAAC,EAEL,IAAM,MAA6B,CACjC,EAAa,QAAU,OAAO,YAC9B,EAAiB,QAAU,SAAS,KAAK,aACzC,GAAa,EAAI,CACnB,GAEA,EAAA,EAAA,gBACE,EAAe,EACf,OAAO,iBAAiB,SAAU,CAAc,MACnC,CACX,OAAO,iBAAiB,SAAU,CAAc,CAClD,GACC,CAAC,CAAC,EAEL,IAAM,EAAkB,GAAoB,CAC1C,IAAM,EAAe,SAAS,eAAe,cAAc,EACvD,IACF,EAAa,YAAc,EAC3B,EAAa,aAAa,YAAa,WAAW,EAClD,eAAiB,CACf,EAAa,YAAc,GAC3B,EAAa,aAAa,YAAa,KAAK,CAC9C,EAAG,GAAI,EAEX,GAEA,EAAA,EAAA,eAAgB,CAEd,EAAgB,QADC,EAAQ,OAAQ,GAAW,EAAO,MAAM,YAAY,EAAE,SAAS,EAAW,YAAY,CAAC,CAC9E,CAC5B,EAAG,CAAC,EAAS,CAAU,CAAC,EAGxB,IAAM,EACJ,EAAgB,OAAS,EACrB,EACG,IAAK,GAAU,CACd,IAAM,EAAiB,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAK,EACtE,OAAO,GAAgB,QAAU,KAA+B,GAAxB,GAAgB,KAC1D,CAAC,EACA,OAAQ,GAAU,IAAU,EAAE,EAC9B,KAAK,IAAI,EACZ,qBAEA,EAAiB,GAAe,CACpC,IAAM,EAAgB,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAE,EAClE,GAAI,GAAiB,CAAC,EAAc,UAAY,IAAe,IAAA,IAAa,EAAgB,QAAU,GAAa,CAEjH,IAAM,EADa,EAAgB,SAAS,CAClB,EAAa,EAAgB,OAAQ,GAAQ,IAAQ,CAAE,EAAI,CAAC,GAAG,EAAiB,CAAE,GACtF,IAAe,IAAA,IAAa,EAAkB,QAAU,IACzD,IACnB,EAAmB,CAAiB,EACpC,EAAkB,CAAiB,EACnC,EAAe,GAAG,GAAe,MAAM,GAAG,EAAkB,SAAS,CAAE,EAAI,WAAa,gBAAgB,EAE5G,CACF,EAEM,EAAkB,GAAkB,CACxC,EAAoB,EACpB,EAAgB,CAAI,EACpB,eAAiB,CACX,EAAe,QACjB,EAAe,SAAS,MAAM,EAE9B,EAAgB,SAAS,MAAM,EAEjC,EAAe,wCAAwC,CACzD,EAAG,CAAC,CACN,EAEM,OACG,EAAiB,SAAW,EAAa,QAAU,OAAO,SAG7D,MAA4B,CAChC,GAAI,EAAU,QAAS,CACrB,IAAM,EAAa,EAAU,QAAQ,sBAAsB,EAC3D,eAAiB,CACf,IAAM,EAAqB,GAAmB,SAAS,sBAAsB,EACvE,EAAkB,GAAyB,EAC3C,EAAiB,EAAa,QAAU,EAAW,OACrD,EAEJ,GAAI,EAAoB,CACtB,IAAM,EAAe,EAAW,OAC1B,EAAoB,EAAW,IAC/B,EAAuB,EAAmB,OAC1C,EAAwB,EAAuB,EAAoB,OAAO,QAChF,AAUE,EATC,EAAoB,IAClB,GACE,GAAyB,EAAiB,GAC3C,EAAkB,GAClB,EAAiB,IACpB,EAAoB,GAAwB,EAAiB,EAEhD,EAAW,EAAI,EAEf,EAAW,EAAI,EAG/B,EAAoB,CAClB,KAAM,EAAW,KACjB,IAAK,GAAe,EAAW,GACjC,CAAC,CACH,CACF,EAAG,CAAC,CACN,CACF,GAEA,EAAA,EAAA,gBACE,OAAO,iBAAiB,SAAU,CAAmB,EACrD,OAAO,iBAAiB,SAAU,CAAmB,MAExC,CACX,OAAO,oBAAoB,SAAU,CAAmB,EACxD,OAAO,oBAAoB,SAAU,CAAmB,CAC1D,GACC,CAAC,CAAY,CAAC,EAEjB,IAAM,EAAqB,GAAsC,CAC/D,EAAM,eAAe,EACjB,EAAM,MAAQ,QAChB,EAAmB,QAAU,GACnB,EAAM,UAAY,EAAmB,SAAW,EAAM,MAAQ,OAAU,EAAM,MAAQ,OAChG,eAAiB,CACX,EAAe,QACjB,EAAe,SAAS,MAAM,EAE9B,EAAgB,SAAS,MAAM,CAEnC,EAAG,CAAC,EACJ,EAAmB,QAAU,IACpB,EAAM,MAAQ,UAAY,EAAM,MAAQ,SAAW,EAAM,MAAQ,SAAW,EAAM,MAAQ,KACnG,EAAe,EAAK,EACpB,EAAwB,GAExB,EAAmB,QAAU,EAEjC,EAGM,EAAiB,GAAsC,CAC3D,GAAM,CAAE,OAAQ,EAChB,GAAI,IAAQ,OAAU,EAAM,UAAY,IAAQ,MAC9C,eAAiB,CACf,EAAc,SAAS,MAAM,CAC/B,EAAG,CAAC,OACC,GAAI,IAAQ,aAAe,IAAQ,UAAW,CACnD,EAAM,eAAe,EACrB,eAAiB,CACf,EAAgB,SAAS,MAAM,CACjC,EAAG,CAAC,EACJ,IAAI,EAAkB,EAetB,GAdI,IAAQ,YACV,EAAkB,KAAK,IAAI,EAAe,EAAG,EAAgB,QAAQ,OAAS,CAAC,EACtE,IAAQ,YACjB,EAAkB,KAAK,IAAI,EAAe,EAAG,CAAC,GAG5C,IAAiB,GAAK,EAAM,MAAQ,UACtC,EAAkB,EAAgB,QAAQ,OAAS,EAG5C,IAAiB,EAAgB,QAAQ,OAAS,GAAK,EAAM,MAAQ,cAC5E,EAAkB,GAEpB,EAAgB,CAAe,EAC3B,EAAe,SAAW,GAAmB,EAAG,CAClD,IAAM,EAAgB,EAAe,QAAQ,iBAAiB,IAAI,EAAO,aAAa,EACpF,GAEI,EAA0B,EAAc,SAAS,GAAG,aAAa,cAAc,EAIrF,EAAe,GAHY,EAAc,YAAY,GACnD,IAA4B,OAAS,WAAa,eACnD,GAAG,EAAkB,EAAE,UAAU,EAAgB,QAAQ,QAC5B,EAC1B,GACF,EAAc,eAAe,CAC3B,MAAO,UACP,OAAQ,SACV,CAAC,CAEL,CACF,MAAW,IAAQ,SAAW,IAAQ,SAAW,IAAQ,IACnD,IAAiB,IACnB,EAAc,EAAgB,QAAQ,GAAc,KAAK,EAElD,IAAQ,WACjB,EAAe,EAAK,EACpB,EAAwB,EAE5B,GAEA,EAAA,EAAA,eAAgB,CACV,GACF,aAAa,CAAa,EAU5B,EARgB,eAAiB,CAC/B,IAAM,EAAkB,EAAgB,QAAQ,OAC5C,GAAG,EAAgB,QAAQ,OAAO,gEAClC,uBACA,GACF,EAAe,CAAe,CAElC,EAAG,GACc,CAAO,CAC1B,EAAG,CAAC,CAAU,CAAC,EAEf,IAAM,MAAoB,CACxB,EAAa,EAAI,CACnB,EACM,MAAmB,CACvB,EAAa,EAAK,CACpB,EAgBA,IAdA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAc,EAAe,QAKnC,OAJI,IACF,EAAY,iBAAiB,QAAS,CAAW,EACjD,EAAY,iBAAiB,OAAQ,CAAU,OAEpC,CACP,IACF,EAAY,oBAAoB,QAAS,CAAW,EACpD,EAAY,oBAAoB,OAAQ,CAAU,EAEtD,CACF,EAAG,CAAC,EAAa,CAAU,CAAC,EAExB,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAClC,EAAa,EAAc,eAAe,CAAU,GAEhD,IAAU,QAAU,IAAU,WAChC,EAAsB,CACpB,kBAHgB,IAAe,UAAY,UAAY,GAAa,EAAe,EAAa,SAIlG,EAEJ,CAEA,IAAM,MAAqB,CACzB,EAAgB,EAAK,CACvB,EAEA,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,+BACrB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,yBAAvB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,GAAG,EAAU,GAAG,EAAO,qBAAsB,IAAK,WAAlE,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,GAAG,EAAO,eAAe,GAAG,EAAe,EAAO,QAAU,GAAG,GACxE,EAAgB,SAAW,EAAI,EAAO,YAAc,KAEtD,IAAK,EACL,QAAS,EACT,OAAQ,EACR,YAAe,EAAe,CAAC,CAAY,EAC3C,WAAa,GAAU,EACjB,EAAM,MAAQ,KAAO,EAAM,OAAS,SAAW,EAAM,OAAS,WAChE,EAAM,eAAe,EACrB,EAAe,CAAC,CAAY,EAEhC,EACA,SAAU,EACV,cAAa,iBACb,MAAO,CAAE,GAAG,EAAqB,GAAG,CAAM,EAC1C,gBAAe,EACf,gBAAc,UACd,uBAAqB,OACrB,oBAAkB,OAClB,KAAK,oBAEJ,CACE,CAAA,GACL,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,aAClB,YAAe,EAAe,CAAC,CAAY,EAC3C,cAAa,yBAEb,EAAA,EAAA,KAAC,MAAD,CAAK,MAAM,OAAO,OAAO,MAAM,QAAQ,WAAW,QAAQ,MAAM,MAAM,uCACpE,EAAA,EAAA,KAAC,IAAD,CAAG,OAAO,OAAO,YAAY,IAAI,KAAK,OAAO,SAAS,oBACpD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAAuC,KAAK,oBACvD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,+CACX,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,mNACF,UAAU,uGACL,CAAA,CACN,CAAA,CACF,CAAA,CACF,CAAA,CACA,CAAA,CACD,CAAA,CACH,KACL,EAAA,EAAA,KAAC,MAAD,CAAK,GAAG,eAAe,YAAU,YAAY,KAAK,QAAQ,UAAW,EAAO,YAAmB,CAAA,EAC9F,GAAA,EAAA,EAAA,eAEK,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,GAAgB,IACf,EAAA,EAAA,KAAC,MAAD,CACE,QAAS,EACT,MAAO,CACL,SAAU,QACV,MAAO,EACP,gBAAiB,sBACjB,OAAQ,GACV,YAEA,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,GAAG,EAAO,uBACrB,IAAK,EACL,QAAU,GAAM,EAAE,gBAAgB,EAClC,MAAO,CACL,QAAS,KAAiB,KAC1B,MAAO,EAAU,QAAU,EAAU,QAAQ,YAAc,OAC3D,KAAM,EAAiB,KACvB,IAAK,EAAiB,GACxB,WATF,EAWE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,yBAAvB,CACG,EAAQ,QAAU,IACjB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,0BACrB,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACL,IAAK,EACL,YAAY,iBACZ,UAAW,EAAO,YAClB,MAAO,EACP,SAAW,GAAM,EAAc,EAAE,OAAO,KAAK,EAC7C,cAAa,eACb,UAAY,GAAU,CACpB,EAAc,CAAK,CACrB,CACD,CAAA,CACE,CAAA,GAEP,EAAA,EAAA,KAAC,KAAD,CAAI,IAAK,EAAgB,KAAK,mBAC3B,EAAgB,QAAQ,KAAK,EAAQ,KAEpC,EAAA,EAAA,MAAC,KAAD,CAEE,UAAW,GAAG,EAAO,YAAY,GAAG,IAAU,EAAe,EAAO,QAAU,KAC9E,YAAe,EAAc,EAAO,KAAK,EACzC,gBAAe,IAAU,EACzB,KAAK,kBALP,EAOE,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,QAAS,EAAgB,SAAS,EAAO,KAAK,EAC9C,SACE,EAAO,SACN,IAAe,IAAA,IACd,EAAgB,QAAU,GAC1B,CAAC,EAAgB,SAAS,EAAO,KAAK,CAE3C,CAAA,GACD,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAO,KAAY,CAAA,CACxB,GAjBG,EAAO,KAiBV,CACL,CACC,CAAA,CACD,KACL,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,sBAAvB,EACE,EAAA,EAAA,KAAC,QAAD,CACE,IAAK,EACL,UAAY,GAAU,CACpB,EAAc,CAAK,CACrB,EACA,UAAW,EAAO,YACnB,CAAA,GACD,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,QAAQ,UACR,KAAK,SACL,YAAe,CACb,EAAgB,EAAK,EACrB,EAAc,EAAE,EAChB,EAAwB,EACxB,EAAkB,CAAe,CACnC,EACA,cAAa,cACb,UAAY,GAAU,CACpB,EAAkB,CAAK,CACzB,EACA,IAAK,WACN,MAEO,CAAA,CACL,GACF,GACF,CAAA,CAEP,CAAA,EACF,SAAS,IACX,EACA,IACD,GACF,CAAA,CAET,uvBE7ba,GAAyC,CACpD,UACA,eACA,oBACA,aACA,aACA,YAAY,GACZ,QAAQ,CAAC,EACT,eAAe,GACf,UAAU,UACV,cAAc,wBACV,CACJ,IAAM,GAAA,EAAA,EAAA,QAAyB,CAAO,EAChC,CAAC,EAAiB,IAAA,EAAA,EAAA,UAAyC,CAAY,EACvE,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,EAAE,EACzC,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAK,EAChD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,GAAA,EAAA,EAAA,QAA0C,IAAI,EAC9C,GAAA,EAAA,EAAA,QAAkD,IAAI,EACtD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,GAAA,EAAA,EAAA,QAAkD,IAAI,EACtD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,GAAA,EAAA,EAAA,QAAiD,IAAI,EACrD,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAE,EAC7C,IAAA,EAAA,EAAA,QAA8B,CAAC,EAC/B,GAAA,EAAA,EAAA,QAAkC,CAAC,EACnC,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC5C,EAAqC,CAAC,EACpC,CAAC,EAAkB,IAAA,EAAA,EAAA,UAAgC,CAAE,KAAM,EAAG,IAAK,CAAE,CAAC,EACtE,CAAC,EAAe,IAAA,EAAA,EAAA,UAAoD,IAAI,EACxE,GAAA,EAAA,EAAA,QAA4B,EAAK,EACjC,GAAA,EAAA,EAAA,QAA+C,IAAI,GAGzD,EAAA,EAAA,eAAgB,CACd,EAAmB,CAAY,CACjC,EAAG,CAAC,CAAY,CAAC,EAEjB,IAAM,MAAgC,CACpC,eAAiB,EACY,EAAU,SAAS,SAAS,IACpC,MAAM,CAC3B,EAAG,CAAC,CACN,GAEA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAsB,GAAsB,CAC5C,EAAkB,SAAW,CAAC,EAAkB,QAAQ,SAAS,EAAM,MAAc,IACvF,EAAgB,EAAK,EACrB,EAAc,EAAE,EAChB,EAAwB,EAE5B,EAEA,OADA,SAAS,iBAAiB,YAAa,CAAkB,MAC5C,CACX,SAAS,oBAAoB,YAAa,CAAkB,CAC9D,CACF,EAAG,CAAC,CAAC,EAEL,IAAM,MAA6B,CACjC,GAAa,QAAU,OAAO,YAC9B,EAAiB,QAAU,SAAS,KAAK,aACzC,EAAa,EAAI,CACnB,GAEA,EAAA,EAAA,gBACE,EAAe,EACf,OAAO,iBAAiB,SAAU,CAAc,MACnC,CACX,OAAO,iBAAiB,SAAU,CAAc,CAClD,GACC,CAAC,CAAC,EAEL,IAAM,EAAkB,GAAoB,CAC1C,IAAM,EAAe,SAAS,eAAe,cAAc,EACvD,IACF,EAAa,YAAc,EAC3B,EAAa,aAAa,YAAa,WAAW,EAClD,eAAiB,CACf,EAAa,YAAc,GAC3B,EAAa,aAAa,YAAa,KAAK,CAC9C,EAAG,GAAI,EAEX,GAEA,EAAA,EAAA,eAAgB,CAEd,EAAgB,QADC,EAAQ,OAAQ,GAAW,EAAO,MAAM,YAAY,EAAE,SAAS,EAAW,YAAY,CAAC,CAC9E,CAC5B,EAAG,CAAC,EAAS,CAAU,CAAC,EAGxB,IAAM,GACJ,EAAgB,OAAS,GAAK,EAC1B,EACA,EAAgB,OAAS,EACvB,EACG,IAAK,GAAU,CACd,IAAM,EAAiB,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAK,EACtE,OAAO,GAAgB,QAAU,KAA+B,GAAxB,GAAgB,KAC1D,CAAC,EACA,OAAQ,GAAU,IAAU,EAAE,EAC9B,KAAK,IAAI,EACZ,EAEF,EAAiB,GAAe,CACpC,IAAM,EAAgB,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAE,EAClE,GAAI,GAAiB,CAAC,EAAc,UAAY,IAAe,IAAA,IAAa,EAAgB,QAAU,GAAa,CAEjH,IAAM,EADa,EAAgB,SAAS,CAClB,EAAa,EAAgB,OAAQ,GAAQ,IAAQ,CAAE,EAAI,CAAC,GAAG,EAAiB,CAAE,GACtF,IAAe,IAAA,IAAa,EAAkB,QAAU,IACzD,IACnB,EAAmB,CAAiB,EACpC,EAAkB,CAAiB,EACnC,eAAiB,CACf,EAAoB,CACtB,EAAG,EAAE,EACD,EAAgB,QAAQ,SAAW,GACrC,EAAgB,EAAK,EAEvB,EAAe,GAAG,GAAe,MAAM,GAAG,EAAkB,SAAS,CAAE,EAAI,WAAa,gBAAgB,EAE5G,CACF,EAEM,EAAkB,GAAkB,CACxC,EAAoB,EACpB,EAAgB,CAAI,EACpB,eAAiB,CACX,EAAe,QACjB,EAAe,SAAS,MAAM,EAE9B,EAAgB,SAAS,MAAM,EAEjC,EAAe,wCAAwC,CACzD,EAAG,CAAC,CACN,EAEM,MAA4B,CAChC,GAAI,EAAU,QAAS,CACrB,IAAM,EAAa,EAAU,QAAQ,sBAAsB,EAC3D,eAAiB,CACf,IAAM,EAAqB,GAAmB,SAAS,sBAAsB,EAC7E,GAAI,EAAoB,CACtB,IAAM,EAAuB,EAAmB,OAC1C,EAAsB,EAAmB,MACzC,EAAgB,OAAO,WAGvB,EAAa,GAAa,QAAU,EAAW,OAC/C,EAAa,EAAW,IAE1B,EAGJ,AAWI,EAXA,GAAc,EAEF,EAAW,OAChB,GAAc,EAET,EAAW,IAAM,EAG3B,GAAc,EACF,EAAW,OAEX,EAAW,IAAM,EAKnC,IAAM,EAAa,EAAgB,EAAW,KACxC,EAAY,EAAW,MAEzB,EAGJ,AAaI,EAbA,EAAa,IAAM,EAEN,EAAW,KACjB,GAAa,EAEP,EAAW,MAAQ,EAAsB,GAGpD,GAAc,EAED,KAAK,IAAI,GAAI,EAAgB,EAAsB,EAAE,EAGrD,KAAK,IAAI,GAAI,EAAW,MAAQ,EAAsB,EAAE,EAI3E,EAAoB,CAClB,KAAM,EACN,IAAK,CACP,CAAC,CACH,CACF,EAAG,EAAE,CACP,CACF,GAEA,EAAA,EAAA,gBACE,OAAO,iBAAiB,SAAU,CAAmB,EACrD,OAAO,iBAAiB,SAAU,CAAmB,MAExC,CACX,OAAO,oBAAoB,SAAU,CAAmB,EACxD,OAAO,oBAAoB,SAAU,CAAmB,CAC1D,GACC,CAAC,CAAY,CAAC,EAEjB,IAAM,EAAqB,GAAsC,CAC/D,EAAM,eAAe,EACjB,EAAM,MAAQ,QAChB,EAAmB,QAAU,GACnB,EAAM,UAAY,EAAmB,SAAW,EAAM,MAAQ,OAAU,EAAM,MAAQ,OAChG,eAAiB,CACX,EAAe,QACjB,EAAe,SAAS,MAAM,EAE9B,EAAgB,SAAS,MAAM,CAEnC,EAAG,CAAC,EACJ,EAAmB,QAAU,IACpB,EAAM,MAAQ,UAAY,EAAM,MAAQ,SAAW,EAAM,MAAQ,SAAW,EAAM,MAAQ,KACnG,EAAe,EAAK,EACpB,EAAwB,GAExB,EAAmB,QAAU,EAEjC,EAGM,EAAiB,GAAsC,CAC3D,GAAM,CAAE,OAAQ,EAChB,GAAI,IAAQ,OAAU,EAAM,UAAY,IAAQ,MAC9C,eAAiB,CACf,EAAc,SAAS,MAAM,CAC/B,EAAG,CAAC,OACC,GAAI,IAAQ,aAAe,IAAQ,UAAW,CACnD,EAAM,eAAe,EACrB,eAAiB,CACf,EAAgB,SAAS,MAAM,CACjC,EAAG,CAAC,EACJ,IAAI,EAAkB,EAetB,GAdI,IAAQ,YACV,EAAkB,KAAK,IAAI,EAAe,EAAG,EAAgB,QAAQ,OAAS,CAAC,EACtE,IAAQ,YACjB,EAAkB,KAAK,IAAI,EAAe,EAAG,CAAC,GAG5C,IAAiB,GAAK,EAAM,MAAQ,UACtC,EAAkB,EAAgB,QAAQ,OAAS,EAG5C,IAAiB,EAAgB,QAAQ,OAAS,GAAK,EAAM,MAAQ,cAC5E,EAAkB,GAEpB,EAAgB,CAAe,EAC3B,EAAe,SAAW,GAAmB,EAAG,CAClD,IAAM,EAAgB,EAAe,QAAQ,iBAAiB,IAAI,EAAO,aAAa,EACpF,GAEI,EAA0B,EAAc,SAAS,GAAG,aAAa,cAAc,EAIrF,EAAe,GAHY,EAAc,YAAY,GACnD,IAA4B,OAAS,WAAa,eACnD,GAAG,EAAkB,EAAE,UAAU,EAAgB,QAAQ,QAC5B,EAC1B,GACF,EAAc,eAAe,CAC3B,MAAO,UACP,OAAQ,SACV,CAAC,CAEL,CACF,MAAW,IAAQ,SAAW,IAAQ,SAAW,IAAQ,IACnD,IAAiB,IACnB,EAAc,EAAgB,QAAQ,GAAc,KAAK,EAElD,IAAQ,WACjB,EAAe,EAAK,EACpB,EAAwB,EAE5B,GAEA,EAAA,EAAA,eAAgB,CACV,GACF,aAAa,CAAa,EAU5B,EARgB,eAAiB,CAC/B,IAAM,EAAkB,EAAgB,QAAQ,OAC5C,GAAG,EAAgB,QAAQ,OAAO,gEAClC,uBACA,GACF,EAAe,CAAe,CAElC,EAAG,GACc,CAAO,CAC1B,EAAG,CAAC,CAAU,CAAC,EAEf,IAAM,MAAoB,CACxB,EAAa,EAAI,CACnB,EACM,OAAmB,CACvB,EAAa,EAAK,CACpB,EAgBA,IAdA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAc,EAAe,QAKnC,OAJI,IACF,EAAY,iBAAiB,QAAS,CAAW,EACjD,EAAY,iBAAiB,OAAQ,EAAU,OAEpC,CACP,IACF,EAAY,oBAAoB,QAAS,CAAW,EACpD,EAAY,oBAAoB,OAAQ,EAAU,EAEtD,CACF,EAAG,CAAC,EAAa,EAAU,CAAC,EAExB,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAClC,EAAa,EAAc,eAAe,CAAU,GAChD,IAAU,QAAU,IAAU,WAEhC,EAAsB,CACnB,gBAAyB,CAC5B,EAEJ,CAEA,IAAM,OAAqB,CACzB,EAAgB,EAAK,CACvB,EAEM,OAA8B,CAClC,EAAgB,EAAK,EACrB,EAAc,EAAE,EAChB,EAAwB,EACxB,EAAkB,CAAe,CACnC,EAEA,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,+BACrB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,yBAAvB,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAU,GAAG,EAAO,qBAAsB,IAAK,YAChE,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,GAAG,EAAO,eAAe,GAAG,EAAe,EAAO,QAAU,GAAG,GAAG,EAAgB,OAAS,EAAI,EAAO,SAAW,GAAG,GAAG,EAAgB,OAAS,EAAI,EAAO,UAAY,GAAG,IACnL,EAAgB,SAAW,EAAI,EAAO,YAAc,GACrD,GAAG,IAAY,UAAY,EAAO,QAAU,KAC7C,IAAK,EACL,QAAS,EACT,OAAQ,GACR,YAAe,EAAe,CAAC,CAAY,EAC3C,WAAa,GAAU,EACjB,EAAM,MAAQ,KAAO,EAAM,OAAS,SAAW,EAAM,OAAS,WAChE,EAAM,eAAe,EACrB,EAAe,CAAC,CAAY,EAEhC,EACA,SAAU,EACV,cAAa,iBACb,MAAO,CAAE,GAAG,EAAqB,GAAG,CAAM,EAC1C,gBAAe,EACf,gBAAc,UACd,uBAAqB,OACrB,oBAAkB,OAClB,KAAK,oBArBP,EAuBE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAmB,CAAA,GAC1B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,+BAAvB,CACG,EAAgB,OAAS,IACxB,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,cAClB,cAAa,iBACb,MAAO,CAAE,gBAAiB,CAAW,WAEpC,EAAgB,MACb,CAAA,GAER,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,aAClB,YAAe,EAAe,CAAC,CAAY,EAC3C,cAAa,yBAEb,EAAA,EAAA,KAAC,MAAD,CAAK,MAAM,OAAO,OAAO,MAAM,QAAQ,WAAW,QAAQ,MAAM,MAAM,uCACpE,EAAA,EAAA,KAAC,IAAD,CAAG,OAAO,OAAO,YAAY,IAAI,KAAK,OAAO,SAAS,oBACpD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uCAAuC,KAAK,oBACvD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,+CACX,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,mNACF,UAAU,uGACL,CAAA,CACN,CAAA,CACF,CAAA,CACF,CAAA,CACA,CAAA,CACD,CAAA,CACH,GACF,GACF,CAAA,GACL,EAAA,EAAA,KAAC,MAAD,CAAK,GAAG,eAAe,YAAU,YAAY,KAAK,QAAQ,UAAW,EAAO,YAAmB,CAAA,EAC9F,GAAA,EAAA,EAAA,eAEK,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,GAAgB,IACf,EAAA,EAAA,KAAC,MAAD,CACE,QAAS,GACT,MAAO,CACL,SAAU,QACV,MAAO,EACP,gBAAiB,sBACjB,OAAQ,GACV,YAEA,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,GAAG,EAAO,uBACrB,IAAK,EACL,QAAU,GAAM,EAAE,gBAAgB,EAClC,MAAO,CACL,QAAS,KAAiB,IAC1B,KAAM,EAAiB,KACvB,IAAK,EAAiB,IACtB,cAAe,EAAgB,QAAQ,SAAW,EAAI,EAAI,IAAA,EAC5D,WATF,EAWE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,yBAAvB,CACG,EAAQ,QAAU,IACjB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,0BACrB,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACL,IAAK,EACL,YAAY,iBACZ,UAAW,EAAO,YAClB,MAAO,EACP,SAAW,GAAM,EAAc,EAAE,OAAO,KAAK,EAC7C,cAAa,eACb,UAAY,GAAU,CACpB,EAAc,CAAK,CACrB,CACD,CAAA,CACE,CAAA,GAEP,EAAA,EAAA,KAAC,KAAD,CAAI,IAAK,EAAgB,KAAK,mBAC3B,EAAgB,QAAQ,KAAK,EAAQ,KAEpC,EAAA,EAAA,MAAC,KAAD,CAEE,UAAW,GAAG,EAAO,YAAY,GAAG,IAAU,EAAe,EAAO,QAAU,KAC9E,YAAe,EAAc,EAAO,KAAK,EACzC,gBAAe,IAAU,EACzB,KAAK,kBALP,EAOE,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,QAAS,EAAgB,SAAS,EAAO,KAAK,EAC9C,SACE,EAAO,SACN,IAAe,IAAA,IACd,EAAgB,QAAU,GAC1B,CAAC,EAAgB,SAAS,EAAO,KAAK,CAE3C,CAAA,GACD,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAO,KAAY,CAAA,CACxB,GAjBG,EAAO,KAiBV,CACL,CACC,CAAA,CACD,IACJ,EAAgB,QAAQ,OAAS,IAChC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,sBAAvB,EACE,EAAA,EAAA,KAAC,QAAD,CACE,IAAK,EACL,UAAY,GAAU,CACpB,EAAc,CAAK,CACrB,EACA,UAAW,EAAO,YACnB,CAAA,GACD,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,QAAQ,UACR,KAAK,SACL,SAAU,IAAgB,OAAS,GACnC,QAAS,GACT,cAAa,cACb,UAAY,GAAU,CACpB,EAAkB,CAAK,CACzB,EACA,IAAK,WACN,MAEO,CAAA,CACL,GAEJ,GACF,CAAA,CAEP,CAAA,EACF,SAAS,IACX,EACA,IACD,GACF,CAAA,CAET,oKE9fa,GAAqC,CAChD,UACA,eACA,oBACA,aACA,aACA,YAAY,GACZ,QAAQ,CAAC,EACT,KAAK,MACD,CACJ,GAAM,CAAC,EAAiB,IAAA,EAAA,EAAA,UAAyC,CAAY,EACvE,GAAA,EAAA,EAAA,QAAkE,CAAC,CAAC,EACtE,EAA0C,CAAC,EAC3C,EAEE,EAAiB,GAAqB,CAC1C,IAAM,EAAgB,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAE,EAClE,GAAI,CAAC,GAAiB,EAAc,QAClC,OAGF,EAD8B,QAAQ,IAC5B,MAAM,EAEhB,IAAM,EADa,EAAgB,SAAS,CAClB,EAAa,EAAgB,OAAQ,GAAQ,IAAQ,CAAE,EAAI,CAAC,GAAG,EAAiB,CAAE,GACtF,IAAe,IAAA,IAAa,EAAkB,QAAU,KAE5E,EAAmB,CAAiB,EACpC,EAAkB,CAAiB,EAEvC,EAEA,GAAI,EAAY,CACd,EAAQ,EAAU,CAAU,EAC5B,EAAa,EAAc,eAAe,CAAU,EACpD,IAAM,EAAc,IAAe,UAAY,UAAY,GACvD,IAAU,QAAU,IAAU,WAChC,EAA2B,CACzB,aAAc,EACD,cACb,MAAO,IAAe,WAAa,IAAU,QAAU,UAAY,CACrE,EAEJ,CAEA,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,qBAAsB,KAAK,kBAChD,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW,EAAO,iBAAsB,cACzC,EAAQ,IAAK,IACZ,EAAA,EAAA,KAAC,KAAD,CACE,MAAO,CAAE,GAAG,EAA0B,GAAG,CAAM,EAE/C,UAAW,GAAG,EAAU,GACtB,EAAO,SACN,IAAe,IAAA,IACd,EAAgB,QAAU,GAC1B,CAAC,EAAgB,SAAS,EAAO,KAAK,EACpC,EAAO,SACP,GACL,GAAG,EAAgB,SAAS,EAAO,KAAK,EAAI,EAAO,SAAW,KAC/D,SAAU,EAAO,QAAU,GAAK,EAChC,YAAe,EAAc,EAAO,KAAK,EACzC,WAAa,GAAU,EACjB,EAAM,MAAQ,KAAO,EAAM,OAAS,WACtC,EAAM,eAAe,EACrB,EAAc,EAAO,KAAK,EAE9B,EACA,cAAa,uBAEb,EAAA,EAAA,KAAC,EAAD,CACE,GAAI,EAAO,MACX,aAAa,QACb,SAAU,GACE,aACZ,IAAM,GAAa,CACjB,EAAa,QAAQ,EAAO,OAAS,CACvC,EACA,QAAS,EAAgB,SAAS,EAAO,KAAK,EAC9C,SACE,EAAO,SACN,IAAe,IAAA,IACd,EAAgB,QAAU,GAC1B,CAAC,EAAgB,SAAS,EAAO,KAAK,YAG1C,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,MACG,IAAe,IAAe,WAAa,IAAU,UACtD,EAAO,SACN,IAAe,IAAA,IACd,EAAgB,QAAU,GAC1B,CAAC,EAAgB,SAAS,EAAO,KAAK,EACpC,UACA,IAAe,IAAe,WAAa,IAAU,SACrD,EACA,SACR,WAEC,EAAO,KACJ,CAAA,CACE,CAAA,CACR,EApDG,EAAO,KAoDV,CACL,CACC,CAAA,CACD,CAAA,CAET,oaE3Ga,IAA0B,CACrC,UACA,WACA,WACA,aACA,YAAY,GACZ,QAAQ,CAAC,EACT,aAAa,GACb,KAAK,MACM,CACX,GAAM,CAAC,EAAgB,IAAA,EAAA,EAAA,UAAwB,CAAQ,EACnD,EAAqC,CAAC,EACtC,EAA6C,CAAC,EAC9C,EAAyB,UACvB,EAAgB,GAAgB,CACpC,GAAI,GAAgB,QAAU,GAAQ,MAAO,CAC3C,EAAY,IAAA,EAAS,EACrB,EAAS,IAAA,EAAS,EAClB,MACF,CACA,EAAS,CAAM,EACf,EAAY,CAAM,CACpB,EAEA,GAAI,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAClC,EAAa,EAAc,eAAe,CAAU,EACpD,IAAM,EAAc,IAAe,UAAY,UAAY,GACvD,IAAU,QAAU,IAAU,WAChC,EAAiB,IAAe,WAAa,IAAU,OAAS,UAAY,UAC5E,EAAsB,CACpB,aAAc,EACD,cACb,MAAO,IAAe,WAAa,IAAU,QAAU,UAAY,CACrE,EACA,EAA8B,CAC5B,iBAAkB,EAClB,eAAgB,CAClB,EAEJ,CAEA,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,8BACrB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,sBACrB,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW,EAAO,YAAa,KAAK,aAAiB,cACtD,EAAQ,IAAK,IACZ,EAAA,EAAA,MAAC,KAAD,CACE,SAAU,EAAO,QAAU,GAAK,EAChC,UAAW,GAAG,EAAU,GAAG,GAAgB,QAAU,EAAO,MAAQ,EAAO,SAAW,GAAG,GACvF,EAAO,QAAU,EAAO,SAAW,KAErC,MAAO,CAAE,GAAG,EAAqB,GAAG,CAAM,EAE1C,YAAe,EAAa,CAAM,EAClC,WAAa,GAAU,EACjB,EAAM,MAAQ,KAAO,EAAM,OAAS,WACtC,EAAM,eAAe,EACrB,EAAa,CAAM,EAEvB,EACA,cAAa,iBACb,KAAK,QACL,eAAc,GAAgB,QAAU,EAAO,eAhBjD,CAkBG,EAAO,MACP,GAAgB,QAAU,EAAO,OAAS,CAAC,EAAO,UACjD,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,SAAU,MAAO,CAAE,GAAG,CAA4B,WAAzE,CACG,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,OAAQ,MAAO,CAAE,iBAAkB,GAAc,SAAU,CAAQ,CAAA,EAE3F,CAAC,IACA,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,wBACrB,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAO,UAClB,MAAM,6BACN,MAAM,KACN,OAAO,IACP,QAAQ,WACR,KAAK,iBAEL,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,EAAO,eAClB,OAAQ,EACR,EAAE,2CACF,YAAY,GACb,CAAA,CACE,CAAA,CACF,CAAA,CAEJ,GAEL,GAvCG,EAAO,KAuCV,CACL,CACC,CAAA,CACD,CAAA,CACF,CAAA,CAET,uDE5Ga,GAAA,EAAA,EAAA,aACV,CAAE,WAAU,YAAY,GAAI,QAAQ,CAAC,EAAG,GAAG,GAAwB,IAAQ,CAC1E,IAAM,EAAiB,CAAC,EAAO,mBAAoB,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACtF,OACE,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UACE,EAAA,EAAA,KAAC,MAAD,CAAU,MAAK,MAAO,CAAE,GAAG,CAAM,EAAG,UAAW,EAAgB,GAAI,EAChE,UACE,CAAA,CACL,CAAA,CAEN,CACF,EAEA,EAAU,YAAc,yfEEX,GAAqB,CAAE,WAAU,WAAU,WAAU,aAAY,iBAAkB,CAC9F,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,EAAK,EAChC,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,GAAA,EAAA,EAAA,QAA0C,IAAI,EAC9C,GAAA,EAAA,EAAA,QAA4C,IAAI,EAChD,GAAA,EAAA,EAAA,QAAkD,IAAI,EACtD,CAAC,EAAkB,IAAA,EAAA,EAAA,UAAmD,CAAE,KAAM,EAAG,IAAK,CAAE,CAAC,EACzF,CAAC,EAAsB,IAAA,EAAA,EAAA,UAAoC,EAAK,EAChE,GAAA,EAAA,EAAA,QAA8B,CAAC,EAC/B,GAAA,EAAA,EAAA,QAAkC,CAAC,EAErC,EAAc,UAEZ,MAA6B,CACjC,EAAa,QAAU,OAAO,YAC9B,EAAiB,QAAU,SAAS,KAAK,aACzC,EAAa,EAAI,CACnB,GAEA,EAAA,EAAA,gBACE,EAAe,EACf,OAAO,iBAAiB,SAAU,CAAc,MACnC,CACX,OAAO,oBAAoB,SAAU,CAAc,CACrD,GACC,CAAC,CAAC,EAEL,IAAM,MACG,EAAiB,SAAW,EAAa,QAAU,OAAO,SAG7D,MAAkC,CACtC,GAAI,EAAU,QAAS,CACrB,IAAM,EAAa,EAAU,QAAQ,sBAAsB,EAG3D,EAAwB,EAAK,EAE7B,eAAiB,CACf,IAAM,EAAe,GAAmB,SAAS,sBAAsB,EACjE,EAAkB,EAAyB,EAC3C,EAAiB,EAAa,QAAU,EAAW,OAEzD,GAAI,EAAc,CAChB,IAAM,EAAiB,EAAa,OAC9B,EAAY,EAAW,IACvB,EAAe,GAAkB,EAAY,OAAO,QAEpD,EACH,GAAkB,IAChB,GAAgB,GAAmB,GAAkB,GAAkB,IACzE,GAAa,GAAkB,GAAkB,EAC9C,EAAW,EAAI,EAAW,OAC1B,EAAW,EAAI,EAErB,EAAoB,CAClB,KAAM,EAAW,KACjB,IAAK,GAAO,EAAW,GACzB,CAAC,EAGD,EAAwB,EAAI,CAC9B,CACF,EAAG,CAAC,CACN,CACF,EAWA,IATA,EAAA,EAAA,gBACE,OAAO,iBAAiB,SAAU,CAAmB,EACrD,OAAO,iBAAiB,SAAU,CAAmB,MACxC,CACX,OAAO,oBAAoB,SAAU,CAAmB,EACxD,OAAO,oBAAoB,SAAU,CAAmB,CAC1D,GACC,CAAC,CAAC,EAED,EAAY,CACd,EAAa,EAAc,eAAe,CAAU,EACpD,IAAM,EAAQ,EAAU,CAAU,GAC9B,IAAU,QAAU,IAAU,WAChC,EAAc,IAAe,UAAY,UAAY,EAEzD,CAEA,IAAM,EAAgB,GAAgB,CACpC,EAAS,CAAM,CACjB,EAEM,MAAoB,EAAa,EAAI,EACrC,MAAmB,EAAa,EAAK,EAE3C,OACE,EAAA,EAAA,KAAC,EAAA,QAAD,CAAS,MAAO,EAAU,SAAU,YAChC,CAAE,KAAM,MAEJ,IAAiB,IACnB,EAAQ,CAAY,EAChB,EACF,EAAoB,EAGpB,EAAwB,EAAK,IAK/B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,gBAAvB,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,gBAAiB,IAAK,YAC3C,EAAA,EAAA,MAAC,EAAA,cAAD,CACE,IAAK,EACL,cAAY,iBACZ,QAAS,EACT,OAAQ,EACR,UAAW,GAAG,EAAO,aAAa,GAAG,EAAe,EAAO,KAAO,KAClE,MAAO,CACL,kBAAmB,IAAe,GAAa,GAAgB,EAAc,EAC/E,WARF,CAUG,GACC,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAO,qBAAxB,CACG,EAAS,SAAU,EAAA,EAAA,KAAC,MAAD,CAAK,IAAK,EAAS,OAAQ,IAAI,GAAG,UAAW,EAAO,SAAY,CAAA,GACpF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAO,oBAAa,EAAS,KAAY,CAAA,CACtD,IAEN,IAAe,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,GAAG,EAAO,YAAY,GAAG,EAAO,uBAAgB,CAAkB,CAAA,GAEpG,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAO,8BACtB,EAAA,EAAA,KAAC,EAAA,gBAAD,CACE,UAAW,EAAO,gBAClB,cAAY,OACZ,YAAW,EAAO,GAAO,IAAA,EAC1B,CAAA,CACG,CAAA,CACO,GACZ,CAAA,EAEJ,IAAA,EAAA,EAAA,cAEG,IACE,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,SAAU,QACV,MAAO,EACP,gBAAiB,sBACjB,OAAQ,GACV,YAEA,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EACL,MAAO,CACL,SAAU,WACV,QAAS,KACT,MAAO,EAAU,SAAS,aAAe,OACzC,KAAM,EAAiB,KACvB,IAAK,EAAiB,GACxB,EAEC,UACE,CAAA,CACF,CAAA,EAEP,SAAS,IACX,CACC,IAGF,CAAA,CAEb,ECvLa,GAA4B,CAAE,WAAU,eAEjD,EAAA,EAAA,KAAC,EAAA,WAAD,CACE,GAAI,EAAA,SACJ,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,QAAS,EAAO,QAChB,eAAkB,EAAS,EAAE,YAE7B,EAAA,EAAA,KAAC,EAAA,eAAD,CAAgB,UAAW,EAAO,cAAgB,UAAyB,CAAA,CACjE,CAAA,EAMH,GAAA,EAAA,EAAA,aAAyD,EAAO,KAC3E,EAAA,EAAA,KAAC,EAAA,cAAD,CAAoB,MAAK,UAAW,EAAM,UAAW,MAAO,EAAM,MAAO,SAAU,EAAM,iBACtF,EAAM,QACM,CAAA,CAChB,EAED,EAAa,YAAc,oaEXd,GAA2B,CACtC,WACA,WACA,WACA,eAAiB,CAAC,EAClB,UACA,cAAc,GACd,gBACI,CACJ,IAAM,GAAA,EAAA,EAAA,QAAoC,IAAI,EACxC,GAAA,EAAA,EAAA,QAAwC,IAAI,EAC5C,GAAA,EAAA,EAAA,QAAmC,IAAI,EACvC,GAAA,EAAA,EAAA,QAA2C,IAAI,EAC/C,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAsB,EAAK,EACpC,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,CAAC,EAAkB,IAAA,EAAA,EAAA,UAA+D,CAAE,IAAK,EAAG,KAAM,CAAE,CAAC,EACrG,CAAC,EAAsB,IAAA,EAAA,EAAA,UAAoC,EAAK,EAChE,GAAA,EAAA,EAAA,QAA8B,CAAC,EAC/B,GAAA,EAAA,EAAA,QAAkC,CAAC,EAErC,EAAgC,CAAC,GAErC,EAAA,EAAA,eAAgB,CACV,EAAS,SAAW,IACtB,EAAS,QAAQ,MAAQ,EAAS,OAAS,GAE/C,EAAG,CAAC,CAAQ,CAAC,GAEb,EAAA,EAAA,eAAgB,CACd,EAAa,QAAU,OAAO,YAC9B,EAAiB,QAAU,SAAS,KAAK,aACzC,EAAa,EAAI,CACnB,EAAG,CAAC,CAAC,EAEL,IAAM,GAAA,EAAA,EAAA,iBAAwC,CAC5C,GAAI,EAAU,QAAS,CAErB,IAAM,EAAW,OAAO,eAClB,EAAa,EAAU,QAAQ,sBAAsB,EAC3D,EAAwB,EAAK,EAC7B,eAAiB,CACf,IAAM,EAAqB,GAAmB,SAAS,sBAAsB,EACzE,EAAO,EAAW,KAClB,EAAM,EAAW,EAAI,EAAW,OAChC,EAAiB,OAAO,YAAc,EAAW,OACjD,EAAkB,SAAS,KAAK,cAAgB,OAAO,YAAc,OAAO,SAQhF,GAPI,IAEF,EAAO,EAAW,KAAO,EAAS,WAClC,EAAM,EAAW,IAAM,EAAW,OAAS,EAAS,UACpD,EAAiB,EAAS,QAAU,EAAW,OAAS,EAAS,WACjE,EAAkB,SAAS,KAAK,cAAgB,EAAS,OAAS,EAAS,UAEzE,EAAoB,CACtB,IAAM,EAAiB,EAAmB,OACpC,EAAY,EAAW,IACvB,EAAe,GAAkB,EAAY,OAAO,QACpD,EACH,GAAkB,IAChB,GAAgB,GAAmB,GAAkB,GAAkB,IACzE,GAAa,GAAkB,GAAkB,EAC9C,GACC,EAAW,EAAW,IAAM,EAAS,UAAY,EAAW,GAAK,EACxE,EAAoB,CAClB,OACA,IAAK,IAAY,EAAW,EAAW,IAAM,EAAS,UAAY,EAAW,IAC/E,CAAC,EACD,EAAwB,EAAI,CAC9B,CACF,EAAG,CAAC,CACN,CACF,EAAG,CAAC,CAAC,GAEL,EAAA,EAAA,gBACE,OAAO,iBAAiB,SAAU,CAAmB,EACrD,OAAO,iBAAiB,SAAU,CAAmB,MAExC,CACX,OAAO,oBAAoB,SAAU,CAAmB,EACxD,OAAO,oBAAoB,SAAU,CAAmB,CAC1D,GACC,CAAC,CAAC,EAEL,IAAM,MAAyB,CAClB,IAAW,QAAe,EAAS,UACvC,GAaH,EAAS,QAAQ,cAAc,IAAI,cAAc,UAAW,CAAE,IAAK,SAAU,QAAS,EAAK,CAAC,CAAC,EAC7F,EAAa,EAAK,IAblB,EAAoB,EACpB,EAAa,EAAI,EACb,IACF,EAAS,QAAQ,MAAQ,EAAS,OAAS,IAEzC,IACF,EAAS,QAAQ,MAAQ,GACzB,EAAS,EAAE,GAEb,EAAS,QAAQ,cAAc,IAAI,cAAc,UAAW,CAAE,IAAK,YAAa,QAAS,EAAK,CAAC,CAAC,GAOtG,EAEM,MAAoB,CACxB,EAAa,EAAI,CACnB,EACM,MAAmB,CACvB,EAAa,EAAK,CACpB,EAEA,GAAI,EAAY,CACd,IAAM,EAAQ,EAAU,CAAU,EAClC,EAAa,EAAc,eAAe,CAAU,EACpD,IAAI,EACJ,AAKE,EALE,IAAe,UACH,UACL,EACK,EAEA,WAEZ,IAAU,QAAU,IAAU,WAChC,EAAiB,CACf,kBAAmB,CACrB,EAEJ,CAEA,OACE,EAAA,EAAA,KAAC,EAAA,SAAD,CAAU,MAAO,EAAU,SAAU,EAAU,SAAU,YACrD,CAAE,KAAM,MAEJ,IAAiB,IACnB,EAAU,CAAY,EAClB,EAEF,EAAoB,EAGpB,EAAwB,EAAK,IAK/B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,sBAAvB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,IAAK,EAAW,UAAW,GAAG,EAAO,sBAAsB,GAAG,EAAU,EAAO,QAAU,cAA9F,EACE,EAAA,EAAA,KAAC,EAAA,cAAD,CACE,IAAK,EACL,cAAa,eACb,UAAW,EAAO,kBAClB,aAAe,GAAW,GAAG,OAAS,GACtC,SAAW,GAAU,CACnB,EAAS,EAAM,OAAO,KAAK,CAE7B,EACA,QAAS,EACT,QAAS,EACT,OAAQ,EACR,MAAO,CAAE,GAAG,CAAe,EAC3B,YAAY,qBACZ,aAAa,KACd,CAAA,GACD,EAAA,EAAA,KAAC,EAAA,eAAD,CAAgB,UAAW,EAAO,mBAAoB,cAAa,gBAAiB,IAAK,YACvF,EAAA,EAAA,KAAC,EAAA,gBAAD,CACE,UAAW,GAAG,EAAO,gBAAgB,GAAG,EAAU,EAAO,QAAU,KACnE,cAAY,OACZ,YAAW,EAAe,GAAO,IAAA,EAClC,CAAA,CACa,CAAA,CACb,IAEJ,GAAA,EAAA,EAAA,eAEK,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,IACC,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,SAAU,QACV,MAAO,EACP,gBAAiB,sBACjB,OAAQ,GACV,YAEA,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EACL,MAAO,CACL,SAAU,WACV,QAAS,KACT,MAAO,EAAU,QAAU,EAAU,QAAQ,YAAc,OAC3D,KAAM,EAAiB,KACvB,IAAK,EAAiB,IAEtB,OAAQ,GACV,EAEC,UACE,CAAA,CACF,CAAA,CAEP,CAAA,EACF,SAAS,IACX,EACA,IACD,IAGD,CAAA,CAEd,EC5Na,GAAkC,CAAE,WAAU,eAEvD,EAAA,EAAA,KAAC,EAAA,WAAD,CACE,GAAI,EAAA,SACJ,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,QAAS,EAAO,QAChB,eAAkB,EAAS,EAAE,YAE7B,EAAA,EAAA,KAAC,EAAA,gBAAD,CAAiB,UAAW,EAAO,oBAAsB,UAA0B,CAAA,CACzE,CAAA,EAMH,GAAA,EAAA,EAAA,aAAmE,EAAO,KACrF,EAAA,EAAA,KAAC,EAAA,eAAD,CAAqB,MAAK,UAAW,EAAM,UAAW,MAAO,EAAM,MAAO,SAAU,EAAM,iBACvF,EAAM,QACO,CAAA,CACjB,EAED,EAAmB,YAAc,yGEvBpB,EAA4C,EAAA,QAAM,MAAA,EAAA,EAAA,aAE1D,CAAE,aAAa,GAAI,QAAQ,CAAC,EAAG,YAAY,GAAI,UAAS,SAAQ,GAAG,GAA8B,IAAQ,CACxG,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC5C,EAAgB,CAAC,EACf,EAAmB,CAAC,EAAO,UAAW,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAe/E,MAdA,GAAa,EAAc,eAAe,CAAU,EAUpD,EAAgB,CACd,kBAAmB,EAAa,IAAe,UAAyB,UAAb,EAA0B,EACvF,GAGE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,2BACrB,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACL,cAAa,gBACR,MACL,UAAW,EACX,YAnB0B,CAC9B,EAAa,EAAI,CACnB,EAkBM,WAhByB,CAC7B,EAAa,EAAK,CACpB,EAeM,MAAO,CAAE,GAAG,EAAe,GAAG,CAAM,EACpC,GAAI,CACL,CAAA,CACE,CAAA,CAET,CACF,CACF,8SEjBa,IAAoB,CAC/B,mBACA,WAAW,GACX,aAAa,GACb,WACA,cAAc,GACd,QAAQ,GACR,WAAW,GACX,KAAK,GACL,mBAAmB,GACnB,qBAAqB,GACrB,sBAAsB,GACtB,OAAO,MACP,YAAY,aACR,CAEJ,GAAM,CAAC,EAAiB,IAAA,EAAA,EAAA,UAAwC,CAAK,EAE/D,GAAA,EAAA,EAAA,QACJ,GAAoB,IAAqB,MAAQ,EAAmB,IACtE,GAEA,EAAA,EAAA,eAAgB,CACd,GAAI,EAAoB,CACtB,IAAM,EAAkB,EAAY,CAAkB,EAClD,IACF,EAAY,CAAe,EAC3B,EAAY,QAAU,EAE1B,CACF,EAAG,CAAC,CAAkB,CAAC,EAEvB,IAAM,GAAc,EAAW,IACzB,KAAK,UAAU,CAAI,IAAM,KAAK,UAAU,CAAI,EAgB5C,GAAA,EAAA,EAAA,cAAsC,EACzC,MAXyB,EAAW,IACjC,EAAA,QAAG,GAAwB,EAAA,QAAG,GACzB,GAET,EAAI,EAAA,QAAG,GAAwB,EAAA,QAAG,GAOV,EACvB,IAAK,IAKG,CAHL,MAAO,EAAU,MAAA,EAAA,EAAA,uBAA6B,CAAsB,EACpE,MAAO,CAEF,EACR,EAEG,EAAe,GACZ,EAAY,KAAM,GAAY,EAAQ,OAAS,CAAG,EAGrD,CAAC,EAAU,IAAA,EAAA,EAAA,cACS,EAAY,EAAY,OACzC,GAAoC,IAC5C,EAEK,EAAoB,GAAe,CACvC,EAAY,QAAU,EAEtB,EADwB,EAAY,CACxB,CAAe,EAC3B,EAAwB,EAAY,OAAO,CAC7C,EAGM,GAAA,EAAA,EAAA,QAAqB,GAAoB,EAAE,EAE3C,EAAuB,GAAwB,CACnD,IAAM,EAAqB,EAAY,KAAK,EAgB5C,OAdI,GAAsB,EAAY,QAGX,YAAQ,KAAK,EAAY,KAAK,CACnD,EAAyB,IAO7B,EAAA,EAAA,oBAA0B,KAAA,EAAA,EAAA,uBAHxB,EAAY,OACd,IAAI,GAEgD,EAG/C,EACT,EAEM,GAA2B,EAAqB,EAAiC,KAAU,CAC1F,GAQH,EAAS,CANM,cACb,YAAa,EAAY,QACzB,MAAO,IAAA,GACH,KACmB,uBAEhB,CAAW,EAEtB,EAAc,EAAY,KAAK,EAC/B,IAAM,EAAQ,EACV,EAAoB,CAAW,EAC7B,IAAA,GACA,UACF,EACE,WACA,IAAA,GAEN,EAAmB,EAAE,CAAC,GAAmB,IAAU,IAAA,GAAU,EAS7D,EAAS,CANM,cACb,YAAa,EAAY,QAClB,QACH,KACmB,uBAEhB,CAAW,CACtB,EAGA,OACE,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UAEI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,GAAG,EAAO,aAAa,GAAG,GAAqB,KAAK,GAAK,KAAM,cAAY,yBAA3F,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,YAAY,2BACpC,EAAA,EAAA,KAAC,EAAD,CAAkB,WAAU,SAAU,EAAkB,cAAY,eAA2B,uBAC7F,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,eAAe,8BACvC,EAAA,EAAA,KAAC,EAAD,CAAe,aAAgB,CAAC,EAAG,cAAY,gCAC5C,EAAY,IAAK,IAChB,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,GAET,MAAO,EAAQ,MACf,WAAY,CAAE,YACZ,GAAG,GAAU,EAAW,EAAU,CAAO,EAAI,EAAO,OAAS,KAE/D,cAAa,uBAAuB,EAAQ,kBAE5C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,gBAAgB,+BACxC,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CACG,EAAA,QAAG,EAAQ,OAAsB,iCAAyB,EAAQ,KAAoB,CACnF,CAAA,CAAA,CACH,CAAA,CAEO,EAbP,EAAQ,KAaD,CACf,CACY,CAAA,CACZ,CAAA,CACC,CAAA,CACL,CAAA,GACL,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,eAAe,8BACvC,EAAA,EAAA,KAAC,EAAD,CACQ,OACK,YACX,kBAAgB,eACH,cACb,UAAW,GAAG,EAAO,WAAW,GAAG,GAAmB,EAAW,EAAO,YAAc,GAAG,gBACrF,KACJ,MAAO,GAAoB,GAC3B,OAAS,GAAM,CACb,EAAY,QAAU,EAAE,OAAO,MAAM,KAAK,CAC5C,EACA,SAAW,GAAM,CACf,EAAY,QAAU,EAAE,OAAO,MAC/B,EAAwB,EAAY,OAAO,CAC7C,EACA,cAAY,cACA,YACb,CAAA,CACE,CAAA,CACF,GAEP,CAAA,CAEN,0EEnMM,GAA2C,CAC/C,QACA,KAAM,EACN,cAAc,EACd,WAAW,UACX,aAAa,0BACT,CACJ,IAAM,EAAO,IAAa,GAAS,KAAuB,gBAAhB,eACpC,GAAA,EAAA,EAAA,aACA,IAAS,eAAiB,GAAS,KAC9B,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,CAAK,CAAC,EAElC,EACN,CAAC,EAAM,CAAK,CAAC,EAEhB,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAO,SAClB,KAAK,cACL,gBAAe,IAAS,cAAgB,EAAI,IAAA,GAC5C,gBAAe,IAAS,cAAgB,IAAM,IAAA,GAC9C,gBAAe,IAAS,cAAgB,EAAM,IAAA,GAC9C,MAAO,CACL,OAAQ,EACR,gBAAiB,CACnB,YAEA,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAO,gBAClB,MAAO,CACL,OAAQ,EACR,MAAO,IAAS,cAAgB,GAAG,EAAI,GAAK,IAAA,GAC5C,gBAAiB,EACjB,cAAe,IAAS,gBAAkB,UAAY,IAAA,GACtD,KAAM,IAAS,gBAAkB,KAAO,CAC1C,CACD,CAAA,CACE,CAAA,GACL,EAAA,EAAA,KAAC,QAAD,CAAA,SAAQ;;;;;;;;;;;;;;;;;;;;;;OAsBC,CAAA,CACT,CAAA,CAAA,CAEN,6pBErEsC,CAAE,aAAY,OAAM,UAAS,WAAU,YAAa,CACxF,IAAM,EAAsB,GAAY,YAAY,IAAM,UAAY,UAAY,EAE5E,EAAgB,GAAoB,CACxC,EAAS,CAAM,CACjB,EAEA,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,uBACrB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,sBACrB,EAAA,EAAA,MAAC,QAAD,CAAO,QAAS,EAAO,MAAO,UAAW,EAAO,uBAAhD,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAO,6BAAvB,EACE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,QACL,GAAI,EAAO,MACL,OACN,MAAO,EAAO,MACL,UACT,aAAgB,EAAa,CAAM,EACnC,UAAW,EAAO,aACnB,CAAA,GACD,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,GAAG,EAAO,eAAe,GAAG,EAAU,EAAO,gBAAkB,KAC1E,MAAO,CACL,YAAa,EAAU,EAAsB,SAC/C,WAEC,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAO,qBAAsB,MAAO,CAAE,gBAAiB,CAAoB,CAAS,CAAA,CAEnG,CAAA,CACH,IACJ,EAAO,SACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,MAAD,CACE,cAAa,GACb,IAAK,EAAO,OACZ,MAAO,GACP,OAAQ,GACR,IAAI,gBACJ,UAAW,EAAO,iBACnB,CAAA,CACE,CAAA,GAEP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,sBAAe,EAAO,KAAW,CAAA,CACnD,GACJ,CAAA,CACF,CAAA,CAET"}
|