{"version":3,"sources":["webpack://twb-community/./node_modules/email-validator/index.js","webpack://twb-community/./node_modules/grommet-icons/es6/default-props.js","webpack://twb-community/./node_modules/grommet-icons/es6/themes/base.js","webpack://twb-community/./node_modules/grommet-icons/es6/StyledIcon.js","webpack://twb-community/./node_modules/grommet/es6/utils/use-isomorphic-layout-effect.js","webpack://twb-community/./node_modules/jsonp/index.js","webpack://twb-community/./node_modules/jsonp/node_modules/debug/src/browser.js","webpack://twb-community/./node_modules/jsonp/node_modules/debug/src/debug.js","webpack://twb-community/./node_modules/jsonp/node_modules/ms/index.js","webpack://twb-community/./node_modules/gatsby-plugin-mailchimp/index.js","webpack://twb-community/./node_modules/grommet/es6/components/Form/FormContext.js","webpack://twb-community/./node_modules/grommet/es6/components/Form/Form.js","webpack://twb-community/./node_modules/grommet/es6/components/Grid/StyledGrid.js","webpack://twb-community/./node_modules/grommet/es6/components/Grid/Grid.js","webpack://twb-community/./node_modules/grommet/es6/components/CheckBox/StyledCheckBox.js","webpack://twb-community/./node_modules/grommet/es6/components/CheckBox/CheckBox.js","webpack://twb-community/./node_modules/grommet/es6/components/CheckBoxGroup/StyledCheckBoxGroup.js","webpack://twb-community/./node_modules/grommet/es6/components/CheckBoxGroup/CheckBoxGroup.js","webpack://twb-community/./node_modules/grommet/es6/components/RadioButton/StyledRadioButton.js","webpack://twb-community/./node_modules/grommet/es6/components/RadioButton/RadioButton.js","webpack://twb-community/./node_modules/grommet/es6/components/RadioButtonGroup/RadioButtonGroup.js","webpack://twb-community/./node_modules/grommet/es6/components/InfiniteScroll/InfiniteScroll.js","webpack://twb-community/./node_modules/grommet/es6/contexts/AnnounceContext/AnnounceContext.js","webpack://twb-community/./node_modules/grommet/es6/components/TextInput/StyledTextInput.js","webpack://twb-community/./node_modules/grommet/es6/components/TextInput/TextInput.js","webpack://twb-community/./node_modules/grommet/es6/components/FormField/FormField.js","webpack://twb-community/./node_modules/grommet-icons/es6/icons/MailOption.js","webpack://twb-community/./node_modules/grommet-icons/es6/icons/StatusGood.js","webpack://twb-community/./node_modules/grommet-icons/es6/icons/Alert.js","webpack://twb-community/./src/components/mailchimp.js","webpack://twb-community/./src/pages/join.js"],"names":["tester","exports","validate","email","length","test","parts","split","some","part","defaultProps","theme","global","colors","icon","size","small","medium","large","xlarge","_extends","Object","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","colorCss","css","props","color","IconInner","_ref","a11yTitle","rest","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","displayName","StyledIcon","withConfig","componentId","_ref2","string","_ref2$size","_split","viewBox","w","h","scale","dimension","parseFloat","match","_ref3","_ref4","extend","setPrototypeOf","useLayoutEffect","window","useEffect","debug","module","url","opts","fn","script","timer","prefix","id","name","count","param","timeout","enc","encodeURIComponent","document","getElementsByTagName","head","setTimeout","cleanup","Error","parentNode","removeChild","noop","clearTimeout","data","replace","createElement","src","insertBefore","load","r","storage","e","process","DEBUG","log","console","Function","formatArgs","args","useColors","namespace","humanize","diff","c","splice","index","lastC","save","namespaces","removeItem","type","documentElement","style","WebkitAppearance","firebug","exception","table","navigator","userAgent","toLowerCase","parseInt","RegExp","$1","chrome","local","localStorage","localstorage","formatters","j","v","JSON","stringify","err","message","enable","prevTime","createDebug","enabled","self","curr","Date","ms","prev","Array","coerce","unshift","format","formatter","val","logFn","bind","hash","charCodeAt","Math","abs","selectColor","init","stack","disable","names","skips","len","push","substr","s","m","d","y","plural","n","floor","ceil","options","str","String","exec","parse","isNaN","long","round","fmtShort","obj","_jsonp","require","__esModule","default","_emailValidator","subscribeEmailToMailchimp","Promise","resolve","reject","convertListFields","fields","queryParams","field","fieldTransformed","substring","toUpperCase","concat","_default","endpointOverride","isEmailValid","emailEncoded","result","msg","endpoint","__GATSBY_PLUGIN_MAILCHIMP_ADDRESS__","__GATSBY_PLUGIN_MAILCHIMP_TIMEOUT__","FormContext","useFormField","error","info","useFormInput","_","valueProp","initialValue","_useState","useState","undefined","value","setValue","nextValue","defaultMessages","invalid","required","defaultValue","defaultTouched","defaultValidationResults","errors","infos","validations","omitValid","nextErrors","nextInfos","forEach","validation","status","Form","forwardRef","ref","children","_ref2$errors","errorsProp","_ref2$infos","infosProp","_ref2$messages","messages","onChange","_onReset","onReset","_onSubmit","onSubmit","onValidate","_ref2$validate","validateOn","valueState","setValueState","useMemo","_useState2","touched","setTouched","_useState3","validationResults","setValidationResults","_useState4","pendingValidation","setPendingValidation","useRef","requiredFields","buildValid","useCallback","valid","current","filter","includes","every","filterErrorValidations","filterInfoValidations","validationsForSetFields","entries","_validate","nextValidationResults","_validate2","validatedErrors","validatedInfos","prevValidationResults","_validate3","_ref5","event","persist","adjustedEvent","preventDefault","_validate4","Provider","_ref6","errorArg","infoArg","validateArg","validateSingle","aValidate","value2","regexp","isArray","inForm","onBlur","componentValue","_useState5","inputValue","setInputValue","formValue","prevValue","nextComponentValue","nextTouched","FormWrapper","ALIGN_MAP","center","end","start","stretch","alignStyle","align","ALIGN_CONTENT_MAP","around","between","alignContentStyle","alignContent","JUSTIFY_MAP","justifyStyle","justify","JUSTIFY_CONTENT_MAP","justifyContentStyle","justifyContent","SIZE_MAP","flex","full","getRepeatSize","min","max","search","sizeFor","isRow","mapped","fillContainer","warn","StyledGrid","a11yTitleProp","border","map","responsive","fill","areas","rowsProp","columns","area","join","cells","row","column","areasStyle","columnsStyle","gap","gapSize","edgeSize","gapStyle","pad","responsiveBreakpoint","rowsStyle","grid","Grid","_props$responsive","rows","tag","as","GridWrapper","available","CSS","supports","hoverStyle","checkBox","hover","StyledCheckBoxIcon","check","thickness","StyledCheckBoxContainer","fillProp","box","disabled","StyledCheckBoxInput","toggle","StyledCheckBoxBox","focus","StyledCheckBoxToggle","width","radius","background","StyledCheckBoxKnob","dark","knob","StyledCheckBox","stopLabelClick","stopPropagation","CheckBox","checkedProp","checked","_ref$defaultChecked","defaultChecked","focusProp","label","_onBlur","_onChange","_onFocus","onFocus","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","_onMouseOut","onMouseOut","_onMouseOver","onMouseOver","reverse","indeterminate","useContext","ThemeContext","_formContext$useFormI","setChecked","setFocus","hidden","themeableProps","_theme$checkBox$icons","icons","CheckedIcon","IndeterminateIcon","borderColor","visual","Box","height","preserveAspectRatio","side","checkBoxNode","margin","normalizedLabel","first","second","htmlFor","onClick","CheckBoxWrapper","StyledCheckBoxGroup","checkBoxGroup","container","CheckBoxGroup","disabledProp","labelKey","valueKey","optionsProp","formContext","option","onCheckBoxChange","optionValue","optionIndex","valueOption","optionProps","StyledRadioButtonContainer","radioButton","StyledRadioButtonInput","StyledRadioButtonLabel","font","weight","StyledRadioButtonIcon","StyledRadioButtonBox","StyledRadioButton","RadioButton","setHover","Icon","circle","right","cx","cy","RadioButtonWrapper","RadioButtonGroup","o","optionRefs","valueIndex","onNext","onPrevious","Keyboard","onUp","onDown","onLeft","onRight","radioButtonGroup","optionDisabled","optionRest","aRef","state","calculateLastPageBound","show","step","InfiniteScrollWrapper","_ref$items","items","onMore","renderMarker","showProp","_ref$step","setShow","lastPage","renderPageBounds","setRenderPageBounds","pageHeights","setPageHeights","pendingLength","setPendingLength","aboveMarkerRef","belowMarkerRef","scrollParents","evaluate","top","scrollParent","scrollTop","body","innerHeight","getBoundingClientRect","offset","nextBeginPage","pagesHeight","nextEndPage","showPage","debounce","sp","addEventListener","removeEventListener","showIndex","showNode","item","scrollIntoView","rendered","nextPageHeights","lastBottom","topIndex","bottomIndex","bottom","_nextPageHeights","aboveHeight","belowHeight","firstIndex","lastIndex","marker","slice","child","_marker","renderedMarker","node","AnnounceContext","mode","announcer","querySelector","left","position","firstChild","createAnnouncer","setAttribute","innerHTML","StyledTextInput","plain","textInput","opacity","textAlign","StyledTextInputContainer","StyledPlaceholder","control","placeholder","StyledSuggestions","suggestions","renderLabel","suggestion","stringLabel","ContainerBox","dropHeight","defaultDropAlign","enterSelect","suggestionsCount","suggestionsExist","suggestionIsOpen","TextInput","defaultSuggestion","_ref$dropAlign","dropAlign","dropTarget","dropProps","_ref$focusIndicator","focusIndicator","_ref$messages","onKeyDown","onSelect","onSuggestionSelect","onSuggestionsClose","onSuggestionsOpen","readOnly","announce","inputRef","dropRef","suggestionsRef","showDrop","setShowDrop","handleSuggestionSelect","handleTextSelect","suggestionsAtClose","setSuggestionsAtClose","openDrop","closeDrop","valueSuggestionIndex","resetSuggestionIndex","activeSuggestionIndex","setActiveSuggestionIndex","mouseMovedSinceLastKey","setMouseMovedSinceLastKey","list","scrollTo","offsetTop","drop","setValueFromSuggestion","onNextSuggestion","nextActiveIndex","onPreviousSuggestion","_useState6","showStyledPlaceholder","setShowStyledPlaceholder","extraProps","Drop","onClickOutside","onEsc","overflow","onMouseMove","select","itemRef","renderedLabel","button","Button","active","kind","keyboardProps","onEnter","onTab","autoComplete","relatedTarget","TextInputWrapper","grommetInputNames","grommetInputPadNames","FormFieldBox","justBorder","formField","FormFieldContentBox","StyledMessageContainer","messageType","Message","containerProps","messageContent","Text","direction","Input","comp","component","InputComponent","FormField","className","contentProps","errorProp","help","infoProp","_formContext$useFormF","contextOnBlur","contextOnChange","formFieldRef","formFieldTheme","themeBorder","wantContentPad","contents","Children","cloneElement","containerRest","themeContentProps","content","abut","abutMargin","labelStyle","outerBackground","outerStyle","innerProps","mergedMargin","horizontal","borderSize","zIndex","outerProps","requiredIndicator","func","wait","_len","_key","later","FormFieldWrapper","MailOption","stroke","strokeWidth","StatusGood","Alert","sizeOverride","ResponsiveContext","React","mailchimpMessage","setMailchimpMessage","SignUpForm","addToMailchimp","signUpEmail","then","handleSubmit","primary","CompleteState","Paragraph","dangerouslySetInnerHTML","__html","Anchor","Join","title","alignSelf","vertical","Heading","level","href"],"mappings":"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","file":"component---src-pages-join-js-a1b9c692e3aaa38817dc.js","sourcesContent":["\"use strict\";\n\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/; // Thanks to:\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\n\nexports.validate = function (email) {\n if (!email) return false;\n if (email.length > 254) return false;\n var valid = tester.test(email);\n if (!valid) return false; // Further checking of some things regex can't handle\n\n var parts = email.split(\"@\");\n if (parts[0].length > 64) return false;\n var domainParts = parts[1].split(\".\");\n if (domainParts.some(function (part) {\n return part.length > 63;\n })) return false;\n return true;\n};","import { deepMerge } from './utils';\nimport { base } from './themes';\nexport var defaultProps = {\n theme: base\n};\nexport var extendDefaultTheme = function extendDefaultTheme(theme) {\n defaultProps.theme = deepMerge(base, theme);\n};","export var base = {\n global: {\n colors: {\n icon: '#666666'\n }\n },\n icon: {\n size: {\n small: '12px',\n medium: '24px',\n large: '48px',\n xlarge: '96px'\n }\n }\n};","function _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 _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\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { colorStyle } from 'grommet-styles';\nimport { defaultProps } from './default-props';\nvar colorCss = css([\"\", \" \", \" g{fill:inherit;stroke:inherit;}*:not([stroke]){&[fill=\\\"none\\\"]{stroke-width:0;}}*[stroke*=\\\"#\\\"],*[STROKE*=\\\"#\\\"]{stroke:inherit;fill:none;}*[fill-rule],*[FILL-RULE],*[fill*=\\\"#\\\"],*[FILL*=\\\"#\\\"]{fill:inherit;stroke:none;}\"], function (props) {\n return colorStyle('fill', props.color || props.theme.global.colors.icon, props.theme);\n}, function (props) {\n return colorStyle('stroke', props.color || props.theme.global.colors.icon, props.theme);\n});\n\nvar IconInner = function IconInner(_ref) {\n var a11yTitle = _ref.a11yTitle,\n color = _ref.color,\n size = _ref.size,\n theme = _ref.theme,\n rest = _objectWithoutPropertiesLoose(_ref, [\"a11yTitle\", \"color\", \"size\", \"theme\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n \"aria-label\": a11yTitle\n }, rest));\n};\n\nIconInner.displayName = 'Icon';\n\nvar parseMetricToNum = function parseMetricToNum(string) {\n return parseFloat(string.match(/\\d+(\\.\\d+)?/), 10);\n};\n\nvar StyledIcon = styled(IconInner).withConfig({\n displayName: \"StyledIcon\",\n componentId: \"ofa7kd-0\"\n})([\"display:inline-block;flex:0 0 auto;\", \" \", \" \", \"\"], function (_ref2) {\n var _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? 'medium' : _ref2$size,\n theme = _ref2.theme,\n viewBox = _ref2.viewBox;\n\n var _split = (viewBox || '0 0 24 24').split(' '),\n w = _split[2],\n h = _split[3];\n\n var scale = w / h;\n var dimension = parseMetricToNum(theme.icon.size[size] || size);\n\n if (w < h) {\n return \"\\n width: \" + dimension + \"px;\\n height: \" + dimension / scale + \"px;\\n \";\n }\n\n if (h < w) {\n return \"\\n width: \" + dimension * scale + \"px;\\n height: \" + dimension + \"px;\\n \";\n }\n\n return \"\\n width: \" + dimension + \"px;\\n height: \" + dimension + \"px;\\n \";\n}, function (_ref3) {\n var color = _ref3.color;\n return color !== 'plain' && colorCss;\n}, function (_ref4) {\n var theme = _ref4.theme;\n return theme && theme.icon.extend;\n});\nStyledIcon.defaultProps = {};\nObject.setPrototypeOf(StyledIcon.defaultProps, defaultProps);\nexport { StyledIcon };","/* eslint-disable no-restricted-imports */\nimport { useLayoutEffect as vanillaUseLayoutEffect, useEffect } from 'react';\n/**\n * A substitute for React's useLayoutEffect, which does not generate warnings on\n * SSR. It is named useLayoutEffect so that all eslint rules applying to the\n * original useLayoutEffect would also apply to it.\n * This solution was suggested by Alex Reardon.\n * @see https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a\n * @see https://github.com/grommet/grommet/issues/4765\n */\n\nexport var useLayoutEffect = typeof window !== 'undefined' ? vanillaUseLayoutEffect : useEffect;\nexport default useLayoutEffect;","/**\n * Module dependencies\n */\nvar debug = require('debug')('jsonp');\n/**\n * Module exports.\n */\n\n\nmodule.exports = jsonp;\n/**\n * Callback index.\n */\n\nvar count = 0;\n/**\n * Noop function.\n */\n\nfunction noop() {}\n/**\n * JSONP handler\n *\n * Options:\n * - param {String} qs parameter (`callback`)\n * - prefix {String} qs parameter (`__jp`)\n * - name {String} qs parameter (`prefix` + incr)\n * - timeout {Number} how long after a timeout error is emitted (`60000`)\n *\n * @param {String} url\n * @param {Object|Function} optional options / callback\n * @param {Function} optional callback\n */\n\n\nfunction jsonp(url, opts, fn) {\n if ('function' == typeof opts) {\n fn = opts;\n opts = {};\n }\n\n if (!opts) opts = {};\n var prefix = opts.prefix || '__jp'; // use the callback name that was passed if one was provided.\n // otherwise generate a unique name by incrementing our counter.\n\n var id = opts.name || prefix + count++;\n var param = opts.param || 'callback';\n var timeout = null != opts.timeout ? opts.timeout : 60000;\n var enc = encodeURIComponent;\n var target = document.getElementsByTagName('script')[0] || document.head;\n var script;\n var timer;\n\n if (timeout) {\n timer = setTimeout(function () {\n cleanup();\n if (fn) fn(new Error('Timeout'));\n }, timeout);\n }\n\n function cleanup() {\n if (script.parentNode) script.parentNode.removeChild(script);\n window[id] = noop;\n if (timer) clearTimeout(timer);\n }\n\n function cancel() {\n if (window[id]) {\n cleanup();\n }\n }\n\n window[id] = function (data) {\n debug('jsonp got', data);\n cleanup();\n if (fn) fn(null, data);\n }; // add qs component\n\n\n url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);\n url = url.replace('?&', '?');\n debug('jsonp req \"%s\"', url); // create script\n\n script = document.createElement('script');\n script.src = url;\n target.parentNode.insertBefore(script, target);\n return cancel;\n}","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n } // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\n\nexports.formatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors) return;\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if ('%%' === match) return;\n index++;\n\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.debug;\n } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\n\nexports.enable(load());\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}","/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0,\n i;\n\n for (i in namespace) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n\nfunction createDebug(namespace) {\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n var self = debug; // set `diff` timestamp\n\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr; // turn the `arguments` into a proper Array\n\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n } // apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // apply env-specific formatting (colors, etc.)\n\n exports.formatArgs.call(self, args);\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace); // env-specific initialization logic for debug instances\n\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n exports.names = [];\n exports.skips = [];\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n/**\n * Disable debug output.\n *\n * @api public\n */\n\n\nfunction disable() {\n exports.enable('');\n}\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\nfunction enabled(name) {\n var i, len;\n\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}","/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n str = String(str);\n\n if (str.length > 100) {\n return;\n }\n\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n\n if (!match) {\n return;\n }\n\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n\n default:\n return undefined;\n }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n\n return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') || plural(ms, h, 'hour') || plural(ms, m, 'minute') || plural(ms, s, 'second') || ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n\n return Math.ceil(ms / n) + ' ' + name + 's';\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports['default'] = void 0;\n\nvar _jsonp = _interopRequireDefault(require('jsonp'));\n\nvar _emailValidator = require('email-validator');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n/**\n * Make a jsonp request to user's mailchimp list\n * `param` object avoids CORS issues\n * timeout to 3.5s so user isn't waiting forever\n * usually occurs w/ privacy plugins enabled\n * 3.5s is a bit longer than the time it would take on a Slow 3G connection\n *\n * @param {String} url - concatenated string of user's gatsby-config.js\n * options, along with any MC list fields as query params.\n *\n * @return {Promise} - a promise that resolves a data object\n * or rejects an error object\n */\nvar subscribeEmailToMailchimp = function subscribeEmailToMailchimp(_ref) {\n var url = _ref.url,\n timeout = _ref.timeout;\n return new Promise(function(resolve, reject) {\n return (0, _jsonp['default'])(\n url,\n {\n param: 'c',\n timeout: timeout,\n },\n function(err, data) {\n if (err) reject(err);\n if (data) resolve(data);\n },\n );\n });\n};\n/**\n * Build a query string of MC list fields\n *\n * @param {Object} fields - a list of mailchimp audience field labels\n * and their values. We uppercase because that's what MC requires.\n * NOTE: GROUPS stay as lowercase (ex: MC uses group field names as `group[21269]`)\n *\n * @return {String} - `&FIELD1=value1&FIELD2=value2&group[21265][2]=group1`\n */\n\nvar convertListFields = function convertListFields(fields) {\n var queryParams = '';\n\n for (var field in fields) {\n if (Object.prototype.hasOwnProperty.call(fields, field)) {\n // If this is a list group, not user field then keep lowercase, as per MC reqs\n // https://github.com/benjaminhoffman/gatsby-plugin-mailchimp/blob/master/README.md#groups\n var fieldTransformed = field.substring(0, 6) === 'group[' ? field : field.toUpperCase();\n queryParams = queryParams.concat(\n '&'.concat(fieldTransformed, '=').concat(fields[field]),\n );\n }\n }\n\n return queryParams;\n};\n/**\n * Subscribe an email address to a Mailchimp email list.\n * We use ES5 function syntax (instead of arrow) because we need `arguments.length`\n *\n * @param {String} email - required; the email address you want to subscribe\n * @param {Object} fields - optional; add'l info (columns) you want included w/ this subscriber\n * @param {String} endpointOverride - optional; if you want to override the default MC mailing list\n * that's listed in your gatsby-config, pass the list in here\n *\n * @return {Object} -\n * {\n * result: (`success` || `error`)\n * msg: (`Thank you for subscribing!` || `The email you entered is not valid.`),\n * }\n */\n\nvar addToMailchimp = function addToMailchimp(email, fields, endpointOverride) {\n var isEmailValid = (0, _emailValidator.validate)(email);\n var emailEncoded = encodeURIComponent(email);\n\n if (!isEmailValid) {\n return Promise.resolve({\n result: 'error',\n msg: 'The email you entered is not valid.',\n });\n }\n\n var endpoint = __GATSBY_PLUGIN_MAILCHIMP_ADDRESS__; // eslint-disable-line no-undef\n\n var timeout = __GATSBY_PLUGIN_MAILCHIMP_TIMEOUT__; // eslint-disable-line no-undef\n // The following tests for whether you passed in a `fields` object. If\n // there are only two params and the second is a string, then we can safely\n // assume the second param is a MC mailing list, and not a fields object.\n\n if (arguments.length < 3 && typeof fields === 'string') {\n endpoint = fields;\n } else if (typeof endpointOverride === 'string') {\n endpoint = endpointOverride;\n } // Generates MC endpoint for our jsonp request. We have to\n // change `/post` to `/post-json` otherwise, MC returns an error\n\n endpoint = endpoint.replace(/\\/post/g, '/post-json');\n var queryParams = '&EMAIL='.concat(emailEncoded).concat(convertListFields(fields));\n var url = ''.concat(endpoint).concat(queryParams);\n return subscribeEmailToMailchimp({\n url: url,\n timeout: timeout,\n });\n};\n\nvar _default = addToMailchimp;\nexports['default'] = _default;\n","import React, { useState } from 'react'; // When not a descendant of a Form, FormContext still provides a basic\n// useFormInput. It doesn't do anything for components like TextInput.\n// But, it does store the value for components like CheckBox or Select\n// where the grommet component needs to know the value in order to\n// render custom visuals.\n\nvar useFormInput = function useFormInput(_, valueProp, initialValue) {\n var _useState = useState(valueProp !== undefined ? valueProp : initialValue),\n value = _useState[0],\n setValue = _useState[1];\n\n return [valueProp !== undefined ? valueProp : value, function (nextValue) {\n if (initialValue !== undefined) setValue(nextValue);\n }];\n};\n\nvar useFormField = function useFormField(_ref) {\n var error = _ref.error,\n info = _ref.info;\n return {\n error: error,\n info: info\n };\n};\n\nexport var FormContext = /*#__PURE__*/React.createContext({\n useFormField: useFormField,\n useFormInput: useFormInput\n});","function _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 _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\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FormContext } from './FormContext';\nvar defaultMessages = {\n invalid: 'invalid',\n required: 'required'\n};\nvar defaultValue = {};\nvar defaultTouched = {};\nvar defaultValidationResults = {\n errors: {},\n infos: {}\n}; // validations is an array from Object.entries()\n\nvar validate = function validate(validations, value, omitValid) {\n var nextErrors = {};\n var nextInfos = {};\n validations.forEach(function (_ref) {\n var name = _ref[0],\n validation = _ref[1];\n\n if (!omitValid) {\n nextErrors[name] = undefined;\n nextInfos[name] = undefined;\n }\n\n var result = validation(value[name], value); // typeof error === 'object' is implied for both cases of error with\n // a status message and for an error object that is a react node\n\n if (typeof result === 'object') {\n if (result.status === 'info') {\n nextInfos[name] = result.message;\n } else {\n nextErrors[name] = result.message || result; // could be a node\n }\n } else if (typeof result === 'string') {\n nextErrors[name] = result;\n }\n });\n return [nextErrors, nextInfos];\n};\n\nvar Form = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n _ref2$errors = _ref2.errors,\n errorsProp = _ref2$errors === void 0 ? defaultValidationResults.errors : _ref2$errors,\n _ref2$infos = _ref2.infos,\n infosProp = _ref2$infos === void 0 ? defaultValidationResults.infos : _ref2$infos,\n _ref2$messages = _ref2.messages,\n messages = _ref2$messages === void 0 ? defaultMessages : _ref2$messages,\n onChange = _ref2.onChange,\n _onReset = _ref2.onReset,\n _onSubmit = _ref2.onSubmit,\n onValidate = _ref2.onValidate,\n _ref2$validate = _ref2.validate,\n validateOn = _ref2$validate === void 0 ? 'submit' : _ref2$validate,\n valueProp = _ref2.value,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"children\", \"errors\", \"infos\", \"messages\", \"onChange\", \"onReset\", \"onSubmit\", \"onValidate\", \"validate\", \"value\"]);\n\n var _useState = useState(valueProp || defaultValue),\n valueState = _useState[0],\n setValueState = _useState[1];\n\n var value = useMemo(function () {\n return valueProp || valueState;\n }, [valueProp, valueState]);\n\n var _useState2 = useState(defaultTouched),\n touched = _useState2[0],\n setTouched = _useState2[1];\n\n var _useState3 = useState(defaultValidationResults),\n validationResults = _useState3[0],\n setValidationResults = _useState3[1]; // when onBlur input validation is triggered, we need to complete any\n // potential click events before running the onBlur validation.\n // otherwise, click events like reset, etc. may not be registered.\n // for a detailed scenario/discussion,\n // see: https://github.com/grommet/grommet/issues/4863\n // the value of pendingValidation is the name of the FormField\n // awaiting validation.\n\n\n var _useState4 = useState(undefined),\n pendingValidation = _useState4[0],\n setPendingValidation = _useState4[1];\n\n useEffect(function () {\n setPendingValidation(undefined);\n setValidationResults({\n errors: errorsProp,\n infos: infosProp\n });\n }, [errorsProp, infosProp]);\n var validations = useRef({});\n var requiredFields = useRef([]);\n var buildValid = useCallback(function (nextErrors) {\n var valid = false;\n valid = requiredFields.current.filter(function (n) {\n return Object.keys(validations.current).includes(n);\n }).every(function (field) {\n return value[field] && (value[field] !== '' || value[field] !== false);\n });\n if (Object.keys(nextErrors).length > 0) valid = false;\n return valid;\n }, [value]); // Remove any errors that we don't have any validations for anymore.\n\n var filterErrorValidations = function filterErrorValidations(errors) {\n var nextErrors = errors;\n return Object.keys(nextErrors).filter(function (n) {\n return !validations.current[n] || nextErrors[n] === undefined;\n }).forEach(function (n) {\n return delete nextErrors[n];\n });\n }; // Remove any infos that we don't have any validations for anymore.\n\n\n var filterInfoValidations = function filterInfoValidations(infos) {\n var nextInfos = infos;\n return Object.keys(nextInfos).filter(function (n) {\n return !validations.current[n] || nextInfos[n] === undefined;\n }).forEach(function (n) {\n return delete nextInfos[n];\n });\n }; // On initial mount, when validateOn is change or blur,\n // set validation results for any set fields and calculate whether\n // the form is valid overall.\n\n\n useEffect(function () {\n var validationsForSetFields = Object.entries(validations.current).filter(function (_ref3) {\n var n = _ref3[0];\n return value[n];\n });\n\n if (validationsForSetFields.length > 0 && validateOn !== 'submit') {\n var _validate = validate(validationsForSetFields, value),\n errors = _validate[0],\n infos = _validate[1];\n\n filterErrorValidations(errors);\n filterInfoValidations(infos);\n var nextValidationResults = {\n errors: errors,\n infos: infos,\n valid: buildValid(errors)\n };\n if (onValidate) onValidate(nextValidationResults);\n setValidationResults(nextValidationResults);\n } // We only want to run this for the value we have on initial mount.\n // We don't want subsequent changes to the value to re-run this.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, []); // Currently, onBlur validation will trigger after a timeout of 120ms.\n\n useEffect(function () {\n var timer = setTimeout(function () {\n if (pendingValidation) {\n // run validations on the pending one and any other touched fields\n var _validate2 = validate(Object.entries(validations.current).filter(function (_ref4) {\n var n = _ref4[0];\n return touched[n] || pendingValidation.includes(n);\n }), value),\n validatedErrors = _validate2[0],\n validatedInfos = _validate2[1];\n\n setPendingValidation(undefined);\n setValidationResults(function (prevValidationResults) {\n // keep any previous errors and infos for untouched keys,\n // these may have come from a submit\n var nextErrors = _extends({}, prevValidationResults.errors, validatedErrors);\n\n var nextInfos = _extends({}, prevValidationResults.infos, validatedInfos);\n\n filterErrorValidations(nextErrors);\n filterInfoValidations(nextInfos);\n var nextValidationResults = {\n errors: nextErrors,\n infos: nextInfos,\n valid: buildValid(nextErrors)\n };\n if (onValidate) onValidate(nextValidationResults);\n return nextValidationResults;\n });\n } // a timeout is needed to ensure that a click event (like one on a reset\n // button) completes prior to running the validation. without a timeout,\n // the blur will always complete and trigger a validation prematurely\n // The following values have been empirically tested, but 120 was\n // selected because it is the largest value\n // Chrome: 100, Safari: 120, Firefox: 80\n\n }, 120);\n return function () {\n return clearTimeout(timer);\n };\n }, [buildValid, pendingValidation, onValidate, touched, value, requiredFields]); // clear any errors when value changes\n\n useEffect(function () {\n if (validateOn !== 'change') setPendingValidation(undefined);\n setValidationResults(function (prevValidationResults) {\n var _validate3 = validate(Object.entries(validations.current).filter(function (_ref5) {\n var n = _ref5[0];\n return prevValidationResults.errors[n] || prevValidationResults.infos[n];\n }), value),\n nextErrors = _validate3[0],\n nextInfos = _validate3[1];\n\n return {\n errors: _extends({}, prevValidationResults.errors, nextErrors),\n infos: _extends({}, prevValidationResults.infos, nextInfos)\n };\n });\n }, [touched, validateOn, value]); // There are three basic patterns of handling form input value state:\n //\n // 1 - form controlled\n //\n // In this model, the caller sets `value` and `onChange` properties\n // on the Form component to supply the values used by the input fields.\n // In useFormContext(), componentValue would be undefined and formValue\n // is be set to whatever the form state has. Whenever the form state\n // changes, we update the contextValue so the input component will use\n // that. When the input component changes, we will call update() to\n // update the form state.\n //\n // 2 - input controlled\n //\n // In this model, the caller sets `value` and `onChange` properties\n // on the input components, like TextInput, to supply the value for it.\n // In useFormContext(), componentValue is this value and we ensure to\n // update the form state, via update(), and set the contextValue from\n // the componentValue. When the input component changes, we will\n // call update() to update the form state.\n //\n // 3 - uncontrolled\n //\n // In this model, the caller doesn't set a `value` or `onChange` property\n // at either the form or input component levels.\n // In useFormContext(), componentValue is undefined and valueProp is\n // undefined and nothing much happens here. That is, unless the\n // calling component needs to know the state in order to work, such\n // as CheckBox or Select. In this case, those components supply\n // an initialValue, which will trigger updating the contextValue so\n // they can have access to it.\n //\n\n var useFormInput = function useFormInput(name, componentValue, initialValue) {\n var _useState5 = useState(initialValue),\n inputValue = _useState5[0],\n setInputValue = _useState5[1];\n\n var formValue = name ? value[name] : undefined; // This effect is for pattern #2, where the controlled input\n // component is driving the value via componentValue.\n\n useEffect(function () {\n if (name && // we have somewhere to put this\n componentValue !== undefined && // input driving\n componentValue !== formValue // don't already have it\n ) {\n setValueState(function (prevValue) {\n var nextValue = _extends({}, prevValue);\n\n nextValue[name] = componentValue;\n return nextValue;\n }); // don't onChange on programmatic changes\n }\n }, [componentValue, formValue, name]);\n var useValue;\n if (componentValue !== undefined) // input component drives, pattern #2\n useValue = componentValue;else if (valueProp && name && formValue !== undefined) // form drives, pattern #1\n useValue = formValue;else if (formValue === undefined && name) // form has reset, so reset input value as well\n useValue = initialValue;else useValue = inputValue;\n return [useValue, function (nextComponentValue) {\n if (name) {\n // we have somewhere to put this\n var nextTouched = _extends({}, touched);\n\n nextTouched[name] = true;\n\n if (!touched[name]) {\n // don't update if not needed\n setTouched(nextTouched);\n }\n\n var nextValue = _extends({}, value);\n\n nextValue[name] = nextComponentValue;\n setValueState(nextValue);\n if (onChange) onChange(nextValue, {\n touched: nextTouched\n });\n }\n\n if (initialValue !== undefined) setInputValue(nextComponentValue);\n }];\n };\n\n var useFormField = function useFormField(_ref6) {\n var errorArg = _ref6.error,\n infoArg = _ref6.info,\n name = _ref6.name,\n required = _ref6.required,\n validateArg = _ref6.validate;\n var error = errorArg || validationResults.errors[name];\n var info = infoArg || validationResults.infos[name];\n useEffect(function () {\n var validateSingle = function validateSingle(aValidate, value2, data) {\n var result;\n\n if (typeof aValidate === 'function') {\n result = aValidate(value2, data);\n } else if (aValidate.regexp) {\n if (!aValidate.regexp.test(value2)) {\n result = aValidate.message || messages.invalid;\n\n if (aValidate.status) {\n result = {\n message: result,\n status: aValidate.status\n };\n }\n }\n }\n\n return result;\n };\n\n var validateField = function validateField(value2, data) {\n var result;\n\n if (required && ( // false is for CheckBox\n value2 === undefined || value2 === '' || value2 === false)) {\n result = messages.required;\n } else if (validateArg) {\n if (Array.isArray(validateArg)) {\n validateArg.some(function (aValidate) {\n result = validateSingle(aValidate, value2, data);\n return !!result;\n });\n } else {\n result = validateSingle(validateArg, value2, data);\n }\n }\n\n return result;\n };\n\n var index = requiredFields.current.indexOf(name);\n\n if (required) {\n if (index === -1) requiredFields.current.push(name);\n } else if (index !== -1) requiredFields.current.splice(index, 1);\n\n if (validateArg || required) {\n validations.current[name] = validateField;\n return function () {\n return delete validations.current[name];\n };\n }\n\n return undefined;\n }, [error, name, required, validateArg]);\n return {\n error: error,\n info: info,\n inForm: true,\n onBlur: validateOn === 'blur' ? function () {\n return setPendingValidation(pendingValidation ? [].concat(pendingValidation, [name]) : [name]);\n } : undefined,\n onChange: validateOn === 'change' ? function () {\n return setPendingValidation(pendingValidation ? [].concat(pendingValidation, [name]) : [name]);\n } : undefined\n };\n };\n\n return /*#__PURE__*/React.createElement(\"form\", _extends({\n ref: ref\n }, rest, {\n onReset: function onReset(event) {\n setPendingValidation(undefined);\n\n if (!valueProp) {\n setValueState(defaultValue);\n if (onChange) onChange(defaultValue, {\n touched: defaultTouched\n });\n }\n\n setTouched(defaultTouched);\n setValidationResults(defaultValidationResults);\n\n if (_onReset) {\n event.persist(); // extract from React's synthetic event pool\n\n var adjustedEvent = event;\n adjustedEvent.value = defaultValue;\n\n _onReset(adjustedEvent);\n }\n },\n onSubmit: function onSubmit(event) {\n // Don't submit the form via browser form action. We don't want it\n // if the validation fails. And, we assume a javascript action handler\n // otherwise.\n event.preventDefault();\n setPendingValidation(undefined);\n\n var _validate4 = validate(Object.entries(validations.current), value, true),\n nextErrors = _validate4[0],\n nextInfos = _validate4[1];\n\n setValidationResults(function () {\n var nextValidationResults = {\n errors: nextErrors,\n infos: nextInfos,\n // Show form's validity when clicking on Submit\n valid: buildValid(nextErrors)\n };\n if (onValidate) onValidate(nextValidationResults);\n return nextValidationResults;\n });\n\n if (Object.keys(nextErrors).length === 0 && _onSubmit) {\n event.persist(); // extract from React's synthetic event pool\n\n var adjustedEvent = event;\n adjustedEvent.value = value;\n adjustedEvent.touched = touched;\n\n _onSubmit(adjustedEvent);\n }\n }\n }), /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: {\n useFormField: useFormField,\n useFormInput: useFormInput\n }\n }, children));\n});\nForm.displayName = 'Form';\nvar FormDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n FormDoc = require('./doc').doc(Form); // eslint-disable-line global-require\n}\n\nvar FormWrapper = FormDoc || Form;\nexport { FormWrapper as Form };","import styled, { css } from 'styled-components';\nimport { borderStyle, edgeStyle, genericStyles } from '../../utils';\nimport { defaultProps } from '../../default-props';\n\nvar fillStyle = function fillStyle(fill) {\n if (!fill) {\n return fill;\n }\n\n if (fill === 'horizontal') {\n return 'width: 100%;';\n }\n\n if (fill === 'vertical') {\n return 'height: 100%;';\n }\n\n return \"\\n width: 100%;\\n height: 100%;\\n \";\n};\n\nvar ALIGN_MAP = {\n center: 'center',\n end: 'flex-end',\n start: 'flex-start',\n stretch: 'stretch'\n};\nvar alignStyle = css([\"align-items:\", \";\"], function (props) {\n return ALIGN_MAP[props.align];\n});\nvar ALIGN_CONTENT_MAP = {\n around: 'space-around',\n between: 'space-between',\n center: 'center',\n end: 'flex-end',\n start: 'flex-start',\n stretch: 'stretch'\n};\nvar alignContentStyle = css([\"align-content:\", \";\"], function (props) {\n return ALIGN_CONTENT_MAP[props.alignContent];\n});\nvar JUSTIFY_MAP = {\n center: 'center',\n end: 'flex-end',\n start: 'flex-start',\n stretch: 'stretch'\n};\nvar justifyStyle = css([\"justify-items:\", \";\"], function (props) {\n return JUSTIFY_MAP[props.justify];\n});\nvar JUSTIFY_CONTENT_MAP = {\n around: 'space-around',\n between: 'space-between',\n center: 'center',\n end: 'flex-end',\n start: 'flex-start',\n stretch: 'stretch'\n};\nvar justifyContentStyle = css([\"justify-content:\", \";\"], function (props) {\n return JUSTIFY_CONTENT_MAP[props.justifyContent];\n});\n\nvar gapStyle = function gapStyle(props) {\n if (typeof props.gap === 'string') {\n var gapSize = props.theme.global.edgeSize[props.gap] || props.gap;\n return \"grid-gap: \" + gapSize + \" \" + gapSize + \";\";\n }\n\n if (props.gap.row && props.gap.column) {\n return \"\\n grid-row-gap: \" + (props.theme.global.edgeSize[props.gap.row] || props.gap.row) + \";\\n grid-column-gap: \" + (props.theme.global.edgeSize[props.gap.column] || props.gap.column) + \";\\n \";\n }\n\n if (props.gap.row) {\n return \"\\n grid-row-gap: \" + (props.theme.global.edgeSize[props.gap.row] || props.gap.row) + \";\\n \";\n }\n\n if (props.gap.column) {\n return \"\\n grid-column-gap: \" + (props.theme.global.edgeSize[props.gap.column] || props.gap.column) + \";\\n \";\n }\n\n return '';\n};\n\nvar SIZE_MAP = {\n flex: '1fr',\n full: '100%',\n '1/2': '50%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/3': '33.33%',\n '2/3': '66.66%'\n};\n\nvar getRepeatCount = function getRepeatCount(count) {\n return typeof count === 'number' ? count : \"auto-\" + count;\n};\n\nvar getRepeatSize = function getRepeatSize(size, theme) {\n if (size === 'flex') return '1fr';\n var min;\n var max;\n\n if (Array.isArray(size)) {\n min = theme.global.size[size[0]] || size[0];\n max = theme.global.size[size[1]] || size[1];\n } else {\n min = theme.global.size[size] || size;\n max = '1fr';\n }\n\n if (min.search(/\\d/) !== -1) {\n min = \"min(\" + min + \", 100%)\";\n }\n\n return \"minmax(\" + min + \", \" + max + \")\";\n};\n\nvar sizeFor = function sizeFor(size, props, isRow) {\n var mapped = SIZE_MAP[size];\n\n if (isRow && mapped && (!props.fillContainer || props.fillContainer === 'horizontal')) {\n console.warn('Grid needs `fill` when using fractional row sizes');\n }\n\n return mapped || props.theme.global.size[size] || size;\n};\n\nvar columnsStyle = function columnsStyle(props) {\n if (Array.isArray(props.columns)) {\n return css([\"grid-template-columns:\", \";\"], props.columns.map(function (s) {\n if (Array.isArray(s)) {\n return \"minmax(\" + sizeFor(s[0], props) + \", \" + sizeFor(s[1], props) + \")\";\n }\n\n return sizeFor(s, props);\n }).join(' '));\n }\n\n if (typeof props.columns === 'object') {\n return css([\"grid-template-columns:repeat( \", \",\", \" );\"], getRepeatCount(props.columns.count), getRepeatSize(props.columns.size, props.theme));\n }\n\n return css([\"grid-template-columns:repeat( auto-fill,\", \" );\"], getRepeatSize(props.columns, props.theme));\n};\n\nvar rowsStyle = function rowsStyle(props) {\n if (Array.isArray(props.rowsProp)) {\n return css([\"grid-template-rows:\", \";\"], props.rowsProp.map(function (s) {\n if (Array.isArray(s)) {\n return \"minmax(\" + sizeFor(s[0], props, true) + \", \" + sizeFor(s[1], props, true) + \")\";\n }\n\n return sizeFor(s, props, true);\n }).join(' '));\n }\n\n return css([\"grid-auto-rows:\", \";\"], props.theme.global.size[props.rowsProp]);\n};\n\nvar areasStyle = function areasStyle(props) {\n // translate areas objects into grid-template-areas syntax\n if (!Array.isArray(props.rowsProp) || !Array.isArray(props.columns)) {\n console.warn('Grid `areas` requires `rows` and `columns` to be arrays.');\n }\n\n if (Array.isArray(props.areas) && props.areas.every(function (area) {\n return Array.isArray(area);\n })) {\n return \"grid-template-areas: \" + props.areas.map(function (area) {\n return \"\\\"\" + area.join(' ') + \"\\\"\";\n }).join(' ') + \";\";\n }\n\n var cells = props.rowsProp.map(function () {\n return props.columns.map(function () {\n return '.';\n });\n });\n props.areas.forEach(function (area) {\n for (var row = area.start[1]; row <= area.end[1]; row += 1) {\n for (var column = area.start[0]; column <= area.end[0]; column += 1) {\n cells[row][column] = area.name;\n }\n }\n });\n return \"grid-template-areas: \" + cells.map(function (r) {\n return \"\\\"\" + r.join(' ') + \"\\\"\";\n }).join(' ') + \";\";\n};\n\nvar StyledGrid = styled.div.attrs(function (props) {\n return {\n 'aria-label': props.a11yTitleProp\n };\n}).withConfig({\n displayName: \"StyledGrid\",\n componentId: \"sc-1wofa1l-0\"\n})([\"display:grid;box-sizing:border-box;\", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \"\"], genericStyles, function (props) {\n return props.border && (Array.isArray(props.border) ? props.border.map(function (border) {\n return borderStyle(border, props.responsive, props.theme);\n }) : borderStyle(props.border, props.responsive, props.theme));\n}, function (props) {\n return fillStyle(props.fillContainer);\n}, function (props) {\n return props.align && alignStyle;\n}, function (props) {\n return props.alignContent && alignContentStyle;\n}, function (props) {\n return props.areas && areasStyle(props);\n}, function (props) {\n return props.columns && columnsStyle(props);\n}, function (props) {\n return props.gap && gapStyle(props);\n}, function (props) {\n return props.justify && justifyStyle;\n}, function (props) {\n return props.justifyContent && justifyContentStyle;\n}, function (props) {\n return props.pad && edgeStyle('padding', props.pad, props.responsive, props.theme.global.edgeSize.responsiveBreakpoint, props.theme);\n}, function (props) {\n return props.rowsProp && rowsStyle(props);\n}, function (props) {\n return props.theme.grid && props.theme.grid.extend;\n});\nStyledGrid.defaultProps = {};\nObject.setPrototypeOf(StyledGrid.defaultProps, defaultProps);\nexport { StyledGrid };","function _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 _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\nimport React, { forwardRef } from 'react';\nimport { StyledGrid } from './StyledGrid';\nvar Grid = /*#__PURE__*/forwardRef(function (props, ref) {\n var a11yTitle = props.a11yTitle,\n border = props.border,\n fill = props.fill,\n _props$responsive = props.responsive,\n responsive = _props$responsive === void 0 ? true : _props$responsive,\n rows = props.rows,\n tag = props.tag,\n as = props.as,\n rest = _objectWithoutPropertiesLoose(props, [\"a11yTitle\", \"border\", \"fill\", \"responsive\", \"rows\", \"tag\", \"as\"]);\n\n return /*#__PURE__*/React.createElement(StyledGrid, _extends({\n ref: ref,\n a11yTitleProp: a11yTitle,\n as: !as && tag ? tag : as,\n border: border,\n fillContainer: fill,\n responsive: responsive,\n rowsProp: rows\n }, rest));\n});\nGrid.displayName = 'Grid';\nvar GridDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n GridDoc = require('./doc').doc(Grid); // eslint-disable-line global-require\n}\n\nvar GridWrapper = GridDoc || Grid;\nGridWrapper.available = typeof window !== 'undefined' && window.CSS && window.CSS.supports && window.CSS.supports('display', 'grid');\nexport { GridWrapper as Grid };","import styled, { css } from 'styled-components';\nimport { edgeStyle, focusStyle, normalizeColor } from '../../utils';\nimport { defaultProps } from '../../default-props'; // Note: since `fillStyle` is only used in one place, `justify-content` was\n// added to it to simplify its logic. If this is ever reused somewhere else,\n// consider the need of separating those once again.\n\nvar fillStyle = function fillStyle() {\n return \"\\n width: 100%;\\n height: 100%;\\n max-width: none;\\n flex: 1 0 auto;\\n justify-content: space-between;\\n \";\n};\n\nvar disabledStyle = \"\\n opacity: 0.5;\\n cursor: default;\\n\";\nvar hoverStyle = css([\":hover input:not([disabled]) + div,:hover input:not([disabled]) + span{border-color:\", \";}\"], function (props) {\n return normalizeColor(props.theme.checkBox.hover.border.color, props.theme);\n});\nvar StyledCheckBoxIcon = styled.svg.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxIcon\",\n componentId: \"sc-1dbk5ju-0\"\n})([\"box-sizing:border-box;stroke-width:\", \";stroke:\", \";width:\", \";height:\", \";\", \";\"], function (props) {\n return props.theme.checkBox.check.thickness;\n}, function (props) {\n return normalizeColor(props.theme.checkBox.color || 'control', props.theme);\n}, function (props) {\n return props.theme.checkBox.icon.size || props.theme.checkBox.size;\n}, function (props) {\n return props.theme.checkBox.icon.size || props.theme.checkBox.size;\n}, function (props) {\n return props.theme.checkBox.icon.extend;\n});\nStyledCheckBoxIcon.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxIcon.defaultProps, defaultProps);\nvar StyledCheckBoxContainer = styled.label.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxContainer\",\n componentId: \"sc-1dbk5ju-1\"\n})([\"display:flex;flex-direction:row;align-items:center;user-select:none;\", \" \", \" \", \" \", \" \", \" \", \"\"], function (props) {\n return props.fillProp ? fillStyle() : 'width: fit-content;';\n}, function (props) {\n return (props.pad || props.theme.checkBox.pad) && edgeStyle('padding', props.pad || props.theme.checkBox.pad, props.responsive, props.theme.box.responsiveBreakpoint, props.theme);\n}, function (props) {\n return props.disabled && disabledStyle;\n}, function (props) {\n return !props.disabled && 'cursor: pointer;';\n}, function (props) {\n return props.theme.checkBox.hover.border.color && hoverStyle;\n}, function (props) {\n return props.theme.checkBox.extend;\n});\nStyledCheckBoxContainer.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxContainer.defaultProps, defaultProps);\nvar StyledCheckBoxInput = styled.input.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxInput\",\n componentId: \"sc-1dbk5ju-2\"\n})([\"opacity:0;-moz-appearance:none;width:0;height:0;margin:0;\", \":checked + span > span{left:calc( \", \" - \", \" );background:\", \";}\"], function (props) {\n return !props.disabled && 'cursor: pointer;';\n}, function (props) {\n return props.theme.checkBox.toggle.size;\n}, function (props) {\n return props.theme.checkBox.size;\n}, function (props) {\n return normalizeColor(props.theme.checkBox.color || 'control', props.theme);\n});\nStyledCheckBoxInput.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxInput.defaultProps, defaultProps);\nvar StyledCheckBoxBox = styled.div.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxBox\",\n componentId: \"sc-1dbk5ju-3\"\n})([\"\", \";\", \";\"], function (props) {\n return props.focus && focusStyle();\n}, function (props) {\n return props.theme.checkBox.check.extend;\n});\nStyledCheckBoxBox.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxBox.defaultProps, defaultProps);\nvar StyledCheckBoxToggle = styled.span.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxToggle\",\n componentId: \"sc-1dbk5ju-4\"\n})([\"box-sizing:border-box;vertical-align:middle;display:inline-block;width:\", \";height:\", \";border:\", \" solid;border-color:\", \";border-radius:\", \";background-color:\", \";\", \";\", \";\"], function (props) {\n return props.theme.checkBox.toggle.size;\n}, function (props) {\n return props.theme.checkBox.size;\n}, function (props) {\n return props.theme.checkBox.border.width;\n}, function (props) {\n return normalizeColor(props.theme.checkBox.border.color, props.theme);\n}, function (props) {\n return props.theme.checkBox.toggle.radius;\n}, function (props) {\n return props.theme.checkBox.toggle.background ? normalizeColor(props.theme.checkBox.toggle.background, props.theme) : 'transparent';\n}, function (props) {\n return props.focus && focusStyle();\n}, function (props) {\n return props.theme.checkBox.toggle.extend;\n});\nStyledCheckBoxToggle.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxToggle.defaultProps, defaultProps);\nvar StyledCheckBoxKnob = styled.span.withConfig({\n displayName: \"StyledCheckBox__StyledCheckBoxKnob\",\n componentId: \"sc-1dbk5ju-5\"\n})([\"box-sizing:border-box;position:relative;display:inherit;top:-\", \";left:-\", \";transition:all 0.3s;width:\", \";height:\", \";background:\", \";border-radius:\", \";\", \";\"], function (props) {\n return props.theme.checkBox.border.width;\n}, function (props) {\n return props.theme.checkBox.border.width;\n}, function (props) {\n return props.theme.checkBox.size;\n}, function (props) {\n return props.theme.checkBox.size;\n}, function (props) {\n return normalizeColor(props.theme.checkBox.toggle.color[props.theme.dark ? 'dark' : 'light'], props.theme);\n}, function (props) {\n return props.theme.checkBox.toggle.radius;\n}, function (props) {\n return props.theme.checkBox.toggle.knob.extend;\n});\nStyledCheckBoxKnob.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxKnob.defaultProps, defaultProps);\nvar StyledCheckBox = styled.div.withConfig({\n displayName: \"StyledCheckBox\",\n componentId: \"sc-1dbk5ju-6\"\n})([\"flex-shrink:0;\"]);\nStyledCheckBox.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBox.defaultProps, defaultProps);\nexport { StyledCheckBoxIcon, StyledCheckBoxContainer, StyledCheckBoxInput, StyledCheckBoxBox, StyledCheckBoxToggle, StyledCheckBoxKnob, StyledCheckBox };","function _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 _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\nimport React, { forwardRef, useContext, useEffect, useState } from 'react';\nimport { ThemeContext } from 'styled-components';\nimport { removeUndefined } from '../../utils/object';\nimport { defaultProps } from '../../default-props';\nimport { Box } from '../Box';\nimport { FormContext } from '../Form/FormContext';\nimport { StyledCheckBox, StyledCheckBoxBox, StyledCheckBoxIcon, StyledCheckBoxContainer, StyledCheckBoxInput, StyledCheckBoxToggle, StyledCheckBoxKnob } from './StyledCheckBox';\nimport { normalizeColor } from '../../utils';\n\nvar stopLabelClick = function stopLabelClick(event) {\n // prevents clicking on the label trigging the event twice\n // https://stackoverflow.com/questions/24501497/why-the-onclick-element-will-trigger-twice-for-label-element\n if (event.target.type !== 'checkbox') {\n event.stopPropagation();\n }\n};\n\nvar CheckBox = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref2;\n\n var a11yTitle = _ref.a11yTitle,\n checkedProp = _ref.checked,\n _ref$defaultChecked = _ref.defaultChecked,\n defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,\n disabled = _ref.disabled,\n fill = _ref.fill,\n focusProp = _ref.focus,\n id = _ref.id,\n label = _ref.label,\n name = _ref.name,\n _onBlur = _ref.onBlur,\n _onChange = _ref.onChange,\n _onFocus = _ref.onFocus,\n _onMouseEnter = _ref.onMouseEnter,\n _onMouseLeave = _ref.onMouseLeave,\n _onMouseOut = _ref.onMouseOut,\n _onMouseOver = _ref.onMouseOver,\n pad = _ref.pad,\n reverse = _ref.reverse,\n toggle = _ref.toggle,\n indeterminate = _ref.indeterminate,\n rest = _objectWithoutPropertiesLoose(_ref, [\"a11yTitle\", \"checked\", \"defaultChecked\", \"disabled\", \"fill\", \"focus\", \"id\", \"label\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseOut\", \"onMouseOver\", \"pad\", \"reverse\", \"toggle\", \"indeterminate\"]);\n\n var theme = useContext(ThemeContext) || defaultProps.theme;\n var formContext = useContext(FormContext);\n\n var _formContext$useFormI = formContext.useFormInput(name, checkedProp, defaultChecked),\n checked = _formContext$useFormI[0],\n setChecked = _formContext$useFormI[1];\n\n var _useState = useState(focusProp),\n focus = _useState[0],\n setFocus = _useState[1];\n\n useEffect(function () {\n return setFocus(focusProp);\n }, [focusProp]);\n useEffect(function () {\n if (checkedProp && indeterminate) {\n console.warn('Checkbox cannot be \"checked\" and \"indeterminate\" at the same time.');\n }\n\n if (toggle && indeterminate) {\n console.warn('Checkbox of type toggle does not have \"indeterminate\" state.');\n }\n }, [checkedProp, toggle, indeterminate]);\n var themeableProps = {\n checked: checked,\n disabled: disabled,\n focus: focus,\n reverse: reverse,\n toggle: toggle,\n indeterminate: indeterminate\n };\n var hidden;\n\n if (disabled && checked) {\n hidden = /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: \"true\"\n });\n }\n\n var _theme$checkBox$icons = theme.checkBox.icons,\n CheckedIcon = _theme$checkBox$icons.checked,\n IndeterminateIcon = _theme$checkBox$icons.indeterminate;\n var borderColor = normalizeColor(theme.checkBox.border.color, theme);\n\n if (checked) {\n borderColor = normalizeColor(theme.checkBox.color || 'control', theme);\n }\n\n var visual = toggle ? /*#__PURE__*/React.createElement(StyledCheckBoxToggle, themeableProps, /*#__PURE__*/React.createElement(StyledCheckBoxKnob, themeableProps)) : /*#__PURE__*/React.createElement(StyledCheckBoxBox, _extends({\n as: Box,\n align: \"center\",\n justify: \"center\",\n width: theme.checkBox.size,\n height: theme.checkBox.size,\n border: {\n size: theme.checkBox.border.width,\n color: borderColor\n },\n round: theme.checkBox.check.radius\n }, themeableProps), !indeterminate && checked && (CheckedIcon ? /*#__PURE__*/React.createElement(CheckedIcon, {\n theme: theme,\n as: StyledCheckBoxIcon\n }) : /*#__PURE__*/React.createElement(StyledCheckBoxIcon, _extends({\n theme: theme,\n viewBox: \"0 0 24 24\",\n preserveAspectRatio: \"xMidYMid meet\"\n }, themeableProps), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M6,11.3 L10.3,16 L18,6.2\"\n }))), !checked && indeterminate && (IndeterminateIcon ? /*#__PURE__*/React.createElement(IndeterminateIcon, {\n theme: theme,\n as: StyledCheckBoxIcon\n }) : /*#__PURE__*/React.createElement(StyledCheckBoxIcon, _extends({\n theme: theme,\n viewBox: \"0 0 24 24\",\n preserveAspectRatio: \"xMidYMid meet\"\n }, themeableProps), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M6,12 L18,12\"\n }))));\n var side = reverse ? 'left' : 'right';\n var checkBoxNode = /*#__PURE__*/React.createElement(StyledCheckBox, _extends({\n as: Box,\n align: \"center\",\n justify: \"center\",\n margin: label && (_ref2 = {}, _ref2[side] = theme.checkBox.gap || 'small', _ref2)\n }, themeableProps), /*#__PURE__*/React.createElement(StyledCheckBoxInput, _extends({}, rest, {\n ref: ref,\n type: \"checkbox\"\n }, removeUndefined({\n id: id,\n name: name,\n checked: checked,\n disabled: disabled\n }), themeableProps, {\n onFocus: function onFocus(event) {\n setFocus(true);\n if (_onFocus) _onFocus(event);\n },\n onBlur: function onBlur(event) {\n setFocus(false);\n if (_onBlur) _onBlur(event);\n },\n onChange: function onChange(event) {\n setChecked(event.target.checked);\n if (_onChange) _onChange(event);\n }\n })), visual, hidden);\n var normalizedLabel = typeof label === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, label) : label;\n var first = reverse ? normalizedLabel : checkBoxNode;\n var second = reverse ? checkBoxNode : normalizedLabel;\n return /*#__PURE__*/React.createElement(StyledCheckBoxContainer, _extends({\n \"aria-label\": a11yTitle,\n fillProp: fill,\n reverse: reverse\n }, removeUndefined({\n htmlFor: id,\n disabled: disabled\n }), {\n checked: checked,\n onClick: stopLabelClick,\n pad: pad,\n onMouseEnter: function onMouseEnter(event) {\n return _onMouseEnter == null ? void 0 : _onMouseEnter(event);\n },\n onMouseOver: function onMouseOver(event) {\n return _onMouseOver == null ? void 0 : _onMouseOver(event);\n },\n onMouseLeave: function onMouseLeave(event) {\n return _onMouseLeave == null ? void 0 : _onMouseLeave(event);\n },\n onMouseOut: function onMouseOut(event) {\n return _onMouseOut == null ? void 0 : _onMouseOut(event);\n }\n }, themeableProps), first, second);\n});\nCheckBox.displayName = 'CheckBox';\nvar CheckBoxDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n CheckBoxDoc = require('./doc').doc(CheckBox);\n}\n\nvar CheckBoxWrapper = CheckBoxDoc || CheckBox;\nexport { CheckBoxWrapper as CheckBox };","import styled from 'styled-components';\nimport { Box } from '../Box';\nimport { defaultProps } from '../../default-props';\nvar StyledCheckBoxGroup = styled(Box).withConfig({\n displayName: \"StyledCheckBoxGroup\",\n componentId: \"sc-2nhc5d-0\"\n})([\"\", \"\"], function (props) {\n return props.theme.checkBoxGroup && props.theme.checkBoxGroup.container && props.theme.checkBoxGroup.container.extend;\n});\nStyledCheckBoxGroup.defaultProps = {};\nObject.setPrototypeOf(StyledCheckBoxGroup.defaultProps, defaultProps);\nexport { StyledCheckBoxGroup };","function _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 _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\nimport React, { forwardRef, useContext } from 'react';\nimport { ThemeContext } from 'styled-components';\nimport { CheckBox } from '../CheckBox';\nimport { FormContext } from '../Form/FormContext';\nimport { StyledCheckBoxGroup } from './StyledCheckBoxGroup';\nexport var CheckBoxGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var valueProp = _ref.value,\n disabledProp = _ref.disabled,\n gap = _ref.gap,\n labelKey = _ref.labelKey,\n valueKey = _ref.valueKey,\n onChange = _ref.onChange,\n optionsProp = _ref.options,\n name = _ref.name,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"disabled\", \"gap\", \"labelKey\", \"valueKey\", \"onChange\", \"options\", \"name\"]);\n\n var formContext = useContext(FormContext);\n var theme = useContext(ThemeContext) || defaultProps.theme; // In case option is a string, normalize it to be an object\n\n var options = optionsProp.map(function (option) {\n return typeof option === 'string' ? {\n disabled: disabledProp,\n value: option,\n label: option\n } : option;\n }); // 'value' is an array of checked valueKeys\n\n var _formContext$useFormI = formContext.useFormInput(name, valueProp, []),\n value = _formContext$useFormI[0],\n setValue = _formContext$useFormI[1]; // Logic is necessary to maintain a proper data structure for Form logic\n\n\n var onCheckBoxChange = function onCheckBoxChange(event, optionValue, option) {\n // deep copy of value\n var nextValue = JSON.parse(JSON.stringify(value)) || [];\n var optionIndex = nextValue.indexOf(optionValue); // If the value option isn't in the array, add it.\n // Otherwise, remove it.\n\n if (optionIndex < 0) nextValue.push(optionValue);else nextValue.splice(optionIndex, 1);\n setValue(nextValue); // Similar functionality to Select onChange()\n\n if (onChange) {\n event.persist(); // extract from React synthetic event pool\n\n var adjustedEvent = event;\n adjustedEvent.value = nextValue;\n adjustedEvent.option = option;\n onChange(adjustedEvent);\n }\n };\n\n return /*#__PURE__*/React.createElement(StyledCheckBoxGroup, _extends({\n ref: ref\n }, theme.checkBoxGroup.container, {\n gap: gap || (theme.checkBoxGroup.container && theme.checkBoxGroup.container.gap ? theme.checkBoxGroup.container.gap : 'small') // consistent with RadioButtonGroup default\n\n }, rest), options.map(function (option) {\n var optionValue = option.value;\n var label = labelKey ? option[labelKey] : option.label;\n var valueOption = valueKey ? option[valueKey] : optionValue;\n var checked = value.indexOf(valueOption) >= 0;\n var disabled = disabledProp || option.disabled;\n var key = label + \"-\" + valueOption;\n if (option.checked) console.warn( // eslint-disable-next-line max-len\n \"'checked' prop of an individual CheckBox shouldn't be used in a CheckBoxGroup component. Use the CheckBoxGroup 'value' prop instead.\"); // value shouldn't propagate the input field and the onChange option\n\n var omit = option.value,\n optionRest = _objectWithoutPropertiesLoose(option, [\"value\"]);\n\n var optionProps = _extends({}, optionRest, {\n label: label,\n disabled: disabled\n });\n\n return /*#__PURE__*/React.createElement(CheckBox, _extends({\n key: key\n }, optionProps, {\n disabled: disabled,\n checked: checked,\n label: label,\n onChange: function onChange(event) {\n return onCheckBoxChange(event, valueOption, optionProps);\n }\n }));\n }));\n});\nCheckBoxGroup.displayName = 'CheckBoxGroup';\nvar CheckBoxGroupDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n CheckBoxGroupDoc = require('./doc').doc(CheckBoxGroup);\n}\n\nvar RadioButtonGroupWrapper = CheckBoxGroupDoc || CheckBoxGroup;\nexport { RadioButtonGroupWrapper as RadioButtonGroup };","import styled, { css } from 'styled-components';\nimport { focusStyle, normalizeColor } from '../../utils';\nimport { defaultProps } from '../../default-props';\nvar disabledStyle = \"\\n opacity: 0.5;\\n cursor: default;\\n\";\nvar StyledRadioButtonContainer = styled.label.withConfig({\n displayName: \"StyledRadioButton__StyledRadioButtonContainer\",\n componentId: \"g1f6ld-0\"\n})([\"display:flex;flex-direction:row;align-items:center;user-select:none;width:fit-content;\", \" \", \":hover input:not([disabled]) + div,:hover input:not([disabled]) + span{border-color:\", \";}:hover{background-color:\", \";}\", \";\"], function (props) {\n return props.disabled && disabledStyle;\n}, function (props) {\n return !props.disabled && 'cursor: pointer;';\n}, function (props) {\n return normalizeColor(props.theme.radioButton.hover.border.color, props.theme);\n}, function (props) {\n return normalizeColor(!props.disabled && props.theme.radioButton.hover && props.theme.radioButton.hover.background && props.theme.radioButton.hover.background.color, props.theme);\n}, function (props) {\n return props.theme.radioButton.container.extend;\n});\nStyledRadioButtonContainer.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButtonContainer.defaultProps, defaultProps);\nvar StyledRadioButtonInput = styled.input.withConfig({\n displayName: \"StyledRadioButton__StyledRadioButtonInput\",\n componentId: \"g1f6ld-1\"\n})([\"opacity:0;-moz-appearance:none;width:0;height:0;margin:0;\", \";\"], function (props) {\n return !props.disabled && 'cursor: pointer;';\n});\nStyledRadioButtonInput.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButtonInput.defaultProps, defaultProps);\nvar StyledRadioButtonLabel = styled.span.withConfig({\n displayName: \"StyledRadioButton__StyledRadioButtonLabel\",\n componentId: \"g1f6ld-2\"\n})([\"\", \"\"], function (props) {\n return props.theme.radioButton.font.weight && css([\"font-weight:\", \";\"], props.theme.radioButton.font.weight);\n});\nStyledRadioButtonLabel.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButtonLabel.defaultProps, defaultProps);\nvar StyledRadioButtonIcon = styled.svg.withConfig({\n displayName: \"StyledRadioButton__StyledRadioButtonIcon\",\n componentId: \"g1f6ld-3\"\n})([\"box-sizing:border-box;width:\", \";height:\", \";fill:\", \";\", \";\"], function (props) {\n return props.theme.radioButton.icon.size || props.theme.radioButton.size;\n}, function (props) {\n return props.theme.radioButton.icon.size || props.theme.radioButton.size;\n}, function (props) {\n return normalizeColor(props.theme.radioButton.check.color || 'control', props.theme);\n}, function (props) {\n return props.theme.radioButton.icon.extend;\n});\nStyledRadioButtonIcon.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButtonIcon.defaultProps, defaultProps);\nvar StyledRadioButtonBox = styled.div.withConfig({\n displayName: \"StyledRadioButton__StyledRadioButtonBox\",\n componentId: \"g1f6ld-4\"\n})([\"background-color:\", \";\", \";\", \";\"], function (props) {\n return props.theme.radioButton.check.background && props.theme.radioButton.check.background.color;\n}, function (props) {\n return props.focus && focusStyle();\n}, function (props) {\n return props.theme.radioButton.check.extend;\n});\nStyledRadioButtonBox.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButtonBox.defaultProps, defaultProps);\nvar StyledRadioButton = styled.div.withConfig({\n displayName: \"StyledRadioButton\",\n componentId: \"g1f6ld-5\"\n})([\"\", \";\"], function (props) {\n return props.theme.radioButton && props.theme.radioButton.extend;\n});\nStyledRadioButton.defaultProps = {};\nObject.setPrototypeOf(StyledRadioButton.defaultProps, defaultProps);\nexport { StyledRadioButtonContainer, StyledRadioButtonInput, StyledRadioButtonLabel, StyledRadioButtonIcon, StyledRadioButtonBox, StyledRadioButton };","function _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 _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\nimport React, { forwardRef, useContext, useState } from 'react';\nimport { ThemeContext } from 'styled-components';\nimport { Box } from '../Box';\nimport { defaultProps } from '../../default-props';\nimport { normalizeColor, removeUndefined } from '../../utils';\nimport { StyledRadioButton, StyledRadioButtonContainer, StyledRadioButtonIcon, StyledRadioButtonInput, StyledRadioButtonLabel, StyledRadioButtonBox } from './StyledRadioButton';\nvar RadioButton = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var a11yTitle = _ref.a11yTitle,\n checked = _ref.checked,\n children = _ref.children,\n disabled = _ref.disabled,\n focus = _ref.focus,\n id = _ref.id,\n label = _ref.label,\n name = _ref.name,\n onChange = _ref.onChange,\n rest = _objectWithoutPropertiesLoose(_ref, [\"a11yTitle\", \"checked\", \"children\", \"disabled\", \"focus\", \"id\", \"label\", \"name\", \"onChange\"]);\n\n var theme = useContext(ThemeContext) || defaultProps.theme;\n\n var _useState = useState(),\n hover = _useState[0],\n setHover = _useState[1];\n\n var normalizedLabel = typeof label === 'string' ? /*#__PURE__*/React.createElement(StyledRadioButtonLabel, null, label) : label;\n var Icon = theme.radioButton.icons.circle;\n var borderColor = normalizeColor(theme.radioButton.border.color, theme);\n\n if (checked) {\n borderColor = normalizeColor(theme.radioButton.color || 'control', theme);\n }\n\n return /*#__PURE__*/React.createElement(StyledRadioButtonContainer, _extends({}, removeUndefined({\n htmlFor: id,\n disabled: disabled\n }), {\n onClick: function onClick(event) {\n // prevents clicking on the label trigging the event twice\n // https://stackoverflow.com/questions/24501497/why-the-onclick-element-will-trigger-twice-for-label-element\n if (event.target.type !== 'radio') {\n event.stopPropagation();\n }\n },\n onMouseEnter: function onMouseEnter() {\n return setHover(true);\n },\n onMouseLeave: function onMouseLeave() {\n return setHover(false);\n }\n }), /*#__PURE__*/React.createElement(StyledRadioButton, {\n as: Box,\n flex: false,\n margin: label ? {\n right: theme.radioButton.gap || 'small'\n } : undefined\n }, /*#__PURE__*/React.createElement(StyledRadioButtonInput, _extends({\n \"aria-label\": a11yTitle\n }, rest, {\n ref: ref,\n type: \"radio\"\n }, removeUndefined({\n id: id,\n name: name,\n checked: checked,\n disabled: disabled,\n onChange: onChange\n }))), children ? children({\n checked: checked,\n hover: hover\n }) : /*#__PURE__*/React.createElement(StyledRadioButtonBox, {\n focus: focus,\n as: Box,\n align: \"center\",\n justify: \"center\",\n width: theme.radioButton.size,\n height: theme.radioButton.size,\n border: {\n size: theme.radioButton.border.width,\n color: borderColor\n },\n round: theme.radioButton.check.radius\n }, checked && (Icon ? /*#__PURE__*/React.createElement(Icon, {\n as: StyledRadioButtonIcon\n }) : /*#__PURE__*/React.createElement(StyledRadioButtonIcon, {\n viewBox: \"0 0 24 24\",\n preserveAspectRatio: \"xMidYMid meet\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 6\n }))))), normalizedLabel);\n});\nRadioButton.displayName = 'RadioButton';\nvar RadioButtonDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n RadioButtonDoc = require('./doc').doc(RadioButton);\n}\n\nvar RadioButtonWrapper = RadioButtonDoc || RadioButton;\nexport { RadioButtonWrapper as RadioButton };","function _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 _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\nimport React, { forwardRef, useContext, useEffect, useRef, useState } from 'react';\nimport { ThemeContext } from 'styled-components';\nimport { FormContext } from '../Form/FormContext';\nimport { defaultProps } from '../../default-props';\nimport { Keyboard } from '../Keyboard';\nimport { Box } from '../Box';\nimport { RadioButton } from '../RadioButton';\nvar RadioButtonGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n defaultValue = _ref.defaultValue,\n disabled = _ref.disabled,\n name = _ref.name,\n _onChange = _ref.onChange,\n optionsProp = _ref.options,\n valueProp = _ref.value,\n gap = _ref.gap,\n rest = _objectWithoutPropertiesLoose(_ref, [\"children\", \"defaultValue\", \"disabled\", \"name\", \"onChange\", \"options\", \"value\", \"gap\"]);\n\n var formContext = useContext(FormContext);\n var theme = useContext(ThemeContext) || defaultProps.theme; // normalize options to always use an object\n\n var options = optionsProp.map(function (o) {\n return typeof o !== 'object' ? {\n disabled: disabled,\n id: rest.id ? rest.id + \"-\" + o : \"\" + o,\n // force string\n label: typeof o !== 'string' ? JSON.stringify(o) : o,\n value: o\n } : _extends({\n disabled: disabled\n }, o);\n });\n\n var _formContext$useFormI = formContext.useFormInput(name, valueProp, defaultValue || ''),\n value = _formContext$useFormI[0],\n setValue = _formContext$useFormI[1];\n\n var _useState = useState(),\n focus = _useState[0],\n setFocus = _useState[1];\n\n var optionRefs = useRef([]);\n var valueIndex = React.useMemo(function () {\n var result;\n options.some(function (option, index) {\n if (option.value === value) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }, [options, value]);\n useEffect(function () {\n if (focus && valueIndex >= 0) optionRefs.current[valueIndex].focus();\n }, [focus, valueIndex]);\n\n var onNext = function onNext() {\n if (valueIndex !== undefined && valueIndex < options.length - 1) {\n var nextIndex = valueIndex + 1;\n var nextValue = options[nextIndex].value;\n setValue(nextValue);\n if (_onChange) _onChange({\n target: {\n value: nextValue\n }\n });\n }\n };\n\n var onPrevious = function onPrevious() {\n if (valueIndex > 0) {\n var nextIndex = valueIndex - 1;\n var nextValue = options[nextIndex].value;\n setValue(nextValue);\n if (_onChange) _onChange({\n target: {\n value: nextValue\n }\n });\n }\n };\n\n var onFocus = function onFocus() {\n // Delay just a wee bit so Chrome doesn't missing turning the button on.\n // Chrome behaves differently in that focus is given to radio buttons\n // when the user selects one, unlike Safari and Firefox.\n setTimeout(function () {\n return !focus && setFocus(true);\n }, 1);\n };\n\n var onBlur = function onBlur() {\n return focus && setFocus(false);\n };\n\n return /*#__PURE__*/React.createElement(Keyboard, {\n target: \"document\",\n onUp: focus ? onPrevious : undefined,\n onDown: focus ? onNext : undefined,\n onLeft: focus ? onPrevious : undefined,\n onRight: focus ? onNext : undefined\n }, /*#__PURE__*/React.createElement(Box, _extends({\n ref: ref\n }, theme.radioButtonGroup.container, {\n gap: gap || (theme.radioButtonGroup.container && theme.radioButtonGroup.container.gap ? theme.radioButtonGroup.container.gap : 'small')\n }, rest), options.map(function (_ref2, index) {\n var optionDisabled = _ref2.disabled,\n id = _ref2.id,\n label = _ref2.label,\n optionValue = _ref2.value,\n optionRest = _objectWithoutPropertiesLoose(_ref2, [\"disabled\", \"id\", \"label\", \"value\"]);\n\n return /*#__PURE__*/React.createElement(RadioButton, _extends({\n ref: function ref(aRef) {\n optionRefs.current[index] = aRef;\n },\n key: optionValue,\n name: name,\n label: !children ? label : undefined,\n disabled: optionDisabled,\n checked: optionValue === value,\n focus: focus && (optionValue === value || value === undefined && !index),\n id: id,\n value: optionValue,\n onFocus: onFocus,\n onBlur: onBlur,\n onChange: function onChange(event) {\n setValue(optionValue);\n if (_onChange) _onChange(event);\n }\n }, optionRest), children ? function (state) {\n return children(optionsProp[index], state);\n } : null);\n })));\n});\nRadioButtonGroup.displayName = 'RadioButtonGroup';\nvar RadioButtonGroupDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n RadioButtonGroupDoc = require('./doc').doc(RadioButtonGroup);\n}\n\nvar RadioButtonGroupWrapper = RadioButtonGroupDoc || RadioButtonGroup;\nexport { RadioButtonGroupWrapper as RadioButtonGroup };","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useLayoutEffect } from '../../utils/use-isomorphic-layout-effect';\nimport { findScrollParent, findScrollParents, isNodeAfterScroll, isNodeBeforeScroll } from '../../utils';\nimport { Box } from '../Box';\n\nvar calculateLastPageBound = function calculateLastPageBound(show, step) {\n return show ? Math.floor((show + step) / step) - 1 : 0;\n};\n\nvar InfiniteScroll = function InfiniteScroll(_ref) {\n var children = _ref.children,\n _ref$items = _ref.items,\n items = _ref$items === void 0 ? [] : _ref$items,\n onMore = _ref.onMore,\n renderMarker = _ref.renderMarker,\n replace = _ref.replace,\n showProp = _ref.show,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 50 : _ref$step; // item index to be made visible initially\n\n var _useState = useState(showProp),\n show = _useState[0],\n setShow = _useState[1]; // the last page we have items for\n\n\n var lastPage = useMemo(function () {\n return Math.floor(items.length / step);\n }, [items.length, step]); // the pages we are rendering\n\n var _useState2 = useState([0, calculateLastPageBound(show, step)]),\n renderPageBounds = _useState2[0],\n setRenderPageBounds = _useState2[1]; // the heights of the pages, approximated after we render the first page\n // and then updated for pages that have rendered\n\n\n var _useState3 = useState([]),\n pageHeights = _useState3[0],\n setPageHeights = _useState3[1]; // what we're waiting for onMore to give us\n\n\n var _useState4 = useState(0),\n pendingLength = _useState4[0],\n setPendingLength = _useState4[1];\n\n var aboveMarkerRef = useRef(); // only when replacing\n\n var belowMarkerRef = useRef(); // scroll and resize handling\n\n useEffect(function () {\n var scrollParents;\n\n var evaluate = function evaluate() {\n if (!scrollParents) return;\n var scrollParent = scrollParents[0]; // Determine the scroll position of the scroll container\n\n var top;\n var height;\n\n if (scrollParent === document) {\n top = document.documentElement.scrollTop || document.body.scrollTop;\n height = window.innerHeight;\n } else {\n top = scrollParent.scrollTop;\n var rect = scrollParent.getBoundingClientRect();\n height = rect.height;\n }\n\n var offset = height / 4; // so we pre-load when the user scrolls slowly\n // Use the pageHeights to determine what pages we should render based\n // on the current scroll window.\n\n var nextBeginPage = 0;\n var index = 0;\n var pagesHeight = pageHeights[index] || 0;\n\n while (pageHeights[index + 1] && pagesHeight < top - offset) {\n index += 1;\n nextBeginPage += 1;\n pagesHeight += pageHeights[index];\n }\n\n var nextEndPage = nextBeginPage;\n\n while (pageHeights[index] !== undefined && pagesHeight < top + height + offset) {\n index += 1;\n nextEndPage += 1; // when we haven't rendered the nextEndPage and we aren't replacing,\n // we might not have a height for it yet\n\n pagesHeight += pageHeights[index] || 0;\n }\n\n if (!replace) {\n // when not replacing, never shrink bounds\n nextBeginPage = 0;\n nextEndPage = Math.max(renderPageBounds[1], nextEndPage);\n }\n\n if (show) {\n // ensure we try to render any show page\n var showPage = calculateLastPageBound(show, step);\n nextBeginPage = Math.min(showPage, nextBeginPage);\n nextEndPage = Math.max(showPage, nextEndPage);\n }\n\n if (nextBeginPage !== renderPageBounds[0] || nextEndPage !== renderPageBounds[1]) {\n setRenderPageBounds([nextBeginPage, nextEndPage]);\n }\n };\n\n var timer;\n\n var debounce = function debounce() {\n clearTimeout(timer);\n timer = setTimeout(evaluate, 10);\n }; // might not be there yet or might have already rendered everything\n\n\n if (belowMarkerRef.current) {\n scrollParents = findScrollParents(belowMarkerRef.current);\n scrollParents.forEach(function (sp) {\n return sp.addEventListener('scroll', debounce);\n });\n }\n\n window.addEventListener('resize', debounce);\n evaluate();\n return function () {\n if (scrollParents) {\n scrollParents.forEach(function (sp) {\n return sp.removeEventListener('scroll', debounce);\n });\n }\n\n window.removeEventListener('resize', debounce);\n clearTimeout(timer);\n };\n }, [pageHeights, renderPageBounds, replace, show, step]); // check if we need to ask for more\n\n useEffect(function () {\n if (onMore && renderPageBounds[1] === lastPage && items.length >= pendingLength) {\n // remember we've asked for more, so we don't keep asking if it takes\n // a while\n setPendingLength(items.length + 1);\n onMore();\n }\n }, [items.length, lastPage, onMore, pendingLength, renderPageBounds, step]);\n useEffect(function () {\n if (items.length === 0 && lastPage === 0 && pendingLength !== 0) {\n setPageHeights([]);\n setPendingLength(0);\n setRenderPageBounds([0, calculateLastPageBound(show, step)]);\n }\n }, [lastPage, pendingLength, show, step, items.length]); // scroll to any 'show'\n\n useLayoutEffect(function () {\n // ride out any animation delays, 100ms empirically measured\n var timer = setTimeout(function () {\n if (show && belowMarkerRef.current) {\n // calculate show index based on beginPage\n var showIndex = show - renderPageBounds[0] * step + (renderPageBounds[0] ? 1 : 0);\n var showNode = belowMarkerRef.current.parentNode.children.item(showIndex);\n\n if (showNode) {\n var scrollParent = findScrollParent(showNode);\n\n if (isNodeBeforeScroll(showNode, scrollParent)) {\n showNode.scrollIntoView(true);\n } else if (isNodeAfterScroll(showNode, scrollParent)) {\n showNode.scrollIntoView(false);\n } // clean up after having shown\n\n\n setShow(undefined);\n }\n }\n }, 100);\n return function () {\n return clearTimeout(timer);\n };\n }, [renderPageBounds, show, step]); // calculate and keep track of page heights\n\n useLayoutEffect(function () {\n // if don't have a belowMarker, we must have rendered everything already\n if (!belowMarkerRef.current) return; // calculate page heights for rendered pages\n\n var rendered = belowMarkerRef.current.parentNode.children; // ensure we've rendered the state we have\n // above? + items in rendered pages + below === rendered DOM elements length\n\n if ((aboveMarkerRef.current ? 1 : 0) + (renderPageBounds[1] - renderPageBounds[0] + 1) * step + 1 === rendered.length) {\n var nextPageHeights; // step through each page\n\n var i = renderPageBounds[0];\n var lastBottom;\n\n while (i <= renderPageBounds[1]) {\n var topIndex = (aboveMarkerRef.current ? 1 : 0) + (i - renderPageBounds[0]) * step;\n var bottomIndex = Math.min(topIndex + step - 1, rendered.length - 1); // we use lastBottom for top to ensure grid layouts work\n\n var top = lastBottom !== undefined ? lastBottom : rendered.item(topIndex).getBoundingClientRect().top;\n\n var _rendered$item$getBou = rendered.item(bottomIndex).getBoundingClientRect(),\n bottom = _rendered$item$getBou.bottom;\n\n var height = bottom - top;\n\n if (bottom && (!pageHeights || pageHeights[i] !== height)) {\n if (!nextPageHeights) nextPageHeights = [].concat(pageHeights || []);\n nextPageHeights[i] = height;\n }\n\n lastBottom = bottom;\n i += 1;\n } // estimate page heights for pages we haven't rendered yet\n\n\n while (replace && i <= lastPage) {\n if (!pageHeights[i] && pageHeights[i] !== pageHeights[0]) {\n if (!nextPageHeights) nextPageHeights = [].concat(pageHeights || []);\n var _nextPageHeights = nextPageHeights;\n nextPageHeights[i] = _nextPageHeights[0];\n }\n\n i += 1;\n }\n\n if (nextPageHeights) setPageHeights(nextPageHeights);\n }\n }, [lastPage, pageHeights, renderPageBounds, replace, step]); // calculate the height above the first rendered page using the pageHeights\n\n var aboveHeight = useMemo(function () {\n if (!replace) return 0;\n var height = 0;\n var i = 0;\n\n while (i < renderPageBounds[0]) {\n height += pageHeights[i] || 0;\n i += 1;\n }\n\n return height;\n }, [pageHeights, renderPageBounds, replace]); // calculate the height below the last rendered page using the pageHeights\n\n var belowHeight = useMemo(function () {\n if (!replace) return 0;\n var height = 0;\n var i = renderPageBounds[1] + 1;\n\n while (i <= lastPage) {\n height += pageHeights[i] || 0;\n i += 1;\n }\n\n return height;\n }, [lastPage, pageHeights, renderPageBounds, replace]);\n var firstIndex = renderPageBounds[0] * step;\n var lastIndex = Math.min((renderPageBounds[1] + 1) * step, items.length) - 1;\n var result = [];\n\n if (aboveHeight) {\n var marker = /*#__PURE__*/React.createElement(Box, {\n key: \"above\",\n ref: aboveMarkerRef,\n flex: false,\n height: aboveHeight + \"px\"\n });\n\n if (renderMarker) {\n // need to give it a key\n marker = /*#__PURE__*/React.cloneElement(renderMarker(marker), {\n key: 'above'\n });\n }\n\n result.push(marker);\n }\n\n items.slice(firstIndex, lastIndex + 1).forEach(function (item, index) {\n var itemsIndex = firstIndex + index;\n var child = children(item, itemsIndex);\n result.push(child);\n });\n\n if (replace || renderPageBounds[1] < lastPage || onMore) {\n var _marker = /*#__PURE__*/React.createElement(Box, {\n key: \"below\",\n ref: !renderMarker && belowMarkerRef || undefined,\n flex: false,\n height: (belowHeight || 0) + \"px\"\n });\n\n if (renderMarker) {\n // need to give it a key\n var renderedMarker = renderMarker(_marker);\n _marker = /*#__PURE__*/React.cloneElement(renderedMarker, {\n key: 'below',\n // We need to make sure our belowMarkerRef is tied to a component\n // that has the same parent as the items being rendered. This is so\n // we can use belowMarkerRef.current.parentNode.children to\n // get a reference to the items in the DOM for calculating pageHeights.\n //\n // Since the caller might have included a ref in what their\n // renderMarker returns, we have to take care of both refs.\n // https://github.com/facebook/react/issues/8873#issuecomment-489579878\n ref: function ref(node) {\n // Keep your own reference\n belowMarkerRef.current = node; // Call the original ref, if any\n\n var ref = renderedMarker.ref;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n }\n });\n }\n\n result.push(_marker);\n }\n\n return result;\n};\n\nvar InfiniteScrollDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n InfiniteScrollDoc = require('./doc').doc(InfiniteScroll);\n}\n\nvar InfiniteScrollWrapper = InfiniteScrollDoc || InfiniteScroll;\nexport { InfiniteScrollWrapper as InfiniteScroll };","import React from 'react';\n\nvar createAnnouncer = function createAnnouncer() {\n var announcer = document.createElement('div');\n announcer.id = 'grommet-announcer';\n announcer.style.left = '-100%';\n announcer.style.right = '100%';\n announcer.style.position = 'fixed';\n announcer.style['z-index'] = '-1';\n document.body.insertBefore(announcer, document.body.firstChild);\n return announcer;\n};\n\nexport var AnnounceContext = /*#__PURE__*/React.createContext(function (message, mode, timeout) {\n if (mode === void 0) {\n mode = 'polite';\n }\n\n if (timeout === void 0) {\n timeout = 500;\n } // we only create a new container if we don't have one already\n // we create a separate node so that grommet does not set aria-hidden to it\n\n\n var announcer = document.body.querySelector(\"#grommet-announcer[aria-live]\") || createAnnouncer();\n announcer.setAttribute('aria-live', 'off');\n announcer.innerHTML = message;\n announcer.setAttribute('aria-live', mode);\n setTimeout(function () {\n announcer.innerHTML = '';\n }, timeout);\n});","import styled, { css } from 'styled-components';\nimport { disabledStyle, getInputPadBySide, inputStyle, parseMetricToNum, plainInputStyle, textAlignStyle } from '../../utils';\nimport { defaultProps } from '../../default-props';\n\nvar getPlainStyle = function getPlainStyle(plain) {\n if (plain === 'full') {\n return css([\"\", \" padding:0;\"], plainInputStyle);\n }\n\n return plain && plainInputStyle;\n};\n\nvar StyledTextInput = styled.input.withConfig({\n displayName: \"StyledTextInput\",\n componentId: \"sc-1x30a0s-0\"\n})([\"\", \" \", \" \", \" \", \" \", \";\", \"\"], inputStyle, function (props) {\n return getPlainStyle(props.plain);\n}, function (props) {\n return props.icon && (props.reverse ? \"padding-right: \" + props.theme.global.edgeSize.large + \";\" : \"padding-left: \" + props.theme.global.edgeSize.large + \";\");\n}, function (props) {\n return props.disabled && disabledStyle(props.theme.textInput.disabled && props.theme.textInput.disabled.opacity);\n}, function (props) {\n return props.theme.textInput && props.theme.textInput.extend;\n}, function (props) {\n return props.textAlign && textAlignStyle;\n});\nStyledTextInput.defaultProps = {};\nObject.setPrototypeOf(StyledTextInput.defaultProps, defaultProps);\nvar StyledTextInputContainer = styled.div.withConfig({\n displayName: \"StyledTextInput__StyledTextInputContainer\",\n componentId: \"sc-1x30a0s-1\"\n})([\"position:relative;width:100%;\", \";\"], function (props) {\n return props.theme.textInput && props.theme.textInput.container && props.theme.textInput.container.extend;\n});\nStyledTextInputContainer.defaultProps = {};\nObject.setPrototypeOf(StyledTextInputContainer.defaultProps, defaultProps);\nvar StyledPlaceholder = styled.div.withConfig({\n displayName: \"StyledTextInput__StyledPlaceholder\",\n componentId: \"sc-1x30a0s-2\"\n})([\"position:absolute;left:\", \"px;top:50%;transform:translateY(-50%);display:flex;justify-content:center;pointer-events:none;\", \";\"], function (props) {\n return parseMetricToNum(getInputPadBySide(props, 'left')) - parseMetricToNum(props.theme.global.control.border.width);\n}, function (props) {\n return props.theme.textInput && props.theme.textInput.placeholder && props.theme.textInput.placeholder.extend;\n});\nStyledPlaceholder.defaultProps = {};\nObject.setPrototypeOf(StyledPlaceholder.defaultProps, defaultProps);\nvar StyledIcon = styled.div.withConfig({\n displayName: \"StyledTextInput__StyledIcon\",\n componentId: \"sc-1x30a0s-3\"\n})([\"position:absolute;display:flex;justify:center;top:50%;transform:translateY(-50%);pointer-events:none;\", \"\"], function (props) {\n return props.reverse ? \"right: \" + getInputPadBySide(props, 'right') + \";\" : \"left: \" + getInputPadBySide(props, 'left') + \";\";\n});\nvar StyledSuggestions = styled.ol.withConfig({\n displayName: \"StyledTextInput__StyledSuggestions\",\n componentId: \"sc-1x30a0s-4\"\n})([\"border-top-left-radius:0;border-top-right-radius:0;margin:0;padding:0;list-style-type:none;\", \";\"], function (props) {\n return props.theme.textInput && props.theme.textInput.suggestions && props.theme.textInput.suggestions.extend;\n});\nStyledSuggestions.defaultProps = {};\nObject.setPrototypeOf(StyledSuggestions.defaultProps, defaultProps);\nexport { StyledTextInput, StyledTextInputContainer, StyledPlaceholder, StyledIcon, StyledSuggestions };","function _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 _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\nimport React, { forwardRef, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { defaultProps } from '../../default-props';\nimport { Box } from '../Box';\nimport { Button } from '../Button';\nimport { Drop } from '../Drop';\nimport { InfiniteScroll } from '../InfiniteScroll';\nimport { Keyboard } from '../Keyboard';\nimport { FormContext } from '../Form/FormContext';\nimport { AnnounceContext } from '../../contexts';\nimport { isNodeAfterScroll, isNodeBeforeScroll, sizeStyle, useForwardedRef } from '../../utils';\nimport { StyledTextInput, StyledTextInputContainer, StyledPlaceholder, StyledIcon, StyledSuggestions } from './StyledTextInput';\n\nvar renderLabel = function renderLabel(suggestion) {\n if (suggestion && typeof suggestion === 'object') {\n return suggestion.label || suggestion.value;\n }\n\n return suggestion;\n};\n\nvar stringLabel = function stringLabel(suggestion) {\n if (suggestion && typeof suggestion === 'object') {\n if (suggestion.label && typeof suggestion.label === 'string') {\n return suggestion.label;\n }\n\n return suggestion.value;\n }\n\n return suggestion;\n};\n\nvar ContainerBox = styled(Box).withConfig({\n displayName: \"TextInput__ContainerBox\",\n componentId: \"sc-1ai0c08-0\"\n})([\"\", \";@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){width:100%;}\"], function (props) {\n return props.dropHeight ? sizeStyle('max-height', props.dropHeight, props.theme) : 'max-height: inherit;';\n});\nvar defaultDropAlign = {\n top: 'bottom',\n left: 'left'\n};\nvar defaultMessages = {\n enterSelect: '(Press Enter to Select)',\n suggestionsCount: 'suggestions available',\n suggestionsExist: 'This input has suggestions use arrow keys to navigate',\n suggestionIsOpen: 'Suggestions drop is open, continue to use arrow keys to navigate'\n};\nvar TextInput = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var a11yTitle = _ref.a11yTitle,\n defaultSuggestion = _ref.defaultSuggestion,\n defaultValue = _ref.defaultValue,\n _ref$dropAlign = _ref.dropAlign,\n dropAlign = _ref$dropAlign === void 0 ? defaultDropAlign : _ref$dropAlign,\n dropHeight = _ref.dropHeight,\n dropTarget = _ref.dropTarget,\n dropProps = _ref.dropProps,\n _ref$focusIndicator = _ref.focusIndicator,\n focusIndicator = _ref$focusIndicator === void 0 ? true : _ref$focusIndicator,\n icon = _ref.icon,\n id = _ref.id,\n _ref$messages = _ref.messages,\n messages = _ref$messages === void 0 ? defaultMessages : _ref$messages,\n name = _ref.name,\n _onBlur = _ref.onBlur,\n onChange = _ref.onChange,\n _onFocus = _ref.onFocus,\n onKeyDown = _ref.onKeyDown,\n onSelect = _ref.onSelect,\n onSuggestionSelect = _ref.onSuggestionSelect,\n onSuggestionsClose = _ref.onSuggestionsClose,\n onSuggestionsOpen = _ref.onSuggestionsOpen,\n placeholder = _ref.placeholder,\n plain = _ref.plain,\n readOnly = _ref.readOnly,\n reverse = _ref.reverse,\n suggestions = _ref.suggestions,\n textAlign = _ref.textAlign,\n valueProp = _ref.value,\n rest = _objectWithoutPropertiesLoose(_ref, [\"a11yTitle\", \"defaultSuggestion\", \"defaultValue\", \"dropAlign\", \"dropHeight\", \"dropTarget\", \"dropProps\", \"focusIndicator\", \"icon\", \"id\", \"messages\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"onKeyDown\", \"onSelect\", \"onSuggestionSelect\", \"onSuggestionsClose\", \"onSuggestionsOpen\", \"placeholder\", \"plain\", \"readOnly\", \"reverse\", \"suggestions\", \"textAlign\", \"value\"]);\n\n var theme = useContext(ThemeContext) || defaultProps.theme;\n var announce = useContext(AnnounceContext);\n var formContext = useContext(FormContext);\n var inputRef = useForwardedRef(ref);\n var dropRef = useRef();\n var suggestionsRef = useRef(); // if this is a readOnly property, don't set a name with the form context\n // this allows Select to control the form context for the name.\n\n var _formContext$useFormI = formContext.useFormInput(readOnly ? undefined : name, valueProp),\n value = _formContext$useFormI[0],\n setValue = _formContext$useFormI[1];\n\n var _useState = useState(),\n focus = _useState[0],\n setFocus = _useState[1];\n\n var _useState2 = useState(false),\n showDrop = _useState2[0],\n setShowDrop = _useState2[1];\n\n var handleSuggestionSelect = useMemo(function () {\n return onSelect && !onSuggestionSelect ? onSelect : onSuggestionSelect;\n }, [onSelect, onSuggestionSelect]);\n var handleTextSelect = useMemo(function () {\n return onSelect && onSuggestionSelect ? onSelect : undefined;\n }, [onSelect, onSuggestionSelect]);\n\n var _useState3 = useState(),\n suggestionsAtClose = _useState3[0],\n setSuggestionsAtClose = _useState3[1];\n\n var openDrop = useCallback(function () {\n setShowDrop(true);\n announce(messages.suggestionIsOpen);\n announce(suggestions.length + \" \" + messages.suggestionsCount);\n if (onSuggestionsOpen) onSuggestionsOpen();\n }, [announce, messages.suggestionsCount, messages.suggestionIsOpen, onSuggestionsOpen, suggestions]);\n var closeDrop = useCallback(function () {\n setSuggestionsAtClose(suggestions); // must be before closing drop\n\n setShowDrop(false);\n if (messages.onSuggestionsClose) onSuggestionsClose();\n if (onSuggestionsClose) onSuggestionsClose();\n }, [messages.onSuggestionsClose, onSuggestionsClose, suggestions]); // Handle scenarios where we have focus, the drop isn't showing,\n // and the suggestions change. We don't want to open the drop if\n // the drop has been closed by onEsc and the suggestions haven't\n // changed. So, we remember the suggestions we are showing when\n // the drop was closed and only re-open it when the suggestions\n // subsequently change.\n\n useEffect(function () {\n if (focus && !showDrop && suggestions && suggestions.length && (!suggestionsAtClose || suggestionsAtClose.length !== suggestions.length)) {\n openDrop();\n }\n }, [focus, openDrop, showDrop, suggestions, suggestionsAtClose]); // if we have no suggestions, close drop if it's open\n\n useEffect(function () {\n if (showDrop && (!suggestions || !suggestions.length)) closeDrop();\n }, [closeDrop, showDrop, suggestions]);\n var valueSuggestionIndex = useMemo(function () {\n return suggestions ? suggestions.map(function (suggestion) {\n return typeof suggestion === 'object' ? suggestion.value : suggestion;\n }).indexOf(value) : -1;\n }, [suggestions, value]); // choose the best suggestion, either the explicit default or the one\n // that matches the current value\n\n var resetSuggestionIndex = useMemo(function () {\n if (valueSuggestionIndex === -1 && typeof defaultSuggestion === 'number') {\n return defaultSuggestion;\n }\n\n return valueSuggestionIndex;\n }, [defaultSuggestion, valueSuggestionIndex]); // activeSuggestionIndex unifies mouse and keyboard interaction of\n // the suggestions\n\n var _useState4 = useState(resetSuggestionIndex),\n activeSuggestionIndex = _useState4[0],\n setActiveSuggestionIndex = _useState4[1]; // Only update active suggestion index when the mouse actually moves,\n // not when suggestions are moving under the mouse.\n\n\n var _useState5 = useState(),\n mouseMovedSinceLastKey = _useState5[0],\n setMouseMovedSinceLastKey = _useState5[1]; // set activeSuggestionIndex when value changes\n\n\n useEffect(function () {\n return setActiveSuggestionIndex(valueSuggestionIndex);\n }, [valueSuggestionIndex]); // reset activeSuggestionIndex when the drop is closed\n\n useEffect(function () {\n if (!showDrop) setActiveSuggestionIndex(resetSuggestionIndex);\n }, [resetSuggestionIndex, showDrop]); // announce active suggestion\n\n useEffect(function () {\n if (activeSuggestionIndex >= 0) {\n var label = stringLabel(suggestions[activeSuggestionIndex]);\n announce(label + \" \" + messages.enterSelect);\n }\n }, [activeSuggestionIndex, announce, messages, suggestions]); // make sure activeSuggestion is visible in scroll\n\n useEffect(function () {\n var timer = setTimeout(function () {\n var list = suggestionsRef.current;\n\n if (showDrop && activeSuggestionIndex !== -1 && list) {\n var container = list.parentNode;\n var item = list.children[activeSuggestionIndex];\n\n if (container.scrollTo) {\n if (isNodeAfterScroll(item, container)) container.scrollTo(0, item.offsetTop - (container.getBoundingClientRect().height - item.getBoundingClientRect().height));else if (isNodeBeforeScroll(item, container)) container.scrollTo(0, item.offsetTop);\n }\n }\n }, 50); // delay to allow Drop to animate in\n\n return function () {\n return clearTimeout(timer);\n };\n }, [activeSuggestionIndex, showDrop]);\n\n var setValueFromSuggestion = function setValueFromSuggestion(event, suggestion) {\n // if we stole the focus in the drop, perhaps by interacting with\n // a suggestion button or the scrollbar, give it back\n inputRef.current.focus();\n inputRef.current.value = suggestion; // needed for uncontrolled cases\n\n closeDrop();\n\n if (handleSuggestionSelect) {\n if (event.persist) event.persist();\n var adjustedEvent = event;\n adjustedEvent.suggestion = suggestion;\n handleSuggestionSelect(adjustedEvent);\n }\n\n setValue(suggestion);\n };\n\n var onNextSuggestion = useCallback(function (event) {\n event.preventDefault();\n var nextActiveIndex = Math.min(activeSuggestionIndex + 1, suggestions.length - 1);\n setActiveSuggestionIndex(nextActiveIndex);\n setMouseMovedSinceLastKey(false);\n }, [activeSuggestionIndex, suggestions]);\n var onPreviousSuggestion = useCallback(function (event) {\n event.preventDefault();\n var nextActiveIndex = Math.max(activeSuggestionIndex - 1, 0);\n setActiveSuggestionIndex(nextActiveIndex);\n setMouseMovedSinceLastKey(false);\n }, [activeSuggestionIndex]);\n\n var _useState6 = useState(placeholder && typeof placeholder !== 'string' && !(inputRef.current && inputRef.current.value) && !value),\n showStyledPlaceholder = _useState6[0],\n setShowStyledPlaceholder = _useState6[1];\n\n var drop;\n var extraProps = {\n onSelect: handleTextSelect\n };\n\n if (showDrop) {\n drop = /*#__PURE__*/React.createElement(Drop, _extends({\n ref: dropRef,\n id: id ? \"text-input-drop__\" + id : undefined,\n align: dropAlign,\n responsive: false,\n target: dropTarget || inputRef.current,\n onClickOutside: closeDrop,\n onEsc: closeDrop\n }, dropProps), /*#__PURE__*/React.createElement(ContainerBox, {\n overflow: \"auto\",\n dropHeight: dropHeight,\n onMouseMove: function onMouseMove() {\n return setMouseMovedSinceLastKey(true);\n }\n }, /*#__PURE__*/React.createElement(StyledSuggestions, {\n ref: suggestionsRef\n }, /*#__PURE__*/React.createElement(InfiniteScroll, {\n items: suggestions,\n step: theme.select.step,\n show: activeSuggestionIndex !== -1 ? activeSuggestionIndex : undefined\n }, function (suggestion, index, itemRef) {\n // Determine whether the label is done as a child or\n // as an option Button kind property.\n var renderedLabel = renderLabel(suggestion);\n var child;\n if (typeof renderedLabel !== 'string') // must be an element rendered by suggestions.label\n child = renderedLabel;else if (!theme.button.option) // don't have theme support, need to layout here\n child = /*#__PURE__*/React.createElement(Box, {\n align: \"start\",\n pad: \"small\"\n }, renderedLabel); // if we have a child, turn on plain\n\n return /*#__PURE__*/React.createElement(\"li\", {\n key: stringLabel(suggestion) + \"-\" + index,\n ref: itemRef\n }, /*#__PURE__*/React.createElement(Button, {\n active: activeSuggestionIndex === index,\n fill: true,\n plain: !child ? undefined : true,\n align: \"start\",\n kind: !child ? 'option' : undefined,\n label: !child ? renderedLabel : undefined,\n onClick: function onClick(event) {\n return setValueFromSuggestion(event, suggestion);\n },\n onMouseMove: mouseMovedSinceLastKey && activeSuggestionIndex !== index ? function () {\n return setActiveSuggestionIndex(index);\n } : undefined\n }, child));\n }))));\n }\n\n var keyboardProps = {\n onKeyDown: onKeyDown\n };\n\n if (showDrop) {\n keyboardProps.onEnter = function (event) {\n // prevent submitting forms via Enter when the drop is open\n event.preventDefault();\n if (activeSuggestionIndex >= 0) setValueFromSuggestion(event, suggestions[activeSuggestionIndex]);else closeDrop();\n };\n\n if (activeSuggestionIndex > 0) keyboardProps.onUp = onPreviousSuggestion;\n if (activeSuggestionIndex < suggestions.length - 1) keyboardProps.onDown = onNextSuggestion;\n keyboardProps.onTab = closeDrop;\n } else if (suggestions && suggestions.length > 0) {\n keyboardProps.onDown = openDrop;\n } // For the Keyboard target below, if we have focus,\n // either on the input element or within the drop,\n // then we set the target to the document,\n // otherwise we only listen to onDown on the input element itself,\n // primarily for tests.\n\n\n return /*#__PURE__*/React.createElement(StyledTextInputContainer, {\n plain: plain\n }, showStyledPlaceholder && /*#__PURE__*/React.createElement(StyledPlaceholder, null, placeholder), icon && /*#__PURE__*/React.createElement(StyledIcon, {\n reverse: reverse,\n theme: theme\n }, icon), /*#__PURE__*/React.createElement(Keyboard, _extends({\n target: focus ? 'document' : undefined\n }, keyboardProps), /*#__PURE__*/React.createElement(StyledTextInput, _extends({\n \"aria-label\": a11yTitle,\n ref: inputRef,\n id: id,\n name: name,\n autoComplete: \"off\",\n plain: plain,\n placeholder: typeof placeholder === 'string' ? placeholder : undefined,\n icon: icon,\n reverse: reverse,\n focus: focus,\n focusIndicator: focusIndicator,\n textAlign: textAlign\n }, rest, extraProps, {\n defaultValue: renderLabel(defaultValue),\n value: renderLabel(value),\n readOnly: readOnly,\n onFocus: function onFocus(event) {\n // Don't do anything if we are acting like we already have\n // focus. This can happen when this input loses focus temporarily\n // to our drop, see onBlur() handler below.\n if (!focus) {\n setFocus(true);\n\n if (suggestions && suggestions.length > 0) {\n announce(messages.suggestionsExist);\n openDrop();\n }\n\n if (_onFocus) _onFocus(event);\n }\n },\n onBlur: function onBlur(event) {\n // Only treat it as a blur if the element receiving focus\n // isn't in our drop. The relatedTarget will be our drop\n // when the user clicks on a suggestion or interacts with the\n // scrollbar in the drop.\n if (!event.relatedTarget || event.relatedTarget !== dropRef.current) {\n setFocus(false);\n if (_onBlur) _onBlur(event);\n }\n },\n onChange: readOnly ? undefined : function (event) {\n // when TextInput is not contained in a Form, no re-render\n // will come from this onChange and remove the placeholder\n // so we need to update state to ensure the styled\n // placeholder only appears when there is no value\n setShowStyledPlaceholder(placeholder && typeof placeholder !== 'string' && !event.target.value);\n setValue(event.target.value);\n setActiveSuggestionIndex(resetSuggestionIndex);\n if (onChange) onChange(event);\n }\n }))), drop);\n});\nTextInput.displayName = 'TextInput';\nvar TextInputDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n TextInputDoc = require('./doc').doc(TextInput);\n}\n\nvar TextInputWrapper = TextInputDoc || TextInput;\nexport { TextInputWrapper as TextInput };","function _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 _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\nimport React, { Children, cloneElement, forwardRef, useContext, useState } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { defaultProps } from '../../default-props';\nimport { containsFocus } from '../../utils/DOM';\nimport { focusStyle } from '../../utils/styles';\nimport { parseMetricToNum } from '../../utils/mixins';\nimport { useForwardedRef } from '../../utils/refs';\nimport { Box } from '../Box';\nimport { CheckBox } from '../CheckBox';\nimport { CheckBoxGroup } from '../CheckBoxGroup';\nimport { RadioButtonGroup } from '../RadioButtonGroup';\nimport { Text } from '../Text';\nimport { TextInput } from '../TextInput';\nimport { FormContext } from '../Form/FormContext';\nvar grommetInputNames = ['TextInput', 'Select', 'MaskedInput', 'TextArea', 'DateInput', 'FileInput'];\nvar grommetInputPadNames = ['CheckBox', 'CheckBoxGroup', 'RadioButtonGroup', 'RangeInput'];\n\nvar isGrommetInput = function isGrommetInput(comp) {\n return comp && (grommetInputNames.indexOf(comp.displayName) !== -1 || grommetInputPadNames.indexOf(comp.displayName) !== -1);\n};\n\nvar FormFieldBox = styled(Box).withConfig({\n displayName: \"FormField__FormFieldBox\",\n componentId: \"m9hood-0\"\n})([\"\", \" \", \"\"], function (props) {\n return props.focus && focusStyle({\n justBorder: true\n });\n}, function (props) {\n return props.theme.formField && props.theme.formField.extend;\n});\nvar FormFieldContentBox = styled(Box).withConfig({\n displayName: \"FormField__FormFieldContentBox\",\n componentId: \"m9hood-1\"\n})([\"\", \"\"], function (props) {\n return props.focus && focusStyle({\n justBorder: true\n });\n});\nvar StyledMessageContainer = styled(Box).withConfig({\n displayName: \"FormField__StyledMessageContainer\",\n componentId: \"m9hood-2\"\n})([\"\", \"\"], function (props) {\n return props.messageType && props.theme.formField[props.messageType].container && props.theme.formField[props.messageType].container.extend;\n});\n\nvar Message = function Message(_ref) {\n var error = _ref.error,\n info = _ref.info,\n message = _ref.message,\n type = _ref.type,\n rest = _objectWithoutPropertiesLoose(_ref, [\"error\", \"info\", \"message\", \"type\"]);\n\n var theme = useContext(ThemeContext) || defaultProps.theme;\n\n if (message) {\n var icon;\n var containerProps;\n\n if (type) {\n icon = theme.formField[type] && theme.formField[type].icon;\n containerProps = theme.formField[type] && theme.formField[type].container;\n }\n\n var messageContent;\n if (typeof message === 'string') messageContent = /*#__PURE__*/React.createElement(Text, rest, message);else messageContent = /*#__PURE__*/React.createElement(Box, rest, message);\n return icon || containerProps ? /*#__PURE__*/React.createElement(StyledMessageContainer, _extends({\n direction: \"row\",\n messageType: type\n }, containerProps), icon && /*#__PURE__*/React.createElement(Box, {\n flex: false\n }, icon), messageContent) : messageContent;\n }\n\n return null;\n};\n\nvar Input = function Input(_ref2) {\n var component = _ref2.component,\n disabled = _ref2.disabled,\n invalid = _ref2.invalid,\n name = _ref2.name,\n _onChange = _ref2.onChange,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"disabled\", \"invalid\", \"name\", \"onChange\"]);\n\n var formContext = useContext(FormContext);\n\n var _formContext$useFormI = formContext.useFormInput(name, rest.value),\n value = _formContext$useFormI[0],\n setValue = _formContext$useFormI[1];\n\n var InputComponent = component || TextInput; // Grommet input components already check for FormContext\n // and, using their `name`, end up calling the useFormInput.setValue()\n // already. For custom components, we expect they will call\n // this onChange() and we'll call setValue() here, primarily\n // for backwards compatibility.\n\n var extraProps = isGrommetInput(InputComponent) ? {\n focusIndicator: false,\n onChange: _onChange,\n plain: true\n } : {\n value: value,\n onChange: function onChange(event) {\n setValue(event.value !== undefined ? event.value : event.target.value);\n if (_onChange) _onChange(event);\n }\n };\n return /*#__PURE__*/React.createElement(InputComponent, _extends({\n name: name,\n disabled: disabled,\n \"aria-invalid\": invalid || undefined\n }, rest, extraProps));\n};\n\nvar debounce = function debounce(func, wait) {\n var timeout;\n return function executedFunction() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var later = function later() {\n timeout = null;\n func.apply(void 0, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n};\n\nvar FormField = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var children = _ref3.children,\n className = _ref3.className,\n component = _ref3.component,\n contentProps = _ref3.contentProps,\n disabled = _ref3.disabled,\n errorProp = _ref3.error,\n help = _ref3.help,\n htmlFor = _ref3.htmlFor,\n infoProp = _ref3.info,\n label = _ref3.label,\n margin = _ref3.margin,\n name = _ref3.name,\n _onBlur = _ref3.onBlur,\n onChange = _ref3.onChange,\n _onFocus = _ref3.onFocus,\n pad = _ref3.pad,\n required = _ref3.required,\n style = _ref3.style,\n validate = _ref3.validate,\n rest = _objectWithoutPropertiesLoose(_ref3, [\"children\", \"className\", \"component\", \"contentProps\", \"disabled\", \"error\", \"help\", \"htmlFor\", \"info\", \"label\", \"margin\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"pad\", \"required\", \"style\", \"validate\"]);\n\n var theme = useContext(ThemeContext) || defaultProps.theme;\n var formContext = useContext(FormContext);\n\n var _formContext$useFormF = formContext.useFormField({\n error: errorProp,\n info: infoProp,\n name: name,\n required: required,\n validate: validate\n }),\n error = _formContext$useFormF.error,\n info = _formContext$useFormF.info,\n inForm = _formContext$useFormF.inForm,\n contextOnBlur = _formContext$useFormF.onBlur,\n contextOnChange = _formContext$useFormF.onChange;\n\n var _useState = useState(),\n focus = _useState[0],\n setFocus = _useState[1];\n\n var formFieldRef = useForwardedRef(ref);\n var formFieldTheme = theme.formField;\n var themeBorder = formFieldTheme.border; // This is here for backwards compatibility. In case the child is a grommet\n // input component, set plain and focusIndicator props, if they aren't\n // already set.\n\n var wantContentPad = component && (component === CheckBox || component === CheckBoxGroup || component === RadioButtonGroup);\n var contents = themeBorder && children && Children.map(children, function (child) {\n if (child && child.type && grommetInputPadNames.indexOf(child.type.displayName) !== -1) {\n wantContentPad = true;\n }\n\n if (child && child.type && grommetInputNames.indexOf(child.type.displayName) !== -1 && child.props.plain === undefined && child.props.focusIndicator === undefined) {\n return /*#__PURE__*/cloneElement(child, {\n plain: true,\n focusIndicator: false\n });\n }\n\n return child;\n }) || children; // put rest on container, unless we use internal Input\n\n var containerRest = rest;\n\n if (inForm) {\n if (!contents) containerRest = {};\n contents = contents || /*#__PURE__*/React.createElement(Input, _extends({\n component: component,\n disabled: disabled,\n invalid: !!error,\n name: name,\n label: component === CheckBox ? label : undefined\n }, rest));\n }\n\n var themeContentProps = _extends({}, formFieldTheme.content);\n\n if (!pad && !wantContentPad) {\n themeContentProps.pad = undefined;\n }\n\n if (themeBorder && themeBorder.position === 'inner') {\n if (error && formFieldTheme.error) {\n themeContentProps.background = formFieldTheme.error.background;\n } else if (disabled && formFieldTheme.disabled) {\n themeContentProps.background = formFieldTheme.disabled.background;\n }\n }\n\n if (!themeBorder) {\n contents = /*#__PURE__*/React.createElement(Box, _extends({}, themeContentProps, contentProps), contents);\n }\n\n var borderColor;\n\n if (disabled && formFieldTheme.disabled.border && formFieldTheme.disabled.border.color) {\n borderColor = formFieldTheme.disabled.border.color;\n } else if (error && themeBorder && themeBorder.error.color) {\n borderColor = themeBorder.error.color || 'status-critical';\n } else if (focus && formFieldTheme.focus && formFieldTheme.focus.border && formFieldTheme.focus.border.color) {\n borderColor = formFieldTheme.focus.border.color;\n } else {\n borderColor = themeBorder && themeBorder.color || 'border';\n }\n\n var labelStyle = _extends({}, formFieldTheme.label);\n\n if (disabled) {\n labelStyle.color = formFieldTheme.disabled && formFieldTheme.disabled.label ? formFieldTheme.disabled.label.color : labelStyle.color;\n }\n\n var abut;\n var abutMargin;\n var outerStyle = style;\n\n if (themeBorder) {\n var innerProps = themeBorder.position === 'inner' ? {\n border: _extends({}, themeBorder, {\n side: themeBorder.side || 'bottom',\n color: borderColor\n }),\n round: formFieldTheme.round,\n focus: focus\n } : {};\n contents = /*#__PURE__*/React.createElement(FormFieldContentBox, _extends({}, themeContentProps, innerProps, contentProps), contents);\n var mergedMargin = margin || formFieldTheme.margin;\n abut = themeBorder.position === 'outer' && (themeBorder.side === 'all' || themeBorder.side === 'horizontal' || !themeBorder.side) && !(mergedMargin && (typeof mergedMargin === 'string' && mergedMargin !== 'none' || mergedMargin.bottom && mergedMargin.bottom !== 'none' || mergedMargin.horizontal && mergedMargin.horizontal !== 'none'));\n\n if (abut) {\n // marginBottom is set to overlap adjacent fields\n abutMargin = {\n bottom: '-1px'\n };\n\n if (margin) {\n abutMargin = margin;\n } else if (themeBorder.size) {\n // if the user defines a margin,\n // then the default margin below will be overridden\n abutMargin = {\n bottom: \"-\" + parseMetricToNum(theme.global.borderSize[themeBorder.size] || themeBorder.size) + \"px\"\n };\n }\n\n outerStyle = _extends({\n position: focus ? 'relative' : undefined,\n zIndex: focus ? 10 : undefined\n }, style);\n }\n }\n\n var outerBackground;\n\n if (themeBorder && themeBorder.position === 'outer') {\n if (error && formFieldTheme.error && formFieldTheme.error.background) {\n outerBackground = formFieldTheme.error.background;\n } else if (focus && formFieldTheme.focus && formFieldTheme.focus.background && formFieldTheme.focus.background.color) {\n outerBackground = formFieldTheme.focus.background.color;\n } else if (disabled && formFieldTheme.disabled && formFieldTheme.disabled.background) {\n outerBackground = formFieldTheme.disabled.background;\n }\n }\n\n var outerProps = themeBorder && themeBorder.position === 'outer' ? {\n border: _extends({}, themeBorder, {\n color: borderColor\n }),\n round: formFieldTheme.round,\n focus: focus\n } : {};\n var requiredIndicator = theme.formField.label.requiredIndicator;\n if (requiredIndicator === true) // a11yTitle necessary so screenreader announces as \"required\"\n // as opposed to \"star\"\n // accessibility resource: https://www.deque.com/blog/anatomy-of-accessible-forms-required-form-fields/\n requiredIndicator = /*#__PURE__*/React.createElement(Text, {\n a11yTitle: \"required\"\n }, \"*\");\n return /*#__PURE__*/React.createElement(FormFieldBox, _extends({\n ref: formFieldRef,\n className: className,\n background: outerBackground,\n margin: abut ? abutMargin : margin || _extends({}, formFieldTheme.margin)\n }, outerProps, {\n style: outerStyle,\n onFocus: function onFocus(event) {\n setFocus(containsFocus(formFieldRef.current));\n if (_onFocus) _onFocus(event);\n },\n onBlur: function onBlur(event) {\n setFocus(false);\n if (contextOnBlur) contextOnBlur(event);\n if (_onBlur) _onBlur(event);\n },\n onChange: contextOnChange || onChange ? function (event) {\n event.persist();\n if (onChange) onChange(event);\n\n if (contextOnChange) {\n var debouncedFn = debounce(function () {\n contextOnChange(event); // A half second (500ms) debounce can be a helpful starting\n // point. You want to give the user time to fill out a\n // field, but capture their attention before they move on\n // past it. 2 second (2000ms) might be too long depending\n // on how fast people type, and 200ms would be an eye blink\n }, 500);\n debouncedFn();\n }\n } : undefined\n }, containerRest), label && component !== CheckBox || help ? /*#__PURE__*/React.createElement(React.Fragment, null, label && component !== CheckBox && /*#__PURE__*/React.createElement(Text, _extends({\n as: \"label\",\n htmlFor: htmlFor\n }, labelStyle), label, required && requiredIndicator ? requiredIndicator : undefined), /*#__PURE__*/React.createElement(Message, _extends({\n message: help\n }, formFieldTheme.help))) : undefined, contents, /*#__PURE__*/React.createElement(Message, _extends({\n type: \"error\",\n message: error\n }, formFieldTheme.error)), /*#__PURE__*/React.createElement(Message, _extends({\n type: \"info\",\n message: info\n }, formFieldTheme.info)));\n});\nFormField.displayName = 'FormField';\nvar FormFieldDoc;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line global-require\n FormFieldDoc = require('./doc').doc(FormField);\n}\n\nvar FormFieldWrapper = FormFieldDoc || FormField;\nexport { FormFieldWrapper as FormField };","function _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\nimport React from 'react';\nimport { StyledIcon } from '../StyledIcon';\nexport var MailOption = function MailOption(props) {\n return /*#__PURE__*/React.createElement(StyledIcon, _extends({\n viewBox: \"0 0 24 24\",\n a11yTitle: \"MailOption\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"#000\",\n strokeWidth: \"2\",\n d: \"M1,4 L23,4 L23,20 L1,20 L1,4 Z M1,5 L12,13.5 L23,5\"\n }));\n};","function _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\nimport React from 'react';\nimport { StyledIcon } from '../StyledIcon';\nexport var StatusGood = function StatusGood(props) {\n return /*#__PURE__*/React.createElement(StyledIcon, _extends({\n viewBox: \"0 0 24 24\",\n a11yTitle: \"StatusGood\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"#000\",\n strokeWidth: \"2\",\n d: \"M12,22 C17.5228475,22 22,17.5228475 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,17.5228475 6.4771525,22 12,22 Z M7,12 L11,15 L16,8\"\n }));\n};","function _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\nimport React from 'react';\nimport { StyledIcon } from '../StyledIcon';\nexport var Alert = function Alert(props) {\n return /*#__PURE__*/React.createElement(StyledIcon, _extends({\n viewBox: \"0 0 24 24\",\n a11yTitle: \"Alert\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"#000\",\n strokeWidth: \"2\",\n d: \"M12,17 L12,19 M12,10 L12,16 M12,3 L2,22 L22,22 L12,3 Z\"\n }));\n};","import React, { useContext } from \"react\";\nimport {\n Anchor,\n Button,\n Box,\n Grid,\n TextInput,\n FormField,\n Form,\n Paragraph,\n Text,\n ResponsiveContext,\n} from \"grommet\";\n\nimport { MailOption, Alert, StatusGood } from \"grommet-icons\";\nimport addToMailchimp from \"gatsby-plugin-mailchimp\";\n\nconst SignUp = (sizeOverride) => {\n const size = useContext(ResponsiveContext);\n\n const [mailchimpMessage, setMailchimpMessage] = React.useState(\"\");\n\n const handleSubmit = (e) => {\n e.preventDefault();\n addToMailchimp(e.value.signUpEmail)\n .then()\n .then((data) => {\n setMailchimpMessage(data);\n });\n };\n\n const SignUpForm = (\n
handleSubmit(e)}>\n \n \n \n }\n />\n \n \n \n \n \n \n \n );\n\n const CompleteState = (\n \n \n {mailchimpMessage.result === \"success\" ? (\n \n ) : (\n \n )}\n \n \n {mailchimpMessage.result !== \"success\" ? (\n Welcome to the community\n \n\n )\n :(\n )}\n {mailchimpMessage.result !== \"success\" ? (\n \n Or you can{\" \"}\n setMailchimpMessage(\"\")}>\n try another email address\n \n \n ) : (\n \n You should have a confirmation email in your inbox.\n \n )}\n \n \n );\n\n return {mailchimpMessage !== \"\" ? CompleteState : SignUpForm};\n};\n\nexport default SignUp;\n","import * as React from \"react\";\n\nimport \"@fontsource/dm-sans/400.css\";\nimport \"@fontsource/dm-sans/500.css\";\nimport {\n Anchor,\n Box,\n Heading,\n Paragraph,\n Text,\n} from \"grommet\";\nimport Seo from \"../components/seo\";\nimport Layout from \"../components/layout.js\";\nimport Foot from \"../components/foot.js\";\nimport Mailchimp from \"../components/mailchimp.js\";\nimport \"../static/assets/styles.css\";\n\n// markup\nexport default function Join(data) {\n return (\n \n \n \n \n \n Join the community{\" \"}\n \n You'll get:\n \n early access tickets and events\n \n access to Slack, where you can ask questions and share ideas\n with the community\n \n \n 13+ hours of free content from previous events\n \n \n Access to our newsletter (you can unsubscribe at anytime)\n \n \n \n \n\n \n \n Sponsor a project or event\n \n \n Speak to our team about supporting a project by emailing{\" \"}\n \n sponsors@togetherwerebetter.org.uk\n \n \n \n \n \n Get updates\n \n \n \n \n Follow @twb_hq on Twitter\n \n \n \n \n \n \n \n );\n}\n"],"sourceRoot":""}