{"version":3,"file":"respweb/mntv-vend-sm.7e252496.js","mappings":"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AiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EAAiB,GAAI,KACrBA,EA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","sources":["/app/apps/respweb/node_modules/@sm/apollo-clients/dist/browser.js","/app/apps/respweb/node_modules/@sm/intl/dist/formats.js","/app/apps/respweb/node_modules/@sm/intl/dist/index.js","/app/apps/respweb/node_modules/@sm/locale/dist/dataCenters.js","/app/apps/respweb/node_modules/@sm/locale/dist/index.js","/app/apps/respweb/node_modules/@sm/locale/dist/languageTags.js","/app/apps/respweb/node_modules/@sm/locale/dist/languages.js","/app/apps/respweb/node_modules/@sm/locale/dist/localeSets.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/from-url.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/main.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/parse-domain.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/sanitize.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/serialized-tries.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/trie/characters.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/trie/look-up.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/trie/nodes.js","/app/apps/respweb/node_modules/@sm/locale/node_modules/parse-domain/build-cjs/src/trie/parse-trie.js","/app/apps/respweb/node_modules/@sm/metrics/dist/BaseMetricsTracker.js","/app/apps/respweb/node_modules/@sm/metrics/dist/MetricsTracker.js","/app/apps/respweb/node_modules/@sm/metrics/dist/helpers.js","/app/apps/respweb/node_modules/@sm/metrics/dist/index.js","/app/apps/respweb/node_modules/@sm/metrics/dist/providers/ComponentMetricsProvider.js","/app/apps/respweb/node_modules/@sm/metrics/dist/providers/PageMetricsProvider.js","/app/apps/respweb/node_modules/@sm/metrics/dist/providers/SPARouteMetricsProvider.js","/app/apps/respweb/node_modules/@sm/metrics/dist/subscribers/AmplitudeSubscriber.js","/app/apps/respweb/node_modules/@sm/metrics/dist/subscribers/DataAnalyticsMetricsSubscriber.js","/app/apps/respweb/node_modules/@sm/metrics/dist/subscribers/FacebookPixelSubscriber.js","/app/apps/respweb/node_modules/@sm/metrics/dist/subscribers/GTMMeticsSubscriber.js","/app/apps/respweb/node_modules/@sm/metrics/dist/subscribers/LoggingMetricsSubscriber.js","/app/apps/respweb/node_modules/@sm/metrics/dist/types/enums.js","/app/apps/respweb/node_modules/@sm/metrics/dist/types/types.js","/app/apps/respweb/node_modules/@sm/metrics/dist/utils.js","/app/apps/respweb/node_modules/@sm/utils/dist/S3Uploader/S3Uploader.js","/app/apps/respweb/node_modules/@sm/utils/dist/billing/index.js","/app/apps/respweb/node_modules/@sm/utils/dist/environment/index.js","/app/apps/respweb/node_modules/@sm/utils/dist/index.js","/app/apps/respweb/node_modules/@sm/utils/dist/object/deepFreeze.js","/app/apps/respweb/node_modules/@sm/utils/dist/string/isValidEmail.js","/app/apps/respweb/node_modules/@sm/utils/dist/string/sanitizeString.js","/app/apps/respweb/node_modules/@sm/utils/dist/ts-auto-mock/index.js","/app/apps/respweb/node_modules/@sm/utils/dist/url/createURL.js","/app/apps/respweb/node_modules/@sm/question-definitions/esm/index.js","/app/apps/respweb/node_modules/@sm/question-ui/vendor-1535a03e.js","/app/apps/respweb/node_modules/@sm/question-ui/helpers.js","/app/apps/respweb/node_modules/@sm/question-ui/vendor-3a2071be.js","/app/apps/respweb/node_modules/@sm/question-ui/theme-22bba55b.js","/app/apps/respweb/node_modules/@sm/question-ui/respondent-survey.js","/app/apps/respweb/node_modules/@sm/question-ui/theme-respondent.js","/app/apps/respweb/node_modules/@sm/question-widgets/utils-5126869e.js","/app/apps/respweb/node_modules/@sm/question-ui/vendor-44a39198.js","/app/apps/respweb/node_modules/@sm/question-ui/respondent-quiz-results.js","/app/apps/respweb/node_modules/@sm/question-widgets/controllers-8c913634.js","/app/apps/respweb/node_modules/@sm/question-widgets/respondent-quiz-results.js","/app/apps/respweb/node_modules/@sm/question-widgets/utils-3f92f024.js","/app/apps/respweb/node_modules/@sm/question-widgets/controllers-20aa27dd.js","/app/apps/respweb/node_modules/@sm/question-widgets/respondent-survey.js","/app/apps/respweb/node_modules/@sm/question-widgets/vendor-8000eab9.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createBrowserApolloClient;\n\nvar _apolloClient = _interopRequireDefault(require(\"apollo-client\"));\n\nvar _apolloLinkBatchHttp = require(\"apollo-link-batch-http\");\n\nvar _apolloCacheInmemory = require(\"apollo-cache-inmemory\");\n\nvar _apolloLink = require(\"apollo-link\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _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\nvar DEFAULT_TARGET_PATH = 'default';\nvar DEFAULT_LINK_OPTIONS = {\n credentials: 'include',\n batchInterval: 30\n};\n\nfunction createBrowserApolloClient(_ref) {\n var fragmentMatcherFn = _ref.fragmentMatcherFn,\n metadata = _ref.metadata,\n pageRequestId = _ref.pageRequestId,\n _ref$cacheHydration = _ref.cacheHydration,\n cacheHydration = _ref$cacheHydration === void 0 ? {} : _ref$cacheHydration,\n _ref$uri = _ref.uri,\n uri = _ref$uri === void 0 ? '/graphql' : _ref$uri,\n _ref$linkOptions = _ref.linkOptions,\n linkOptions = _ref$linkOptions === void 0 ? {} : _ref$linkOptions,\n _ref$devToolsEnabled = _ref.devToolsEnabled,\n devToolsEnabled = _ref$devToolsEnabled === void 0 ? true : _ref$devToolsEnabled,\n _ref$availableLoggedO = _ref.availableLoggedOutPaths,\n availableLoggedOutPaths = _ref$availableLoggedO === void 0 ? [] : _ref$availableLoggedO,\n authLink = _ref.authLink;\n var appName = metadata.appName,\n appVersion = metadata.appVersion;\n var cache = new _apolloCacheInmemory.InMemoryCache({\n fragmentMatcher: fragmentMatcherFn && fragmentMatcherFn()\n }).restore(cacheHydration);\n\n var _linkOptions$headers = linkOptions.headers,\n headers = _linkOptions$headers === void 0 ? {} : _linkOptions$headers,\n otherLinkOptions = _objectWithoutProperties(linkOptions, [\"headers\"]);\n\n if (pageRequestId) {\n headers['sm-page-request-id'] = pageRequestId;\n }\n\n var apolloLinkMemoizeCache = {};\n\n function apolloLinkFactory() {\n var targetPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_TARGET_PATH;\n\n if (apolloLinkMemoizeCache[targetPath]) {\n return apolloLinkMemoizeCache[targetPath];\n }\n\n var link = new _apolloLinkBatchHttp.BatchHttpLink(_objectSpread({}, DEFAULT_LINK_OPTIONS, {}, otherLinkOptions, {\n uri: targetPath,\n headers: headers\n }));\n\n if (authLink && targetPath === '/graphql') {\n link = authLink.concat(link);\n }\n\n apolloLinkMemoizeCache[targetPath] = link;\n return link;\n } // custom apollo-link that determines the actual link to use based on the passed\n // `targetPath` context.\n\n\n var link = new _apolloLink.ApolloLink(function (operation) {\n var _operation$getContext, _operation$getContext2; // if the targetPath is not the default, use an alternate graphql endpoint.\n\n\n var targetPath = operation === null || operation === void 0 ? void 0 : (_operation$getContext = operation.getContext) === null || _operation$getContext === void 0 ? void 0 : (_operation$getContext2 = _operation$getContext.call(operation)) === null || _operation$getContext2 === void 0 ? void 0 : _operation$getContext2.targetPath;\n var graphQLPath = uri;\n\n if (availableLoggedOutPaths.includes(targetPath)) {\n // whitelist for security\n graphQLPath = targetPath;\n }\n\n return apolloLinkFactory(graphQLPath).request(operation) || _apolloLink.Observable.of();\n });\n return new _apolloClient.default({\n connectToDevTools: devToolsEnabled,\n cache: cache,\n link: link,\n name: appName,\n version: appVersion\n });\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utils = require(\"@sm/utils\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nvar _getClientEnvironment = (0, _utils.getClientEnvironmentDetails)(),\n isBrowser = _getClientEnvironment.isBrowser;\n\nvar currency = ['AFN', 'EUR', 'ALL', 'DZD', 'USD', 'AOA', 'XCD', 'ARS', 'AMD', 'AWG', 'AUD', 'AZN', 'BSD', 'BHD', 'BDT', 'BBD', 'BYN', 'BZD', 'XOF', 'BMD', 'INR', 'BTN', 'BOB', 'BOV', 'BAM', 'BWP', 'NOK', 'BRL', 'BND', 'BGN', 'BIF', 'CVE', 'KHR', 'XAF', 'CAD', 'KYD', 'CLP', 'CLF', 'CNY', 'COP', 'COU', 'KMF', 'CDF', 'NZD', 'CRC', 'HRK', 'CUP', 'CUC', 'ANG', 'CZK', 'DKK', 'DJF', 'DOP', 'EGP', 'SVC', 'ERN', 'ETB', 'FKP', 'FJD', 'XPF', 'GMD', 'GEL', 'GHS', 'GIP', 'GTQ', 'GBP', 'GNF', 'GYD', 'HTG', 'HNL', 'HKD', 'HUF', 'ISK', 'IDR', 'XDR', 'IRR', 'IQD', 'ILS', 'JMD', 'JPY', 'JOD', 'KZT', 'KES', 'KPW', 'KRW', 'KWD', 'KGS', 'LAK', 'LBP', 'LSL', 'ZAR', 'LRD', 'LYD', 'CHF', 'MOP', 'MKD', 'MGA', 'MWK', 'MYR', 'MVR', 'MRO', 'MUR', 'XUA', 'MXN', 'MXV', 'MDL', 'MNT', 'MAD', 'MZN', 'MMK', 'NAD', 'NPR', 'NIO', 'NGN', 'OMR', 'PKR', 'PAB', 'PGK', 'PYG', 'PEN', 'PHP', 'PLN', 'QAR', 'RON', 'RUB', 'RWF', 'SHP', 'WST', 'STD', 'SAR', 'RSD', 'SCR', 'SLL', 'SGD', 'XSU', 'SBD', 'SOS', 'SSP', 'LKR', 'SDG', 'SRD', 'SZL', 'SEK', 'CHE', 'CHW', 'SYP', 'TWD', 'TJS', 'TZS', 'THB', 'TOP', 'TTD', 'TND', 'TRY', 'TMT', 'UGX', 'UAH', 'AED', 'USN', 'UYU', 'UYI', 'UZS', 'VUV', 'VEF', 'VND', 'YER', 'ZMW', 'ZWL', 'XBA', 'XBB', 'XBC', 'XBD', 'XTS', 'XXX', 'XAU', 'XPD', 'XPT', 'XAG'];\n/** List of supported currencies */\n\nvar numberFormat = currency.reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, {\n style: 'currency',\n currency: key\n }));\n}, {});\nvar dateTimeFormat;\n\nif (isBrowser) {\n var browserTimezone = 'UTC';\n\n try {\n browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n dateTimeFormat = {\n timeZone: browserTimezone\n };\n } catch (err) {\n // We're throwing in a settimeout because we don't want to break the current tick.\n window.setTimeout(function () {\n throw err;\n }, 1);\n }\n}\n\nvar _default = {\n number: numberFormat,\n dateTime: dateTimeFormat,\n relativeTime: undefined\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FormattedDateTime = FormattedDateTime;\nexports.FormattedNumber = FormattedNumber;\nexports.FormattedRelativeTime = FormattedRelativeTime;\nexports.T = exports.L10nProvider = exports.L10NContext = void 0;\nexports.clearOptionsObject = clearOptionsObject;\nexports.defineMessages = defineMessages;\nexports.getMessageStore = getMessageStore;\nexports.initIntl = initIntl;\nexports.resetMessageStore = resetMessageStore;\nexports.substitute = substitute;\nexports.t = t;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _intlMessageformat = _interopRequireDefault(require(\"intl-messageformat\"));\n\nvar _escapeHtml = _interopRequireDefault(require(\"escape-html\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.merge\"));\n\nvar _utils = require(\"@sm/utils\");\n\nvar _locale = require(\"@sm/locale\");\n\nvar _intlRelativeformat = _interopRequireDefault(require(\"intl-relativeformat\"));\n\nvar _formats = _interopRequireDefault(require(\"./formats\"));\n\nvar _excluded = [\"value\"],\n _excluded2 = [\"value\"];\nvar _jsxFileName = \"/repo/packages/intl/src/index.tsx\";\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar _getClientEnvironment = (0, _utils.getClientEnvironmentDetails)(),\n isBrowser = _getClientEnvironment.isBrowser;\n\nvar INTL_OPT_KEY = 'SM_intlUniqueOptionsObjectKey';\nvar INTL_MSG_STORE_KEY = 'SM_intlUniqueMessageStoreObjectKey';\n/** Intl Options */\n\nfunction getDefaultOptions() {\n return {\n currentLocale: null,\n // Current locale such as 'en-US' - `null` is not allowed for IntlMessageFormat and needs to be set\n warningHandler: console.warn.bind(console),\n // eslint-disable-line\n escapeHtml: true // disable escape html in variable mode\n\n };\n}\n\nfunction getStore() {\n var glob = isBrowser ? window : global;\n\n if (!glob[INTL_MSG_STORE_KEY]) {\n glob[INTL_MSG_STORE_KEY] = {};\n }\n\n return glob[INTL_MSG_STORE_KEY];\n}\n\nfunction getOptionsObject() {\n var glob = isBrowser ? window : global;\n\n if (!glob[INTL_OPT_KEY]) {\n glob[INTL_OPT_KEY] = getDefaultOptions();\n }\n\n return glob[INTL_OPT_KEY];\n}\n\nfunction clearOptionsObject() {\n if (isBrowser) {\n delete window[INTL_OPT_KEY];\n } else {\n delete global[INTL_OPT_KEY];\n }\n}\n\nvar intlRelativeFormat;\n/**\n * @param {string} input\n * @returns {string} hash\n * @private\n */\n\nfunction hashInput(input) {\n var hash = 0;\n var i;\n var chr;\n if (input.length === 0) return hash;\n\n for (i = 0; i < input.length; i += 1) {\n chr = input.charCodeAt(i);\n hash = (hash << 5) - hash + chr; // eslint-disable-line no-bitwise\n // Convert to 32bit integer\n\n hash |= 0; // eslint-disable-line no-bitwise\n }\n\n return hash;\n}\n\nvar randomStr = function randomStr(N) {\n return _toConsumableArray(Array(N)).map(function () {\n return (~~(Math.random() * 36)).toString(36);\n }).join('');\n}; // eslint-disable-line no-bitwise\n\n\nvar keysOf = Object.keys;\n\nvar maybePseudo = function maybePseudo(msg) {\n if (process.env.NODE_ENV !== \"production\" && isBrowser) {\n var pseudoFactor = window.location.href.toString().match(/[&?]intl-pseudo(=([0-9]*\\.[0-9]+|[0-9]+))?/);\n\n if (pseudoFactor) {\n return msg.replace(/\\S+/g, function (match) {\n return randomStr(parseInt(\"\".concat(match.length * parseFloat(\"\".concat(pseudoFactor[2] || 1))), 10) || 1);\n });\n }\n }\n\n return msg;\n};\n\nvar replacer = function replacer(elements) {\n return function (part) {\n var element = elements[part];\n return element || maybePseudo(part);\n };\n};\n/** `string` type-guard including check for `instanceof` */\n// work-around as TS does not infer type string for instanceof\n\n\nvar isString = function isString(s) {\n return typeof s === 'string' || s instanceof String;\n};\n/**\n *\n * @param {string} message\n * @param {Object} variables (Optional)\n * @returns {Object} The substitution\n */\n\n\nfunction substitute(message, variables) {\n var vars = _objectSpread({}, variables);\n\n var msg = message;\n var options = getOptionsObject();\n var uid = Math.abs(hashInput(JSON.stringify({\n msg: msg,\n keys: keysOf(vars)\n }))).toString(16);\n var tokenDelimiter = \"@__\".concat(uid, \"__@\");\n var tokenizedValues = {};\n var elements = {};\n\n var generateToken = function () {\n var counter = 0;\n return function () {\n counter += 1;\n return \"ELEMENT-\".concat(uid, \"-\").concat(counter);\n };\n }();\n\n keysOf(vars).forEach(function (name) {\n var value = vars[name];\n\n if ( /*#__PURE__*/_react.default.isValidElement(value)) {\n var token = generateToken();\n tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n elements[token] = value;\n } else if (options.escapeHtml === true && isString(value) && value.indexOf('<') >= 0 && value.indexOf('>') >= 0) {\n tokenizedValues[name] = (0, _escapeHtml.default)(value);\n } else {\n // `React.isValidElement` matches `React.ReactElement` so its type can be omitted\n tokenizedValues[name] = value;\n }\n });\n\n try {\n var msgFormatter = new _intlMessageformat.default(msg, options.currentLocale, options.formats);\n msg = msgFormatter.format(tokenizedValues);\n } catch (err) {\n options.warningHandler({\n context: 'sm/intl',\n error: 'message_formatting_error',\n err: err,\n msg: msg,\n tokenizedValues: tokenizedValues,\n vars: vars,\n currentLocale: options.currentLocale\n });\n return msg;\n }\n\n try {\n var stack = [];\n var exhausted = false;\n var runningIndex = 0;\n\n while (!exhausted) {\n // The runningIndex is the pointer in the string at which we want to look right (->).\n var match = msg.substr(runningIndex).match(/]+)\">|<\\/span>/);\n\n if (match) {\n // eslint-disable-next-line prefer-const\n var _ref = match,\n _ref2 = _slicedToArray(_ref, 2),\n matched = _ref2[0],\n tag = _ref2[1]; // we need to adjust for the running index because match.index is relative to the substring we used\n\n\n var matchIndex = (match.index || 0) + runningIndex;\n var isOpening = !!tag;\n\n if (isOpening) {\n // If it's an opening tag, just push it on the stack and move on.\n stack.push({\n tag: tag,\n index: matchIndex\n });\n runningIndex = matchIndex + matched.length;\n } else {\n // We reached an ending tag.\n var popped = stack.pop();\n\n if (!popped) {\n options.warningHandler({\n context: 'sm/intl',\n error: 'unbalanced_delimiters_extra_closing',\n message: message,\n tokenizedValues: tokenizedValues,\n vars: vars\n });\n return message;\n }\n\n runningIndex = popped.index; // Find the content between the opening tag and the current one\n\n var content = msg.substring(runningIndex, matchIndex).replace(/]+)\">/, '').replace(/<\\span>/, '');\n var children = void 0; // If there are other functional elements saved already, try to split\n // the content and replace them with the right elements.\n\n if (elements && keysOf(elements).length > 0) {\n children = content.split(tokenDelimiter).filter(function (part) {\n return !!part;\n }).map(replacer(elements));\n } else {\n children = content;\n } // Build an element by cloning the passed element or calling the\n // passed function.\n\n\n var element = vars[popped.tag]({\n children: children\n });\n\n if ( /*#__PURE__*/_react.default.isValidElement(element)) {\n element = /*#__PURE__*/_react.default.cloneElement(element, {\n key: \"\".concat(popped.tag, \"_\").concat(randomStr(8))\n });\n } // Build the new string and adjust the running index based on that token.\n\n\n var token = generateToken();\n var tokenReplacement = \"\".concat(tokenDelimiter).concat(token).concat(tokenDelimiter);\n msg = \"\".concat(msg.substring(0, popped.index)).concat(tokenReplacement).concat(msg.substring(matchIndex + matched.length, msg.length));\n elements[token] = element;\n }\n } else {\n exhausted = true;\n }\n }\n\n if (stack.length) {\n options.warningHandler({\n context: 'sm/intl',\n error: 'unbalanced_delimiters_extra_opening',\n message: message,\n tokenizedValues: tokenizedValues,\n vars: vars\n });\n return message;\n } // Do a final replace once we're done with matching\n\n\n if (elements && keysOf(elements).length > 0) {\n msg = msg.split(tokenDelimiter).filter(function (part) {\n return !!part;\n }).map(replacer(elements));\n } else {\n msg = maybePseudo(msg);\n }\n\n return msg;\n } catch (err) {\n options.warningHandler({\n context: 'sm/intl',\n error: 'unexpected_tokenization_error',\n message: message,\n err: err\n });\n return message;\n }\n}\n/**\n * Retrieves and format a particular message by key. Uses defaultMessage if key is not found in message list.\n * @param {string} key Unique identifier for this string\n * @param {Object} variables (Optional) - Key/values for string substitution\n * @param {string} defaultMessage (Optional) Default message if string isn't found for key\n * @private\n */\n\n\nfunction get(key, variables, defaultMessage) {\n var vars = variables;\n\n var _getOptionsObject = getOptionsObject(),\n currentLocale = _getOptionsObject.currentLocale,\n warningHandler = _getOptionsObject.warningHandler;\n\n var messages = getStore()[currentLocale];\n\n if (!key) {\n warningHandler({\n context: 'sm/intl',\n error: 'key_is_undefined',\n currentLocale: currentLocale,\n key: key,\n defaultMessage: defaultMessage\n });\n return '';\n }\n\n var msg;\n\n if (!messages) {\n // If currentLocale is not set, return the default message without warning.\n if (currentLocale) {\n warningHandler({\n context: 'sm/intl',\n error: 'locale_not_found_in_message_store',\n currentLocale: currentLocale\n });\n }\n\n msg = defaultMessage || '';\n }\n\n msg = msg || messages[key];\n\n if (!msg && defaultMessage) {\n if (currentLocale !== 'en-US') {\n warningHandler({\n context: 'sm/intl',\n error: 'message_not_found_default_fallback',\n currentLocale: currentLocale,\n key: key\n });\n }\n\n msg = defaultMessage;\n }\n\n if (!msg) {\n warningHandler({\n context: 'sm/intl',\n error: 'message_not_found_no_default',\n currentLocale: currentLocale,\n key: key,\n defaultMessage: defaultMessage\n });\n return '';\n }\n\n return substitute(msg, vars);\n}\n/**\n * @param {string} key\n * @param {Object} variables\n * @param {string} defaultMessage\n * @returns {string} html\n * @private\n */\n\n\nfunction getHTML(key, variables, defaultMessage) {\n var msg = get(key, variables, defaultMessage);\n\n if (msg) {\n var el = /*#__PURE__*/_react.default.createElement('span', {\n dangerouslySetInnerHTML: {\n __html: msg\n }\n }); // when key exists, it should still return element if there's defaultMessage() after getHTML()\n\n\n var defaultMsg = function defaultMsg() {\n return el;\n };\n\n return _objectSpread({\n defaultMessage: defaultMsg,\n d: defaultMsg\n }, el);\n }\n\n return '';\n}\n/**\n *\n * @param {string} currentLocale\n * @param {string} currentLanguage\n * @private\n */\n\n\nfunction defineIntlRelativeFormat(currentLocale, currentLanguage) {\n if (window.ReactIntlLocaleData && window.ReactIntlLocaleData[currentLanguage] && Object.keys(window.ReactIntlLocaleData[currentLanguage]).length > 0) {\n window.ReactIntlLocaleData[currentLanguage].forEach(function (localeData) {\n _intlRelativeformat.default.__addLocaleData(localeData);\n });\n }\n\n intlRelativeFormat = new _intlRelativeformat.default(currentLocale, _objectSpread({}, _formats.default.relativeTime || {}));\n} // =================== Public API\n\n/**\n * Definition function used by our babel-plugin to extract messages during development.\n * For the description, Type must have one of the following values `Button | Link | Label | Header | Paragraph`. Vis, for visibility, must be one of `low | med | high`.\n *\n * More in the {@link https://code.corp.surveymonkey.com/pages/webplatform/smweb/#/pages/webs/localization?id=definemessages|WebPlatform docs}\n *\n * @param {Object} v Key/Descriptor objects where Descriptor.id, Descriptor.defaultMessage and Descriptor.description are present.\n * @returns {Object} message definition\n *\n */\n\n\nfunction defineMessages(v) {\n return v;\n}\n/**\n * Translates a message matching a specific Descriptor object.\n * Ref: https://code.corp.surveymonkey.com/pages/webplatform/smweb/#/pages/webs/localization\n *\n * @param {Desc} desc Descriptor object for the current message to translate. ({id: String!, defaultMessage: String!, description: String})\n * @param {Object} values (Optional) - key/values for substitution based on the ICU message format.\n * @param {Object} opts (Optional)\n * @param {Object} opts.html (Optional/Defaults to `false`) - Whether or not to allow for HTML nodes in the message before substitution.\n * @returns {string|React.ReactElement} HTML string or key value\n */\n\n\nfunction t(desc, values) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var id = desc.id,\n defaultMessage = desc.defaultMessage;\n var html = opts.html;\n return (html ? getHTML : get)(id, values, defaultMessage); // force return type\n}\n/** Props for `T` React component */\n\n/**\n * (React Component) Translates a message matching a specific Descriptor object.\n * Ref: https://code.corp.surveymonkey.com/pages/webplatform/smweb/#/pages/webs/localization\n */\n\n\nvar T = function T(props) {\n var desc = props.desc,\n values = props.values,\n id = props.id,\n defaultMessage = props.defaultMessage,\n html = props.html;\n return (html ? getHTML : get)(desc ? desc.id : id, values, desc ? desc.defaultMessage : defaultMessage);\n};\n\nexports.T = T;\nT.propTypes = {\n desc: _propTypes.default.shape({\n id: _propTypes.default.string.isRequired,\n defaultMessage: _propTypes.default.string.isRequired,\n description: _propTypes.default.string\n }),\n id: _propTypes.default.string,\n values: _propTypes.default.arrayOf(_propTypes.default.objectOf(_propTypes.default.node)),\n defaultMessage: _propTypes.default.string,\n html: _propTypes.default.bool\n};\nT.defaultProps = {\n desc: undefined,\n id: undefined,\n values: undefined,\n defaultMessage: undefined,\n html: false\n};\n/**\n * Initialize the localization framework with the passed messages and set of currentLocale/currentLanguage. Can be called more than once.\n * @param {Object} messages Key/Values where keys are string IDs and values are the translated message for such ID.\n * @param {Options} [opts={}] Options for Intl\n * @returns {void}\n */\n\nfunction initIntl(\n/** Key/Values where keys are string IDs and values are the translated message for such ID */\nmessages) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n !opts.currentLocale ? process.env.NODE_ENV !== \"production\" ? (0, _invariant.default)(false, 'opts.currentLocale is required') : (0, _invariant.default)(false) : void 0;\n !opts.currentLanguage ? process.env.NODE_ENV !== \"production\" ? (0, _invariant.default)(false, 'opts.currentLanguage is required') : (0, _invariant.default)(false) : void 0;\n !messages ? process.env.NODE_ENV !== \"production\" ? (0, _invariant.default)(false, 'messages is required') : (0, _invariant.default)(false) : void 0;\n var options = getOptionsObject();\n options.currentLocale = opts.currentLocale;\n options.currentLanguage = opts.currentLanguage;\n options.warningHandler = opts.warningHandler || options.warningHandler;\n var messageStore = getStore();\n var langInited = !!messageStore[options.currentLocale];\n (0, _lodash.default)(messageStore, _defineProperty({}, options.currentLocale, messages));\n options.formats = _objectSpread(_objectSpread(_objectSpread({}, options.formats), opts.formats), _formats.default);\n\n if (langInited) {\n return;\n }\n\n if (isBrowser) {\n defineIntlRelativeFormat(options.currentLocale, options.currentLanguage);\n } else {\n // For Node.js, common locales are added in the application\n intlRelativeFormat = new _intlRelativeformat.default(options.currentLocale, _objectSpread({}, _formats.default.relativeTime || {}));\n }\n}\n/**\n * Clears the object where we store messages. Useful for testing\n * @returns {undefined}\n */\n\n\nfunction resetMessageStore() {\n var messageStore = getStore();\n Object.keys(messageStore).forEach(function (member) {\n return delete messageStore[member];\n });\n}\n/**\n * Retrieves a copy of the stored messages.\n * @returns {JSON} JSON Message Store\n */\n\n\nfunction getMessageStore() {\n return JSON.parse(JSON.stringify(getStore()));\n}\n/**\n * The FormattedDateTime component uses the Intl.DateTimeFormat API and as such, here are the supported props.\n * All optionals.\n *\n * type DateTimeFormatOptions = {\n * localeMatcher: 'best fit' | 'lookup' = 'best fit',\n * formatMatcher: 'basic' | 'best fit' = 'best fit',\n *\n * timeZone: string,\n * hour12 : boolean,\n *\n * weekday : 'narrow' | 'short' | 'long',\n * era : 'narrow' | 'short' | 'long',\n * year : 'numeric' | '2-digit',\n * month : 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',\n * day : 'numeric' | '2-digit',\n * hour : 'numeric' | '2-digit',\n * minute : 'numeric' | '2-digit',\n * second : 'numeric' | '2-digit',\n * timeZoneName: 'short' | 'long',\n * };\n *\n * @param {Date} props Actual date to format.\n * @returns {string} formatted date\n */\n\n\nfunction FormattedDateTime(props) {\n var _options$currentLocal;\n\n var value = props.value,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var options = getOptionsObject();\n return new Intl.DateTimeFormat((_options$currentLocal = options.currentLocale) !== null && _options$currentLocal !== void 0 ? _options$currentLocal : undefined, _objectSpread(_objectSpread({}, _formats.default.dateTime || {}), restProps)).format(value);\n}\n/**\n * The FormattedNumber component uses the Intl.NumberFormat API and as such, here are the supported props.\n * All optionals.\n *\n * type NumberFormatOptions = {\n * localeMatcher: 'best fit' | 'lookup' = 'best fit',\n *\n * style: 'decimal' | 'currency' | 'percent' = 'decimal',\n *\n * currency : string,\n * currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol',\n *\n * useGrouping: boolean = true,\n *\n * minimumIntegerDigits : number = 1,\n * minimumFractionDigits : number,\n * maximumFractionDigits : number,\n * minimumSignificantDigits: number = 1,\n * maximumSignificantDigits: number,\n * };\n *\n * @param {number} props Actual number to format.\n * @returns {string} Formatted number\n */\n\n\nfunction FormattedNumber(props) {\n var _options$currentLocal2;\n\n var value = props.value,\n restProps = _objectWithoutProperties(props, _excluded2);\n\n var options = getOptionsObject();\n restProps.style = restProps.formatStyle;\n return new Intl.NumberFormat((_options$currentLocal2 = options.currentLocale) !== null && _options$currentLocal2 !== void 0 ? _options$currentLocal2 : undefined, _objectSpread(_objectSpread({}, _formats.default.number || {}), restProps)).format(value);\n}\n/**\n * The FormattedRelativeTime component uses the IntlRelativeTime API and as such, here are the supported props.\n * All optionals.\n *\n * type RelativeTimeFormatOptions = {\n * units: 'second' | 'second-short' | 'minute' | 'minute-short' | 'hour' | 'hour-short' | 'day' | 'day-short' | 'month' | 'month-short' | 'year' | 'year-short'\n * style: 'best fit' | 'numeric'\n * };\n *\n * @param {Object} props\n * @param {Date} props.value Actual date to format.\n * @param {Date} props.now (Optional) Fix the value of \"now\" to a certain date.\n * @returns {string} Formatted date\n */\n\n\nfunction FormattedRelativeTime(props) {\n var value = props.value,\n now = props.now;\n return intlRelativeFormat.format(value, {\n now: now\n });\n}\n/** Context is currently only used to prevent isRTL prop drilling */\n\n\nvar L10NContext = /*#__PURE__*/(0, _react.createContext)({\n isRTL: false\n});\nexports.L10NContext = L10NContext;\n\nvar RTLLanguageCodes = _locale.LANGUAGES.filter(function (l) {\n return l.isRTL;\n}).map(function (l) {\n return l.code;\n});\n/**\n * Configures the global localization context for the whole page.\n * @class\n */\n\n\nvar L10nProvider = /*#__PURE__*/function (_React$Component) {\n _inherits(L10nProvider, _React$Component);\n\n var _super = _createSuper(L10nProvider);\n\n function L10nProvider(props) {\n var _this;\n\n _classCallCheck(this, L10nProvider);\n\n _this = _super.call(this, props);\n _this.state = {\n messages: null,\n isRTL: false\n };\n var currentLocale = props.localeCode;\n var currentLanguage = props.languageCode; // If the locale is english, we are not expecting any messages; hence, default to {}\n\n _this.state.messages = _this.getMessages();\n /**\n * `SSR/isNode` - Initialize Intl on the server with the provided messages (if any).\n * `messages ` - We already have the messages (SSR/CSR/en-US), initIntl right away.\n *\n * The above takes care of three scenarios -\n * 1. SSR - Everything is provided on the server; hence, no need to fetch messages.\n * 2. CSR + messages - Messages were fetched before this component; hence, no need to fetch messages.\n * 3. In the case of `en-US`, we really don't need messages.\n */\n\n var _getClientEnvironment2 = (0, _utils.getClientEnvironmentDetails)(),\n isNode = _getClientEnvironment2.isNode;\n\n if (isNode || _this.state.messages) {\n initIntl(_this.state.messages, {\n currentLocale: currentLocale,\n currentLanguage: currentLanguage\n });\n }\n\n if (RTLLanguageCodes.indexOf(currentLanguage) !== -1) {\n _this.state.isRTL = true;\n }\n\n return _this;\n }\n\n _createClass(L10nProvider, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Update text-direction\n if (prevProps.languageCode !== this.props.languageCode) {\n var isRTL = RTLLanguageCodes.indexOf(this.props.languageCode) !== -1;\n\n if (isRTL !== this.state.isRTL) {\n this.setState(function () {\n return {\n isRTL: isRTL\n };\n });\n }\n } // Update messages at runtime is not yet implemented\n\n }\n /** Picks the correct localized messages */\n\n }, {\n key: \"getMessages\",\n value: function getMessages() {\n return this.props.localeCode === 'en-US' ? {} : this.props.localeMessages || {};\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.state.messages) {\n return null;\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n _react.default.createElement(L10NContext.Provider, {\n value: {\n isRTL: this.state.isRTL\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 900,\n columnNumber: 7\n }\n }, this.props.children)\n );\n }\n }]);\n\n return L10nProvider;\n}(_react.default.Component);\n\nexports.L10nProvider = L10nProvider;\nL10nProvider.propTypes = {\n children: _propTypes.default.node.isRequired,\n localeMessages: _propTypes.default.object,\n // eslint-disable-line\n localeCode: _propTypes.default.string,\n languageCode: _propTypes.default.string\n};\nL10nProvider.defaultProps = {\n localeCode: 'en-US',\n languageCode: 'en'\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DataCenterIds = exports.DC_SPECIFIC_SUBDOMAINS = void 0;\nexports.getDataCenterById = getDataCenterById;\nexports.getDataCenterIdFromCurrentUrl = getDataCenterIdFromCurrentUrl;\nexports.getDefaultSubdomainForDataCenter = getDefaultSubdomainForDataCenter;\n\nvar _parseDomain = require(\"parse-domain\");\n\nvar _dataCenters = _interopRequireDefault(require(\"./data/dataCenters.json\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar DataCenterIds;\nexports.DataCenterIds = DataCenterIds;\n\n(function (DataCenterIds) {\n DataCenterIds[\"US\"] = \"0\";\n DataCenterIds[\"CA\"] = \"1\";\n DataCenterIds[\"EU\"] = \"2\";\n})(DataCenterIds || (exports.DataCenterIds = DataCenterIds = {}));\n\nvar DC_SPECIFIC_SUBDOMAINS;\n/**\n * Returns the data center by id\n * @param {string} dataCenterId\n * @returns {Object} data center details\n * @memberof module:@sm/locale\n */\n\nexports.DC_SPECIFIC_SUBDOMAINS = DC_SPECIFIC_SUBDOMAINS;\n\n(function (DC_SPECIFIC_SUBDOMAINS) {\n DC_SPECIFIC_SUBDOMAINS[DC_SPECIFIC_SUBDOMAINS[\"eu\"] = DataCenterIds.EU] = \"eu\";\n})(DC_SPECIFIC_SUBDOMAINS || (exports.DC_SPECIFIC_SUBDOMAINS = DC_SPECIFIC_SUBDOMAINS = {}));\n\nfunction getDataCenterById(dataCenterId) {\n return _dataCenters.default.dataCenters[dataCenterId];\n}\n/**\n * Returns the data center id from the url\n * @param {string} url\n * @param {string} dataCenterAffinityCookie\n * @returns {string} data center id\n * @memberof module:@sm/locale\n */\n\n\nfunction getDataCenterIdFromCurrentUrl(url, dataCenterAffinityCookie) {\n var parseResult = (0, _parseDomain.parseDomain)((0, _parseDomain.fromUrl)(url)) || {};\n var subdomain;\n var dataCenterId = DataCenterIds.US;\n\n if (parseResult.type === _parseDomain.ParseResultType.Listed) {\n subdomain = parseResult.subDomains.join('.');\n\n if (subdomain) {\n var dcSub = Object.keys(_dataCenters.default.dataCenterSpecificSubdomains).find(function (subSpecific) {\n return subSpecific === subdomain || subdomain.endsWith(\".\".concat(subSpecific));\n });\n\n if (dcSub) {\n dataCenterId = _dataCenters.default.dataCenterSpecificSubdomains[dcSub];\n }\n }\n }\n\n if (dataCenterId === DataCenterIds.US && \"\".concat(dataCenterAffinityCookie) === DataCenterIds.CA) {\n dataCenterId = DataCenterIds.CA;\n }\n\n return dataCenterId;\n} // This is currently being used in UserWeb here https://code.corp.surveymonkey.com/devmonkeys/userweb/blob/e7646369dfae9fef0c8d1fa3c23f1bde61a9c906/userweb/lib/language.py#L31\n// So I'm leaving this function for when we port the corresponding code in UserWeb.\n\n/**\n * Returns the default subdomain for a data center\n * @param {string} dataCenterId\n * @returns {string} subdomain\n * @memberof module:@sm/locale\n */\n\n\nfunction getDefaultSubdomainForDataCenter(dataCenterId) {\n var dc = getDataCenterById(dataCenterId);\n return dc && dc.defaultSubdomain || 'www';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"LANGUAGES\", {\n enumerable: true,\n get: function get() {\n return _languages.LANGUAGES;\n }\n});\nObject.defineProperty(exports, \"LANGUAGES_BY_CODE\", {\n enumerable: true,\n get: function get() {\n return _languages.LANGUAGES_BY_CODE;\n }\n});\nObject.defineProperty(exports, \"LANGUAGES_BY_ID\", {\n enumerable: true,\n get: function get() {\n return _languages.LANGUAGES_BY_ID;\n }\n});\nObject.defineProperty(exports, \"convertLanguageTag\", {\n enumerable: true,\n get: function get() {\n return _languageTags.convertLanguageTag;\n }\n});\nexports.getAudienceSupportedCountries = getAudienceSupportedCountries;\nexports.getBenchmarksSupportedCountries = getBenchmarksSupportedCountries;\nexports.getCookieTransportTLDs = getCookieTransportTLDs;\nObject.defineProperty(exports, \"getDataCenterById\", {\n enumerable: true,\n get: function get() {\n return _dataCenters.getDataCenterById;\n }\n});\nObject.defineProperty(exports, \"getDataCenterIdFromCurrentUrl\", {\n enumerable: true,\n get: function get() {\n return _dataCenters.getDataCenterIdFromCurrentUrl;\n }\n});\nObject.defineProperty(exports, \"getDefaultSubdomainForDataCenter\", {\n enumerable: true,\n get: function get() {\n return _dataCenters.getDefaultSubdomainForDataCenter;\n }\n});\nexports.getEUCountries = getEUCountries;\nexports.getLanguageCodeFromCountryCode = getLanguageCodeFromCountryCode;\nexports.getLanguageCodeFromSubdomain = getLanguageCodeFromSubdomain;\nObject.defineProperty(exports, \"getLanguageTagByCode\", {\n enumerable: true,\n get: function get() {\n return _languageTags.getLanguageTagByCode;\n }\n});\nObject.defineProperty(exports, \"getLanguageTagById\", {\n enumerable: true,\n get: function get() {\n return _languageTags.getLanguageTagById;\n }\n});\nObject.defineProperty(exports, \"getLanguageTags\", {\n enumerable: true,\n get: function get() {\n return _languageTags.getLanguageTags;\n }\n});\nexports.getSMSupportedCountries = getSMSupportedCountries;\nexports.getSiteSupportedLanguageCodes = getSiteSupportedLanguageCodes;\nexports.getSiteSupportedLanguages = getSiteSupportedLanguages;\nexports.getSubdomainFromLanguageCodeAndDataCenter = getSubdomainFromLanguageCodeAndDataCenter;\nexports.getTldLanguageInfo = getTldLanguageInfo;\nexports.isDACHCountry = isDACHCountry;\nexports.isEUCountry = isEUCountry;\nexports.isEUDC = isEUDC;\nexports.isEUSubdomain = isEUSubdomain;\nexports.isGBCountry = isGBCountry;\nexports.isGDPRCountry = isGDPRCountry;\nexports.isUSTerritory = isUSTerritory;\nexports.localeSets = void 0;\nObject.defineProperty(exports, \"normalizeLanguageTag\", {\n enumerable: true,\n get: function get() {\n return _languageTags.normalizeLanguageTag;\n }\n});\nObject.defineProperty(exports, \"parseLanguageTag\", {\n enumerable: true,\n get: function get() {\n return _languageTags.parseLanguageTag;\n }\n});\nexports.sanitizeCountryCode = sanitizeCountryCode;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _tlds = _interopRequireDefault(require(\"./data/tlds.json\"));\n\nvar _localeSets = require(\"./localeSets\");\n\nvar _languages = require(\"./languages\");\n\nvar _dataCenters = require(\"./dataCenters\");\n\nvar _languageTags = require(\"./languageTags\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n} // This is for backward compatibility. Remove for 2.0\n\n\nvar localeSets = {\n GDPR_COUNTRIES: _localeSets.GDPRCountryCodes,\n SM_SUPPORTED_COUNTRIES: _localeSets.SMSupportedCountryCodes,\n EU_COUNTRIES: _localeSets.EUCountryCodes,\n US_TERRITORIES: _localeSets.USTerritoryCountryCodes,\n GB_COUNTRIES: _localeSets.GBCountryCodes,\n DASH_COUNTRIES: _localeSets.DASHCountryCodes\n};\nexports.localeSets = localeSets;\n/**\n * @param {string} country - code\n * @param {string} fallBackCountry - default country code\n * @returns {string} two letter country code, default to US if a fallback is not provided\n */\n\nfunction sanitizeCountryCode(country) {\n var fallBackCountry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _localeSets.CountryCodes.US;\n var isString = typeof country === 'string';\n\n if (!isString) {\n // TODO log this\n !false ? process.env.NODE_ENV !== \"production\" ? (0, _invariant.default)(false, 'Country code is not a string.') : (0, _invariant.default)(false) : void 0;\n return fallBackCountry;\n }\n\n var isTwoLetterCode = country.length === 2;\n\n if (!isTwoLetterCode) {\n // TODO log this\n !false ? process.env.NODE_ENV !== \"production\" ? (0, _invariant.default)(false, 'Country code is not a 2 letter code') : (0, _invariant.default)(false) : void 0;\n return fallBackCountry;\n }\n\n return _localeSets.SMSupportedCountryCodes.find(function (c) {\n return c === country.toUpperCase();\n }) || fallBackCountry.toUpperCase();\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {bool} if that country has GDPR laws\n */\n\n\nfunction isGDPRCountry(country) {\n // if we cannot determine the country, assume GDPR country ie GB\n return _localeSets.GDPRCountryCodes.includes(sanitizeCountryCode(country, _localeSets.CountryCodes.GB));\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {bool} if country is in DASH country set\n */\n\n\nfunction isDACHCountry(country) {\n // if we cannot determine the country, assume non Dash ie. US\n return _localeSets.DASHCountryCodes.includes(sanitizeCountryCode(country, _localeSets.CountryCodes.US));\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {bool} if country is in the United Kingdoms\n * @public\n */\n\n\nfunction isGBCountry(country) {\n // if we cannot determine the country, assume GB country\n return _localeSets.GBCountryCodes.includes(sanitizeCountryCode(country, _localeSets.CountryCodes.GB));\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {bool} if country is a US Territory\n * @public\n */\n\n\nfunction isUSTerritory(country) {\n // if we cannot determine the country, assume Non US\n return _localeSets.USTerritoryCountryCodes.includes(sanitizeCountryCode(country, _localeSets.CountryCodes.GB));\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {bool} if country is in European Union\n * @public\n */\n\n\nfunction isEUCountry(country) {\n // if we cannot determine the country, assume EU. (joelm: WHY?!?!?!)\n return _localeSets.EUCountryCodes.includes(sanitizeCountryCode(country, _localeSets.CountryCodes.GB));\n}\n/**\n * @param {string} hostname\n * @returns {bool} if host is a EUDC\n * @public\n */\n\n\nfunction isEUDC(hostname) {\n return (0, _dataCenters.getDataCenterIdFromCurrentUrl)(hostname) === _dataCenters.DataCenterIds.EU;\n}\n/**\n * @param {string} subdomain\n * @returns {bool} if EU Subdomain\n * @public\n */\n\n\nfunction isEUSubdomain(subdomain) {\n return !!(subdomain && subdomain.indexOf('eu') !== -1);\n}\n/**\n * @returns {Array} list of European Union Countries\n * @public\n */\n\n\nfunction getEUCountries() {\n return _toConsumableArray(_localeSets.EUCountryCodes);\n}\n/**\n * @returns {Array} List of SM supported TLDs\n * @public\n */\n\n\nfunction getCookieTransportTLDs() {\n return _tlds.default.filter(function (tld) {\n return tld.enabled;\n }).map(function (tld) {\n return tld.tld;\n });\n}\n/**\n * @returns {Array} Countries that SM Audience supports\n * @public\n */\n\n\nfunction getAudienceSupportedCountries() {\n // TODO change this to just return list of country codes\n return {\n US: 'United States',\n AU: 'Australia',\n CA: 'Canada',\n NZ: 'New Zealand',\n SG: 'Singapore',\n GB: 'United Kingdom',\n IE: 'Ireland'\n };\n}\n/**\n * @returns {Array} Countries that SM Benchmarks supports\n * @public\n */\n\n\nfunction getBenchmarksSupportedCountries() {\n // TODO change this to jst return a list of country codes\n return {\n US: 'United States'\n };\n}\n/**\n * @returns {Array} Countries that SM supports\n * @public\n */\n\n\nfunction getSMSupportedCountries() {\n return _toConsumableArray(_localeSets.SMSupportedCountryCodes);\n}\n/**\n * @returns {Object} Language Object that SM Supports\n * @public\n */\n\n\nfunction getSiteSupportedLanguages() {\n return _languages.LANGUAGES.filter(function (language) {\n return language.supportLevel === _languages.SupportLevels.SITE_WIDE;\n });\n}\n/**\n * @param {string} country - Two-letter country code\n * @returns {string} language code\n */\n\n\nfunction getLanguageCodeFromCountryCode(country) {\n var language = _languages.LANGUAGES.find(function (lang) {\n return lang.countries.includes(sanitizeCountryCode(country));\n });\n\n return language ? language.code : 'en';\n}\n/**\n * Returns the language code from the subdomain\n * @param {string} subdomain\n * @returns {string} language code\n */\n\n\nfunction getLanguageCodeFromSubdomain(subdomain) {\n if (subdomain === 'eu' || subdomain === 'www') {\n return 'en';\n }\n\n var language = _languages.LANGUAGES_WITH_SUBDOMAINS.find(function (lang) {\n return lang.subdomain === subdomain || \"\".concat(lang.subdomain, \".eu\") === subdomain;\n });\n\n if (language) {\n return language.code;\n }\n\n return 'en';\n}\n/**\n * Returns the subdomain from the language code and data center combination\n * @param {string} languageCode\n * @param {string} dataCenterId\n * @returns {string} subdomain\n */\n\n\nfunction getSubdomainFromLanguageCodeAndDataCenter(languageCode, dataCenterId) {\n var language = _languages.LANGUAGES_BY_CODE[languageCode];\n var result = language.subdomain;\n\n if (dataCenterId === _dataCenters.DataCenterIds.EU) {\n result = \"\".concat(language.subdomain, \".eu\");\n } else if (language.tld === language.subdomain) {\n // override for langs like de and ru which have a cctld\n // only affects www.sm.de || www.sm.ru\n result = 'www';\n }\n\n return result === 'www.eu' ? 'eu' : result;\n}\n/**\n * @returns {Array} Language codes that SM Supports\n * @public\n */\n\n\nfunction getSiteSupportedLanguageCodes() {\n return getSiteSupportedLanguages().map(function (language) {\n return language.code;\n });\n}\n/**\n * Returns the tld language info\n * @param {string} tld\n * @returns {string} language info\n */\n\n\nfunction getTldLanguageInfo(tld) {\n var data = _tlds.default.find(function (i) {\n return i.tld === tld;\n });\n\n if (!data) {\n return _tlds.default.find(function (i) {\n return i.tld === 'com';\n });\n }\n\n return data;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertLanguageTag = convertLanguageTag;\nexports.getLanguageTagByCode = getLanguageTagByCode;\nexports.getLanguageTagById = getLanguageTagById;\nexports.getLanguageTags = getLanguageTags;\nexports.normalizeLanguageTag = normalizeLanguageTag;\nexports.parseLanguageTag = parseLanguageTag;\n\nvar _languageTags = _interopRequireDefault(require(\"./data/language-tags.json\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function _wrapRegExp(re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n var i = g[name];\n if (\"number\" == typeof i) groups[name] = result[i];else {\n for (var k = 0; void 0 === result[i[k]] && k + 1 < i.length;) {\n k++;\n }\n\n groups[name] = result[i[k]];\n }\n return groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n if (result) {\n result.groups = buildGroups(result, this);\n var indices = result.indices;\n indices && (indices.groups = buildGroups(indices, this));\n }\n\n return result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n var group = groups[name];\n return \"$\" + (Array.isArray(group) ? group.join(\"$\") : group);\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nvar tagRegEx = /*#__PURE__*/_wrapRegExp(/^([a-z]{2,3})(_([A-Z]{1}[a-z]{3}))?(_([A-Z]{2}|[0-9]{3}))?(_([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))?$/, {\n primary: 1,\n script: 3,\n region: 5,\n variant: 7\n});\n\nvar LANGUAGE_TAGS = _languageTags.default;\n/**\n * Break a sting Language Tag into it's components based on IETF BCP 47\n *\n * @param tag - (_casing sensitive_) the language tag to be parsed, e.g.:\n * - `pt` for portuguese\n * - `pt_BR` for brasilia portuguese\n * - `zh_Hant_TW` for _Chinese (Traditional, Taiwan)_\n * - `en_US_POSIX` for _English (United States, Computer)_\n */\n\nfunction parseLanguageTag(tag) {\n var matches = tagRegEx.exec(tag);\n return matches === null || matches === void 0 ? void 0 : matches.groups;\n}\n/**\n * Replace the delimiter of the string Language Tag, by default to the ISO standard `-`\n *\n * @param tag - the language tag to be converted, e.g.:\n * - `pt` for portuguese\n * - `pt_BR` for brasilia portuguese\n * - `zh_Hant_TW` for _Chinese (Traditional, Taiwan)_\n * - `en_US_POSIX` for _English (United States, Computer)_\n */\n\n\nfunction convertLanguageTag(tag) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return tag.replace(/[_-]/gi, delimiter);\n}\n/**\n * Convert the string Language Tag to all lowercase hyphenated representation\n *\n * @example `zh_Hant_TW` becomes `zh-hant-tw`\n *\n * @param tag - the language tag to be normalized, e.g.:\n * - `pt` for portuguese\n * - `pt_BR` for brasilia portuguese\n * - `zh_Hant_TW` for _Chinese (Traditional, Taiwan)_\n * - `en_US_POSIX` for _English (United States, Computer)_\n */\n\n\nfunction normalizeLanguageTag(tag) {\n return convertLanguageTag(tag).toLowerCase();\n}\n/** Get array of all possible `LanguageTagDefinition` */\n\n\nfunction getLanguageTags() {\n return LANGUAGE_TAGS;\n}\n/**\n * Get a specific `LanguageTagDefinition` by its id\n *\n * @param id example `\"1\"` for _English_ or `\"361\"` for _Croatian (Bosnia and Herzegovina)_\n * @returns\n */\n\n\nfunction getLanguageTagById(id) {\n return LANGUAGE_TAGS.find(function (def) {\n return def.id === id;\n });\n}\n/**\n * Convert the string Language Tag to all lowercase hyphenated representation\n *\n * @example `zh_Hant_TW` becomes `zh-hant-tw`\n *\n * @param code - the code (aka. language tag) to be searched for, e.g.:\n * - `pt` for portuguese\n * - `pt_BR` for brasilia portuguese\n * - `zh_Hant_TW` for _Chinese (Traditional, Taiwan)_\n * - `en_US_POSIX` for _English (United States, Computer)_\n */\n\n\nfunction getLanguageTagByCode(code) {\n var nt = normalizeLanguageTag;\n return LANGUAGE_TAGS.find(function (def) {\n return nt(def.code) === nt(code);\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SupportLevels = exports.LANGUAGES_WITH_SUBDOMAINS = exports.LANGUAGES_BY_ID = exports.LANGUAGES_BY_CODE = exports.LANGUAGES = void 0;\n/*\nSM has the language data recorded in a number of places. There is DB table sm_Localization_D_Languages present in multiple schemas.\nHere are some examples of the sources that support createweb languages. There are many more references to the top 17 languages supported SM-wide.\nhttps://code.corp.surveymonkey.com/devmonkeys/smlib.locale/blob/master/smlib/locale/locale.yml#L330\nhttps://code.corp.surveymonkey.com/devmonkeys/createweb/blob/develop/createweb/lib/translations.py\nhttps://code.corp.surveymonkey.com/devmonkeys/smsdk.surveysvc/blob/master/smsdk/surveysvc/lib/languages.yml\nhttps://code.corp.surveymonkey.com/devmonkeys/AnWeb/blob/develop/anweb/lib/languages.py\n*/\n\n/**\n * @constant\n * @default\n * @memberof module:@sm/locale\n */\n\nvar SupportLevels;\nexports.SupportLevels = SupportLevels;\n\n(function (SupportLevels) {\n SupportLevels[SupportLevels[\"SITE_WIDE\"] = 1] = \"SITE_WIDE\";\n SupportLevels[SupportLevels[\"SURVEY_CREATION\"] = 2] = \"SURVEY_CREATION\";\n SupportLevels[SupportLevels[\"MULTILINGUAL_SURVEYS\"] = 3] = \"MULTILINGUAL_SURVEYS\";\n})(SupportLevels || (exports.SupportLevels = SupportLevels = {}));\n/**\n * An array of available languages.\n *\n * The language codes in the database do not follow IETF language tag standard https://en.wikipedia.org/wiki/IETF_language_tag\n * or confuse regional locale with language dialect. That causes issues when working with internationalization libraries like ICU.\n * The field code is the \"code\" as in the SM database and python packages. The \"codeIETF\" is the correct code. This API accepts both.\n * For the output choose \"code\" unless you are sure that the consumer supports IETF codes (e.g, uses this library).\n * @type {Array}\n * @memberof module:@sm/locale\n */\n\n\nvar LANGUAGES = [{\n code: 'sq',\n name: 'Albanian',\n id: 24,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ar',\n name: 'Arabic',\n id: 25,\n countries: [],\n isRTL: true,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'hy',\n name: 'Armenian',\n id: 26,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'eu',\n name: 'Basque',\n id: 27,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'bn',\n name: 'Bengali',\n id: 28,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'bs',\n name: 'Bosnian',\n id: 29,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'bg',\n name: 'Bulgarian',\n id: 30,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ca',\n name: 'Catalan',\n id: 31,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'zh-cn',\n codeIETF: 'zh-Hans',\n name: 'Chinese (Simplified)',\n id: 2,\n countries: [],\n isRTL: false,\n subdomain: 'www',\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'zh-tw',\n codeIETF: 'zh-Hant',\n name: 'Chinese (Traditional)',\n displayName: '中文(繁體)',\n id: 3,\n helplink: 'zh_TW',\n helpCenterLangCode: 'zh',\n tld: 'com',\n subdomain: 'zh',\n countries: ['TW'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 14\n}, {\n code: 'pt-br',\n name: 'Portuguese (Brazilian)',\n id: 17,\n displayName: 'Português',\n helplink: 'pt_BR',\n helpCenterLangCode: 'pt-br',\n tld: 'com',\n subdomain: 'pt',\n countries: ['BR', 'PT', 'AO', 'CV'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 2\n}, {\n code: 'pt',\n name: 'Portuguese (Iberian)',\n id: 16,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'hr',\n name: 'Croatian',\n id: 32,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'cs',\n name: 'Czech',\n id: 33,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'da',\n name: 'Danish',\n displayName: 'Dansk',\n tld: 'com',\n helplink: 'en_US',\n subdomain: 'da',\n id: 4,\n countries: ['DK', 'GL'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 10\n}, {\n code: 'nl',\n name: 'Dutch',\n id: 5,\n displayName: 'Nederlands',\n helplink: 'nl_NL',\n helpCenterLangCode: 'nl',\n subdomain: 'nl',\n tld: 'com',\n countries: ['NL', 'BE'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 4\n}, {\n code: 'en',\n name: 'English',\n id: 1,\n tld: 'com',\n subdomain: 'www',\n displayName: 'English',\n helplink: 'en_US',\n helpCenterLangCode: 'en',\n countries: ['US', 'AU', 'GB', 'IE', 'CA', 'GG', 'NZ'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 5\n}, {\n code: 'et',\n name: 'Estonian',\n id: 34,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'tl',\n codeIETF: 'fil',\n name: 'Filipino',\n id: 35,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'fi',\n name: 'Finnish',\n id: 6,\n displayName: 'Suomi',\n helplink: 'en_US',\n tld: 'com',\n subdomain: 'fi',\n countries: ['FI'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 17\n}, {\n code: 'fr',\n name: 'French',\n id: 7,\n displayName: 'Français',\n helplink: 'fr',\n helpCenterLangCode: 'fr',\n tld: 'com',\n subdomain: 'fr',\n countries: ['FR', 'MA', 'DZ', 'TN', 'RE', 'CI', 'SN', 'TG', 'MQ', 'GP', 'PF', 'CG', 'CM', 'BJ', 'CD'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 7\n}, {\n code: 'ka',\n name: 'Georgian',\n id: 36,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'de',\n name: 'German',\n id: 8,\n displayName: 'Deutsch',\n helplink: 'de',\n helpCenterLangCode: 'de',\n tld: 'de',\n subdomain: 'de',\n countries: ['DE', 'AT', 'CH', 'LI'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 3\n}, {\n code: 'el',\n name: 'Greek',\n id: 9,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'he',\n name: 'Hebrew',\n id: 37,\n countries: [],\n isRTL: true,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'hi',\n name: 'Hindi',\n id: 38,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'hu',\n name: 'Hungarian',\n id: 39,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'is',\n name: 'Icelandic',\n id: 40,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'id',\n name: 'Indonesian',\n id: 41,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ga',\n name: 'Irish',\n id: 42,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'it',\n name: 'Italian',\n id: 10,\n displayName: 'Italiano',\n helplink: 'it',\n helpCenterLangCode: 'it',\n tld: 'com',\n subdomain: 'it',\n countries: ['IT'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 9\n}, {\n code: 'ja',\n name: 'Japanese',\n id: 11,\n displayName: '日本語',\n helplink: 'ja',\n helpCenterLangCode: 'ja',\n tld: 'com',\n subdomain: 'jp',\n countries: ['JP'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 12\n}, {\n code: 'ko',\n name: 'Korean',\n id: 12,\n displayName: '한국어',\n helplink: 'ko',\n helpCenterLangCode: 'ko',\n tld: 'com',\n subdomain: 'ko',\n countries: ['KP', 'KR'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 13\n}, {\n code: 'ku',\n name: 'Kurdish',\n id: 43,\n countries: [],\n\n /** Kurdish can be written in two scripts - it may or may not be RTL */\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'lv',\n name: 'Latvian',\n id: 44,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'lt',\n name: 'Lithuanian',\n id: 45,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'mk',\n name: 'Macedonian',\n id: 46,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ms',\n name: 'Malay',\n id: 13,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ml',\n name: 'Malayalam',\n id: 47,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'no',\n codeIETF: 'nb',\n name: 'Norwegian',\n id: 14,\n displayName: 'Norsk',\n helplink: 'en_US',\n tld: 'com',\n subdomain: 'no',\n countries: ['NO', 'SJ'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 16\n}, {\n code: 'fa',\n name: 'Persian',\n id: 48,\n countries: [],\n isRTL: true,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'pl',\n name: 'Polish',\n id: 15,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'pa',\n name: 'Punjabi',\n id: 49,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ro',\n name: 'Romanian',\n id: 50,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'ru',\n name: 'Russian',\n id: 18,\n displayName: 'Русский',\n helplink: 'ru',\n helpCenterLangCode: 'ru',\n tld: 'ru',\n subdomain: 'ru',\n countries: ['RU', 'BY', 'UA', 'KZ', 'UZ', 'TJ', 'AZ', 'TM', 'AM', 'MD', 'KG'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 8\n}, {\n code: 'sr',\n name: 'Serbian',\n id: 51,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'sk',\n name: 'Slovak',\n id: 52,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'sl',\n name: 'Slovenian',\n id: 53,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'es',\n name: 'Spanish',\n id: 19,\n displayName: 'Español',\n helplink: 'es',\n helpCenterLangCode: 'es-la',\n tld: 'com',\n subdomain: 'es',\n countries: ['MX', 'ES', 'AR', 'GT', 'HN', 'SV', 'NI', 'CR', 'PA', 'GQ', 'CU', 'DO', 'PR', 'VE', 'CO', 'EC', 'PE', 'BO', 'PY', 'CL', 'UY'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 1\n}, {\n code: 'sw',\n name: 'Swahili',\n id: 54,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'sv',\n name: 'Swedish',\n id: 20,\n displayName: 'Svenska',\n helplink: 'en_US',\n tld: 'com',\n subdomain: 'sv',\n countries: ['SE'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 11\n}, {\n code: 'ta',\n name: 'Tamil',\n id: 55,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'te',\n name: 'Telugu',\n id: 56,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'th',\n name: 'Thai',\n id: 57,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'tr',\n name: 'Turkish',\n id: 21,\n displayName: 'Türkçe',\n helplink: 'tr',\n helpCenterLangCode: 'tr',\n tld: 'com',\n subdomain: 'tr',\n countries: ['TR'],\n isRTL: false,\n supportLevel: SupportLevels.SITE_WIDE,\n displayOrder: 15\n}, {\n code: 'uk',\n name: 'Ukrainian',\n id: 22,\n countries: ['UA'],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'vi',\n name: 'Vietnamese',\n id: 58,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}, {\n code: 'cy',\n name: 'Welsh',\n id: 59,\n countries: [],\n isRTL: false,\n supportLevel: SupportLevels.SURVEY_CREATION\n}];\n/**\n * Languages by ID\n * @memberof module:@sm/locale\n */\n\nexports.LANGUAGES = LANGUAGES;\nvar LANGUAGES_BY_ID_REC = {};\n/**\n * Languages by code\n * @memberof module:@sm/locale\n */\n\nvar LANGUAGES_BY_CODE_REC = {};\n/**\n * Languages with sub-domains\n * @memberof module:@sm/locale\n */\n\nvar LANGUAGES_WITH_SUBDOMAINS_REC = [];\nLANGUAGES.forEach(function (language) {\n LANGUAGES_BY_ID_REC[language.id] = language;\n LANGUAGES_BY_CODE_REC[language.code] = language;\n\n if (language.codeIETF) {\n LANGUAGES_BY_CODE_REC[language.codeIETF] = language;\n }\n\n if (language.subdomain) {\n LANGUAGES_WITH_SUBDOMAINS_REC.push(language);\n }\n});\nvar LANGUAGES_BY_ID = Object.freeze(LANGUAGES_BY_ID_REC);\nexports.LANGUAGES_BY_ID = LANGUAGES_BY_ID;\nvar LANGUAGES_BY_CODE = Object.freeze(LANGUAGES_BY_CODE_REC);\nexports.LANGUAGES_BY_CODE = LANGUAGES_BY_CODE;\nvar LANGUAGES_WITH_SUBDOMAINS = Object.freeze(LANGUAGES_WITH_SUBDOMAINS_REC);\nexports.LANGUAGES_WITH_SUBDOMAINS = LANGUAGES_WITH_SUBDOMAINS;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.USTerritoryCountryCodes = exports.SMSupportedCountryCodes = exports.GDPRCountryCodes = exports.GBCountryCodes = exports.EUCountryCodes = exports.DASHCountryCodes = exports.CountryCodes = void 0;\nvar CountryCodes;\nexports.CountryCodes = CountryCodes;\n\n(function (CountryCodes) {\n CountryCodes[\"AE\"] = \"AE\";\n CountryCodes[\"AR\"] = \"AR\";\n CountryCodes[\"AU\"] = \"AU\";\n CountryCodes[\"BR\"] = \"BR\";\n CountryCodes[\"CA\"] = \"CA\";\n CountryCodes[\"CH\"] = \"CH\";\n CountryCodes[\"LI\"] = \"LI\";\n CountryCodes[\"DK\"] = \"DK\";\n CountryCodes[\"FO\"] = \"FO\";\n CountryCodes[\"GL\"] = \"GL\";\n CountryCodes[\"AD\"] = \"AD\";\n CountryCodes[\"AL\"] = \"AL\";\n CountryCodes[\"AT\"] = \"AT\";\n CountryCodes[\"AX\"] = \"AX\";\n CountryCodes[\"BA\"] = \"BA\";\n CountryCodes[\"BE\"] = \"BE\";\n CountryCodes[\"BG\"] = \"BG\";\n CountryCodes[\"BY\"] = \"BY\";\n CountryCodes[\"CY\"] = \"CY\";\n CountryCodes[\"CZ\"] = \"CZ\";\n CountryCodes[\"DE\"] = \"DE\";\n CountryCodes[\"EE\"] = \"EE\";\n CountryCodes[\"ES\"] = \"ES\";\n CountryCodes[\"FI\"] = \"FI\";\n CountryCodes[\"FR\"] = \"FR\";\n CountryCodes[\"GF\"] = \"GF\";\n CountryCodes[\"GP\"] = \"GP\";\n CountryCodes[\"GR\"] = \"GR\";\n CountryCodes[\"HR\"] = \"HR\";\n CountryCodes[\"HU\"] = \"HU\";\n CountryCodes[\"IE\"] = \"IE\";\n CountryCodes[\"IS\"] = \"IS\";\n CountryCodes[\"IT\"] = \"IT\";\n CountryCodes[\"LT\"] = \"LT\";\n CountryCodes[\"LU\"] = \"LU\";\n CountryCodes[\"LV\"] = \"LV\";\n CountryCodes[\"MC\"] = \"MC\";\n CountryCodes[\"MD\"] = \"MD\";\n CountryCodes[\"ME\"] = \"ME\";\n CountryCodes[\"MF\"] = \"MF\";\n CountryCodes[\"MK\"] = \"MK\";\n CountryCodes[\"MQ\"] = \"MQ\";\n CountryCodes[\"MT\"] = \"MT\";\n CountryCodes[\"NL\"] = \"NL\";\n CountryCodes[\"PL\"] = \"PL\";\n CountryCodes[\"PM\"] = \"PM\";\n CountryCodes[\"PT\"] = \"PT\";\n CountryCodes[\"RE\"] = \"RE\";\n CountryCodes[\"RO\"] = \"RO\";\n CountryCodes[\"RS\"] = \"RS\";\n CountryCodes[\"RU\"] = \"RU\";\n CountryCodes[\"SI\"] = \"SI\";\n CountryCodes[\"SK\"] = \"SK\";\n CountryCodes[\"SM\"] = \"SM\";\n CountryCodes[\"TF\"] = \"TF\";\n CountryCodes[\"TR\"] = \"TR\";\n CountryCodes[\"UA\"] = \"UA\";\n CountryCodes[\"VA\"] = \"VA\";\n CountryCodes[\"YT\"] = \"YT\";\n CountryCodes[\"GB\"] = \"GB\";\n CountryCodes[\"GG\"] = \"GG\";\n CountryCodes[\"GI\"] = \"GI\";\n CountryCodes[\"GS\"] = \"GS\";\n CountryCodes[\"IM\"] = \"IM\";\n CountryCodes[\"JE\"] = \"JE\";\n CountryCodes[\"HK\"] = \"HK\";\n CountryCodes[\"IN\"] = \"IN\";\n CountryCodes[\"JP\"] = \"JP\";\n CountryCodes[\"KR\"] = \"KR\";\n CountryCodes[\"MX\"] = \"MX\";\n CountryCodes[\"NO\"] = \"NO\";\n CountryCodes[\"NZ\"] = \"NZ\";\n CountryCodes[\"SE\"] = \"SE\";\n CountryCodes[\"SG\"] = \"SG\";\n CountryCodes[\"TW\"] = \"TW\";\n CountryCodes[\"AF\"] = \"AF\";\n CountryCodes[\"AG\"] = \"AG\";\n CountryCodes[\"AI\"] = \"AI\";\n CountryCodes[\"AM\"] = \"AM\";\n CountryCodes[\"AN\"] = \"AN\";\n CountryCodes[\"AO\"] = \"AO\";\n CountryCodes[\"AQ\"] = \"AQ\";\n CountryCodes[\"AS\"] = \"AS\";\n CountryCodes[\"AW\"] = \"AW\";\n CountryCodes[\"AZ\"] = \"AZ\";\n CountryCodes[\"BB\"] = \"BB\";\n CountryCodes[\"BD\"] = \"BD\";\n CountryCodes[\"BF\"] = \"BF\";\n CountryCodes[\"BH\"] = \"BH\";\n CountryCodes[\"BI\"] = \"BI\";\n CountryCodes[\"BJ\"] = \"BJ\";\n CountryCodes[\"BL\"] = \"BL\";\n CountryCodes[\"BM\"] = \"BM\";\n CountryCodes[\"BN\"] = \"BN\";\n CountryCodes[\"BO\"] = \"BO\";\n CountryCodes[\"BS\"] = \"BS\";\n CountryCodes[\"BT\"] = \"BT\";\n CountryCodes[\"BV\"] = \"BV\";\n CountryCodes[\"BW\"] = \"BW\";\n CountryCodes[\"BZ\"] = \"BZ\";\n CountryCodes[\"CC\"] = \"CC\";\n CountryCodes[\"CD\"] = \"CD\";\n CountryCodes[\"CF\"] = \"CF\";\n CountryCodes[\"CG\"] = \"CG\";\n CountryCodes[\"CI\"] = \"CI\";\n CountryCodes[\"CK\"] = \"CK\";\n CountryCodes[\"CL\"] = \"CL\";\n CountryCodes[\"CM\"] = \"CM\";\n CountryCodes[\"CN\"] = \"CN\";\n CountryCodes[\"CO\"] = \"CO\";\n CountryCodes[\"CR\"] = \"CR\";\n CountryCodes[\"CV\"] = \"CV\";\n CountryCodes[\"CX\"] = \"CX\";\n CountryCodes[\"DJ\"] = \"DJ\";\n CountryCodes[\"DM\"] = \"DM\";\n CountryCodes[\"DO\"] = \"DO\";\n CountryCodes[\"DZ\"] = \"DZ\";\n CountryCodes[\"EC\"] = \"EC\";\n CountryCodes[\"EG\"] = \"EG\";\n CountryCodes[\"EH\"] = \"EH\";\n CountryCodes[\"ER\"] = \"ER\";\n CountryCodes[\"ET\"] = \"ET\";\n CountryCodes[\"FJ\"] = \"FJ\";\n CountryCodes[\"FK\"] = \"FK\";\n CountryCodes[\"FM\"] = \"FM\";\n CountryCodes[\"GA\"] = \"GA\";\n CountryCodes[\"GD\"] = \"GD\";\n CountryCodes[\"GE\"] = \"GE\";\n CountryCodes[\"GH\"] = \"GH\";\n CountryCodes[\"GM\"] = \"GM\";\n CountryCodes[\"GN\"] = \"GN\";\n CountryCodes[\"GQ\"] = \"GQ\";\n CountryCodes[\"GT\"] = \"GT\";\n CountryCodes[\"GU\"] = \"GU\";\n CountryCodes[\"GW\"] = \"GW\";\n CountryCodes[\"GY\"] = \"GY\";\n CountryCodes[\"HM\"] = \"HM\";\n CountryCodes[\"HN\"] = \"HN\";\n CountryCodes[\"HT\"] = \"HT\";\n CountryCodes[\"ID\"] = \"ID\";\n CountryCodes[\"IL\"] = \"IL\";\n CountryCodes[\"IO\"] = \"IO\";\n CountryCodes[\"IQ\"] = \"IQ\";\n CountryCodes[\"JM\"] = \"JM\";\n CountryCodes[\"JO\"] = \"JO\";\n CountryCodes[\"KE\"] = \"KE\";\n CountryCodes[\"KG\"] = \"KG\";\n CountryCodes[\"KH\"] = \"KH\";\n CountryCodes[\"KI\"] = \"KI\";\n CountryCodes[\"KM\"] = \"KM\";\n CountryCodes[\"KN\"] = \"KN\";\n CountryCodes[\"KP\"] = \"KP\";\n CountryCodes[\"KW\"] = \"KW\";\n CountryCodes[\"KY\"] = \"KY\";\n CountryCodes[\"KZ\"] = \"KZ\";\n CountryCodes[\"LA\"] = \"LA\";\n CountryCodes[\"LB\"] = \"LB\";\n CountryCodes[\"LC\"] = \"LC\";\n CountryCodes[\"LK\"] = \"LK\";\n CountryCodes[\"LR\"] = \"LR\";\n CountryCodes[\"LS\"] = \"LS\";\n CountryCodes[\"LY\"] = \"LY\";\n CountryCodes[\"MA\"] = \"MA\";\n CountryCodes[\"MG\"] = \"MG\";\n CountryCodes[\"MH\"] = \"MH\";\n CountryCodes[\"ML\"] = \"ML\";\n CountryCodes[\"MM\"] = \"MM\";\n CountryCodes[\"MN\"] = \"MN\";\n CountryCodes[\"MO\"] = \"MO\";\n CountryCodes[\"MP\"] = \"MP\";\n CountryCodes[\"MR\"] = \"MR\";\n CountryCodes[\"MS\"] = \"MS\";\n CountryCodes[\"MU\"] = \"MU\";\n CountryCodes[\"MV\"] = \"MV\";\n CountryCodes[\"MW\"] = \"MW\";\n CountryCodes[\"MY\"] = \"MY\";\n CountryCodes[\"MZ\"] = \"MZ\";\n CountryCodes[\"NA\"] = \"NA\";\n CountryCodes[\"NC\"] = \"NC\";\n CountryCodes[\"NE\"] = \"NE\";\n CountryCodes[\"NF\"] = \"NF\";\n CountryCodes[\"NG\"] = \"NG\";\n CountryCodes[\"NI\"] = \"NI\";\n CountryCodes[\"NP\"] = \"NP\";\n CountryCodes[\"NR\"] = \"NR\";\n CountryCodes[\"NU\"] = \"NU\";\n CountryCodes[\"OM\"] = \"OM\";\n CountryCodes[\"PA\"] = \"PA\";\n CountryCodes[\"PE\"] = \"PE\";\n CountryCodes[\"PF\"] = \"PF\";\n CountryCodes[\"PG\"] = \"PG\";\n CountryCodes[\"PH\"] = \"PH\";\n CountryCodes[\"PK\"] = \"PK\";\n CountryCodes[\"PN\"] = \"PN\";\n CountryCodes[\"PR\"] = \"PR\";\n CountryCodes[\"PS\"] = \"PS\";\n CountryCodes[\"PW\"] = \"PW\";\n CountryCodes[\"PY\"] = \"PY\";\n CountryCodes[\"QA\"] = \"QA\";\n CountryCodes[\"RW\"] = \"RW\";\n CountryCodes[\"SA\"] = \"SA\";\n CountryCodes[\"SB\"] = \"SB\";\n CountryCodes[\"SC\"] = \"SC\";\n CountryCodes[\"SH\"] = \"SH\";\n CountryCodes[\"SJ\"] = \"SJ\";\n CountryCodes[\"SL\"] = \"SL\";\n CountryCodes[\"SN\"] = \"SN\";\n CountryCodes[\"SO\"] = \"SO\";\n CountryCodes[\"SR\"] = \"SR\";\n CountryCodes[\"ST\"] = \"ST\";\n CountryCodes[\"SV\"] = \"SV\";\n CountryCodes[\"SY\"] = \"SY\";\n CountryCodes[\"SZ\"] = \"SZ\";\n CountryCodes[\"TC\"] = \"TC\";\n CountryCodes[\"TD\"] = \"TD\";\n CountryCodes[\"TG\"] = \"TG\";\n CountryCodes[\"TH\"] = \"TH\";\n CountryCodes[\"TJ\"] = \"TJ\";\n CountryCodes[\"TK\"] = \"TK\";\n CountryCodes[\"TL\"] = \"TL\";\n CountryCodes[\"TM\"] = \"TM\";\n CountryCodes[\"TN\"] = \"TN\";\n CountryCodes[\"TO\"] = \"TO\";\n CountryCodes[\"TT\"] = \"TT\";\n CountryCodes[\"TV\"] = \"TV\";\n CountryCodes[\"TZ\"] = \"TZ\";\n CountryCodes[\"UG\"] = \"UG\";\n CountryCodes[\"UM\"] = \"UM\";\n CountryCodes[\"US\"] = \"US\";\n CountryCodes[\"UY\"] = \"UY\";\n CountryCodes[\"UZ\"] = \"UZ\";\n CountryCodes[\"VC\"] = \"VC\";\n CountryCodes[\"VE\"] = \"VE\";\n CountryCodes[\"VG\"] = \"VG\";\n CountryCodes[\"VI\"] = \"VI\";\n CountryCodes[\"VN\"] = \"VN\";\n CountryCodes[\"VU\"] = \"VU\";\n CountryCodes[\"WF\"] = \"WF\";\n CountryCodes[\"WS\"] = \"WS\";\n CountryCodes[\"YE\"] = \"YE\";\n CountryCodes[\"ZM\"] = \"ZM\";\n CountryCodes[\"ZW\"] = \"ZW\";\n CountryCodes[\"ZA\"] = \"ZA\";\n})(CountryCodes || (exports.CountryCodes = CountryCodes = {}));\n\nvar GDPRCountryCodes = [CountryCodes.AT, CountryCodes.BE, CountryCodes.BG, CountryCodes.CH, CountryCodes.CY, CountryCodes.CZ, CountryCodes.DE, CountryCodes.DK, CountryCodes.EE, CountryCodes.ES, CountryCodes.FI, CountryCodes.FR, CountryCodes.GB, CountryCodes.GR, CountryCodes.HR, CountryCodes.HU, CountryCodes.IE, CountryCodes.IM, CountryCodes.IT, CountryCodes.LT, CountryCodes.LU, CountryCodes.LV, CountryCodes.MC, CountryCodes.MT, CountryCodes.NL, CountryCodes.PL, CountryCodes.PT, CountryCodes.RO, CountryCodes.SE, CountryCodes.SI, CountryCodes.SK, CountryCodes.IS, CountryCodes.LI, CountryCodes.NO];\nexports.GDPRCountryCodes = GDPRCountryCodes;\nvar DASHCountryCodes = [CountryCodes.DE, CountryCodes.AT, CountryCodes.CH];\nexports.DASHCountryCodes = DASHCountryCodes;\nvar GBCountryCodes = [CountryCodes.GB, CountryCodes.GG, CountryCodes.GI, CountryCodes.GS, CountryCodes.IM, CountryCodes.JE];\nexports.GBCountryCodes = GBCountryCodes;\nvar USTerritoryCountryCodes = [CountryCodes.GU, CountryCodes.PR, CountryCodes.UM, CountryCodes.US, CountryCodes.VI];\nexports.USTerritoryCountryCodes = USTerritoryCountryCodes;\nvar EUCountryCodes = [CountryCodes.AT, CountryCodes.BE, CountryCodes.BG, CountryCodes.CY, CountryCodes.CZ, CountryCodes.DE, CountryCodes.DK, CountryCodes.EE, CountryCodes.ES, CountryCodes.FI, CountryCodes.FR, CountryCodes.GB, CountryCodes.GR, CountryCodes.HR, CountryCodes.HU, CountryCodes.IE, CountryCodes.IM, CountryCodes.IT, CountryCodes.LT, CountryCodes.LU, CountryCodes.LV, CountryCodes.MC, CountryCodes.MT, CountryCodes.NL, CountryCodes.PL, CountryCodes.PT, CountryCodes.RO, CountryCodes.SE, CountryCodes.SI, CountryCodes.SK];\nexports.EUCountryCodes = EUCountryCodes;\nvar SMSupportedCountryCodes = [CountryCodes.AE, CountryCodes.AR, CountryCodes.AU, CountryCodes.BR, CountryCodes.CA, CountryCodes.CH, CountryCodes.LI, CountryCodes.DK, CountryCodes.FO, CountryCodes.GL, CountryCodes.AD, CountryCodes.AL, CountryCodes.AT, CountryCodes.AX, CountryCodes.BA, CountryCodes.BE, CountryCodes.BG, CountryCodes.BY, CountryCodes.CY, CountryCodes.CZ, CountryCodes.DE, CountryCodes.EE, CountryCodes.ES, CountryCodes.FI, CountryCodes.FR, CountryCodes.GF, CountryCodes.GP, CountryCodes.GR, CountryCodes.HR, CountryCodes.HU, CountryCodes.IE, CountryCodes.IS, CountryCodes.IT, CountryCodes.LT, CountryCodes.LU, CountryCodes.LV, CountryCodes.MC, CountryCodes.MD, CountryCodes.ME, CountryCodes.MF, CountryCodes.MK, CountryCodes.MQ, CountryCodes.MT, CountryCodes.NL, CountryCodes.PL, CountryCodes.PM, CountryCodes.PT, CountryCodes.RE, CountryCodes.RO, CountryCodes.RS, CountryCodes.RU, CountryCodes.SI, CountryCodes.SK, CountryCodes.SM, CountryCodes.TF, CountryCodes.TR, CountryCodes.UA, CountryCodes.VA, CountryCodes.YT, CountryCodes.GB, CountryCodes.GG, CountryCodes.GI, CountryCodes.GS, CountryCodes.IM, CountryCodes.JE, CountryCodes.HK, CountryCodes.IN, CountryCodes.JP, CountryCodes.KR, CountryCodes.MX, CountryCodes.NO, CountryCodes.NZ, CountryCodes.SE, CountryCodes.SG, CountryCodes.TW, CountryCodes.AF, CountryCodes.AG, CountryCodes.AI, CountryCodes.AM, CountryCodes.AN, CountryCodes.AO, CountryCodes.AQ, CountryCodes.AS, CountryCodes.AW, CountryCodes.AZ, CountryCodes.BB, CountryCodes.BD, CountryCodes.BF, CountryCodes.BH, CountryCodes.BI, CountryCodes.BJ, CountryCodes.BL, CountryCodes.BM, CountryCodes.BN, CountryCodes.BO, CountryCodes.BS, CountryCodes.BT, CountryCodes.BV, CountryCodes.BW, CountryCodes.BZ, CountryCodes.CC, CountryCodes.CD, CountryCodes.CF, CountryCodes.CG, CountryCodes.CI, CountryCodes.CK, CountryCodes.CL, CountryCodes.CM, CountryCodes.CN, CountryCodes.CO, CountryCodes.CR, CountryCodes.CV, CountryCodes.CX, CountryCodes.DJ, CountryCodes.DM, CountryCodes.DO, CountryCodes.DZ, CountryCodes.EC, CountryCodes.EG, CountryCodes.EH, CountryCodes.ER, CountryCodes.ET, CountryCodes.FJ, CountryCodes.FK, CountryCodes.FM, CountryCodes.GA, CountryCodes.GD, CountryCodes.GE, CountryCodes.GH, CountryCodes.GM, CountryCodes.GN, CountryCodes.GQ, CountryCodes.GT, CountryCodes.GU, CountryCodes.GW, CountryCodes.GY, CountryCodes.HM, CountryCodes.HN, CountryCodes.HT, CountryCodes.ID, CountryCodes.IL, CountryCodes.IO, CountryCodes.IQ, CountryCodes.JM, CountryCodes.JO, CountryCodes.KE, CountryCodes.KG, CountryCodes.KH, CountryCodes.KI, CountryCodes.KM, CountryCodes.KN, CountryCodes.KP, CountryCodes.KW, CountryCodes.KY, CountryCodes.KZ, CountryCodes.LA, CountryCodes.LB, CountryCodes.LC, CountryCodes.LK, CountryCodes.LR, CountryCodes.LS, CountryCodes.LY, CountryCodes.MA, CountryCodes.MG, CountryCodes.MH, CountryCodes.ML, CountryCodes.MM, CountryCodes.MN, CountryCodes.MO, CountryCodes.MP, CountryCodes.MR, CountryCodes.MS, CountryCodes.MU, CountryCodes.MV, CountryCodes.MW, CountryCodes.MY, CountryCodes.MZ, CountryCodes.NA, CountryCodes.NC, CountryCodes.NE, CountryCodes.NF, CountryCodes.NG, CountryCodes.NI, CountryCodes.NP, CountryCodes.NR, CountryCodes.NU, CountryCodes.OM, CountryCodes.PA, CountryCodes.PE, CountryCodes.PF, CountryCodes.PG, CountryCodes.PH, CountryCodes.PK, CountryCodes.PN, CountryCodes.PR, CountryCodes.PS, CountryCodes.PW, CountryCodes.PY, CountryCodes.QA, CountryCodes.RW, CountryCodes.SA, CountryCodes.SB, CountryCodes.SC, CountryCodes.SH, CountryCodes.SJ, CountryCodes.SL, CountryCodes.SN, CountryCodes.SO, CountryCodes.SR, CountryCodes.ST, CountryCodes.SV, CountryCodes.SY, CountryCodes.SZ, CountryCodes.TC, CountryCodes.TD, CountryCodes.TG, CountryCodes.TH, CountryCodes.TJ, CountryCodes.TK, CountryCodes.TL, CountryCodes.TM, CountryCodes.TN, CountryCodes.TO, CountryCodes.TT, CountryCodes.TV, CountryCodes.TZ, CountryCodes.UG, CountryCodes.UM, CountryCodes.US, CountryCodes.UY, CountryCodes.UZ, CountryCodes.VC, CountryCodes.VE, CountryCodes.VG, CountryCodes.VI, CountryCodes.VN, CountryCodes.VU, CountryCodes.WF, CountryCodes.WS, CountryCodes.YE, CountryCodes.ZM, CountryCodes.ZW, CountryCodes.ZA];\nexports.SMSupportedCountryCodes = SMSupportedCountryCodes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromUrl = exports.NO_HOSTNAME = void 0;\nconst urlPattern = /^[a-z][*+.a-z-]+:\\/\\//i;\nexports.NO_HOSTNAME = Symbol(\"NO_HOSTNAME\");\n\nconst fromUrl = urlLike => {\n /* istanbul ignore next */\n if (typeof URL !== \"function\") {\n throw new Error(\"Looks like the new URL() constructor is not globally available in your environment. Please make sure to use a polyfill.\");\n } // Extra check for non-TypeScript users\n\n\n if (typeof urlLike !== \"string\") {\n return exports.NO_HOSTNAME;\n } // URLs that start with // are protocol relative\n\n\n const url = urlLike.startsWith(\"//\") ? `http:${urlLike}` : // URLs that start with / do not have a hostname section\n urlLike.startsWith(\"/\") ? urlLike : urlPattern.test(urlLike) ? urlLike : `http://${urlLike}`;\n\n try {\n return new URL(url).hostname;\n } catch (_a) {\n return exports.NO_HOSTNAME;\n }\n};\n\nexports.fromUrl = fromUrl;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ValidationErrorType = exports.NO_HOSTNAME = exports.fromUrl = exports.ParseResultType = exports.parseDomain = void 0;\n/* istanbul ignore file */\n// Jest will report function coverage errors here otherwise\n\nvar parse_domain_1 = require(\"./parse-domain\");\n\nObject.defineProperty(exports, \"parseDomain\", {\n enumerable: true,\n get: function () {\n return parse_domain_1.parseDomain;\n }\n});\nObject.defineProperty(exports, \"ParseResultType\", {\n enumerable: true,\n get: function () {\n return parse_domain_1.ParseResultType;\n }\n});\n\nvar from_url_1 = require(\"./from-url\");\n\nObject.defineProperty(exports, \"fromUrl\", {\n enumerable: true,\n get: function () {\n return from_url_1.fromUrl;\n }\n});\nObject.defineProperty(exports, \"NO_HOSTNAME\", {\n enumerable: true,\n get: function () {\n return from_url_1.NO_HOSTNAME;\n }\n});\n\nvar sanitize_1 = require(\"./sanitize\");\n\nObject.defineProperty(exports, \"ValidationErrorType\", {\n enumerable: true,\n get: function () {\n return sanitize_1.ValidationErrorType;\n }\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseDomain = exports.ParseResultType = exports.RESERVED_TOP_LEVEL_DOMAINS = void 0;\n\nconst serialized_tries_1 = require(\"./serialized-tries\");\n\nconst look_up_1 = require(\"./trie/look-up\");\n\nconst sanitize_1 = require(\"./sanitize\");\n\nconst parse_trie_1 = require(\"./trie/parse-trie\");\n\nexports.RESERVED_TOP_LEVEL_DOMAINS = [\"localhost\", \"local\", \"example\", \"invalid\", \"test\"];\nvar ParseResultType;\n\n(function (ParseResultType) {\n /**\n * This parse result is returned in case the given hostname does not adhere to [RFC 1034](https://tools.ietf.org/html/rfc1034).\n */\n ParseResultType[\"Invalid\"] = \"INVALID\";\n /**\n * This parse result is returned if the given hostname was an IPv4 or IPv6.\n */\n\n ParseResultType[\"Ip\"] = \"IP\";\n /**\n * This parse result is returned when the given hostname\n * - is the root domain (the empty string `\"\"`)\n * - belongs to the top-level domain `localhost`, `local`, `example`, `invalid` or `test`\n */\n\n ParseResultType[\"Reserved\"] = \"RESERVED\";\n /**\n * This parse result is returned when the given hostname is valid and does not belong to a reserved top-level domain, but is not listed in the public suffix list.\n */\n\n ParseResultType[\"NotListed\"] = \"NOT_LISTED\";\n /**\n * This parse result is returned when the given hostname belongs to a top-level domain that is listed in the public suffix list.\n */\n\n ParseResultType[\"Listed\"] = \"LISTED\";\n})(ParseResultType = exports.ParseResultType || (exports.ParseResultType = {}));\n\nconst getAtIndex = (array, index) => {\n return index >= 0 && index < array.length ? array[index] : undefined;\n};\n\nconst splitLabelsIntoDomains = (labels, index) => {\n return {\n subDomains: labels.slice(0, Math.max(0, index)),\n domain: getAtIndex(labels, index),\n topLevelDomains: labels.slice(index + 1)\n };\n};\n\nlet parsedIcannTrie;\nlet parsedPrivateTrie;\n/**\n * Splits the given hostname in topLevelDomains, a domain and subDomains.\n */\n\nconst parseDomain = hostname => {\n const sanitizationResult = (0, sanitize_1.sanitize)(hostname);\n\n if (sanitizationResult.type === sanitize_1.SanitizationResultType.Error) {\n return {\n type: ParseResultType.Invalid,\n hostname,\n errors: sanitizationResult.errors\n };\n }\n\n if (sanitizationResult.type === sanitize_1.SanitizationResultType.ValidIp) {\n return {\n type: ParseResultType.Ip,\n hostname: sanitizationResult.ip,\n ipVersion: sanitizationResult.ipVersion\n };\n }\n\n const {\n labels,\n domain\n } = sanitizationResult;\n\n if (hostname === \"\" || exports.RESERVED_TOP_LEVEL_DOMAINS.includes(labels[labels.length - 1])) {\n return {\n type: ParseResultType.Reserved,\n hostname: domain,\n labels\n };\n } // Parse the serialized trie lazily\n\n\n parsedIcannTrie = parsedIcannTrie !== null && parsedIcannTrie !== void 0 ? parsedIcannTrie : (0, parse_trie_1.parseTrie)(serialized_tries_1.icannTrie);\n parsedPrivateTrie = parsedPrivateTrie !== null && parsedPrivateTrie !== void 0 ? parsedPrivateTrie : (0, parse_trie_1.parseTrie)(serialized_tries_1.privateTrie);\n const icannTlds = (0, look_up_1.lookUpTldsInTrie)(labels, parsedIcannTrie);\n const privateTlds = (0, look_up_1.lookUpTldsInTrie)(labels, parsedPrivateTrie);\n\n if (icannTlds.length === 0 && privateTlds.length === 0) {\n return {\n type: ParseResultType.NotListed,\n hostname: domain,\n labels\n };\n }\n\n const indexOfPublicSuffixDomain = labels.length - Math.max(privateTlds.length, icannTlds.length) - 1;\n const indexOfIcannDomain = labels.length - icannTlds.length - 1;\n return Object.assign({\n type: ParseResultType.Listed,\n hostname: domain,\n labels,\n icann: splitLabelsIntoDomains(labels, indexOfIcannDomain)\n }, splitLabelsIntoDomains(labels, indexOfPublicSuffixDomain));\n};\n\nexports.parseDomain = parseDomain;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.SanitizationResultType = exports.ValidationErrorType = void 0;\n\nconst is_ip_1 = __importDefault(require(\"is-ip\")); // See https://en.wikipedia.org/wiki/Domain_name\n// See https://tools.ietf.org/html/rfc1034\n\n\nconst LABEL_SEPARATOR = \".\";\nconst LABEL_ROOT = \"\";\nconst LABEL_LENGTH_MIN = 1;\nconst LABEL_LENGTH_MAX = 63;\nconst DOMAIN_LENGTH_MAX = 253;\nvar ValidationErrorType;\n\n(function (ValidationErrorType) {\n ValidationErrorType[\"NoHostname\"] = \"NO_HOSTNAME\";\n ValidationErrorType[\"DomainMaxLength\"] = \"DOMAIN_MAX_LENGTH\";\n ValidationErrorType[\"LabelMinLength\"] = \"LABEL_MIN_LENGTH\";\n ValidationErrorType[\"LabelMaxLength\"] = \"LABEL_MAX_LENGTH\";\n ValidationErrorType[\"LabelInvalidCharacter\"] = \"LABEL_INVALID_CHARACTER\";\n})(ValidationErrorType = exports.ValidationErrorType || (exports.ValidationErrorType = {}));\n\nvar SanitizationResultType;\n\n(function (SanitizationResultType) {\n SanitizationResultType[\"ValidIp\"] = \"VALID_IP\";\n SanitizationResultType[\"ValidDomain\"] = \"VALID_DOMAIN\";\n SanitizationResultType[\"Error\"] = \"ERROR\";\n})(SanitizationResultType = exports.SanitizationResultType || (exports.SanitizationResultType = {}));\n\nconst createNoHostnameError = input => {\n return {\n type: ValidationErrorType.NoHostname,\n message: `The given input ${String(input)} does not look like a hostname.`,\n column: 1\n };\n};\n\nconst createDomainMaxLengthError = domain => {\n const length = domain.length;\n return {\n type: ValidationErrorType.DomainMaxLength,\n message: `Domain \"${domain}\" is too long. Domain is ${length} octets long but should not be longer than ${DOMAIN_LENGTH_MAX}.`,\n column: length\n };\n};\n\nconst createLabelMinLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMinLength,\n message: `Label \"${label}\" is too short. Label is ${length} octets long but should be at least ${LABEL_LENGTH_MIN}.`,\n column\n };\n};\n\nconst createLabelMaxLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMaxLength,\n message: `Label \"${label}\" is too long. Label is ${length} octets long but should not be longer than ${LABEL_LENGTH_MAX}.`,\n column\n };\n};\n\nconst createLabelInvalidCharacterError = (label, invalidCharacter, column) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Label \"${label}\" contains invalid character \"${invalidCharacter}\" at column ${column}.`,\n column\n };\n};\n\nconst sanitize = input => {\n // Extra check for non-TypeScript users\n if (typeof input !== \"string\") {\n return {\n type: SanitizationResultType.Error,\n errors: [createNoHostnameError(input)]\n };\n }\n\n const inputTrimmed = input.trim(); // IPv6 addresses are surrounded by square brackets in URLs\n // See https://tools.ietf.org/html/rfc3986#section-3.2.2\n\n const inputTrimmedAsIp = inputTrimmed.replace(/^\\[|]$/g, \"\");\n const ipVersion = is_ip_1.default.version(inputTrimmedAsIp);\n\n if (ipVersion !== undefined) {\n return {\n type: SanitizationResultType.ValidIp,\n ip: inputTrimmedAsIp,\n ipVersion\n };\n }\n\n if (inputTrimmed.length > DOMAIN_LENGTH_MAX) {\n return {\n type: SanitizationResultType.Error,\n errors: [createDomainMaxLengthError(inputTrimmed)]\n };\n }\n\n const labels = inputTrimmed.split(LABEL_SEPARATOR);\n const lastLabel = labels[labels.length - 1]; // If the last label is the special root label, ignore it\n\n if (lastLabel === LABEL_ROOT) {\n labels.pop();\n }\n\n const labelValidationErrors = [];\n let column = 1;\n\n for (const label of labels) {\n // According to https://tools.ietf.org/html/rfc6761 labels should\n // only contain ASCII letters, digits and hyphens (LDH).\n const invalidCharacter = /[^\\da-z-]/iu.exec(label);\n\n if (invalidCharacter) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, invalidCharacter[0], invalidCharacter.index + 1));\n } else if ( // We can use .length here to check for the octet size because\n // label can only contain ASCII LDH characters at this point.\n label.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n } else if (label.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n\n column += label.length + LABEL_SEPARATOR.length;\n }\n\n if (labelValidationErrors.length > 0) {\n return {\n type: SanitizationResultType.Error,\n errors: labelValidationErrors\n };\n }\n\n return {\n type: SanitizationResultType.ValidDomain,\n domain: inputTrimmed,\n labels\n };\n};\n\nexports.sanitize = sanitize;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.privateTrie = exports.icannTrie = void 0;\n\nconst icann_json_1 = __importDefault(require(\"../serialized-tries/icann.json\"));\n\nexports.icannTrie = icann_json_1.default;\n\nconst private_json_1 = __importDefault(require(\"../serialized-tries/private.json\"));\n\nexports.privateTrie = private_json_1.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EXCEPTION = exports.WILDCARD = exports.RESET = exports.DOWN = exports.SAME = exports.UP = void 0; // UP, SAME, DOWN, RESET should not be special regex characters in a character class.\n\nexports.UP = \"<\"; // one level up\n\nexports.SAME = \",\"; // same level\n\nexports.DOWN = \">\"; // one level down\n\nexports.RESET = \"|\"; // reset level index and start new\n\nexports.WILDCARD = \"*\"; // as defined by publicsuffix.org\n\nexports.EXCEPTION = \"!\"; // as defined by publicsuffix.org","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lookUpTldsInTrie = void 0;\n\nconst characters = __importStar(require(\"./characters\"));\n\nconst lookUpTldsInTrie = (labels, trie) => {\n const labelsToCheck = labels.slice();\n const tlds = [];\n let node = trie;\n\n while (labelsToCheck.length !== 0) {\n const label = labelsToCheck.pop();\n const labelLowerCase = label.toLowerCase();\n\n if (node.children.has(characters.WILDCARD)) {\n if (node.children.has(characters.EXCEPTION + labelLowerCase)) {\n break;\n }\n\n node = node.children.get(characters.WILDCARD);\n } else {\n if (node.children.has(labelLowerCase) === false) {\n break;\n }\n\n node = node.children.get(labelLowerCase);\n }\n\n tlds.unshift(label);\n }\n\n return tlds;\n};\n\nexports.lookUpTldsInTrie = lookUpTldsInTrie;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createOrGetChild = exports.createRootNode = exports.NODE_TYPE_CHILD = exports.NODE_TYPE_ROOT = void 0;\nexports.NODE_TYPE_ROOT = Symbol(\"ROOT\");\nexports.NODE_TYPE_CHILD = Symbol(\"CHILD\");\n\nconst createRootNode = () => {\n return {\n type: exports.NODE_TYPE_ROOT,\n children: new Map()\n };\n};\n\nexports.createRootNode = createRootNode;\n\nconst createOrGetChild = (parent, label) => {\n let child = parent.children.get(label);\n\n if (child === undefined) {\n child = {\n type: exports.NODE_TYPE_CHILD,\n label,\n children: new Map(),\n parent\n };\n parent.children.set(label, child);\n }\n\n return child;\n};\n\nexports.createOrGetChild = createOrGetChild;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTrie = void 0;\n\nconst characters = __importStar(require(\"./characters\"));\n\nconst nodes_1 = require(\"./nodes\");\n\nconst parseTrie = serializedTrie => {\n const rootNode = (0, nodes_1.createRootNode)();\n let domain = \"\";\n let parentNode = rootNode; // Type assertion necessary here due to a TypeScript unsoundness\n // https://github.com/microsoft/TypeScript/issues/9998#issuecomment-235963457\n\n let node = rootNode;\n\n const addDomain = () => {\n node = (0, nodes_1.createOrGetChild)(parentNode, domain);\n domain = \"\";\n };\n\n for (let i = 0; i < serializedTrie.length; i++) {\n const char = serializedTrie.charAt(i);\n\n switch (char) {\n case characters.SAME:\n {\n addDomain();\n continue;\n }\n\n case characters.DOWN:\n {\n addDomain();\n parentNode = node;\n continue;\n }\n\n case characters.RESET:\n {\n addDomain();\n parentNode = rootNode;\n continue;\n }\n\n case characters.UP:\n {\n if (parentNode.type === nodes_1.NODE_TYPE_ROOT) {\n throw new Error(`Error in serialized trie at position ${i}: Cannot go up, current parent node is already root`);\n }\n\n addDomain();\n parentNode = parentNode.parent;\n continue;\n }\n }\n\n domain += char;\n }\n\n if (domain !== \"\") {\n addDomain();\n }\n\n return rootNode;\n};\n\nexports.parseTrie = parseTrie;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createMetricsTracker = void 0;\nexports.getCleanDigitalData = getCleanDigitalData;\nexports.getRoot = getRoot;\nexports.setupRoot = setupRoot;\n\nvar _enums = _interopRequireDefault(require(\"./types/enums\"));\n\nvar _helpers = require(\"./helpers\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nvar DEFAULT_USER_ID = '1';\nvar GLOBAL_KEY = 'sm_metrics_tracker_do_not_touch_this';\n/**\n * Creates a new DigitalData object and populates default values for the user\n *\n * @param userId The ID of the current user\n * @returns A DigitalData object populated only with default values\n */\n\nfunction getCleanDigitalData() {\n var userId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_USER_ID;\n return {\n page: {\n pageInfo: {\n pageId: '',\n attributes: {},\n pathname: ''\n }\n },\n events: [],\n components: [],\n user: {\n ep201: (0, _utils.getCookieValue)('ep201'),\n ep202: (0, _utils.getCookieValue)('ep202'),\n id: userId\n }\n };\n}\n/**\n * Returns the MetricsTracker root object. If it doesn't exist, creates it.\n *\n * @param glob A reference to the global object that MetricsTrackerRoot will by saved to\n * @returns The MetricsTrackerRoot\n */\n\n\nfunction setupRoot(glob) {\n if (!glob[GLOBAL_KEY]) {\n var root = {\n subscribers: [],\n automaticSubscribers: [],\n config: {\n user: {\n id: '',\n isAuthenticated: false\n },\n dataAnalyticsAPIPath: null,\n loggingAPIPath: null,\n country: 'GB',\n legacyWeb: '',\n gtmId: ''\n },\n digitalData: getCleanDigitalData(DEFAULT_USER_ID)\n };\n glob[GLOBAL_KEY] = root;\n }\n\n return glob[GLOBAL_KEY];\n}\n/**\n * Returns the global MetricsTrackerRoot object\n *\n * @param glob A reference to the global object on which the MetricsTrackerRoot object exists\n * @returns\n */\n\n\nfunction getRoot(glob) {\n if (!glob[GLOBAL_KEY]) {\n throw new Error('Please initialize MetricsTracker with a userId before tracking events.');\n }\n\n return glob[GLOBAL_KEY];\n}\n/**\n * Creates a MetricsTrackerType object with common level functionality that is wrapped\n * in scope by the provided global object reference.\n *\n * @param glob A reference to the global namespace that the metrics tracker will be added to\n * @returns A MetricsTrackerType object with it's context bound to the passed in `glob` ref\n */\n\n\nvar createMetricsTracker = function createMetricsTracker(glob) {\n return {\n initialize: function initialize(config) {\n throw new Error('initialize not implemented');\n },\n reset: function reset() {\n throw new Error('reset not implemented');\n },\n update: function update(config) {\n // for some data points within an SPA, the configuration must be\n // updated post initialization\n var root = getRoot(glob);\n root.config = _objectSpread(_objectSpread({}, root.config), config);\n return root;\n },\n\n /**\n * Convenience method to update parts of the user config that can be decorated post-initialization\n *\n * @param userConfig The updated user configuration\n */\n updateUserConfig: function updateUserConfig(userConfigUpdate) {\n var root = getRoot(glob);\n root.config.user = _objectSpread(_objectSpread({}, root.config.user), userConfigUpdate);\n return root;\n },\n getSubscribers: function getSubscribers() {\n var _getRoot = getRoot(glob),\n subscribers = _getRoot.subscribers;\n\n return subscribers;\n },\n getAutomaticSubscribers: function getAutomaticSubscribers() {\n var _getRoot2 = getRoot(glob),\n automaticSubscribers = _getRoot2.automaticSubscribers;\n\n return automaticSubscribers;\n },\n track: function track(event) {\n var _event$data, _event$data2, _event$data2$data;\n\n var root = getRoot(glob);\n\n if (root.config.user.id === '') {\n throw new Error('Please initialize MetricsTracker with a userId before tracking events.');\n }\n\n var maskedEvent = event; // mask email addresses\n\n if (event !== null && event !== void 0 && (_event$data = event.data) !== null && _event$data !== void 0 && _event$data.email) {\n maskedEvent.data.email = (0, _helpers.maskEmail)(event.data.email);\n }\n\n if (event !== null && event !== void 0 && (_event$data2 = event.data) !== null && _event$data2 !== void 0 && (_event$data2$data = _event$data2.data) !== null && _event$data2$data !== void 0 && _event$data2$data.email) {\n maskedEvent.data.data.email = (0, _helpers.maskEmail)(event.data.data.email);\n }\n\n if (_enums.default[event.name]) {\n root.digitalData.events.push(event);\n\n if (_enums.default.COMPONENT_ADD === event.name) {\n root.digitalData.components.push(event.data);\n }\n\n if (event.name === _enums.default.PAGE_VIEW || event.name === _enums.default.VIRTUAL_PAGE_VIEW) {\n root.digitalData = (0, _helpers.pageViewMutation)(event, root.digitalData);\n }\n\n root.subscribers.forEach(function (subscriber) {\n subscriber(event, root.config);\n });\n }\n },\n automaticTrack: function automaticTrack(event) {\n var root = getRoot(glob);\n root.automaticSubscribers.forEach(function (subscriber) {\n subscriber(event, root.config);\n });\n },\n addSubscriber: function addSubscriber(subscriber) {\n /**\n * We always want to allow the subscribers to subscribe. If the user\n * did not accept GDPR, we don't fire events; hence, we never violate GDPR.\n * If, however, the user does allow tracking, we don't want to subscribers\n * to re-subscribe.\n */\n var root = getRoot(glob);\n root.subscribers.push(subscriber);\n },\n addAutomaticSubscriber: function addAutomaticSubscriber(subscriber) {\n var root = getRoot(glob);\n root.automaticSubscribers.push(subscriber);\n },\n getConfig: function getConfig() {\n return getRoot(glob).config;\n },\n getDigitalData: function getDigitalData() {\n return getRoot(glob).digitalData;\n }\n };\n};\n\nexports.createMetricsTracker = createMetricsTracker;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MetricsTracker = void 0;\nexports.generateMetricsAttribute = generateMetricsAttribute;\n\nvar _utils = require(\"@sm/utils\");\n\nvar _enums = _interopRequireDefault(require(\"./types/enums\"));\n\nvar _BaseMetricsTracker = require(\"./BaseMetricsTracker\");\n\nvar _DataAnalyticsMetricsSubscriber = _interopRequireDefault(require(\"./subscribers/DataAnalyticsMetricsSubscriber\"));\n\nvar _LoggingMetricsSubscriber = _interopRequireDefault(require(\"./subscribers/LoggingMetricsSubscriber\"));\n\nvar _GTMMeticsSubscriber = _interopRequireDefault(require(\"./subscribers/GTMMeticsSubscriber\"));\n\nvar _FacebookPixelSubscriber = _interopRequireDefault(require(\"./subscribers/FacebookPixelSubscriber\"));\n\nvar _AmplitudeSubscriber = _interopRequireDefault(require(\"./subscribers/AmplitudeSubscriber\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nvar _getClientEnvironment = (0, _utils.getClientEnvironmentDetails)(),\n isBrowser = _getClientEnvironment.isBrowser;\n\nvar glob = isBrowser ? window : global; // Import/require only in the browser\n\nvar delegatedEvents = isBrowser ? require('delegated-events') : null;\n/**\n * Generates a string of event data that can be used in an HTML attribute\n *\n * @param eventData The name and data of the event\n * @returns A formatted strong of the eventData passed in\n */\n\nfunction generateMetricsAttribute(eventData) {\n return JSON.stringify({\n name: eventData.name || _enums.default.ELEMENT_INTERACTION,\n data: eventData.data\n });\n}\n\nvar MetricsTracker = _objectSpread(_objectSpread({}, (0, _BaseMetricsTracker.createMetricsTracker)(glob)), {}, {\n /**\n * Initializes the events and configuration of the MetricsTracker\n *\n * @override\n * @param config\n * @returns\n */\n initialize: function initialize(config) {\n var root = (0, _BaseMetricsTracker.setupRoot)(glob);\n root.config = config;\n root.digitalData = (0, _BaseMetricsTracker.getCleanDigitalData)(config.user.id);\n setupEvents();\n return root;\n },\n reset: function reset() {\n var root = (0, _BaseMetricsTracker.getRoot)(glob);\n root.digitalData = (0, _BaseMetricsTracker.getCleanDigitalData)(root.config.user.id);\n root.subscribers = [];\n root.automaticSubscribers = []; // Add the mandatory dataAnalytics subscriber\n\n this.addSubscriber(_DataAnalyticsMetricsSubscriber.default); // Add the mandatory logging subscriber\n\n this.addSubscriber(_LoggingMetricsSubscriber.default); // Add Google Tag Manager dataLayer subscriber\n\n MetricsTracker.addSubscriber(_GTMMeticsSubscriber.default); // Add Facebook Pixel subscriber\n\n MetricsTracker.addSubscriber(_FacebookPixelSubscriber.default); // Add Amplitude Subscriber\n\n MetricsTracker.addSubscriber(_AmplitudeSubscriber.default);\n return root;\n }\n});\n\nexports.MetricsTracker = MetricsTracker;\n\nfunction setupEvents() {\n if (!isBrowser) {\n return;\n }\n\n if (window && window.SM && window.SM.MetricsTracker) {\n // only create one event listener on the document\n // this makes it safe for consumer apps to call initialize multiple times\n return;\n }\n /**\n * Add on click event listener\n * Note - this is done in the getInstance method; hence, until this\n * method is called, the event handler would never be bound.\n */\n\n\n delegatedEvents.on('click', '[data-sm-metrics]', function gce(event) {\n if (event && event.currentTarget) {\n var metricsData = event.currentTarget.getAttribute('data-sm-metrics');\n\n if (metricsData) {\n var metricsDataJSON = JSON.parse(metricsData);\n var eventData = metricsDataJSON.data;\n MetricsTracker.track({\n name: metricsDataJSON.name || _enums.default.ELEMENT_INTERACTION,\n data: eventData\n });\n }\n }\n }); // Add the mandatory dataAnalytics subscriber\n\n MetricsTracker.addSubscriber(_DataAnalyticsMetricsSubscriber.default); // Add the mandatory logging subscriber\n\n MetricsTracker.addSubscriber(_LoggingMetricsSubscriber.default); // Add Google Tag Manager dataLayer subscriber\n\n MetricsTracker.addSubscriber(_GTMMeticsSubscriber.default); // Add Facebook Pixel subscriber\n\n MetricsTracker.addSubscriber(_FacebookPixelSubscriber.default); // Add Amplitude Subscriber\n\n MetricsTracker.addSubscriber(_AmplitudeSubscriber.default);\n setupAutomaticEvents();\n window.SM = window.SM || {};\n window.SM.MetricsTracker = MetricsTracker;\n}\n\nfunction setupAutomaticEvents() {\n var clickableLinks = ['.wds-button', '.wds-link', 'a', 'wds-switch__native', 'wds-checkbox__native', 'wds-radio__native', 'wds-list__item', 'wds-close', 'wds-popout__trigger', 'wds-has-menu', 'wds-slider__handle', 'wds-tab__tab-btn'];\n delegatedEvents.on('click', clickableLinks.join(','), function gce(event) {\n if (!event.target) {\n return;\n }\n\n var name = event.type;\n var target = event.target;\n var inputTarget = target;\n MetricsTracker.automaticTrack({\n name: _enums.default.ELEMENT_INTERACTION,\n data: {\n actionType: name,\n actionFlow: 'automatic',\n class: target.className,\n text: target.innerText,\n checked: inputTarget.checked || undefined,\n value: inputTarget.value || undefined\n }\n });\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.cloneDigitalData = cloneDigitalData;\nexports.maskEmail = maskEmail;\nexports.maskString = maskString;\nexports.pageViewMutation = pageViewMutation;\n\nvar _enums = _interopRequireDefault(require(\"./types/enums\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction cloneDigitalData(digitalData) {\n return JSON.parse(JSON.stringify(digitalData));\n}\n\nfunction pageViewMutation(event, digitalData) {\n if (event.name !== _enums.default.PAGE_VIEW && event.name !== _enums.default.VIRTUAL_PAGE_VIEW) {\n return digitalData;\n }\n\n var newDigitalData = cloneDigitalData(digitalData);\n var _event$data = event.data,\n pageId = _event$data.pageId,\n pathname = _event$data.pathname,\n attributes = _event$data.attributes;\n newDigitalData.page.pageInfo = {\n pageId: pageId,\n pathname: pathname,\n attributes: attributes\n };\n return newDigitalData;\n}\n\nfunction maskString(str) {\n if (!str) return '';\n if (str.length === 1) return '*';\n if (str.length === 2) return '**';\n return str.replace(/^(.)(.*)(.)$/, function (_, a, b, c) {\n return a + b.replace(/./g, '*') + c;\n });\n}\n\nfunction maskEmail(email) {\n if (!email) return '';\n return email.replace(/^(.*)(@.*)$/, function (_, a, b) {\n return a.replace(/./g, '*') + b;\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ComponentMetricsProvider\", {\n enumerable: true,\n get: function get() {\n return _ComponentMetricsProvider.default;\n }\n});\nObject.defineProperty(exports, \"GTMEventData\", {\n enumerable: true,\n get: function get() {\n return _types.GTMEventData;\n }\n});\nObject.defineProperty(exports, \"MetricsTracker\", {\n enumerable: true,\n get: function get() {\n return _MetricsTracker.MetricsTracker;\n }\n});\nObject.defineProperty(exports, \"MetricsTrackerType\", {\n enumerable: true,\n get: function get() {\n return _types.MetricsTrackerType;\n }\n});\nObject.defineProperty(exports, \"PageMetricsProvider\", {\n enumerable: true,\n get: function get() {\n return _PageMetricsProvider.default;\n }\n});\nObject.defineProperty(exports, \"SPARouteMetricsProvider\", {\n enumerable: true,\n get: function get() {\n return _SPARouteMetricsProvider.default;\n }\n});\nObject.defineProperty(exports, \"USER_EVENTS\", {\n enumerable: true,\n get: function get() {\n return _enums.default;\n }\n});\nObject.defineProperty(exports, \"generateMetricsAttribute\", {\n enumerable: true,\n get: function get() {\n return _MetricsTracker.generateMetricsAttribute;\n }\n});\n\nvar _MetricsTracker = require(\"./MetricsTracker\");\n\nvar _PageMetricsProvider = _interopRequireDefault(require(\"./providers/PageMetricsProvider\"));\n\nvar _ComponentMetricsProvider = _interopRequireDefault(require(\"./providers/ComponentMetricsProvider\"));\n\nvar _SPARouteMetricsProvider = _interopRequireDefault(require(\"./providers/SPARouteMetricsProvider\"));\n\nvar _enums = _interopRequireDefault(require(\"./types/enums\"));\n\nvar _types = require(\"./types/types\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utils = require(\"@sm/utils\");\n\nvar _ = require(\"..\");\n\nvar ComponentMetricsProvider = function ComponentMetricsProvider(_ref) {\n var name = _ref.name,\n _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? null : _ref$attributes,\n _ref$disableDA = _ref.disableDA,\n disableDA = _ref$disableDA === void 0 ? false : _ref$disableDA,\n actionFlow = _ref.actionFlow,\n actionType = _ref.actionType,\n children = _ref.children;\n var envDetails = (0, _utils.getClientEnvironmentDetails)();\n\n if (envDetails.isBrowser) {\n _.MetricsTracker.track({\n name: _.USER_EVENTS.COMPONENT_ADD,\n data: {\n componentName: name,\n attributes: attributes,\n disableDA: disableDA,\n actionType: actionType,\n actionFlow: actionFlow\n }\n });\n }\n\n return children;\n};\n\nvar _default = ComponentMetricsProvider;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _ = require(\"..\");\n\nvar PageMetricsProvider = function PageMetricsProvider(_ref) {\n var pageId = _ref.pageId,\n pathname = _ref.pathname,\n attributes = _ref.attributes,\n GDPR = _ref.GDPR,\n user = _ref.user,\n country = _ref.country,\n children = _ref.children;\n var _GDPR$hasGDPRConsent = GDPR.hasGDPRConsent,\n hasGDPRConsent = _GDPR$hasGDPRConsent === void 0 ? false : _GDPR$hasGDPRConsent;\n var _user$id = user.id,\n userId = _user$id === void 0 ? '1' : _user$id,\n _user$package = user.package,\n packageId = _user$package === void 0 ? '1' : _user$package,\n _user$email = user.email,\n email = _user$email === void 0 ? '' : _user$email;\n (0, _react.useEffect)(function () {\n _.MetricsTracker.track({\n name: _.USER_EVENTS.PAGE_VIEW,\n data: {\n actionType: _.USER_EVENTS.PAGE_VIEW,\n actionFlow: pageId,\n pathname: pathname,\n pageId: pageId,\n attributes: attributes,\n data: {\n hasGDPRConsent: hasGDPRConsent,\n userId: userId,\n packageId: packageId,\n email: email,\n country: country\n }\n }\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n /**\n * Adding an empty array ensures that this is always and only called\n * on first page renders/reloads. SPA will never call this.\n */\n ]);\n return children;\n};\n\nvar _default = PageMetricsProvider;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _ = require(\"..\");\n\nvar SPARouteMetricsProvider = function SPARouteMetricsProvider(_ref) {\n var pageId = _ref.pageId,\n pathname = _ref.pathname,\n legacyWeb = _ref.legacyWeb,\n attributes = _ref.attributes,\n GDPR = _ref.GDPR,\n user = _ref.user,\n country = _ref.country,\n children = _ref.children;\n var _GDPR$hasGDPRConsent = GDPR.hasGDPRConsent,\n hasGDPRConsent = _GDPR$hasGDPRConsent === void 0 ? false : _GDPR$hasGDPRConsent;\n var _user$id = user.id,\n userId = _user$id === void 0 ? '1' : _user$id,\n _user$package = user.package,\n packageId = _user$package === void 0 ? '1' : _user$package,\n _user$email = user.email,\n email = _user$email === void 0 ? '' : _user$email;\n (0, _react.useEffect)(function () {\n // update the global config\n _.MetricsTracker.update({\n pageId: pageId,\n legacyWeb: legacyWeb\n });\n /*\n // TODO: This shouldn't fire on intital render, but it needs to right now\n // to ensure all page metrics for SPA are accurately recorded. For example\n // in the SPA, PAGE_VIEW only knows about the SPA container, not the page within\n // the container. So the VIRTUAL_PAGE_VIEW is needed to track the actual page content\n */\n\n\n _.MetricsTracker.track({\n name: _.USER_EVENTS.VIRTUAL_PAGE_VIEW,\n data: {\n actionType: _.USER_EVENTS.VIRTUAL_PAGE_VIEW,\n actionFlow: pageId,\n pageId: pageId,\n attributes: attributes,\n pathname: pathname,\n data: {\n hasGDPRConsent: hasGDPRConsent,\n userId: userId,\n packageId: packageId,\n email: email,\n countryCode: country\n }\n }\n }); // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [pageId, legacyWeb, pathname]);\n return children;\n};\n\nvar _default = SPARouteMetricsProvider;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = amplitudeSubscriber;\n\nvar _utils = require(\"../utils\");\n\nvar _excluded = [\"amplitudeEvent\", \"amplitudeUserProperties\", \"actionType\", \"actionFlow\"];\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _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\nvar ONETRUST_FUNCTIONAL_COOKIE_GROUP = 'C0003';\n\nvar blockedByOneTrust = function blockedByOneTrust() {\n var overrideOneTrust = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var _parseOneTrustCookie = (0, _utils.parseOneTrustCookie)(),\n hasOneTrustCookie = _parseOneTrustCookie.hasOneTrustCookie,\n oneTrustGroups = _parseOneTrustCookie.groups; // we are blocked by OneTrust if...\n\n\n return (// we're not overridden to _ignore_ OneTrust...\n !overrideOneTrust && // the OneTrust cookie is not present or does not have\n // functional cookies accepted\n !(hasOneTrustCookie && oneTrustGroups[ONETRUST_FUNCTIONAL_COOKIE_GROUP] === true)\n );\n};\n\nvar conditionallyAddKey = function conditionallyAddKey(keyName, value, out) {\n if (value) {\n // the whole point of this method is to populate a single object with props,\n // so passing that object around by reference is the most performant\n // eslint-disable-next-line no-param-reassign\n out[keyName] = value;\n }\n};\n\nvar hydrateDefaultUserProps = function hydrateDefaultUserProps(user) {\n var _user$group, _user$group$membershi;\n\n var userProps = {};\n conditionallyAddKey('languageId', user === null || user === void 0 ? void 0 : user.languageId, userProps);\n conditionallyAddKey('userPackageId', user === null || user === void 0 ? void 0 : user.package, userProps);\n conditionallyAddKey('userPackageName', user === null || user === void 0 ? void 0 : user.packageName, userProps);\n conditionallyAddKey('userSubscriptionStatus', user === null || user === void 0 ? void 0 : user.subscriptionStatus, userProps);\n conditionallyAddKey('dateJoined', user === null || user === void 0 ? void 0 : user.joinedAt, userProps);\n conditionallyAddKey('dateSubscribed', user === null || user === void 0 ? void 0 : user.subscribedAt, userProps);\n conditionallyAddKey('userRole', (_user$group = user.group) === null || _user$group === void 0 ? void 0 : (_user$group$membershi = _user$group.membership) === null || _user$group$membershi === void 0 ? void 0 : _user$group$membershi.type, userProps);\n return userProps;\n};\n\nfunction amplitudeSubscriber(digitalDataEvent, config) {\n var _user$session, _amplitudeRequire$def;\n\n var amplitudeToken = config.amplitudeToken,\n user = config.user,\n overrideOneTrust = config.overrideOneTrust;\n var digitalData = digitalDataEvent.data;\n\n var amplitudeEvent = digitalData.amplitudeEvent,\n amplitudeUserProperties = digitalData.amplitudeUserProperties,\n actionType = digitalData.actionType,\n actionFlow = digitalData.actionFlow,\n data = _objectWithoutProperties(digitalData, _excluded);\n\n if ( // bail if we have no ampltude token...\n !amplitudeToken || // ...or if this is not an amplitude event...\n !amplitudeEvent || // ...or if the user is being impersonated by an admin...\n user !== null && user !== void 0 && (_user$session = user.session) !== null && _user$session !== void 0 && _user$session.isAdminImpersonation || // ...or if OneTrust functional cookies haven't been accepted\n blockedByOneTrust(overrideOneTrust)) {\n return;\n }\n\n var userId = user.id,\n isAuthenticated = user.isAuthenticated,\n group = user.group,\n email = user.email; // we'll include the amplitude SDK here via \"require\" to avoid getting\n // yelled at by the test runner since amplitude makes explicit references\n // to \"window\", which doesn't exist in the test environment before we mock it\n // eslint-disable-next-line global-require\n\n var amplitudeRequire = require('amplitude-js'); // this is to catch a bundling issue that was introduced with amplitude-js@8.11.0\n // that used the ESM module instead of the default `main` import:\n // https://github.com/amplitude/Amplitude-JavaScript/commit/3e98d506f003ba428ab08796d1246ccb387d1f32\n\n\n var amplitude = (_amplitudeRequire$def = amplitudeRequire.default) !== null && _amplitudeRequire$def !== void 0 ? _amplitudeRequire$def : amplitudeRequire;\n\n try {\n var amplitudeInstance = amplitude.getInstance();\n amplitudeInstance.init(amplitudeToken, null, {\n includeReferrer: true\n });\n amplitudeInstance.setTransport('beacon');\n\n if (isAuthenticated) {\n var _group$membership; // if the user belongs to a team, send that down as a group property\n // set this before the user props below so that group info is sent as part\n // of the user props call\n\n\n if (group !== null && group !== void 0 && (_group$membership = group.membership) !== null && _group$membership !== void 0 && _group$membership.groupId) {\n var _group$membership2;\n\n amplitudeInstance.setGroup('teamId', group === null || group === void 0 ? void 0 : (_group$membership2 = group.membership) === null || _group$membership2 === void 0 ? void 0 : _group$membership2.groupId);\n }\n\n amplitudeInstance.setUserId(userId); // add in any core props if they're present on the user object\n\n var userProps = hydrateDefaultUserProps(user); // mix in any supplied user props\n\n if (Object.prototype.toString.call(amplitudeUserProperties) === '[object Object]') {\n userProps = _objectSpread(_objectSpread({}, userProps), amplitudeUserProperties);\n }\n\n if (email) {\n var _email$split = email.split('@'),\n _email$split2 = _slicedToArray(_email$split, 2),\n emailDomain = _email$split2[1]; // make extremely sure that we've got a real email and will only be sending the domain\n\n\n if (emailDomain && emailDomain.indexOf('.') > -1) {\n userProps.emailDomain = emailDomain;\n }\n }\n\n amplitudeInstance.setUserProperties(userProps);\n } else {\n // make sure we've cleared out the data for any previous logged in user\n amplitudeInstance.clearStorage();\n }\n\n amplitudeInstance.logEvent(amplitudeEvent, _objectSpread({}, data));\n } catch (err) {// silently fail; we don't want a bad metrics call taking the whole experience down\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dataAnalyticsMetricsSubscriber;\n\nfunction dataAnalyticsMetricsSubscriber(digitalDataEvent, metricsTrackerConfig) {\n // Verify that the required values are present and we're not being\n // bypassed before continuing. If not, exit quietly.\n if (digitalDataEvent.data.disableDA === true || !digitalDataEvent.data.actionFlow || !digitalDataEvent.data.actionType) {\n return;\n }\n\n var eventData = JSON.parse(JSON.stringify(digitalDataEvent.data));\n var dataAnalyticsAPIPath = metricsTrackerConfig.dataAnalyticsAPIPath,\n legacyWeb = metricsTrackerConfig.legacyWeb;\n var eventMeta = {\n ui_event: '',\n ui_goal: '',\n url: '',\n origin: '',\n legacy_web: legacyWeb\n };\n eventMeta.ui_event = eventData.actionType;\n eventMeta.ui_goal = eventData.actionFlow;\n eventMeta.url = window.location.href;\n eventMeta.origin = eventData.origin || 'user';\n delete eventData.actionType;\n delete eventData.actionFlow;\n delete eventData.origin; // FUTURE: The listener should implement experiments metrics.\n // Send the event to the data analytics api\n\n if (dataAnalyticsAPIPath) {\n fetch(dataAnalyticsAPIPath, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8'\n },\n body: JSON.stringify({\n data: eventData,\n meta: eventMeta\n })\n });\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = facebookPixelSubscriber;\n\nvar _enums = _interopRequireDefault(require(\"../types/enums\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar whiteListedURLs = [/\\/collect\\/audience\\/.*\\/status/];\n\nvar isValidURL = function isValidURL(url) {\n return whiteListedURLs.some(function (pattern) {\n return url.match(pattern) !== null;\n });\n};\n\nfunction facebookPixelSubscriber(digitalDataEvent) {\n // eslint-disable-next-line global-require\n var ReactPixel = require('react-facebook-pixel');\n\n var _JSON$parse = JSON.parse(JSON.stringify(digitalDataEvent.data)),\n name = _JSON$parse.name,\n data = _JSON$parse.data,\n key = _JSON$parse.key;\n\n var actionType = digitalDataEvent.name;\n\n if (isValidURL(window.location.href) && key) {\n ReactPixel.init(key);\n\n if (actionType === _enums.default.USER_METADATA && name && data) {\n ReactPixel.track(name, data);\n }\n\n if (actionType === _enums.default.PAGE_VIEW) ReactPixel.pageView();\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gtmMetricsSubscriber;\n\nvar _utils = require(\"@sm/utils\");\n\nvar _helpers = require(\"../helpers\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction gtmMetricsSubscriber(digitalDataEvent) {\n var data = digitalDataEvent.data,\n name = digitalDataEvent.name;\n var actionType = data.actionType,\n actionFlow = data.actionFlow;\n\n if (!actionType || !actionFlow) {\n return;\n } // flatten the data object\n\n\n var gtmDataLayer = _objectSpread(_objectSpread({}, data), data.data);\n\n delete gtmDataLayer.data;\n var envDetails = (0, _utils.getClientEnvironmentDetails)();\n\n if (envDetails.isBrowser) {\n var pagePath = window.location.pathname;\n window.dataLayer = window.dataLayer || [];\n\n var eventObj = function eventObj(_ref) {\n var hasGDPRConsent = _ref.hasGDPRConsent,\n userId = _ref.userId,\n packageId = _ref.packageId,\n email = _ref.email,\n countryCode = _ref.countryCode;\n return {\n PAGE_VIEW: {\n event: 'pageView',\n loadMarketingContainer: hasGDPRConsent,\n user_id: userId,\n package_id: packageId,\n email: (0, _helpers.maskEmail)(email),\n country_code: countryCode\n },\n VIRTUAL_PAGE_VIEW: {\n event: 'virtualPageView',\n virtualPageUrl: pagePath,\n virtualPageTitle: actionFlow\n },\n GDPR_ACTION: {\n event: actionFlow,\n loadMarketingContainer: actionFlow !== 'denyConsent'\n }\n };\n };\n\n var gtm = eventObj(gtmDataLayer)[actionType] || _objectSpread({\n event: name\n }, gtmDataLayer);\n\n if (Object.keys(gtm).length) {\n window.dataLayer.push(gtm);\n }\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = loggingMetricsSubscriber;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction loggingMetricsSubscriber(digitalDataEvent, metricsTrackerConfig) {\n var eventData = JSON.parse(JSON.stringify(digitalDataEvent.data));\n var logEventData = eventData ? eventData.log : null;\n var loggingAPIPath = metricsTrackerConfig.loggingAPIPath;\n\n if (typeof loggingAPIPath !== 'undefined' && typeof logEventData !== 'undefined' && logEventData !== null && loggingAPIPath) {\n delete eventData.log;\n\n var bodyRequestObject = _objectSpread({\n data: eventData\n }, logEventData);\n\n fetch(loggingAPIPath, {\n method: 'POST',\n cache: 'no-cache',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8'\n },\n body: JSON.stringify(bodyRequestObject)\n });\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.USER_SUBSCRIPTION_STATUS = void 0;\nvar USER_EVENTS; // Adding information about the user\n\n(function (USER_EVENTS) {\n USER_EVENTS[\"PAGE_VIEW\"] = \"PAGE_VIEW\";\n USER_EVENTS[\"VIRTUAL_PAGE_VIEW\"] = \"VIRTUAL_PAGE_VIEW\";\n USER_EVENTS[\"COMPONENT_ADD\"] = \"COMPONENT_ADD\";\n USER_EVENTS[\"COMPONENT_ERROR\"] = \"COMPONENT_ERROR\";\n USER_EVENTS[\"DATA_FETCH_ERROR\"] = \"DATA_FETCH_ERROR\";\n USER_EVENTS[\"ELEMENT_INTERACTION\"] = \"ELEMENT_INTERACTION\";\n USER_EVENTS[\"GDPR_ACTION\"] = \"GDPR_ACTION\";\n USER_EVENTS[\"NAVIGATION\"] = \"NAVIGATION\";\n USER_EVENTS[\"USER_METADATA\"] = \"USER_METADATA\";\n})(USER_EVENTS || (USER_EVENTS = {}));\n\nvar USER_SUBSCRIPTION_STATUS;\nexports.USER_SUBSCRIPTION_STATUS = USER_SUBSCRIPTION_STATUS;\n\n(function (USER_SUBSCRIPTION_STATUS) {\n USER_SUBSCRIPTION_STATUS[\"NEW\"] = \"new\";\n USER_SUBSCRIPTION_STATUS[\"CHURNED\"] = \"churned\";\n USER_SUBSCRIPTION_STATUS[\"ACTIVE\"] = \"active\";\n})(USER_SUBSCRIPTION_STATUS || (exports.USER_SUBSCRIPTION_STATUS = USER_SUBSCRIPTION_STATUS = {}));\n\nvar _default = USER_EVENTS;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCookieValue = getCookieValue;\nexports.parseOneTrustCookie = parseOneTrustCookie;\nvar ONETRUST_COOKIE = 'OptanonConsent';\n\nfunction getCookieValue(cname, defaultValue) {\n // `getClientEnvironmentDetails` could provide this information, but imports\n // the \"bowser\" package to decorate a bunch of details we don't need (that's ~5k minified)\n // As such, we'll just lift the line we actually want:\n // https://code.corp.surveymonkey.com/webplatform/smpackages/blob/master/packages/utils/src/environment/index.ts#L83\n var isBrowser = typeof window === 'object';\n if (!isBrowser) return '';\n var name = \"\".concat(cname, \"=\");\n var decodedCookie = decodeURIComponent(document.cookie);\n var ca = decodedCookie.split(';');\n\n for (var i = 0; i < ca.length; i += 1) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1);\n }\n\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length);\n }\n }\n\n return defaultValue || '';\n}\n/**\n * Checks for and parses the information stored in the OneTrust cookie\n *\n * @returns Whether the OneTrust cookie exists and the information stored within it\n */\n\n\nfunction parseOneTrustCookie() {\n var cookieValue = getCookieValue(ONETRUST_COOKIE, '');\n var retVal = {\n hasOneTrustCookie: !!cookieValue,\n keyValues: {},\n groups: {}\n };\n\n if (retVal.hasOneTrustCookie) {\n cookieValue.split('&').forEach(function (token) {\n var keyVal = token.split('=').map(function (piece) {\n return decodeURIComponent(piece);\n });\n var key = keyVal.shift();\n var value = keyVal.length ? keyVal.shift() : true;\n\n if (key) {\n retVal.keyValues[key] = value;\n }\n }); // fix up groups to be cleaner\n\n if (typeof retVal.keyValues.groups === 'string') {\n retVal.keyValues.groups.split(',').forEach(function (group) {\n var tokens = group.split(':');\n retVal.groups[tokens[0]] = tokens[1] === '1';\n });\n }\n }\n\n return retVal;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _s3upload = _interopRequireDefault(require(\"react-s3-uploader/s3upload\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nvar DEFAULT_OPTIONS = {\n preprocess: function preprocess(file, next) {\n next(file);\n },\n onSignedUrl: function onSignedUrl() {},\n onProgress: function onProgress() {},\n onFinish: function onFinish() {},\n onError: function onError() {},\n signingUrl: '/core/api/s3/sign',\n scrubFilename: function scrubFilename(filename) {\n return \".\".concat(filename.split('.').pop());\n },\n s3path: '',\n autoUpload: true\n};\n/**\n * Creates a new S3Uploader.\n * @class\n */\n\nvar S3Uploader = /*#__PURE__*/function () {\n /**\n * @constructs S3Uploader\n * @param {Object} options S3Uploader options\n * @param {string} options.server S3Uploader server\n * @param {string} options.signingUrl S3Uploader singingUrl\n * @param {string} options.server S3Uploader server\n * @param {Array} options.successResponses {code, code} Success responses\n * @param {string} [options.signingUrlMethod=\"GET\"] S3Uploader singingUrlMethod\n * @param {string} [options.s3path=\"\"] S3Uploader s3path\n * @param {boolean} [options.autoUpload=true] S3Uploader autoupload\n * @param {Object} options.files S3Uploader files\n * @param {Object} options.fileElement S3Uploader fileElement\n * @param {Function} options.onFinishS3Put S3Uploader onFinishS3Put function\n * @param {Function} options.onFinish OnFinish uploading function\n * @param {Function} options.preprocess preprocess function\n * @param {Function} options.onProgress onProgress uploading function\n * @param {Function} options.onError on upload error function\n * @param {Function} options.onSignedUrl signed url function\n * @param {Function} options.fileElement fileElement\n * @param {Function} options.inputRef inputRef\n * @param {Function} options.contentDisposition\n * @param {Object} options.uploadRequestHeaders\n * @param {boolean} options.getSignedUrl\n */\n function S3Uploader(options) {\n _classCallCheck(this, S3Uploader);\n\n this.options = void 0;\n this.myUploader = void 0;\n this.options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n }\n /**\n * Upload the file\n */\n\n\n _createClass(S3Uploader, [{\n key: \"uploadFile\",\n value: function uploadFile() {\n this.myUploader = new _s3upload.default(_objectSpread(_objectSpread({}, DEFAULT_OPTIONS), this.options));\n }\n /**\n * Abort the upload\n */\n\n }, {\n key: \"abort\",\n value: function abort() {\n if (this.myUploader) {\n this.myUploader.abortUpload();\n }\n }\n }]);\n\n return S3Uploader;\n}();\n\nexports.default = S3Uploader;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isTeamPackage = exports.isEnterprisePackage = exports.isBasicPackage = exports.isAnnualPackage = exports.PackageType = void 0; // constants and logic for dealing with billing packages\n\nvar PackageType;\nexports.PackageType = PackageType;\n\n(function (PackageType) {\n PackageType[PackageType[\"BASIC\"] = 1] = \"BASIC\";\n PackageType[PackageType[\"PRO\"] = 2] = \"PRO\";\n PackageType[PackageType[\"UNLIMITED\"] = 3] = \"UNLIMITED\";\n PackageType[PackageType[\"SELECT_MONTHLY\"] = 4] = \"SELECT_MONTHLY\";\n PackageType[PackageType[\"GOLD\"] = 5] = \"GOLD\";\n PackageType[PackageType[\"PLATINUM\"] = 6] = \"PLATINUM\";\n PackageType[PackageType[\"SELECT_YEARLY\"] = 7] = \"SELECT_YEARLY\";\n PackageType[PackageType[\"TEMP_PRO\"] = 8] = \"TEMP_PRO\";\n PackageType[PackageType[\"PRO_COMP\"] = 9] = \"PRO_COMP\";\n PackageType[PackageType[\"ZOOM_PRO\"] = 13] = \"ZOOM_PRO\";\n PackageType[PackageType[\"ZOOM_PREMIUM\"] = 16] = \"ZOOM_PREMIUM\";\n PackageType[PackageType[\"ENT_GOLD\"] = 25] = \"ENT_GOLD\";\n PackageType[PackageType[\"ENTERPRISE_PLATINUM\"] = 26] = \"ENTERPRISE_PLATINUM\";\n PackageType[PackageType[\"ENTERPRISE\"] = 27] = \"ENTERPRISE\";\n PackageType[PackageType[\"ENTERPRISE_CASUAL_USER\"] = 29] = \"ENTERPRISE_CASUAL_USER\";\n PackageType[PackageType[\"STANDARD_MONTHLY\"] = 31] = \"STANDARD_MONTHLY\";\n PackageType[PackageType[\"STANDARD_ANNUAL\"] = 32] = \"STANDARD_ANNUAL\";\n PackageType[PackageType[\"ADVANTAGE_MONTHLY\"] = 33] = \"ADVANTAGE_MONTHLY\";\n PackageType[PackageType[\"ADVANTAGE_ANNUAL\"] = 34] = \"ADVANTAGE_ANNUAL\";\n PackageType[PackageType[\"PREMIER_MONTHLY\"] = 35] = \"PREMIER_MONTHLY\";\n PackageType[PackageType[\"PREMIER_ANNUAL\"] = 36] = \"PREMIER_ANNUAL\";\n PackageType[PackageType[\"ANALYZE_PACKAGE\"] = 37] = \"ANALYZE_PACKAGE\";\n PackageType[PackageType[\"TEAM_ADVANTAGE_ANNUAL\"] = 134] = \"TEAM_ADVANTAGE_ANNUAL\";\n PackageType[PackageType[\"TEAM_PREMIER_ANNUAL\"] = 136] = \"TEAM_PREMIER_ANNUAL\";\n PackageType[PackageType[\"ENTERPRISE_CONTRIBUTOR_SEAT\"] = 226] = \"ENTERPRISE_CONTRIBUTOR_SEAT\";\n PackageType[PackageType[\"TEAM_ADVANTAGE_CONTRIBUTOR_SEAT\"] = 234] = \"TEAM_ADVANTAGE_CONTRIBUTOR_SEAT\";\n PackageType[PackageType[\"TEAM_PREMIER_CONTRIBUTOR_SEAT\"] = 236] = \"TEAM_PREMIER_CONTRIBUTOR_SEAT\";\n})(PackageType || (exports.PackageType = PackageType = {}));\n\nvar isAnnualPackage = function isAnnualPackage(packageID) {\n return [PackageType.ENTERPRISE_PLATINUM, PackageType.ENTERPRISE, PackageType.STANDARD_ANNUAL, PackageType.ADVANTAGE_ANNUAL, PackageType.PREMIER_ANNUAL, PackageType.TEAM_ADVANTAGE_ANNUAL, PackageType.TEAM_PREMIER_ANNUAL].includes(packageID);\n};\n\nexports.isAnnualPackage = isAnnualPackage;\n\nvar isBasicPackage = function isBasicPackage(packageID) {\n return packageID === PackageType.BASIC;\n};\n\nexports.isBasicPackage = isBasicPackage;\n\nvar isEnterprisePackage = function isEnterprisePackage(packageID) {\n return [PackageType.ENT_GOLD, PackageType.ENTERPRISE, PackageType.ENTERPRISE_CONTRIBUTOR_SEAT, PackageType.ENTERPRISE_PLATINUM, PackageType.ENTERPRISE_CASUAL_USER].includes(packageID);\n};\n\nexports.isEnterprisePackage = isEnterprisePackage;\n\nvar isTeamPackage = function isTeamPackage(packageID) {\n return [PackageType.ENTERPRISE_PLATINUM, PackageType.ENTERPRISE, PackageType.TEAM_ADVANTAGE_ANNUAL, PackageType.TEAM_PREMIER_ANNUAL].indexOf(packageID) > -1;\n};\n\nexports.isTeamPackage = isTeamPackage;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.environmentDetails = exports.SupportedBrowserVendors = void 0;\nexports.getClientEnvironmentDetails = getClientEnvironmentDetails;\nexports.isBrowserSupported = isBrowserSupported;\n\nvar _bowser = _interopRequireDefault(require(\"bowser\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * Environment Details\n * @typedef {Object}\n * @property {boolean} isNode\n * @property {boolean} isBrowser\n * @property {boolean} isDesktop\n * @property {boolean} isHeadlessChrome\n * @property {boolean} isMobile\n * @property {boolean} isTablet\n * @property {boolean} isIOS\n * @property {boolean} isAndroid\n * @property {Object} clientWindowSize\n * @property {string} clientWindowSize.width\n * @property {string} clientWindowSize.height\n * @memberof module:@sm/utils\n */\n\n\nvar environmentDetails = {\n isNode: false,\n isBrowser: false,\n isDesktop: false,\n isHeadlessChrome: false,\n isMobile: false,\n isTablet: false,\n isIOS: false,\n isAndroid: false,\n clientWindowSize: {\n width: undefined,\n height: undefined\n }\n};\nexports.environmentDetails = environmentDetails;\nvar userAgentTracker = '';\n/**\n * inspectAgent\n * @param {string} userAgent The string for the user agent\n */\n\nfunction inspectAgent(userAgent) {\n if (!userAgent) {\n return;\n }\n\n if (userAgent.match(/iPhone|iPod|iPad/i) !== null) {\n environmentDetails.isIOS = true;\n\n if (userAgent.match(/iPad/i) !== null) {\n environmentDetails.isTablet = true;\n } else {\n environmentDetails.isMobile = true;\n }\n } else if (userAgent.match(/Android/i) !== null) {\n environmentDetails.isMobile = true;\n environmentDetails.isAndroid = true;\n } else if (userAgent.match(/HeadlessChrome/i) !== null) {\n environmentDetails.isHeadlessChrome = true;\n } else {\n environmentDetails.isDesktop = true;\n }\n}\n/**\n * Initialize\n * @param {string} userAgent The string for the user agent\n * @private\n */\n\n\nfunction _initialize(userAgent) {\n var ua = userAgent;\n\n if (typeof window === 'object') {\n environmentDetails.isBrowser = true;\n window.SM = window.SM || {};\n var _window = window,\n SM = _window.SM;\n SM.__LOAD_PAYLOAD_CACHE__ = SM.__LOAD_PAYLOAD_CACHE__ || {}; // Detect banner type (iOS or Android)\n\n environmentDetails.clientWindowSize = {\n width: document.body.clientWidth,\n height: document.body.clientHeight\n };\n ua = navigator.userAgent;\n } else {\n environmentDetails.isNode = true;\n }\n\n inspectAgent(ua);\n}\n/**\n * Returns the environment details\n * @param {string} userAgent The string for the user agent\n * @returns {environmentDetails} env details\n * @memberof module:@sm/utils\n */\n\n\nfunction getClientEnvironmentDetails() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (environmentDetails.isBrowser === false && environmentDetails.isNode === false || userAgentTracker !== userAgent) {\n userAgentTracker = userAgent;\n\n _initialize(userAgentTracker);\n }\n\n return environmentDetails;\n}\n\nvar SupportedBrowserVendors;\nexports.SupportedBrowserVendors = SupportedBrowserVendors;\n\n(function (SupportedBrowserVendors) {\n SupportedBrowserVendors[\"Chrome\"] = \"chrome\";\n SupportedBrowserVendors[\"Firefox\"] = \"firefox\";\n SupportedBrowserVendors[\"Safari\"] = \"safari\";\n SupportedBrowserVendors[\"IE\"] = \"ie\";\n SupportedBrowserVendors[\"Edge\"] = \"edge\";\n})(SupportedBrowserVendors || (exports.SupportedBrowserVendors = SupportedBrowserVendors = {}));\n\nvar defaultSupportedBrowsers = [{\n vendor: SupportedBrowserVendors.Chrome,\n operator: '>=',\n version: '18'\n}, {\n vendor: SupportedBrowserVendors.Firefox,\n operator: '>=',\n version: '24'\n}, {\n vendor: SupportedBrowserVendors.Safari,\n operator: '>=',\n version: '7'\n}, {\n vendor: SupportedBrowserVendors.Edge,\n operator: '>=',\n version: '12'\n}, {\n vendor: SupportedBrowserVendors.IE,\n operator: '>=',\n version: '11'\n}];\n\nfunction isBrowserSupported(userAgent, supportedBrowsers) {\n var browser = _bowser.default.getParser(userAgent);\n\n var browsers = supportedBrowsers || defaultSupportedBrowsers;\n browsers.forEach(function (_ref) {\n var version = _ref.version;\n\n if (!version.match(/^\\d+(\\.\\d+)?(\\.\\d+)?$/)) {\n throw new Error(\"Unsupported version number: \".concat(version));\n }\n });\n var config = browsers.reduce(function (cfg, _ref2) {\n var vendor = _ref2.vendor,\n operator = _ref2.operator,\n version = _ref2.version;\n cfg[vendor] = \"\".concat(operator).concat(version);\n return cfg;\n }, {});\n return browser.satisfies(config) || false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"PackageType\", {\n enumerable: true,\n get: function get() {\n return _billing.PackageType;\n }\n});\nObject.defineProperty(exports, \"PartialDeep\", {\n enumerable: true,\n get: function get() {\n return _tsAutoMock.PartialDeep;\n }\n});\nObject.defineProperty(exports, \"S3Uploader\", {\n enumerable: true,\n get: function get() {\n return _S3Uploader.default;\n }\n});\nObject.defineProperty(exports, \"SupportedBrowserVendors\", {\n enumerable: true,\n get: function get() {\n return _environment.SupportedBrowserVendors;\n }\n});\nObject.defineProperty(exports, \"SupportedBrowsers\", {\n enumerable: true,\n get: function get() {\n return _environment.SupportedBrowsers;\n }\n});\nObject.defineProperty(exports, \"VersionOperators\", {\n enumerable: true,\n get: function get() {\n return _environment.VersionOperators;\n }\n});\nObject.defineProperty(exports, \"createMock\", {\n enumerable: true,\n get: function get() {\n return _tsAutoMock.createMock;\n }\n});\nObject.defineProperty(exports, \"createURL\", {\n enumerable: true,\n get: function get() {\n return _createURL.default;\n }\n});\nObject.defineProperty(exports, \"deepFreeze\", {\n enumerable: true,\n get: function get() {\n return _deepFreeze.default;\n }\n});\nObject.defineProperty(exports, \"getClientEnvironmentDetails\", {\n enumerable: true,\n get: function get() {\n return _environment.getClientEnvironmentDetails;\n }\n});\nObject.defineProperty(exports, \"isAnnualPackage\", {\n enumerable: true,\n get: function get() {\n return _billing.isAnnualPackage;\n }\n});\nObject.defineProperty(exports, \"isBasicPackage\", {\n enumerable: true,\n get: function get() {\n return _billing.isBasicPackage;\n }\n});\nObject.defineProperty(exports, \"isBrowserSupported\", {\n enumerable: true,\n get: function get() {\n return _environment.isBrowserSupported;\n }\n});\nObject.defineProperty(exports, \"isEnterprisePackage\", {\n enumerable: true,\n get: function get() {\n return _billing.isEnterprisePackage;\n }\n});\nObject.defineProperty(exports, \"isTeamPackage\", {\n enumerable: true,\n get: function get() {\n return _billing.isTeamPackage;\n }\n});\nObject.defineProperty(exports, \"isValidEmail\", {\n enumerable: true,\n get: function get() {\n return _isValidEmail.default;\n }\n});\nObject.defineProperty(exports, \"sanitizeString\", {\n enumerable: true,\n get: function get() {\n return _sanitizeString.default;\n }\n});\n\nvar _sanitizeString = _interopRequireDefault(require(\"./string/sanitizeString\"));\n\nvar _isValidEmail = _interopRequireDefault(require(\"./string/isValidEmail\"));\n\nvar _createURL = _interopRequireDefault(require(\"./url/createURL\"));\n\nvar _deepFreeze = _interopRequireDefault(require(\"./object/deepFreeze\"));\n\nvar _S3Uploader = _interopRequireDefault(require(\"./S3Uploader/S3Uploader\"));\n\nvar _environment = require(\"./environment\");\n\nvar _billing = require(\"./billing\");\n\nvar _tsAutoMock = require(\"./ts-auto-mock\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deepFreeze;\n/**\n * Freezes the object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nfunction deepFreeze(o) {\n Object.freeze(o);\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (Object.hasOwnProperty.call(o, prop) && o[prop] !== null && (typeof o[prop] === 'object' || typeof o[prop] === 'function') && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValidEmail;\n/**\n * Validates if the input is an email or not\n * @param {string} email\n * @returns {boolean} Is email valid\n * @memberof module:@sm/utils\n */\n\nfunction isValidEmail(email) {\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _dompurify = _interopRequireWildcard(require(\"dompurify\"));\n\nvar _environment = require(\"../environment\");\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nvar stringSanitize = _dompurify.sanitize;\n\nif ((0, _environment.getClientEnvironmentDetails)().isNode) {\n var _require = require('jsdom'),\n JSDOM = _require.JSDOM; // eslint-disable-line\n\n\n var _JSDOM = new JSDOM(''),\n window = _JSDOM.window;\n\n var DOMPurify = (0, _dompurify.default)(window);\n stringSanitize = DOMPurify.sanitize;\n}\n\nvar _default = stringSanitize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createMock = createMock;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n/* eslint-disable @typescript-eslint/ban-types */\n// PartialDeep implementation comes from https://github.com/Typescript-TDD/ts-auto-mock/blob/master/src/partial/partial.ts\n\n/**\nSame as `PartialDeep`, but accepts only `Map`s and as inputs. Internal helper for `PartialDeep`.\n */\n\n/**\nSame as `PartialDeep`, but accepts only `Set`s as inputs. Internal helper for `PartialDeep`.\n */\n\n/**\nSame as `PartialDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `PartialDeep`.\n */\n\n/**\nSame as `PartialDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `PartialDeep`.\n */\n\n/**\nSame as `PartialDeep`, but accepts only `object`s as inputs. Internal helper for `PartialDeep`.\n */\n\n\nfunction createMock(overrides) {\n return _objectSpread({}, overrides);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createURL;\n/**\n * Creates a url from base and params\n * @param {string} url\n * @param {Object} [params] Query string params\n * @returns {string} url\n * @memberof module:@sm/utils\n */\n\nfunction createURL(url, params) {\n if (!params || typeof params !== 'object' || Object.keys(params).length === 0) return url;\n var queryString = Object.keys(params).map(function (key) {\n return \"\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(params[key]));\n }).join('&');\n var queryURL = \"\".concat(url, \"?\").concat(queryString);\n return queryURL;\n}\n\nmodule.exports = exports.default;","/*\n * Tools for creating TypeGuards.\n */\n// primitive type guards\nconst notNull = u => u !== null;\n\nconst isNull = u => u === null;\n\nconst isString = u => typeof u === 'string';\n\nconst isNumber = u => typeof u === 'number';\n\nconst isOptional = guard => u => u === undefined || guard(u);\n\nconst isArrayOf = guard => u => Array.isArray(u) && u.every(guard);\n/** TypeGuard for discriminated unions of strings */\n\n\nconst isOneOf = list => u => !!list.find(i => i === u);\n/** TypeGuard for fixed values */\n\n\nconst isFixed = value => u => u === value; // type guard operators\n\n/** TypeGuard for discriminated unions of objects\n *\n * Does not currently infer the array types, so `T` needs to be provided\n */\n\n\nconst isEither = list => u => !!list.find(g => g(u));\n\nconst isNullable = guard => u => {\n if (u === null) {\n return true;\n }\n\n const res = guard(u);\n return typeof res === 'boolean' && res;\n};\n/** TypeGuard for an object. Needs to have one Guard for every attribute */\n\n\nconst typeGuard = guards => u => {\n return Object.entries(guards).every(([key, guard]) => {\n if (!u) {\n return false;\n }\n\n const value = u[key];\n\n if (!guard(value)) {\n return false;\n }\n\n return true;\n });\n};\n/**\n * TypeAssertion for an object. Needs to have one Guard or TypeAssertion for every attribute.\n * Will throw an error if the property is of the wrong type.\n */\n// TODO: refactor the typeGuard function to work as a typeAssertion when called by a typeAssertion\n\n\nfunction typeAssertion(guards) {\n return function assertGuard(u) {\n // for function Guards like `isEither`\n if (typeof guards === 'function') {\n const res = guards(u);\n\n if (typeof res === 'boolean' && !res) {\n throw new Error('failed-typeguard');\n }\n\n return;\n } // default with a Guard object\n\n\n Object.entries(guards).forEach(([key, guard]) => {\n if (!u) {\n throw new Error(`Can't read property '${key}' of '${u}'`);\n }\n\n const value = u[key];\n\n try {\n const res = guard(value);\n\n if (typeof res === 'boolean' && !res) {\n throw new Error('failed-typeguard');\n }\n } catch (e) {\n // TODO: write or install a nested error object\n throw new Error(`Value '${value}' has the wrong type for property '${key}':${'\\n'}${e && e.message}`);\n }\n });\n };\n}\n\nconst questionTypeFamilies = ['PRESENTATION', 'MULTIPLE_CHOICE', 'OPEN_ENDED', 'RATING_SCALE', 'MATRIX', 'RANKING', 'SLIDER', 'DATETIME', 'CONTACT_INFO', 'CLICK_MAP', 'FILE_UPLOAD'];\nconst questionTypeRequiredPredicateTypes = ['ALL', 'AT_LEAST', 'AT_MOST', 'EXACTLY', 'RANGE' // 'REQUIRED_ANSWERS_LIST',\n];\nconst questionTypeVariants = ['TEXT', 'IMAGE', 'SINGLE_LINE', 'ESSAY', 'MANY_FIELDS', 'SINGLE_ANSWER_RADIO', 'SINGLE_ANSWER_SYMBOL', 'SINGLE_ANSWER_MENU', 'MANY_ANSWERS_CHECKBOX', 'MENU', 'SINGLE_SLIDER', 'DATE', 'TIME', 'DATETIME', 'MANY_FIELDS', 'SINGLE_CLICK', 'RATING', null];\nconst questionTypeLayoutPlacements = ['NEW_ROW', 'RIGHT_ALIGNED'];\nconst questionTypeValidationTypes = ['SUM', 'TEXT_LENGTH', 'EMAIL', 'INTEGER', 'DECIMAL', 'DATE_US', 'DATE_INTL', 'FILE_FORMAT'];\nconst questionTypeIds = ['single_textbox', 'comment_box'];\nconst questionTypeSortingKinds = ['FLIP', 'RANDOM', 'TEXT_ASC', 'TEXT_DESC'];\nconst questionTypeSkipLogicTypes = ['QUESTION_CONDITIONAL_COL', 'QUESTION_CONDITIONAL_ROW'];\nconst questionTypeSkipLogicDestinationTypes = ['DISQUALIFY_RESPONDENT', 'END_SURVEY', 'SKIP_TO_PAGE'];\nconst questionTypeMultipleChoiceLayouts = ['VERTICAL', 'THREE_COLUMNS', 'TWO_COLUMNS', 'HORIZONTAL'];\nconst SENTIMENTS = ['positive', 'negative', 'neutral', 'unknown'];\n/** Possible icons for Star-Rating */\n\nconst ratingScaleSymbols = ['THUMB', 'STAR', 'HEART', 'SMILEY'];\n/** Possible values for relative width (in percentage) */\n\nconst relativeWidthOptions = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];\n/** Possible values for fixed width (in pixel) */\n\nconst fixedWidthOptions = [100, 200, 300, 400, 500, 600, 700, 800]; // Base Types\n// Question Guard Helpers\n\nconst isQuestionError = typeGuard({\n questionId: isNullable(isString),\n detail: isString,\n type: isOneOf([...questionTypeValidationTypes, 'REQUIRED'])\n});\n/** Guard for minimal information needed to determine the type of a Question */\n\nconst baseQuestionGuards = (typeId, family, variant) => ({\n typeId: isFixed(typeId),\n variant: isFixed(variant),\n family: isFixed(family),\n id: isString\n});\n/**\n * a very basic typeguard for the common fields for a Question Type.\n * should receive parameters for the actual ID, FAMILY and SUBTYPE of the\n * Question Type to avoid Typescript errors. Question types can use this function\n * to help build their own typeGuards\n */\n\n\nconst isQuestionType = (typeId, family, variant) => typeGuard(baseQuestionGuards(typeId, family, variant)); // Mappings shared by multiple QuestionTypes in the RespondentSurvey Capability\n// to convert part of their external to their internal QuestionType representation\n\n/**\n * Mapping external to internal QuestionType properties shared by all QuestionTypes\n * in the RespondentSurvey Capability\n */\n\n\nfunction respondentSurveyMapping(externalQuestion) {\n const {\n position: {\n label: questionNumber\n },\n heading: {\n default: {\n text: title\n }\n }\n } = externalQuestion;\n return {\n questionNumber,\n title\n };\n} // Mappings/Types for ImageChoice shared by all Capabilities\n\n/**\n * Returns fields for ImageChoice's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst imageChoiceCrossCapabilityMapping = ({\n id,\n variant\n}) => ({\n typeId: 'image_choice',\n family: 'MULTIPLE_CHOICE',\n variant: variant,\n id\n}); // Mappings to convert ImageChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst imageChoiceRespondentSurveyMapping = externalQuestion => {\n var _a;\n\n const q = externalQuestion;\n const {\n required,\n answersImage,\n answerNA\n } = q;\n return { ...respondentSurveyMapping(q),\n ...imageChoiceCrossCapabilityMapping(q),\n required: (_a = required) !== null && _a !== void 0 ? _a : undefined,\n answersImage,\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : undefined\n };\n}; // Mappings shared by multiple QuestionTypes in the RespondentQuizResults Capability\n// to convert part of their external to their internal QuestionType representation\n\n/**\n * Mapping external to internal QuestionType properties shared by all QuestionTypes\n * in the RespondentQuizResults Capability\n */\n\n\nfunction respondentQuizResultsMapping(externalQuestion) {\n const {\n quizResults,\n position: {\n label: questionNumber\n },\n heading: {\n default: {\n text: title\n }\n }\n } = externalQuestion;\n return {\n quizResults: quizResults || undefined,\n questionNumber,\n title\n };\n} // Mappings to convert ImageChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst imageChoiceRespondentQuizResultsMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n answerNA,\n answersImage\n } = q;\n return { ...respondentQuizResultsMapping(q),\n ...imageChoiceCrossCapabilityMapping(q),\n answersImage,\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : null // remove `null` as possible type\n\n };\n}; // Mappings shared by multiple QuestionTypes in the AggregateResponseDashboard Capability\n// to convert part of their external to their internal QuestionType representation\n\n/**\n * Mapping external to internal QuestionType properties shared by all QuestionTypes\n * in the AggregateResponseDashboard Capability\n */\n\n\nfunction aggregateResponseDashboardMapping(externalQuestion) {\n const {\n dashboardType,\n filterCount,\n selectedCount,\n skippedCount,\n answeredCount,\n responseData,\n aggregateResponse,\n heading: {\n default: {\n text: title\n }\n }\n } = externalQuestion;\n return {\n dashboardType,\n filterCount,\n answeredCount,\n selectedCount,\n skippedCount,\n responseData,\n aggregateResponse,\n title\n };\n} // Mappings to convert ImageChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst imageChoiceAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...imageChoiceCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings shared by multiple QuestionTypes in the AggregateResponseCustomizableSolutions Capability\n// to convert part of their external to their internal QuestionType representation\n\n/**\n * Mapping external to internal QuestionType properties shared by all QuestionTypes\n * in the AggregateResponseCustomizableSolutions Capability\n */\n\n\nfunction aggregateResponseCustomizableSolutionsMapping(externalQuestion) {\n const {\n displayNumber: questionNumber,\n responseData,\n aggregateResponse,\n heading: {\n default: {\n text: title\n }\n }\n } = externalQuestion;\n return {\n questionNumber,\n responseData,\n aggregateResponse,\n title\n };\n} // Mappings to convert ImageChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst imageChoiceAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...imageChoiceCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n};\n/** Maps `answerOther` field for QuizResults capability */\n\n\nconst mapRespondentQuizResultsAnswerOther = answerOther => {\n if (!answerOther) {\n return null;\n }\n\n let base;\n\n if (answerOther.type === 'ANSWER') {\n const addRequiredErrorText = answerOther.requiredErrorText !== null && answerOther.requiredErrorText !== undefined;\n base = {\n type: 'ANSWER',\n ...(addRequiredErrorText ? {\n requiredErrorText: answerOther.requiredErrorText\n } : {})\n };\n } else {\n base = {\n type: answerOther.type\n };\n }\n\n return { ...base,\n id: answerOther.id,\n label: answerOther.label,\n visible: answerOther.visible,\n linesCount: answerOther.layout.linesCount,\n charsCount: answerOther.layout.charsCount\n };\n};\n/** Splits/Maps external `answerOther` to the internal `answerOther` and `answerComment` */\n\n\nconst mapRespondentSurveyAnswerOther = answerOther => {\n var _a;\n\n if (!answerOther) {\n return {};\n }\n\n const shared = {\n id: answerOther.id,\n label: answerOther.label,\n visible: answerOther.visible,\n linesCount: answerOther.layout.linesCount,\n charsCount: answerOther.layout.charsCount,\n // custom attributes for `other` validation\n touched: false,\n value: '',\n selected: false\n };\n\n if (answerOther.type === 'ANSWER') {\n const requiredErrorText = (_a = answerOther.requiredErrorText) !== null && _a !== void 0 ? _a : undefined;\n return {\n answerOther: {\n type: 'ANSWER',\n ...(requiredErrorText !== undefined ? {\n requiredErrorText\n } : {}),\n ...shared\n }\n };\n }\n\n return {\n answerComment: {\n type: answerOther.type,\n ...shared\n }\n };\n};\n/**\n * Maps `QuestionAnswerRequired` to more concrete `QuestionAnswerRequiredAll` type\n * and removes `min` and `max` properties */\n\n\nconst mapRespondentSurveyRequiredAll = answerOther => {\n if (!answerOther || answerOther.type !== 'ALL') {\n return undefined;\n }\n\n return {\n type: 'ALL',\n errorMessage: answerOther.errorMessage\n };\n};\n\nconst fillSpacing = spacing => {\n var _a, _b, _c, _d;\n\n return spacing ? {\n top: (_a = spacing.top) !== null && _a !== void 0 ? _a : 0,\n bottom: (_b = spacing.bottom) !== null && _b !== void 0 ? _b : 0,\n left: (_c = spacing.left) !== null && _c !== void 0 ? _c : 0,\n right: (_d = spacing.right) !== null && _d !== void 0 ? _d : 0\n } : undefined;\n}; // Mappings/Types for CheckBox shared by all Capabilities\n\n/**\n * Returns fields for CheckBox's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst checkBoxCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'check_box',\n family: 'MULTIPLE_CHOICE',\n variant: 'MANY_ANSWERS_CHECKBOX',\n id\n}); // Mappings to convert CheckBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst checkBoxRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n validation,\n required,\n answers,\n answerOther,\n answerNA\n } = q;\n return { ...respondentSurveyMapping(q),\n ...checkBoxCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: required !== null && required !== void 0 ? required : undefined,\n validation: validation !== null && validation !== void 0 ? validation : undefined,\n answers,\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : undefined,\n ...mapRespondentSurveyAnswerOther(answerOther)\n };\n}; // Mappings to convert CheckBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst checkBoxRespondentQuizResultsMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n answerOther,\n answerNA\n } = q;\n return { ...respondentQuizResultsMapping(q),\n ...checkBoxCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n answerOther: mapRespondentQuizResultsAnswerOther(answerOther),\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : null // remove `null` as possible type\n\n };\n}; // Mappings to convert CheckBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst checkBoxAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...checkBoxCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert CheckBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst checkBoxAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...checkBoxCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for Dropdown shared by all Capabilities\n\n/**\n * Returns fields for Dropdown's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst dropdownCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'dropdown',\n family: 'MULTIPLE_CHOICE',\n variant: 'SINGLE_ANSWER_MENU',\n id\n}); // Mappings to convert Dropdown's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst dropdownRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n validation,\n required,\n answers,\n answerOther\n } = q;\n return { ...respondentSurveyMapping(q),\n ...dropdownCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: mapRespondentSurveyRequiredAll(required),\n validation: validation !== null && validation !== void 0 ? validation : undefined,\n answers,\n ...mapRespondentSurveyAnswerOther(answerOther)\n };\n}; // Mappings to convert Dropdown's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst dropdownRespondentQuizResultsMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n answerOther\n } = q;\n return { ...respondentQuizResultsMapping(q),\n ...dropdownCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n answerOther: mapRespondentQuizResultsAnswerOther(answerOther)\n };\n}; // Mappings to convert Dropdown's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst dropdownAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...dropdownCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert Dropdown's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst dropdownAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...dropdownCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for CommentBox shared by all Capabilities\n\n/**\n * Returns fields for CommentBox's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst commentBoxCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'comment_box',\n family: 'OPEN_ENDED',\n variant: 'ESSAY',\n id\n}); // Mappings to convert CommentBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst commentBoxRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n validation,\n required,\n fieldSet\n } = q;\n return { ...respondentSurveyMapping(q),\n ...commentBoxCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n fieldSet,\n // can only be required `all` of OpenEnded questions\n required: mapRespondentSurveyRequiredAll(required),\n validation: validation !== null && validation !== void 0 ? validation : undefined\n };\n}; // Mappings to convert CommentBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst commentBoxAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...commentBoxCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert CommentBox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst commentBoxAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...commentBoxCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for SingleTextbox shared by all Capabilities\n\n/**\n * Returns fields for SingleTextbox's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst singleTextboxCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'single_textbox',\n family: 'OPEN_ENDED',\n variant: 'SINGLE_LINE',\n id\n}); // Mappings to convert SingleTextbox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst singleTextboxRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n validation,\n required,\n fieldSet\n } = q;\n return { ...respondentSurveyMapping(q),\n ...singleTextboxCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n fieldSet,\n // can only be required `all` of OpenEnded questions\n required: mapRespondentSurveyRequiredAll(required),\n validation: validation !== null && validation !== void 0 ? validation : undefined\n };\n}; // Mappings to convert SingleTextbox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst singleTextboxAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...singleTextboxCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert SingleTextbox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst singleTextboxAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...singleTextboxCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for Matrix shared by all Capabilities\n\n/**\n * Returns fields for Matrix's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst matrixCrossCapabilityMapping = ({\n id,\n family,\n variant\n}) => ({\n typeId: 'matrix',\n family: family,\n variant: variant,\n id\n}); // Mappings to convert Matrix's external to it's internal QuestionType representation\n\n\nconst isExternalMatrixWithRadio = q => q.variant === 'SINGLE_ANSWER_RADIO' && 'fieldSets' in q;\n\nconst isExternalMatrixWithCheckboxes = q => q.variant === 'MANY_ANSWERS_CHECKBOX';\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst matrixRespondentSurveyMapping = externalQuestion => {\n var _a;\n\n const q = externalQuestion;\n const {\n layout,\n required,\n answerOther\n } = q;\n const base = { ...respondentSurveyMapping(q),\n ...matrixCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: (_a = required) !== null && _a !== void 0 ? _a : undefined,\n ...mapRespondentSurveyAnswerOther(answerOther)\n };\n\n if (isExternalMatrixWithRadio(q)) {\n const {\n fieldSets,\n answersWeighted,\n answerNA,\n isForcedRanking,\n isWeighted\n } = q;\n return { ...base,\n fieldSets,\n answersWeighted,\n answerNotApplicable: answerNA !== null && answerNA !== void 0 ? answerNA : undefined,\n isForcedRanking,\n isWeighted\n };\n }\n\n if (isExternalMatrixWithCheckboxes(q)) {\n const {\n fieldSets,\n answers\n } = q;\n return { ...base,\n fieldSets,\n answers\n };\n }\n\n const {\n fieldSet,\n answersWeighted,\n answerNA\n } = q;\n return { ...base,\n fieldSet,\n answersWeighted,\n answerNotApplicable: answerNA !== null && answerNA !== void 0 ? answerNA : undefined\n };\n}; // Mappings to convert Matrix's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst matrixAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...matrixCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert Matrix's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst matrixAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...matrixCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for MultipleChoice shared by all Capabilities\n\n/**\n * Returns fields for MultipleChoice's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst multipleChoiceCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'multiple_choice',\n family: 'MULTIPLE_CHOICE',\n variant: 'SINGLE_ANSWER_RADIO',\n id\n}); // Mappings to convert MultipleChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleChoiceRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n validation,\n required,\n answers,\n answerOther,\n answerNA\n } = q;\n return { ...respondentSurveyMapping(q),\n ...multipleChoiceCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: mapRespondentSurveyRequiredAll(required),\n validation: validation !== null && validation !== void 0 ? validation : undefined,\n answers,\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : undefined,\n ...mapRespondentSurveyAnswerOther(answerOther)\n };\n}; // Mappings to convert MultipleChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleChoiceRespondentQuizResultsMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n answerOther,\n answerNA\n } = q;\n return { ...respondentQuizResultsMapping(q),\n ...multipleChoiceCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n answerOther: mapRespondentQuizResultsAnswerOther(answerOther),\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : null // remove `null` as possible type\n\n };\n}; // Mappings to convert MultipleChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleChoiceAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...multipleChoiceCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert MultipleChoice's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleChoiceAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...multipleChoiceCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for MultipleTextbox shared by all Capabilities\n\n/**\n * Returns fields for MultipleTextbox's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst multipleTextboxCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'multiple_textbox',\n family: 'OPEN_ENDED',\n variant: 'MANY_FIELDS',\n id\n}); // Mappings to convert MultipleTextbox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleTextboxRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n answers,\n validation,\n sumValidation,\n required,\n fieldSets\n } = q;\n return { ...respondentSurveyMapping(q),\n ...multipleTextboxCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n fieldSets,\n answers,\n required: required !== null && required !== void 0 ? required : undefined,\n validation: validation !== null && validation !== void 0 ? validation : undefined,\n sumValidation: sumValidation !== null && sumValidation !== void 0 ? sumValidation : undefined\n };\n}; // Mappings to convert MultipleTextbox's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst multipleTextboxAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...multipleTextboxCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings/Types for Ranking shared by all Capabilities\n\n/**\n * Returns fields for Ranking's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst rankingCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'ranking',\n family: 'RANKING',\n variant: 'SINGLE_ANSWER_RADIO',\n id\n}); // Mappings to convert Ranking's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst rankingRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n fieldSets,\n answers,\n required,\n answerNA\n } = q;\n return { ...respondentSurveyMapping(q),\n ...rankingCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n fieldSets,\n answers,\n required: mapRespondentSurveyRequiredAll(required),\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : undefined\n };\n}; // Mappings to convert Ranking's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst rankingAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...rankingCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings to convert Ranking's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst rankingAggregateResponseCustomizableSolutionsMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...rankingCrossCapabilityMapping(q),\n ...aggregateResponseCustomizableSolutionsMapping(q)\n };\n}; // Mappings/Types for Slider shared by all Capabilities\n\n/**\n * Returns fields for Slider's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst sliderCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'slider',\n family: 'SLIDER',\n variant: 'SINGLE_SLIDER',\n id\n}); // Mappings to convert Slider's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst sliderRespondentSurveyMapping = externalQuestion => {\n var _a;\n\n const q = externalQuestion;\n const {\n scaleOptions,\n required,\n hideNumericalInput\n } = q;\n return { ...respondentSurveyMapping(q),\n ...sliderCrossCapabilityMapping(q),\n required: (_a = required) !== null && _a !== void 0 ? _a : undefined,\n scaleOptions,\n hideNumericalInput\n };\n}; // Mappings to convert Slider's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst sliderAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...sliderCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings/Types for StarRating shared by all Capabilities\n\n/**\n * Returns fields for StarRating's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst starRatingCrossCapabilityMapping = ({\n id,\n family,\n variant\n}) => ({\n typeId: 'star_rating',\n family,\n variant,\n id\n}); // Mappings to convert StarRating's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst starRatingRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n required,\n fieldSet,\n answersWeighted,\n answerNA,\n answerOther,\n symbolOptions\n } = q;\n return { ...respondentSurveyMapping(q),\n ...starRatingCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: mapRespondentSurveyRequiredAll(required),\n fieldSet,\n answersWeighted,\n answerNoneOfTheAbove: answerNA !== null && answerNA !== void 0 ? answerNA : undefined,\n symbolOptions: symbolOptions !== null && symbolOptions !== void 0 ? symbolOptions : undefined,\n ...mapRespondentSurveyAnswerOther(answerOther)\n };\n}; // Mappings to convert StarRating's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst starRatingAggregateResponseDashboardMapping = externalQuestion => {\n const q = externalQuestion;\n return { ...starRatingCrossCapabilityMapping(q),\n ...aggregateResponseDashboardMapping(q)\n };\n}; // Mappings/Types for ImagePresentation shared by all Capabilities\n\n/**\n * Returns fields for ImagePresentation's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst imagePresentationCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'image_presentation',\n family: 'PRESENTATION',\n variant: 'IMAGE',\n id\n}); // Mappings to convert ImagePresentation's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst imagePresentationRespondentSurveyMapping = externalQuestion => {\n var _a;\n\n const q = externalQuestion;\n const {\n heading,\n layout\n } = q;\n return { ...respondentSurveyMapping(q),\n ...imagePresentationCrossCapabilityMapping(q),\n heading: { ...heading,\n assignments: (_a = heading.assignments) !== null && _a !== void 0 ? _a : undefined\n },\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n }\n };\n}; // Mappings/Types for TextPresentation shared by all Capabilities\n\n/**\n * Returns fields for TextPresentation's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst textPresentationCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'text_presentation',\n family: 'PRESENTATION',\n variant: 'TEXT',\n id\n}); // Mappings to convert TextPresentation's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst textPresentationRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n heading,\n layout\n } = q;\n return { ...respondentSurveyMapping(q),\n ...textPresentationCrossCapabilityMapping(q),\n heading,\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n }\n };\n}; // Mappings/Types for NPS shared by all Capabilities\n\n/**\n * Returns fields for Nps's internal QuestionType type\n * that are shared across all Capabilities\n */\n\n\nconst npsCrossCapabilityMapping = ({\n id\n}) => ({\n typeId: 'nps',\n family: 'RATING_SCALE',\n variant: 'NPS',\n id\n}); // Mappings to convert NPS's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst npsRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n required,\n answersWeighted,\n fieldSet\n } = q;\n return { ...respondentSurveyMapping(q),\n ...npsCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: mapRespondentSurveyRequiredAll(required),\n answersWeighted,\n fieldSet\n };\n};\n\nconst isTextLengthValidation = typeGuard({\n errorMessage: isString,\n type: isFixed('TEXT_LENGTH'),\n minLength: isNumber,\n maxLength: isNumber\n});\nconst isNumericalValidation = typeGuard({\n errorMessage: isString,\n type: isEither([isFixed('INTEGER'), isFixed('DECIMAL')]),\n minValue: isNumber,\n maxValue: isNumber\n});\nconst isDateValidation = typeGuard({\n errorMessage: isString,\n type: isOneOf(['DATE_US', 'DATE_INTL']),\n minDate: isString,\n maxDate: isString\n});\nconst isDateFormatValidation = typeGuard({\n errorMessage: isString,\n type: isOneOf(['DATE_US', 'DATE_INTL'])\n});\nconst isEmailValidation = typeGuard({\n errorMessage: isString,\n type: isFixed('EMAIL')\n});\nconst isFieldValidation = isEither([isTextLengthValidation, isNumericalValidation, isDateValidation, isEmailValidation]); // Mappings/Types for DateTime shared by all Capabilities\n\n/**\n * Returns fields for DateTime's internal QuestionType type\n * that are shared across all Capabilities\n */\n\nconst dateTimeCrossCapabilityMapping = ({\n id,\n variant\n}) => ({\n typeId: 'date_time',\n family: 'DATETIME',\n variant: variant,\n id\n}); // Mappings to convert DateTime's external to it's internal QuestionType representation\n\n/**\n * Maps the external QuestionType (GQL based) to the internal QuestionType\n *\n * _Types are mostly the same but the internal type is optimized to be easier to work with_\n */\n\n\nconst dateTimeRespondentSurveyMapping = externalQuestion => {\n const q = externalQuestion;\n const {\n layout,\n required,\n validation,\n fieldSets\n } = q;\n return { ...respondentSurveyMapping(q),\n ...dateTimeCrossCapabilityMapping(q),\n layout: { ...layout,\n spacing: fillSpacing(layout.spacing)\n },\n required: required !== null && required !== void 0 ? required : undefined,\n validation: isDateFormatValidation(validation) ? {\n type: validation.type,\n errorMessage: validation.errorMessage\n } : {\n type: 'DATE_INTL',\n errorMessage: ''\n },\n fieldSets\n };\n};\n/** List of all SMQuestions supported capabilities (others might get defined via custom providers/views) */\n\n\nconst CAPABILITIES = ['respondent-survey', 'respondent-quiz-results', 'aggregate-response-dashboard', 'aggregate-response-customizable-solutions'];\n\nconst invalidCombination = () => {\n throw new Error('Invalid question and capability combination or not yet implemented');\n};\n/**\n * Main mapping to resolve QuestionType and Capability to\n * a mapping (and in it the assertion)\n */\n\n\nconst questionTypeAndCapabilityMapping = {\n single_textbox: {\n 'respondent-survey': singleTextboxRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': singleTextboxAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': singleTextboxAggregateResponseCustomizableSolutionsMapping\n },\n comment_box: {\n 'respondent-survey': commentBoxRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': commentBoxAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': commentBoxAggregateResponseCustomizableSolutionsMapping\n },\n multiple_textbox: {\n 'respondent-survey': multipleTextboxRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': multipleTextboxAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n check_box: {\n 'respondent-survey': checkBoxRespondentSurveyMapping,\n 'respondent-quiz-results': checkBoxRespondentQuizResultsMapping,\n 'aggregate-response-dashboard': checkBoxAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': checkBoxAggregateResponseCustomizableSolutionsMapping\n },\n image_choice: {\n 'respondent-survey': imageChoiceRespondentSurveyMapping,\n 'respondent-quiz-results': imageChoiceRespondentQuizResultsMapping,\n 'aggregate-response-dashboard': imageChoiceAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': imageChoiceAggregateResponseCustomizableSolutionsMapping\n },\n multiple_choice: {\n 'respondent-survey': multipleChoiceRespondentSurveyMapping,\n 'respondent-quiz-results': multipleChoiceRespondentQuizResultsMapping,\n 'aggregate-response-dashboard': multipleChoiceAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': multipleChoiceAggregateResponseCustomizableSolutionsMapping\n },\n dropdown: {\n 'respondent-survey': dropdownRespondentSurveyMapping,\n 'respondent-quiz-results': dropdownRespondentQuizResultsMapping,\n 'aggregate-response-dashboard': dropdownAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': dropdownAggregateResponseCustomizableSolutionsMapping\n },\n slider: {\n 'respondent-survey': sliderRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': sliderAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n star_rating: {\n 'respondent-survey': starRatingRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': starRatingAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n ranking: {\n 'respondent-survey': rankingRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': rankingAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': rankingAggregateResponseCustomizableSolutionsMapping\n },\n matrix: {\n 'respondent-survey': matrixRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': matrixAggregateResponseDashboardMapping,\n 'aggregate-response-customizable-solutions': matrixAggregateResponseCustomizableSolutionsMapping\n },\n nps: {\n 'respondent-survey': npsRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': invalidCombination,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n date_time: {\n 'respondent-survey': dateTimeRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': invalidCombination,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n image_presentation: {\n 'respondent-survey': imagePresentationRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': invalidCombination,\n 'aggregate-response-customizable-solutions': invalidCombination\n },\n text_presentation: {\n 'respondent-survey': textPresentationRespondentSurveyMapping,\n 'respondent-quiz-results': invalidCombination,\n 'aggregate-response-dashboard': invalidCombination,\n 'aggregate-response-customizable-solutions': invalidCombination\n }\n};\n/** type guard to check if string is a capability */\n\nconst isCapability = u => CAPABILITIES.includes(u);\n/** Used to dynamically map the fields base on\n * * typeId\n * * question type\n * * capability\n * * combination of question type and capability\n */\n\n\nconst mapDynamic = ({\n typeId,\n capability,\n externalQuestion\n}) => {\n if (!isCapability(capability)) {\n // if this is a custom (unknown) capability just return the `externalQuestion` for now\n return externalQuestion;\n }\n\n return questionTypeAndCapabilityMapping[typeId][capability](externalQuestion);\n};\n\nconst mapInternalDynamicToExternal = (externalQuestion, // eslint-disable-next-line @typescript-eslint/no-unused-vars\nq, // eslint-disable-next-line @typescript-eslint/no-unused-vars\ncapability // keep for future use\n) => {\n // possibly mirror `mapDynamic`s setup if needed later\n // remove internal `typeId` and other possible attributes from exported type\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n typeId,\n ...cleanExternalQuestion\n } = externalQuestion;\n return { ...cleanExternalQuestion\n };\n};\n/**\n * Detects if a question belongs to this question type -\n * minimalistically as this function is supposed to be as optimized as possible as it will run multiple times\n */\n\n\nconst isCompatible$f = (q, typeId) => 'typeId' in q && q.typeId === typeId;\n\nconst baseGuards$b = baseQuestionGuards('single_textbox', 'OPEN_ENDED', 'SINGLE_LINE');\nconst isQuestionTypeSingleTextbox = typeGuard(baseGuards$b);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeSingleTextbox(q) {\n return typeAssertion(baseGuards$b)(q);\n}\n\nconst mapFromExternalQuestion$e = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'single_textbox',\n externalQuestion,\n capability\n });\n return questionType;\n};\n\nconst typeId$e = 'single_textbox';\n\nconst fromExternalQuestion$e = (source, capability) => mapFromExternalQuestion$e(source, capability);\n\nconst toExternalQuestion$e = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$e = q => isCompatible$f(q, typeId$e);\n\nconst isOfQuestionType$e = isQuestionTypeSingleTextbox;\n/**\n * Helper to run validators and prepare their result\n *\n * @returns {QuestionError[] | null} `null` means there is no error - `QuestionError[]` will never be an empty array\n */\n\nconst runValidators = (\n/** Map of validators */\nvalidators, question, value, touched, validateEmptyValue = false) => {\n const validationErrors = validators.reduce((errors, validator) => {\n const newError = validator(question, value, touched, validateEmptyValue);\n return newError !== null ? [...errors, newError] : errors;\n }, []);\n\n if (validationErrors.length === 0) {\n return null;\n }\n\n return validationErrors;\n};\n\nfunction createValidationError(type, detail = '', questionId = null, fieldId = undefined) {\n return {\n type,\n detail,\n questionId,\n fieldId\n };\n}\n/** returns `null` if valid and error object if not */\n\n\nconst validateTextLength = (\n/** GraphQL `TextLengthValidation` entity */\nvalidation,\n/** Id to identify the question */\nquestionId, value, touched = false,\n/** Validate empty values (default `false`) */\nvalidateEmptyValue = false) => {\n if (!value && !validateEmptyValue || !validation || !touched || validation.type !== 'TEXT_LENGTH') {\n return null;\n }\n\n const {\n minLength,\n maxLength,\n errorMessage\n } = validation;\n\n if (value.length > maxLength || value.length < minLength) {\n return createValidationError(validation.type, errorMessage, questionId);\n }\n\n return null;\n};\n/** Validates `valueToValidate` for text-length and returns an `QuestionError` or `null` (valid) */\n\n\nconst checkValueTextLength = (question, valueToValidate, touched, validateEmptyValue = false) => {\n var _a;\n\n if (question.validation === undefined || !valueToValidate && !validateEmptyValue || ((_a = question.validation) === null || _a === void 0 ? void 0 : _a.type) !== 'TEXT_LENGTH') {\n return null; // questionType does not support validation\n }\n\n const valueAsArray = Array.isArray(valueToValidate) ? valueToValidate : [valueToValidate];\n const errors = valueAsArray.map(value => {\n return validateTextLength(question.validation, question.id, value || '', touched, validateEmptyValue);\n }).filter(notNull);\n return errors.length > 0 ? errors[0] : null;\n};\n\nconst DATE_PATTERNS = {\n DATE_INTL: /^(0?[1-9]|[12][0-9]|3[0-1])\\/(0?[1-9]|1[0-2])\\/(\\d{4})$/,\n DATE_US: /^(0?[1-9]|1[0-2])\\/((0?[1-9]|[12][0-9]|3[0-1])\\/(\\d{4}))$/\n};\nconst DATE_BUILDERS = {\n DATE_INTL: ([dd, mm, yyyy]) => new Date(yyyy, mm - 1, dd),\n DATE_US: ([mm, dd, yyyy]) => new Date(yyyy, mm - 1, dd)\n};\n\nconst isDateValidationType = validationType => validationType === 'DATE_INTL' || validationType === 'DATE_US';\n/** formats strings to dates\n *\n * - `DD/MM/YYYY` for `DATE_INTL`\n * - `MM/DD/YYYY` for `DATE_US`\n */\n\n\nconst stringToDate = format => s => DATE_PATTERNS[format].test(s) ? DATE_BUILDERS[format](s.split('/').map(Number)) : null;\n/**\n * Converts minDate and maxDate format: ISO Date-Time => Date\n * only when `validation` is `DateValidation`\n */\n\n\nconst getMinAndMaxDate = validation => {\n if (!('minDate' in validation && 'maxDate' in validation)) {\n return [undefined, undefined]; // no min/max for DateFormatValidation\n }\n\n return [validation.minDate, validation.maxDate].map(s => new Date(s.substring(0, s.indexOf('T')).replace('-', '/')));\n};\n/** returns `null` if valid and error object if not */\n\n\nconst validateDate = (\n/** GraphQL `DateValidation` entity */\nvalidation,\n/** Id to identify the question */\nquestionId, value, touched = false,\n/** Validate empty values (default `false`) */\nvalidateEmptyValue = false) => {\n if (!value && !validateEmptyValue || !validation || !touched || !isDateValidationType(validation.type)) {\n return null;\n }\n\n const {\n errorMessage\n } = validation;\n const dateType = validation === null || validation === void 0 ? void 0 : validation.type;\n const stringToDateType = stringToDate(dateType); // value format: Short Date => Date\n\n const date = stringToDateType(value); // minDate and maxDate format: ISO Date-Time => Date\n\n const [dmin, dmax] = getMinAndMaxDate(validation);\n\n if (!date || dmax && date.getTime() > dmax.getTime() || dmin && date.getTime() < dmin.getTime()) {\n return createValidationError(validation.type, errorMessage, questionId);\n }\n\n return null;\n};\n/** Validates `valueToValidate` as date and returns an `QuestionError` or `null` (valid) */\n\n\nconst checkValueDateFormat = (question, valueToValidate, touched, validateEmptyValue = false) => {\n var _a;\n\n if (!valueToValidate && !validateEmptyValue || !isDateValidationType((_a = question === null || question === void 0 ? void 0 : question.validation) === null || _a === void 0 ? void 0 : _a.type)) {\n return null; // questionType does not support validation\n }\n\n const valueAsArray = Array.isArray(valueToValidate) ? valueToValidate : [valueToValidate];\n const errors = valueAsArray.map(value => {\n return validateDate(question.validation, question.id, value || '', touched, validateEmptyValue);\n }).filter(notNull);\n return errors.length > 0 ? errors[0] : null;\n};\n\nconst isNumericalValidationType = validationType => validationType === 'INTEGER' || validationType === 'DECIMAL';\n\nconst isSumValidationType = validationType => validationType === 'SUM';\n/** Integers can only contain numbers (`0-9`) */\n\n\nconst isValidInteger = (maybeInteger = '') => maybeInteger.match(/^[0-9]+$/) !== null;\n\nconst isValidDecimal = (value = '') => value.match(/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/) !== null;\n/** returns `null` if valid and error object if not */\n\n\nconst validateNumber = (\n/** GraphQL `DateValidation` entity */\nvalidation,\n/** Id to identify the question */\nquestionId, value, touched = false,\n/** Validate empty values (default `false`) */\nvalidateEmptyValue = false) => {\n if (!value && !validateEmptyValue || !validation || !touched || !isNumericalValidationType(validation.type)) {\n return null;\n }\n\n const {\n minValue,\n maxValue,\n errorMessage\n } = validation;\n const parsedNumber = parseFloat(value);\n\n if (Number.isNaN(parsedNumber) || validation.type === 'INTEGER' && !isValidInteger(value) || validation.type === 'DECIMAL' && !isValidDecimal(value) || Boolean(maxValue && parsedNumber > maxValue) || Boolean(minValue && parsedNumber < minValue)) {\n return createValidationError(validation.type, errorMessage, questionId);\n }\n\n return null;\n};\n/** returns `null` if valid and error object if not */\n\n\nconst validateFixedSum = (\n/** GraphQL `SumValidation` entity */\nvalidation,\n/** Id to identify the question */\nquestionId, values, touched = false,\n/** Validate empty values (default `false`) */\nvalidateEmptyValue = false) => {\n if (!values && !validateEmptyValue || !validation || !touched || !isSumValidationType(validation.type)) {\n return null;\n }\n\n const {\n sum,\n errorMessage\n } = validation;\n const valueSum = values.reduce((reduceSum, value) => {\n const parsedNumber = parseFloat(value);\n return reduceSum + parsedNumber;\n }, 0);\n\n if (valueSum && valueSum !== sum || Number.isNaN(valueSum) || !isValidInteger(String(valueSum))) {\n return createValidationError(validation.type, errorMessage, questionId);\n }\n\n return null;\n};\n/** Validates `valueToValidate` as number and returns an `QuestionError` or `null` (valid) */\n\n\nconst checkValueNumericalFormat = (question, valueToValidate = '', touched = false, validateEmptyValue = false) => {\n var _a;\n\n if (!valueToValidate && !validateEmptyValue || !isNumericalValidationType((_a = question === null || question === void 0 ? void 0 : question.validation) === null || _a === void 0 ? void 0 : _a.type)) {\n return null; // questionType does not support validation\n }\n\n const valueAsArray = Array.isArray(valueToValidate) ? valueToValidate : [valueToValidate];\n const errors = valueAsArray.map(value => {\n return validateNumber(question.validation, question.id, value || '', touched, validateEmptyValue);\n }).filter(notNull);\n return errors.length > 0 ? errors[0] : null;\n};\n\nconst checkMultipleValueNumericalSum = (question, valueToValidate = [], touched = false, validateEmptyValue = false) => {\n var _a;\n\n if (!valueToValidate && !validateEmptyValue || !question.sumValidation || !isSumValidationType((_a = question === null || question === void 0 ? void 0 : question.sumValidation) === null || _a === void 0 ? void 0 : _a.type)) {\n return null; // questionType does not support validation\n }\n\n return validateFixedSum(question.sumValidation, question.id, valueToValidate, touched, validateEmptyValue);\n};\n\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar isEmailExports = {};\nvar isEmail$1 = {\n get exports() {\n return isEmailExports;\n },\n\n set exports(v) {\n isEmailExports = v;\n }\n\n};\nvar assertStringExports = {};\nvar assertString = {\n get exports() {\n return assertStringExports;\n },\n\n set exports(v) {\n assertStringExports = v;\n }\n\n};\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = assertString;\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType = _typeof(input);\n\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(assertString, assertStringExports);\n\nvar mergeExports = {};\nvar merge = {\n get exports() {\n return mergeExports;\n },\n\n set exports(v) {\n mergeExports = v;\n }\n\n};\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = merge;\n\n function merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(merge, mergeExports);\n\nvar isByteLengthExports = {};\nvar isByteLength = {\n get exports() {\n return isByteLengthExports;\n },\n\n set exports(v) {\n isByteLengthExports = v;\n }\n\n};\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = isByteLength;\n\n var _assertString = _interopRequireDefault(assertStringExports);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n /* eslint-disable prefer-rest-params */\n\n\n function isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(isByteLength, isByteLengthExports);\n\nvar isFQDNExports = {};\nvar isFQDN = {\n get exports() {\n return isFQDNExports;\n },\n\n set exports(v) {\n isFQDNExports = v;\n }\n\n};\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = isFQDN;\n\n var _assertString = _interopRequireDefault(assertStringExports);\n\n var _merge = _interopRequireDefault(mergeExports);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false\n };\n\n function isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n\n if (!/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces && special characers\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20\\u00A9\\uFFFD]/.test(tld)) {\n return false;\n }\n } // reject numeric TLDs\n\n\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n\n return parts.every(function (part) {\n if (part.length > 63) {\n return false;\n }\n\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n } // disallow parts starting or ending with hyphen\n\n\n if (/^-|-$/.test(part)) {\n return false;\n }\n\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n\n return true;\n });\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(isFQDN, isFQDNExports);\n\nvar isIPExports = {};\nvar isIP = {\n get exports() {\n return isIPExports;\n },\n\n set exports(v) {\n isIPExports = v;\n }\n\n};\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = isIP;\n\n var _assertString = _interopRequireDefault(assertStringExports);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n /**\n 11.3. Examples\n \t The following addresses\n \t fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n \t would be represented as follows:\n \t fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n \t (Here we assume a natural translation from a zone index to the\n part, where the Nth zone of any scope is translated into\n \"N\".)\n \t If we use interface names as , those addresses could also be\n represented as follows:\n \t fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n \t where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\n\n\n var ipv4Maybe = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;\n var ipv6Block = /^[0-9A-F]{1,4}$/i;\n\n function isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var addressAndZone = [str]; // ipv6 addresses could have scoped architecture\n // according to https://tools.ietf.org/html/rfc4007#section-11\n\n if (str.includes('%')) {\n addressAndZone = str.split('%');\n\n if (addressAndZone.length !== 2) {\n // it must be just two parts\n return false;\n }\n\n if (!addressAndZone[0].includes(':')) {\n // the first part must be the address\n return false;\n }\n\n if (addressAndZone[1] === '') {\n // the second part must not be empty\n return false;\n }\n }\n\n var blocks = addressAndZone[0].split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ;else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n\n return blocks.length === expectedNumberOfBlocks;\n }\n\n return false;\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(isIP, isIPExports);\n\n(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = isEmail;\n\n var _assertString = _interopRequireDefault(assertStringExports);\n\n var _merge = _interopRequireDefault(mergeExports);\n\n var _isByteLength = _interopRequireDefault(isByteLengthExports);\n\n var _isFQDN = _interopRequireDefault(isFQDNExports);\n\n var _isIP = _interopRequireDefault(isIPExports);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n var default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false\n };\n /* eslint-disable max-len */\n\n /* eslint-disable no-control-regex */\n\n var splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)<(.+)>$/i;\n var emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\n var gmailUserPart = /^[a-z\\d]+$/;\n var quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\n var emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\n var quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n var defaultMaxEmailLength = 254;\n /* eslint-enable max-len */\n\n /* eslint-enable no-control-regex */\n\n /**\n * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2\n * @param {String} display_name\n */\n\n function validateDisplayName(display_name) {\n var trim_quotes = display_name.match(/^\"(.+)\"$/i);\n var display_name_without_quotes = trim_quotes ? trim_quotes[1] : display_name; // display name with only spaces is not valid\n\n if (!display_name_without_quotes.trim()) {\n return false;\n } // check whether display name contains illegal character\n\n\n var contains_illegal = /[\\.\";<>]/.test(display_name_without_quotes);\n\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (!trim_quotes) {\n return false;\n } // the quotes in display name must start with character symbol \\\n\n\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n\n return true;\n }\n\n function isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n\n if (display_email) {\n var display_name;\n\n var _display_email = _slicedToArray(display_email, 3);\n\n display_name = _display_email[1];\n str = _display_email[2]; // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname \n // the display name is `myname` instead of `myname `, so need to trim the last space\n\n if (display_name.endsWith(' ')) {\n display_name = display_name.substr(0, display_name.length - 1);\n }\n\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i2 = 0; _i2 < user_parts.length; _i2++) {\n if (!pattern.test(user_parts[_i2])) {\n return false;\n }\n }\n\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n\n return true;\n }\n\n module.exports = exports.default;\n module.exports.default = exports.default;\n})(isEmail$1, isEmailExports);\n\nvar isEmail = /*@__PURE__*/getDefaultExportFromCjs(isEmailExports);\n/** returns `null` if valid and error object if not */\n\nconst validateEmail = (validation,\n/** Id to identify the question */\nquestionId, value, touched = false,\n/** Validate empty values (default `false`) */\nvalidateEmptyValue = false) => {\n if (!value && !validateEmptyValue || !validation || !touched || (validation === null || validation === void 0 ? void 0 : validation.type) !== 'EMAIL') {\n return null;\n }\n\n const {\n errorMessage\n } = validation;\n\n if (!isEmail(value)) {\n return createValidationError(validation.type, errorMessage, questionId);\n }\n\n return null;\n};\n/** Validates `valueToValidate` as email and returns an `QuestionError` or `null` (valid) */\n\n\nconst checkValueEmailFormat = (question, valueToValidate = '', touched = false, validateEmptyValue = false) => {\n var _a;\n\n if (question.validation === undefined || !valueToValidate && !validateEmptyValue || ((_a = question.validation) === null || _a === void 0 ? void 0 : _a.type) !== 'EMAIL') {\n return null; // questionType does not support validation\n }\n\n const valueAsArray = Array.isArray(valueToValidate) ? valueToValidate : [valueToValidate];\n const errors = valueAsArray.map(value => {\n return validateEmail(question.validation, question.id, value || '', touched, validateEmptyValue);\n }).filter(notNull);\n return errors.length > 0 ? errors[0] : null;\n};\n\nconst isResponseValueArray = value => {\n return Array.isArray(value) && !value.some(v => typeof v !== 'object' || !('id' in v) || !('value' in v)) // no invalid element in array\n ;\n};\n/** If there is a selected other type `ANSWER` input make sure it is not empty. */\n\n\nconst hasEmptyOtherAnswer = value => {\n var _a;\n\n return (_a = value.some(v => v.type === 'ANSWER' && v.value === '')) !== null && _a !== void 0 ? _a : false;\n};\n/** Check for type `ALL` */\n\n\nconst hasTypeAllValidationError = (value, choiceCount) => {\n // handle `ALL` for choice answers with more than 1 choice\n return typeof choiceCount !== 'number' || value.length !== choiceCount;\n};\n/** Special case for ImageChoice that does not require all options to be selected for `ALL`, but only at least 1 */\n\n\nconst hasTypeAllValidationErrorWithoutRangeSelection = value => {\n return value.length < 1;\n};\n/** Check for type `AT_LEAST` */\n\n\nconst hasTypeAtLeastValidationError = (value, {\n min\n}) => {\n if (typeof min !== 'number') {\n return true; // invalid value or min value\n }\n\n return value.length < min;\n};\n/** Check for type `AT_MOST` */\n\n\nconst hasTypeAtMostValidationError = (value, {\n max\n}) => {\n if (typeof max !== 'number') {\n return true; // invalid value or max value\n }\n\n return value.length < 1 || value.length > max;\n};\n/** Check for type `EXACTLY` */\n\n\nconst hasTypeExactlyValidationError = (value, {\n min,\n max\n}) => {\n if (typeof min !== 'number' || typeof max !== 'number' || min !== max) {\n return true; // invalid value or or min/max value\n }\n\n return value.length !== min;\n};\n/** Check for type `RANGE` */\n\n\nconst hasTypeRangeValidationError = (value, {\n min,\n max\n}) => {\n if (typeof min !== 'number' || typeof max !== 'number') {\n return true; // invalid value or min/max value\n }\n\n return value.length < min || value.length > max;\n};\n/** returns `null` if valid and error object if not */\n\n\nconst validateRequired = (required,\n/** Id to identify the question */\nquestionId, value, touched,\n/** Number of answers - only needed for type `ALL` validation of choice answers */\nchoiceCount = 1,\n/** Error message to return when the answer checked but left blank */\notherRequiredErrorText = '',\n/** for ImageChoice or other questions where `ALL` does not require all choices to be selected */\nnoRangeValidation = false) => {\n if (!touched || !required) {\n return null;\n }\n\n if (!isResponseValueArray(value)) {\n // invalid value format\n return createValidationError('REQUIRED', required.errorMessage, questionId);\n }\n\n let hasError = false;\n\n switch (required.type) {\n case 'ALL':\n if (noRangeValidation) {\n hasError = hasTypeAllValidationErrorWithoutRangeSelection(value);\n } else {\n hasError = hasTypeAllValidationError(value, choiceCount);\n }\n\n break;\n\n case 'AT_LEAST':\n hasError = hasTypeAtLeastValidationError(value, required);\n break;\n\n case 'AT_MOST':\n hasError = hasTypeAtMostValidationError(value, required);\n break;\n\n case 'EXACTLY':\n hasError = hasTypeExactlyValidationError(value, required);\n break;\n\n case 'RANGE':\n hasError = hasTypeRangeValidationError(value, required);\n break;\n }\n\n if (hasError) {\n return createValidationError('REQUIRED', required.errorMessage, questionId);\n }\n\n if (hasEmptyOtherAnswer(value)) {\n // empty other text field\n return createValidationError('REQUIRED', otherRequiredErrorText, questionId);\n }\n\n return null;\n};\n/** Validates `valueToValidate` for text-length and returns an `QuestionError` or `null` (valid) */\n\n\nconst checkValueRequired = (question, valueToValidate, touched) => {\n var _a, _b, _c, _d, _e;\n\n if (!question.required) {\n return null; // questionType does not support validation or question is not touched\n }\n /** Number of answers - only needed for type `ALL` validation of choice answers */\n\n\n let total;\n const answerCount = (_b = (_a = question.answers) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : (_c = question.answersImage) === null || _c === void 0 ? void 0 : _c.length;\n\n if (question.required.type === 'ALL' && answerCount) {\n total = answerCount;\n\n if (total && ((_d = question.answerOther) === null || _d === void 0 ? void 0 : _d.type) === 'ANSWER') {\n // answer other choice counts too (comment does not)\n total += 1;\n } // no need to make adjustments for None of the Above (NOTA) as\n // `ALL` is not available when NOTA is selected\n\n }\n /** questions where `required.type === ALL` requires all choices to be selected */\n\n\n const allChoicesRequired = ['check_box'].includes(question.typeId) || question.variant === 'MANY_ANSWERS_IMAGE';\n return validateRequired(question.required, question.id, valueToValidate, touched, total, (_e = question.answerOther) === null || _e === void 0 ? void 0 : _e.requiredErrorText, !allChoicesRequired);\n};\n/** Helper for question-types that only validate require */\n\n\nconst standAloneRequiredValidator = (question, valueToValidate, touched) => {\n const valueError = checkValueRequired(question, valueToValidate, touched);\n return valueError === null ? null : [valueError];\n};\n/** Array of all validators needed to validate the content of openEnded\n * text inputs (SingleTextbox, `other`, `answerOther`) */\n\n\nconst openEndedValidators = [checkValueTextLength, checkValueNumericalFormat, checkValueDateFormat, checkValueEmailFormat];\n/** Array of all validators needed to validate the\n * contents of multiple text inputs (MultipleTextbox) */\n\nconst openEndedMultipleValueValidators = [checkValueNumericalFormat, checkMultipleValueNumericalSum, checkValueTextLength, checkValueDateFormat, checkValueEmailFormat];\n\nconst checkSelectedAnswerOtherRequired = (question, valueToValidate, _touched) => {\n var _a;\n\n return !valueToValidate.length ? createValidationError('REQUIRED', (_a = question.answerOther) === null || _a === void 0 ? void 0 : _a.requiredErrorText, question.id) : null;\n};\n/**\n *\n * Generic validation for components with an single string value (OpenEnded Questions types).\n *\n * E.g. SingleTextbox or CommentBox\n *\n * @returns {QuestionError[] | null} `null` means there is no error - `QuestionError[]` will never be an empty array\n */\n\n\nconst validateRespondentSurveyOpenEndedQuestion = (q, answer, touched) => {\n var _a, _b, _c;\n\n const valueErrors = [checkValueRequired(q, answer, touched)];\n const otherErrors = (_b = runValidators(openEndedValidators, q, (_a = answer[0]) === null || _a === void 0 ? void 0 : _a.value, touched)) !== null && _b !== void 0 ? _b : [];\n return (_c = [...valueErrors, ...otherErrors].filter(notNull)) !== null && _c !== void 0 ? _c : null;\n};\n/**\n *\n * Generic validation for components with multiple response values\n *\n * E.g. MultipleTextbox\n *\n * @returns {QuestionError[] | null} `null` means there is no error - `QuestionError[]` will never be an empty array\n */\n\n\nconst validateRespondentSurveyMultipleOpenEndedQuestion = (q, answers, touched) => {\n var _a, _b;\n\n const valueErrors = [checkValueRequired(q, answers, touched)];\n const answerValues = answers.map(answer => answer.value);\n const otherErrors = (_a = runValidators(openEndedMultipleValueValidators, q, answerValues, touched)) !== null && _a !== void 0 ? _a : [];\n return (_b = [...valueErrors, ...otherErrors].filter(notNull)) !== null && _b !== void 0 ? _b : null;\n};\n/**\n * Generic validation for components with an single or multiples selections and an (optional) _other_ (`COMMENT` or `ANSWER`) or _None of the Above_ (`NOTA`) option.\n *\n * E.g. Checkboxes, Dropdown or MultipleChoice\n *\n * @returns {QuestionError[] | null} `null` means there is no error - `QuestionError[]` will never be an empty array\n */\n\n\nconst validateRespondentSurveySelectionAndOtherValue = (q, answer, touched) => {\n /** Regular answers, other type 'ANSWER' and 'None of the above' */\n const selectedChoices = answer.filter(a => !a.type || ['NOTA', 'ANSWER'].includes(a.type));\n /** Any type of 'other' answer */\n\n const otherValue = answer.find(a => a.type && a.type !== 'NOTA');\n const valueErrors = [checkValueRequired(q, selectedChoices, touched)].filter(notNull); // required check for question, if there is no answer\n\n const hasRequiredAnswerError = valueErrors.length > 0;\n\n if (!q.answerOther && !q.answerComment) {\n // no other option so we can return here\n return !hasRequiredAnswerError ? null : valueErrors;\n }\n /**\n * Selected Other-Answer requires a non-empty value (regardless of validation or require)\n */\n\n\n const selectedAnswerOtherRequiredError = [(otherValue === null || otherValue === void 0 ? void 0 : otherValue.type) === 'ANSWER' ? checkSelectedAnswerOtherRequired(q, otherValue === null || otherValue === void 0 ? void 0 : otherValue.value) : null];\n const returnValueErrors = [...valueErrors, ...selectedAnswerOtherRequiredError, ...(runValidators(openEndedValidators, q, otherValue === null || otherValue === void 0 ? void 0 : otherValue.value, touched, (otherValue === null || otherValue === void 0 ? void 0 : otherValue.type) === 'ANSWER') || [])].filter(notNull);\n return returnValueErrors.length > 0 ? returnValueErrors : null;\n};\n\nconst singleTextboxQuestionDefinition = {\n typeId: typeId$e,\n fromExternalQuestion: fromExternalQuestion$e,\n toExternalQuestion: toExternalQuestion$e,\n isOfQuestionType: isOfQuestionType$e,\n isCompatible: isCompatible$e\n};\nconst baseGuards$a = baseQuestionGuards('multiple_textbox', 'OPEN_ENDED', 'MANY_FIELDS');\nconst isQuestionTypeMultipleTextbox = typeGuard(baseGuards$a);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeMultipleTextbox(q) {\n return typeAssertion(baseGuards$a)(q);\n}\n\nconst mapFromExternalQuestion$d = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'multiple_textbox',\n externalQuestion,\n capability\n });\n assertQuestionTypeMultipleTextbox(questionType);\n return questionType;\n};\n\nconst typeId$d = 'multiple_textbox';\n\nconst fromExternalQuestion$d = (source, capability) => mapFromExternalQuestion$d(source, capability);\n\nconst toExternalQuestion$d = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$d = q => isCompatible$f(q, typeId$d);\n\nconst isOfQuestionType$d = isQuestionTypeMultipleTextbox;\nconst multipleTextboxQuestionDefinition = {\n typeId: typeId$d,\n fromExternalQuestion: fromExternalQuestion$d,\n toExternalQuestion: toExternalQuestion$d,\n isOfQuestionType: isOfQuestionType$d,\n isCompatible: isCompatible$d\n}; /// Type Guards\n\nconst baseGuards$9 = baseQuestionGuards('comment_box', 'OPEN_ENDED', 'ESSAY');\nconst isQuestionTypeCommentBox = typeGuard(baseGuards$9);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeCommentBox(q) {\n return typeAssertion(baseGuards$9)(q);\n}\n\nconst mapFromExternalQuestion$c = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'comment_box',\n externalQuestion,\n capability\n });\n assertQuestionTypeCommentBox(questionType);\n return questionType;\n};\n\nconst typeId$c = 'comment_box';\n\nconst fromExternalQuestion$c = (source, capability) => mapFromExternalQuestion$c(source, capability);\n\nconst toExternalQuestion$c = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$c = q => isCompatible$f(q, typeId$c);\n\nconst isOfQuestionType$c = isQuestionTypeCommentBox;\nconst commentBoxQuestionDefinition = {\n typeId: typeId$c,\n fromExternalQuestion: fromExternalQuestion$c,\n toExternalQuestion: toExternalQuestion$c,\n isCompatible: isCompatible$c,\n isOfQuestionType: isOfQuestionType$c\n}; /// Type Guards\n\nconst baseGuards$8 = baseQuestionGuards('multiple_choice', 'MULTIPLE_CHOICE', 'SINGLE_ANSWER_RADIO');\nconst isQuestionValidationMultipleChoice = isFieldValidation;\nconst isQuestionTypeMultipleChoice = typeGuard(baseGuards$8);\n\nconst mapFromExternalQuestion$b = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'multiple_choice',\n externalQuestion,\n capability\n });\n return questionType;\n};\n\nconst typeId$b = 'multiple_choice';\n\nconst fromExternalQuestion$b = (source, capability) => mapFromExternalQuestion$b(source, capability);\n\nconst toExternalQuestion$b = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$b = q => isCompatible$f(q, typeId$b);\n\nconst isOfQuestionType$b = isQuestionTypeMultipleChoice;\nconst multipleChoiceQuestionDefinition = {\n typeId: typeId$b,\n fromExternalQuestion: fromExternalQuestion$b,\n toExternalQuestion: toExternalQuestion$b,\n isCompatible: isCompatible$b,\n isOfQuestionType: isOfQuestionType$b\n}; // TypeGuards and Assertions\n\nconst baseGuards$7 = baseQuestionGuards('check_box', 'MULTIPLE_CHOICE', 'MANY_ANSWERS_CHECKBOX');\nconst isQuestionTypeCheckBox = typeGuard(baseGuards$7);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeCheckBox(externalQuestion) {\n return typeAssertion(baseGuards$7)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$a = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'check_box',\n externalQuestion,\n capability\n });\n assertQuestionTypeCheckBox(questionType);\n return questionType;\n};\n\nconst typeId$a = 'check_box';\n\nconst fromExternalQuestion$a = (source, capability) => mapFromExternalQuestion$a(source, capability);\n\nconst toExternalQuestion$a = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$a = q => isCompatible$f(q, typeId$a);\n\nconst isOfQuestionType$a = isQuestionTypeCheckBox;\nconst checkBoxQuestionDefinition = {\n typeId: typeId$a,\n fromExternalQuestion: fromExternalQuestion$a,\n toExternalQuestion: toExternalQuestion$a,\n isCompatible: isCompatible$a,\n isOfQuestionType: isOfQuestionType$a\n};\nconst baseGuards$6 = baseQuestionGuards('dropdown', 'MULTIPLE_CHOICE', 'SINGLE_ANSWER_MENU');\nconst isQuestionTypeDropdown = typeGuard(baseGuards$6);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeDropdown(externalQuestion) {\n return typeAssertion(baseGuards$6)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$9 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'dropdown',\n externalQuestion,\n capability\n });\n assertQuestionTypeDropdown(questionType);\n return questionType;\n};\n\nconst typeId$9 = 'dropdown';\n\nconst fromExternalQuestion$9 = (source, capability) => mapFromExternalQuestion$9(source, capability);\n\nconst toExternalQuestion$9 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$9 = q => isCompatible$f(q, typeId$9);\n\nconst isOfQuestionType$9 = isQuestionTypeDropdown;\nconst dropdownQuestionDefinition = {\n typeId: typeId$9,\n fromExternalQuestion: fromExternalQuestion$9,\n toExternalQuestion: toExternalQuestion$9,\n isCompatible: isCompatible$9,\n isOfQuestionType: isOfQuestionType$9\n};\nconst baseGuards$5 = baseQuestionGuards('image_choice', 'MULTIPLE_CHOICE', 'SINGLE_ANSWER_IMAGE');\nconst isQuestionTypeImageChoice = typeGuard({ ...baseGuards$5,\n\n /* To reduce code duplication, we assume the discrepancies between\n * \"single answer\" and \"many answers\" question types are limited to \"typeId\" and \"variant\".\n */\n typeId: isFixed('image_choice'),\n variant: isEither([isFixed('SINGLE_ANSWER_IMAGE'), isFixed('MANY_ANSWERS_IMAGE')])\n});\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeImageChoice(q) {\n return typeAssertion(isQuestionTypeImageChoice)(q);\n}\n\nconst mapFromExternalQuestion$8 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'image_choice',\n externalQuestion,\n capability\n });\n assertQuestionTypeImageChoice(questionType);\n return questionType;\n};\n\nconst typeId$8 = 'image_choice';\n\nconst fromExternalQuestion$8 = (source, capability) => mapFromExternalQuestion$8(source, capability);\n\nconst toExternalQuestion$8 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$8 = q => isCompatible$f(q, typeId$8);\n\nconst isOfQuestionType$8 = isQuestionTypeImageChoice;\nconst imageChoiceQuestionDefinition = {\n typeId: typeId$8,\n fromExternalQuestion: fromExternalQuestion$8,\n toExternalQuestion: toExternalQuestion$8,\n isCompatible: isCompatible$8,\n isOfQuestionType: isOfQuestionType$8\n};\nconst baseGuards$4 = baseQuestionGuards('slider', 'SLIDER', 'SINGLE_SLIDER');\nconst isQuestionTypeSlider = typeGuard(baseGuards$4);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeSlider(externalQuestion) {\n return typeAssertion(baseGuards$4)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$7 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'slider',\n externalQuestion,\n capability\n });\n assertQuestionTypeSlider(questionType);\n return questionType;\n};\n\nconst typeId$7 = 'slider';\n\nconst isCompatible$7 = q => isCompatible$f(q, typeId$7);\n\nconst isOfQuestionType$7 = isQuestionTypeSlider;\n\nconst fromExternalQuestion$7 = (source, capability) => mapFromExternalQuestion$7(source, capability);\n\nconst toExternalQuestion$7 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst sliderQuestionDefinition = {\n typeId: typeId$7,\n fromExternalQuestion: fromExternalQuestion$7,\n toExternalQuestion: toExternalQuestion$7,\n isCompatible: isCompatible$7,\n isOfQuestionType: isOfQuestionType$7\n};\nconst baseStarRatingMatrixGuards = baseQuestionGuards('star_rating', 'MATRIX', 'RATING');\nconst baseStarRatingScaleGuards = baseQuestionGuards('star_rating', 'RATING_SCALE', 'SINGLE_ANSWER_SYMBOL');\nconst isQuestionTypeStarRatingMatrix = typeGuard(baseStarRatingMatrixGuards);\nconst isQuestionTypeStarRatingScale = typeGuard(baseStarRatingScaleGuards);\nconst isQuestionTypeStarRating = isEither([isQuestionTypeStarRatingMatrix, isQuestionTypeStarRatingScale]);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeStarRating(externalQuestion) {\n return typeAssertion(isQuestionTypeStarRating)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$6 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'star_rating',\n externalQuestion,\n capability\n });\n assertQuestionTypeStarRating(questionType);\n return questionType;\n};\n\nconst typeId$6 = 'star_rating';\n\nconst isCompatible$6 = q => isCompatible$f(q, typeId$6);\n\nconst isOfQuestionType$6 = isQuestionTypeStarRating;\n\nconst fromExternalQuestion$6 = (source, capability) => mapFromExternalQuestion$6(source, capability);\n\nconst toExternalQuestion$6 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst starRatingQuestionDefinition = {\n typeId: typeId$6,\n fromExternalQuestion: fromExternalQuestion$6,\n toExternalQuestion: toExternalQuestion$6,\n isCompatible: isCompatible$6,\n isOfQuestionType: isOfQuestionType$6\n};\nconst baseSingleAnswerGuards = baseQuestionGuards('matrix', 'MATRIX', 'SINGLE_ANSWER_RADIO');\nconst baseManyAnswersGuards = baseQuestionGuards('matrix', 'MATRIX', 'MANY_ANSWERS_CHECKBOX');\nconst baseRatingScaleGuards = baseQuestionGuards('matrix', 'RATING_SCALE', 'SINGLE_ANSWER_RADIO');\nconst isQuestionTypeMatrixSingleAnswer = typeGuard(baseSingleAnswerGuards);\nconst isQuestionTypeMatrixManyAnswers = typeGuard(baseManyAnswersGuards);\nconst isQuestionTypeMatrixRatingScale = typeGuard(baseRatingScaleGuards);\nconst isQuestionTypeMatrix = isEither([isQuestionTypeMatrixSingleAnswer, isQuestionTypeMatrixManyAnswers, isQuestionTypeMatrixRatingScale]);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeMatrix(externalQuestion) {\n // TODO: Refactor for better error messages\n if (!isQuestionTypeMatrix(externalQuestion)) {\n throw new Error('Question data does not match any supported question type.');\n }\n}\n\nconst mapFromExternalQuestion$5 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'matrix',\n externalQuestion,\n capability\n });\n assertQuestionTypeMatrix(questionType);\n return questionType;\n};\n\nconst typeId$5 = 'matrix';\n\nconst isCompatible$5 = q => isCompatible$f(q, typeId$5);\n\nconst isOfQuestionType$5 = isQuestionTypeMatrix;\n\nconst fromExternalQuestion$5 = (source, capability) => mapFromExternalQuestion$5(source, capability);\n\nconst toExternalQuestion$5 = (eq, q, capability) => mapInternalDynamicToExternal(eq); // Refine this implementation once we implement this question-type\n\n\nconst matrixRespondentSurveyValidation = (q, answer, touched) => {\n // Required validation for Matrix only work per-row,\n // there is no difference wether there is one or more columns selected,\n // so we can extract the first value (i.e. the columnId) and\n // use`validateRespondentSurveySelectionAndOtherValue` as other validations\n const flattenedValues = answer.map(({\n value,\n ...rest\n }) => {\n var _a;\n\n return { ...rest,\n value: typeof value === 'string' ? value : (_a = value.find(v => !!v.value)) === null || _a === void 0 ? void 0 : _a.value\n };\n }).filter(a => !!a.value);\n return validateRespondentSurveySelectionAndOtherValue(q, flattenedValues, touched);\n};\n\nconst matrixQuestionDefinition = {\n typeId: typeId$5,\n fromExternalQuestion: fromExternalQuestion$5,\n toExternalQuestion: toExternalQuestion$5,\n isOfQuestionType: isOfQuestionType$5,\n isCompatible: isCompatible$5\n};\nconst baseGuards$3 = baseQuestionGuards('ranking', 'RANKING', 'SINGLE_ANSWER_RADIO');\nconst isQuestionTypeRanking = typeGuard(baseGuards$3);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeRanking(externalQuestion) {\n return typeAssertion(baseGuards$3)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$4 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'ranking',\n externalQuestion,\n capability\n });\n assertQuestionTypeRanking(questionType);\n return questionType;\n};\n\nconst typeId$4 = 'ranking';\n\nconst isCompatible$4 = q => isCompatible$f(q, typeId$4);\n\nconst isOfQuestionType$4 = isQuestionTypeRanking;\n\nconst fromExternalQuestion$4 = (source, capability) => mapFromExternalQuestion$4(source, capability);\n\nconst toExternalQuestion$4 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst rankingQuestionDefinition = {\n typeId: typeId$4,\n fromExternalQuestion: fromExternalQuestion$4,\n toExternalQuestion: toExternalQuestion$4,\n isCompatible: isCompatible$4,\n isOfQuestionType: isOfQuestionType$4\n}; /// Type Guards\n\nconst baseGuards$2 = baseQuestionGuards('nps', 'RATING_SCALE', 'NPS');\nconst isQuestionValidationNps = isFieldValidation;\nconst isQuestionTypeNps = typeGuard(baseGuards$2);\n\nconst mapFromExternalQuestion$3 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'nps',\n externalQuestion,\n capability\n });\n return questionType;\n};\n\nconst typeId$3 = 'nps';\n\nconst fromExternalQuestion$3 = (source, capability) => mapFromExternalQuestion$3(source, capability);\n\nconst toExternalQuestion$3 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$3 = q => isCompatible$f(q, typeId$3);\n\nconst isOfQuestionType$3 = isQuestionTypeNps;\nconst npsQuestionDefinition = {\n typeId: typeId$3,\n fromExternalQuestion: fromExternalQuestion$3,\n toExternalQuestion: toExternalQuestion$3,\n isCompatible: isCompatible$3,\n isOfQuestionType: isOfQuestionType$3\n}; /// Type Guards\n\nconst baseDateTimeGuards = baseQuestionGuards('date_time', 'DATETIME', 'DATETIME');\nconst baseDateGuards = baseQuestionGuards('date_time', 'DATETIME', 'DATE');\nconst baseTimeGuards = baseQuestionGuards('date_time', 'DATETIME', 'TIME');\nconst isQuestionTypeDateTimeDateAndTime = typeGuard(baseDateTimeGuards);\nconst isQuestionTypeDateTimeDate = typeGuard(baseDateGuards);\nconst isQuestionTypeDateTimeTime = typeGuard(baseTimeGuards);\nconst isQuestionTypeDateTime = isEither([isQuestionTypeDateTimeDateAndTime, isQuestionTypeDateTimeDate, isQuestionTypeDateTimeTime]);\n\nconst mapFromExternalQuestion$2 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'date_time',\n externalQuestion,\n capability\n });\n return questionType;\n};\n\nconst typeId$2 = 'date_time';\n\nconst fromExternalQuestion$2 = (source, capability) => mapFromExternalQuestion$2(source, capability);\n\nconst toExternalQuestion$2 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$2 = q => isCompatible$f(q, typeId$2);\n\nconst isOfQuestionType$2 = isQuestionTypeDateTime;\n/**\n * Default error message token that need to be overwritten from consumers in\n * questions-ui to allow l10n.\n *\n * This is because other QuestionTypes' error messages are coming from the GraphAPI,\n * but the ones below are client-side only.\n */\n\nconst errorMessageTokens = {\n /** Incorrect or missing `date` input for `DATE_INTL`. To be replaced with localized: _Please provide date in dd/mm/yyyy format._ */\n dateIntl: 'ERROR_PROVIDE_DATE_INTL_FORMAT',\n\n /** Incorrect or missing `date` input for `DATE_US`. To be replaced with localized: _Please provide date in mm/dd/yyyy format._ */\n dateUs: 'ERROR_PROVIDE_DATE_US_FORMAT',\n\n /** Incorrect or missing `minute` input. To be replaced with localized: _Please enter hrs from 0 to 23._ */\n hour: 'ERROR_ENTER_HOURS',\n\n /** Incorrect or missing `minute` input. To be replaced with localized: _Please enter mins from 0 to 59.._ */\n minute: 'ERROR_ENTER_MINUTES',\n\n /** Incorrect or missing `period` selection. To be replaced with localized: _Please select AM/PM._ */\n period: 'ERROR_SELECT_PERIOD'\n};\n\nconst hasValidTime = ({\n hour = '',\n minute = '',\n period\n}) => hour.length > 0 && minute.length > 0 && ['AM', 'PM'].includes(period !== null && period !== void 0 ? period : '');\n/** Convert DateTime Answers to simple string representation for require check */\n\n\nconst dateTimeAnswerPayloadToString = ({\n date,\n hour,\n minute,\n period\n}, variant) => {\n if (variant === 'DATE') {\n return date !== null && date !== void 0 ? date : '';\n }\n\n if (!hasValidTime({\n hour,\n minute,\n period\n })) {\n // short-circuit to show error if time is not valid\n return '';\n }\n\n if (variant === 'TIME') {\n return `${hour}:${minute}${period}`;\n }\n\n if (!date) {\n return ''; // time without date is invalid\n }\n\n return `${date} ${hour}:${minute}${period}`;\n};\n/**\n * Flattens the answer values to string,\n * i.e. converts `ResponseValue[]` to `ResponseValue[]`\n */\n\n\nconst stringifyAnswerValues = (answers, variant) => answers.map(a => ({ ...a,\n value: dateTimeAnswerPayloadToString(a.value, variant)\n})).filter(a => a.value !== ''); // remove empty or invalid answers\n\n/** Validation logic for the time only */\n\n\nconst validateTimeFormat = (id, fieldId, type, hour, minute, period) => {\n const errors = [];\n const hourParsed = parseInt(hour || '', 10);\n const minParsed = parseInt(minute || '', 10);\n\n if (Number.isNaN(hourParsed) || hourParsed < 0 || hourParsed > 23) {\n errors.push(createValidationError(type, errorMessageTokens.hour, id, fieldId));\n }\n\n if (Number.isNaN(minParsed) || minParsed < 0 || minParsed > 59) {\n errors.push(createValidationError(type, errorMessageTokens.minute, id, fieldId));\n }\n\n if (period !== 'AM' && period !== 'PM') {\n errors.push(createValidationError(type, errorMessageTokens.period, id, fieldId));\n }\n\n return errors;\n};\n/**\n * Validates a single DateTime answer\n *\n * @returns `null` if valid and error object if not\n */\n\n\nconst checkValueFormat = (q, {\n date,\n hour,\n minute,\n period\n}, touched, fieldId) => {\n let errors = [];\n const {\n id,\n validation: {\n type\n },\n variant\n } = q;\n\n if ((variant === 'DATE' || variant === 'DATETIME') && checkValueDateFormat(q, date, touched, true)) {\n errors.push(createValidationError(type, type === 'DATE_INTL' ? errorMessageTokens.dateIntl : errorMessageTokens.dateUs, id, fieldId));\n }\n\n if (variant === 'TIME' || variant === 'DATETIME') {\n errors = [...errors, ...validateTimeFormat(id, fieldId, type, hour, minute, period)];\n }\n\n return errors.length > 0 ? errors : null;\n};\n/**\n * Creates the validation function for DateTime component.\n *\n * This validation is unique as it needs additional error messages that are\n * not returned in the GraphAPI response, and therefore are provided as tokens\n * (see `errorMessageTokens`) here to get replaced in questions-ui as this it\n * the only package in SMQuestions with l18n support and it is not worth the\n * setup and maintenance overhead to enable it here just for that.\n *\n * @returns {QuestionError[] | null} `null` means there is no error - `QuestionError[]` will never be an empty array\n */\n\n\nconst dateTimeRespondentSurveyValidation = (q, answers, touched) => {\n const simplifiedAnswers = stringifyAnswerValues(answers, q.variant);\n const valueErrors = [checkValueRequired(q, simplifiedAnswers, touched)];\n const dateFormatErrors = answers.reduce((acc, curr) => {\n const errors = checkValueFormat(q, curr.value, touched, curr.id);\n\n if (errors === null) {\n return acc;\n }\n\n return [...acc, ...errors];\n }, []);\n const errors = [...valueErrors, ...dateFormatErrors].filter(notNull);\n return errors.length > 0 ? errors : null;\n};\n\nconst dateTimeQuestionDefinition = {\n typeId: typeId$2,\n fromExternalQuestion: fromExternalQuestion$2,\n toExternalQuestion: toExternalQuestion$2,\n isCompatible: isCompatible$2,\n isOfQuestionType: isOfQuestionType$2\n};\nconst baseGuards$1 = baseQuestionGuards('image_presentation', 'PRESENTATION', 'IMAGE');\nconst isQuestionTypeImagePresentation = typeGuard(baseGuards$1);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeImagePresentation(externalQuestion) {\n return typeAssertion(baseGuards$1)(externalQuestion);\n}\n\nconst mapFromExternalQuestion$1 = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'image_presentation',\n externalQuestion,\n capability\n });\n assertQuestionTypeImagePresentation(questionType);\n return questionType;\n};\n\nconst typeId$1 = 'image_presentation';\n\nconst fromExternalQuestion$1 = (source, capability) => mapFromExternalQuestion$1(source, capability);\n\nconst toExternalQuestion$1 = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible$1 = q => isCompatible$f(q, typeId$1);\n\nconst isOfQuestionType$1 = isQuestionTypeImagePresentation;\nconst imagePresentationQuestionDefinition = {\n typeId: typeId$1,\n fromExternalQuestion: fromExternalQuestion$1,\n toExternalQuestion: toExternalQuestion$1,\n isCompatible: isCompatible$1,\n isOfQuestionType: isOfQuestionType$1\n};\nconst baseGuards = baseQuestionGuards('text_presentation', 'PRESENTATION', 'TEXT');\nconst isQuestionTypeTextPresentation = typeGuard(baseGuards);\n/**\n * Basic guard to determine question type\n *\n * throws an error when the question does not meet all the type requirements.\n */\n\nfunction assertQuestionTypeTextPresentation(externalQuestion) {\n return typeAssertion(baseGuards)(externalQuestion);\n}\n\nconst mapFromExternalQuestion = (externalQuestion, capability) => {\n const questionType = mapDynamic({\n typeId: 'text_presentation',\n externalQuestion,\n capability\n });\n assertQuestionTypeTextPresentation(questionType);\n return questionType;\n};\n\nconst typeId = 'text_presentation';\n\nconst fromExternalQuestion = (source, capability) => mapFromExternalQuestion(source, capability);\n\nconst toExternalQuestion = (eq, q, capability) => mapInternalDynamicToExternal(eq);\n\nconst isCompatible = q => isCompatible$f(q, typeId);\n\nconst isOfQuestionType = isQuestionTypeTextPresentation;\nconst textPresentationQuestionDefinition = {\n typeId,\n fromExternalQuestion,\n toExternalQuestion,\n isCompatible,\n isOfQuestionType\n};\nconst questionTypeDefinitionModules = [singleTextboxQuestionDefinition, multipleTextboxQuestionDefinition, commentBoxQuestionDefinition, multipleChoiceQuestionDefinition, checkBoxQuestionDefinition, imageChoiceQuestionDefinition, dropdownQuestionDefinition, sliderQuestionDefinition, starRatingQuestionDefinition, matrixQuestionDefinition, npsQuestionDefinition, dateTimeQuestionDefinition, rankingQuestionDefinition, imagePresentationQuestionDefinition, textPresentationQuestionDefinition];\n\nconst findByType = typeId => qd => qd.typeId === typeId;\n/** Find the QuestionTypeDefinitionModule for `typeId` */\n\n\nconst pickQuestionTypeDefinition = typeId => {\n const res = questionTypeDefinitionModules.find(findByType(typeId));\n\n if (res === undefined) {\n throw new Error(`Unable to find module definition for type ${typeId}`);\n }\n\n return res;\n};\n/** Find a compatible QuestionTypeDefinitionModule for an external question */\n\n\nconst selectQuestionTypeDefinition = q => {\n var _a;\n\n return (_a = questionTypeDefinitionModules.find(({\n isCompatible\n }) => isCompatible(q))) !== null && _a !== void 0 ? _a : null;\n}; /// Aggregate Response Guard Helpers\n/// GQL Types that will be generated soon.\n\n\nconst isAggregateResponseHeaderItem = typeGuard({\n id: isString,\n label: isString,\n weight: isNullable(isNumber)\n});\nconst isAggregateResponseHeader = typeGuard({\n id: isString,\n items: isArrayOf(isAggregateResponseHeaderItem)\n});\nconst isAggregateResponseCell = typeGuard({\n rowItem: isNullable(isAggregateResponseHeaderItem),\n columnItem: isNullable(isAggregateResponseHeaderItem),\n groupItem: isNullable(isAggregateResponseHeaderItem),\n percentage: isOptional(isNumber),\n total: isNumber\n});\nconst aggregateResponseBasicStatDimension = ['ROWS', 'COLUMNS', 'GROUPS'];\nconst isAggregateResponseBasicStats = typeGuard({\n across: isNullable(isOneOf(aggregateResponseBasicStatDimension)),\n row: isNullable(isAggregateResponseHeaderItem),\n column: isNullable(isAggregateResponseHeaderItem),\n group: isNullable(isAggregateResponseHeaderItem)\n});\nconst isAggregateResponseOtherAnswerItem = typeGuard({\n text: isString\n});\nconst isAggregateResponseOtherAnswer = typeGuard({\n title: isString,\n totalCount: isNumber,\n items: isArrayOf(isAggregateResponseOtherAnswerItem)\n}); // One dimensional aggregate response\n\nconst isOneDimensionalAggregateResponseCell = typeGuard({\n rowItem: isAggregateResponseHeaderItem,\n columnItem: isNull,\n groupItem: isNull,\n percentage: isOptional(isNumber),\n total: isNumber\n});\nconst isOneDimensionalAggregateResponse = typeGuard({\n id: isString,\n type: isFixed('ONE_D'),\n rowHeader: isAggregateResponseHeader,\n columnHeader: isNull,\n groupHeader: isNull,\n data: isArrayOf(isOneDimensionalAggregateResponseCell),\n otherAnswers: isOptional(isAggregateResponseOtherAnswer),\n stats: isArrayOf(isAggregateResponseBasicStats)\n}); // Two dimensional aggregate response\n\nconst isTwoDimensionalAggregateResponseCell = typeGuard({\n rowItem: isAggregateResponseHeaderItem,\n columnItem: isAggregateResponseHeaderItem,\n groupItem: isNull,\n percentage: isOptional(isNumber),\n total: isNumber\n});\nconst isTwoDimensionalAggregateResponse = typeGuard({\n id: isString,\n type: isFixed('TWO_D'),\n rowHeader: isAggregateResponseHeader,\n columnHeader: isAggregateResponseHeader,\n groupHeader: isNull,\n data: isArrayOf(isTwoDimensionalAggregateResponseCell),\n otherAnswers: isOptional(isAggregateResponseOtherAnswer),\n stats: isArrayOf(isAggregateResponseBasicStats)\n}); // Three dimensional aggregate response\n\nconst isThreeDimensionalAggregateResponseCell = typeGuard({\n rowItem: isAggregateResponseHeaderItem,\n columnItem: isAggregateResponseHeaderItem,\n groupItem: isAggregateResponseHeaderItem,\n percentage: isOptional(isNumber),\n total: isNumber\n});\nconst isThreeDimensionalAggregateResponse = typeGuard({\n id: isString,\n type: isFixed('THREE_D'),\n rowHeader: isAggregateResponseHeader,\n columnHeader: isAggregateResponseHeader,\n groupHeader: isAggregateResponseHeader,\n data: isArrayOf(isThreeDimensionalAggregateResponseCell),\n otherAnswers: isOptional(isAggregateResponseOtherAnswer),\n stats: isArrayOf(isAggregateResponseBasicStats)\n}); // Transformed type guards\n\nconst isOneDimensionalChartData = typeGuard({\n id: isString,\n rowID: isString,\n rowLabel: isString,\n total: isNumber,\n percentage: isOptional(isNumber)\n});\nconst isTwoDimensionalData = typeGuard({\n columnID: isString,\n columnLabel: isString,\n data: isArrayOf(isOneDimensionalChartData)\n});\nconst isThreeDimensionalData = typeGuard({\n groupID: isString,\n groupLabel: isString,\n data: isArrayOf(isTwoDimensionalData)\n});\n/** Converts the external `family` and `variant` to the internally used `TypeId` */\n\nconst getTypeId = ({\n family,\n variant\n}) => {\n switch (family) {\n case 'OPEN_ENDED':\n switch (variant) {\n case 'SINGLE_LINE':\n return 'single_textbox';\n\n case 'ESSAY':\n return 'comment_box';\n\n case 'MANY_FIELDS':\n return 'multiple_textbox';\n\n default:\n return null;\n }\n\n case 'MULTIPLE_CHOICE':\n switch (variant) {\n case 'SINGLE_ANSWER_RADIO':\n return 'multiple_choice';\n\n case 'MANY_ANSWERS_CHECKBOX':\n return 'check_box';\n\n case 'SINGLE_ANSWER_IMAGE':\n case 'MANY_ANSWERS_IMAGE':\n return 'image_choice';\n\n case 'SINGLE_ANSWER_MENU':\n return 'dropdown';\n\n default:\n return null;\n }\n\n case 'SLIDER':\n switch (variant) {\n case 'SINGLE_SLIDER':\n return 'slider';\n\n default:\n return null;\n }\n\n case 'RATING_SCALE':\n switch (variant) {\n case 'SINGLE_ANSWER_SYMBOL':\n return 'star_rating';\n\n case 'SINGLE_ANSWER_RADIO':\n return 'matrix';\n\n case 'NPS':\n return 'nps';\n\n default:\n return null;\n }\n\n case 'MATRIX':\n switch (variant) {\n case 'SINGLE_ANSWER_RADIO':\n case 'MANY_ANSWERS_CHECKBOX':\n return 'matrix';\n\n case 'RATING':\n return 'star_rating';\n\n default:\n return null;\n }\n\n case 'RANKING':\n switch (variant) {\n case 'SINGLE_ANSWER_RADIO':\n return 'ranking';\n\n default:\n return null;\n }\n\n case 'DATETIME':\n switch (variant) {\n case 'DATETIME':\n case 'DATE':\n case 'TIME':\n return 'date_time';\n\n default:\n return null;\n }\n\n case 'PRESENTATION':\n switch (variant) {\n case 'IMAGE':\n return 'image_presentation';\n\n case 'TEXT':\n return 'text_presentation';\n\n default:\n return null;\n }\n\n default:\n return null;\n }\n};\n\nconst isExternalQuestionWithTypeId = typeGuard({\n typeId: isString\n});\n\nfunction assertExternalQuestionWithIds(u) {\n return typeAssertion({\n typeId: isString,\n id: isString\n })(u);\n}\n\nexport { SENTIMENTS, aggregateResponseBasicStatDimension, assertExternalQuestionWithIds, assertQuestionTypeCheckBox, assertQuestionTypeCommentBox, assertQuestionTypeDropdown, assertQuestionTypeImageChoice, assertQuestionTypeImagePresentation, assertQuestionTypeMatrix, assertQuestionTypeMultipleTextbox, assertQuestionTypeRanking, assertQuestionTypeSingleTextbox, assertQuestionTypeSlider, assertQuestionTypeStarRating, assertQuestionTypeTextPresentation, baseQuestionGuards, checkBoxQuestionDefinition, validateRespondentSurveySelectionAndOtherValue as checkBoxRespondentSurveyValidation, commentBoxQuestionDefinition, validateRespondentSurveyOpenEndedQuestion as commentBoxRespondentSurveyValidation, dateTimeQuestionDefinition, dateTimeRespondentSurveyValidation, dropdownQuestionDefinition, validateRespondentSurveySelectionAndOtherValue as dropdownRespondentSurveyValidation, fixedWidthOptions, getTypeId, imageChoiceQuestionDefinition, standAloneRequiredValidator as imageChoiceRespondentSurveyValidation, imagePresentationQuestionDefinition, isAggregateResponseCell, isAggregateResponseHeader, isAggregateResponseHeaderItem, isExternalQuestionWithTypeId, isOneDimensionalAggregateResponse, isOneDimensionalChartData, isQuestionError, isQuestionType, isQuestionTypeCheckBox, isQuestionTypeCommentBox, isQuestionTypeDateTime, isQuestionTypeDropdown, isQuestionTypeImageChoice, isQuestionTypeImagePresentation, isQuestionTypeMatrix, isQuestionTypeMultipleChoice, isQuestionTypeMultipleTextbox, isQuestionTypeNps, isQuestionTypeRanking, isQuestionTypeSingleTextbox, isQuestionTypeSlider, isQuestionTypeStarRating, isQuestionTypeTextPresentation, isQuestionValidationMultipleChoice, isQuestionValidationNps, isThreeDimensionalAggregateResponse, isThreeDimensionalData, isTwoDimensionalAggregateResponse, isTwoDimensionalData, matrixQuestionDefinition, matrixRespondentSurveyValidation, multipleChoiceQuestionDefinition, validateRespondentSurveySelectionAndOtherValue as multipleChoiceRespondentSurveyValidation, multipleTextboxQuestionDefinition, validateRespondentSurveyMultipleOpenEndedQuestion as multipleTextboxRespondentSurveyValidation, npsQuestionDefinition, validateRequired as npsRespondentSurveyValidation, pickQuestionTypeDefinition, questionTypeFamilies, questionTypeIds, questionTypeLayoutPlacements, questionTypeMultipleChoiceLayouts, questionTypeRequiredPredicateTypes, questionTypeSkipLogicDestinationTypes, questionTypeSkipLogicTypes, questionTypeSortingKinds, questionTypeValidationTypes, questionTypeVariants, rankingQuestionDefinition, standAloneRequiredValidator as rankingRespondentSurveyValidation, ratingScaleSymbols, relativeWidthOptions, selectQuestionTypeDefinition, singleTextboxQuestionDefinition, validateRespondentSurveyOpenEndedQuestion as singleTextboxRespondentSurveyValidation, sliderQuestionDefinition, starRatingQuestionDefinition, textPresentationQuestionDefinition };","import * as React from 'react';\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n _this.updatedWithError = false;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.updatedWithError = false;\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var error = this.state.error;\n\n if (error !== null) {\n this.updatedWithError = true;\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true;\n return;\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar classnamesExports = {};\nvar classnames = {\n get exports() {\n return classnamesExports;\n },\n\n set exports(v) {\n classnamesExports = v;\n }\n\n};\n/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n(function (module) {\n /* global define */\n (function () {\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else {\n window.classNames = classNames;\n }\n })();\n})(classnames);\n\nexport { ErrorBoundary as E };","import React__default from 'react';\nimport { E as ErrorBoundary } from './vendor-1535a03e.js';\nimport { createUseStyles } from 'react-jss';\nimport { defineMessages, t } from '@sm/intl';\nconst useStyles$1 = createUseStyles(theme => ({\n wdsIcons: ({\n color,\n size\n }) => {\n var _a, _b, _c;\n\n const fontSize = size ? {\n fontSize: theme.iconSize[size]\n } : {\n fontSize: 'inherit'\n };\n const chosenColor = // @ts-expect-error Fallback styles are acceptable\n ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.text[color]) || ((_c = (_b = theme.palette) === null || _b === void 0 ? void 0 : _b[color]) === null || _c === void 0 ? void 0 : _c.main) || 'currentColor';\n return { ...fontSize,\n width: '1em',\n height: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n fill: chosenColor\n };\n }\n})); // https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\n\nconst getDisplayName = Component => Component.displayName || Component.name || 'Component';\n\nfunction withIcon(Component) {\n function WithIcon({\n color,\n title,\n size,\n ...rest\n }) {\n const classes = useStyles$1({\n color,\n size\n });\n return React__default.createElement(\"svg\", {\n className: classes.wdsIcons,\n viewBox: \"0 0 16 16\",\n preserveAspectRatio: \"xMidYMid\",\n \"aria-label\": title,\n role: title ? 'img' : 'presentation',\n ...rest\n }, React__default.createElement(Component, null));\n }\n\n WithIcon.displayName = `WithIcon(${getDisplayName(Component)})`;\n\n WithIcon.getOriginalComponent = () => Component;\n\n return WithIcon;\n}\n\ncreateUseStyles({\n svgContainer: {\n display: 'inline-block',\n width: '1em',\n height: '1em'\n }\n});\n\nfunction DocumentXIconPath() {\n return React__default.createElement(\"path\", {\n d: \"m5.94.005 8.012.012C14.53.018 15 .487 15 1.067V14.95c0 .58-.47 1.05-1.05 1.05H2.05C1.47 16 1 15.53 1 14.95V4.94L5.94.004zM7 1.505V4.95c0 .541-.41.987-.936 1.044L5.95 6H2.5v8.5h11V1.514L7 1.505zM6.557 7.53 8 8.973 9.443 7.53a.765.765 0 0 1 1.083 1.082l-1.444 1.443 1.444 1.444a.765.765 0 0 1-1.083 1.082L8 11.138 6.557 12.58A.765.765 0 1 1 5.474 11.5l1.444-1.444-1.444-1.443A.765.765 0 1 1 6.557 7.53zM5.5 2.563 3.561 4.5H5.5V2.562z\"\n });\n}\n\nvar IconDocumentX = withIcon(DocumentXIconPath);\nconst useStyles = createUseStyles(theme => {\n var _a, _b;\n\n return {\n fallbackComponent: {\n fontFamily: (_b = (_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.fontFamily) !== null && _b !== void 0 ? _b : {},\n color: theme.questionColor,\n border: `1px solid ${theme.questionColor}`,\n borderRadius: '5px',\n width: '100%',\n height: '100%',\n minHeight: '220px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& svg': {\n fill: theme.questionColor\n }\n },\n errorMessage: {\n marginLeft: `8px` // equivalent to wrench theme.spacing[2]\n\n }\n };\n});\nconst COPY = defineMessages({\n ERROR: {\n id: 'FallbackComponent.ERROR',\n defaultMessage: 'Error loading question',\n description: '[Type: label][Vis: high] - error message indicating a question could not be loaded'\n }\n});\n\nfunction FallbackComponent() {\n const {\n fallbackComponent,\n errorMessage\n } = useStyles();\n return React__default.createElement(\"div\", {\n className: fallbackComponent\n }, React__default.createElement(IconDocumentX, null), React__default.createElement(\"p\", {\n className: errorMessage\n }, t(COPY.ERROR)));\n}\n\nconst withErrorBoundary = Component => {\n const displayName = Component.displayName || Component.name || 'Component';\n\n function ComponentWithErrorBoundary(props) {\n return React__default.createElement(ErrorBoundary, {\n FallbackComponent: FallbackComponent\n }, React__default.createElement(Component, { ...props\n }));\n }\n\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n return ComponentWithErrorBoundary;\n};\n\nexport { FallbackComponent, withErrorBoundary };","import * as React from 'react';\nimport React__default, { useState, useEffect, useCallback, useMemo, createElement, PureComponent, useLayoutEffect, useRef, createContext, memo, useReducer, useContext, cloneElement, forwardRef } from 'react';\nimport { unstable_batchedUpdates, createPortal } from 'react-dom';\nvar classnamesExports = {};\nvar classnames = {\n get exports() {\n return classnamesExports;\n },\n\n set exports(v) {\n classnamesExports = v;\n }\n\n};\n/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n(function (module) {\n /* global define */\n (function () {\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else {\n window.classNames = classNames;\n }\n })();\n})(classnames);\n\nvar classNames = classnamesExports;\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n _this.updatedWithError = false;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.updatedWithError = false;\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var error = this.state.error;\n\n if (error !== null) {\n this.updatedWithError = true;\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true;\n return;\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar a = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction i(t) {\n return function (e) {\n var n = e || {},\n r = n.width ? String(n.width) : t.defaultWidth;\n return t.formats[r] || t.formats[t.defaultWidth];\n };\n}\n\nvar o = {\n date: i({\n formats: {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n },\n defaultWidth: 'full'\n }),\n time: i({\n formats: {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n },\n defaultWidth: 'full'\n }),\n dateTime: i({\n formats: {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n },\n defaultWidth: 'full'\n })\n},\n u = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nfunction s(t) {\n return function (e, n) {\n var r,\n a = n || {};\n\n if ('formatting' === (a.context ? String(a.context) : 'standalone') && t.formattingValues) {\n var i = t.defaultFormattingWidth || t.defaultWidth,\n o = a.width ? String(a.width) : i;\n r = t.formattingValues[o] || t.formattingValues[i];\n } else {\n var u = t.defaultWidth,\n s = a.width ? String(a.width) : t.defaultWidth;\n r = t.values[s] || t.values[u];\n }\n\n return r[t.argumentCallback ? t.argumentCallback(e) : e];\n };\n}\n\nfunction c(t) {\n return function (e, n) {\n var r = String(e),\n a = n || {},\n i = a.width,\n o = i && t.matchPatterns[i] || t.matchPatterns[t.defaultMatchWidth],\n u = r.match(o);\n if (!u) return null;\n var s,\n c = u[0],\n d = i && t.parsePatterns[i] || t.parsePatterns[t.defaultParseWidth];\n return s = '[object Array]' === Object.prototype.toString.call(d) ? function (t, e) {\n for (var n = 0; n < t.length; n++) if (e(t[n])) return n;\n }(d, function (t) {\n return t.test(c);\n }) : function (t, e) {\n for (var n in t) if (t.hasOwnProperty(n) && e(t[n])) return n;\n }(d, function (t) {\n return t.test(c);\n }), s = t.valueCallback ? t.valueCallback(s) : s, {\n value: s = a.valueCallback ? a.valueCallback(s) : s,\n rest: r.slice(c.length)\n };\n };\n}\n\nvar d,\n l = {\n code: 'en-US',\n formatDistance: function (t, e, n) {\n var r;\n return n = n || {}, r = 'string' == typeof a[t] ? a[t] : 1 === e ? a[t].one : a[t].other.replace('{{count}}', e), n.addSuffix ? n.comparison > 0 ? 'in ' + r : r + ' ago' : r;\n },\n formatLong: o,\n formatRelative: function (t, e, n, r) {\n return u[t];\n },\n localize: {\n ordinalNumber: function (t, e) {\n var n = Number(t),\n r = n % 100;\n if (r > 20 || r < 10) switch (r % 10) {\n case 1:\n return n + 'st';\n\n case 2:\n return n + 'nd';\n\n case 3:\n return n + 'rd';\n }\n return n + 'th';\n },\n era: s({\n values: {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n },\n defaultWidth: 'wide'\n }),\n quarter: s({\n values: {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n },\n defaultWidth: 'wide',\n argumentCallback: function (t) {\n return Number(t) - 1;\n }\n }),\n month: s({\n values: {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n },\n defaultWidth: 'wide'\n }),\n day: s({\n values: {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n },\n defaultWidth: 'wide'\n }),\n dayPeriod: s({\n values: {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n },\n defaultWidth: 'wide',\n formattingValues: {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n },\n defaultFormattingWidth: 'wide'\n })\n },\n match: {\n ordinalNumber: (d = {\n matchPattern: /^(\\d+)(th|st|nd|rd)?/i,\n parsePattern: /\\d+/i,\n valueCallback: function (t) {\n return parseInt(t, 10);\n }\n }, function (t, e) {\n var n = String(t),\n r = e || {},\n a = n.match(d.matchPattern);\n if (!a) return null;\n var i = a[0],\n o = n.match(d.parsePattern);\n if (!o) return null;\n var u = d.valueCallback ? d.valueCallback(o[0]) : o[0];\n return {\n value: u = r.valueCallback ? r.valueCallback(u) : u,\n rest: n.slice(i.length)\n };\n }),\n era: c({\n matchPatterns: {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n },\n defaultMatchWidth: 'wide',\n parsePatterns: {\n any: [/^b/i, /^(a|c)/i]\n },\n defaultParseWidth: 'any'\n }),\n quarter: c({\n matchPatterns: {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n },\n defaultMatchWidth: 'wide',\n parsePatterns: {\n any: [/1/i, /2/i, /3/i, /4/i]\n },\n defaultParseWidth: 'any',\n valueCallback: function (t) {\n return t + 1;\n }\n }),\n month: c({\n matchPatterns: {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n },\n defaultMatchWidth: 'wide',\n parsePatterns: {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n },\n defaultParseWidth: 'any'\n }),\n day: c({\n matchPatterns: {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n },\n defaultMatchWidth: 'wide',\n parsePatterns: {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n },\n defaultParseWidth: 'any'\n }),\n dayPeriod: c({\n matchPatterns: {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n },\n defaultMatchWidth: 'any',\n parsePatterns: {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n },\n defaultParseWidth: 'any'\n })\n },\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1\n }\n};\n\nfunction f(t) {\n if (null === t || !0 === t || !1 === t) return NaN;\n var e = Number(t);\n return isNaN(e) ? e : e < 0 ? Math.ceil(e) : Math.floor(e);\n}\n\nfunction h(t, e) {\n if (e.length < t) throw new TypeError(t + ' argument' + (t > 1 ? 's' : '') + ' required, but only ' + e.length + ' present');\n}\n\nfunction m(t) {\n h(1, arguments);\n var e = Object.prototype.toString.call(t);\n return t instanceof Date || 'object' == typeof t && '[object Date]' === e ? new Date(t.getTime()) : 'number' == typeof t || '[object Number]' === e ? new Date(t) : ('string' != typeof t && '[object String]' !== e || 'undefined' == typeof console || (console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"), console.warn(new Error().stack)), new Date(NaN));\n}\n\nfunction w(t, e) {\n h(2, arguments);\n var n = m(t).getTime(),\n r = f(e);\n return new Date(n + r);\n}\n\nfunction g(t, e) {\n h(2, arguments);\n var n = f(e);\n return w(t, -n);\n}\n\nfunction y(t, e) {\n switch (t) {\n case 'P':\n return e.date({\n width: 'short'\n });\n\n case 'PP':\n return e.date({\n width: 'medium'\n });\n\n case 'PPP':\n return e.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return e.date({\n width: 'full'\n });\n }\n}\n\nfunction b(t, e) {\n switch (t) {\n case 'p':\n return e.time({\n width: 'short'\n });\n\n case 'pp':\n return e.time({\n width: 'medium'\n });\n\n case 'ppp':\n return e.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return e.time({\n width: 'full'\n });\n }\n}\n\nvar D = {\n p: b,\n P: function (t, e) {\n var n,\n r = t.match(/(P+)(p+)?/),\n a = r[1],\n i = r[2];\n if (!i) return y(t, e);\n\n switch (a) {\n case 'P':\n n = e.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n n = e.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n n = e.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n n = e.dateTime({\n width: 'full'\n });\n }\n\n return n.replace('{{date}}', y(a, e)).replace('{{time}}', b(i, e));\n }\n};\n\nfunction T(t) {\n return t.getTime() % 6e4;\n}\n\nfunction p(t) {\n var e = new Date(t.getTime()),\n n = Math.ceil(e.getTimezoneOffset());\n return e.setSeconds(0, 0), 6e4 * n + (n > 0 ? (6e4 + T(e)) % 6e4 : T(e));\n}\n\nvar k = ['D', 'DD'],\n x = ['YY', 'YYYY'];\n\nfunction C(t) {\n return -1 !== k.indexOf(t);\n}\n\nfunction M(t) {\n return -1 !== x.indexOf(t);\n}\n\nfunction U(t) {\n if ('YYYY' === t) throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n if ('YY' === t) throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n if ('D' === t) throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n if ('DD' === t) throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n}\n\nfunction S(t, e) {\n h(1, arguments);\n var n = e || {},\n r = n.locale,\n a = r && r.options && r.options.weekStartsOn,\n i = null == a ? 0 : f(a),\n o = null == n.weekStartsOn ? i : f(n.weekStartsOn);\n if (!(o >= 0 && o <= 6)) throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n var u = m(t),\n s = u.getUTCDay(),\n c = (s < o ? 7 : 0) + s - o;\n return u.setUTCDate(u.getUTCDate() - c), u.setUTCHours(0, 0, 0, 0), u;\n}\n\nfunction P(t, e) {\n h(1, arguments);\n var n = m(t, e),\n r = n.getUTCFullYear(),\n a = e || {},\n i = a.locale,\n o = i && i.options && i.options.firstWeekContainsDate,\n u = null == o ? 1 : f(o),\n s = null == a.firstWeekContainsDate ? u : f(a.firstWeekContainsDate);\n if (!(s >= 1 && s <= 7)) throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n var c = new Date(0);\n c.setUTCFullYear(r + 1, 0, s), c.setUTCHours(0, 0, 0, 0);\n var d = S(c, e),\n l = new Date(0);\n l.setUTCFullYear(r, 0, s), l.setUTCHours(0, 0, 0, 0);\n var w = S(l, e);\n return n.getTime() >= d.getTime() ? r + 1 : n.getTime() >= w.getTime() ? r : r - 1;\n}\n\nfunction Y(t) {\n h(1, arguments);\n var e = 1,\n n = m(t),\n r = n.getUTCDay(),\n a = (r < e ? 7 : 0) + r - e;\n return n.setUTCDate(n.getUTCDate() - a), n.setUTCHours(0, 0, 0, 0), n;\n}\n\nfunction N(t) {\n h(1, arguments);\n var e = m(t),\n n = e.getUTCFullYear(),\n r = new Date(0);\n r.setUTCFullYear(n + 1, 0, 4), r.setUTCHours(0, 0, 0, 0);\n var a = Y(r),\n i = new Date(0);\n i.setUTCFullYear(n, 0, 4), i.setUTCHours(0, 0, 0, 0);\n var o = Y(i);\n return e.getTime() >= a.getTime() ? n + 1 : e.getTime() >= o.getTime() ? n : n - 1;\n}\n\nfunction q(t) {\n h(1, arguments);\n var e = N(t),\n n = new Date(0);\n n.setUTCFullYear(e, 0, 4), n.setUTCHours(0, 0, 0, 0);\n var r = Y(n);\n return r;\n}\n\nfunction B(t) {\n h(1, arguments);\n var e = m(t),\n n = Y(e).getTime() - q(e).getTime();\n return Math.round(n / 6048e5) + 1;\n}\n\nfunction O(t, e) {\n h(1, arguments);\n var n = e || {},\n r = n.locale,\n a = r && r.options && r.options.firstWeekContainsDate,\n i = null == a ? 1 : f(a),\n o = null == n.firstWeekContainsDate ? i : f(n.firstWeekContainsDate),\n u = P(t, e),\n s = new Date(0);\n s.setUTCFullYear(u, 0, o), s.setUTCHours(0, 0, 0, 0);\n var c = S(s, e);\n return c;\n}\n\nfunction H(t, e) {\n h(1, arguments);\n var n = m(t),\n r = S(n, e).getTime() - O(n, e).getTime();\n return Math.round(r / 6048e5) + 1;\n}\n\nfunction Ut(t) {\n h(1, arguments);\n var e = m(t);\n return !isNaN(e);\n}\n\nfunction St(t, e) {\n for (var n = t < 0 ? '-' : '', r = Math.abs(t).toString(); r.length < e;) r = '0' + r;\n\n return n + r;\n}\n\nvar Pt = function (t, e) {\n var n = t.getUTCFullYear(),\n r = n > 0 ? n : 1 - n;\n return St('yy' === e ? r % 100 : r, e.length);\n},\n Et = function (t, e) {\n var n = t.getUTCMonth();\n return 'M' === e ? String(n + 1) : St(n + 1, 2);\n},\n Yt = function (t, e) {\n return St(t.getUTCDate(), e.length);\n},\n Nt = function (t, e) {\n return St(t.getUTCHours() % 12 || 12, e.length);\n},\n qt = function (t, e) {\n return St(t.getUTCHours(), e.length);\n},\n Bt = function (t, e) {\n return St(t.getUTCMinutes(), e.length);\n},\n Ot = function (t, e) {\n return St(t.getUTCSeconds(), e.length);\n},\n Ht = function (t, e) {\n var n = e.length,\n r = t.getUTCMilliseconds();\n return St(Math.floor(r * Math.pow(10, n - 3)), e.length);\n};\n\nvar Lt = 'midnight',\n Wt = 'noon',\n Ft = 'morning',\n Qt = 'afternoon',\n Rt = 'evening',\n It = 'night',\n Xt = {\n G: function (t, e, n) {\n var r = t.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (e) {\n case 'G':\n case 'GG':\n case 'GGG':\n return n.era(r, {\n width: 'abbreviated'\n });\n\n case 'GGGGG':\n return n.era(r, {\n width: 'narrow'\n });\n\n case 'GGGG':\n default:\n return n.era(r, {\n width: 'wide'\n });\n }\n },\n y: function (t, e, n) {\n if ('yo' === e) {\n var r = t.getUTCFullYear(),\n a = r > 0 ? r : 1 - r;\n return n.ordinalNumber(a, {\n unit: 'year'\n });\n }\n\n return Pt(t, e);\n },\n Y: function (t, e, n, r) {\n var a = P(t, r),\n i = a > 0 ? a : 1 - a;\n return 'YY' === e ? St(i % 100, 2) : 'Yo' === e ? n.ordinalNumber(i, {\n unit: 'year'\n }) : St(i, e.length);\n },\n R: function (t, e) {\n return St(N(t), e.length);\n },\n u: function (t, e) {\n return St(t.getUTCFullYear(), e.length);\n },\n Q: function (t, e, n) {\n var r = Math.ceil((t.getUTCMonth() + 1) / 3);\n\n switch (e) {\n case 'Q':\n return String(r);\n\n case 'QQ':\n return St(r, 2);\n\n case 'Qo':\n return n.ordinalNumber(r, {\n unit: 'quarter'\n });\n\n case 'QQQ':\n return n.quarter(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'QQQQQ':\n return n.quarter(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'QQQQ':\n default:\n return n.quarter(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n q: function (t, e, n) {\n var r = Math.ceil((t.getUTCMonth() + 1) / 3);\n\n switch (e) {\n case 'q':\n return String(r);\n\n case 'qq':\n return St(r, 2);\n\n case 'qo':\n return n.ordinalNumber(r, {\n unit: 'quarter'\n });\n\n case 'qqq':\n return n.quarter(r, {\n width: 'abbreviated',\n context: 'standalone'\n });\n\n case 'qqqqq':\n return n.quarter(r, {\n width: 'narrow',\n context: 'standalone'\n });\n\n case 'qqqq':\n default:\n return n.quarter(r, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n M: function (t, e, n) {\n var r = t.getUTCMonth();\n\n switch (e) {\n case 'M':\n case 'MM':\n return Et(t, e);\n\n case 'Mo':\n return n.ordinalNumber(r + 1, {\n unit: 'month'\n });\n\n case 'MMM':\n return n.month(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'MMMMM':\n return n.month(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'MMMM':\n default:\n return n.month(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n L: function (t, e, n) {\n var r = t.getUTCMonth();\n\n switch (e) {\n case 'L':\n return String(r + 1);\n\n case 'LL':\n return St(r + 1, 2);\n\n case 'Lo':\n return n.ordinalNumber(r + 1, {\n unit: 'month'\n });\n\n case 'LLL':\n return n.month(r, {\n width: 'abbreviated',\n context: 'standalone'\n });\n\n case 'LLLLL':\n return n.month(r, {\n width: 'narrow',\n context: 'standalone'\n });\n\n case 'LLLL':\n default:\n return n.month(r, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n w: function (t, e, n, r) {\n var a = H(t, r);\n return 'wo' === e ? n.ordinalNumber(a, {\n unit: 'week'\n }) : St(a, e.length);\n },\n I: function (t, e, n) {\n var r = B(t);\n return 'Io' === e ? n.ordinalNumber(r, {\n unit: 'week'\n }) : St(r, e.length);\n },\n d: function (t, e, n) {\n return 'do' === e ? n.ordinalNumber(t.getUTCDate(), {\n unit: 'date'\n }) : Yt(t, e);\n },\n D: function (t, e, n) {\n var r = function (t) {\n h(1, arguments);\n var e = m(t),\n n = e.getTime();\n e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0);\n var r = e.getTime(),\n a = n - r;\n return Math.floor(a / 864e5) + 1;\n }(t);\n\n return 'Do' === e ? n.ordinalNumber(r, {\n unit: 'dayOfYear'\n }) : St(r, e.length);\n },\n E: function (t, e, n) {\n var r = t.getUTCDay();\n\n switch (e) {\n case 'E':\n case 'EE':\n case 'EEE':\n return n.day(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'EEEEE':\n return n.day(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'EEEEEE':\n return n.day(r, {\n width: 'short',\n context: 'formatting'\n });\n\n case 'EEEE':\n default:\n return n.day(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n e: function (t, e, n, r) {\n var a = t.getUTCDay(),\n i = (a - r.weekStartsOn + 8) % 7 || 7;\n\n switch (e) {\n case 'e':\n return String(i);\n\n case 'ee':\n return St(i, 2);\n\n case 'eo':\n return n.ordinalNumber(i, {\n unit: 'day'\n });\n\n case 'eee':\n return n.day(a, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'eeeee':\n return n.day(a, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'eeeeee':\n return n.day(a, {\n width: 'short',\n context: 'formatting'\n });\n\n case 'eeee':\n default:\n return n.day(a, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n c: function (t, e, n, r) {\n var a = t.getUTCDay(),\n i = (a - r.weekStartsOn + 8) % 7 || 7;\n\n switch (e) {\n case 'c':\n return String(i);\n\n case 'cc':\n return St(i, e.length);\n\n case 'co':\n return n.ordinalNumber(i, {\n unit: 'day'\n });\n\n case 'ccc':\n return n.day(a, {\n width: 'abbreviated',\n context: 'standalone'\n });\n\n case 'ccccc':\n return n.day(a, {\n width: 'narrow',\n context: 'standalone'\n });\n\n case 'cccccc':\n return n.day(a, {\n width: 'short',\n context: 'standalone'\n });\n\n case 'cccc':\n default:\n return n.day(a, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n i: function (t, e, n) {\n var r = t.getUTCDay(),\n a = 0 === r ? 7 : r;\n\n switch (e) {\n case 'i':\n return String(a);\n\n case 'ii':\n return St(a, e.length);\n\n case 'io':\n return n.ordinalNumber(a, {\n unit: 'day'\n });\n\n case 'iii':\n return n.day(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'iiiii':\n return n.day(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'iiiiii':\n return n.day(r, {\n width: 'short',\n context: 'formatting'\n });\n\n case 'iiii':\n default:\n return n.day(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n a: function (t, e, n) {\n var r = t.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (e) {\n case 'a':\n case 'aa':\n case 'aaa':\n return n.dayPeriod(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return n.dayPeriod(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return n.dayPeriod(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n b: function (t, e, n) {\n var r,\n a = t.getUTCHours();\n\n switch (r = 12 === a ? Wt : 0 === a ? Lt : a / 12 >= 1 ? 'pm' : 'am', e) {\n case 'b':\n case 'bb':\n case 'bbb':\n return n.dayPeriod(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return n.dayPeriod(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return n.dayPeriod(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n B: function (t, e, n) {\n var r,\n a = t.getUTCHours();\n\n switch (r = a >= 17 ? Rt : a >= 12 ? Qt : a >= 4 ? Ft : It, e) {\n case 'B':\n case 'BB':\n case 'BBB':\n return n.dayPeriod(r, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return n.dayPeriod(r, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return n.dayPeriod(r, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n h: function (t, e, n) {\n if ('ho' === e) {\n var r = t.getUTCHours() % 12;\n return 0 === r && (r = 12), n.ordinalNumber(r, {\n unit: 'hour'\n });\n }\n\n return Nt(t, e);\n },\n H: function (t, e, n) {\n return 'Ho' === e ? n.ordinalNumber(t.getUTCHours(), {\n unit: 'hour'\n }) : qt(t, e);\n },\n K: function (t, e, n) {\n var r = t.getUTCHours() % 12;\n return 'Ko' === e ? n.ordinalNumber(r, {\n unit: 'hour'\n }) : St(r, e.length);\n },\n k: function (t, e, n) {\n var r = t.getUTCHours();\n return 0 === r && (r = 24), 'ko' === e ? n.ordinalNumber(r, {\n unit: 'hour'\n }) : St(r, e.length);\n },\n m: function (t, e, n) {\n return 'mo' === e ? n.ordinalNumber(t.getUTCMinutes(), {\n unit: 'minute'\n }) : Bt(t, e);\n },\n s: function (t, e, n) {\n return 'so' === e ? n.ordinalNumber(t.getUTCSeconds(), {\n unit: 'second'\n }) : Ot(t, e);\n },\n S: function (t, e) {\n return Ht(t, e);\n },\n X: function (t, e, n, r) {\n var a = (r._originalDate || t).getTimezoneOffset();\n if (0 === a) return 'Z';\n\n switch (e) {\n case 'X':\n return At(a);\n\n case 'XXXX':\n case 'XX':\n return zt(a);\n\n case 'XXXXX':\n case 'XXX':\n default:\n return zt(a, ':');\n }\n },\n x: function (t, e, n, r) {\n var a = (r._originalDate || t).getTimezoneOffset();\n\n switch (e) {\n case 'x':\n return At(a);\n\n case 'xxxx':\n case 'xx':\n return zt(a);\n\n case 'xxxxx':\n case 'xxx':\n default:\n return zt(a, ':');\n }\n },\n O: function (t, e, n, r) {\n var a = (r._originalDate || t).getTimezoneOffset();\n\n switch (e) {\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + Gt(a, ':');\n\n case 'OOOO':\n default:\n return 'GMT' + zt(a, ':');\n }\n },\n z: function (t, e, n, r) {\n var a = (r._originalDate || t).getTimezoneOffset();\n\n switch (e) {\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + Gt(a, ':');\n\n case 'zzzz':\n default:\n return 'GMT' + zt(a, ':');\n }\n },\n t: function (t, e, n, r) {\n var a = r._originalDate || t;\n return St(Math.floor(a.getTime() / 1e3), e.length);\n },\n T: function (t, e, n, r) {\n return St((r._originalDate || t).getTime(), e.length);\n }\n};\n\nfunction Gt(t, e) {\n var n = t > 0 ? '-' : '+',\n r = Math.abs(t),\n a = Math.floor(r / 60),\n i = r % 60;\n if (0 === i) return n + String(a);\n var o = e || '';\n return n + String(a) + o + St(i, 2);\n}\n\nfunction At(t, e) {\n return t % 60 == 0 ? (t > 0 ? '-' : '+') + St(Math.abs(t) / 60, 2) : zt(t, e);\n}\n\nfunction zt(t, e) {\n var n = e || '',\n r = t > 0 ? '-' : '+',\n a = Math.abs(t);\n return r + St(Math.floor(a / 60), 2) + n + St(a % 60, 2);\n}\n\nvar jt = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g,\n Kt = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,\n Jt = /^'([^]*?)'?$/,\n Zt = /''/g,\n _t = /[a-zA-Z]/;\n\nfunction $t(t, e, n) {\n h(2, arguments);\n var r = String(e),\n a = n || {},\n i = a.locale || l,\n o = i.options && i.options.firstWeekContainsDate,\n u = null == o ? 1 : f(o),\n s = null == a.firstWeekContainsDate ? u : f(a.firstWeekContainsDate);\n if (!(s >= 1 && s <= 7)) throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n var c = i.options && i.options.weekStartsOn,\n d = null == c ? 0 : f(c),\n w = null == a.weekStartsOn ? d : f(a.weekStartsOn);\n if (!(w >= 0 && w <= 6)) throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n if (!i.localize) throw new RangeError('locale must contain localize property');\n if (!i.formatLong) throw new RangeError('locale must contain formatLong property');\n var v = m(t);\n if (!Ut(v)) throw new RangeError('Invalid time value');\n var y = p(v),\n b = g(v, y),\n T = {\n firstWeekContainsDate: s,\n weekStartsOn: w,\n locale: i,\n _originalDate: v\n },\n k = r.match(Kt).map(function (t) {\n var e = t[0];\n return 'p' === e || 'P' === e ? (0, D[e])(t, i.formatLong, T) : t;\n }).join('').match(jt).map(function (t) {\n if (\"''\" === t) return \"'\";\n var e = t[0];\n if (\"'\" === e) return Vt(t);\n var n = Xt[e];\n if (n) return !a.useAdditionalWeekYearTokens && M(t) && U(t), !a.useAdditionalDayOfYearTokens && C(t) && U(t), n(b, t, i.localize, T);\n if (e.match(_t)) throw new RangeError('Format string contains an unescaped latin alphabet character `' + e + '`');\n return t;\n }).join('');\n return k;\n}\n\nfunction Vt(t) {\n return t.match(Jt)[1].replace(Zt, \"'\");\n}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n\n\nfunction te(t, e) {\n h(2, arguments);\n var n = m(t),\n r = f(e);\n return isNaN(r) ? new Date(NaN) : r ? (n.setDate(n.getDate() + r), n) : n;\n}\n\nfunction ee(t, e) {\n h(1, arguments);\n var n = t || {},\n r = m(n.start),\n a = m(n.end),\n i = a.getTime();\n if (!(r.getTime() <= i)) throw new RangeError('Invalid interval');\n var o = [],\n u = r;\n u.setHours(0, 0, 0, 0);\n var s = e && 'step' in e ? Number(e.step) : 1;\n if (s < 1 || isNaN(s)) throw new RangeError('`options.step` must be a number greater than 1');\n\n for (; u.getTime() <= i;) o.push(m(u)), u.setDate(u.getDate() + s), u.setHours(0, 0, 0, 0);\n\n return o;\n}\n\nfunction ne(t, e) {\n h(1, arguments);\n var n = e || {},\n r = n.locale,\n a = r && r.options && r.options.weekStartsOn,\n i = null == a ? 0 : f(a),\n o = null == n.weekStartsOn ? i : f(n.weekStartsOn);\n if (!(o >= 0 && o <= 6)) throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n var u = m(t),\n s = u.getDay(),\n c = 6 + (s < o ? -7 : 0) - (s - o);\n return u.setDate(u.getDate() + c), u.setHours(23, 59, 59, 999), u;\n}\n\nfunction re(t) {\n h(1, arguments);\n var e = m(t);\n return e.setDate(1), e.setHours(0, 0, 0, 0), e;\n}\n\nfunction ae(t, e) {\n h(1, arguments);\n var n = e || {},\n r = n.locale,\n a = r && r.options && r.options.weekStartsOn,\n i = null == a ? 0 : f(a),\n o = null == n.weekStartsOn ? i : f(n.weekStartsOn);\n if (!(o >= 0 && o <= 6)) throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n var u = m(t),\n s = u.getDay(),\n c = (s < o ? 7 : 0) + s - o;\n return u.setDate(u.getDate() - c), u.setHours(0, 0, 0, 0), u;\n}\n\nfunction ie(t) {\n var e = void 0 === t ? {} : t,\n n = e.firstDayOfWeek,\n r = void 0 === n ? 1 : n,\n a = e.weekdayLabelFormat,\n i = void 0 === a ? function (t) {\n return $t(t, 'iiiiii');\n } : a,\n o = new Date();\n return ee({\n start: te(ae(o), r),\n end: te(ne(o), r)\n }).reduce(function (t, e) {\n return t.push(i(e)), t;\n }, []);\n}\n\nfunction oe(t) {\n var e = t.year,\n n = t.month,\n r = t.firstDayOfWeek,\n a = void 0 === r ? 1 : r,\n i = t.dayLabelFormat,\n o = void 0 === i ? function (t) {\n return $t(t, 'dd');\n } : i,\n u = new Date(e, n),\n s = re(u),\n c = function (t) {\n h(1, arguments);\n var e = m(t),\n n = e.getDay();\n return n;\n }(s),\n d = function (t) {\n h(1, arguments);\n var e = m(t),\n n = e.getMonth();\n return e.setFullYear(e.getFullYear(), n + 1, 0), e.setHours(23, 59, 59, 999), e;\n }(u);\n\n return function () {\n for (var t = 0, e = 0, n = arguments.length; e < n; e++) t += arguments[e].length;\n\n var r = Array(t),\n a = 0;\n\n for (e = 0; e < n; e++) for (var i = arguments[e], o = 0, u = i.length; o < u; o++, a++) r[a] = i[o];\n\n return r;\n }(Array.from(Array(c >= a ? c - a : 6 - a + c + 1).keys()).fill(0), ee({\n start: s,\n end: d\n }).map(function (t) {\n return {\n date: t,\n dayLabel: o(t)\n };\n }));\n}\n\nvar ue = function (t) {\n return $t(t, 'dd');\n},\n se = function (t) {\n return $t(t, 'eeeeee');\n},\n ce = function (t) {\n return $t(t, 'MMMM yyyy');\n};\n\nfunction de(e) {\n var n = e.year,\n r = e.month,\n a = e.firstDayOfWeek,\n i = void 0 === a ? 1 : a,\n o = e.dayLabelFormat,\n u = void 0 === o ? ue : o,\n s = e.weekdayLabelFormat,\n c = void 0 === s ? se : s,\n d = e.monthLabelFormat,\n l = void 0 === d ? ce : d;\n return {\n days: useMemo(function () {\n return oe({\n year: n,\n month: r,\n firstDayOfWeek: i,\n dayLabelFormat: u\n });\n }, [n, r, i, u]),\n weekdayLabels: useMemo(function () {\n return ie({\n firstDayOfWeek: i,\n weekdayLabelFormat: c\n });\n }, [i, c]),\n monthLabel: l(new Date(n, r))\n };\n}\n\nfunction le(t, e) {\n h(2, arguments);\n var n = m(t),\n r = m(e);\n return n.getTime() < r.getTime();\n}\n\nfunction fe(t, e) {\n h(2, arguments);\n var n = m(t),\n r = m(e);\n return n.getTime() > r.getTime();\n}\n\nfunction he(t, e) {\n h(2, arguments);\n var n = e || {},\n r = m(t).getTime(),\n a = m(n.start).getTime(),\n i = m(n.end).getTime();\n if (!(a <= i)) throw new RangeError('Invalid interval');\n return r >= a && r <= i;\n}\n\nfunction me(t) {\n h(1, arguments);\n var e = m(t);\n return e.setHours(0, 0, 0, 0), e;\n}\n\nfunction we(t, e) {\n h(2, arguments);\n var n = me(t),\n r = me(e);\n return n.getTime() === r.getTime();\n}\n\nfunction ge(t, e) {\n h(2, arguments);\n var n = m(t),\n r = f(e);\n if (isNaN(r)) return new Date(NaN);\n if (!r) return n;\n var a = n.getDate(),\n i = new Date(n.getTime());\n i.setMonth(n.getMonth() + r + 1, 0);\n var o = i.getDate();\n return a >= o ? i : (n.setFullYear(i.getFullYear(), i.getMonth(), a), n);\n}\n\nvar ve = function (t, e) {\n return void 0 === t && (t = []), t.some(function (t) {\n return we(e, t);\n });\n};\n\nfunction ye(t, e, n) {\n return !(!e || !n) && he(t, {\n start: e,\n end: n\n });\n}\n\nfunction be(t, e, n) {\n return !!(e && we(t, e) || n && we(t, n));\n}\n\nfunction De(t, e) {\n return !(!e || !we(t, e));\n}\n\nfunction Te(t, e) {\n return !(!e || !we(t, e));\n}\n\nfunction pe(t) {\n var e = t.date,\n n = t.minBookingDate,\n r = t.maxBookingDate,\n a = t.isDateBlockedFn,\n i = t.startDate,\n o = t.endDate,\n u = t.minBookingDays,\n s = void 0 === u ? 1 : u,\n c = t.unavailableDates,\n d = void 0 === c ? [] : c,\n l = n ? new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0) : n,\n f = r ? new Date(r.getFullYear(), r.getMonth(), r.getDate(), 0, 0, 0) : r;\n return !!(ve(d, e) || l && le(e, l) || f && fe(e, f) || i && !o && s > 1 && he(e, {\n start: i,\n end: te(i, s - 2)\n }) || a && a(e));\n}\n\nfunction ke(t) {\n var e = re(t);\n return {\n year: function (t) {\n h(1, arguments);\n var e = m(t),\n n = e.getFullYear();\n return n;\n }(e),\n month: function (t) {\n h(1, arguments);\n var e = m(t),\n n = e.getMonth();\n return n;\n }(e),\n date: e\n };\n}\n\nfunction xe() {\n return ke(me(Date.now()));\n}\n\nfunction Ce(t, e) {\n var n = e ? ke(e) : xe(),\n r = n.date,\n a = [n];\n return t > 1 && (a = Array.from(Array(t - 1).keys()).reduce(function (t) {\n return r = ge(t[t.length - 1].date, 1), t.concat([ke(r)]);\n }, a)), a;\n}\n\nfunction Me(t, e, n, r) {\n var a = t[r ? n > 0 ? 0 : t.length - r : n > 0 ? t.length - 1 : 0].date;\n return Array.from(Array(e).keys()).reduce(function (t) {\n return a = 0 === t.length ? ge(a, n) : ge(a, n >= 0 ? 1 : -1), n > 0 ? t.concat([ke(a)]) : [ke(a)].concat(t);\n }, []);\n}\n\nfunction Se(t) {\n var e = t.startDate,\n n = t.endDate,\n r = t.isDateBlocked,\n a = t.minBookingDays,\n i = t.exactMinBookingDays,\n o = t.minBookingDate,\n u = t.maxBookingDate,\n s = !o || !le(e, te(o, -1)),\n c = !u || !fe(te(e, a - 1), u);\n return !(!e || 1 !== a || n || r(e)) || (e && a > 1 && !n && !i || e && a > 0 && i && s && c || e && a > 0 && i && !o && !u ? !ee({\n start: e,\n end: te(e, a - 1)\n }).some(function (t) {\n return r(t);\n }) : !(!e || !n || i) && !le(n, te(e, a - 1)) && !ee({\n start: e,\n end: n\n }).some(function (t) {\n return r(t);\n }));\n}\n\nvar Pe = 'startDate';\n\nfunction Ye(t) {\n var a = t.startDate,\n i = t.endDate,\n o = t.focusedInput,\n u = t.minBookingDate,\n s = t.maxBookingDate,\n c = t.onDatesChange,\n d = t.initialVisibleMonth,\n l = t.exactMinBookingDays,\n f = void 0 !== l && l,\n h = t.minBookingDays,\n m = void 0 === h ? 1 : h,\n w = t.numberOfMonths,\n g = void 0 === w ? 2 : w,\n v = t.firstDayOfWeek,\n y = void 0 === v ? 1 : v,\n b = t.isDateBlocked,\n D = void 0 === b ? function () {\n return !1;\n } : b,\n T = t.unavailableDates,\n p = void 0 === T ? [] : T,\n k = t.changeActiveMonthOnSelect,\n x = void 0 === k || k,\n C = useState(function () {\n return Ce(g, a || d || null);\n }),\n M = C[0],\n U = C[1],\n S = useState(null),\n P = S[0],\n E = S[1],\n Y = useState(a),\n N = Y[0],\n q = Y[1];\n useEffect(function () {\n return 'undefined' != typeof window && window.addEventListener && window.addEventListener('keydown', L), function () {\n window.removeEventListener && window.removeEventListener('keydown', L);\n };\n });\n\n var B = function (t) {\n return ve(p, t) || D(t);\n },\n O = function (t) {\n q(t), (!N || N && !we(t, N)) && U(Ce(g, t));\n },\n H = function (t) {\n return pe({\n date: t,\n minBookingDate: u,\n maxBookingDate: s,\n startDate: a,\n endDate: i,\n minBookingDays: m,\n isDateBlockedFn: B\n });\n };\n\n function L(t) {\n if (('ArrowRight' === t.key || 'ArrowLeft' === t.key || 'ArrowDown' === t.key || 'ArrowUp' === t.key) && !N) {\n var e = M[0];\n O(e.date), U(Ce(g, e.date));\n }\n }\n\n var W = useCallback(function () {\n U(Me(M, g, -1)), q(null);\n }, [M, g]),\n F = useCallback(function () {\n U(Me(M, g, -1, 1)), q(null);\n }, [M, g]),\n Q = useCallback(function () {\n U(Me(M, g, 1)), q(null);\n }, [M, g]),\n R = useCallback(function () {\n U(Me(M, g, 1, 1)), q(null);\n }, [M, g]),\n I = useCallback(function (t) {\n U(Ce(g, t)), q(null);\n }, [g]),\n X = useCallback(function (t) {\n void 0 === t && (t = 1), U(Me(M, g, -(12 * t - g + 1))), q(null);\n }, [M, g]),\n G = useCallback(function (t) {\n void 0 === t && (t = 1), U(Me(M, g, 12 * t - g + 1)), q(null);\n }, [M, g]);\n return {\n firstDayOfWeek: y,\n activeMonths: M,\n isDateSelected: function (t) {\n return ye(t, a, i);\n },\n isDateHovered: function (t) {\n return function (t) {\n var e = t.date,\n n = t.startDate,\n r = t.endDate,\n a = t.isDateBlocked,\n i = t.hoveredDate,\n o = t.minBookingDays,\n u = t.exactMinBookingDays;\n return i && o > 1 && u && he(e, {\n start: i,\n end: te(i, o - 1)\n }) ? !ee({\n start: i,\n end: te(i, o - 1)\n }).some(function (t) {\n return a(t);\n }) : n && !r && i && he(e, {\n start: n,\n end: te(n, o - 1)\n }) && we(n, i) && o > 1 ? !ee({\n start: n,\n end: te(n, o - 1)\n }).some(function (t) {\n return a(t);\n }) : !(!n || r || !i || le(i, n) || !he(e, {\n start: n,\n end: i\n })) && !ee({\n start: n,\n end: i\n }).some(function (t) {\n return a(t);\n });\n }({\n date: t,\n hoveredDate: P,\n startDate: a,\n endDate: i,\n minBookingDays: m,\n exactMinBookingDays: f,\n isDateBlocked: B\n });\n },\n isFirstOrLastSelectedDate: function (t) {\n return be(t, a, i);\n },\n isStartDate: function (t) {\n return De(t, a);\n },\n isEndDate: function (t) {\n return Te(t, i);\n },\n isDateBlocked: H,\n numberOfMonths: g,\n isDateFocused: function (t) {\n return !!N && we(t, N);\n },\n focusedDate: N,\n hoveredDate: P,\n onResetDates: function () {\n c({\n startDate: null,\n endDate: null,\n focusedInput: 'startDate'\n });\n },\n onDateHover: function (t) {\n if (t) {\n if (t) {\n var e = !H(t) || a && we(t, a),\n n = !u || !le(t, te(u, -1)),\n r = !s || !fe(t, s),\n o = te(t, m - 1),\n c = !u || !le(o, u),\n d = !s || !fe(o, s),\n l = f && m > 1 && n && r && c && d,\n h = a && !i && !f && n && r,\n w = !(m > 1 && a) || he(t, {\n start: a,\n end: te(a, m - 2)\n }),\n g = a && we(t, a) && w;\n e && (l || h || g) ? E(t) : null !== P && E(null);\n }\n } else E(null);\n },\n onDateSelect: function (t) {\n ('endDate' === o || 'startDate' === o) && m > 0 && f && Se({\n minBookingDays: m,\n exactMinBookingDays: f,\n minBookingDate: u,\n maxBookingDate: s,\n isDateBlocked: B,\n startDate: t,\n endDate: null\n }) ? c({\n startDate: t,\n endDate: te(t, m - 1),\n focusedInput: null\n }) : ('endDate' === o && a && le(t, a) || 'startDate' === o && i && fe(t, i)) && !f && Se({\n minBookingDays: m,\n isDateBlocked: B,\n startDate: t,\n endDate: null\n }) ? c({\n endDate: null,\n startDate: t,\n focusedInput: 'endDate'\n }) : 'startDate' === o && !f && Se({\n minBookingDays: m,\n isDateBlocked: B,\n endDate: i,\n startDate: t\n }) ? c({\n endDate: i,\n startDate: t,\n focusedInput: 'endDate'\n }) : 'startDate' === o && !f && Se({\n minBookingDays: m,\n isDateBlocked: B,\n endDate: null,\n startDate: t\n }) ? c({\n endDate: null,\n startDate: t,\n focusedInput: 'endDate'\n }) : 'endDate' === o && a && !le(t, a) && !f && Se({\n minBookingDays: m,\n isDateBlocked: B,\n startDate: a,\n endDate: t\n }) && c({\n startDate: a,\n endDate: t,\n focusedInput: null\n }), 'endDate' !== o && (!N || N && !we(t, N)) && x && U(Ce(g, t));\n },\n onDateFocus: O,\n goToPreviousMonths: W,\n goToPreviousMonthsByOneMonth: F,\n goToNextMonths: Q,\n goToNextMonthsByOneMonth: R,\n goToDate: I,\n goToPreviousYear: X,\n goToNextYear: G\n };\n}\n\nfunction Ne(t) {\n var e = t.date,\n n = t.focusedDate,\n a = t.isDateSelected,\n i = t.isDateFocused,\n o = t.isFirstOrLastSelectedDate,\n u = t.isDateHovered,\n s = t.isDateBlocked,\n c = t.onDateSelect,\n d = t.onDateFocus,\n l = t.onDateHover,\n f = useCallback(function () {\n return c(e);\n }, [e, c]),\n h = useCallback(function () {\n return l(e);\n }, [e, l]),\n m = s(e) && !u(e);\n return {\n tabIndex: null === n || i(e) ? 0 : -1,\n isSelected: a(e),\n isSelectedStartOrEnd: o(e),\n isWithinHoverRange: u(e),\n disabledDate: m,\n onKeyDown: function (t) {\n 'ArrowRight' === t.key ? d(te(e, 1)) : 'ArrowLeft' === t.key ? d(te(e, -1)) : 'ArrowUp' === t.key ? d(te(e, -7)) : 'ArrowDown' === t.key && d(te(e, 7));\n },\n onClick: m ? function () {} : f,\n onMouseEnter: h\n };\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : 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 return _extends.apply(this, arguments);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nvar safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n};\n\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n function memoized() {\n var newArgs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n\n return memoized;\n} // Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\n\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\n\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nfunction requestTimeout(callback, delay) {\n var start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\n\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n\nif (process.env.NODE_ENV !== 'production') ;\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = /*#__PURE__*/new WeakSet();\n devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n }\n}\n\nfunction createListComponent(_ref) {\n var _class, _temp;\n\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _temp = _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(List, _PureComponent); // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n\n\n function List(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_assertThisInitialized(_this)));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_assertThisInitialized(_this)),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n var style;\n\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var isRtl = direction === 'rtl';\n var offsetHorizontal = isHorizontal ? _offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? _offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n\n return _this;\n }\n\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = List.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n\n var itemCount = this.props.itemCount;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1));\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props2 = this.props,\n direction = _this$props2.direction,\n initialScrollOffset = _this$props2.initialScrollOffset,\n layout = _this$props2.layout;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n layout = _this$props3.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemCount = _this$props4.itemCount,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey$1 : _this$props4$itemKey,\n layout = _this$props4.layout,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n\n var items = [];\n\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n }; // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n\n\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props5 = this.props,\n itemCount = _this$props5.itemCount,\n overscanCount = _this$props5.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _temp;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n\n break;\n\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nfunction useCombinedRefs(...refs) {\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n} // https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\n\n\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function (...args) {\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies = [value]) {\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\n\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return `${prefix}-${id}`;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return (object, ...adjustments) => {\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return `translate3d(${x ? Math.round(x) : 0}px, ${y ? Math.round(y) : 0}px, 0)`;\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return `scaleX(${scaleX}) scaleY(${scaleY})`;\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString({\n property,\n duration,\n easing\n }) {\n return `${property} ${duration}ms ${easing}`;\n }\n\n }\n});\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\n\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nconst hiddenStyles = {\n display: 'none'\n};\n\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React__default.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nconst visuallyHidden = {\n position: 'fixed',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n};\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement\n } = _ref;\n return React__default.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of ');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React__default.createElement(React__default.Fragment, null, React__default.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React__default.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n/**\r\n * Returns the distance between two points\r\n */\n\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\n\n\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\n\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n getComputedStyle\n } = getWindow(element);\n const {\n transform,\n transformOrigin\n } = getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const {\n getComputedStyle\n } = getWindow(node);\n const computedStyle = getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\n\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\n\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\n\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\n\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\n\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\n\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\n\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter]\n};\n\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\n\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n return;\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates);\n\n if (!activated && activationConstraint) {\n // Constraint validation\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n\n return;\n }\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onEnd\n } = this.props;\n this.detach();\n onEnd();\n }\n\n handleCancel() {\n const {\n onCancel\n } = this.props;\n this.detach();\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\n\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\n\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\n\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\nconst events$2 = {\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\n\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\n\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\n\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id !== null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id === null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\n\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [containerIdsScheduledForMeasurement, setContainerIdsScheduledForMeasurement] = useState(null);\n const measuringScheduled = containerIdsScheduledForMeasurement != null;\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setContainerIdsScheduledForMeasurement(value => value ? value.concat(ids) : ids);\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n const ids = containerIdsScheduledForMeasurement;\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || ids != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (ids && ids.length > 0 && !ids.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, containerIdsScheduledForMeasurement, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n requestAnimationFrame(() => measureDroppableContainers());\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (measuringScheduled) {\n setContainerIdsScheduledForMeasurement(null);\n }\n }, [measuringScheduled]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, measureRect] = useReducer(reducer, null);\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n\n function reducer(currentRect) {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref; // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n\n\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n }\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\n\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\n\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, measureRects] = useReducer(reducer, defaultValue$2);\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n\n if (elements.length > 0 && rects === defaultValue$2) {\n measureRects();\n }\n\n useIsomorphicLayoutEffect(() => {\n if (elements.length) {\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n }\n }, [elements]);\n return rects;\n\n function reducer() {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n }\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (!state.draggable.active) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n unstable_batchedUpdates(() => {\n setActiveSensor(sensorInstance);\n setActivatorEvent(event.nativeEvent);\n });\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React__default.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React__default.createElement(InternalContext.Provider, {\n value: internalContext\n }, React__default.createElement(PublicContext.Provider, {\n value: publicContext\n }, React__default.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React__default.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React__default.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX$1 = 'Droppable';\n\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\n\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useIsomorphicLayoutEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React__default.createElement(React__default.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React__default.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React__default.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition$1 = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition$1\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React__default.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\n\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\n\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React__default.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React__default.createElement(NullifiedContextProvider, null, React__default.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React__default.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\n\nfunction arrayMove(array, from, to) {\n const newArray = array.slice();\n newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n return items.reduce((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction normalizeDisabled(disabled) {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled\n };\n }\n\n return disabled;\n}\n\nconst rectSortingStrategy = _ref => {\n let {\n rects,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const newRects = arrayMove(rects, overIndex, activeIndex);\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n}; // To-do: We should be calculating scale transformation\n\n\nconst defaultScale$1 = {\n scaleX: 1,\n scaleY: 1\n};\n\nconst verticalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n ...defaultScale$1\n };\n }\n\n const itemGap = getItemGap$1(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale$1\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale$1\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale$1\n };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n const currentRect = clientRects[index];\n const previousRect = clientRects[index - 1];\n const nextRect = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n }\n\n return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React__default.createContext({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false\n }\n});\n\nfunction SortableContext(_ref) {\n let {\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false\n } = _ref;\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n measuringScheduled\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging && !measuringScheduled) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers, measuringScheduled]);\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n const contextValue = useMemo(() => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n return React__default.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n let {\n id,\n items,\n activeIndex,\n overIndex\n } = _ref;\n return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\n\nconst defaultAnimateLayoutChanges = _ref2 => {\n let {\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition\n } = _ref2;\n\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\n\nconst defaultTransition = {\n duration: 200,\n easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear'\n});\nconst defaultAttributes = {\n roleDescription: 'sortable'\n};\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n let {\n disabled,\n index,\n node,\n rect\n } = _ref;\n const [derivedTransform, setDerivedtransform] = useState(null);\n const previousIndex = useRef(index);\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true\n });\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n useEffect(() => {\n if (derivedTransform) {\n requestAnimationFrame(() => {\n setDerivedtransform(null);\n });\n }\n }, [derivedTransform]);\n return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n let {\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition\n } = _ref;\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy\n } = useContext(Context);\n const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n const index = items.indexOf(id);\n const data = useMemo(() => ({\n sortable: {\n containerId,\n index,\n items\n },\n ...customData\n }), [containerId, customData, index, items]);\n const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig\n }\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform\n } = useDraggable({\n id,\n data,\n attributes: { ...defaultAttributes,\n ...userDefinedAttributes\n },\n disabled: disabled.draggable\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy != null ? localStrategy : globalStrategy;\n const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index\n }) : null;\n const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n id,\n items,\n activeIndex,\n overIndex\n }) : index;\n const activeId = active == null ? void 0 : active.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null\n });\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect\n });\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId && !previous.current.activeId) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform != null ? derivedTransform : finalTransform,\n transition: getTransition()\n };\n\n function getTransition() {\n if ( // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n itemsHaveChanged && previous.current.newIndex === index) {\n return disabledTransition;\n }\n\n if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({ ...transition,\n property: transitionProperty\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n var _localDisabled$dragga, _localDisabled$droppa;\n\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false\n };\n }\n\n return {\n draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n };\n}\n\n[KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nexport { CSS as C, DndContext as D, ErrorBoundary as E, FixedSizeList as F, KeyboardCode as K, Ne as N, Pe as P, SortableContext as S, Ye as Y, PointerSensor as a, KeyboardSensor as b, classNames as c, de as d, useSensors as e, useSensor as f, closestCenter as g, DragOverlay as h, arrayMove as i, useSortable as u, verticalListSortingStrategy as v };","/** Function that returns either white or black depending on which has higher contrast with the specified color */\nfunction contrastColor(color) {\n if (!color) {\n return '#000';\n }\n\n const rgb = color.match(/\\d+/g);\n\n if (!rgb) {\n return '#000';\n }\n\n const r = parseInt(rgb[0], 10);\n const g = parseInt(rgb[1], 10);\n const b = parseInt(rgb[2], 10);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n}\n\nexport { contrastColor as c };","import React__default, { useEffect, useRef, useState, useCallback, useLayoutEffect, useMemo, forwardRef, useContext, createContext, useImperativeHandle } from 'react';\nimport { c as classNames, E as ErrorBoundary, F as FixedSizeList, N as Ne, d as de, Y as Ye, P as Pe, u as useSortable, C as CSS, K as KeyboardCode, a as PointerSensor$1, b as KeyboardSensor$1, e as useSensors, f as useSensor, D as DndContext, g as closestCenter, S as SortableContext, v as verticalListSortingStrategy, h as DragOverlay, i as arrayMove } from './vendor-3a2071be.js';\nimport { createUseStyles, useTheme } from 'react-jss';\nimport { sanitizeString } from '@sm/utils';\nimport { uniqueId, visuallyHidden as visuallyHidden$1 } from '@wds/utils';\nimport ReactDOM from 'react-dom';\nimport { defineMessages, t, T, L10NContext } from '@sm/intl';\nimport getFontWeights from '@sm/webassets/dist/components/SurveyTheme/getFontWeights';\nimport { c as contrastColor } from './theme-22bba55b.js';\nimport isDark from '@sm/webassets/dist/components/SurveyTheme/isDark';\nconst useStyles$W = createUseStyles({\n rowStyles: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center'\n }\n});\n\nfunction Row({\n id,\n className,\n children,\n ...props\n}) {\n const {\n rowStyles\n } = useStyles$W();\n return React__default.createElement(\"div\", {\n id: id,\n className: classNames(rowStyles, className),\n ...props\n }, children);\n}\n\nconst useStyles$V = createUseStyles(theme => {\n var _a, _b;\n\n return {\n tooltip: {\n 'span[data-tooltip] &': {\n display: 'none'\n },\n [`@media (min-width: ${(_b = (_a = theme.breakpoints) === null || _a === void 0 ? void 0 : _a.md.min) !== null && _b !== void 0 ? _b : '769px'})`]: {\n 'span[data-tooltip]:hover &, span[data-tooltip]:focus &': {\n display: 'inline-block'\n }\n },\n position: 'absolute',\n left: ({\n center\n }) => center,\n bottom: 20,\n width: 275,\n transform: 'translate(-50%, -5px)',\n textAlign: 'center',\n zIndex: 12,\n fontSize: 13,\n '&:after': {\n position: 'absolute',\n bottom: -4,\n left: '50%',\n width: 10,\n height: 10,\n backgroundColor: 'white',\n content: '\"\"',\n marginLeft: -5,\n transform: 'rotate(45deg)',\n boxShadow: [[3, 5, 5, 'rgb(0 0 0 / 0.07)']],\n zIndex: 13\n }\n },\n tooltipBody: {\n display: 'inline-block',\n maxWidth: 275,\n color: 'black',\n fontWeight: 300,\n fontFamily: theme.fontFamily,\n fontStyle: 'normal',\n boxShadow: [[0, 2, 10, 0, 'rgb(0 0 0 / 0.14)']],\n background: 'white',\n padding: [[12, 16]],\n lineHeight: 1.4,\n borderRadius: 2,\n textAlign: 'left'\n }\n };\n});\nconst defaultSelectors = ['a[href]', 'button', 'textarea', 'input:not([type=\"hidden\"])', 'select', 'details', '[tabindex]:not([tabindex=\"-1\"])'];\n\nconst useFocusTrap = ({\n selectors = defaultSelectors\n} = {}) => {\n const focusRef = React__default.useRef(null);\n const [focusableEls, setEls] = React__default.useState([]);\n React__default.useEffect(() => {\n if (focusRef.current) {\n const els = Array.from(focusRef.current.querySelectorAll(selectors.join(',')));\n setEls(els);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [focusRef]);\n\n function handleFocus(e) {\n if (focusRef.current) {\n const focusableElements = focusableEls;\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n\n React__default.useEffect(() => {\n const handleKeyDown = e => {\n if (e.key === 'Tab') {\n handleFocus(e);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n });\n return focusRef;\n};\n\nconst useStyles$U = createUseStyles(theme => {\n var _a;\n\n return {\n modalOverlay: {\n zIndex: 999,\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: 'rgba(0,0,0,0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end'\n },\n modal: {\n position: 'relative',\n width: '85vw',\n minHeight: '20vw',\n marginBottom: 20,\n background: 'white',\n borderRadius: 2\n },\n closeBtn: {\n position: 'absolute',\n cursor: 'pointer',\n background: 'transparent',\n right: 0,\n border: 0,\n padding: 8,\n marginTop: 0,\n color: 'black',\n zIndex: 105\n },\n tooltipText: {\n color: ((_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.color) || '#333E48',\n fontFamily: theme.fontFamily,\n fontSize: 13,\n fontWeight: 400,\n lineHeight: '1.4',\n padding: [28, 12, 16]\n }\n };\n});\nconst COPY$d = defineMessages({\n CLOSE_MODAL: {\n id: 'Modal.CloseModal',\n defaultMessage: 'Close tooltip',\n description: '[Type: label][Vis: Med] - close button text'\n }\n});\n\nfunction Modal({\n tooltip,\n closeModal\n}) {\n const {\n modalOverlay,\n closeBtn,\n modal,\n tooltipText\n } = useStyles$U();\n const closeRef = React__default.useRef(null);\n const tooltipId = uniqueId('tooltip-modal');\n const focusRef = useFocusTrap();\n\n const handleClick = e => {\n // click on button or overlay should close modal\n e.stopPropagation();\n\n if (e.currentTarget === e.target) {\n closeModal();\n }\n };\n\n React__default.useEffect(() => {\n // listen for ESC to close modal\n const handleKeydown = e => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n closeModal();\n }\n };\n\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [closeModal]);\n React__default.useEffect(() => {\n var _a;\n\n (_a = closeRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, []);\n return React__default.createElement(\"div\", {\n className: modalOverlay,\n onClick: handleClick,\n \"aria-hidden\": \"true\"\n }, React__default.createElement(\"div\", {\n ref: focusRef,\n className: modal,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-describedby\": tooltipId\n }, React__default.createElement(\"button\", {\n type: \"button\",\n className: closeBtn,\n ref: closeRef,\n onClick: handleClick,\n \"aria-label\": t(COPY$d.CLOSE_MODAL)\n }, \"\\u00D7\"), React__default.createElement(\"p\", {\n id: tooltipId,\n className: tooltipText\n }, tooltip)));\n}\n/** Displays a tooltip on hover for large screens and a modal on click for small screens */\n\n\nconst Tooltip = ({\n container,\n className,\n id = ''\n}) => {\n var _a;\n /** container center position to display tooltip */\n\n\n const center = container.offsetWidth / 2;\n const text = (_a = container.getAttribute('data-tooltip')) !== null && _a !== void 0 ? _a : '';\n const theme = useTheme();\n const {\n tooltip,\n tooltipBody\n } = useStyles$V({\n center\n });\n const [showModal, setShowModal] = React__default.useState(false);\n const [mode, setMode] = React__default.useState('TOOLTIP');\n\n const closeModal = () => {\n setShowModal(false);\n container.focus();\n };\n\n React__default.useEffect(() => {\n container.setAttribute('role', 'tooltip'); // make tooltip anchor focusable\n\n if (!container.hasAttribute('tabIndex')) {\n container.setAttribute('tabIndex', '0');\n } // opens modal if matches small screen breakpoint\n\n\n const openModal = () => {\n var _a, _b;\n\n const mql = window.matchMedia(`(max-width: ${(_b = (_a = theme === null || theme === void 0 ? void 0 : theme.breakpoints) === null || _a === void 0 ? void 0 : _a.md.min) !== null && _b !== void 0 ? _b : '769px'})`);\n\n if (mql.matches) {\n setMode('MODAL');\n setShowModal(true);\n } else {\n setMode('TOOLTIP');\n }\n };\n\n const handleClick = () => {\n openModal();\n };\n\n const handleKeydown = e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n openModal();\n }\n }; // listen for click, ENTER or SPACE to open modal\n\n\n container.addEventListener('click', handleClick);\n container.addEventListener('keydown', handleKeydown);\n return () => {\n container.removeEventListener('click', handleClick);\n container.removeEventListener('keydown', handleKeydown);\n };\n }, [container, theme]);\n const modalEl = showModal ? React__default.createElement(Modal, {\n tooltip: text,\n closeModal: closeModal\n }) : null;\n const tooltipEl = React__default.createElement(\"div\", {\n className: classNames(tooltip, className)\n }, React__default.createElement(\"span\", {\n id: id,\n className: tooltipBody,\n \"aria-hidden\": \"true\"\n }, text));\n const child = mode === 'MODAL' ? modalEl : tooltipEl;\n const containerEl = mode === 'MODAL' ? document.body : container;\n return ReactDOM.createPortal(child, containerEl);\n};\n\nconst listSpacing = {\n margin: [16, 0],\n padding: [0, 0, 0, 40]\n};\nconst mediaReset = {\n border: 0,\n maxWidth: '100%'\n};\nconst useStyles$T = createUseStyles({\n richTextContent: {\n // Typography\n '& a': {\n // Links are not themed by default. Users must select a link color in the editor\n color: 'blue',\n textDecoration: 'underline',\n '&:hover': {\n cursor: 'pointer'\n },\n '&:focus': {\n outline: 'currentColor auto 1px'\n }\n },\n '& ol': { ...listSpacing,\n listStyleType: 'decimal'\n },\n '& ul': { ...listSpacing,\n listStyle: 'disc outside none',\n '& ul li': {\n listStyle: 'circle'\n }\n },\n '& p': {\n margin: [13, 0]\n },\n '& b': {\n fontWeight: 'bold'\n },\n '& strong': {\n fontWeight: 'bold'\n },\n '& em': {\n fontStyle: 'italic'\n },\n '& i': {\n fontStyle: 'italic'\n },\n '& big': {\n fontSize: 'larger'\n },\n '& small': {\n fontSize: 'smaller'\n },\n '& sup': {\n fontSize: '75%',\n lineHeight: 0,\n position: 'relative',\n top: '-0.5em',\n verticalAlign: 'baseline'\n },\n // Media embeds\n '& iframe': mediaReset,\n '& img': { ...mediaReset,\n height: 'auto',\n '-ms-interpolation-mode': 'bicubic'\n },\n '& span[data-tooltip]': {\n position: 'relative',\n display: 'inline',\n borderBottom: [[1, 'dashed']],\n textDecoration: 'inherit',\n cursor: 'pointer'\n }\n }\n}); // Support iframe video embeds and their matching attributes\n\nconst sanitizeOptions = {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: ['target', 'allow', 'allowfullscreen', 'frameborder', 'sandbox', 'scrolling']\n};\n\nfunction RichText({\n id: elementId,\n element: Element = 'div',\n text,\n className,\n ...containerProps\n}) {\n const {\n richTextContent\n } = useStyles$T();\n const [tooltipNodes, setTooltipNodes] = React__default.useState([]);\n const tooltipRef = React__default.useRef(null);\n React__default.useEffect(() => {\n if (tooltipRef === null || tooltipRef === void 0 ? void 0 : tooltipRef.current) {\n const el = tooltipRef === null || tooltipRef === void 0 ? void 0 : tooltipRef.current;\n setTooltipNodes(Array.from(el.querySelectorAll('[data-tooltip]')));\n }\n }, []);\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(Element, {\n id: elementId,\n className: classNames(richTextContent, className),\n dangerouslySetInnerHTML: {\n __html: sanitizeString(text, sanitizeOptions)\n },\n ref: tooltipRef,\n translate: \"no\",\n ...containerProps\n }), tooltipNodes.map(container => {\n const id = uniqueId('rich-text-tooltip');\n container.setAttribute('aria-describedby', id);\n return React__default.createElement(Tooltip, {\n key: id,\n container: container,\n id: id\n });\n }));\n}\n\nconst useStyles$S = createUseStyles(theme => ({\n wdsIcons: ({\n color,\n size\n }) => {\n var _a, _b, _c;\n\n const fontSize = size ? {\n fontSize: theme.iconSize[size]\n } : {\n fontSize: 'inherit'\n };\n const chosenColor = // @ts-expect-error Fallback styles are acceptable\n ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.text[color]) || ((_c = (_b = theme.palette) === null || _b === void 0 ? void 0 : _b[color]) === null || _c === void 0 ? void 0 : _c.main) || 'currentColor';\n return { ...fontSize,\n width: '1em',\n height: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n fill: chosenColor\n };\n }\n})); // https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\n\nconst getDisplayName = Component => Component.displayName || Component.name || 'Component';\n\nfunction withIcon(Component) {\n function WithIcon({\n color,\n title,\n size,\n ...rest\n }) {\n const classes = useStyles$S({\n color,\n size\n });\n return React__default.createElement(\"svg\", {\n className: classes.wdsIcons,\n viewBox: \"0 0 16 16\",\n preserveAspectRatio: \"xMidYMid\",\n \"aria-label\": title,\n role: title ? 'img' : 'presentation',\n ...rest\n }, React__default.createElement(Component, null));\n }\n\n WithIcon.displayName = `WithIcon(${getDisplayName(Component)})`;\n\n WithIcon.getOriginalComponent = () => Component;\n\n return WithIcon;\n}\n\nconst useSurveyIconStyles = createUseStyles({\n svgContainer: {\n display: 'inline-block',\n width: '1em',\n height: '1em'\n }\n});\nlet instance = 0;\n\nfunction withSvgIcon(Component, displayName = 'SvgElement') {\n function SvgIcon({\n id,\n 'aria-labelledby': ariaLabelledBy,\n title,\n viewBox = '0 0 16 16',\n className,\n ...props\n }) {\n instance += 1;\n const styles = useSurveyIconStyles();\n const hasTitle = !!title && !ariaLabelledBy;\n const iconTitleId = id ? `${id}-icon-title` : `icon-title-${instance}`;\n return React__default.createElement(\"svg\", {\n className: classNames(styles.svgContainer, className),\n viewBox: viewBox,\n preserveAspectRatio: \"xMidYMid\",\n \"aria-hidden\": hasTitle ? undefined : true,\n \"aria-labelledby\": hasTitle ? iconTitleId : ariaLabelledBy,\n role: hasTitle ? 'img' : undefined,\n focusable: \"false\",\n ...props,\n \"data-testid\": displayName\n }, hasTitle && React__default.createElement(\"title\", {\n id: iconTitleId\n }, title), React__default.createElement(Component, null));\n }\n\n SvgIcon.displayName = displayName;\n return SvgIcon;\n}\n\nfunction DocumentXIconPath() {\n return React__default.createElement(\"path\", {\n d: \"m5.94.005 8.012.012C14.53.018 15 .487 15 1.067V14.95c0 .58-.47 1.05-1.05 1.05H2.05C1.47 16 1 15.53 1 14.95V4.94L5.94.004zM7 1.505V4.95c0 .541-.41.987-.936 1.044L5.95 6H2.5v8.5h11V1.514L7 1.505zM6.557 7.53 8 8.973 9.443 7.53a.765.765 0 0 1 1.083 1.082l-1.444 1.443 1.444 1.444a.765.765 0 0 1-1.083 1.082L8 11.138 6.557 12.58A.765.765 0 1 1 5.474 11.5l1.444-1.444-1.444-1.443A.765.765 0 1 1 6.557 7.53zM5.5 2.563 3.561 4.5H5.5V2.562z\"\n });\n}\n\nvar IconDocumentX = withIcon(DocumentXIconPath);\nconst useStyles$R = createUseStyles(theme => {\n var _a, _b;\n\n return {\n fallbackComponent: {\n fontFamily: (_b = (_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.fontFamily) !== null && _b !== void 0 ? _b : {},\n color: theme.questionColor,\n border: `1px solid ${theme.questionColor}`,\n borderRadius: '5px',\n width: '100%',\n height: '100%',\n minHeight: '220px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& svg': {\n fill: theme.questionColor\n }\n },\n errorMessage: {\n marginLeft: `8px` // equivalent to wrench theme.spacing[2]\n\n }\n };\n});\nconst COPY$c = defineMessages({\n ERROR: {\n id: 'FallbackComponent.ERROR',\n defaultMessage: 'Error loading question',\n description: '[Type: label][Vis: high] - error message indicating a question could not be loaded'\n }\n});\n\nfunction FallbackComponent() {\n const {\n fallbackComponent,\n errorMessage\n } = useStyles$R();\n return React__default.createElement(\"div\", {\n className: fallbackComponent\n }, React__default.createElement(IconDocumentX, null), React__default.createElement(\"p\", {\n className: errorMessage\n }, t(COPY$c.ERROR)));\n}\n\nconst withErrorBoundary = Component => {\n const displayName = Component.displayName || Component.name || 'Component';\n\n function ComponentWithErrorBoundary(props) {\n return React__default.createElement(ErrorBoundary, {\n FallbackComponent: FallbackComponent\n }, React__default.createElement(Component, { ...props\n }));\n }\n\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n return ComponentWithErrorBoundary;\n};\n\nconst createFieldId = questionId => `question-field-${questionId}`;\n\nconst createLegendId = questionId => `question-title-legend-${questionId}`;\n\nconst createErrorRowId = questionId => `error-row-${questionId}`;\n\nconst createErrorId = questionId => `${questionId}-validation-message`;\n/**\n * Hook to split question-choices by type and filter for visibility\n */\n\n\nfunction useQuestionChoices(choices = []) {\n const options = choices.filter(c => !!c && c.visible);\n return {\n options,\n\n /** Standard answer options */\n sortableOptions: options.filter(c => !c.type),\n\n /** None-Of-The-Above (NOTA) option */\n notaOption: options.find(c => c.type === 'NOTA'),\n\n /** Other answer option */\n otherOption: options.find(c => c.type === 'ANSWER'),\n\n /** Other comment option */\n commentOption: options.find(c => c.type === 'COMMENT')\n };\n}\n\nconst useStyles$Q = createUseStyles(theme => {\n var _a;\n\n return {\n button: {\n color: theme.nextButton.color,\n backgroundColor: theme.nextButton.backgroundColor,\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontSize: 15,\n border: [1, 'solid', 'transparent'],\n borderRadius: 2,\n padding: [1, 6],\n maxWidth: '100%',\n minWidth: 60,\n minHeight: 40,\n cursor: 'pointer',\n overflowWrap: 'break-word',\n transition: `all .2s linear`,\n '&:focus, &:hover': {\n outlineOffset: 5,\n outline: `1px solid ${theme.answerColor}`,\n // Safari seems to have an outline bug, may not render without boxshadow\n boxShadow: '0 0 4px transparent'\n }\n }\n };\n});\nconst COPY$b = defineMessages({\n OK_LABEL: {\n id: 'Button.OK_LABEL',\n defaultMessage: 'OK',\n description: '[Type: button][Vis: high] - question ok label'\n }\n}); // This might need to be a prop later once confirmed\n\nconst MAX_LENGTH = 20;\n\nfunction Button({\n text = t(COPY$b.OK_LABEL),\n type = 'button',\n className,\n ...props\n}) {\n const {\n button\n } = useStyles$Q();\n const slicedText = text.length <= MAX_LENGTH ? text : text.slice(0, MAX_LENGTH);\n return (// eslint-disable-next-line react/button-has-type\n React__default.createElement(\"button\", {\n className: classNames(button, className),\n type: type,\n ...props\n }, slicedText)\n );\n}\n/** Referentially stable empty function\n *\n * e.g. as default or placeholder */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n\n\nconst EmptyFn = () => {};\n/* eslint-disable no-param-reassign, no-plusplus */\n\n/**\n * @name EasingFunctions- Useful easing equations\n * @comment only considering the t value for the range [0, 1] => [0, 1]\n */\n\n\nconst easingFunctions = {\n /** @comment linear - no easing, no acceleration */\n linear: t => t,\n\n /** @comment easeInQuad - accelerating from zero velocity */\n easeInQuad: t => t * t,\n\n /** @comment easeOutQuad - decelerating to zero velocity */\n easeOutQuad: t => t * (2 - t),\n\n /** @comment easeInOutQuad - acceleration until halfway, then deceleration */\n easeInOutQuad: t => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,\n\n /** @comment easeInCubic - accelerating from zero velocity */\n easeInCubic: t => t * t * t,\n\n /** @comment easeOutCubic - decelerating to zero velocity */\n easeOutCubic: t => --t * t * t + 1,\n\n /** @comment easeInOutCubic - acceleration until halfway, then deceleration */\n easeInOutCubic: t => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n\n /** @comment easeInQuart - accelerating from zero velocity */\n easeInQuart: t => t * t * t * t,\n\n /** @comment easeOutQuart - decelerating to zero velocity */\n easeOutQuart: t => 1 - --t * t * t * t,\n\n /** @comment easeInOutQuart - acceleration until halfway, then deceleration */\n easeInOutQuart: t => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,\n\n /** @comment easeInQuint - accelerating from zero velocity */\n easeInQuint: t => t * t * t * t * t,\n\n /** @comment easeOutQuint - decelerating to zero velocity */\n easeOutQuint: t => 1 + --t * t * t * t * t,\n\n /** @comment easeInOutQuint - acceleration until halfway, then deceleration */\n easeInOutQuint: t => t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t\n};\n/**\n * Given a start/end point of a scroll and time elapsed, calculate the scroll position we should be at\n */\n\nfunction getValue(start, end, elapsed, duration, easingType = 'linear') {\n if (elapsed > duration) {\n return end;\n }\n\n const easing = typeof easingType === 'string' ? easingFunctions[easingType] : easingType;\n return start + (end - start) * easing(elapsed / duration);\n}\n/**\n * Smoothly animate between two values\n */\n\n\nfunction animate({\n fromValue,\n toValue,\n onStart,\n onUpdate,\n onComplete,\n duration = 600,\n delay = 0,\n easingType = 'easeOutQuart'\n}) {\n const startTime = performance.now() + delay;\n\n const tick = () => {\n const elapsed = performance.now() - startTime;\n const time = getValue(fromValue, toValue, elapsed, duration, easingType);\n const callback = elapsed <= duration ? tick : onComplete !== null && onComplete !== void 0 ? onComplete : EmptyFn;\n\n const updateAnimation = () => {\n onUpdate(time, callback);\n };\n\n window.requestAnimationFrame(updateAnimation);\n };\n\n onStart === null || onStart === void 0 ? void 0 : onStart();\n\n if (delay > 0) {\n setTimeout(() => {\n tick();\n }, delay);\n } else {\n tick();\n }\n}\n\nconst useStyles$P = createUseStyles({\n visuallyHidden: visuallyHidden$1\n});\n\nfunction VisuallyHidden$1({\n children,\n element: Element\n}) {\n const {\n visuallyHidden\n } = useStyles$P();\n return React__default.createElement(Element, {\n className: visuallyHidden\n }, children);\n}\n\nconst useStyles$O = createUseStyles({\n paddingBox: ({\n padding,\n width\n }) => {\n return {\n paddingTop: (padding === null || padding === void 0 ? void 0 : padding.top) || 0,\n paddingBottom: (padding === null || padding === void 0 ? void 0 : padding.bottom) || 0,\n paddingLeft: (padding === null || padding === void 0 ? void 0 : padding.left) || 0,\n paddingRight: (padding === null || padding === void 0 ? void 0 : padding.right) || 0,\n width: width ? `${width.width}${width.format === 'PERCENT' ? '%' : 'px'}` : '100%',\n maxWidth: '100%'\n };\n }\n});\n\nfunction QuestionSpacing({\n padding,\n width,\n children,\n ...props\n}) {\n const {\n paddingBox\n } = useStyles$O({\n padding,\n width\n });\n return React__default.createElement(\"div\", {\n className: paddingBox,\n \"data-testid\": \"QuestionSpacing__paddingBox\",\n ...props\n }, children);\n}\n/**\n * Hook that calls the provided callback function when the ref element is blurred,\n * only if the next focus is outside the ref element\n *\n * @example\n * const ref = useRef(null);\n * useOnFocusLeave(ref, ()=> onLeaveQuestion());\n *
\n */\n\n\nfunction useOnFocusLeave(ref, focusCallback) {\n useEffect(() => {\n const ele = ref === null || ref === void 0 ? void 0 : ref.current;\n\n function handleFocus(e) {\n if (!(ele === null || ele === void 0 ? void 0 : ele.contains(e.relatedTarget))) {\n focusCallback(ref);\n }\n }\n\n ele === null || ele === void 0 ? void 0 : ele.addEventListener('focusout', handleFocus);\n return () => {\n ele === null || ele === void 0 ? void 0 : ele.removeEventListener('focusout', handleFocus);\n };\n }, [ref, focusCallback]);\n}\n\nconst useStyles$N = createUseStyles({\n footerRow: ({\n hasFooterPadding\n }) => ({\n paddingTop: hasFooterPadding ? 20 : 0\n }),\n containerStyles: {\n position: 'relative',\n transition: 'opacity 500ms ease-out'\n },\n errorRow: {\n overflow: 'hidden'\n },\n formReset: {\n border: 0,\n minWidth: 0\n },\n headerRow: {\n marginBottom: 24,\n width: '100%'\n }\n});\nconst COPY$a = defineMessages({\n QUESTION_TITLE: {\n id: 'QuestionFieldLayoutTemplate.QUESTION_TITLE',\n defaultMessage: 'Question Title',\n description: '[Type: Label][Vis: low] - question landmark for screen readers only'\n }\n});\n\nfunction QuestionFieldLayoutTemplate({\n footer,\n hasFooterPadding,\n children,\n clickShield,\n error,\n id,\n padding,\n width = {\n width: 100,\n format: 'PERCENT'\n },\n title,\n onSubmit,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onLeave = () => {},\n ...props\n}) {\n const {\n footerRow,\n containerStyles,\n formReset,\n errorRow,\n headerRow\n } = useStyles$N({\n hasFooterPadding,\n clickShield\n });\n const containerRef = useRef(null);\n const errorRef = useRef(null);\n /** Keep track of last error to enable error-hiding animation */\n\n const [lastShownError, setLastShownError] = useState(error);\n const handleKeydown = useCallback(event => {\n if (event.key === 'Enter') {\n onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit();\n }\n }, [onSubmit]);\n /**\n * resolves double height animate issue with RAWR-1240\n */\n\n const isAnimating = useRef(false);\n useLayoutEffect(() => {\n const el = errorRef.current;\n\n if (!el || isAnimating.current) {\n return;\n }\n\n const hasError = !!error;\n const initialHeight = el.offsetHeight;\n el.style.height = 'auto'; // remove height to measure full size\n\n const {\n offsetHeight\n } = el;\n const fromValue = hasError ? 0 : offsetHeight;\n const toValue = hasError ? offsetHeight : 0; // don't animate if value is already correct (e.g. at initial load)\n\n if (initialHeight === toValue) {\n el.style.height = `${initialHeight}px`;\n return;\n }\n\n el.style.height = `${initialHeight}px`;\n animate({\n fromValue,\n toValue,\n duration: 300,\n delay: 200,\n onUpdate: (height, next) => {\n el.style.height = `${height}px`;\n next();\n },\n onStart: () => {\n isAnimating.current = true;\n },\n onComplete: () => {\n setLastShownError(error);\n isAnimating.current = false;\n }\n });\n }, [error]);\n const fieldsetRef = useRef(null);\n useOnFocusLeave(fieldsetRef, onLeave);\n useEffect(() => {\n const {\n current: container\n } = containerRef;\n container === null || container === void 0 ? void 0 : container.addEventListener('keydown', handleKeydown);\n return () => {\n return container === null || container === void 0 ? void 0 : container.removeEventListener('keydown', handleKeydown);\n };\n }, [containerRef, handleKeydown]);\n /**\n * This id is queried in RespWeb to calculate the offset for scroll-to-error animations in classic mode\n * ref: https://code.corp.surveymonkey.com/webplatform/smweb/pull/10725\n */\n\n let errorRowId;\n /** used in RespWeb for OQAATView */\n\n let fieldId;\n /** used in RespWeb for OQAATView */\n\n let questionTitleId;\n\n if (id) {\n errorRowId = createErrorRowId(id);\n fieldId = createFieldId(id);\n questionTitleId = createLegendId(id);\n }\n\n return React__default.createElement(\"div\", {\n ref: containerRef,\n id: fieldId,\n ...props,\n className: containerStyles\n }, React__default.createElement(VisuallyHidden$1, {\n element: \"div\"\n }, React__default.createElement(T, {\n desc: COPY$a.QUESTION_TITLE\n })), React__default.createElement(QuestionSpacing, {\n padding: padding,\n width: width\n }, React__default.createElement(\"div\", {\n ref: errorRef,\n id: errorRowId,\n className: errorRow\n }, error || lastShownError), React__default.createElement(\"fieldset\", {\n ref: fieldsetRef,\n className: formReset\n }, React__default.createElement(\"legend\", {\n id: questionTitleId,\n className: headerRow,\n tabIndex: -1\n }, title), children), footer && React__default.createElement(\"div\", {\n className: footerRow\n }, footer)));\n}\n/**\n * Calculate the max number of children each column can be filled in the layout\n * @param columns number of columns\n * @param total total child count\n * @description Based on the current implementation in production (as of Jan 20, 2021),\n * - if columns = 1, the max number of children per column = total (render all children vertically)\n * - if columns > 1, the max number of children per column = (total / columns) + 1\n */\n\n\nconst calculateMaxNumOfChildrenPerColumn = (columns, total) => {\n if (columns === 1) {\n return total;\n }\n\n const childrenPerColumn = total / columns;\n\n if (childrenPerColumn % 1 === 0) {\n return childrenPerColumn;\n }\n\n return Math.floor(childrenPerColumn) + 1;\n};\n/**\n * Divide the children array into slices for rendering\n * @param childrenArr - children array\n * @param maxCellsPerCol - maximum number of children per slice\n * @param totalColumns - number of columns\n * @example\n * childrenArr = [option1, option2, option3, option4, option5, option6, option7]\n * childrenPerSlice = 2\n * totalColumns = 3\n * output: [[option1, option2, option3], [option4, option5], [option6, option7]]\n */\n\n\nconst sliceChildren = (childrenArr, maxCellsPerCol, totalColumns) => {\n let index = 0;\n const result = [];\n const partialColumnsCount = totalColumns * maxCellsPerCol - childrenArr.length; // Calculate the number of fullColumns, to conditionally push slice with the correct # of cells\n\n let fullColumnsCount = totalColumns - partialColumnsCount;\n\n while (index < childrenArr.length) {\n if (fullColumnsCount > 0) {\n result.push(childrenArr.slice(index, index + maxCellsPerCol));\n index += maxCellsPerCol;\n } else {\n result.push(childrenArr.slice(index, index + maxCellsPerCol - 1));\n index += maxCellsPerCol - 1;\n }\n\n fullColumnsCount -= 1;\n }\n\n return result;\n};\n\nconst useStyles$M = createUseStyles(theme => ({\n containerVertical: {\n display: 'initial'\n },\n containerHorizontal: {\n display: 'block'\n },\n\n /** shared between horizontal and vertical columns */\n column: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start'\n },\n columnHorizontal: {},\n\n /** Horizontal Column that adjust width to content width */\n columnHorizontalAutoAdjust: {\n width: 'auto'\n },\n [`@media (min-width: ${theme.breakpoints.xs.min})`]: {\n containerVertical: {\n display: 'flex'\n },\n containerHorizontal: {\n display: 'flex',\n flexWrap: 'wrap'\n }\n },\n [`@media only screen and (min-width: ${theme.breakpoints.lg.min})`]: {\n columnHorizontal: {\n width: '19%'\n }\n },\n [`@media (min-width: ${theme.breakpoints.sm.min}) and (max-width: ${theme.breakpoints.md.max})`]: {\n columnHorizontal: {\n width: '24%'\n }\n },\n [`@media only screen and (max-width: ${theme.breakpoints.xxs.max})`]: {\n columnHorizontal: {\n width: '100%',\n display: 'block'\n },\n columnHorizontalAutoAdjust: {\n width: '100%',\n display: 'block'\n }\n },\n answerLayoutCell: ({\n gridCellMargin = '0'\n }) => ({\n margin: gridCellMargin,\n flex: [0, 0, 'auto'],\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }),\n otherLayoutCell: ({\n otherCellMargin = '0'\n }) => ({\n margin: otherCellMargin\n })\n}));\n\nfunction QuestionAnswerLayoutTemplate({\n children,\n columns = 1,\n other,\n noneOfTheAbove,\n adjustToContent = false,\n gridCellMargin,\n otherCellMargin\n}) {\n const {\n containerVertical,\n containerHorizontal,\n column,\n columnHorizontal,\n columnHorizontalAutoAdjust,\n answerLayoutCell,\n otherLayoutCell\n } = useStyles$M({\n columns,\n adjustToContent,\n gridCellMargin,\n otherCellMargin\n });\n const isHorizontal = columns === 'horizontal';\n /* Based on the columns config, divide the question answers\n (children of this component) into column groups for rendering.\n The reason we need to do this is when there are multiple columns,\n the answers are listed vertically instead of horizontally.\n For example:\n If there are 3 answers and 2 columns,\n Then the ordering will be:\n Answer 1 Answer 3\n Answer 2\n NOT:\n Answer 1 Answer 2\n Answer 3\n * though `horizontal` uses this\n \n */\n\n const columnGroups = useMemo(() => {\n const totalChildren = React__default.Children.count(children);\n const totalColumns = columns === 'horizontal' ? totalChildren : columns;\n const childrenArray = React__default.Children.toArray(children);\n\n if (!other && !!noneOfTheAbove && columns !== 'horizontal') {\n childrenArray.push(noneOfTheAbove);\n }\n\n const answersPerColumn = columns === 'horizontal' ? 1 : calculateMaxNumOfChildrenPerColumn(totalColumns, totalChildren + (!other && !!noneOfTheAbove ? 1 : 0));\n return sliceChildren(childrenArray, answersPerColumn, totalColumns);\n }, [children, columns, noneOfTheAbove, other]);\n const columnClassNames = isHorizontal ? [column, adjustToContent ? columnHorizontalAutoAdjust : columnHorizontal] : column;\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(\"div\", {\n className: isHorizontal ? containerHorizontal : containerVertical\n }, columnGroups.map((col, columnIndex) => React__default.createElement(\"div\", {\n key: `col-${columnIndex + 1}`,\n className: classNames(columnClassNames),\n \"data-testid\": \"answer-layout-column\"\n }, col.map((cell, cellIndex) => React__default.createElement(\"div\", {\n key: `cell-${cellIndex + 1}`,\n \"data-testid\": \"answer-layout-cell\",\n className: answerLayoutCell\n }, cell))))), other && React__default.createElement(\"div\", {\n className: otherLayoutCell\n }, other), (other && noneOfTheAbove || columns === 'horizontal') && React__default.createElement(\"div\", {\n className: otherLayoutCell,\n \"data-testid\": \"Other-NOTA\"\n }, noneOfTheAbove));\n}\n\nfunction WarningIcon() {\n return React__default.createElement(\"g\", {\n className: \"warning-icon\"\n }, React__default.createElement(\"path\", {\n className: \"background\",\n transform: \"translate(0 .49999)\",\n d: \"M8.49642,0.635797c.1494.086885.27371.210979.36079.360173L15.8621,12.9978c.2782.4766.1169,1.0883-.3602,1.3662-.1529.0891-.3267.136-.5037.136L1,14.5c-.552285,0-1-.4473-1-.999c0-.1766.046846-.35.135766-.5026L7.1291,0.996589c.27785-.476838.89002-.63837,1.36732-.360792Z\",\n clipRule: \"evenodd\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n stroke: \"none\"\n }), React__default.createElement(\"path\", {\n className: \"foreground\",\n transform: \"translate(.000815 .49999)\",\n d: \"M8,11.2546c-.3797,0-.69349.2794-.74315.6419L7.25,11.9973v.26l.00685.1008C7.30651,12.7206,7.6203,13,8,13s.69349-.2794.74315-.6419L8.75,12.2573v-.26l-.00685-.1008C8.69349,11.534,8.3797,11.2546,8,11.2546ZM8,4c-.3797,0-.69349.2794-.74315.6419L7.25,4.74268v4.54393l.00685.10078c.04966.3625.36345.64191.74315.64191s.69349-.27941.74315-.64191L8.75,9.28661v-4.54393L8.74315,4.6419C8.69349,4.2794,8.3797,4,8,4Z\",\n clipRule: \"evenodd\",\n fill: \"#fff\",\n fillRule: \"evenodd\",\n stroke: \"none\"\n }));\n}\n\nvar WarningIcon$1 = withSvgIcon(WarningIcon, 'WarningIcon');\nconst useStyles$L = createUseStyles(theme => {\n var _a;\n\n return {\n icon: {\n color: '#F05B24',\n fontSize: theme.fontSize.body,\n alignSelf: 'flex-start',\n marginTop: 2,\n flexShrink: 0\n },\n validationMessage: {\n fontFamily: theme.fontFamily,\n lineHeight: 1.5,\n color: '#333e48',\n fontWeight: 400,\n fontSize: 16,\n padding: theme.isDark ? 8 : [4, 0],\n backgroundColor: theme.isDark ? 'rgba(255, 255, 255, 0.9)' : '',\n borderRadius: 2,\n display: 'inline-flex',\n gap: 5,\n alignItems: 'center',\n marginBottom: 8,\n [`@media only screen and (max-width: ${(_a = theme.breakpoints) === null || _a === void 0 ? void 0 : _a.xxs.max})`]: {\n width: '100%',\n padding: theme.isDark ? 4 : [4, 0]\n }\n }\n };\n});\n\nfunction ValidationMessage({\n children,\n id,\n tag: Wrapper = 'span',\n ...props\n}) {\n const {\n icon,\n validationMessage\n } = useStyles$L();\n return React__default.createElement(Wrapper, {\n className: validationMessage,\n \"aria-live\": \"polite\",\n id: id,\n ...props\n }, React__default.createElement(WarningIcon$1, {\n className: icon\n }), React__default.createElement(\"span\", {\n translate: \"no\"\n }, children));\n}\n\nconst useStyles$K = createUseStyles(theme => {\n var _a;\n\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputArea: {\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontWeight: fontWeightOptions.medium,\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px'\n },\n lineHeight: '1.15em',\n padding: '6px 60px 6px 6px',\n maxWidth: '100%',\n [breakpointXsMin]: {\n // extra 66px to account for the padding\n width: ({\n cols\n }) => `calc(${cols}ch + 66px)`\n },\n width: '100%',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n verticalAlign: 'top',\n textSizeAdjust: 'auto',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5\n },\n '&:disabled': {\n opacity: 0.4\n }\n }\n };\n});\n\nfunction TextArea({\n className,\n disabled = false,\n required = false,\n readOnly = false,\n cols = 50,\n ...props\n}, forwardedRef) {\n const {\n inputArea\n } = useStyles$K({\n cols\n });\n return React__default.createElement(\"textarea\", {\n className: classNames(inputArea, className),\n disabled: disabled,\n \"aria-disabled\": disabled,\n required: required,\n \"aria-required\": required,\n readOnly: readOnly,\n \"aria-readonly\": readOnly,\n spellCheck: true,\n ref: forwardedRef,\n ...props\n });\n}\n\nvar TextArea$1 = forwardRef(TextArea);\nconst useStyles$J = createUseStyles(theme => {\n var _a;\n\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputField: {\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px'\n },\n fontWeight: fontWeightOptions.medium,\n lineHeight: '1.5em',\n height: ({\n autoHeight\n }) => autoHeight ? {} : '50px',\n maxWidth: '100%',\n width: '100%',\n [breakpointXsMin]: {\n // extra 12px to account for the padding\n width: ({\n size\n }) => `calc(${size}ch + 12px)`\n },\n padding: '6px',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5\n },\n '&:disabled': {\n opacity: 0.4\n }\n }\n };\n});\n\nfunction TextInput({\n className,\n autoHeight = false,\n size = 50,\n required = false,\n disabled = false,\n readOnly = false,\n onChange: handleChange,\n ...props\n}, forwardedRef) {\n const {\n inputField\n } = useStyles$J({\n autoHeight,\n size\n });\n return React__default.createElement(\"input\", {\n type: \"text\",\n className: classNames(inputField, className),\n disabled: disabled,\n \"aria-disabled\": disabled,\n required: required,\n \"aria-required\": required,\n readOnly: readOnly,\n \"aria-readonly\": readOnly,\n spellCheck: true,\n onChange: handleChange,\n ...props,\n ref: forwardedRef\n });\n}\n\nvar TextInput$1 = forwardRef(TextInput);\nconst useStyles$I = createUseStyles(theme => {\n return {\n commentLabelText: { ...theme.questionBody,\n marginBottom: 5,\n lineHeight: 1.25\n },\n commentLabel: {\n display: 'block'\n }\n };\n});\n\nfunction CommentChoice({\n label,\n lineCount = 3,\n charCount = 50,\n onChange,\n className,\n ...props\n}) {\n const handleChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n\n const {\n commentLabel,\n commentLabelText\n } = useStyles$I();\n const multipleTextLines = lineCount > 1;\n return React__default.createElement(\"div\", {\n className: className\n }, React__default.createElement(\"label\", {\n htmlFor: props.id,\n className: commentLabel,\n tabIndex: -1\n }, React__default.createElement(\"div\", {\n className: commentLabelText\n }, label), multipleTextLines ? React__default.createElement(TextArea$1, {\n onChange: handleChange,\n rows: lineCount,\n cols: charCount,\n ...props\n }) : React__default.createElement(TextInput$1, {\n autoHeight: true,\n onChange: handleChange,\n size: charCount,\n ...props\n })));\n}\n\nconst textReset = {\n margin: 0\n};\nconst useStyles$H = createUseStyles(theme => {\n const {\n fontSize,\n ...questionTitleFormatting\n } = theme.questionTitle;\n const questionTitleFontSize = fontSize !== null && fontSize !== void 0 ? fontSize : {};\n return {\n addonContainer: {\n display: 'inline-block',\n margin: [0, 5],\n verticalAlign: 'text-bottom'\n },\n container: {\n position: 'relative',\n display: 'flex'\n },\n questionNumber: ({\n isRTL\n }) => ({\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n flex: [0, 0]\n }),\n questionTitle: ({\n useDefaultFrontSize\n }) => {\n var _a;\n\n return { ...textReset,\n ...questionTitleFormatting,\n color: ((_a = theme.questionTitle) === null || _a === void 0 ? void 0 : _a.color) || theme.questionColor,\n fontSize: useDefaultFrontSize && !theme.isAccessible ? theme.fontSize.body : questionTitleFontSize,\n lineHeight: 1.25,\n whiteSpace: 'normal',\n wordWrap: 'break-word'\n };\n },\n requiredAsterisk: ({\n isRTL\n }) => ({\n display: 'inline-block',\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0'\n }),\n richText: {\n flex: [1, 0]\n }\n };\n});\n\nfunction RespondentQuestionTitle({\n element: Element = 'div',\n addon,\n heading,\n id,\n number,\n numbered,\n required,\n useDefaultFrontSize = false,\n ...props\n}) {\n const {\n isRTL\n } = useContext(L10NContext);\n const {\n addonContainer,\n container,\n questionNumber,\n questionTitle,\n requiredAsterisk,\n richText\n } = useStyles$H({\n useDefaultFrontSize,\n isRTL\n });\n return React__default.createElement(Element, {\n id: id,\n className: classNames(container, questionTitle),\n translate: \"no\",\n ...props\n }, required && React__default.createElement(\"span\", {\n \"aria-hidden\": true,\n className: requiredAsterisk\n }, \"*\"), numbered && React__default.createElement(\"span\", {\n className: questionNumber\n }, number, \".\"), React__default.createElement(RichText, {\n element: \"span\",\n text: heading,\n className: richText\n }), addon && React__default.createElement(\"span\", {\n className: addonContainer\n }, addon));\n} // default text to be added as a translation to a specific version of Button directly.\n\n\nconst defaultOKConfig = {\n text: 'OK',\n visible: false\n};\n\nfunction QuestionField({\n id,\n title: titleProps,\n okButton: {\n visible: showButton,\n ...okButtonProps\n } = defaultOKConfig,\n error,\n errorId: errorIdProp,\n onLeave,\n padding = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n },\n width,\n children,\n ...props\n}) {\n const errorId = errorIdProp !== null && errorIdProp !== void 0 ? errorIdProp : createErrorId(id);\n return React__default.createElement(QuestionFieldLayoutTemplate, {\n footer: showButton && React__default.createElement(Button, {\n type: \"button\",\n ...okButtonProps\n }),\n hasFooterPadding: true,\n clickShield: false,\n error: error && React__default.createElement(ValidationMessage, {\n id: errorId\n }, error),\n onLeave: onLeave,\n id: id,\n padding: padding,\n width: width,\n title: React__default.createElement(RespondentQuestionTitle, { ...titleProps\n }),\n ...props\n }, children);\n}\n\nfunction useInputStyles({\n onChange,\n ...props\n}) {\n var _a;\n /** extract props without affecting passthrough */\n\n\n const {\n checked: isChecked,\n defaultChecked: isDefaultChecked,\n disabled: isDisabled,\n 'aria-disabled': isAriaDisabled,\n readOnly: isReadOnly,\n 'aria-readonly': isAriaReadOnly\n } = props;\n /** configure style-props */\n\n const disabled = isDisabled || isAriaDisabled === 'true';\n const readOnly = isReadOnly || isAriaReadOnly === 'true';\n const [checked, setIsChecked] = useState((_a = isDefaultChecked !== null && isDefaultChecked !== void 0 ? isDefaultChecked : isChecked) !== null && _a !== void 0 ? _a : false);\n React__default.useEffect(() => {\n setIsChecked(isChecked !== null && isChecked !== void 0 ? isChecked : false);\n }, [isChecked]);\n /** handle change for checked style (controlled/uncontrolled) */\n\n const handleChange = e => {\n setIsChecked(e.target.checked);\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n\n const styleProps = {\n checked,\n disabled,\n readOnly\n };\n const inputProps = { ...props,\n onChange: handleChange\n };\n return {\n styleProps,\n inputProps\n };\n}\n\nconst radioGroupContext = createContext(undefined);\n\nfunction useRadioGroup() {\n return useContext(radioGroupContext);\n}\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps, no-console */\n\n\nfunction throwControlChangeError(isControlled, controlled, name, state) {\n const conState = ['controlled', 'uncontrolled'];\n const stateStr = isControlled ? conState : [...conState].reverse();\n\n if (isControlled !== (controlled !== undefined)) {\n console.error([`@sm/question-ui: A component is changing the ${stateStr[0]} ${state} state of ${name} to be ${stateStr[1]}.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} element for the lifetime of the component.`, \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n}\n\nfunction throwDefaultStateError(isControlled, defaultValue, defaultProp, name, state) {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`@sm/question-ui: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. `, `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n}\n\nfunction useControlledState({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React__default.useRef(controlled !== undefined);\n const [valueState, setValue] = React__default.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n const {\n current: defaultValue\n } = React__default.useRef(defaultProp);\n React__default.useEffect(() => {\n throwControlChangeError(isControlled, controlled, name, state);\n throwDefaultStateError(isControlled, defaultValue, defaultProp, name, state);\n }, [state, name, controlled, defaultProp]);\n }\n\n const setValueIfUncontrolled = React__default.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, [setValue]);\n return [value, setValueIfUncontrolled];\n}\n\nfunction setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n // eslint-disable-next-line no-param-reassign\n ref.current = value;\n }\n}\n/**\n * useForkRef\n * Joins refs together and returns a combination of the two as a new ref\n *\n * @param refA\n * @param refB\n */\n\n\nfunction useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n\n return refValue => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n/**\n * SMQ Tier 3\n */\n\n\nfunction RadioGroup({\n children,\n name: nameProp,\n value: valueProp,\n defaultValue,\n onChange,\n disabled = false,\n readOnly = false,\n ...divProps\n}) {\n const [value, setValueState] = useControlledState({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n\n const handleChange = e => {\n setValueState(e.value);\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n\n const name = nameProp;\n return React__default.createElement(radioGroupContext.Provider // eslint-disable-next-line react/jsx-no-constructed-context-values\n , {\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value: {\n name,\n onChange: handleChange,\n value,\n disabled,\n readOnly\n }\n }, React__default.createElement(\"div\", {\n role: \"radiogroup\",\n ...divProps\n }, children));\n}\n\nconst useStyles$G = createUseStyles({\n inputContainer: {\n display: 'inline-flex',\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n width: '1em',\n minWidth: '1em',\n cursor: 'pointer'\n },\n input: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n opacity: 0.00001,\n zIndex: 1,\n margin: 0,\n cursor: ({\n disabled,\n readOnly\n }) => disabled || readOnly ? 'default' : 'pointer',\n pointerEvents: ({\n disabled,\n readOnly\n }) => disabled || readOnly ? 'none' : undefined\n },\n controlIcon: {\n width: '100%',\n height: '100%',\n opacity: ({\n checked\n }) => checked ? 1 : 0,\n transition: 'opacity .2s linear'\n }\n});\n\nfunction BaseInput({\n element: Element = 'span',\n className,\n icon,\n checked: checkedProp,\n defaultChecked,\n onClick,\n onChange,\n ...inputProps\n}, forwardedRef) {\n /** extract props without affecting passthrough */\n const {\n disabled: disabledProp,\n 'aria-disabled': ariaDisabledProp,\n readOnly: readOnlyProp,\n 'aria-readonly': ariaReadOnlyProp\n } = inputProps;\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const [checked, setChecked] = useControlledState({\n controlled: checkedProp,\n default: defaultChecked,\n state: 'checked',\n name: 'BaseInput'\n });\n\n const handleChange = e => {\n if (e.nativeEvent.defaultPrevented) {\n return;\n }\n\n if (disabled || readOnly) {\n e.preventDefault();\n return;\n }\n\n const newChecked = e.target.checked;\n setChecked(newChecked);\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n\n const handleClick = e => {\n if (disabled || readOnly) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n\n const {\n inputContainer,\n input,\n controlIcon\n } = useStyles$G({\n disabled,\n readOnly,\n checked\n });\n return React__default.createElement(Element, {\n className: classNames(inputContainer, className)\n }, React__default.createElement(\"input\", {\n className: input,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n onChange: handleChange,\n onClick: handleClick,\n ...inputProps,\n ref: forwardedRef\n }), React__default.cloneElement(icon, {\n className: controlIcon\n }));\n}\n\nvar BaseInput$1 = forwardRef(BaseInput);\n\nfunction RadioIcon() {\n return React__default.createElement(\"g\", {\n className: \"radio-icon\"\n }, React__default.createElement(\"ellipse\", {\n fill: \"currentColor\",\n className: \"background\",\n transform: \"translate(8 8)\",\n rx: \"8\",\n ry: \"8\"\n }), React__default.createElement(\"path\", {\n fill: \"#fff\",\n className: \"checkmark\",\n transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\",\n d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\"\n }));\n}\n\nvar RadioIcon$1 = withSvgIcon(RadioIcon, 'RadioIcon');\nconst useStyles$F = createUseStyles(theme => ({\n radioInput: {\n color: theme.isDark ? '#fff' : '#000',\n backgroundColor: ({\n checked\n }) => {\n if (checked) {\n return theme.isDark ? '#fff' : '#000';\n }\n\n return '#fff';\n },\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '100%',\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff'\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff'\n },\n '& input': {\n cursor: 'pointer'\n }\n }\n}));\n\nfunction RadioInput({\n className,\n ...props\n}, forwardedRef) {\n const {\n inputProps,\n styleProps\n } = useInputStyles(props);\n const styles = useStyles$F(styleProps);\n return React__default.createElement(BaseInput$1, {\n type: \"radio\",\n className: classNames(styles.radioInput, className),\n icon: React__default.createElement(RadioIcon$1, null),\n ref: forwardedRef,\n ...inputProps\n });\n}\n\nvar RadioInput$1 = forwardRef(RadioInput); // get the margin top by taking the font size and the line height and divide by 2 to get the margin top\n\nconst marginTopHelper$1 = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\n\nconst useStyles$E = createUseStyles(theme => {\n var _a;\n\n return {\n controlLabel: ({\n checked,\n disabled\n }) => {\n var _a;\n\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked ? theme.input.bgColor : 'transparent',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked ? fontWeightOptions.medium : (_a = theme.questionBody.fontWeight) !== null && _a !== void 0 ? _a : fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor]\n },\n '&:focus-within': {\n background: theme.input.bgColor\n }\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({\n inputSize\n }) => inputSize !== null && inputSize !== void 0 ? inputSize : '1em',\n marginTop: marginTopHelper$1((_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8\n }\n }\n };\n});\n\nfunction Radio({\n children: label = '',\n className,\n onChange,\n checked: checkedProp,\n name: nameProp,\n disabled: disabledProp,\n readOnly: readOnlyProp,\n inputSize,\n ...props\n}, forwardedRef) {\n var _a, _b;\n\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n let name = nameProp;\n\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = radioGroup.value === props.value;\n }\n\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n\n const disabled = (_a = radioGroup === null || radioGroup === void 0 ? void 0 : radioGroup.disabled) !== null && _a !== void 0 ? _a : disabledProp;\n const readOnly = (_b = radioGroup === null || radioGroup === void 0 ? void 0 : radioGroup.readOnly) !== null && _b !== void 0 ? _b : readOnlyProp;\n\n const handleChange = e => {\n const {\n id,\n checked: isChecked,\n value\n } = e.target;\n radioGroup === null || radioGroup === void 0 ? void 0 : radioGroup.onChange({\n id,\n checked: isChecked,\n value\n });\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id,\n checked: isChecked,\n value\n });\n };\n\n const {\n inputProps,\n styleProps\n } = useInputStyles({ ...props,\n name,\n checked,\n disabled,\n readOnly,\n onChange: handleChange\n });\n const {\n controlLabel,\n icon\n } = useStyles$E({ ...styleProps,\n inputSize\n });\n return React__default.createElement(\"label\", {\n tabIndex: -1,\n htmlFor: props.id,\n className: classNames(controlLabel, className)\n }, React__default.createElement(RadioInput$1, { ...inputProps,\n ref: forwardedRef,\n className: icon\n }), React__default.createElement(RichText, {\n element: \"span\",\n text: label\n }));\n}\n\nvar Radio$1 = forwardRef(Radio);\nconst useStyles$D = createUseStyles(theme => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowStyles: {\n borderRadius: '3px',\n textAlign: 'center',\n cursor: 'pointer',\n alignItems: 'center',\n padding: '3px',\n ...theme.questionBody,\n fontSize: '20px'\n },\n rowLabel: {\n margin: [0, 2, 0, 2],\n fontSize: '18px',\n padding: '3px',\n width: ({\n width = 60\n }) => `${width}%`,\n\n /**\n * There is a known jss issue that results in media query\n * checks not occurring for all mapped elements, hence the use of !important\n * https://github.com/cssinjs/jss/issues/1320\n * https://github.com/cssinjs/jss/issues/1327#issuecomment-707967909\n * Because function rules/values have higher source order specificity (rendered after static rules),\n * we're using !important to override that.\n * */\n [breakpointSmMax]: {\n width: ['50%', '!important']\n }\n },\n rowRadio: {\n justifyContent: 'center',\n gap: 0,\n padding: '3px',\n fontSize: 'inherit',\n width: ({\n radioWidth = 20\n }) => `${radioWidth}%`,\n [breakpointSmMax]: {\n width: ['25%', '!important']\n }\n }\n };\n});\n\nfunction BestWorstRow({\n id: rowId,\n label,\n value = null,\n columnIds = [],\n className,\n onChange,\n onClick,\n onKeyDown,\n width,\n ...props\n}) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [bestColId, worstColId] = columnIds;\n const bestRadioId = `${rowId}_${bestColId}`;\n const worstRadioId = `${rowId}_${worstColId}`;\n const labelId = `${rowId}_label`;\n const radioEvents = {\n onClick,\n onKeyDown\n };\n const radioWidth = width !== undefined ? (100 - width) / 2 : DEFAULT_RADIO_WIDTH;\n\n const handleChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: rowId,\n value: e.value,\n checked: e.checked\n });\n };\n\n const {\n rowStyles,\n rowLabel,\n rowRadio\n } = useStyles$D({\n width,\n radioWidth\n });\n return React__default.createElement(Row, {\n className: classNames(rowStyles, className),\n ...props\n }, React__default.createElement(Radio$1, {\n id: bestRadioId,\n className: rowRadio,\n value: bestColId,\n name: rowId,\n checked: value === bestColId,\n \"aria-labelledby\": `${bestColId} ${labelId}`,\n onChange: handleChange,\n ...radioEvents\n }), React__default.createElement(\"span\", {\n className: rowLabel\n }, React__default.createElement(RichText, {\n id: labelId,\n element: \"span\",\n text: label\n })), React__default.createElement(Radio$1, {\n id: worstRadioId,\n className: rowRadio,\n value: worstColId,\n name: rowId,\n checked: value === worstColId,\n \"aria-labelledby\": `${worstColId} ${labelId}`,\n onChange: handleChange,\n ...radioEvents\n }));\n}\n\nconst useStyles$C = createUseStyles(theme => {\n const breakpointSmMax = `@media screen and (max-width: ${theme.breakpoints.sm.max})`;\n return {\n rowList: {\n '& > :nth-child(even)': {\n backgroundColor: theme.input.bgColor\n }\n },\n headerColumn: ({\n radioWidth = 20\n }) => ({\n display: 'table',\n width: `${radioWidth}%`,\n padding: '5px 8px',\n alignItems: 'center',\n textAlign: 'center',\n ...theme.questionBody,\n fontSize: '14px',\n [breakpointSmMax]: {\n width: '25%'\n }\n }),\n labelColumn: ({\n labelWidth = 60\n }) => ({\n display: 'table',\n width: `${labelWidth}%`,\n margin: [0, 2, 0, 2],\n padding: '3px',\n [breakpointSmMax]: {\n width: '50%'\n }\n })\n };\n});\n\nfunction BestWorst({\n id: questionId,\n disabled: _dis,\n readOnly: _ro,\n choices: fields = [],\n responses = [],\n columnChoices = [],\n onChange,\n labelWidth,\n ...questionFieldProps\n}) {\n const DEFAULT_RADIO_WIDTH = 20;\n const [selectedChoices, setSelectedChoices] = useState(responses);\n const [bestAnswerColumn, worstAnswerColumn] = columnChoices;\n const columnIds = columnChoices === null || columnChoices === void 0 ? void 0 : columnChoices.map(c => c.id);\n const errorId = createErrorId(questionId);\n const radioWidth = labelWidth !== undefined ? (100 - labelWidth) / 2 : DEFAULT_RADIO_WIDTH;\n /** Filter choices that exist and are visible */\n\n const {\n options: rowFields\n } = useQuestionChoices(fields);\n /** determines whether a radio should be rendered as checked or unchecked */\n\n const getRadioSelection = id => {\n var _a, _b;\n\n return (_b = (_a = selectedChoices.find(c => c.id === id)) === null || _a === void 0 ? void 0 : _a.value[0].id) !== null && _b !== void 0 ? _b : '';\n };\n /** unChecks selected choice */\n\n\n const unCheckOption = radioId => {\n const newChoices = selectedChoices.filter(c => !radioId.match(c.id));\n setSelectedChoices(newChoices);\n onChange === null || onChange === void 0 ? void 0 : onChange(newChoices);\n };\n /** handles adding new checked selection to responses */\n\n\n const handleChange = e => {\n let newChoices = [];\n const rowId = e.id;\n const rowValue = e.value;\n /** remove any other checked radio in the same row or column */\n\n newChoices = selectedChoices.filter(row => !(row.id === rowId || row.value.find(col => col.value === rowValue)));\n newChoices.push({\n id: rowId,\n value: [{\n id: rowValue,\n value: rowValue\n }]\n });\n setSelectedChoices(newChoices);\n onChange === null || onChange === void 0 ? void 0 : onChange(newChoices);\n };\n\n const handleClick = e => {\n const input = e.target;\n const isSelected = selectedChoices.find(c => input.id.match(c.id));\n\n if (isSelected && input.checked) {\n unCheckOption(input.id);\n }\n };\n\n const handleKeyboard = e => {\n const input = e.target;\n const isSelected = selectedChoices.find(c => input.id.match(c.id));\n\n if (e.code === 'Space' && isSelected) {\n e.preventDefault();\n unCheckOption(input.id);\n }\n };\n\n const {\n headerColumn,\n rowList,\n labelColumn\n } = useStyles$C({\n labelWidth,\n radioWidth\n });\n return (\n /*\n NOTE: The id has been modified to work in hybrid mode. The id needs to\n be different from the question-field id created in the responseweb.\n */\n React__default.createElement(QuestionField, {\n id: `hybrid-${questionId}`,\n \"data-testid\": \"BestWorstQuestionType\",\n ...questionFieldProps\n }, React__default.createElement(\"div\", {\n className: rowList\n }, React__default.createElement(Row, null, React__default.createElement(RichText, {\n id: bestAnswerColumn === null || bestAnswerColumn === void 0 ? void 0 : bestAnswerColumn.id,\n element: \"span\",\n text: bestAnswerColumn === null || bestAnswerColumn === void 0 ? void 0 : bestAnswerColumn.label,\n className: classNames(headerColumn)\n }), React__default.createElement(\"span\", {\n className: classNames(headerColumn, labelColumn)\n }), React__default.createElement(RichText, {\n id: worstAnswerColumn === null || worstAnswerColumn === void 0 ? void 0 : worstAnswerColumn.id,\n element: \"span\",\n text: worstAnswerColumn === null || worstAnswerColumn === void 0 ? void 0 : worstAnswerColumn.label,\n className: classNames(headerColumn)\n })), rowFields === null || rowFields === void 0 ? void 0 : rowFields.map(field => {\n const rowId = `${questionId}_${field.id}`;\n return React__default.createElement(BestWorstRow, {\n key: rowId,\n id: rowId,\n label: field.label,\n width: labelWidth,\n value: getRadioSelection(rowId),\n columnIds: columnIds,\n onChange: handleChange,\n onClick: handleClick,\n onKeyDown: handleKeyboard,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined\n });\n })))\n );\n}\n\nvar BestWorst$1 = withErrorBoundary(BestWorst);\n\nfunction CheckboxIcon() {\n return React__default.createElement(\"g\", {\n className: \"checkbox-icon\"\n }, React__default.createElement(\"rect\", {\n fill: \"currentColor\",\n className: \"background\",\n width: \"16\",\n height: \"16\",\n rx: \"2\",\n ry: \"2\"\n }), React__default.createElement(\"path\", {\n fill: \"#fff\",\n className: \"checkmark\",\n transform: \"matrix(.91924 .91924 -.91924 .91924 -.72152 -9.5796)\",\n d: \"m14.521 0h1.4788v8h-5.0216l-0.002914-1.4404h3.5456l-1e-6 -6.5596z\"\n }));\n}\n\nvar CheckboxIcon$1 = withSvgIcon(CheckboxIcon, 'CheckboxIcon');\n\nfunction SelectIcon() {\n return React__default.createElement(\"g\", {\n className: \"select-icon\"\n }, React__default.createElement(\"polygon\", {\n className: \"select-arrow select-arrow-top\",\n transform: \"matrix(1.4619 0 0 1.4619 5.8783 5.4791)\",\n points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\",\n fill: \"currentColor\",\n stroke: \"transparent\",\n strokeLinejoin: \"round\",\n strokeWidth: \".5\"\n }), React__default.createElement(\"polygon\", {\n className: \"select-arrow select-arrow-bottom\",\n transform: \"matrix(-1.4619 0 0 -1.4619 10.122 10.522)\",\n points: \"1.4514 -3.0633 5.5556 1.0409 -2.6529 1.0409\",\n fill: \"currentColor\",\n stroke: \"transparent\",\n strokeLinejoin: \"round\",\n strokeWidth: \".5\"\n }));\n}\n\nvar SelectIcon$1 = withSvgIcon(SelectIcon, 'SelectIcon');\n\nfunction CaretDown() {\n return React__default.createElement(\"g\", {\n className: \"caret-down-icon\"\n }, React__default.createElement(\"path\", {\n d: \"M13.254 4c.19.001.38.088.526.26.267.316.29.81.073 1.158l-.073.1L8.53 11.74l-.084.086a.66.66 0 0 1-.901-.007l-.076-.08L2.22 5.523l-.073-.1a1.024 1.024 0 0 1 0-1.058l.073-.1.084-.085a.674.674 0 0 1 .446-.175V4h10.504z\",\n fill: \"currentColor\"\n }));\n}\n\nvar CaretDownIcon = withSvgIcon(CaretDown, 'CaretDownIcon');\n\nfunction CaretDownOutline() {\n return React__default.createElement(\"g\", {\n className: \"caret-down-icon\"\n }, React__default.createElement(\"path\", {\n d: \"m922.74 642.16l-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\",\n transform: \"matrix(-.016568 0 0 -.016568 15.842 16.026)\",\n fill: \"currentcolor\"\n }));\n}\n\nvar CaretDownOutlineIcon = withSvgIcon(CaretDownOutline, 'CaretDownOutlineIcon');\n\nfunction CaretUpOutline() {\n return React__default.createElement(\"g\", {\n className: \"caret-up-icon\"\n }, React__default.createElement(\"path\", {\n d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\",\n transform: \"matrix(.016568 0 0 .016568 .15803 -.025552)\",\n fill: \"currentcolor\"\n }));\n}\n\nvar CaretUpOutlineIcon = withSvgIcon(CaretUpOutline, 'CaretUpOutlineIcon');\n\nfunction CaretLeftOutline() {\n return React__default.createElement(\"g\", {\n className: \"caret-left-icon\"\n }, React__default.createElement(\"path\", {\n transform: \"matrix(0 -.016568 .016568 0 -.025552 15.842)\",\n d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\",\n fill: \"currentcolor\"\n }));\n}\n\nvar CaretLeftOutlineIcon = withSvgIcon(CaretLeftOutline, 'CaretLeftOutlineIcon');\n\nfunction CaretRightOutline() {\n return React__default.createElement(\"g\", {\n className: \"caret-right-icon\"\n }, React__default.createElement(\"path\", {\n transform: \"matrix(0 .016568 -.016568 0 16.026 .15803)\",\n d: \"m922.74 642.16-415.95-416.06c-18.533-18.538-48.507-18.538-67.04 0l-415.85 416.06c-18.533 18.538-18.533 48.519 0 67.057l33.473 33.481c18.533 18.538 48.507 18.538 67.04 0l348.91-349 348.91 349c18.533 18.538 48.507 18.538 67.04 0l33.473-33.481c18.533-18.538 18.533-48.519 0-67.057z\",\n fill: \"currentcolor\"\n }));\n}\n\nvar CaretRightOutlineIcon = withSvgIcon(CaretRightOutline, 'CaretRightOutlineIcon');\n\nfunction DragHandleIcon() {\n return React__default.createElement(\"g\", {\n className: \"drag-handle-icon\"\n }, React__default.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1.4 1 2)\",\n width: \"14\",\n height: \"1.4286\",\n rx: \".71\",\n ry: \".71\",\n strokeWidth: \"0\",\n fill: \"currentColor\"\n }), React__default.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1.4 1 5.3333)\",\n width: \"14\",\n height: \"1.4286\",\n rx: \".71\",\n ry: \".71\",\n strokeWidth: \"0\",\n fill: \"currentColor\"\n }), React__default.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1.4 1 8.6667)\",\n width: \"14\",\n height: \"1.4286\",\n rx: \".71\",\n ry: \".71\",\n strokeWidth: \"0\",\n fill: \"currentColor\"\n }), React__default.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1.4 1 12)\",\n width: \"14\",\n height: \"1.4286\",\n rx: \".71\",\n ry: \".71\",\n strokeWidth: \"0\",\n fill: \"currentColor\"\n }));\n}\n\nvar DragHandleIcon$1 = withSvgIcon(DragHandleIcon, 'DragHandleIcon');\n\nfunction Calendar() {\n return React__default.createElement(\"g\", {\n fill: \"currentcolor\",\n transform: \"matrix(.031614 0 0 .031614 .33438 .33438)\"\n }, React__default.createElement(\"path\", {\n d: \"m405.17 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\"\n }), React__default.createElement(\"path\", {\n d: \"m314.23 363.15h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\"\n }), React__default.createElement(\"path\", {\n d: \"m223.28 363.15h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4z\"\n }), React__default.createElement(\"path\", {\n d: \"m132.34 363.15h-55.725c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4h55.726c2.209 0 4-1.791 4-4v-48.256c-1e-3 -2.209-1.792-4-4.001-4z\"\n }), React__default.createElement(\"path\", {\n d: \"m349.44 340.41h55.727c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m258.5 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m167.56 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m76.611 340.41h55.726c2.209 0 4-1.791 4-4v-48.256c0-2.209-1.791-4-4-4h-55.726c-2.209 0-4 1.791-4 4v48.256c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m349.44 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m258.5 261.41h55.727c2.209 0 4-1.791 4-4v-48.255c0-2.209-1.791-4-4-4h-55.727c-2.209 0-4 1.791-4 4v48.255c0 2.209 1.791 4 4 4z\"\n }), React__default.createElement(\"path\", {\n d: \"m363.37 114.86h6.938c10.543 0 19.09-8.549 19.09-19.091v-72.39c0-10.54-8.547-19.089-19.09-19.089h-6.938c-10.545 0-19.092 8.549-19.092 19.089v72.389c2e-3 10.543 8.549 19.092 19.092 19.092z\"\n }), React__default.createElement(\"path\", {\n d: \"m118.5 115.33h6.938c10.544 0 19.091-8.55 19.091-19.091v-72.389c0-10.541-8.547-19.09-19.091-19.09h-6.938c-10.543 0-19.09 8.549-19.09 19.09v72.389c0 10.541 8.547 19.091 19.09 19.091z\"\n }), React__default.createElement(\"path\", {\n d: \"M453.916,43.558h-48.996v57.209c0,19.084-15.525,29.61-34.607,29.61h-6.938c-19.084,0-34.609-15.526-34.609-34.61v-52.209h-168.713v52.682c0,19.084-15.525,34.61-34.609,34.61h-6.938c-19.083,0-34.608-15.526-34.608-34.61v-52.682h-52.862C13.923,43.558,0,57.481,0,74.595v375.03c0,17.114,13.923,31.037,31.036,31.037h422.88c17.113,0,31.035-13.923,31.035-31.037v-375.03c.002-17.113-13.922-31.037-31.035-31.037Zm0,406.067h-422.879l-.001-283.213h422.886l.016,283.212c-.002,0-.008.001-.022.001Z\"\n }));\n}\n\nvar CalendarIcon = withSvgIcon(Calendar, 'CalendarIcon');\nconst useStyles$B = createUseStyles(theme => ({\n checkboxInput: ({\n checked,\n disabled,\n readOnly\n }) => {\n const checkBgColor = checked ? theme.questionColor : '#fff';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.questionColor,\n borderRadius: 2,\n backgroundColor,\n border: `1px solid ${disabled || readOnly ? '#aaa' : theme.questionColor}`,\n '& .checkmark': {\n fill: theme.isDark ? '#000' : '#fff'\n },\n '&:focus-within': {\n boxShadow: `0 0 0 1px ${theme.primaryAccentColor}`,\n borderColor: '#fff'\n },\n '& input': {\n cursor: 'pointer'\n }\n };\n }\n}));\n\nfunction CheckboxInput({\n className,\n ...props\n}, ref) {\n const {\n inputProps,\n styleProps\n } = useInputStyles(props);\n const {\n checkboxInput\n } = useStyles$B(styleProps);\n return React__default.createElement(BaseInput$1, {\n ref: ref,\n type: \"checkbox\",\n className: classNames(checkboxInput, className),\n icon: React__default.createElement(CheckboxIcon$1, null),\n ...inputProps\n });\n}\n\nvar CheckboxInput$1 = React__default.forwardRef(CheckboxInput); // get the margin top by taking the font size and the line height and divide by 2 to get the margin top\n\nconst marginTopHelper = (height = 0, lineHeight = 1) => {\n return Math.max(0, (height * lineHeight - height) / 2); // no negative margins\n};\n\nconst useStyles$A = createUseStyles(theme => {\n var _a;\n\n return {\n checkboxContainer: ({\n checked,\n disabled\n }) => {\n var _a;\n\n const borderStyle = checked ? 'solid' : 'dashed';\n const borderColor = disabled && !checked ? 'transparent' : theme.questionColor;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n display: 'flex',\n alignItems: 'start',\n cursor: 'pointer',\n padding: [5, 8, 7, 8],\n gap: 8,\n borderRadius: 4,\n border: [1, 'solid', checked ? theme.questionColor : 'transparent'],\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n lineHeight: 1.5,\n fontWeight: checked ? fontWeightOptions.medium : (_a = theme.questionBody.fontWeight) !== null && _a !== void 0 ? _a : fontWeightOptions.light,\n '&:hover': {\n border: [1, borderStyle, borderColor]\n },\n '&:focus-within': {\n background: theme.input.bgColor\n }\n };\n },\n icon: {\n flexShrink: 0,\n fontSize: ({\n inputSize\n }) => inputSize !== null && inputSize !== void 0 ? inputSize : '1em',\n marginTop: marginTopHelper((_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.fontSize, 1.5),\n // The following selector singles out Safari and Chrome on iOS14 to\n // implement a workaround for the lack of flex gap.\n '@supports (-webkit-touch-callout: none) and (not (translate: none))': {\n marginRight: 8\n }\n }\n };\n});\n\nfunction Checkbox$2({\n children: label = '',\n inputSize,\n onChange,\n ...props\n}, ref) {\n const handleChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value\n });\n };\n\n const {\n inputProps,\n styleProps\n } = useInputStyles({ ...props,\n onChange: handleChange\n });\n const {\n checkboxContainer,\n icon\n } = useStyles$A({ ...styleProps,\n inputSize\n });\n return React__default.createElement(\"label\", {\n htmlFor: inputProps.id,\n className: checkboxContainer,\n tabIndex: -1\n }, React__default.createElement(CheckboxInput$1, {\n ref: ref,\n ...inputProps,\n className: icon\n }), React__default.createElement(RichText, {\n element: \"span\",\n text: label\n }));\n}\n\nvar Checkbox$3 = forwardRef(Checkbox$2);\nconst useStyles$z = createUseStyles(theme => ({\n checkbox: {\n '& label': {\n alignItems: 'baseline'\n }\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column'\n },\n textInput: {\n opacity: ({\n isChecked\n }) => isChecked ? 1 : 0.5,\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%'\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal'\n },\n checkHover: {\n '&:hover': {\n outline: 'none',\n cursor: 'pointer'\n }\n }\n}));\n\nfunction CheckboxTextfield(props) {\n const {\n id,\n children: label,\n value: inputValue = '',\n defaultValue,\n maxLength,\n onClick,\n onKeyDown,\n onChange,\n checked: checkedProp = false,\n ...checkboxProps\n } = props;\n const [isChecked, setIsChecked] = useState(checkedProp);\n const [value, setValue] = React__default.useState(defaultValue || inputValue);\n const {\n checkbox,\n textInput,\n checkHover\n } = useStyles$z({\n isChecked\n });\n\n const handleValueChange = e => {\n setValue(e.value);\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id,\n value: e.value,\n checked: e.checked\n });\n };\n\n const handleInputChange = e => {\n if (!isChecked) {\n setIsChecked(true);\n }\n\n handleValueChange({\n id,\n value: e.target.value,\n checked: true\n });\n };\n\n const inputRef = React__default.useRef(null);\n\n const handleCheckboxClick = e => {\n var _a;\n\n if (!isChecked && e.clientX !== 0 && e.clientY !== 0) {\n (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n\n setIsChecked(!isChecked);\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n\n const handleTextboxClick = () => {\n if (!isChecked) {\n setIsChecked(true);\n }\n\n handleValueChange({\n id,\n value,\n checked: true\n });\n };\n\n const handleKeyDown = e => {\n if (e.code === 'Space') {\n e.preventDefault();\n setIsChecked(!isChecked);\n handleValueChange({\n id,\n value,\n checked: !isChecked\n });\n return;\n }\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n };\n\n React__default.useEffect(() => {\n setIsChecked(checkedProp);\n }, [checkedProp]);\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(Checkbox$3, {\n id: `checkbox-input-${id}`,\n checked: isChecked,\n onKeyDown: handleKeyDown,\n onClick: handleCheckboxClick,\n onChange: handleValueChange,\n className: checkbox,\n value: value,\n maxLength: maxLength,\n ...checkboxProps\n }, label), React__default.createElement(TextInput$1, {\n id: `checkbox-field-${id}`,\n onChange: handleInputChange,\n onClick: handleTextboxClick,\n className: classNames(textInput, {\n [checkHover]: !isChecked\n }),\n defaultValue: defaultValue,\n autoHeight: true,\n maxLength: maxLength,\n tabIndex: isChecked ? 0 : -1,\n ref: inputRef\n }));\n}\n/**\n * Maximum input characters is 20,000\n * Resolves: RAWR-1186\n */\n\n\nconst TEXT_INPUT_MAX_CHARS = 20000;\nconst useStyles$y = createUseStyles({\n commentChoiceContainer: {\n marginTop: '10px'\n }\n});\nconst INPUT_SIZE$2 = 20;\n\nfunction Checkbox({\n id: questionId,\n required: _req,\n readOnly: _ro,\n disabled,\n columnLayout,\n choices = [],\n responses = [],\n choiceNoneOfTheAbove,\n choiceOther,\n choiceComment,\n onChange,\n ...questionFieldProps\n}) {\n const [selectedChoices, setSelectedChoices] = useState(responses);\n const errorId = createErrorId(questionId);\n /**\n * Default value by id\n * used for text-input based choices\n */\n\n const getDefaultValueById = id => {\n var _a;\n\n return (_a = responses.find(c => c.id === id)) === null || _a === void 0 ? void 0 : _a.value;\n };\n\n const handleDefault = id => {\n var _a;\n\n return (_a = responses.find(c => c.id === id)) === null || _a === void 0 ? void 0 : _a.value;\n };\n\n const isChecked = id => !!selectedChoices.find(item => item.id === id);\n\n const handleChange = e => {\n // 1. remove NOTA from array\n const newState = selectedChoices.filter(c => c.id !== e.id && c.type !== 'NOTA'); // 2. if e.target.checked remove item from array\n\n if (e.checked) {\n newState.push({\n id: e.id,\n value: e.value\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleNAChange = e => {\n const newState = selectedChoices.filter(c => c.type === 'COMMENT'); // 2. if e.target.checked remove item from array\n\n if (e.checked) {\n newState.push({\n id: e.id,\n value: e.value,\n type: 'NOTA'\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleOtherChange = e => {\n const newState = selectedChoices.filter(c => c.id !== e.id && c.type !== 'NOTA'); // 2. if e.target.checked remove item from array\n\n if (e.checked) {\n newState.push({\n id: e.id,\n value: e.value,\n type: 'ANSWER'\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleCommentChange = e => {\n const newState = selectedChoices.filter(c => c.type !== 'COMMENT');\n\n if (newState && !!e.target.value) {\n newState.push({\n id: e.target.id,\n value: e.target.value,\n type: 'COMMENT'\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const {\n commentChoiceContainer\n } = useStyles$y();\n return React__default.createElement(QuestionField, {\n id: questionId,\n \"data-testid\": \"CheckboxQuestionType\",\n ...questionFieldProps\n }, React__default.createElement(QuestionAnswerLayoutTemplate, {\n gridCellMargin: [0, 2, 5, 2],\n otherCellMargin: [0, 2, 5, 2],\n noneOfTheAbove: choiceNoneOfTheAbove && (choiceNoneOfTheAbove === null || choiceNoneOfTheAbove === void 0 ? void 0 : choiceNoneOfTheAbove.visible) && React__default.createElement(Checkbox$3, {\n id: choiceNoneOfTheAbove.id,\n value: choiceNoneOfTheAbove.id,\n onChange: handleNAChange,\n checked: isChecked(choiceNoneOfTheAbove.id),\n disabled: disabled,\n readOnly: _ro,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n inputSize: INPUT_SIZE$2\n }, choiceNoneOfTheAbove.label),\n other: (choiceOther === null || choiceOther === void 0 ? void 0 : choiceOther.type) === 'ANSWER' && (choiceOther === null || choiceOther === void 0 ? void 0 : choiceOther.visible) && React__default.createElement(CheckboxTextfield, {\n id: choiceOther.id,\n defaultValue: handleDefault(choiceOther.id),\n onChange: handleOtherChange,\n checked: isChecked(choiceOther.id),\n maxLength: TEXT_INPUT_MAX_CHARS,\n disabled: disabled,\n readOnly: _ro,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n inputSize: INPUT_SIZE$2\n }, choiceOther.label),\n columns: columnLayout\n }, choices === null || choices === void 0 ? void 0 : choices.map(choice => {\n return React__default.createElement(Checkbox$3, {\n key: choice.id,\n id: choice.id,\n onChange: handleChange,\n checked: isChecked(choice.id),\n value: choice.id,\n disabled: disabled,\n readOnly: _ro,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n inputSize: INPUT_SIZE$2\n }, choice.label);\n })), choiceComment && React__default.createElement(CommentChoice, {\n id: choiceComment.id,\n label: choiceComment.label,\n onChange: handleCommentChange,\n defaultValue: getDefaultValueById(choiceComment.id),\n lineCount: choiceComment.linesCount,\n charCount: choiceComment.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n className: commentChoiceContainer\n }));\n}\n\nvar Checkbox$1 = withErrorBoundary(Checkbox);\n\nfunction CommentBox({\n id: questionId,\n required,\n disabled,\n readOnly,\n responses: defaultResponses = [],\n onChange,\n cols = 50,\n rows = 3,\n ...fieldProps\n}) {\n const {\n error,\n errorId = createErrorId(questionId),\n title: {\n id: titleId\n }\n } = fieldProps;\n const defaultValue = useMemo(() => {\n var _a, _b;\n\n return (_b = (_a = defaultResponses.find(r => !!r.value)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n\n const handleChange = e => {\n const responses = e.target.value ? [{\n id: questionId,\n value: e.target.value\n }] : [];\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n return React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"CommentBoxQuestionType\",\n ...fieldProps\n }, React__default.createElement(TextArea$1, {\n name: questionId,\n defaultValue: defaultValue,\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n cols: cols,\n rows: rows,\n onChange: handleChange,\n \"aria-invalid\": !!error,\n \"aria-describedby\": error && errorId,\n \"aria-labelledby\": titleId,\n maxLength: TEXT_INPUT_MAX_CHARS\n }));\n}\n\nvar CommentBox$1 = withErrorBoundary(CommentBox);\n\nvar _a;\n/**\n * SSR Safe version of useLayoutEffect\n * @see https://code.corp.surveymonkey.com/webplatform/smweb/blob/master/apps/contentweb/src/app/pages/MRX/helpers/useIsomorphicLayoutEffect.js\n *\n * Note: `NOSONAR` is used to bypass a `minor:code-smell` error that states `createElement` is deprecated.\n * The eslint rule above disables the spaced comments to use NOSONAR as stated in the docs.\n */\n\n\nconst useSSRSafeLayoutEffect = typeof window !== 'undefined' && typeof ((_a = window === null || window === void 0 ? void 0 : window.document) === null || _a === void 0 ? void 0 : _a.createElement) !== 'undefined' //NOSONAR\n? useLayoutEffect : useEffect;\nconst useStyles$x = createUseStyles(theme => {\n const {\n color,\n fontSize,\n fontFamily,\n fontWeight\n } = theme.questionBody;\n return {\n selectContainerStyles: {\n maxWidth: '100%',\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n transition: 'all 0.1s linear',\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`\n },\n color: '#000'\n },\n selectStyles: {\n position: 'relative',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n overflow: 'hidden',\n fontSize,\n fontFamily,\n fontWeight,\n lineHeight: 'normal',\n outline: 'none',\n backgroundColor: '#fff',\n color: 'inherit',\n maxWidth: '100%',\n padding: '6px 1.75em 6px 6px',\n verticalAlign: 'bottom',\n textSizeAdjust: 'auto',\n // Prevent de fault chevron from showing\n mozAppearance: 'none',\n webkitAppearance: 'none',\n appearance: 'none',\n transition: 'border 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`\n }\n },\n selectIconStyles: {\n position: 'absolute',\n width: '1em',\n height: '1em',\n display: 'block',\n margin: '0 .5em',\n right: 0,\n zIndex: 2,\n pointerEvents: 'none'\n },\n disabledStyles: {\n opacity: 0.4\n }\n };\n});\n\nfunction NativeSelect({\n required,\n children,\n disabled,\n className,\n icon = React__default.createElement(SelectIcon$1, null),\n ...props\n}) {\n const {\n selectStyles,\n selectContainerStyles,\n selectIconStyles,\n disabledStyles\n } = useStyles$x();\n const {\n className: iconClasses,\n ...iconProps\n } = icon.props;\n return React__default.createElement(\"div\", {\n className: classNames(selectContainerStyles, disabled ? disabledStyles : {}, className)\n }, React__default.cloneElement(icon, {\n // this will apply our placement styles, along with any other supplied classes\n className: classNames(selectIconStyles, iconClasses),\n // apply all other props.\n ...iconProps\n }), React__default.createElement(\"select\", {\n className: selectStyles,\n required: required,\n \"aria-required\": required,\n \"data-testid\": \"select\",\n disabled: disabled,\n ...props\n }, children));\n}\n\nconst useStyles$w = createUseStyles(({\n questionBody: {\n fontFamily,\n fontSize,\n fontWeight\n }\n}) => ({\n selectOption: {\n fontFamily,\n fontSize,\n fontWeight\n }\n}));\n\nfunction SelectAnswerOption({\n id,\n label,\n ...props\n}) {\n const {\n selectOption\n } = useStyles$w();\n return React__default.createElement(\"option\", {\n id: id,\n \"data-testid\": \"select-answer-option\",\n className: selectOption,\n ...props\n }, label);\n}\n\nconst useStyles$v = createUseStyles(theme => {\n const {\n color,\n fontSize,\n fontFamily,\n fontWeight\n } = theme.questionBody;\n return {\n inputGroup: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: ({\n rtl\n }) => rtl ? 'row-reverse' : 'row',\n transition: 'all 0.1s linear',\n border: `1px solid ${color}`,\n '&:focus-within, &:hover': {\n border: `1px solid transparent`\n }\n },\n input: {\n border: 'none',\n textAlign: ({\n rtl\n }) => rtl ? 'right' : 'left',\n height: ({\n height\n }) => height || 'auto',\n width: 'calc(100% - 30px)',\n outline: 'currentColor none medium',\n backgroundColor: '#FFF',\n padding: '6px 0 6px 10px',\n fontSize,\n fontFamily,\n fontWeight\n },\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n height: ({\n height\n }) => height || 'auto',\n width: 30,\n backgroundColor: '#FFF',\n border: 'none'\n },\n buttonIcon: {\n transform: ({\n isOpen\n }) => isOpen ? 'rotate(180deg)' : 'rotate(0)'\n }\n };\n});\nconst ComboBoxInputGroup = React__default.forwardRef(({\n isOpen,\n value,\n height,\n rtl = false,\n onChange,\n open,\n close,\n onKeyDown,\n 'aria-activedescendant': ariaActiveDescendant,\n 'aria-autocomplete': ariaAutocomplete,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className,\n ...rest\n}, ref) => {\n const inputRef = useRef(null);\n useImperativeHandle(ref, () => inputRef.current);\n const {\n inputGroup,\n input,\n button,\n buttonIcon\n } = useStyles$v({\n isOpen,\n height,\n rtl\n });\n return React__default.createElement(\"div\", {\n className: classNames(inputGroup, className),\n ...rest\n }, React__default.createElement(\"input\", {\n className: input,\n type: \"text\",\n role: \"combobox\",\n \"aria-autocomplete\": ariaAutocomplete,\n \"aria-expanded\": isOpen,\n \"aria-controls\": ariaControls,\n \"aria-activedescendant\": ariaActiveDescendant,\n value: value,\n onChange: onChange,\n onClick: open,\n onKeyDown: onKeyDown,\n ref: inputRef\n }), React__default.createElement(\"button\", {\n className: button,\n type: \"button\",\n tabIndex: -1,\n \"aria-expanded\": isOpen,\n \"aria-controls\": ariaControls,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n onClick: () => {\n var _a;\n\n if (isOpen) {\n close();\n } else {\n open();\n }\n\n (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }, React__default.createElement(CaretDownIcon, {\n className: buttonIcon\n })));\n});\nconst useStyles$u = createUseStyles({\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n '&:focus-visible': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1\n }\n }\n});\n/**\n * Scroll to the item at the specified index if it is fully or partially obscured\n * */\n\nconst scrollToItem = (itemRect, containerRef) => {\n var _a;\n\n const ulRect = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();\n\n if (!ulRect || !containerRef.current) {\n return;\n }\n\n if (itemRect.top < ulRect.top) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop -= ulRect.top - itemRect.top;\n } else if (itemRect.bottom > ulRect.bottom) {\n // eslint-disable-next-line no-param-reassign\n containerRef.current.scrollTop += itemRect.bottom - ulRect.bottom;\n }\n};\n/**\n * Returns the number of items visible inside the listbox given its current dimensions\n * note: if height is 0, it will return 10 as a default to satisfy tests\n * */\n\n\nconst numItemsVisible = (containerHeight, itemHeight = 48) => {\n return !containerHeight ? 10 : Math.round(containerHeight / itemHeight);\n};\n/**\n * Focus another item in the listBox depending on which key is pressed\n * @param key The key that was pressed\n * @param focusedIndex The index of the currently focused item\n * @param itemCount The number of items in the listBox\n * @param visibleItemCount The number of items visible in the listBox\n * @param focusItem Function which updates the the currently focused item\n */\n\n\nconst focusNext = (key, focusedIndex, itemCount, visibleItemCount, focusItem) => {\n const lastIndex = itemCount - 1;\n\n if (key === 'End') {\n focusItem(lastIndex);\n return;\n }\n\n if (focusedIndex === null) {\n focusItem(0);\n return;\n }\n\n switch (key) {\n case 'Down':\n case 'ArrowDown':\n if (focusedIndex < lastIndex) {\n focusItem(focusedIndex + 1);\n } else {\n focusItem(0);\n }\n\n break;\n\n case 'Up':\n case 'ArrowUp':\n if (focusedIndex > 0) {\n focusItem(focusedIndex - 1);\n } else {\n focusItem(lastIndex);\n }\n\n break;\n\n case 'PageDown':\n if (focusedIndex < lastIndex - visibleItemCount) {\n focusItem(focusedIndex + visibleItemCount);\n } else {\n focusItem(lastIndex);\n }\n\n break;\n\n case 'PageUp':\n if (focusedIndex > visibleItemCount) {\n focusItem(focusedIndex - visibleItemCount);\n } else {\n focusItem(0);\n }\n\n break;\n\n case 'Home':\n focusItem(0);\n break;\n }\n};\n\nReact__default.forwardRef(({\n children,\n focusedIndex: externalFocusedIndex,\n tabIndex,\n onKeyDown,\n onClick,\n onChange,\n className,\n ...rest\n}, ref) => {\n const {\n listBox\n } = useStyles$u();\n const [focusedIndex, setFocusedIndex] = useState(null); // override internal focusedIndex with external state if provided\n\n useEffect(() => {\n if (externalFocusedIndex !== undefined) {\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const itemsRef = useRef([]);\n const ulRef = useRef(null);\n\n const focusItem = index => {\n setFocusedIndex(index);\n };\n\n useImperativeHandle(ref, () => ulRef.current);\n useEffect(() => {\n var _a, _b;\n\n if (focusedIndex === null) {\n return;\n } // Scroll to the currently focused item anytime the focused index changes\n\n\n scrollToItem((_a = itemsRef.current) === null || _a === void 0 ? void 0 : _a[focusedIndex].getBoundingClientRect(), ulRef); // call the onChange callback if the focused index changes\n\n onChange === null || onChange === void 0 ? void 0 : onChange({\n target: itemsRef.current[focusedIndex],\n value: (_b = itemsRef.current[focusedIndex].dataset.value) !== null && _b !== void 0 ? _b : ''\n });\n }, [focusedIndex]);\n\n const handleKeyDown = e => {\n var _a;\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n\n if (['Down', 'Up', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'End', 'Home'].includes(e.key)) {\n e.preventDefault(); // Focus another item in the listBox depending on which key is pressed\n\n focusNext(e.key, focusedIndex, itemsRef.current.length, numItemsVisible((_a = ulRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height), focusItem);\n }\n };\n\n const handleClick = e => {\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n }\n };\n\n const interactiveProps = {\n tabIndex,\n 'aria-activedescendant': tabIndex !== undefined && focusedIndex !== null ? `ListBoxItem-${focusedIndex}` : undefined\n };\n return React__default.createElement(\"ul\", {\n ref: ulRef,\n className: classNames(listBox, className),\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n onClick: handleClick,\n ...interactiveProps,\n ...rest\n }, React__default.Children.map(children, (child, index) => {\n var _a;\n\n return React__default.isValidElement(child) && React__default.cloneElement(child, {\n key: child.props.value,\n id: (_a = child.props.id) !== null && _a !== void 0 ? _a : `ListBoxItem-${index}`,\n selected: index === focusedIndex,\n ref: el => {\n itemsRef.current[index] = el;\n }\n });\n }));\n});\nconst useStyles$t = createUseStyles({\n listBoxItem: ({\n selected,\n disabled\n }) => ({\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n backgroundColor: '#FFF',\n cursor: 'pointer',\n ...(selected && {\n backgroundColor: 'rgb(237, 238, 238)'\n }),\n '&:hover, &:focus': {\n backgroundColor: 'rgb(237, 238, 238)'\n },\n '&:active': {\n backgroundColor: 'rgb(224, 226, 226)'\n },\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none'\n })\n })\n});\nconst ListBoxItem = React__default.forwardRef(({\n children,\n disabled,\n selected,\n value,\n className,\n ...rest\n}, ref) => {\n const {\n listBoxItem\n } = useStyles$t({\n disabled,\n selected\n });\n return React__default.createElement(\"li\", {\n ref: ref,\n \"data-value\": value,\n className: classNames(listBoxItem, className),\n role: \"option\",\n \"aria-selected\": selected ? true : undefined,\n ...rest\n }, children);\n});\nconst useStyles$s = createUseStyles({\n listBoxContainer: {\n // TODO: Possible to utilize focus-visible to show only on keyboard interaction? (with child)\n '&:focus-within': {\n outline: '#005fcc auto 1px',\n outlineOffset: 1\n }\n },\n listBox: {\n listStyle: 'none',\n width: 'fit-content',\n overflowY: 'auto',\n overflowX: 'hidden',\n padding: 0\n }\n});\nconst ARIA_ACTIVEDESCENDANT = 'aria-activedescendant';\n/**\n * A virtualized version of the List component, using `react-window` to render large datasets. This component should only be used when the number of items would cause performance issues with the standard List component (most likely >500 items).\n */\n\nconst VirtualizedListBox = React__default.forwardRef(({\n height = 325,\n width = 175,\n itemSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n [ARIA_ACTIVEDESCENDANT]: ariaActiveDescendant,\n tabIndex,\n itemCount,\n focusedIndex: externalFocusedIndex,\n onChange,\n onKeyDown,\n onClick,\n className,\n children,\n ...rest\n}, ref) => {\n const [focusedIndex, setFocusedIndex] = useState(null);\n const listRef = useRef(null);\n const innerRef = useRef(null);\n const outerRef = useRef(null);\n const itemsRef = useRef([]); // override internal focusedIndex with external state if provided\n\n useEffect(() => {\n var _a;\n\n if (externalFocusedIndex !== undefined) {\n if (externalFocusedIndex !== null) {\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollToItem(externalFocusedIndex);\n }\n\n setFocusedIndex(externalFocusedIndex);\n }\n }, [externalFocusedIndex]);\n const {\n listBoxContainer,\n listBox\n } = useStyles$s();\n\n const handleChange = item => {\n var _a;\n\n onChange === null || onChange === void 0 ? void 0 : onChange({\n target: item,\n value: (_a = item.dataset.value) !== null && _a !== void 0 ? _a : ''\n });\n };\n /**\n * Scroll to and focus the item at the specified index\n */\n\n\n const focusItem = index => {\n var _a;\n\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollToItem(index);\n setFocusedIndex(index);\n handleChange(itemsRef.current[index]);\n };\n\n useImperativeHandle(ref, () => ({\n listRef,\n innerRef,\n outerRef,\n itemsRef\n }));\n const handleKeyDown = useCallback(e => {\n var _a;\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n\n if (!(e.target instanceof HTMLUListElement)) {\n return;\n }\n\n if (['Down', 'Up', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'End', 'Home'].includes(e.key)) {\n e.preventDefault(); // Focus another item in the listBox depending on which key is pressed\n\n focusNext(e.key, focusedIndex, itemCount, numItemsVisible((_a = outerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height), focusItem);\n }\n }, [focusedIndex, itemCount, onKeyDown]);\n const handleClick = useCallback(e => {\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n\n if (e.target instanceof HTMLLIElement) {\n setFocusedIndex(itemsRef.current.indexOf(e.target));\n handleChange(e.target);\n }\n }, [onClick]);\n useLayoutEffect(() => {\n var _a;\n\n const listElement = innerRef.current;\n (_a = outerRef.current) === null || _a === void 0 ? void 0 : _a.removeAttribute('tabindex');\n\n if (listElement) {\n listElement.className = listBox;\n listElement.setAttribute('role', 'listbox');\n listElement.addEventListener('keydown', handleKeyDown);\n listElement.addEventListener('click', handleClick);\n\n if (tabIndex === undefined) {\n listElement.removeAttribute('tabindex');\n } else {\n listElement.setAttribute('tabindex', tabIndex === null || tabIndex === void 0 ? void 0 : tabIndex.toString());\n }\n\n if (ariaLabel) {\n listElement.setAttribute('aria-label', ariaLabel);\n }\n\n if (ariaLabelledBy) {\n listElement.setAttribute('aria-labelledby', ariaLabelledBy);\n }\n }\n\n return () => {\n if (listElement) {\n listElement.removeEventListener('keydown', handleKeyDown);\n listElement.removeEventListener('click', handleClick);\n }\n };\n }, [ariaLabel, ariaLabelledBy, handleClick, handleKeyDown, listBox, tabIndex]);\n useLayoutEffect(() => {\n const listElement = innerRef.current;\n\n if (ariaActiveDescendant || tabIndex !== undefined && focusedIndex !== null) {\n listElement === null || listElement === void 0 ? void 0 : listElement.setAttribute(ARIA_ACTIVEDESCENDANT, ariaActiveDescendant !== null && ariaActiveDescendant !== void 0 ? ariaActiveDescendant : `ListBoxItem-${focusedIndex}`);\n } else {\n listElement === null || listElement === void 0 ? void 0 : listElement.removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n }, [ariaActiveDescendant, focusedIndex, tabIndex]);\n return React__default.createElement(FixedSizeList, {\n className: classNames(listBoxContainer, className),\n itemSize: itemSize,\n height: Math.min(height, itemCount * itemSize),\n width: width,\n innerElementType: \"ul\",\n innerRef: innerRef,\n outerRef: outerRef,\n overscanCount: 10,\n itemCount: itemCount,\n ref: listRef,\n ...rest\n }, props => {\n var _a;\n\n return React__default.cloneElement(children(props), {\n id: (_a = children(props).props.id) !== null && _a !== void 0 ? _a : `ListBoxItem-${props.index}`,\n selected: props.index === focusedIndex,\n ref: el => {\n itemsRef.current[props.index] = el;\n }\n });\n });\n});\nconst useStyles$r = createUseStyles(theme => {\n return {\n comboBox: {\n display: 'inline-block',\n width: ({\n width\n }) => width,\n borderRadius: `4px`,\n border: `2px solid transparent`,\n outline: `1px solid transparent`,\n '&:focus-within, &:hover': {\n border: `2px solid ${theme.primaryAccentColor}`,\n outline: `1px solid #fff`\n }\n },\n listBox: {\n display: ({\n isOpen\n }) => isOpen ? 'block' : 'none',\n '&:focus-within': {\n outline: 'none'\n },\n border: '1px solid rgb(204, 204, 204)'\n },\n listBoxItem: {\n direction: ({\n rtl\n }) => rtl ? 'rtl' : 'ltr',\n paddingLeft: '10px'\n }\n };\n});\n\nfunction ComboBox({\n id,\n options,\n height,\n width = '100%',\n itemSize = 48,\n className,\n classes,\n filterOnChange = false,\n value: outsideValue = '',\n optionAlign = 'center',\n filter,\n onChange,\n rtl = false,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}) {\n var _a;\n\n const comboBoxRef = useRef(null);\n const inputRef = useRef(null);\n const listBoxRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [value, setValue] = useState(outsideValue);\n const [currentOptions, setCurrentOptions] = useState(options);\n const [focusedIndex, setFocusedIndex] = useState(null);\n const [filterActive, setFilterActive] = useState(!filterOnChange); // the initial value of the input field when the listbox is opened (used to control whether the filter is active or not)\n\n const [valueOnOpen, setValueOnOpen] = useState(outsideValue);\n /** For preventing onChange being called on first render */\n\n const firstRender = useRef(true);\n const {\n comboBox,\n listBox,\n listBoxItem\n } = useStyles$r({\n isOpen,\n width,\n rtl\n });\n\n const closeListBox = () => {\n if (isOpen) {\n setIsOpen(false);\n }\n };\n\n const openListBox = () => {\n if (!isOpen) {\n setValueOnOpen(value);\n setIsOpen(true);\n }\n }; // close the listbox when the user clicks outside of it\n\n\n useOnFocusLeave(comboBoxRef, () => {\n closeListBox();\n setFocusedIndex(null);\n });\n\n const focusItem = index => {\n setFocusedIndex(index);\n }; // call onChange when value changes\n\n\n useEffect(() => {\n if (firstRender.current) {\n firstRender.current = false;\n } else {\n onChange === null || onChange === void 0 ? void 0 : onChange({\n value,\n target: inputRef.current\n });\n }\n }, [value]); // filter the current options if a filter is provided and filtering is active. If filtering is inactive, reset the current options to the original options\n\n useEffect(() => {\n if (filter && filterActive) {\n setCurrentOptions(options.filter(option => filter(option, value)));\n } else if (!filterActive) {\n setCurrentOptions(options);\n }\n }, [options, value, filter, filterActive]); // if filterOnChange is true, activate filtering if the value has changed since the listbox was opened, otherwise deactivate filtering\n\n useEffect(() => {\n if (filterOnChange) {\n setFilterActive(value !== valueOnOpen);\n }\n }, [filterOnChange, value, valueOnOpen]); // if the current value matches an option when the list opens, focus it and center it in the list\n\n useEffect(() => {\n var _a, _b;\n\n if (isOpen) {\n const matchingOption = currentOptions.find(option => option.label === value);\n\n if (matchingOption) {\n (_b = (_a = listBoxRef.current) === null || _a === void 0 ? void 0 : _a.listRef.current) === null || _b === void 0 ? void 0 : _b.scrollToItem(currentOptions.indexOf(matchingOption), optionAlign // position the option in the list according to the alignment (default is `center`)\n );\n setFocusedIndex(currentOptions.indexOf(matchingOption));\n }\n }\n }, [isOpen, currentOptions, value, optionAlign]);\n useEffect(() => {\n setValue(outsideValue);\n }, [outsideValue]);\n\n const handleKeyDown = e => {\n var _a, _b, _c, _d, _e;\n\n switch (e.key) {\n case 'ArrowDown':\n case 'Down':\n case 'ArrowUp':\n case 'Up':\n case 'PageDown':\n case 'PageUp':\n e.preventDefault();\n openListBox();\n\n if (!e.altKey) {\n focusNext(e.key, focusedIndex, currentOptions.length, numItemsVisible((_b = (_a = listBoxRef.current) === null || _a === void 0 ? void 0 : _a.outerRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().height, itemSize), focusItem);\n }\n\n break;\n\n case 'Escape':\n if (isOpen) {\n closeListBox();\n setFocusedIndex(null);\n } else {\n setValue('');\n }\n\n break;\n\n case 'Enter':\n e.preventDefault();\n\n if (isOpen) {\n if (focusedIndex !== null) {\n setValue((_e = (_d = (_c = listBoxRef.current) === null || _c === void 0 ? void 0 : _c.itemsRef.current) === null || _d === void 0 ? void 0 : _d[focusedIndex].textContent) !== null && _e !== void 0 ? _e : '');\n }\n\n closeListBox();\n setFocusedIndex(null);\n }\n\n break;\n }\n };\n\n const handleListBoxClick = () => {\n var _a;\n\n (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n closeListBox();\n };\n\n const activeDescendant = focusedIndex !== null && currentOptions[focusedIndex] ? `${id}-${currentOptions[focusedIndex].value}` : undefined;\n return React__default.createElement(\"div\", {\n className: classNames(comboBox, classes === null || classes === void 0 ? void 0 : classes.comboBox, className),\n ref: comboBoxRef,\n ...rest\n }, React__default.createElement(ComboBoxInputGroup, {\n ref: inputRef,\n className: classes === null || classes === void 0 ? void 0 : classes.inputGroup,\n height: height,\n rtl: rtl,\n value: value,\n isOpen: isOpen,\n \"aria-controls\": `${id}-listbox`,\n \"aria-autocomplete\": filter ? 'list' : 'none',\n \"aria-activedescendant\": activeDescendant,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n open: openListBox,\n close: closeListBox,\n onChange: e => setValue(e.target.value),\n onKeyDown: handleKeyDown\n }), React__default.createElement(VirtualizedListBox, {\n ref: listBoxRef,\n itemSize: itemSize,\n itemCount: currentOptions.length,\n className: classNames(listBox, classes === null || classes === void 0 ? void 0 : classes.listBox),\n focusedIndex: focusedIndex,\n width: (_a = comboBoxRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth,\n onChange: e => {\n var _a, _b;\n\n return setValue((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : '');\n },\n onClick: handleListBoxClick,\n tabIndex: -1,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-activedescendant\": activeDescendant,\n\n /**\n * adding inline style to overwrite react-window inline styles as per their docs\n * https://github.com/bvaughn/react-window\n */\n style: {\n position: 'absolute'\n }\n }, ({\n index,\n style\n }) => React__default.createElement(ListBoxItem, {\n className: classNames(listBoxItem, classes === null || classes === void 0 ? void 0 : classes.listBoxItem),\n style: style,\n value: currentOptions[index].value,\n id: `${id}-${currentOptions[index].value}`,\n key: `${id}-${currentOptions[index].value}`\n }, currentOptions[index].label)));\n}\n/**\n * Visually Hidden CSS properties\n * @description common css-properties to visually hide text and available for screen-readers.\n * There may be times where the css-specificity may not be high enough for the class to be invoked,\n * Ergo, the use of `!important` which will help ensure the properties are applied at any specificity.\n * @example\n * // usage with `react-jss`\n * import visuallyHiddenProperties from './utils/visuallyHidden';\n *\n * const useStyles = createUseStyles({\n * srOnly: {...visuallyHiddenProperties}\n * })\n */\n\n\nvar visuallyHidden = {\n border: [[0], '!important'],\n\n /**\n * @desc for backwards compatibility\n * @deprecated\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip\n * @see https://caniuse.com/mdn-css_properties_clip\n */\n clip: ['rect(1px, 1px, 1px, 1px)', '!important'],\n\n /**\n * @desc future-proof version\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path\n * @see https://caniuse.com/css-clip-path\n */\n clipPath: ['inset(50%)', '!important'],\n height: ['1px', '!important'],\n margin: ['-1px', '!important'],\n overflow: ['hidden', '!important'],\n padding: [[0], '!important'],\n position: ['absolute', '!important'],\n width: ['1px', '!important'],\n\n /**\n * @desc preventing text to be condensed\n * @see https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n */\n whiteSpace: ['nowrap', '!important']\n};\nconst useStyles$q = createUseStyles({\n srOnly: visuallyHidden\n});\n/** default element for the visually hidden component */\n\nconst DEFAULT_ELEMENT = 'span';\n/**\n * A component to have visually hidden text still available to Assistive\n * Technologies, such as screen-readers.\n * All HTML properties are available on the selected `element` tag used.\n */\n\nfunction VisuallyHidden({\n element: Tag = DEFAULT_ELEMENT,\n className,\n ...props\n}) {\n const {\n srOnly\n } = useStyles$q();\n return React__default.createElement(Tag, {\n className: classNames(srOnly, className),\n ...props\n });\n}\n\nconst useCalendarStyles = createUseStyles({\n calendarPickerWrapper: {\n width: ({\n width\n }) => width,\n height: ({\n height\n }) => height,\n border: '1px solid #CCCCCC',\n padding: '10px',\n background: '#FFFFFF',\n color: '#333333'\n },\n calendarControls: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: '20px'\n },\n button: {\n border: 'none',\n borderRadius: 0,\n background: 'transparent',\n width: '60px',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n backgroundColor: '#05467E',\n color: '#FFFFFF'\n }\n },\n comboboxWrapper: {\n display: 'flex',\n flexGrow: 1,\n '& > div': {\n width: '50%'\n }\n },\n monthWrapper: {\n display: 'grid',\n margin: '32px 0 0',\n gridTemplateColumns: `repeat(1, 100%)`,\n gridGap: '0 64px'\n }\n});\nconst useMonthStyles = createUseStyles({\n weekdayLabel: {\n textAlign: 'center',\n marginBottom: '10px',\n fontSize: '10px'\n },\n weekGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyContent: 'center'\n }\n});\nconst useDayStyles = createUseStyles({\n dayDefault: {\n padding: '8px',\n border: '1px solid #CCCCCC',\n borderRadius: '0',\n color: '#001217',\n backgroundColor: '#FFFFFF',\n '&:hover': {\n color: '#FFFFFF',\n backgroundColor: '#05467E',\n borderColor: '#05467E'\n }\n },\n daySelected: {\n color: '#FFFFFF',\n backgroundColor: '#71c9ed'\n },\n daySelectedFirstOrLast: {\n color: '#FFFFFF',\n backgroundColor: '#000000',\n borderColor: '#000000'\n },\n dayDisabled: {\n color: '#808285',\n backgroundColor: '#FFFFFF'\n }\n});\nconst COPY$9 = defineMessages({\n DAY_OF_MONTH: {\n id: 'Day.dayOfMonth',\n defaultMessage: '{dayInCalendar, date, full}',\n description: '[Type: label][Vis: high] - label for the full date'\n }\n});\n\nfunction Day({\n dayLabel,\n date,\n focusedDate,\n isDateSelected,\n isDateFocused,\n isDateHovered,\n onDateHover,\n onDateSelect,\n onDateFocus,\n isFirstOrLastSelectedDate\n}) {\n const dayRef = useRef(null);\n\n const fn = () => false;\n\n const {\n isSelected,\n isSelectedStartOrEnd,\n isWithinHoverRange,\n disabledDate,\n onClick,\n onKeyDown,\n onMouseEnter,\n tabIndex\n } = Ne({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked: fn,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef\n });\n useEffect(() => {\n if (dayRef && dayRef.current && isDateFocused(date)) {\n dayRef.current.focus();\n }\n }, [dayRef, date, isDateFocused]);\n const {\n dayDefault,\n daySelected,\n daySelectedFirstOrLast,\n dayDisabled\n } = useDayStyles();\n\n if (!dayLabel) {\n return React__default.createElement(\"div\", null);\n }\n\n return React__default.createElement(\"button\", {\n onClick: onClick,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n tabIndex: tabIndex,\n type: \"button\",\n ref: dayRef,\n \"aria-label\": t(COPY$9.DAY_OF_MONTH, {\n dayInCalendar: date\n }),\n className: classNames(dayDefault, {\n [daySelected]: isSelected || isWithinHoverRange,\n [daySelectedFirstOrLast]: isSelectedStartOrEnd,\n [dayDisabled]: disabledDate\n })\n }, dayLabel);\n}\n\nconst COPY$8 = defineMessages({\n DAY_OF_WEEK_LEGEND_SHORT: {\n id: 'Month.dayOfWeekLegendShort',\n defaultMessage: '{dayOfTheWeek, select, Mo {Mo} Tu {Tu} We {We} Th {Th} Fr {Fr} Sa {Sa} Su {Su}}',\n description: '[Type: label][Vis: high] - label for the day of the week in shorthand'\n },\n DAY_OF_WEEK_LEGEND_FULL: {\n id: 'Month.dayOfWeekLegendLong',\n defaultMessage: '{dayOfTheWeek, select, Mo {Monday} Tu {Tuesday} We {Wednesday} Th {Thursday} Fr {Friday} Sa {Saturday} Su {Sunday}}',\n description: '[Type: label][Vis: high] - label for the day of the week'\n }\n});\n\nfunction Month({\n year,\n month,\n firstDayOfWeek,\n ...dayProps\n}) {\n const {\n days,\n weekdayLabels\n } = de({\n year,\n month,\n firstDayOfWeek\n });\n const {\n weekdayLabel,\n weekGrid\n } = useMonthStyles();\n return React__default.createElement(\"div\", null, React__default.createElement(\"div\", {\n className: weekGrid,\n id: \"dayGrid\",\n role: \"grid\"\n }, weekdayLabels.map(dayLabel => React__default.createElement(\"div\", {\n className: weekdayLabel,\n key: dayLabel,\n role: \"columnheader\"\n }, React__default.createElement(\"span\", {\n role: \"presentation\"\n }, React__default.createElement(T, {\n desc: COPY$8.DAY_OF_WEEK_LEGEND_SHORT,\n values: {\n dayOfTheWeek: dayLabel\n }\n })), React__default.createElement(VisuallyHidden, null, React__default.createElement(T, {\n desc: COPY$8.DAY_OF_WEEK_LEGEND_FULL,\n values: {\n dayOfTheWeek: dayLabel\n }\n })))), days.map((day, index) => {\n if (typeof day === 'object') {\n return React__default.createElement(Day, {\n date: day.date,\n key: day.dayLabel,\n dayLabel: day.dayLabel,\n ...dayProps\n });\n }\n\n const emptyDayKey = `empty-day-${index}`;\n return React__default.createElement(\"div\", {\n key: emptyDayKey\n });\n })));\n}\n\nconst COPY$7 = defineMessages({\n PREVIOUS_MONTH: {\n id: 'CalendarPicker.previousMonth',\n defaultMessage: 'Previous Month',\n description: '[Type: button][Vis: high] - button label to go to previous month'\n },\n NEXT_MONTH: {\n id: 'CalendarPicker.nextMonth',\n defaultMessage: 'Next Month',\n description: '[Type: button][Vis: high] - button label to go to next month'\n },\n MONTH_SELECT: {\n id: 'CalendarPicker.month',\n defaultMessage: 'Select a month',\n description: '[Type: label][Vis: high] - label for month selection combo box'\n },\n YEAR_SELECT: {\n id: 'CalendarPicker.year',\n defaultMessage: 'Select a year',\n description: '[Type: label][Vis: high] - label for year selection combo box'\n },\n MONTHS: {\n id: 'CalendarPicker.months',\n defaultMessage: '{months, select, January {January} February {February} March {March} April {April} May {May} June {June} July {July} August {August} September {September} October {October} November {November} December {December}}',\n description: '[Type: label][Vis: high] - label for the months'\n }\n});\nconst startingYear = new Date().getFullYear() - 200;\nconst yearOptions = [...Array(251)].map((_, year) => ({\n label: `${startingYear + year}`,\n value: `${startingYear + year}`\n}));\n\nfunction getPreviousMonth(currentMonth) {\n let newDate;\n\n if (currentMonth.getMonth() - 1 < 0) {\n newDate = new Date(currentMonth.getFullYear() - 1, 11, currentMonth.getDate());\n } else {\n const prevMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), 0).getDate();\n\n if (currentMonth.getDate() > prevMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, prevMonthLastDay);\n } else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, currentMonth.getDate());\n }\n }\n\n return newDate;\n}\n\nfunction getNextMonth(currentMonth) {\n let newDate;\n\n if (currentMonth.getMonth() + 1 > 11) {\n newDate = new Date(currentMonth.getFullYear() + 1, 0, currentMonth.getDate());\n } else {\n const nextMonthLastDay = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 2, 0).getDate();\n\n if (currentMonth.getDate() > nextMonthLastDay) {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, nextMonthLastDay);\n } else {\n newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, currentMonth.getDate());\n }\n }\n\n return newDate;\n}\n\nconst comboBoxSeedId = 'calendar-picker-combobox';\n\nfunction CalendarPicker({\n onDaySelect,\n onDateChange,\n initialSelectedDate = new Date(),\n width = '300px',\n height = 'auto',\n startingDayOfWeek = 0\n}) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input']\n });\n const comboboxId = useMemo(() => uniqueId(comboBoxSeedId), []);\n const selectId = useMemo(() => uniqueId('calendar-picker-select'), []);\n const [state, setState] = useState(initialSelectedDate);\n\n const handleDateChange = ({\n startDate\n }) => {\n const d = startDate !== null && startDate !== void 0 ? startDate : new Date();\n setState(d);\n onDaySelect === null || onDaySelect === void 0 ? void 0 : onDaySelect(d);\n };\n\n const {\n firstDayOfWeek,\n activeMonths,\n isDateSelected,\n isDateHovered,\n isFirstOrLastSelectedDate,\n isDateFocused,\n focusedDate,\n onDateHover,\n onDateSelect,\n onDateFocus,\n goToDate\n } = Ye({\n startDate: state,\n endDate: null,\n focusedInput: Pe,\n onDatesChange: handleDateChange,\n numberOfMonths: 1,\n\n /*\n * minBookingDays and exactBookingDays are used to remove the date range feature\n * see: https://github.com/tomgreenwood1/react-datepicker/tree/f2b1969cb4808c68d578428c4c5e6ed98c96461e/packages/hooks#exactminbookingdays-boolean--undefined-default-false\n */\n minBookingDays: 1,\n exactMinBookingDays: true,\n\n /*\n * firstDayofWeek is used to set the first day of the week. 0 = Sunday, 1 = Monday, etc.\n */\n firstDayOfWeek: startingDayOfWeek\n });\n const currentMonth = activeMonths[0];\n const {\n comboboxWrapper,\n calendarControls,\n calendarPickerWrapper,\n button,\n monthWrapper\n } = useCalendarStyles({\n height,\n width\n }); // populate monthOptions array\n\n const monthNames = [t(COPY$7.MONTHS, {\n months: 'January'\n }), t(COPY$7.MONTHS, {\n months: 'February'\n }), t(COPY$7.MONTHS, {\n months: 'March'\n }), t(COPY$7.MONTHS, {\n months: 'April'\n }), t(COPY$7.MONTHS, {\n months: 'May'\n }), t(COPY$7.MONTHS, {\n months: 'June'\n }), t(COPY$7.MONTHS, {\n months: 'July'\n }), t(COPY$7.MONTHS, {\n months: 'August'\n }), t(COPY$7.MONTHS, {\n months: 'September'\n }), t(COPY$7.MONTHS, {\n months: 'October'\n }), t(COPY$7.MONTHS, {\n months: 'November'\n }), t(COPY$7.MONTHS, {\n months: 'December'\n })];\n const monthOptions = monthNames.map(name => ({\n label: name,\n value: name\n }));\n\n const getMonthLabel = monthNamesIndex => {\n return monthNames[monthNamesIndex];\n };\n\n const handleMonthChange = e => {\n const monthIndex = monthOptions.findIndex(i => i.value === e.target.value);\n const newDate = new Date(currentMonth.year, monthIndex, state.getDate());\n\n if (monthIndex !== -1) {\n goToDate(newDate);\n setState(newDate);\n onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(newDate);\n }\n };\n\n const handleYearChange = e => {\n if (e.value.length >= 4) {\n const newDate = new Date(parseInt(e.value, 10), currentMonth.month, state.getDate());\n goToDate(newDate);\n setState(newDate);\n onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(newDate);\n }\n };\n\n const handleGoToPreviousMonths = () => {\n const newDate = getPreviousMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(newDate);\n };\n\n const handleGoToNextMonths = () => {\n const newDate = getNextMonth(state);\n setState(newDate);\n goToDate(newDate);\n onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(newDate);\n };\n\n return React__default.createElement(\"div\", {\n className: calendarPickerWrapper,\n \"data-testid\": \"CalendarPicker\",\n ref: focusTrapRef\n }, React__default.createElement(\"div\", {\n className: calendarControls\n }, React__default.createElement(\"button\", {\n type: \"button\",\n onClick: handleGoToPreviousMonths,\n className: button,\n \"aria-label\": t(COPY$7.PREVIOUS_MONTH),\n \"data-testid\": \"previous-month-button\"\n }, React__default.createElement(CaretLeftOutlineIcon, null)), React__default.createElement(\"div\", {\n className: comboboxWrapper\n }, React__default.createElement(\"div\", null, React__default.createElement(NativeSelect, {\n id: selectId,\n value: getMonthLabel(currentMonth.month),\n onChange: handleMonthChange\n }, monthOptions.map(option => React__default.createElement(SelectAnswerOption, {\n value: option.value,\n label: option.value,\n key: option.value\n })))), React__default.createElement(\"div\", null, React__default.createElement(ComboBox, {\n id: comboboxId,\n \"aria-label\": t(COPY$7.YEAR_SELECT),\n options: yearOptions,\n value: currentMonth.year.toString(),\n onChange: handleYearChange\n }))), React__default.createElement(\"button\", {\n type: \"button\",\n onClick: handleGoToNextMonths,\n className: button,\n \"aria-label\": t(COPY$7.NEXT_MONTH),\n \"data-testid\": \"next-month-button\"\n }, React__default.createElement(CaretRightOutlineIcon, null))), React__default.createElement(\"div\", {\n className: monthWrapper\n }, React__default.createElement(Month, {\n year: currentMonth.year,\n month: currentMonth.month,\n firstDayOfWeek: firstDayOfWeek,\n onChange: goToDate,\n focusedDate: focusedDate,\n isDateSelected: isDateSelected,\n isDateFocused: isDateFocused,\n isDateHovered: isDateHovered,\n onDateHover: onDateHover,\n onDateSelect: onDateSelect,\n onDateFocus: onDateFocus,\n isFirstOrLastSelectedDate: isFirstOrLastSelectedDate\n })));\n}\n\nconst useStyles$p = createUseStyles({\n container: {\n visibility: ({\n calendarVisibility\n }) => {\n return calendarVisibility ? 'visible' : 'hidden';\n }\n }\n});\nconst DisclosureContainer = forwardRef(function DisclosureContainer({\n onClose,\n visible = false,\n className,\n ...props\n}, ref) {\n const focusTrapRef = useFocusTrap({\n selectors: ['button:not([tabindex=\"-1\"])', 'input']\n });\n const disclosureRef = useForkRef(focusTrapRef, ref);\n useEffect(() => {\n const handleKeyDown = e => {\n if (e.key === 'Escape') {\n onClose === null || onClose === void 0 ? void 0 : onClose();\n }\n };\n\n const handleClick = e => {\n var _a;\n\n const target = e.target;\n const clickedOutside = !((_a = focusTrapRef.current) === null || _a === void 0 ? void 0 : _a.contains(target));\n const comboBoxOptionClicked = !target.id.startsWith(comboBoxSeedId);\n\n if (visible && clickedOutside && comboBoxOptionClicked) {\n onClose === null || onClose === void 0 ? void 0 : onClose();\n }\n };\n\n if (visible) {\n /*\n * RAWR-1437\n * Delay setting up the EventListener to after the current render, otherwise the handleClick triggers\n * when the calendar first opens and closes the calendar right away.\n */\n setTimeout(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('click', handleClick);\n }, 0);\n } else {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n }\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClick);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible]);\n const {\n container\n } = useStyles$p({\n calendarVisibility: visible\n });\n return React__default.createElement(\"div\", {\n ref: disclosureRef,\n className: classNames(container, className),\n ...props\n });\n}); // constants.ts\n\nconst US_DATE_FORMAT = 'MM/DD/YYYY';\nconst EURO_DATE_FORMAT = 'DD/MM/YYYY';\n\nconst validDateStringCheck = dateString => {\n const badValues = ['0', ' '];\n const isValid = dateString.every(value => {\n // eslint-disable-next-line no-restricted-globals\n return badValues.indexOf(value) === -1 && !isNaN(parseInt(value, 10));\n });\n return dateString.length === 3 && isValid;\n};\n\nconst toDateString = (date, format = US_DATE_FORMAT) => {\n if (!date) {\n return '';\n }\n\n const segments = date.toISOString().split('T')[0].split('-');\n const [y, m, d] = segments.map(s => s);\n\n if (format === US_DATE_FORMAT) {\n return `${m}/${d}/${y}`;\n }\n\n return `${d}/${m}/${y}`;\n};\n\nconst stringToDate = (dateString, format = US_DATE_FORMAT) => {\n if (!dateString) {\n return new Date();\n }\n\n if (!validDateStringCheck(dateString.split('/'))) {\n return new Date();\n }\n\n if (format === EURO_DATE_FORMAT) {\n const [d, m, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n }\n\n const [m, d, y] = dateString.split('/');\n return new Date(`${y.padStart(4, '0')}-${m.padStart(2, '0')}-${d.padStart(2, '0')}T00:00:00`);\n};\n\nconst useStyles$o = createUseStyles(theme => {\n return {\n container: {\n position: 'relative'\n },\n dateInputWrapper: {\n display: 'flex',\n alignItems: 'center'\n },\n dateInput: {\n maxWidth: '175px',\n maxHeight: '36px',\n padding: '6px 36px 6px 6px'\n },\n calendarButton: {\n borderRadius: 'none',\n border: 'none',\n marginLeft: '-37px',\n height: '34px',\n width: '36px',\n fontSize: '15px',\n color: '#404040',\n backgroundColor: '#EFEFEF',\n '&:focus, &:hover': {\n cursor: 'pointer',\n outline: `2px solid ${theme.primaryAccentColor}`,\n background: 'linear-gradient(0deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.2) 30%, #EFEFEF 100%)'\n },\n '&:focus': {\n borderRadius: '3px'\n },\n '&:active': {\n background: 'linear-gradient(0deg, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.4) 30%, #EFEFEF 100%)'\n },\n '&:disabled': {\n opacity: '.5'\n }\n },\n calendarWrapper: {\n position: 'absolute',\n bottom: ({\n calendarPosition\n }) => calendarPosition,\n zIndex: 100\n },\n commentLabel: {\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n marginBottom: 5,\n display: 'block',\n fontSize: '14px'\n }\n };\n});\nconst COPY$6 = defineMessages({\n DATE_LABEL: {\n id: 'DateInput.dateLabel',\n defaultMessage: 'Date',\n description: '[Type: label][Vis: high] - label for date input'\n },\n DATE_BUTTON_LABEL: {\n id: 'DateInput.dateButton',\n defaultMessage: 'Open calendar',\n description: '[Type: button][Vis: high] - aria text for opening the calendar picker'\n }\n});\n\nfunction DateInput({\n onChange,\n dateFormat = US_DATE_FORMAT,\n value,\n defaultValue,\n id,\n className,\n required,\n 'aria-describedby': ariaDescribedBy\n}) {\n const [calendarVisibility, setCalendarVisibility] = useState(false);\n const dateInputID = useMemo(() => uniqueId('date-input-'), []);\n const inputRef = useRef(null);\n const calendarButtonRef = useRef(null);\n const disclosureRef = useRef(null);\n const calendarPosition = useRef('100%');\n useSSRSafeLayoutEffect(() => {\n if (inputRef.current && disclosureRef.current) {\n const inputBound = inputRef.current.getBoundingClientRect();\n const disclosureBound = disclosureRef.current.getBoundingClientRect();\n\n if (inputBound.top < disclosureBound.height) {\n // not enough space\n calendarPosition.current = 'auto';\n } else {\n calendarPosition.current = '100%';\n }\n }\n }, [calendarVisibility]);\n const lastFocus = useRef(null);\n\n const handleCalendarVisibility = () => {\n lastFocus.current = document.activeElement;\n setCalendarVisibility(s => {\n return !s;\n });\n };\n\n const handleDisclosureClose = () => {\n var _a;\n\n (_a = lastFocus.current) === null || _a === void 0 ? void 0 : _a.focus();\n setCalendarVisibility(false);\n };\n\n const handleDaySelect = date => {\n const dateString = toDateString(date, dateFormat);\n onChange === null || onChange === void 0 ? void 0 : onChange(dateString);\n handleDisclosureClose();\n };\n\n const handleInputChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);\n };\n\n const {\n dateInput,\n calendarButton,\n calendarWrapper,\n commentLabel,\n dateInputWrapper,\n container\n } = useStyles$o({\n calendarPosition: calendarPosition.current\n });\n return React__default.createElement(\"div\", {\n className: classNames(container, className),\n id: id\n }, React__default.createElement(\"label\", {\n htmlFor: dateInputID,\n className: commentLabel\n }, React__default.createElement(T, {\n desc: COPY$6.DATE_LABEL\n })), React__default.createElement(\"div\", {\n className: dateInputWrapper\n }, React__default.createElement(TextInput$1, {\n \"data-testid\": \"DateInput\",\n className: dateInput,\n maxLength: 10,\n onChange: handleInputChange,\n defaultValue: defaultValue,\n value: value,\n ref: inputRef,\n placeholder: dateFormat,\n id: dateInputID,\n \"aria-describedby\": ariaDescribedBy,\n required: required\n }), React__default.createElement(\"button\", {\n type: \"button\",\n ref: calendarButtonRef,\n className: calendarButton,\n onClick: handleCalendarVisibility,\n \"aria-expanded\": calendarVisibility,\n \"aria-label\": t(COPY$6.DATE_BUTTON_LABEL)\n }, React__default.createElement(CalendarIcon, null))), React__default.createElement(DisclosureContainer, {\n className: calendarWrapper,\n onClose: handleDisclosureClose,\n ref: disclosureRef,\n visible: calendarVisibility,\n \"data-testid\": \"DisclosureContainer\"\n }, React__default.createElement(CalendarPicker, {\n onDaySelect: handleDaySelect,\n initialSelectedDate: stringToDate(value, dateFormat)\n })));\n}\n\nconst useStyles$n = createUseStyles(theme => ({\n container: {\n display: 'flex'\n },\n inputContainer: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n label: {\n fontSize: '14px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n width: '100%',\n display: 'block',\n marginBottom: '5px'\n },\n input: {\n /**\n * including specific height and width values to match production\n */\n maxWidth: '50px',\n maxHeight: '36px',\n textAlign: 'center'\n },\n separator: {\n width: '20px',\n height: '36px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n srOnly: { ...visuallyHidden\n }\n}));\nconst COPY$5 = defineMessages({\n TIME_LABEL: {\n id: 'TimeInput.timeLabel',\n defaultMessage: 'Time',\n description: '[Type: label][Vis: high] - label for time input'\n },\n HOUR_LABEL: {\n id: 'TimeInput.hour',\n defaultMessage: 'Hour',\n description: '[Type: label][Vis: high] - label for hour input'\n },\n MINUTES_LABEL: {\n id: 'TimeInput.minutes',\n defaultMessage: 'Minutes',\n description: '[Type: label][Vis: high] - label for minutes input'\n },\n DAYTIME_LABEL: {\n id: 'TimeInput.daytimeLabel',\n defaultMessage: 'AM/PM',\n description: '[Type: label][Vis: high] - label for daytime AM/PM select'\n },\n AM: {\n id: 'TimeInput.am',\n defaultMessage: 'AM',\n description: '[Type: label][Vis: high] - label for ante meridiem'\n },\n PM: {\n id: 'TimeInput.pm',\n defaultMessage: 'PM',\n description: '[Type: label][Vis: high] - label for post meridiem'\n }\n});\n\nfunction TimeInput({\n onChange,\n defaultValue = {\n hour: '',\n minute: '',\n period: 'AM'\n },\n id = uniqueId('TimeInput-'),\n className,\n required,\n 'aria-describedby': ariaDescribedBy\n}) {\n const [state, setState] = useState(defaultValue);\n const timeLabelID = `${id}-time-label`;\n const hourLabelID = `${id}-hour-label`;\n const hourInputID = `${id}-hour-input`;\n const minuteLabelID = `${id}-minute-label`;\n const minuteInputID = `${id}-minute-input`;\n const periodLabelID = `${id}-period-label`;\n const periodSelectID = `${id}-period-input`;\n\n const handleHourChange = e => {\n const newState = { ...state,\n hour: e.target.value\n }; // if hour is > 12, set daytime period to PM\n\n if (!Number.isNaN(parseInt(newState.hour, 10)) && parseInt(newState.hour, 10) > 12) {\n newState.period = 'PM';\n }\n\n if (!newState.period) {\n newState.period = 'AM';\n }\n\n setState(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleHourOnBlur = e => {\n const newState = { ...state\n }; // if hour is > 12, subtract 12 from the hour value to maintain 12 hour time\n\n if (!Number.isNaN(parseInt(e.target.value, 10)) && parseInt(e.target.value, 10) > 12) {\n newState.hour = String(parseInt(e.target.value, 10) - 12);\n setState(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n }\n };\n\n const handleMinuteChange = e => {\n const newState = { ...state,\n minute: e.target.value\n };\n setState(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleSelectChange = e => {\n const newState = { ...state,\n period: e.target.value\n };\n setState(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const {\n container,\n inputContainer,\n input,\n label,\n separator,\n srOnly\n } = useStyles$n();\n return React__default.createElement(\"div\", {\n className: classNames(container, className),\n id: id,\n \"data-testid\": \"TimeInput\"\n }, React__default.createElement(\"div\", {\n className: inputContainer\n }, React__default.createElement(\"div\", {\n className: label,\n id: timeLabelID\n }, React__default.createElement(T, {\n desc: COPY$5.TIME_LABEL\n })), React__default.createElement(\"label\", {\n htmlFor: hourInputID,\n id: hourLabelID,\n \"aria-labelledby\": `${timeLabelID} ${hourLabelID}`,\n className: srOnly\n }, React__default.createElement(T, {\n desc: COPY$5.HOUR_LABEL\n })), React__default.createElement(TextInput$1, {\n className: input,\n maxLength: 2,\n onChange: handleHourChange,\n onBlur: handleHourOnBlur,\n value: state.hour,\n placeholder: \"hh\",\n id: hourInputID,\n required: required,\n \"aria-describedby\": ariaDescribedBy\n }), React__default.createElement(\"span\", {\n className: separator\n }, \":\"), React__default.createElement(\"label\", {\n htmlFor: minuteInputID,\n id: minuteLabelID,\n \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`,\n className: srOnly\n }, React__default.createElement(T, {\n desc: COPY$5.MINUTES_LABEL\n })), React__default.createElement(TextInput$1, {\n className: input,\n maxLength: 2,\n onChange: handleMinuteChange,\n value: state.minute,\n placeholder: \"mm\",\n id: minuteInputID,\n \"aria-labelledby\": `${timeLabelID} ${minuteLabelID}`,\n required: required,\n \"aria-describedby\": ariaDescribedBy\n })), React__default.createElement(\"div\", null, React__default.createElement(\"label\", {\n id: periodLabelID,\n htmlFor: periodSelectID,\n className: label\n }, React__default.createElement(T, {\n desc: COPY$5.DAYTIME_LABEL\n })), React__default.createElement(NativeSelect, {\n id: periodSelectID,\n value: state.period,\n onChange: handleSelectChange,\n required: required\n }, React__default.createElement(SelectAnswerOption, {\n value: \"AM\",\n label: t(COPY$5.AM)\n }), React__default.createElement(SelectAnswerOption, {\n value: \"PM\",\n label: t(COPY$5.PM)\n }))));\n}\n\nconst useStyles$m = createUseStyles(theme => {\n const {\n fontSize,\n fontFamily,\n fontWeight\n } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: '7px',\n color: theme.answerColor\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n marginBottom: '14px'\n },\n inputContainer: {\n display: 'flex',\n gap: '35px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexDirection: 'column',\n gap: '5px'\n }\n },\n inlineErrorContainer: {\n padding: '10px 0',\n fontSize: '16px',\n fontWeight: theme.questionBody.fontWeight,\n fontFamily: theme.questionBody.fontFamily,\n '& ul': {\n padding: 0,\n margin: 0\n },\n '& ul li': {\n paddingBottom: '0.2rem',\n listStyle: 'none',\n '&:before': {\n content: '\"*\"',\n marginRight: '5px'\n }\n }\n }\n };\n});\nconst COPY$4 = defineMessages({\n ERROR_PROVIDE_DATE_INTL_FORMAT: {\n id: 'DateTime.errorProvideDateIntlFormat',\n defaultMessage: 'Please provide date in dd/mm/yyyy format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error'\n },\n ERROR_PROVIDE_DATE_US_FORMAT: {\n id: 'DateTime.errorProvideDateUsFormat',\n defaultMessage: 'Please provide date in mm/dd/yyyy format.',\n description: '[Type: label][Vis: high] - label for incorrect or missing date error'\n },\n ERROR_ENTER_HOURS: {\n id: 'DateTime.errorEnterHours',\n defaultMessage: 'Please enter hours from 0 to 12.',\n description: '[Type: label][Vis: high] - label for incorrect or missing hour input'\n },\n ERROR_ENTER_MINUTES: {\n id: 'DateTime.errorEnterMinutes',\n defaultMessage: 'Please enter minutes from 0 to 59.',\n description: '[Type: label][Vis: high] - label for incorrect or missing minute input'\n },\n ERROR_SELECT_PERIOD: {\n id: 'DateTime.errorSelectPeriod',\n defaultMessage: 'Please select AM/PM.',\n description: '[Type: label][Vis: high] - label for incorrect or missing period selection'\n }\n});\n\nfunction DateTime({\n id: questionId,\n required,\n choices = [],\n responses = [],\n showDate = true,\n showTime = true,\n onChange,\n inlineErrors = [],\n ...questionFieldProps\n}) {\n const [responseValues, setResponseValues] = useState(responses);\n const errorId = createErrorId(questionId);\n /** Translation keys may change so this separates the key from the message */\n\n const errorMessage = useMemo(() => {\n return {\n ERROR_PROVIDE_DATE_INTL_FORMAT: t(COPY$4.ERROR_PROVIDE_DATE_INTL_FORMAT),\n ERROR_PROVIDE_DATE_US_FORMAT: t(COPY$4.ERROR_PROVIDE_DATE_US_FORMAT),\n ERROR_ENTER_HOURS: t(COPY$4.ERROR_ENTER_HOURS),\n ERROR_ENTER_MINUTES: t(COPY$4.ERROR_ENTER_MINUTES),\n ERROR_SELECT_PERIOD: t(COPY$4.ERROR_SELECT_PERIOD)\n };\n }, []);\n\n const getDateValueById = id => {\n const choice = responseValues.find(item => item.id === id);\n return choice === null || choice === void 0 ? void 0 : choice.value.date;\n };\n\n const getTimeValueById = id => {\n const choice = responseValues.find(item => item.id === id);\n return {\n hour: choice === null || choice === void 0 ? void 0 : choice.value.hour,\n minute: choice === null || choice === void 0 ? void 0 : choice.value.minute,\n period: choice === null || choice === void 0 ? void 0 : choice.value.period\n };\n };\n\n const handleDateChange = (id, date) => {\n var _a;\n\n const newState = responseValues.filter(r => r.id !== id);\n const prevState = (_a = responseValues.find(r => r.id === id)) !== null && _a !== void 0 ? _a : {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM'\n }\n };\n\n if (date) {\n const newResponse = {\n id,\n value: { ...prevState.value,\n date\n }\n };\n newState.push(newResponse);\n }\n\n setResponseValues(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleTimeChange = (id, time) => {\n var _a;\n\n const newState = responseValues.filter(r => r.id !== id);\n const prevState = (_a = responseValues.find(r => r.id === id)) !== null && _a !== void 0 ? _a : {\n id,\n value: {\n date: '',\n hour: '',\n minute: '',\n period: 'AM'\n }\n };\n\n if (time) {\n const newResponse = {\n id,\n value: { ...prevState.value,\n ...time\n }\n };\n newState.push(newResponse);\n }\n\n setResponseValues(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const {\n container,\n label,\n inputContainer,\n inlineErrorContainer\n } = useStyles$m();\n return React__default.createElement(QuestionField, {\n id: questionId,\n \"data-testid\": \"DateTimeQuestionType\",\n ...questionFieldProps\n }, choices === null || choices === void 0 ? void 0 : choices.map(choice => {\n return React__default.createElement(\"div\", {\n className: container,\n key: choice.id,\n id: choice.id\n }, React__default.createElement(\"div\", {\n className: label\n }, choice.label), React__default.createElement(\"div\", {\n className: inputContainer\n }, showDate && React__default.createElement(DateInput, {\n onChange: date => handleDateChange(choice.id, date),\n value: getDateValueById(choice.id),\n required: required,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined\n }), showTime && React__default.createElement(TimeInput, {\n onChange: time => handleTimeChange(choice.id, time),\n defaultValue: getTimeValueById(choice.id),\n required: required\n })), inlineErrors.length > 0 && React__default.createElement(\"div\", {\n className: inlineErrorContainer\n }, React__default.createElement(\"ul\", null, inlineErrors.filter(e => e.fieldId === choice.id).map(error => React__default.createElement(\"li\", {\n key: `${error.fieldId}-${error.detail}`\n }, errorMessage[error.detail])))));\n }));\n}\n\nvar DateTime$1 = withErrorBoundary(DateTime);\nconst useStyles$l = createUseStyles(theme => {\n var _a;\n\n const defaultFontSize = theme.fontSize.body;\n const {\n fontFamily = 'inherit',\n fontWeight = 'inherit',\n fontStyle = 'inherit',\n textDecoration = 'inherit',\n highlightColor = 'inherit',\n color = 'inherit'\n } = (_a = theme.questionBody) !== null && _a !== void 0 ? _a : {};\n return {\n otherStyles: {\n marginTop: '5px',\n display: 'block'\n },\n hiddenInput: {\n display: 'none'\n },\n commentChoice: {\n marginTop: 10\n },\n label: {\n display: 'block',\n marginTop: '10px',\n position: 'relative',\n fontFamily,\n fontWeight,\n fontStyle,\n textDecoration,\n highlightColor,\n color,\n fontSize: defaultFontSize\n }\n };\n});\n/**\n * MultipleChoice Question Type (Tier 2)\n */\n\nfunction Dropdown({\n id: questionId,\n disabled,\n required: _required,\n readOnly: _readOnly,\n choices = [],\n choiceOther,\n choiceComment,\n responses: defaultResponses = [],\n onChange,\n ...fieldProps\n}) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n\n const {\n options,\n sortableOptions,\n otherOption,\n commentOption\n } = useQuestionChoices([...choices, choiceOther, choiceComment]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n const {\n otherStyles,\n hiddenInput,\n commentChoice\n } = useStyles$l();\n /**\n * Default value by id\n * used for text-input based choices\n */\n\n const getDefaultValueById = id => {\n const defaultChoice = defaultResponses.find(c => c.id === id);\n return defaultChoice === null || defaultChoice === void 0 ? void 0 : defaultChoice.value;\n };\n /**\n * Default value for the choices\n */\n\n\n const defaultValue = useMemo(() => {\n var _a;\n\n return (_a = defaultResponses.find(c => c.type !== 'COMMENT')) === null || _a === void 0 ? void 0 : _a.id; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /**\n * Other Answer Textfield state\n */\n\n const [otherText, setOtherText] = useState(otherOption && getDefaultValueById(otherOption.id) || '');\n\n const handleSelectChange = e => {\n const choiceData = options.find(c => c.id === e.target.value);\n const responses = responseValue.filter(c => c.type === 'COMMENT');\n\n if (choiceData) {\n const {\n id,\n type\n } = choiceData;\n\n if (type === 'ANSWER') {\n /** Want to update the value with the value of the TextField texts, when otherAnswer is selected */\n responses.push({\n id,\n type,\n value: otherText\n });\n } else {\n responses.push({\n id,\n type,\n value: e.target.value\n });\n }\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n /**\n * Other Answer Textfield Change\n */\n\n\n const handleTextChange = e => {\n const choiceData = options.find(c => c.type === 'ANSWER');\n const responses = responseValue.filter(c => c.type === 'COMMENT');\n\n if (choiceData) {\n const {\n id,\n type\n } = choiceData;\n responses.push({\n id,\n type,\n value: e.target.value\n });\n setOtherText(e.target.value);\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const handleCommentChange = e => {\n const choiceData = options.find(c => c.id === e.target.id);\n const responses = responseValue.filter(c => c.type !== 'COMMENT');\n\n if (choiceData && !!e.target.value) {\n const {\n id,\n type\n } = choiceData;\n responses.push({\n id,\n type,\n value: e.target.value\n });\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const isOtherAnswerSelected = !!responseValue.find(c => c.type === 'ANSWER');\n const multipleTextLines = otherOption && (otherOption === null || otherOption === void 0 ? void 0 : otherOption.linesCount) > 1;\n return React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"DropdownQuestionType\",\n ...fieldProps\n }, React__default.createElement(NativeSelect, {\n defaultValue: defaultValue,\n disabled: disabled,\n onChange: handleSelectChange\n }, React__default.createElement(SelectAnswerOption, {\n value: undefined\n }), \" \", sortableOptions === null || sortableOptions === void 0 ? void 0 : sortableOptions.map(choice => {\n return React__default.createElement(SelectAnswerOption, {\n key: choice.id,\n id: choice.id,\n label: choice.label,\n value: choice.id\n });\n }), otherOption && React__default.createElement(SelectAnswerOption, {\n key: otherOption.id,\n id: otherOption.id,\n label: otherOption.label,\n value: otherOption.id\n })), otherOption && (multipleTextLines ? React__default.createElement(TextArea$1, {\n defaultValue: getDefaultValueById(otherOption.id),\n autoFocus: false,\n rows: otherOption.linesCount,\n cols: otherOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n onChange: handleTextChange,\n className: classNames(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected\n }),\n tabIndex: isOtherAnswerSelected ? 0 : -1\n }) : React__default.createElement(TextInput$1, {\n defaultValue: getDefaultValueById(otherOption.id),\n autoFocus: false,\n autoHeight: true,\n size: otherOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n onChange: handleTextChange,\n className: classNames(otherStyles, {\n [hiddenInput]: !isOtherAnswerSelected\n }),\n tabIndex: isOtherAnswerSelected ? 0 : -1\n })), commentOption && React__default.createElement(CommentChoice, {\n id: commentOption.id,\n label: commentOption.label,\n onChange: handleCommentChange,\n defaultValue: getDefaultValueById(commentOption.id),\n lineCount: commentOption.linesCount,\n charCount: commentOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n \"aria-describedby\": fieldProps.error && errorId,\n className: commentChoice\n }));\n}\n\nvar Dropdown$1 = withErrorBoundary(Dropdown);\nconst useStyles$k = createUseStyles(theme => ({\n imageChoice: {\n display: 'flex',\n position: 'relative'\n },\n labelContainer: ({\n checked,\n disabled\n }) => {\n var _a;\n\n const borderColor = disabled && !checked ? 'transparent' : theme.primaryAccentColor;\n return {\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n cursor: 'pointer',\n width: '100%',\n border: [1, 'solid', checked ? theme.questionColor : (_a = theme.questionBody.highlightColor) !== null && _a !== void 0 ? _a : 'rgb(208, 210, 211)'],\n borderRadius: 2,\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n ...theme.questionBody,\n '&:hover': {\n border: [1, 'solid', borderColor]\n },\n '&:focus-within': {\n border: [1, 'solid', borderColor]\n }\n };\n },\n controlImage: {\n position: 'absolute',\n right: '-1',\n top: '-1',\n width: '26px',\n height: '26px',\n transitionDuration: '0.3s',\n border: 'none',\n borderRadius: 2,\n zIndex: 10,\n transform: ({\n checked\n }) => checked ? 'scale(1)' : 'scale(0)'\n },\n optionLabel: ({\n checked\n }) => {\n var _a;\n\n return {\n padding: '9px 7px',\n width: '100%',\n wordWrap: 'break-word',\n fontWeight: checked ? 'bold' : 'normal',\n '&:focus-within': {\n background: (_a = theme.questionBody.highlightColor) !== null && _a !== void 0 ? _a : 'rgb(208, 210, 211)'\n }\n };\n },\n imageContainer: {\n paddingTop: '75%',\n width: '100%',\n position: 'relative',\n '& > img': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }\n },\n inputContainer: {\n width: '100%',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: '#EFEFEF'\n }\n}));\nconst useStyles$j = createUseStyles(theme => ({\n imageInput: ({\n checked,\n disabled,\n readOnly\n }) => {\n const checkBgColor = checked ? theme.questionColor : 'transparent';\n const backgroundColor = disabled || readOnly ? '#aaa' : checkBgColor;\n return {\n color: disabled || readOnly ? '#aaa' : theme.input.activeColor,\n border: 'none',\n borderRadius: 4,\n backgroundColor,\n '& .checkmark': {\n fill: contrastColor(theme.input.activeColor)\n },\n '& input': {\n cursor: 'pointer'\n }\n };\n }\n}));\n\nfunction ImageInput({\n className,\n type,\n ...props\n}, ref) {\n const {\n inputProps,\n styleProps\n } = useInputStyles(props);\n const {\n imageInput\n } = useStyles$j(styleProps);\n return React__default.createElement(BaseInput$1, {\n ref: ref,\n type: type,\n className: classNames(imageInput, className),\n icon: React__default.createElement(CheckboxIcon$1, null),\n ...inputProps\n });\n}\n\nvar ImageInput$1 = React__default.forwardRef(ImageInput);\n\nfunction ImageChoice$2({\n id,\n type,\n alt = '',\n label,\n src: imageSrc,\n className,\n checked,\n name,\n onChange,\n onKeyDown,\n onClick,\n disabled: disabledProp,\n 'aria-disabled': ariaDisabledProp,\n readOnly: readOnlyProp,\n 'aria-readonly': ariaReadOnlyProp,\n ...inputProps\n}, ref) {\n const handleChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: e.target.id,\n checked: e.target.checked,\n value: e.target.value\n });\n };\n\n const handleClick = e => {\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n\n if (e.isDefaultPrevented()) {\n return;\n }\n\n const target = e.target;\n let checkVal = true;\n\n if (!inputProps.required && checked) {\n checkVal = false;\n }\n\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: target.id,\n checked: checkVal,\n value: target.value\n });\n };\n\n const handleKeyboard = e => {\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n\n if (e.isDefaultPrevented()) {\n return;\n }\n\n const target = e.target;\n\n if (!inputProps.required && checked && e.code === 'Space') {\n e.preventDefault();\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: target.id,\n checked: false,\n value: target.value\n });\n }\n };\n\n const disabled = disabledProp || ariaDisabledProp === 'true';\n const readOnly = readOnlyProp || ariaReadOnlyProp === 'true';\n const {\n imageChoice,\n controlImage,\n inputContainer,\n labelContainer,\n optionLabel,\n imageContainer\n } = useStyles$k({\n disabled,\n readOnly,\n checked\n });\n const imageId = `${id}-image`;\n const labelId = `${id}-label`;\n const ariaDescribeId = alt ? imageId : undefined;\n const imageInputEvents = type === 'radio' ? {\n onClick: handleClick,\n onKeyDown: handleKeyboard,\n onChange: handleChange\n } : {\n onChange: handleChange\n };\n return React__default.createElement(\"div\", {\n className: imageChoice\n }, React__default.createElement(\"label\", {\n htmlFor: id,\n className: classNames(labelContainer, className),\n tabIndex: -1\n }, React__default.createElement(\"div\", {\n className: inputContainer\n }, React__default.createElement(ImageInput$1, {\n \"aria-labelledby\": labelId,\n \"aria-describedby\": ariaDescribeId,\n ref: ref,\n checked: checked,\n className: controlImage,\n id: id,\n type: type,\n value: id,\n name: name,\n ...inputProps,\n ...imageInputEvents\n }), React__default.createElement(\"div\", {\n className: imageContainer\n }, React__default.createElement(\"img\", {\n id: imageId,\n src: imageSrc,\n alt: alt\n }))), label && React__default.createElement(\"span\", {\n id: labelId,\n className: optionLabel\n }, label)));\n}\n\nvar ImageChoiceOption = forwardRef(ImageChoice$2);\nconst useStyles$i = createUseStyles(theme => {\n var _a, _b, _c;\n\n const isFull = theme.layout.includes('CENTER') || theme.layout.includes('BANNER');\n const isThird = theme.layout.includes('THIRD');\n const isHalf = theme.layout.includes('HALF') || theme.layout.includes('FULL') && !theme.layout.includes('CENTER');\n const cols3 = 'repeat(3, minmax(0, 1fr))';\n const cols2 = 'repeat(2, minmax(0, 1fr))';\n const cols1 = 'minmax(0, 1fr)';\n return {\n imageChoiceContainer: {\n display: 'grid',\n flexWrap: 'wrap',\n gap: '25px',\n width: '100%',\n gridTemplateColumns: 'minmax(0, 1fr)',\n [`@media (min-width: ${(_a = theme.breakpoints) === null || _a === void 0 ? void 0 : _a.md.min})`]: {\n gridTemplateColumns: isFull || isThird ? cols2 : cols1\n },\n [`@media (min-width: ${(_b = theme.breakpoints) === null || _b === void 0 ? void 0 : _b.lg.min})`]: {\n gridTemplateColumns: () => {\n if (isFull || isThird) {\n return cols3;\n }\n\n if (isHalf) {\n return cols2;\n }\n\n return cols1;\n }\n },\n [`@media (min-width: ${(_c = theme.breakpoints) === null || _c === void 0 ? void 0 : _c.xl.min})`]: {\n gridTemplateColumns: isHalf ? cols2 : cols3\n }\n },\n imageChoice: {\n width: '100%'\n },\n noneOfTheAboveContainer: {\n marginTop: '15px'\n }\n };\n});\nconst INPUT_SIZE$1 = 20;\n\nfunction ImageChoice({\n id: questionId,\n readOnly,\n required,\n disabled,\n multiple = false,\n choices = [],\n choiceNoneOfTheAbove,\n onChange,\n responses = [],\n ...questionFieldProps\n}) {\n const imageChoiceType = multiple ? 'checkbox' : 'radio';\n const groupName = !multiple ? `${questionId}-imageChoice` : undefined;\n const errorId = createErrorId(questionId);\n const [selectedChoices, setSelectedChoices] = useState(responses);\n\n const handleChange = e => {\n const newState = !multiple ? [] : selectedChoices.filter(c => c.id !== e.id && c.type !== 'NOTA');\n\n if (e.checked) {\n newState.push({\n id: e.id,\n value: e.value\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const handleNAChange = e => {\n const newState = [];\n\n if (e.checked) {\n newState.push({\n id: e.id,\n value: e.value,\n type: 'NOTA'\n });\n }\n\n setSelectedChoices(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const isChecked = id => !!selectedChoices.find(item => item.id === id);\n\n const {\n imageChoiceContainer,\n imageChoice,\n noneOfTheAboveContainer\n } = useStyles$i();\n return React__default.createElement(QuestionField, {\n id: questionId,\n \"data-testid\": \"ImageChoiceQuestionType\",\n errorId: errorId,\n ...questionFieldProps\n }, React__default.createElement(\"div\", {\n className: imageChoiceContainer\n }, choices === null || choices === void 0 ? void 0 : choices.map(choice => {\n return React__default.createElement(ImageChoiceOption, {\n key: choice.id,\n id: choice.id,\n required: required,\n disabled: disabled,\n readOnly: readOnly,\n label: choice.label,\n onChange: handleChange,\n className: imageChoice,\n value: choice.id,\n src: choice.image.url,\n alt: choice.image.altText || '',\n name: groupName,\n type: imageChoiceType,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n checked: isChecked(choice.id)\n });\n })), choiceNoneOfTheAbove && (choiceNoneOfTheAbove === null || choiceNoneOfTheAbove === void 0 ? void 0 : choiceNoneOfTheAbove.visible) && React__default.createElement(\"div\", {\n className: noneOfTheAboveContainer\n }, React__default.createElement(Checkbox$3, {\n id: choiceNoneOfTheAbove.id,\n value: choiceNoneOfTheAbove.id,\n onChange: handleNAChange,\n checked: isChecked(choiceNoneOfTheAbove.id),\n disabled: disabled,\n readOnly: readOnly,\n \"aria-describedby\": questionFieldProps.error && errorId || undefined,\n inputSize: INPUT_SIZE$1\n }, choiceNoneOfTheAbove.label)));\n}\n\nvar ImageChoice$1 = withErrorBoundary(ImageChoice);\nconst useStyles$h = createUseStyles({\n imageStyles: {\n maxWidth: '100%',\n display: 'block'\n }\n});\n\nfunction Image({\n alt = '',\n className,\n ...props\n}) {\n const {\n imageStyles\n } = useStyles$h();\n return React__default.createElement(\"img\", {\n className: classNames(imageStyles, className),\n \"data-testid\": \"image\",\n alt: alt,\n ...props\n });\n}\n\nconst useStyles$g = createUseStyles(theme => {\n var _a, _b, _c, _d;\n\n return {\n presentationalTitleStyles: {\n fontFamily: (_a = theme.questionTitle.fontFamily) !== null && _a !== void 0 ? _a : 'inherit',\n fontSize: (_b = theme.questionTitle.fontSize) !== null && _b !== void 0 ? _b : '16px',\n fontWeight: (_c = theme.questionTitle.fontWeight) !== null && _c !== void 0 ? _c : theme.isAccessible ? 500 : 300,\n marginBottom: '24px',\n textDecoration: (_d = theme.questionTitle.textDecoration) !== null && _d !== void 0 ? _d : 'inherit'\n },\n buttonStyles: {\n marginTop: '20px'\n }\n };\n});\n\nfunction ImagePresentational({\n text,\n image,\n padding = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n },\n id,\n okButton = {\n visible: false\n }\n}) {\n const richTextId = `text-presentational-header-${id}`;\n const {\n presentationalTitleStyles,\n buttonStyles\n } = useStyles$g();\n const {\n visible: showButton,\n ...buttonProps\n } = okButton;\n return React__default.createElement(QuestionSpacing, {\n padding: padding,\n \"data-testid\": \"ImagePresentational\"\n }, text && React__default.createElement(RichText, {\n id: richTextId,\n element: \"div\",\n text: text,\n className: presentationalTitleStyles\n }), React__default.createElement(Image, { ...image\n }), showButton && React__default.createElement(Button, { ...buttonProps,\n className: buttonStyles\n }));\n}\n\nvar ImagePresentational$1 = withErrorBoundary(ImagePresentational);\nconst useStyles$f = createUseStyles(theme => ({\n radioInput: {\n '& label': {\n alignItems: 'baseline'\n }\n },\n labelContainer: {\n display: 'flex',\n flexDirection: 'column'\n },\n textInput: {\n opacity: ({\n checked\n }) => checked ? 1 : 0.5,\n cursor: ({\n checked\n }) => checked ? 'inherit' : 'pointer',\n marginTop: 5,\n marginLeft: 32,\n maxWidth: 'calc(100% - 32px)',\n [`@media (max-width: ${theme.breakpoints.xxs.max})`]: {\n marginLeft: 0,\n maxWidth: '100%'\n },\n // overwrite TextInput styles\n fontSize: theme.questionBody.fontSize,\n lineHeight: 'normal'\n },\n checkHover: {\n '&:hover': {\n outline: 'none'\n }\n }\n}));\n\nfunction RadioTextfield({\n refs,\n ...props\n}) {\n const {\n id,\n children: label,\n checked: checkedProp = false,\n value: valueProp,\n defaultValue,\n lineCount = 1,\n charCount = 50,\n maxLength,\n onClick,\n onChange,\n ...radioProps\n } = props;\n const radioGroup = useRadioGroup();\n const [checked, setChecked] = useState(checkedProp);\n const [value, setValue] = useState(defaultValue || valueProp);\n const radioInputRef = useRef(null);\n const radioRef = useForkRef(radioInputRef, refs === null || refs === void 0 ? void 0 : refs.radio);\n const textInputRef = useRef(null);\n const inputRef = useForkRef(textInputRef, refs === null || refs === void 0 ? void 0 : refs.text);\n const multipleTextLines = lineCount > 1;\n\n const handleValueChange = e => {\n radioGroup === null || radioGroup === void 0 ? void 0 : radioGroup.onChange(e);\n setValue(e.value);\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n\n const handleInputChange = e => {\n handleValueChange({\n id,\n value: e.target.value,\n checked\n });\n };\n\n const handleFocusChange = e => {\n handleValueChange({\n id,\n value: e.target.value,\n checked\n });\n };\n\n const handleClick = e => {\n var _a;\n /**\n * Selection via keyboard calls onClick event - check for\n * mouse-position to ensure we were called by a pointing device.\n */\n\n\n if (!checked && e.clientX !== 0 && e.clientY !== 0) {\n (_a = textInputRef === null || textInputRef === void 0 ? void 0 : textInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n\n setChecked(true);\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n\n useEffect(() => {\n setChecked(checkedProp);\n }, [checkedProp]);\n useEffect(() => {\n if ((radioGroup === null || radioGroup === void 0 ? void 0 : radioGroup.value) !== value) {\n setChecked(false);\n }\n }, [radioGroup, value]);\n const {\n radioInput,\n textInput,\n checkHover\n } = useStyles$f({\n checked\n });\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(Radio$1, {\n id: `radio-input-${id}`,\n checked: checked,\n value: value,\n onClick: handleClick,\n onChange: handleValueChange,\n className: radioInput,\n ref: radioRef,\n ...radioProps\n }, label), multipleTextLines ? React__default.createElement(TextArea$1, {\n id: `radio-field-${id}`,\n defaultValue: defaultValue,\n autoFocus: false,\n rows: lineCount,\n cols: charCount,\n maxLength: maxLength,\n onClick: handleClick,\n onChange: handleInputChange,\n onBlur: handleFocusChange,\n onFocus: handleFocusChange,\n className: classNames(textInput, {\n [checkHover]: !checked\n }),\n ref: inputRef,\n tabIndex: checked ? 0 : -1\n }) : React__default.createElement(TextInput$1, {\n id: `radio-field-${id}`,\n defaultValue: defaultValue,\n autoFocus: false,\n autoHeight: true,\n size: charCount,\n maxLength: maxLength,\n onClick: handleClick,\n onChange: handleInputChange,\n onBlur: handleFocusChange,\n onFocus: handleFocusChange,\n className: classNames(textInput, {\n [checkHover]: !checked\n }),\n ref: inputRef,\n tabIndex: checked ? 0 : -1\n }));\n}\n\nconst useStyles$e = createUseStyles({\n commentChoiceContainer: {\n marginTop: '10px'\n }\n});\nconst INPUT_SIZE = 20;\n/**\n * MultipleChoice Question Type (Tier 2)\n */\n\nfunction MultipleChoice({\n id: questionId,\n required,\n disabled,\n readOnly,\n columnLayout = 1,\n choices = [],\n choiceNoneOfTheAbove,\n choiceOther,\n choiceComment,\n responses: defaultResponses = [],\n onChange,\n ...fieldProps\n}) {\n const groupId = createFieldId(questionId);\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n\n const {\n options,\n sortableOptions,\n notaOption,\n otherOption,\n commentOption\n } = useQuestionChoices([...choices, choiceNoneOfTheAbove, choiceOther, choiceComment]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices\n */\n\n const getDefaultValueById = id => {\n const defaultChoice = defaultResponses.find(c => c.id === id);\n return defaultChoice === null || defaultChoice === void 0 ? void 0 : defaultChoice.value;\n };\n /**\n * Default value for the group\n */\n\n\n const defaultValue = useMemo(() => {\n var _a;\n\n return (_a = defaultResponses.find(c => c.type !== 'COMMENT')) === null || _a === void 0 ? void 0 : _a.value;\n }, // defaultValues should not be changed post render (breaks rules of controlled components)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /**\n * Determine if choice is selected\n * @return TRUE if the choice.id exists in responses\n */\n\n const isChecked = id => {\n return !!responseValue.find(c => c.id === id);\n };\n\n const handleRadioChange = e => {\n const choiceData = options.find(c => e.id.match(c.id));\n const responses = responseValue.filter(c => c.type === 'COMMENT');\n\n if (choiceData) {\n const {\n id,\n type\n } = choiceData;\n responses.push({\n id,\n type,\n value: e.value\n });\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const handleCommentChange = e => {\n const choiceData = options.find(c => c.id === e.target.id);\n const responses = responseValue.filter(c => c.type !== 'COMMENT');\n\n if (choiceData && !!e.target.value) {\n const {\n id,\n type\n } = choiceData;\n responses.push({\n id,\n type,\n value: e.target.value\n });\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n /**\n * deselect choice if the question is not required\n */\n\n\n const unCheckOption = () => {\n if (required) {\n return;\n }\n\n const responses = responseValue.filter(c => c.type === 'COMMENT');\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const handleClick = e => {\n // match is used since RadioTextfield applies a prefix\n // to maintain unique ID's'\n const input = e.target;\n const isSelected = responseValue.find(c => input.id.match(c.id));\n\n if (isSelected && input.checked) {\n e.preventDefault();\n unCheckOption();\n }\n };\n\n const handleKeyboard = e => {\n const isSelected = responseValue.find(c => e.target.id.match(c.id));\n\n if (isSelected && e.code === 'Space') {\n e.preventDefault();\n unCheckOption();\n }\n };\n\n const radioEvents = {\n onClick: handleClick,\n onKeyDown: handleKeyboard\n };\n const radioGroupProps = {\n disabled,\n readOnly,\n name: groupId,\n defaultValue,\n onChange: handleRadioChange\n };\n const {\n commentChoiceContainer\n } = useStyles$e();\n return React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"MultipleChoiceQuestionType\",\n ...fieldProps\n }, React__default.createElement(RadioGroup, { ...radioGroupProps\n }, React__default.createElement(QuestionAnswerLayoutTemplate, {\n gridCellMargin: [0, 2, 5, 2],\n otherCellMargin: [0, 2, 5, 2],\n columns: columnLayout,\n other: otherOption && React__default.createElement(RadioTextfield, {\n id: otherOption.id,\n checked: isChecked(otherOption.id),\n defaultValue: getDefaultValueById(otherOption.id),\n lineCount: otherOption.linesCount,\n charCount: otherOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n \"aria-describedby\": fieldProps.error && errorId,\n inputSize: INPUT_SIZE,\n ...radioEvents\n }, otherOption.label),\n noneOfTheAbove: notaOption && React__default.createElement(Radio$1, {\n id: notaOption.id,\n value: notaOption.id,\n checked: isChecked(notaOption.id),\n \"aria-describedby\": fieldProps.error && errorId,\n inputSize: INPUT_SIZE,\n ...radioEvents\n }, notaOption.label)\n }, sortableOptions.map(choice => React__default.createElement(Radio$1, {\n id: choice.id,\n key: choice.id,\n value: choice.id,\n checked: isChecked(choice.id),\n \"aria-describedby\": fieldProps.error && errorId,\n inputSize: INPUT_SIZE,\n ...radioEvents\n }, choice.label))), commentOption && React__default.createElement(CommentChoice, {\n id: commentOption.id,\n label: commentOption.label,\n onChange: handleCommentChange,\n defaultValue: getDefaultValueById(commentOption.id),\n lineCount: commentOption.linesCount,\n charCount: commentOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n \"aria-describedby\": fieldProps.error && errorId,\n className: commentChoiceContainer\n })));\n}\n\nconst useStyles$d = createUseStyles(theme => {\n const {\n fontSize,\n fontFamily,\n fontWeight\n } = theme.questionBody;\n return {\n container: {\n display: 'flex',\n flexDirection: 'row',\n wordBreak: 'break-word',\n marginBottom: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flexWrap: 'wrap'\n }\n },\n label: {\n fontSize,\n fontFamily,\n fontWeight,\n color: theme.questionColor,\n flex: '0 0 20%',\n marginRight: '7px',\n [`@media (max-width: ${theme.breakpoints.sm.min})`]: {\n flex: '0 0 100%',\n margin: '0 2px 2px 0'\n }\n },\n input: {\n marginTop: 'auto',\n flex: 'auto'\n }\n };\n});\n\nfunction MultipleTextbox({\n id: questionId,\n required,\n disabled,\n readOnly,\n choices = [],\n responses = [],\n onChange,\n size,\n ...fieldProps\n}) {\n const [responseValues, setResponseValues] = useState(responses);\n const {\n error,\n errorId = createErrorId(questionId)\n } = fieldProps;\n\n const getDefaultValueById = id => {\n const defaultChoice = responseValues.find(item => item.id === id);\n return defaultChoice === null || defaultChoice === void 0 ? void 0 : defaultChoice.value;\n };\n\n const handleChange = e => {\n const newState = responseValues.filter(response => response.id !== e.target.id);\n\n if (e.target.value) {\n const newResponse = {\n id: e.target.id,\n value: e.target.value\n };\n newState.push(newResponse);\n }\n\n setResponseValues(newState);\n onChange === null || onChange === void 0 ? void 0 : onChange(newState);\n };\n\n const {\n container,\n label,\n input\n } = useStyles$d();\n return React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"MultipleTextbox\",\n ...fieldProps\n }, choices === null || choices === void 0 ? void 0 : choices.map(choice => {\n const labelId = `${choice.id}-label`;\n return React__default.createElement(\"div\", {\n className: container,\n key: choice.id\n }, React__default.createElement(\"label\", {\n className: label,\n id: labelId,\n htmlFor: choice.id\n }, React__default.createElement(RichText, {\n element: \"span\",\n text: choice.label\n })), React__default.createElement(TextInput$1, {\n id: choice.id,\n defaultValue: getDefaultValueById(choice.id),\n required: required,\n disabled: disabled,\n readOnly: readOnly,\n size: size,\n onChange: handleChange,\n \"aria-invalid\": !!error,\n \"aria-describedby\": error && errorId,\n maxLength: TEXT_INPUT_MAX_CHARS,\n className: input\n }));\n }));\n}\n\nconst useStyles$c = createUseStyles(theme => {\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n npsContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minWidth: 230\n },\n npsLabel: {\n color: theme.questionColor,\n fontFamily: theme.questionBody.fontFamily,\n fontSize: 14,\n fontWeight: fontWeightOptions.light,\n lineHeight: 1.25\n },\n npsRatingButtonList: {\n margin: 0,\n padding: 0,\n display: 'inline-flex',\n listStyleType: 'none',\n border: [1, 'solid', theme.primaryAccentColor],\n borderRadius: 4,\n overflow: 'hidden',\n outline: [2, 'solid', 'transparent'],\n outlineOffset: 2,\n width: '100%'\n },\n npsRatingButton: ({\n isRTL\n }) => ({\n padding: 0,\n minWidth: 20,\n flex: '1 1 9.09%',\n '& + $npsRatingButton': {\n borderLeft: isRTL ? 0 : [2, 'solid', theme.primaryAccentColor],\n borderRight: isRTL ? [2, 'solid', theme.primaryAccentColor] : 0\n }\n }),\n minLabel: ({\n isRTL\n }) => ({\n margin: isRTL ? [0, 4, 2, 0] : [0, 0, 2, 4]\n }),\n maxLabel: ({\n isRTL\n }) => ({\n margin: isRTL ? [0, 0, 2, 4] : [0, 4, 2, 0]\n }),\n srOnly: visuallyHidden$1\n };\n});\nconst useStyles$b = createUseStyles(theme => {\n // theme.correctAnswerHighlightColor is the correct color, but not an accurate token.\n const focusBackgroundColor = theme.correctAnswerHighlightColor;\n return {\n container: {\n position: 'relative',\n display: 'flex',\n cursor: 'pointer'\n },\n radio: {\n appearance: 'none',\n outline: 'none',\n position: 'absolute',\n width: '1px',\n height: '1px',\n '&:focus + $label:before, &:hover + $label:before': {\n border: [2, 'solid', theme.primaryAccentColor],\n backgroundColor: focusBackgroundColor\n },\n '&:checked + $label': {\n backgroundColor: theme.questionColor,\n color: theme.primaryBackgroundColor,\n fontWeight: 'bold',\n transition: 'background 200ms ease'\n }\n },\n label: {\n position: 'relative',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: theme.primaryBackgroundColor,\n color: theme.questionColor,\n fontFamily: theme.fontFamily,\n fontSize: 15,\n fontWeight: 700,\n padding: [10, 0],\n width: '100%',\n '&:before': {\n content: \"''\",\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1\n }\n }\n };\n});\n\nfunction NpsRatingButton({\n id,\n className,\n children: label,\n component: Tag = 'div',\n ...props\n}) {\n const styles = useStyles$b();\n return React__default.createElement(Tag, {\n className: classNames(styles.container, className)\n }, React__default.createElement(\"input\", {\n id: id,\n type: \"radio\",\n className: styles.radio,\n ...props\n }), React__default.createElement(\"label\", {\n className: classNames(styles.label),\n htmlFor: id\n }, label));\n}\n\nconst COPY$3 = defineMessages({\n NPS_QUESTION_TITLE: {\n id: 'Nps.QUESTION_TITLE',\n defaultMessage: '
On a scale of {minValue} to {maxValue},
{heading}
{minValue} for {minLabelText}, {maxValue} for {maxLabelText}
',\n description: '[Type: header][Vis: high] - question title'\n }\n});\n\nfunction Nps({\n id: questionId,\n choices = [],\n className,\n title,\n rowId,\n responses: defaultResponses = [],\n onChange,\n ...fieldProps\n}) {\n var _a, _b, _c, _d;\n\n const defaultValue = useMemo(() => {\n var _a, _b;\n\n return (_b = (_a = defaultResponses.find(r => !!r.value)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const [responseValue, setResponseValue] = useState(defaultValue);\n\n const ratingChanged = ({\n target: {\n value: clickedAnswerValue\n }\n }) => {\n if (clickedAnswerValue) {\n setResponseValue(clickedAnswerValue);\n const response = [{\n id: rowId,\n value: clickedAnswerValue\n }];\n onChange === null || onChange === void 0 ? void 0 : onChange(response);\n }\n };\n\n const {\n isRTL\n } = useContext(L10NContext);\n const scaleId = createFieldId(questionId);\n const errorId = createErrorId(questionId);\n const {\n npsContainer,\n npsLabel,\n minLabel,\n maxLabel,\n srOnly,\n npsRatingButtonList,\n npsRatingButton\n } = useStyles$c({\n isRTL\n });\n const {\n heading\n } = title;\n const minFullLabel = (_b = (_a = choices[0]) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : '';\n const maxFullLabel = (_d = (_c = choices.slice(-1)[0]) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : '';\n const [minLabelText, minValue] = minFullLabel.split(' - ');\n const [maxLabelText, maxValue] = maxFullLabel.split(' - ');\n const instructionsId = `${questionId}-instructions`;\n const accessibleHeading = t(COPY$3.NPS_QUESTION_TITLE, {\n minValue,\n maxValue,\n minLabelText,\n maxLabelText,\n heading,\n instructionsId,\n srOnlyClass: classNames(srOnly)\n });\n const accessibleTitle = { ...title,\n heading: accessibleHeading\n };\n return React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"NpsQuestionType\",\n title: accessibleTitle,\n ...fieldProps\n }, React__default.createElement(\"div\", {\n id: scaleId,\n className: classNames(npsContainer, className)\n }, React__default.createElement(\"span\", {\n className: classNames(npsLabel, minLabel)\n }, minLabelText), React__default.createElement(\"span\", {\n className: classNames(npsLabel, maxLabel)\n }, maxLabelText), React__default.createElement(\"ol\", {\n className: classNames(npsRatingButtonList)\n }, choices.map(c => React__default.createElement(NpsRatingButton, {\n id: `${questionId}-${c.id}`,\n key: `${questionId}-${c.id}`,\n name: `${questionId}-rating`,\n value: c.id,\n component: \"li\",\n className: classNames(npsRatingButton),\n onChange: ratingChanged,\n defaultChecked: responseValue === c.id,\n \"aria-describedby\": instructionsId\n }, c.label.includes('-') ? c.label.split(' - ')[1] : c.label)))));\n}\n\nconst useStyles$a = createUseStyles({\n gridCell: {\n display: 'flex',\n flex: '1 auto'\n }\n});\n\nfunction GridCell({\n children,\n row,\n col,\n ...props\n}) {\n const {\n gridCell\n } = useStyles$a();\n return React__default.createElement(\"td\", {\n role: \"gridcell\",\n className: gridCell,\n tabIndex: -1,\n ...{\n col,\n row,\n ...props\n }\n }, children);\n}\n\nconst useStyles$9 = createUseStyles(theme => ({\n labelStyles: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n marginLeft: 20,\n width: 150,\n padding: 3\n },\n rowStyles: {\n display: 'flex',\n width: '100%',\n color: theme.answerColor,\n border: 'none',\n cursor: 'pointer',\n background: theme.questionBody.highlightColor,\n padding: 5\n }\n}));\n\nfunction GridRow({\n id: rowId,\n row: rowIndex,\n label,\n cells: columns,\n className,\n gridComponent\n}) {\n const {\n labelStyles,\n rowStyles\n } = useStyles$9();\n return React__default.createElement(\"tr\", {\n id: rowId,\n className: classNames(className, rowStyles),\n \"data-row\": true\n }, React__default.createElement(\"td\", {\n id: `${rowId}-header`,\n className: labelStyles\n }, React__default.createElement(RichText, {\n element: \"span\",\n text: label\n })), columns.map(({\n id: colId\n }, colIndex) => {\n const cellId = `${rowId}-${colId}-cell`;\n const props = {\n rowId,\n rowIndex,\n colId,\n colIndex,\n label,\n 'aria-labelledby': `${rowId}-header`\n };\n return React__default.createElement(GridCell, {\n id: cellId,\n key: cellId,\n row: rowIndex,\n col: colIndex\n }, gridComponent === null || gridComponent === void 0 ? void 0 : gridComponent({ ...props\n }));\n }));\n}\n\nconst useStyles$8 = createUseStyles(theme => ({\n gridStyles: {\n display: 'flex',\n flexWrap: 'wrap',\n color: theme.answerColor,\n border: 'none',\n '& tr:nth-child(odd)': {\n background: 'transparent'\n }\n },\n columnContainer: {\n display: 'flex',\n width: '100%'\n },\n columnHeader: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n flex: 1,\n padding: 3\n },\n columnBuffer: {\n width: '170px'\n }\n}));\n\nfunction MatrixGrid({\n id,\n className,\n rows,\n columns,\n gridComponent\n}) {\n const gridRef = useRef(null);\n const position = useRef({\n row: 0,\n col: 0\n });\n useEffect(() => {\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.setAttribute('tabindex', '0');\n });\n\n const handleDown = e => {\n var _a;\n\n const target = e.target;\n\n if (!((_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.contains(target))) {\n return;\n }\n\n const focusedElement = document.querySelector(`[col='${position.current.col}'][row='${position.current.row}'] [data-component]`);\n const nextColumn = position.current.col + 1;\n const nextRow = position.current.row + 1;\n const previousColumn = position.current.col - 1;\n const previousRow = position.current.row - 1;\n\n if (e.key === 'ArrowRight' && nextColumn < columns.length) {\n const nextElement = document.querySelector(`[col='${nextColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.setAttribute('tabindex', '-1');\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.focus();\n position.current = {\n col: nextColumn,\n row: position.current.row\n };\n }\n\n if (e.key === 'ArrowLeft' && previousColumn >= 0) {\n const nextElement = document.querySelector(`[col='${previousColumn}'][row='${position.current.row}'] [data-component]`);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.setAttribute('tabindex', '-1');\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.focus();\n position.current = {\n col: previousColumn,\n row: position.current.row\n };\n }\n\n if (e.key === 'ArrowUp' && previousRow >= 0) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${previousRow}'] [data-component]`);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.setAttribute('tabindex', '-1');\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.focus();\n position.current = {\n col: position.current.col,\n row: previousRow\n };\n }\n\n if (e.key === 'ArrowDown' && nextRow < rows.length) {\n const nextElement = document.querySelector(`[col='${position.current.col}'][row='${nextRow}'] [data-component]`);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.setAttribute('tabindex', '-1');\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.setAttribute('tabindex', '0');\n e.preventDefault();\n nextElement === null || nextElement === void 0 ? void 0 : nextElement.focus();\n position.current = {\n col: position.current.col,\n row: nextRow\n };\n }\n };\n\n const {\n gridStyles,\n columnContainer,\n columnHeader,\n columnBuffer\n } = useStyles$8();\n return (// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n React__default.createElement(\"table\", {\n onKeyDown: handleDown,\n tabIndex: -1,\n ref: gridRef\n }, React__default.createElement(\"tbody\", {\n id: id,\n className: classNames(className, gridStyles)\n }, React__default.createElement(\"tr\", {\n className: columnContainer\n }, React__default.createElement(\"td\", {\n className: columnBuffer\n }), columns.map(column => {\n return React__default.createElement(\"td\", {\n key: column.id,\n className: columnHeader\n }, React__default.createElement(RichText, {\n element: \"span\",\n text: column.label\n }));\n })), rows.map((row, rowIndex) => React__default.createElement(GridRow, {\n id: row.id,\n key: row.id,\n row: rowIndex,\n label: row.label,\n cells: columns,\n gridComponent: gridComponent\n }))))\n );\n}\n\nconst useStyles$7 = createUseStyles(theme => ({\n cellInputWrapper: ({\n checked\n }) => {\n const hoverBorderStyle = checked ? 'solid' : 'dashed';\n const borderColor = checked ? theme.questionColor : 'transparent';\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n border: [1, 'solid', borderColor],\n '&:hover': {\n border: [1, hoverBorderStyle, theme.questionColor]\n },\n backgroundColor: checked ? theme.input.bgColor : 'inherit',\n '&:focus-within': {\n backgroundColor: theme.input.bgColor\n },\n padding: 5,\n borderRadius: 4,\n cursor: 'pointer'\n };\n }\n}));\n\nfunction RatingInput({\n qid: questionId,\n grid,\n checked = false,\n multiple = false,\n className,\n onChange,\n ...props\n}) {\n const {\n rowId = '',\n colId = '',\n 'aria-labelledby': ariaLabelledBy\n } = grid || {};\n const Tag = multiple ? CheckboxInput$1 : RadioInput$1;\n const inputId = `${questionId}-${rowId}-${colId}`;\n\n const handleInputChange = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange({\n id: rowId,\n value: e.target.value,\n checked: e.target.checked\n });\n };\n\n const {\n cellInputWrapper\n } = useStyles$7({\n checked\n });\n return React__default.createElement(\"label\", {\n htmlFor: inputId,\n \"aria-labelledby\": ariaLabelledBy,\n className: cellInputWrapper\n }, React__default.createElement(Tag, {\n id: inputId,\n value: colId,\n \"data-component\": true,\n tabIndex: -1,\n checked: checked,\n onChange: handleInputChange,\n className: className,\n ...props\n }));\n}\n\nconst useStyles$6 = createUseStyles({\n gridComponentStyle: {\n display: 'flex',\n width: 20,\n height: 20\n },\n commentChoiceContainer: {\n width: '100%'\n }\n});\n\nfunction MatrixRating({\n id: questionId,\n multiple = false,\n choices = [],\n columnChoices = [],\n choiceNoneOfTheAbove,\n choiceComment,\n choiceOther,\n onChange,\n responses: defaultResponses = [],\n disabled: _disabled,\n readOnly: _ro,\n ...questionFieldProps\n}) {\n const errorId = createErrorId(questionId);\n /** Filter choices that exist and are visible */\n\n const {\n options,\n sortableOptions,\n notaOption,\n otherOption,\n commentOption\n } = useQuestionChoices([...choices, choiceNoneOfTheAbove, choiceOther, choiceComment]);\n const [responseValue, setResponseValue] = useState(defaultResponses);\n /**\n * Default value by id\n * used for text-input based choices (i.e. choiceComment)\n * Matrix provides a 2D Array construct\n */\n\n const getDefaultValueById = id => {\n var _a;\n\n const defaultChoice = defaultResponses.find(c => c.id === id);\n return (_a = defaultChoice === null || defaultChoice === void 0 ? void 0 : defaultChoice.value[0]) === null || _a === void 0 ? void 0 : _a.value;\n };\n\n const isChecked = (rowId, colId) => {\n return !!responseValue.find(r => r.id === rowId && r.value.find(c => c.id === colId));\n };\n\n const handleChange = (e, gridCell) => {\n const {\n id: rowId,\n value: colId,\n checked\n } = e;\n const isNa = gridCell.colIndex > columnChoices.length - 1;\n const type = isNa ? 'NOTA' : undefined;\n const prevRows = responseValue.filter(r => !(r.id === rowId || r.type === 'COMMENT'));\n const currentRow = !isNa && responseValue.find(r => r.id === rowId && r.type !== 'NOTA') || {\n id: rowId,\n value: [],\n type\n };\n const currentCols = multiple ? currentRow.value.filter(c => c.value !== colId) : [];\n\n if (checked) {\n currentCols.push({\n id: colId,\n value: colId\n });\n }\n\n currentRow.value = currentCols;\n const newRows = currentRow.value.length ? [currentRow] : [];\n const responses = [...prevRows, ...newRows];\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const handleCommentChange = e => {\n const choiceData = options.find(c => c.id === e.target.id);\n const responses = responseValue.filter(c => c.type !== 'COMMENT');\n\n if (choiceData && !!e.target.value) {\n const {\n id,\n type\n } = choiceData;\n const response = {\n id,\n type,\n value: e.target.value\n }; // @note: ensure to loop the values when transforming in RespWeb\n\n responses.push({\n id,\n type,\n value: [response]\n });\n }\n\n setResponseValue(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const {\n gridComponentStyle,\n commentChoiceContainer\n } = useStyles$6();\n return React__default.createElement(QuestionField, {\n id: questionId,\n \"data-testid\": \"MatrixRatingQuestionType\",\n errorId: errorId,\n ...questionFieldProps\n }, React__default.createElement(MatrixGrid, {\n id: questionId,\n columns: [...columnChoices, ...(notaOption ? [notaOption] : []), ...(otherOption ? [otherOption] : [])],\n rows: sortableOptions,\n // eslint-disable-next-line react/no-unstable-nested-components\n gridComponent: gridCell => React__default.createElement(RatingInput, {\n qid: questionId,\n grid: gridCell,\n multiple: multiple,\n checked: isChecked(gridCell.rowId, gridCell.colId),\n onChange: e => handleChange(e, gridCell),\n className: gridComponentStyle\n })\n }), commentOption && React__default.createElement(CommentChoice, {\n id: commentOption.id,\n label: commentOption.label,\n onChange: handleCommentChange,\n defaultValue: getDefaultValueById(commentOption.id),\n lineCount: commentOption.linesCount,\n charCount: commentOption.charsCount,\n maxLength: TEXT_INPUT_MAX_CHARS,\n // aria-describedby={fieldProps.error && errorId}\n className: commentChoiceContainer\n }));\n}\n\nconst useStyles$5 = createUseStyles(theme => {\n const {\n bgColor: listItemBackground,\n activeColor: listItemBorderActive\n } = theme.input;\n const flexStart = 'flex-start';\n const lineHeight = 1.25;\n const controlsPadding = 6;\n const controlsFontSize = 'inherit'; // helps align label-first-line to controls center\n\n const labelOffset = Math.floor(controlsPadding / lineHeight);\n return {\n rankItem: {\n position: 'relative',\n userSelect: 'none',\n display: 'flex',\n outline: 'none',\n fontSize: theme.questionBody.fontSize,\n lineHeight,\n color: theme.questionBody.color,\n zIndex: ({\n ghost\n }) => ghost ? 5 : 'auto',\n '&:active, &:focus, &:focus-within': {\n zIndex: 5\n },\n '&:active $content, &:focus-within $content': {\n outlineWidth: 1,\n outlineStyle: ({\n ghost\n }) => ghost ? 'dashed' : 'solid',\n outlineColor: listItemBorderActive\n },\n '&:active $content, &:focus $content': {\n outlineWidth: 3,\n outlineStyle: ({\n ghost\n }) => ghost ? 'dashed' : 'solid',\n outlineColor: listItemBorderActive\n }\n },\n orderIndex: {\n padding: '16px 10px 10px 5px',\n visibility: ({\n ranksVisible\n }) => ranksVisible ? 'visible' : 'hidden',\n minWidth: '45px',\n display: 'flex',\n justifyContent: 'flex-end'\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: flexStart,\n alignItems: flexStart,\n gap: 10,\n flex: '1 auto',\n borderWidth: 1,\n borderRadius: 4,\n borderStyle: 'solid',\n borderColor: 'transparent',\n background: isDark(theme.questionBody.color || '#fff') ? listItemBackground : 'rgba(255, 255, 255, 0.15)',\n padding: 10\n },\n dragHandle: {\n outline: 'none',\n visibility: ({\n ghost\n }) => ghost ? 'hidden' : 'visible',\n fontSize: controlsFontSize,\n lineHeight: 0,\n padding: controlsPadding,\n touchAction: 'none',\n '&::after': {\n content: \"''\",\n position: 'absolute',\n display: 'block',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n cursor: 'pointer'\n }\n },\n label: {\n visibility: ({\n ghost\n }) => ghost ? 'hidden' : 'visible',\n display: 'flex',\n justifyContent: flexStart,\n alignItems: flexStart,\n flex: '1 auto',\n paddingTop: labelOffset,\n '& iframe': {\n position: 'relative'\n }\n },\n controls: {\n visibility: ({\n ghost\n }) => ghost ? 'hidden' : 'visible',\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10,\n fontSize: controlsFontSize\n }\n };\n});\n\nfunction RankingRow({\n className,\n dragListeners,\n dragRef,\n ghost,\n id,\n position,\n label,\n controls,\n onFocus,\n ranksVisible = true,\n ...props\n}, ref) {\n const {\n rankItem,\n orderIndex,\n content: contentContainer,\n dragHandle: dragHandleContainer,\n label: labelContainer,\n controls: controlsContainer\n } = useStyles$5({\n ghost,\n ranksVisible\n });\n const labelId = `${id}-label`;\n const index = position !== null && position !== void 0 ? position : -1;\n const indexLabel = index >= 0 ? index + 1 : '';\n return React__default.createElement(\"li\", {\n id: id,\n className: classNames('rankItem', rankItem, className),\n \"aria-labelledby\": labelId,\n ref: ref,\n ...props\n }, React__default.createElement(\"span\", {\n className: classNames('OrderIndex', orderIndex),\n \"data-testid\": \"RankingRow__OrderIndex\",\n \"aria-hidden\": !ranksVisible\n }, indexLabel), React__default.createElement(\"div\", {\n className: classNames('rankItem__content', contentContainer)\n }, React__default.createElement(\"div\", {\n \"data-testid\": \"RankingRow__DragHandle\",\n className: classNames('rankItem__dragHandle', dragHandleContainer),\n onFocus: onFocus,\n \"data-pos\": index,\n ref: dragRef,\n ...dragListeners\n }, React__default.createElement(DragHandleIcon$1, {\n className: \"rankItem__dragHandleIcon\"\n })), React__default.createElement(\"div\", {\n \"data-testid\": \"RankingRow__Label\",\n className: classNames('rankItem__label', labelContainer)\n }, React__default.createElement(RichText, {\n id: labelId,\n element: \"div\",\n className: \"rankItem__richText\",\n translate: \"no\",\n text: label\n })), React__default.createElement(\"div\", {\n \"data-no-dnd\": \"true\",\n \"data-testid\": \"RankingRow__Controls\",\n className: classNames('rankItem__controls', controlsContainer)\n }, controls)));\n}\n\nvar RankingRow$1 = forwardRef(RankingRow);\n/**\n * OrderButton\n *\n * @todo: replace instances with reusable `Button` component that satisfies\n * all scenarios, variants and themes.\n */\n\nconst useStyles$4 = createUseStyles(theme => ({\n orderButton: {\n color: '#000',\n backgroundColor: '#fff',\n fontSize: 'inherit',\n border: [1, 'solid', '#000'],\n borderRadius: 4,\n padding: [6, 6],\n maxWidth: '100%',\n cursor: 'pointer',\n lineHeight: 0,\n '&:disabled > svg': {\n opacity: 0.5,\n cursor: 'default'\n },\n '&:focus:not(:disabled), &:focus-visible:not(:disabled), &:hover:not(:disabled)': {\n borderColor: theme.primaryAccentColor,\n outline: `2px solid ${theme.primaryAccentColor}`\n },\n outlineColor: theme.primaryAccentColor\n },\n srOnly: visuallyHidden\n}));\n\nfunction OrderButton({\n icon,\n children: label,\n className,\n ...props\n}) {\n const {\n orderButton,\n srOnly\n } = useStyles$4();\n return React__default.createElement(\"button\", {\n type: \"button\",\n className: classNames('order-button', orderButton, className),\n ...props\n }, icon, React__default.createElement(\"span\", {\n className: srOnly\n }, label));\n}\n\nconst useStyles$3 = createUseStyles({\n controlsContainer: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-around',\n gap: 10\n },\n applicableControl: {\n display: 'flex',\n alignItems: 'center',\n gap: 6\n }\n});\nconst COPY$2 = defineMessages({\n RANK_NA: {\n id: 'OrderControl.NA',\n defaultMessage: 'N/A',\n description: '[Type: label][Vis: high] - not applicable label'\n },\n ARIA_RANK_NA: {\n id: 'OrderControl.AriaNA',\n defaultMessage: 'Not Applicable',\n description: '[Type: label][Vis: high] - accessible not applicable label'\n }\n});\nconst RANK_DIRECTION_BACKWARD = -1;\nconst RANK_DIRECTION_FORWARD = 1;\n\nfunction OrderControl({\n id,\n labels,\n position,\n showApplicability = true,\n applicable: defaultApplicable = true,\n className,\n onApplicableChange,\n onOrderUp,\n onOrderDown,\n disableOrderUp = false,\n disableOrderDown = false,\n ...props\n}) {\n const [applicable, setApplicable] = useState(defaultApplicable);\n const currentIndex = position !== null && position !== void 0 ? position : -1;\n\n const handleOrderUp = _e => {\n onOrderUp === null || onOrderUp === void 0 ? void 0 : onOrderUp({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_BACKWARD\n });\n };\n\n const handleOrderDown = _e => {\n onOrderDown === null || onOrderDown === void 0 ? void 0 : onOrderDown({\n id,\n value: currentIndex,\n direction: RANK_DIRECTION_FORWARD\n });\n };\n\n const handleApplicableChange = e => {\n const isApplicable = !e.target.checked;\n onApplicableChange === null || onApplicableChange === void 0 ? void 0 : onApplicableChange({\n id,\n applicable: isApplicable\n });\n setApplicable(isApplicable);\n };\n\n const applicableId = `${id}-applicable`;\n const {\n controlsContainer,\n applicableControl\n } = useStyles$3();\n return React__default.createElement(\"div\", {\n id: id,\n className: classNames(controlsContainer, className),\n ...props\n }, React__default.createElement(OrderButton, {\n disabled: disableOrderUp || !applicable,\n onClick: handleOrderUp,\n icon: React__default.createElement(CaretUpOutlineIcon, null)\n }, labels.orderUpLabel), React__default.createElement(OrderButton, {\n disabled: disableOrderDown || !applicable,\n onClick: handleOrderDown,\n icon: React__default.createElement(CaretDownOutlineIcon, null)\n }, labels.orderDownLabel), showApplicability && React__default.createElement(\"label\", {\n className: classNames('order-na', applicableControl),\n htmlFor: applicableId,\n \"aria-label\": t(COPY$2.ARIA_RANK_NA)\n }, React__default.createElement(CheckboxInput$1, {\n id: applicableId,\n checked: !applicable,\n onChange: handleApplicableChange\n }), React__default.createElement(T, {\n desc: COPY$2.RANK_NA\n })));\n}\n\nconst useStyles$2 = createUseStyles({\n item: {},\n itemDisabled: {\n '& .rankItem__dragHandle::after': {\n cursor: 'default'\n },\n '& .rankItem__dragHandle, & .rankItem__label': {\n opacity: 0.5\n }\n }\n});\nconst COPY$1 = defineMessages({\n ARIA_RANK_MOVE_UP: {\n id: 'RankingItem.AriaRankMoveUp',\n defaultMessage: 'Move up {label}',\n description: '[Type: button][Vis: high] - accessible rank move up label'\n },\n ARIA_RANK_MOVE_DOWN: {\n id: 'RankingItem.AriaRankMoveDown',\n defaultMessage: 'Move down {label}',\n description: '[Type: button][Vis: high] - accessible rank move down label'\n }\n});\n\nfunction RankingItem({\n id,\n className,\n label,\n position: index,\n listLength,\n applicable,\n showApplicability,\n onApplicableChange,\n onOrderUp,\n onOrderDown,\n ranksVisible,\n ...props\n}) {\n const controlLabels = {\n orderUpLabel: t(COPY$1.ARIA_RANK_MOVE_UP, {\n label\n }),\n orderDownLabel: t(COPY$1.ARIA_RANK_MOVE_DOWN, {\n label\n })\n };\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n setActivatorNodeRef\n } = useSortable({\n id,\n attributes: {\n role: 'listitem',\n tabIndex: -1\n },\n disabled: !applicable,\n data: {\n id,\n position: index,\n label,\n applicable,\n showApplicability\n }\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n\n const handleOrderUp = e => {\n onOrderUp === null || onOrderUp === void 0 ? void 0 : onOrderUp({ ...e,\n id\n });\n };\n\n const handleOrderDown = e => {\n onOrderDown === null || onOrderDown === void 0 ? void 0 : onOrderDown({ ...e,\n id\n });\n };\n\n const handleApplicableChange = e => {\n onApplicableChange === null || onApplicableChange === void 0 ? void 0 : onApplicableChange({ ...e,\n id\n });\n };\n\n const {\n item,\n itemDisabled\n } = useStyles$2({\n applicable\n });\n return React__default.createElement(RankingRow$1, {\n id: id,\n label: label,\n position: index,\n className: classNames(item, {\n [itemDisabled]: !applicable\n }, className),\n ref: setNodeRef,\n style: style,\n ghost: isDragging,\n ...attributes,\n dragListeners: listeners,\n dragRef: setActivatorNodeRef,\n ranksVisible: ranksVisible,\n controls: React__default.createElement(OrderControl, {\n id: `${id}-control`,\n position: index,\n applicable: applicable,\n showApplicability: !!showApplicability,\n onApplicableChange: handleApplicableChange,\n onOrderUp: handleOrderUp,\n onOrderDown: handleOrderDown,\n labels: controlLabels,\n disableOrderUp: index === 0,\n disableOrderDown: index === listLength - 1\n }),\n ...props\n });\n}\n\nconst useRankingIds = ({\n rankings,\n choiceNotApplicable\n}) => {\n return useMemo(() => {\n const order = rankings.filter(r => !!r && r.visible).sort((a, b) => Number(a.label) - Number(b.label)).map(r => r.id);\n\n if (choiceNotApplicable) {\n order.push(choiceNotApplicable.id);\n }\n\n return order;\n }, [rankings, choiceNotApplicable]);\n};\n\nconst useRankingState = ({\n choices,\n rankingIds,\n defaultResponses = [],\n choiceNotApplicable\n}) => {\n const findResponseByChoiceId = id => defaultResponses.find(r => r.id === id);\n\n const findPositionByRankId = id => rankingIds.findIndex(rid => rid === id);\n\n return useState(() => {\n // Filter choices that exist and are visible, add rankable meta data\n return choices.filter(c => !!c && c.visible).map(({\n id,\n label\n }, defaultIndex) => {\n const {\n value: rankId = rankingIds[defaultIndex],\n type\n } = findResponseByChoiceId(id) || {};\n const item = {\n id,\n label,\n type,\n value: rankId,\n applicable: rankId !== (choiceNotApplicable === null || choiceNotApplicable === void 0 ? void 0 : choiceNotApplicable.id),\n index: findPositionByRankId(rankId)\n };\n return item;\n }).sort((a, b) => a.index - b.index);\n });\n};\n/* istanbul ignore file */\n\n\nfunction shouldHandleEvent(element) {\n let cur = element;\n\n while (cur) {\n if (cur.dataset && cur.dataset.noDnd) {\n return false;\n }\n\n cur = cur.parentElement;\n }\n\n return true;\n}\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter]\n};\n\nclass PointerSensor extends PointerSensor$1 {}\n\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: ({\n nativeEvent: event\n }, {\n onActivation\n }) => {\n if (!shouldHandleEvent(event.target)) {\n return false;\n }\n\n onActivation === null || onActivation === void 0 ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nclass KeyboardSensor extends KeyboardSensor$1 {}\n\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: ({\n nativeEvent: event\n }, {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n }, {\n active\n }) => {\n const {\n code\n } = event;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator || !shouldHandleEvent(event.target)) {\n return false;\n }\n\n event.preventDefault();\n onActivation === null || onActivation === void 0 ? void 0 : onActivation({\n event\n });\n return true;\n }\n\n return false;\n }\n}];\n/**\n * Allows list-items that remove the bullet-marker to be acessible (Screen Reader)\n * @see https://www.tempertemper.net/blog/accessibility-issues-when-removing-list-markers\n */\n\nvar accessibleListItem = {\n listStyleType: 'none',\n '&::before': {\n content: \"'\\\\200B'\"\n }\n};\nconst useStyles$1 = createUseStyles({\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 5,\n '& > *': {\n WebkitUserSelect: 'none',\n WebkitTouchCallout: 'none'\n }\n },\n listItem: { ...accessibleListItem\n },\n dragOverlay: {\n opacity: 0.5,\n '& .rankItem__orderIndex, & .rankItem__controls': {\n opacity: 0\n }\n },\n srOnly: { ...visuallyHidden\n }\n});\nconst COPY = defineMessages({\n ARIA_RANK_MOVED_UP: {\n id: 'Ranking.AriaRankMovedUp',\n defaultMessage: '{label} moved up to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved up label'\n },\n ARIA_RANK_MOVED_DOWN: {\n id: 'Ranking.AriaRankMovedDown',\n defaultMessage: '{label} moved down to number {position}',\n description: '[Type: button][Vis: high] - accessible ranking moved down label'\n },\n ARIA_RANK_MOVED_TO_TOP: {\n id: 'Ranking.AriaRankAtTop',\n defaultMessage: '{label} moved to the top of the list',\n description: '[Type: button][Vis: high] - accessible ranking at top of list'\n },\n ARIA_RANK_MOVED_TO_BOTTOM: {\n id: 'Ranking.AriaRankAtBottom',\n defaultMessage: '{label} moved to the bottom of the list',\n description: '[Type: button][Vis: high] - accessible ranking at bottom of list'\n }\n});\n\nfunction Ranking({\n id: questionId,\n disabled: _dis,\n readOnly: _ro,\n choices =\n /* istanbul ignore next: cannot reach default branch */\n [],\n rankings =\n /* istanbul ignore next: cannot reach default branch */\n [],\n choiceNotApplicable,\n responses: defaultResponses = [],\n onChange,\n ...fieldProps\n}) {\n var _a, _b;\n\n const errorId = createErrorId(questionId);\n const sensors = useSensors(useSensor(PointerSensor)); // toggles display of N/A choice\n\n const showApplicability = choiceNotApplicable !== undefined; // create ranking order (N/A choice is last)\n\n const rankingIds = useRankingIds({\n rankings,\n choiceNotApplicable\n });\n const [, setActiveId] = useState(null);\n const [activeItem, setActiveItem] = useState(null); // for Aria-Live\n\n const [statusMessage, announceStatus] = useState('');\n const [ranksVisible, setRanksVisible] = useState(false);\n const [listItems, setListItems] = useRankingState({\n choices,\n defaultResponses,\n choiceNotApplicable,\n rankingIds\n });\n /* istanbul ignore next */\n\n const getItemIndices = (items, fromId, toId) => {\n const fromIndex = items.findIndex(item => item.id === fromId);\n const toIndex = items.findIndex(item => item.id === toId);\n return {\n fromIndex,\n toIndex\n };\n };\n /* istanbul ignore next */\n\n\n const moveById = (items, fromId, toId) => {\n const {\n fromIndex,\n toIndex\n } = getItemIndices(items, fromId, toId);\n return arrayMove(items, fromIndex, toIndex);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n\n\n const moveItem = (fromId, toId) => {\n setListItems(items => moveById(items, fromId, toId));\n };\n\n const {\n list,\n listItem,\n dragOverlay,\n srOnly\n } = useStyles$1();\n\n const updateRankingOrder = (current, next) => {\n const nextValue = Math.max(0, Math.min(next, listItems.length - 1));\n const responses = arrayMove(listItems, current, nextValue).map((response, index) => ({ ...response,\n index,\n value: rankingIds[index]\n }));\n setRanksVisible(true);\n setListItems(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n const handleOrderUp = e => {\n var _a, _b;\n\n const {\n id: rowId,\n value: currentPosition,\n direction =\n /* istanbul ignore next: cannot reach default branch */\n 0\n } = e;\n const item = listItems.find(li => li.id === rowId);\n const nextPosition = currentPosition + direction;\n\n if (nextPosition === 0) {\n updateRankingOrder(currentPosition, nextPosition);\n (_b = document.getElementById((_a = e.id) !== null && _a !== void 0 ? _a : '')) === null || _b === void 0 ? void 0 : _b.focus();\n announceStatus(t(COPY.ARIA_RANK_MOVED_TO_TOP, {\n label: item.label,\n position: currentPosition + 1\n }));\n } else {\n updateRankingOrder(currentPosition, nextPosition);\n announceStatus(t(COPY.ARIA_RANK_MOVED_UP, {\n label: item.label,\n position: nextPosition + 1\n }));\n }\n };\n\n const handleOrderDown = e => {\n var _a, _b;\n\n const {\n id: rowId,\n value: currentPosition,\n direction =\n /* istanbul ignore next: cannot reach default branch */\n 0\n } = e;\n const item = listItems.find(li => li.id === rowId);\n const nextPosition = currentPosition + direction;\n\n if (nextPosition === listItems.length - 1) {\n updateRankingOrder(currentPosition, nextPosition);\n (_b = document.getElementById((_a = e.id) !== null && _a !== void 0 ? _a : '')) === null || _b === void 0 ? void 0 : _b.focus();\n announceStatus(t(COPY.ARIA_RANK_MOVED_TO_BOTTOM, {\n label: item.label,\n position: currentPosition + 1\n }));\n } else {\n updateRankingOrder(currentPosition, nextPosition);\n announceStatus(t(COPY.ARIA_RANK_MOVED_DOWN, {\n label: item.label,\n position: nextPosition + 1\n }));\n }\n };\n\n const handleApplicableChange = e => {\n /* istanbul ignore else: should never branch */\n if (showApplicability) {\n const {\n id,\n applicable\n } = e;\n const responses = listItems.map(item => ({ ...item,\n ...(item.id === id ? {\n applicable\n } : {}),\n ...(item.id === id && !applicable ? {\n value: choiceNotApplicable.id\n } : {})\n }));\n setListItems(responses);\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n }\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n\n\n const handleDragStart = ({\n active\n }) => {\n setActiveId(active.id);\n setActiveItem(active);\n };\n /* istanbul ignore next: cannot test drag-and-drop logic */\n\n\n const handleDragEnd = ({\n active,\n over\n }) => {\n if (active.id !== (over === null || over === void 0 ? void 0 : over.id)) {\n moveItem(active.id, over === null || over === void 0 ? void 0 : over.id);\n }\n\n setRanksVisible(true);\n setActiveId(null);\n setActiveItem(null);\n };\n\n return (\n /*\n NOTE: The id has been modified to work in hybrid mode. The id needs to\n be different from the question-field id created in the responseweb.\n */\n React__default.createElement(QuestionField, {\n id: `hybrid-${questionId}`,\n errorId: errorId,\n \"data-testid\": \"RankingQuestionType\",\n ...fieldProps\n }, React__default.createElement(\"div\", {\n role: \"status\",\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\",\n className: srOnly\n }, statusMessage), React__default.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n onDragStart: handleDragStart,\n onDragEnd: handleDragEnd\n }, React__default.createElement(SortableContext, {\n items: listItems,\n strategy: verticalListSortingStrategy\n }, React__default.createElement(\"ol\", {\n className: list\n }, listItems.map(({\n id: itemId,\n label,\n applicable\n }, index) => {\n return React__default.createElement(RankingItem, {\n id: itemId,\n key: itemId,\n label: label,\n position: index,\n listLength: listItems.length,\n applicable: applicable,\n showApplicability: !!showApplicability,\n onApplicableChange: handleApplicableChange,\n onOrderUp: handleOrderUp,\n onOrderDown: handleOrderDown,\n className: listItem,\n ranksVisible: ranksVisible\n });\n })), React__default.createElement(DragOverlay, null,\n /* istanbul ignore next: cannot test drag-and-drop logic */\n activeItem ? React__default.createElement(RankingRow$1, {\n id: activeItem.id,\n className: dragOverlay,\n label: (_a = activeItem.data.current) === null || _a === void 0 ? void 0 : _a.label,\n position: (_b = activeItem.data.current) === null || _b === void 0 ? void 0 : _b.index,\n ranksVisible: ranksVisible\n }) : null))))\n );\n}\n\nfunction SingleTextbox({\n id: questionId,\n required,\n disabled,\n readOnly,\n responses: defaultResponses = [],\n onChange,\n size,\n ...fieldProps\n}) {\n const {\n error,\n errorId = createErrorId(questionId),\n title: {\n id: titleId\n }\n } = fieldProps;\n const defaultValue = useMemo(() => {\n var _a, _b;\n\n return (_b = (_a = defaultResponses.find(r => !!r.value)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n\n const handleChange = e => {\n const responses = e.target.value ? [{\n id: questionId,\n value: e.target.value\n }] : [];\n onChange === null || onChange === void 0 ? void 0 : onChange(responses);\n };\n\n return React__default.createElement(\"div\", null, React__default.createElement(QuestionField, {\n id: questionId,\n errorId: errorId,\n \"data-testid\": \"SingleTextboxQuestionType\",\n ...fieldProps\n }, React__default.createElement(TextInput$1, {\n name: questionId,\n defaultValue: defaultValue,\n required: required,\n disabled: disabled,\n readOnly: readOnly,\n size: size,\n onChange: handleChange,\n \"aria-invalid\": !!error,\n \"aria-describedby\": error && errorId,\n \"aria-labelledby\": titleId,\n maxLength: TEXT_INPUT_MAX_CHARS\n })));\n}\n\nvar SingleTextbox$1 = withErrorBoundary(SingleTextbox);\nconst useStyles = createUseStyles(theme => {\n var _a, _b, _c, _d, _e, _f;\n\n return {\n textPresentationalStyles: {\n fontFamily: (_a = theme.questionTitle.fontFamily) !== null && _a !== void 0 ? _a : 'inherit',\n fontSize: (_b = theme.questionTitle.fontSize) !== null && _b !== void 0 ? _b : '16px',\n fontWeight: (_c = theme.questionTitle.fontWeight) !== null && _c !== void 0 ? _c : theme.isAccessible ? 500 : 300,\n textDecoration: (_d = theme.questionTitle.textDecoration) !== null && _d !== void 0 ? _d : 'inherit',\n fontStyle: (_e = theme.questionTitle.fontStyle) !== null && _e !== void 0 ? _e : 'inherit',\n color: (_f = theme.questionTitle.color) !== null && _f !== void 0 ? _f : 'inherit'\n },\n buttonStyles: {\n marginTop: '20px'\n }\n };\n});\n\nfunction TextPresentational({\n text,\n padding = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n },\n id,\n okButton = {\n visible: false\n }\n}) {\n const richTextId = `text-presentational-${id}`;\n const {\n textPresentationalStyles,\n buttonStyles\n } = useStyles();\n const {\n visible: showButton,\n ...buttonProps\n } = okButton;\n return React__default.createElement(QuestionSpacing, {\n padding: padding,\n \"data-testid\": \"TextPresentational\"\n }, React__default.createElement(RichText, {\n id: richTextId,\n element: \"div\",\n text: text,\n className: textPresentationalStyles\n }), showButton && React__default.createElement(Button, { ...buttonProps,\n className: buttonStyles\n }));\n}\n\nvar TextPresentational$1 = withErrorBoundary(TextPresentational);\nexport { BestWorst$1 as BestWorst, CaretDownIcon, CaretDownOutlineIcon, Checkbox$1 as Checkbox, CommentBox$1 as CommentBox, DateTime$1 as DateTime, Dropdown$1 as Dropdown, ImageChoice$1 as ImageChoice, ImagePresentational$1 as ImagePresentational, MatrixRating, MultipleChoice, MultipleTextbox, NativeSelect, SelectAnswerOption as NativeSelectOption, Nps, Ranking, SingleTextbox$1 as SingleTextbox, TextPresentational$1 as TextPresentational };","import React from 'react';\nimport { createUseStyles, useTheme, createGenerateId, JssProvider, ThemeProvider } from 'react-jss';\nimport { useSurveyTheme } from '@sm/webassets';\nconst smFont = \"'National 2', 'Helvetica Neue', Helvetica, Arial, 'Hiragino Sans', 'Hiragino Kaku Gothic Pro', '游ゴシック', '游ゴシック体', YuGothic, 'Yu Gothic', 'MS ゴシック', 'MS Gothic', sans-serif\";\nconst grey = 'rgba(0,0,0,0.05)';\n/** SmQuestion specific augmentation to the SurveyTheme */\n\nconst themeAugmentation = {\n // Tokens - shared across all surveys\n fontFamily: smFont,\n fontSize: {\n body: 16\n },\n fontWeight: {\n ultralight: 200,\n light: 300,\n regular: 400,\n medium: 500,\n bold: 700\n },\n nextButton: {\n backgroundColor: '#00BF6F',\n color: '#FFFFFF'\n },\n input: {\n activeColor: '#00BF6F',\n // Light | Dark BG are shared across all surveys\n bgColor: grey\n },\n border: {\n defaultColor: '#999',\n correctColor: '#00BF6F',\n wrongColor: '#F05B24'\n },\n correctAnswerHighlightColor: grey\n};\n/**\n * Calculates highlight/selected color based on theme-properties\n * @see https://code.corp.surveymonkey.com/devmonkeys/smlib.surveytemplates/blob/6a4520867c756527c4ae4c0861b64e41ae3dd196/smlib/surveytemplates/themes_v3/base_css.jinja2#L249-L274\n * @param {SurveyThemeType} theme survey-theme object\n * @param {boolean} [isNps=true] use `nps` value (default true).\n * In the original, the current CSS always uses the nps value\n * @returns {string} the RGBA color value\n *\n * @todo move logic to @sm/webassets:SurveyTheme or direct theme-values\n */\n\nconst getQuestionHighlightColor = (theme, isNps = true) => {\n var _a;\n\n const titleColor = (_a = theme.titleColor) === null || _a === void 0 ? void 0 : _a.replace(/\\s/g, ''); // theme with dark background\n\n if (theme.isDark) {\n return isNps ? 'rgba(0,0,0,0.40)' : 'rgba(0,0,0,0.15)';\n }\n /**\n * Iceberg and Arctic Specs\n * @see https://momentiveai.atlassian.net/browse/ENT-3452\n *\n * @todo change to use `theme.name` when added to @sm/webassets\n */\n\n\n if (titleColor === 'rgba(5,70,126,1)') {\n // Arctic theme rgba of #c9f2f4\n return 'rgba(201,242,244,1)';\n }\n\n if (titleColor === 'rgba(0,0,96,1)') {\n // Iceberg theme rgba of #1fd8ea\n return 'rgba(31,216,234,1)';\n }\n\n return 'rgba(0,0,0,0.05)'; // Pastel theme\n};\n/** Augments `theme` with SmQuestion specific theme attributes */\n\n\nconst applySurveyThemeAugmentation = theme => {\n var _a, _b, _c;\n\n const questionHighlightColor = getQuestionHighlightColor(theme);\n return { ...themeAugmentation,\n nextButton: {\n backgroundColor: theme.primaryAccentColor || themeAugmentation.nextButton.backgroundColor,\n color: theme.secondaryAccentColor || themeAugmentation.nextButton.color\n },\n input: {\n activeColor: theme.primaryAccentColor || themeAugmentation.input.activeColor,\n bgColor: questionHighlightColor\n },\n border: {\n defaultColor: theme.isAccessible ? (_a = theme.answerColor) !== null && _a !== void 0 ? _a : '#999' : '#999',\n correctColor: theme.isAccessible ? (_b = theme.answerColor) !== null && _b !== void 0 ? _b : '#999' : '#00BF6F',\n wrongColor: theme.isAccessible ? (_c = theme.answerColor) !== null && _c !== void 0 ? _c : '#999' : '#F05B24'\n },\n correctAnswerHighlightColor: questionHighlightColor,\n ...theme // keep theme last to allow user to overwrite augmentation\n\n };\n};\n/**\n * Dummy SurveyTheme\n *\n * _Not a real theme - only use for testing_\n */\n\n\nconst DUMMY_SURVEY_THEME = {\n name: 'Dummy Survey Theme',\n // Survey-specific styles\n layout: 'BACKGROUND_FULL_TEXT_CENTER',\n titleColor: 'rgba(255,51,0,1)',\n questionColor: 'rgba(79,122,39,1)',\n answerColor: 'rgba(56,136,254,1)',\n primaryAccentColor: '#00BF6F',\n secondaryAccentColor: '#FFFFFF',\n primaryBackgroundColor: '#F7F8FA',\n secondaryBackgroundColor: '#ccf2e2',\n isAccessible: false,\n isDark: false,\n isCustomTheme: false,\n fontFamily: smFont,\n fontSize: {\n body: 16\n },\n fontWeight: {\n ultralight: 200,\n light: 300,\n regular: 400,\n medium: 500,\n bold: 700\n },\n // Survey-specific component Styles\n surveyPage: {\n overlayColor: 'rgba(217,238,236,0.68)',\n backgroundImage: 'url(https://images.pexels.com/photos/2760856/pexels-photo-2760856.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940)'\n },\n surveyTitle: {\n fontSize: 25,\n fontFamily: 'Montserrat,Arial,Helvetica',\n fontWeight: 700,\n fontStyle: 'normal',\n textDecoration: 'none'\n },\n pageTitle: {\n fontSize: 25,\n fontFamily: 'Montserrat,Arial,Helvetica',\n fontWeight: 700,\n fontStyle: 'normal',\n textDecoration: 'none'\n },\n button: {\n fontSize: 15,\n fontFamily: 'National2',\n fontWeight: 400\n },\n error: {\n fontSize: 16,\n fontFamily: 'arial,sans-serif',\n fontWeight: 500,\n fontStyle: 'normal',\n textDecoration: 'none'\n },\n exitLink: {\n fontSize: 12,\n fontWeight: 300,\n backgroundColor: 'rgba(0,0,0,0)'\n },\n logo: {\n enabled: true,\n image: {\n url: 'https://sm-assets-mt1.s3.amazonaws.com/survey/518810755/6816175a-dfd7-4cc3-8b5c-64fd07d6f491.jpeg'\n }\n },\n progressBar: {\n enabled: true,\n position: 'DISABLED',\n showPercent: true,\n showPageNumber: true\n },\n questionBody: {\n color: '#333e48',\n highlightColor: 'rgba(208,210,211,1)',\n fontSize: 18,\n fontFamily: smFont,\n fontWeight: 300,\n fontStyle: 'normal',\n textDecoration: 'none'\n },\n questionTitle: {\n fontSize: 20,\n fontFamily: smFont,\n fontWeight: 300,\n fontStyle: 'normal',\n textDecoration: 'none',\n color: '#333e48'\n },\n breakpoints: {\n xxs: {\n max: '480px'\n },\n xs: {\n min: '481px',\n max: '640px'\n },\n sm: {\n min: '641px',\n max: '768px'\n },\n md: {\n min: '769px',\n max: '1024px'\n },\n lg: {\n min: '1025px',\n max: '1200px'\n },\n xl: {\n min: '1201px'\n }\n }\n};\n/**\n * Dummy AugmentedSurveyTheme (pre-augmented SurveyTheme)\n *\n * _Not a real theme - only use for testing_\n */\n\nconst DUMMY_AUGMENTED_SURVEY_THEME = { ...DUMMY_SURVEY_THEME,\n ...themeAugmentation\n};\nconst prefix = 'smqr-';\nconst selectors = [`[class*='${prefix}']`, `[class*='${prefix}']::before`, `[class*='${prefix}']::after`];\nconst resetStyles = {\n '-webkit-font-smoothing': 'antialiased',\n boxSizing: 'border-box',\n listStyle: 'none',\n margin: 0,\n padding: 0\n};\nconst useStyles = createUseStyles({\n '@global': {\n [selectors.join(',')]: resetStyles\n }\n}, {\n // Ensure this gets added to as the first stylesheet\n // ref: https://github.com/cssinjs/jss/blob/master/packages/react-jss/src/utils/getSheetIndex.js#L3-L16\n index: (Number.MIN_SAFE_INTEGER || -1e9) - 1,\n name: 'smquestions-respondent-global-styles'\n});\n/* Must by rendered inside a ThemeProvider with the RespondentTheme */\n\nfunction SurveyGlobalStyles() {\n const theme = useTheme();\n useStyles({\n theme\n });\n return null;\n}\n/* Wraps all components and ThemeProvider of the Respondent experience */\n\n\nfunction SurveyStylesProvider({\n children,\n ...props\n}) {\n // https://cssinjs.org/jss-api?v=v10.4.0#generate-your-class-names\n const generateJssId = React.useMemo(() => createGenerateId(), []);\n\n const generateId = (rule, srcSheet) => {\n var _a;\n\n const sheet = srcSheet;\n\n if (sheet) {\n sheet.options.classNamePrefix = prefix;\n sheet.options.index = (_a = sheet.options.index) !== null && _a !== void 0 ? _a : 10;\n }\n\n return generateJssId(rule, sheet);\n };\n\n return React.createElement(JssProvider, { ...props,\n generateId: generateId\n }, children);\n}\n\nfunction SurveyThemeWrapper({\n children\n}) {\n const theme = useSurveyTheme();\n return React.createElement(SurveyStylesProvider, null, React.createElement(ThemeProvider, {\n theme: applySurveyThemeAugmentation(theme)\n }, React.createElement(SurveyGlobalStyles, null), children));\n}\n\nexport { DUMMY_AUGMENTED_SURVEY_THEME, DUMMY_SURVEY_THEME, SurveyGlobalStyles, SurveyStylesProvider, SurveyThemeWrapper, applySurveyThemeAugmentation };","import React__default, { createContext, useContext, useMemo } from 'react';\nimport { E as ErrorBoundary } from './vendor-8000eab9.js';\nimport { FallbackComponent } from '@sm/question-ui/helpers';\nimport { getTypeId } from '@sm/question-definitions';\n\nconst filterVisualizationByQuestionType = typeId => qd => {\n const [qts] = qd;\n return qts.includes(typeId);\n};\n\nconst declareVisualization = (questionTypes, capabilities, component) => {\n return [questionTypes, capabilities, component];\n};\n\nconst providerAccessContext = createContext(null);\n\nconst useProviderAccessContext = () => {\n const access = useContext(providerAccessContext);\n\n if (!access) {\n throw new Error('Must call useProviderAccessContext inside a properly setup Capability Provider');\n }\n\n const {\n useUpstreamConfig,\n useVisualizationList\n } = access;\n return {\n useVisualizationList,\n useUpstreamConfig\n };\n};\n/** providerFactory\n * Creates a helper component that enables a CapabilityProvider to store the appropriate configurations,\n * making them available to the visualizations through the generic controllers. It makes sure that all\n * Visualizations have the proper types passed onto them.\n * @param visualizationList list of visualization definitions for all the visualizations that will be\n * supported by this Capability Provider.\n * @returns React Context Provider accepting the appropriate configuration for the CapabilityProvider\n */\n\n\nconst providerFactory = visualizationList => {\n const ctx = React__default.createContext(null); // TODO: further filter types to match the ones in the right indexes based on capability\n\n const useVisualizationList = capability => visualizationList.filter(([, fs]) => fs.indexOf(capability) >= 0);\n\n const useUpstreamConfig = () => {\n const config = useContext(ctx);\n\n if (!config) {\n throw new Error('Must call useUpstreamConfig inside a properly set up Capability Provider');\n }\n\n return config;\n };\n\n const providerValue = {\n useVisualizationList: useVisualizationList,\n useUpstreamConfig: useUpstreamConfig\n };\n return function ProvidersWrapper({\n children,\n value\n }) {\n return React__default.createElement(ErrorBoundary, {\n FallbackComponent: FallbackComponent\n }, React__default.createElement(providerAccessContext.Provider, {\n value: providerValue\n }, React__default.createElement(ctx.Provider, {\n value: value\n }, children)));\n };\n};\n\nfunction UnsupportedVisualization({\n question: {\n typeId\n }\n}) {\n return React__default.createElement(\"div\", null, \"Unsupported Visualization for \", typeId);\n}\n\nconst createVisualization = (capability, questionTypeId, visualizationOptions, upstreamActions, settings, renderProps) => {\n const [,, VisualizationComponent] = visualizationOptions.find(filterVisualizationByQuestionType(questionTypeId)) || [];\n\n if (!VisualizationComponent) {\n return function UnsupportedVisualizationWrapper({\n question\n }) {\n return React__default.createElement(UnsupportedVisualization, {\n question: question\n });\n };\n }\n\n return function VisualizationComponentWrapper({\n question,\n displayOptions,\n namedSlots,\n toExternalQuestion\n }) {\n return React__default.createElement(VisualizationComponent, {\n capability: capability,\n question: question,\n upstreamActions: upstreamActions,\n settings: settings,\n displayOptions: displayOptions,\n renderProps: renderProps,\n toExternalQuestion: toExternalQuestion,\n namedSlots: namedSlots\n });\n };\n};\n/** Finds and attaches a typeId to an `ExternalQuestion` */\n\n\nconst useExternalQuestionAugmentation = (externalQuestion, responseSet) => {\n return useMemo(() => {\n const typeId = getTypeId(externalQuestion);\n\n if (!typeId) {\n throw new Error(`Unsupported Question Type of family ${externalQuestion.family}, variant ${externalQuestion.variant}.`);\n }\n\n if (responseSet !== undefined) {\n return { ...externalQuestion,\n typeId,\n ...responseSet\n };\n }\n\n return { ...externalQuestion,\n typeId\n };\n }, [externalQuestion, responseSet]);\n};\n\nexport { useExternalQuestionAugmentation as a, createVisualization as c, declareVisualization as d, providerFactory as p, useProviderAccessContext as u };","import * as React from 'react';\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n _this.updatedWithError = false;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.updatedWithError = false;\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var error = this.state.error;\n\n if (error !== null) {\n this.updatedWithError = true;\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true;\n return;\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar classnamesExports = {};\nvar classnames = {\n get exports() {\n return classnamesExports;\n },\n\n set exports(v) {\n classnamesExports = v;\n }\n\n};\n/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n(function (module) {\n /* global define */\n (function () {\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else {\n window.classNames = classNames;\n }\n })();\n})(classnames);\n\nvar classNames = classnamesExports;\nexport { ErrorBoundary as E, classNames as c };","import React__default, { useContext, useEffect, useRef, useState, useCallback, useLayoutEffect, useMemo, forwardRef } from 'react';\nimport { E as ErrorBoundary, c as classNames } from './vendor-44a39198.js';\nimport { createUseStyles, useTheme } from 'react-jss';\nimport { defineMessages, t, L10NContext, T } from '@sm/intl';\nimport { sanitizeString } from '@sm/utils';\nimport { uniqueId, visuallyHidden } from '@wds/utils';\nimport ReactDOM from 'react-dom';\nimport getFontWeights from '@sm/webassets/dist/components/SurveyTheme/getFontWeights';\nimport unescaper from 'lodash.unescape';\nconst useStyles$h = createUseStyles(theme => ({\n wdsIcons: ({\n color,\n size\n }) => {\n var _a, _b, _c;\n\n const fontSize = size ? {\n fontSize: theme.iconSize[size]\n } : {\n fontSize: 'inherit'\n };\n const chosenColor = // @ts-expect-error Fallback styles are acceptable\n ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.text[color]) || ((_c = (_b = theme.palette) === null || _b === void 0 ? void 0 : _b[color]) === null || _c === void 0 ? void 0 : _c.main) || 'currentColor';\n return { ...fontSize,\n width: '1em',\n height: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n fill: chosenColor\n };\n }\n})); // https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\n\nconst getDisplayName = Component => Component.displayName || Component.name || 'Component';\n\nfunction withIcon(Component) {\n function WithIcon({\n color,\n title,\n size,\n ...rest\n }) {\n const classes = useStyles$h({\n color,\n size\n });\n return React__default.createElement(\"svg\", {\n className: classes.wdsIcons,\n viewBox: \"0 0 16 16\",\n preserveAspectRatio: \"xMidYMid\",\n \"aria-label\": title,\n role: title ? 'img' : 'presentation',\n ...rest\n }, React__default.createElement(Component, null));\n }\n\n WithIcon.displayName = `WithIcon(${getDisplayName(Component)})`;\n\n WithIcon.getOriginalComponent = () => Component;\n\n return WithIcon;\n}\n\ncreateUseStyles({\n svgContainer: {\n display: 'inline-block',\n width: '1em',\n height: '1em'\n }\n});\n\nfunction DocumentXIconPath() {\n return React__default.createElement(\"path\", {\n d: \"m5.94.005 8.012.012C14.53.018 15 .487 15 1.067V14.95c0 .58-.47 1.05-1.05 1.05H2.05C1.47 16 1 15.53 1 14.95V4.94L5.94.004zM7 1.505V4.95c0 .541-.41.987-.936 1.044L5.95 6H2.5v8.5h11V1.514L7 1.505zM6.557 7.53 8 8.973 9.443 7.53a.765.765 0 0 1 1.083 1.082l-1.444 1.443 1.444 1.444a.765.765 0 0 1-1.083 1.082L8 11.138 6.557 12.58A.765.765 0 1 1 5.474 11.5l1.444-1.444-1.444-1.443A.765.765 0 1 1 6.557 7.53zM5.5 2.563 3.561 4.5H5.5V2.562z\"\n });\n}\n\nvar IconDocumentX = withIcon(DocumentXIconPath);\nconst useStyles$g = createUseStyles(theme => {\n var _a, _b;\n\n return {\n fallbackComponent: {\n fontFamily: (_b = (_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.fontFamily) !== null && _b !== void 0 ? _b : {},\n color: theme.questionColor,\n border: `1px solid ${theme.questionColor}`,\n borderRadius: '5px',\n width: '100%',\n height: '100%',\n minHeight: '220px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& svg': {\n fill: theme.questionColor\n }\n },\n errorMessage: {\n marginLeft: `8px` // equivalent to wrench theme.spacing[2]\n\n }\n };\n});\nconst COPY$4 = defineMessages({\n ERROR: {\n id: 'FallbackComponent.ERROR',\n defaultMessage: 'Error loading question',\n description: '[Type: label][Vis: high] - error message indicating a question could not be loaded'\n }\n});\n\nfunction FallbackComponent() {\n const {\n fallbackComponent,\n errorMessage\n } = useStyles$g();\n return React__default.createElement(\"div\", {\n className: fallbackComponent\n }, React__default.createElement(IconDocumentX, null), React__default.createElement(\"p\", {\n className: errorMessage\n }, t(COPY$4.ERROR)));\n}\n\nconst withErrorBoundary = Component => {\n const displayName = Component.displayName || Component.name || 'Component';\n\n function ComponentWithErrorBoundary(props) {\n return React__default.createElement(ErrorBoundary, {\n FallbackComponent: FallbackComponent\n }, React__default.createElement(Component, { ...props\n }));\n }\n\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n return ComponentWithErrorBoundary;\n};\n\nconst useStyles$f = createUseStyles(theme => {\n var _a, _b;\n\n return {\n tooltip: {\n 'span[data-tooltip] &': {\n display: 'none'\n },\n [`@media (min-width: ${(_b = (_a = theme.breakpoints) === null || _a === void 0 ? void 0 : _a.md.min) !== null && _b !== void 0 ? _b : '769px'})`]: {\n 'span[data-tooltip]:hover &, span[data-tooltip]:focus &': {\n display: 'inline-block'\n }\n },\n position: 'absolute',\n left: ({\n center\n }) => center,\n bottom: 20,\n width: 275,\n transform: 'translate(-50%, -5px)',\n textAlign: 'center',\n zIndex: 12,\n fontSize: 13,\n '&:after': {\n position: 'absolute',\n bottom: -4,\n left: '50%',\n width: 10,\n height: 10,\n backgroundColor: 'white',\n content: '\"\"',\n marginLeft: -5,\n transform: 'rotate(45deg)',\n boxShadow: [[3, 5, 5, 'rgb(0 0 0 / 0.07)']],\n zIndex: 13\n }\n },\n tooltipBody: {\n display: 'inline-block',\n maxWidth: 275,\n color: 'black',\n fontWeight: 300,\n fontFamily: theme.fontFamily,\n fontStyle: 'normal',\n boxShadow: [[0, 2, 10, 0, 'rgb(0 0 0 / 0.14)']],\n background: 'white',\n padding: [[12, 16]],\n lineHeight: 1.4,\n borderRadius: 2,\n textAlign: 'left'\n }\n };\n});\nconst defaultSelectors = ['a[href]', 'button', 'textarea', 'input:not([type=\"hidden\"])', 'select', 'details', '[tabindex]:not([tabindex=\"-1\"])'];\n\nconst useFocusTrap = ({\n selectors = defaultSelectors\n} = {}) => {\n const focusRef = React__default.useRef(null);\n const [focusableEls, setEls] = React__default.useState([]);\n React__default.useEffect(() => {\n if (focusRef.current) {\n const els = Array.from(focusRef.current.querySelectorAll(selectors.join(',')));\n setEls(els);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [focusRef]);\n\n function handleFocus(e) {\n if (focusRef.current) {\n const focusableElements = focusableEls;\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n\n React__default.useEffect(() => {\n const handleKeyDown = e => {\n if (e.key === 'Tab') {\n handleFocus(e);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n });\n return focusRef;\n};\n\nconst useStyles$e = createUseStyles(theme => {\n var _a;\n\n return {\n modalOverlay: {\n zIndex: 999,\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: 'rgba(0,0,0,0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end'\n },\n modal: {\n position: 'relative',\n width: '85vw',\n minHeight: '20vw',\n marginBottom: 20,\n background: 'white',\n borderRadius: 2\n },\n closeBtn: {\n position: 'absolute',\n cursor: 'pointer',\n background: 'transparent',\n right: 0,\n border: 0,\n padding: 8,\n marginTop: 0,\n color: 'black',\n zIndex: 105\n },\n tooltipText: {\n color: ((_a = theme.questionBody) === null || _a === void 0 ? void 0 : _a.color) || '#333E48',\n fontFamily: theme.fontFamily,\n fontSize: 13,\n fontWeight: 400,\n lineHeight: '1.4',\n padding: [28, 12, 16]\n }\n };\n});\nconst COPY$3 = defineMessages({\n CLOSE_MODAL: {\n id: 'Modal.CloseModal',\n defaultMessage: 'Close tooltip',\n description: '[Type: label][Vis: Med] - close button text'\n }\n});\n\nfunction Modal({\n tooltip,\n closeModal\n}) {\n const {\n modalOverlay,\n closeBtn,\n modal,\n tooltipText\n } = useStyles$e();\n const closeRef = React__default.useRef(null);\n const tooltipId = uniqueId('tooltip-modal');\n const focusRef = useFocusTrap();\n\n const handleClick = e => {\n // click on button or overlay should close modal\n e.stopPropagation();\n\n if (e.currentTarget === e.target) {\n closeModal();\n }\n };\n\n React__default.useEffect(() => {\n // listen for ESC to close modal\n const handleKeydown = e => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n closeModal();\n }\n };\n\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [closeModal]);\n React__default.useEffect(() => {\n var _a;\n\n (_a = closeRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, []);\n return React__default.createElement(\"div\", {\n className: modalOverlay,\n onClick: handleClick,\n \"aria-hidden\": \"true\"\n }, React__default.createElement(\"div\", {\n ref: focusRef,\n className: modal,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-describedby\": tooltipId\n }, React__default.createElement(\"button\", {\n type: \"button\",\n className: closeBtn,\n ref: closeRef,\n onClick: handleClick,\n \"aria-label\": t(COPY$3.CLOSE_MODAL)\n }, \"\\u00D7\"), React__default.createElement(\"p\", {\n id: tooltipId,\n className: tooltipText\n }, tooltip)));\n}\n/** Displays a tooltip on hover for large screens and a modal on click for small screens */\n\n\nconst Tooltip = ({\n container,\n className,\n id = ''\n}) => {\n var _a;\n /** container center position to display tooltip */\n\n\n const center = container.offsetWidth / 2;\n const text = (_a = container.getAttribute('data-tooltip')) !== null && _a !== void 0 ? _a : '';\n const theme = useTheme();\n const {\n tooltip,\n tooltipBody\n } = useStyles$f({\n center\n });\n const [showModal, setShowModal] = React__default.useState(false);\n const [mode, setMode] = React__default.useState('TOOLTIP');\n\n const closeModal = () => {\n setShowModal(false);\n container.focus();\n };\n\n React__default.useEffect(() => {\n container.setAttribute('role', 'tooltip'); // make tooltip anchor focusable\n\n if (!container.hasAttribute('tabIndex')) {\n container.setAttribute('tabIndex', '0');\n } // opens modal if matches small screen breakpoint\n\n\n const openModal = () => {\n var _a, _b;\n\n const mql = window.matchMedia(`(max-width: ${(_b = (_a = theme === null || theme === void 0 ? void 0 : theme.breakpoints) === null || _a === void 0 ? void 0 : _a.md.min) !== null && _b !== void 0 ? _b : '769px'})`);\n\n if (mql.matches) {\n setMode('MODAL');\n setShowModal(true);\n } else {\n setMode('TOOLTIP');\n }\n };\n\n const handleClick = () => {\n openModal();\n };\n\n const handleKeydown = e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n openModal();\n }\n }; // listen for click, ENTER or SPACE to open modal\n\n\n container.addEventListener('click', handleClick);\n container.addEventListener('keydown', handleKeydown);\n return () => {\n container.removeEventListener('click', handleClick);\n container.removeEventListener('keydown', handleKeydown);\n };\n }, [container, theme]);\n const modalEl = showModal ? React__default.createElement(Modal, {\n tooltip: text,\n closeModal: closeModal\n }) : null;\n const tooltipEl = React__default.createElement(\"div\", {\n className: classNames(tooltip, className)\n }, React__default.createElement(\"span\", {\n id: id,\n className: tooltipBody,\n \"aria-hidden\": \"true\"\n }, text));\n const child = mode === 'MODAL' ? modalEl : tooltipEl;\n const containerEl = mode === 'MODAL' ? document.body : container;\n return ReactDOM.createPortal(child, containerEl);\n};\n\nconst listSpacing = {\n margin: [16, 0],\n padding: [0, 0, 0, 40]\n};\nconst mediaReset = {\n border: 0,\n maxWidth: '100%'\n};\nconst useStyles$d = createUseStyles({\n richTextContent: {\n // Typography\n '& a': {\n // Links are not themed by default. Users must select a link color in the editor\n color: 'blue',\n textDecoration: 'underline',\n '&:hover': {\n cursor: 'pointer'\n },\n '&:focus': {\n outline: 'currentColor auto 1px'\n }\n },\n '& ol': { ...listSpacing,\n listStyleType: 'decimal'\n },\n '& ul': { ...listSpacing,\n listStyle: 'disc outside none',\n '& ul li': {\n listStyle: 'circle'\n }\n },\n '& p': {\n margin: [13, 0]\n },\n '& b': {\n fontWeight: 'bold'\n },\n '& strong': {\n fontWeight: 'bold'\n },\n '& em': {\n fontStyle: 'italic'\n },\n '& i': {\n fontStyle: 'italic'\n },\n '& big': {\n fontSize: 'larger'\n },\n '& small': {\n fontSize: 'smaller'\n },\n '& sup': {\n fontSize: '75%',\n lineHeight: 0,\n position: 'relative',\n top: '-0.5em',\n verticalAlign: 'baseline'\n },\n // Media embeds\n '& iframe': mediaReset,\n '& img': { ...mediaReset,\n height: 'auto',\n '-ms-interpolation-mode': 'bicubic'\n },\n '& span[data-tooltip]': {\n position: 'relative',\n display: 'inline',\n borderBottom: [[1, 'dashed']],\n textDecoration: 'inherit',\n cursor: 'pointer'\n }\n }\n}); // Support iframe video embeds and their matching attributes\n\nconst sanitizeOptions = {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: ['target', 'allow', 'allowfullscreen', 'frameborder', 'sandbox', 'scrolling']\n};\n\nfunction RichText({\n id: elementId,\n element: Element = 'div',\n text,\n className,\n ...containerProps\n}) {\n const {\n richTextContent\n } = useStyles$d();\n const [tooltipNodes, setTooltipNodes] = React__default.useState([]);\n const tooltipRef = React__default.useRef(null);\n React__default.useEffect(() => {\n if (tooltipRef === null || tooltipRef === void 0 ? void 0 : tooltipRef.current) {\n const el = tooltipRef === null || tooltipRef === void 0 ? void 0 : tooltipRef.current;\n setTooltipNodes(Array.from(el.querySelectorAll('[data-tooltip]')));\n }\n }, []);\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(Element, {\n id: elementId,\n className: classNames(richTextContent, className),\n dangerouslySetInnerHTML: {\n __html: sanitizeString(text, sanitizeOptions)\n },\n ref: tooltipRef,\n translate: \"no\",\n ...containerProps\n }), tooltipNodes.map(container => {\n const id = uniqueId('rich-text-tooltip');\n container.setAttribute('aria-describedby', id);\n return React__default.createElement(Tooltip, {\n key: id,\n container: container,\n id: id\n });\n }));\n}\n\nconst textReset = {\n margin: 0\n};\nconst useStyles$c = createUseStyles(theme => {\n const {\n fontSize,\n ...questionTitleFormatting\n } = theme.questionTitle;\n const questionTitleFontSize = fontSize !== null && fontSize !== void 0 ? fontSize : {};\n return {\n addonContainer: {\n display: 'inline-block',\n margin: [0, 5],\n verticalAlign: 'text-bottom'\n },\n container: {\n position: 'relative',\n display: 'flex'\n },\n questionNumber: ({\n isRTL\n }) => ({\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0',\n flex: [0, 0]\n }),\n questionTitle: ({\n useDefaultFrontSize\n }) => {\n var _a;\n\n return { ...textReset,\n ...questionTitleFormatting,\n color: ((_a = theme.questionTitle) === null || _a === void 0 ? void 0 : _a.color) || theme.questionColor,\n fontSize: useDefaultFrontSize && !theme.isAccessible ? theme.fontSize.body : questionTitleFontSize,\n lineHeight: 1.25,\n whiteSpace: 'normal',\n wordWrap: 'break-word'\n };\n },\n requiredAsterisk: ({\n isRTL\n }) => ({\n display: 'inline-block',\n margin: isRTL ? '0 0 0 0.25em' : '0 0.25em 0 0'\n }),\n richText: {\n flex: [1, 0]\n }\n };\n});\n\nfunction RespondentQuestionTitle({\n element: Element = 'div',\n addon,\n heading,\n id,\n number,\n numbered,\n required,\n useDefaultFrontSize = false,\n ...props\n}) {\n const {\n isRTL\n } = useContext(L10NContext);\n const {\n addonContainer,\n container,\n questionNumber,\n questionTitle,\n requiredAsterisk,\n richText\n } = useStyles$c({\n useDefaultFrontSize,\n isRTL\n });\n return React__default.createElement(Element, {\n id: id,\n className: classNames(container, questionTitle),\n translate: \"no\",\n ...props\n }, required && React__default.createElement(\"span\", {\n \"aria-hidden\": true,\n className: requiredAsterisk\n }, \"*\"), numbered && React__default.createElement(\"span\", {\n className: questionNumber\n }, number, \".\"), React__default.createElement(RichText, {\n element: \"span\",\n text: heading,\n className: richText\n }), addon && React__default.createElement(\"span\", {\n className: addonContainer\n }, addon));\n}\n\ncreateUseStyles(theme => {\n var _a;\n\n return {\n button: {\n color: theme.nextButton.color,\n backgroundColor: theme.nextButton.backgroundColor,\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontSize: 15,\n border: [1, 'solid', 'transparent'],\n borderRadius: 2,\n padding: [1, 6],\n maxWidth: '100%',\n minWidth: 60,\n minHeight: 40,\n cursor: 'pointer',\n overflowWrap: 'break-word',\n transition: `all .2s linear`,\n '&:focus, &:hover': {\n outlineOffset: 5,\n outline: `1px solid ${theme.answerColor}`,\n // Safari seems to have an outline bug, may not render without boxshadow\n boxShadow: '0 0 4px transparent'\n }\n }\n };\n});\ndefineMessages({\n OK_LABEL: {\n id: 'Button.OK_LABEL',\n defaultMessage: 'OK',\n description: '[Type: button][Vis: high] - question ok label'\n }\n});\n/** Referentially stable empty function\n *\n * e.g. as default or placeholder */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n\nconst EmptyFn = () => {};\n/* eslint-disable no-param-reassign, no-plusplus */\n\n/**\n * @name EasingFunctions- Useful easing equations\n * @comment only considering the t value for the range [0, 1] => [0, 1]\n */\n\n\nconst easingFunctions = {\n /** @comment linear - no easing, no acceleration */\n linear: t => t,\n\n /** @comment easeInQuad - accelerating from zero velocity */\n easeInQuad: t => t * t,\n\n /** @comment easeOutQuad - decelerating to zero velocity */\n easeOutQuad: t => t * (2 - t),\n\n /** @comment easeInOutQuad - acceleration until halfway, then deceleration */\n easeInOutQuad: t => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,\n\n /** @comment easeInCubic - accelerating from zero velocity */\n easeInCubic: t => t * t * t,\n\n /** @comment easeOutCubic - decelerating to zero velocity */\n easeOutCubic: t => --t * t * t + 1,\n\n /** @comment easeInOutCubic - acceleration until halfway, then deceleration */\n easeInOutCubic: t => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n\n /** @comment easeInQuart - accelerating from zero velocity */\n easeInQuart: t => t * t * t * t,\n\n /** @comment easeOutQuart - decelerating to zero velocity */\n easeOutQuart: t => 1 - --t * t * t * t,\n\n /** @comment easeInOutQuart - acceleration until halfway, then deceleration */\n easeInOutQuart: t => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,\n\n /** @comment easeInQuint - accelerating from zero velocity */\n easeInQuint: t => t * t * t * t * t,\n\n /** @comment easeOutQuint - decelerating to zero velocity */\n easeOutQuint: t => 1 + --t * t * t * t * t,\n\n /** @comment easeInOutQuint - acceleration until halfway, then deceleration */\n easeInOutQuint: t => t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t\n};\n/**\n * Given a start/end point of a scroll and time elapsed, calculate the scroll position we should be at\n */\n\nfunction getValue(start, end, elapsed, duration, easingType = 'linear') {\n if (elapsed > duration) {\n return end;\n }\n\n const easing = typeof easingType === 'string' ? easingFunctions[easingType] : easingType;\n return start + (end - start) * easing(elapsed / duration);\n}\n/**\n * Smoothly animate between two values\n */\n\n\nfunction animate({\n fromValue,\n toValue,\n onStart,\n onUpdate,\n onComplete,\n duration = 600,\n delay = 0,\n easingType = 'easeOutQuart'\n}) {\n const startTime = performance.now() + delay;\n\n const tick = () => {\n const elapsed = performance.now() - startTime;\n const time = getValue(fromValue, toValue, elapsed, duration, easingType);\n const callback = elapsed <= duration ? tick : onComplete !== null && onComplete !== void 0 ? onComplete : EmptyFn;\n\n const updateAnimation = () => {\n onUpdate(time, callback);\n };\n\n window.requestAnimationFrame(updateAnimation);\n };\n\n onStart === null || onStart === void 0 ? void 0 : onStart();\n\n if (delay > 0) {\n setTimeout(() => {\n tick();\n }, delay);\n } else {\n tick();\n }\n}\n\nconst useStyles$b = createUseStyles({\n visuallyHidden: visuallyHidden\n});\n\nfunction VisuallyHidden({\n children,\n element: Element\n}) {\n const {\n visuallyHidden\n } = useStyles$b();\n return React__default.createElement(Element, {\n className: visuallyHidden\n }, children);\n}\n\nconst useStyles$a = createUseStyles({\n paddingBox: ({\n padding,\n width\n }) => {\n return {\n paddingTop: (padding === null || padding === void 0 ? void 0 : padding.top) || 0,\n paddingBottom: (padding === null || padding === void 0 ? void 0 : padding.bottom) || 0,\n paddingLeft: (padding === null || padding === void 0 ? void 0 : padding.left) || 0,\n paddingRight: (padding === null || padding === void 0 ? void 0 : padding.right) || 0,\n width: width ? `${width.width}${width.format === 'PERCENT' ? '%' : 'px'}` : '100%',\n maxWidth: '100%'\n };\n }\n});\n\nfunction QuestionSpacing({\n padding,\n width,\n children,\n ...props\n}) {\n const {\n paddingBox\n } = useStyles$a({\n padding,\n width\n });\n return React__default.createElement(\"div\", {\n className: paddingBox,\n \"data-testid\": \"QuestionSpacing__paddingBox\",\n ...props\n }, children);\n}\n/**\n * Hook that calls the provided callback function when the ref element is blurred,\n * only if the next focus is outside the ref element\n *\n * @example\n * const ref = useRef(null);\n * useOnFocusLeave(ref, ()=> onLeaveQuestion());\n *
\n */\n\n\nfunction useOnFocusLeave(ref, focusCallback) {\n useEffect(() => {\n const ele = ref === null || ref === void 0 ? void 0 : ref.current;\n\n function handleFocus(e) {\n if (!(ele === null || ele === void 0 ? void 0 : ele.contains(e.relatedTarget))) {\n focusCallback(ref);\n }\n }\n\n ele === null || ele === void 0 ? void 0 : ele.addEventListener('focusout', handleFocus);\n return () => {\n ele === null || ele === void 0 ? void 0 : ele.removeEventListener('focusout', handleFocus);\n };\n }, [ref, focusCallback]);\n}\n\nconst createFieldId = questionId => `question-field-${questionId}`;\n\nconst createLegendId = questionId => `question-title-legend-${questionId}`;\n\nconst createErrorRowId = questionId => `error-row-${questionId}`;\n\nconst useStyles$9 = createUseStyles({\n footerRow: ({\n hasFooterPadding\n }) => ({\n paddingTop: hasFooterPadding ? 20 : 0\n }),\n containerStyles: {\n position: 'relative',\n transition: 'opacity 500ms ease-out'\n },\n errorRow: {\n overflow: 'hidden'\n },\n formReset: {\n border: 0,\n minWidth: 0\n },\n headerRow: {\n marginBottom: 24,\n width: '100%'\n }\n});\nconst COPY$2 = defineMessages({\n QUESTION_TITLE: {\n id: 'QuestionFieldLayoutTemplate.QUESTION_TITLE',\n defaultMessage: 'Question Title',\n description: '[Type: Label][Vis: low] - question landmark for screen readers only'\n }\n});\n\nfunction QuestionFieldLayoutTemplate({\n footer,\n hasFooterPadding,\n children,\n clickShield,\n error,\n id,\n padding,\n width = {\n width: 100,\n format: 'PERCENT'\n },\n title,\n onSubmit,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onLeave = () => {},\n ...props\n}) {\n const {\n footerRow,\n containerStyles,\n formReset,\n errorRow,\n headerRow\n } = useStyles$9({\n hasFooterPadding,\n clickShield\n });\n const containerRef = useRef(null);\n const errorRef = useRef(null);\n /** Keep track of last error to enable error-hiding animation */\n\n const [lastShownError, setLastShownError] = useState(error);\n const handleKeydown = useCallback(event => {\n if (event.key === 'Enter') {\n onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit();\n }\n }, [onSubmit]);\n /**\n * resolves double height animate issue with RAWR-1240\n */\n\n const isAnimating = useRef(false);\n useLayoutEffect(() => {\n const el = errorRef.current;\n\n if (!el || isAnimating.current) {\n return;\n }\n\n const hasError = !!error;\n const initialHeight = el.offsetHeight;\n el.style.height = 'auto'; // remove height to measure full size\n\n const {\n offsetHeight\n } = el;\n const fromValue = hasError ? 0 : offsetHeight;\n const toValue = hasError ? offsetHeight : 0; // don't animate if value is already correct (e.g. at initial load)\n\n if (initialHeight === toValue) {\n el.style.height = `${initialHeight}px`;\n return;\n }\n\n el.style.height = `${initialHeight}px`;\n animate({\n fromValue,\n toValue,\n duration: 300,\n delay: 200,\n onUpdate: (height, next) => {\n el.style.height = `${height}px`;\n next();\n },\n onStart: () => {\n isAnimating.current = true;\n },\n onComplete: () => {\n setLastShownError(error);\n isAnimating.current = false;\n }\n });\n }, [error]);\n const fieldsetRef = useRef(null);\n useOnFocusLeave(fieldsetRef, onLeave);\n useEffect(() => {\n const {\n current: container\n } = containerRef;\n container === null || container === void 0 ? void 0 : container.addEventListener('keydown', handleKeydown);\n return () => {\n return container === null || container === void 0 ? void 0 : container.removeEventListener('keydown', handleKeydown);\n };\n }, [containerRef, handleKeydown]);\n /**\n * This id is queried in RespWeb to calculate the offset for scroll-to-error animations in classic mode\n * ref: https://code.corp.surveymonkey.com/webplatform/smweb/pull/10725\n */\n\n let errorRowId;\n /** used in RespWeb for OQAATView */\n\n let fieldId;\n /** used in RespWeb for OQAATView */\n\n let questionTitleId;\n\n if (id) {\n errorRowId = createErrorRowId(id);\n fieldId = createFieldId(id);\n questionTitleId = createLegendId(id);\n }\n\n return React__default.createElement(\"div\", {\n ref: containerRef,\n id: fieldId,\n ...props,\n className: containerStyles\n }, React__default.createElement(VisuallyHidden, {\n element: \"div\"\n }, React__default.createElement(T, {\n desc: COPY$2.QUESTION_TITLE\n })), React__default.createElement(QuestionSpacing, {\n padding: padding,\n width: width\n }, React__default.createElement(\"div\", {\n ref: errorRef,\n id: errorRowId,\n className: errorRow\n }, error || lastShownError), React__default.createElement(\"fieldset\", {\n ref: fieldsetRef,\n className: formReset\n }, React__default.createElement(\"legend\", {\n id: questionTitleId,\n className: headerRow,\n tabIndex: -1\n }, title), children), footer && React__default.createElement(\"div\", {\n className: footerRow\n }, footer)));\n}\n/**\n * Calculate the max number of children each column can be filled in the layout\n * @param columns number of columns\n * @param total total child count\n * @description Based on the current implementation in production (as of Jan 20, 2021),\n * - if columns = 1, the max number of children per column = total (render all children vertically)\n * - if columns > 1, the max number of children per column = (total / columns) + 1\n */\n\n\nconst calculateMaxNumOfChildrenPerColumn = (columns, total) => {\n if (columns === 1) {\n return total;\n }\n\n const childrenPerColumn = total / columns;\n\n if (childrenPerColumn % 1 === 0) {\n return childrenPerColumn;\n }\n\n return Math.floor(childrenPerColumn) + 1;\n};\n/**\n * Divide the children array into slices for rendering\n * @param childrenArr - children array\n * @param maxCellsPerCol - maximum number of children per slice\n * @param totalColumns - number of columns\n * @example\n * childrenArr = [option1, option2, option3, option4, option5, option6, option7]\n * childrenPerSlice = 2\n * totalColumns = 3\n * output: [[option1, option2, option3], [option4, option5], [option6, option7]]\n */\n\n\nconst sliceChildren = (childrenArr, maxCellsPerCol, totalColumns) => {\n let index = 0;\n const result = [];\n const partialColumnsCount = totalColumns * maxCellsPerCol - childrenArr.length; // Calculate the number of fullColumns, to conditionally push slice with the correct # of cells\n\n let fullColumnsCount = totalColumns - partialColumnsCount;\n\n while (index < childrenArr.length) {\n if (fullColumnsCount > 0) {\n result.push(childrenArr.slice(index, index + maxCellsPerCol));\n index += maxCellsPerCol;\n } else {\n result.push(childrenArr.slice(index, index + maxCellsPerCol - 1));\n index += maxCellsPerCol - 1;\n }\n\n fullColumnsCount -= 1;\n }\n\n return result;\n};\n\nconst useStyles$8 = createUseStyles(theme => ({\n containerVertical: {\n display: 'initial'\n },\n containerHorizontal: {\n display: 'block'\n },\n\n /** shared between horizontal and vertical columns */\n column: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start'\n },\n columnHorizontal: {},\n\n /** Horizontal Column that adjust width to content width */\n columnHorizontalAutoAdjust: {\n width: 'auto'\n },\n [`@media (min-width: ${theme.breakpoints.xs.min})`]: {\n containerVertical: {\n display: 'flex'\n },\n containerHorizontal: {\n display: 'flex',\n flexWrap: 'wrap'\n }\n },\n [`@media only screen and (min-width: ${theme.breakpoints.lg.min})`]: {\n columnHorizontal: {\n width: '19%'\n }\n },\n [`@media (min-width: ${theme.breakpoints.sm.min}) and (max-width: ${theme.breakpoints.md.max})`]: {\n columnHorizontal: {\n width: '24%'\n }\n },\n [`@media only screen and (max-width: ${theme.breakpoints.xxs.max})`]: {\n columnHorizontal: {\n width: '100%',\n display: 'block'\n },\n columnHorizontalAutoAdjust: {\n width: '100%',\n display: 'block'\n }\n },\n answerLayoutCell: ({\n gridCellMargin = '0'\n }) => ({\n margin: gridCellMargin,\n flex: [0, 0, 'auto'],\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }),\n otherLayoutCell: ({\n otherCellMargin = '0'\n }) => ({\n margin: otherCellMargin\n })\n}));\n\nfunction QuestionAnswerLayoutTemplate({\n children,\n columns = 1,\n other,\n noneOfTheAbove,\n adjustToContent = false,\n gridCellMargin,\n otherCellMargin\n}) {\n const {\n containerVertical,\n containerHorizontal,\n column,\n columnHorizontal,\n columnHorizontalAutoAdjust,\n answerLayoutCell,\n otherLayoutCell\n } = useStyles$8({\n columns,\n adjustToContent,\n gridCellMargin,\n otherCellMargin\n });\n const isHorizontal = columns === 'horizontal';\n /* Based on the columns config, divide the question answers\n (children of this component) into column groups for rendering.\n The reason we need to do this is when there are multiple columns,\n the answers are listed vertically instead of horizontally.\n For example:\n If there are 3 answers and 2 columns,\n Then the ordering will be:\n Answer 1 Answer 3\n Answer 2\n NOT:\n Answer 1 Answer 2\n Answer 3\n * though `horizontal` uses this\n \n */\n\n const columnGroups = useMemo(() => {\n const totalChildren = React__default.Children.count(children);\n const totalColumns = columns === 'horizontal' ? totalChildren : columns;\n const childrenArray = React__default.Children.toArray(children);\n\n if (!other && !!noneOfTheAbove && columns !== 'horizontal') {\n childrenArray.push(noneOfTheAbove);\n }\n\n const answersPerColumn = columns === 'horizontal' ? 1 : calculateMaxNumOfChildrenPerColumn(totalColumns, totalChildren + (!other && !!noneOfTheAbove ? 1 : 0));\n return sliceChildren(childrenArray, answersPerColumn, totalColumns);\n }, [children, columns, noneOfTheAbove, other]);\n const columnClassNames = isHorizontal ? [column, adjustToContent ? columnHorizontalAutoAdjust : columnHorizontal] : column;\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(\"div\", {\n className: isHorizontal ? containerHorizontal : containerVertical\n }, columnGroups.map((col, columnIndex) => React__default.createElement(\"div\", {\n key: `col-${columnIndex + 1}`,\n className: classNames(columnClassNames),\n \"data-testid\": \"answer-layout-column\"\n }, col.map((cell, cellIndex) => React__default.createElement(\"div\", {\n key: `cell-${cellIndex + 1}`,\n \"data-testid\": \"answer-layout-cell\",\n className: answerLayoutCell\n }, cell))))), other && React__default.createElement(\"div\", {\n className: otherLayoutCell\n }, other), (other && noneOfTheAbove || columns === 'horizontal') && React__default.createElement(\"div\", {\n className: otherLayoutCell,\n \"data-testid\": \"Other-NOTA\"\n }, noneOfTheAbove));\n}\n\ncreateUseStyles(theme => {\n var _a;\n\n return {\n icon: {\n color: '#F05B24',\n fontSize: theme.fontSize.body,\n alignSelf: 'flex-start',\n marginTop: 2,\n flexShrink: 0\n },\n validationMessage: {\n fontFamily: theme.fontFamily,\n lineHeight: 1.5,\n color: '#333e48',\n fontWeight: 400,\n fontSize: 16,\n padding: theme.isDark ? 8 : [4, 0],\n backgroundColor: theme.isDark ? 'rgba(255, 255, 255, 0.9)' : '',\n borderRadius: 2,\n display: 'inline-flex',\n gap: 5,\n alignItems: 'center',\n marginBottom: 8,\n [`@media only screen and (max-width: ${(_a = theme.breakpoints) === null || _a === void 0 ? void 0 : _a.xxs.max})`]: {\n width: '100%',\n padding: theme.isDark ? 4 : [4, 0]\n }\n }\n };\n});\nconst useStyles$7 = createUseStyles(theme => {\n var _a;\n\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputArea: {\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontWeight: fontWeightOptions.medium,\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px'\n },\n lineHeight: '1.15em',\n padding: '6px 60px 6px 6px',\n maxWidth: '100%',\n [breakpointXsMin]: {\n // extra 66px to account for the padding\n width: ({\n cols\n }) => `calc(${cols}ch + 66px)`\n },\n width: '100%',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n verticalAlign: 'top',\n textSizeAdjust: 'auto',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5\n },\n '&:disabled': {\n opacity: 0.4\n }\n }\n };\n});\n\nfunction TextArea({\n className,\n disabled = false,\n required = false,\n readOnly = false,\n cols = 50,\n ...props\n}, forwardedRef) {\n const {\n inputArea\n } = useStyles$7({\n cols\n });\n return React__default.createElement(\"textarea\", {\n className: classNames(inputArea, className),\n disabled: disabled,\n \"aria-disabled\": disabled,\n required: required,\n \"aria-required\": required,\n readOnly: readOnly,\n \"aria-readonly\": readOnly,\n spellCheck: true,\n ref: forwardedRef,\n ...props\n });\n}\n\nvar CommentBox = forwardRef(TextArea);\nconst useStyles$6 = createUseStyles(theme => {\n var _a;\n\n const breakpointMedium = `@media only screen and (max-width: ${theme.breakpoints.md.max})`;\n const breakpointXsMin = `@media only screen and (min-width: ${theme.breakpoints.xs.min})`;\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n inputField: {\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n fontSize: '18px',\n [breakpointMedium]: {\n fontSize: '16px'\n },\n fontWeight: fontWeightOptions.medium,\n lineHeight: '1.5em',\n height: ({\n autoHeight\n }) => autoHeight ? {} : '50px',\n maxWidth: '100%',\n width: '100%',\n [breakpointXsMin]: {\n // extra 12px to account for the padding\n width: ({\n size\n }) => `calc(${size}ch + 12px)`\n },\n padding: '6px',\n border: `1px solid ${theme.answerColor}`,\n borderRadius: '0px',\n backgroundColor: '#fff',\n color: '#000',\n transition: 'all 0.1s linear',\n '&:focus, &:hover': {\n outline: `2px solid ${theme.primaryAccentColor}`\n },\n '&:read-only:not(:disabled)': {\n borderColor: 'transparent',\n backgroundColor: theme.input.bgColor,\n color: theme.isDark ? '#fff' : '#000',\n opacity: 0.5\n },\n '&:disabled': {\n opacity: 0.4\n }\n }\n };\n});\n\nfunction TextInput({\n className,\n autoHeight = false,\n size = 50,\n required = false,\n disabled = false,\n readOnly = false,\n onChange: handleChange,\n ...props\n}, forwardedRef) {\n const {\n inputField\n } = useStyles$6({\n autoHeight,\n size\n });\n return React__default.createElement(\"input\", {\n type: \"text\",\n className: classNames(inputField, className),\n disabled: disabled,\n \"aria-disabled\": disabled,\n required: required,\n \"aria-required\": required,\n readOnly: readOnly,\n \"aria-readonly\": readOnly,\n spellCheck: true,\n onChange: handleChange,\n ...props,\n ref: forwardedRef\n });\n}\n\nvar SingleTextbox = forwardRef(TextInput);\ncreateUseStyles(theme => {\n return {\n commentLabelText: { ...theme.questionBody,\n marginBottom: 5,\n lineHeight: 1.25\n },\n commentLabel: {\n display: 'block'\n }\n };\n});\nconst useStyles$5 = createUseStyles(theme => {\n var _a; // Quiz results uses the default font size\n\n\n const defaultFontSize = theme.fontSize.body;\n const {\n fontFamily = 'inherit',\n fontWeight = 'inherit',\n fontStyle = 'inherit',\n textDecoration = 'inherit',\n highlightColor = 'inherit',\n color = 'inherit'\n } = (_a = theme.questionBody) !== null && _a !== void 0 ? _a : {};\n return {\n componentContainer: {\n position: 'relative'\n },\n labelContainer: {\n display: 'inline-block',\n position: 'relative',\n padding: 0,\n margin: [4, 2],\n borderRadius: 4\n },\n textContainer: {\n margin: [3, 0, 2],\n wordBreak: 'break-word',\n pointerEvents: 'none',\n fontFamily,\n fontWeight,\n fontStyle,\n textDecoration,\n highlightColor,\n color,\n fontSize: defaultFontSize\n },\n textInputContainer: {\n margin: [5, 0, 0, 0]\n }\n };\n});\n\nfunction QuizResultComment({\n optionText,\n textInputValue = '',\n textInputSize = 50,\n textInputParagraphLines = 1,\n id\n}) {\n const {\n componentContainer,\n labelContainer,\n textContainer,\n textInputContainer\n } = useStyles$5();\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(\"div\", {\n className: componentContainer\n }, React__default.createElement(\"label\", {\n htmlFor: id,\n className: labelContainer\n }, React__default.createElement(\"div\", {\n className: textContainer\n }, React__default.createElement(RichText, {\n element: \"span\",\n text: optionText\n })))), React__default.createElement(\"div\", {\n className: textInputContainer\n }, textInputParagraphLines <= 1 ? React__default.createElement(SingleTextbox, {\n id: id,\n name: \"otherOptionText\",\n value: textInputValue,\n size: textInputSize,\n autoHeight: true,\n readOnly: true\n }) : React__default.createElement(CommentBox, {\n id: id,\n name: \"otherOptionText\",\n rows: textInputParagraphLines,\n defaultValue: textInputValue,\n cols: textInputSize,\n translate: \"no\",\n readOnly: true\n })));\n}\n\nvar useStyles$4 = createUseStyles({\n srOnly: visuallyHidden\n});\nconst COPY$1 = defineMessages({\n CORRECT: {\n id: 'SrText.CORRECT',\n defaultMessage: 'Correct',\n description: '[Type: label][Vis: med] - the answer was correct'\n },\n INCORRECT: {\n id: 'SrText.INCORRECT',\n defaultMessage: 'Incorrect',\n description: '[Type: label][Vis: med] - the answer was incorrect '\n }\n});\n\nfunction SrText({\n icon\n}) {\n const {\n srOnly\n } = useStyles$4();\n return React__default.createElement(\"div\", {\n className: srOnly\n }, icon ? React__default.createElement(T, {\n desc: icon === 'correct' ? COPY$1.CORRECT : COPY$1.INCORRECT\n }) : null);\n}\n\nfunction QuizCorrectIcon({\n isAriaHidden = false\n}) {\n return React__default.createElement(\"svg\", {\n width: \"14px\",\n height: \"10px\",\n viewBox: \"0 0 14 10\",\n version: \"1.1\",\n \"data-testid\": \"quiz-result-correct-icon\",\n \"aria-hidden\": isAriaHidden\n }, React__default.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, React__default.createElement(\"g\", {\n transform: \"translate(-257, -338.75)\",\n fill: \"#F2FAE8\"\n }, React__default.createElement(\"g\", {\n id: \"check-correct\",\n transform: \"translate(254, 334)\"\n }, React__default.createElement(\"g\", null, React__default.createElement(\"path\", {\n d: \"M4,10.3259737 C4,10.4757908 4.04494448,10.5956428 4.13483478,10.6855331 L7.33716071,13.8990952 C7.42705101,13.9889855 7.55626637,14.069511 7.72481069,14.1406742 C7.893355,14.2118373 8.04504261,14.2474184 8.17987806,14.2474184 L8.78663455,14.2474184 C9.07877802,14.2474184 9.359681,14.1313118 9.6293519,13.8990952 L16.4160356,7.08993903 C16.5059259,7.00004873 16.5508704,6.88206948 16.5508704,6.73599774 C16.5508704,6.589926 16.5059259,6.47194675 16.4160356,6.38205645 L15.1575777,5.13483478 C15.0676874,5.04494448 14.9515809,5 14.8092545,5 C14.6669282,5 14.5433309,5.04494448 14.4384589,5.13483478 L8.85405194,10.7529504 C8.76416164,10.8428407 8.6443097,10.8877852 8.49449253,10.8877852 C8.34467537,10.8877852 8.22482343,10.8428407 8.13493313,10.7529504 L6.11241149,8.7304288 C6.02252119,8.6405385 5.90266926,8.59559403 5.75285209,8.59559403 C5.60303492,8.59559403 5.48318299,8.6405385 5.39329269,8.7304288 L4.13483478,9.96641425 C4.04494448,10.0563045 4,10.1761565 4,10.3259737 L4,10.3259737 Z\"\n }))))));\n}\n\nfunction QuizWrongIcon({\n isAriaHidden = false\n}) {\n return React__default.createElement(\"svg\", {\n width: \"12px\",\n height: \"12px\",\n viewBox: \"0 0 12 12\",\n version: \"1.1\",\n \"data-testid\": \"quiz-result-wrong-icon\",\n \"aria-hidden\": isAriaHidden\n }, React__default.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, React__default.createElement(\"path\", {\n d: \"M0.281690141,9.92648775 C0.281690141,10.187088 0.368074254,10.4068447 0.54084507,10.5857643 L1.25070423,11.3208868 C1.42347504,11.4998064 1.63567949,11.5892649 1.88732394,11.5892649 C2.13896839,11.5892649 2.35117285,11.4998064 2.52394366,11.3208868 L5.03661972,8.71878646 C5.20939054,8.53986686 5.42159499,8.4504084 5.67323944,8.4504084 C5.92488389,8.4504084 6.1446,8.53986686 6.33239437,8.71878646 L8.82253521,11.3208868 C8.99530603,11.4998064 9.20751048,11.5892649 9.45915493,11.5892649 C9.71079938,11.5892649 9.93051549,11.4998064 10.1183099,11.3208868 L10.828169,10.5857643 C11.0009398,10.4068447 11.0873239,10.187088 11.0873239,9.92648775 C11.0873239,9.66588746 11.0009398,9.43835181 10.828169,9.24387398 L8.31549296,6.66511085 C8.14272214,6.47063302 8.05633803,6.24698687 8.05633803,5.99416569 C8.05633803,5.74134452 8.14272214,5.51769837 8.31549296,5.32322054 L10.828169,2.74445741 C11.0009398,2.54997958 11.0873239,2.32244393 11.0873239,2.06184364 C11.0873239,1.80124335 11.0009398,1.5814867 10.828169,1.40256709 L10.1183099,0.667444574 C9.93051549,0.488524971 9.71079938,0.399066511 9.45915493,0.399066511 C9.20751048,0.399066511 8.99530603,0.488524971 8.82253521,0.667444574 L6.33239437,3.26954492 C6.1446,3.44846453 5.92488389,3.53792299 5.67323944,3.53792299 C5.42159499,3.53792299 5.20939054,3.44846453 5.03661972,3.26954492 L2.52394366,0.667444574 C2.35117285,0.488524971 2.13896839,0.399066511 1.88732394,0.399066511 C1.63567949,0.399066511 1.42347504,0.488524971 1.25070423,0.667444574 L0.54084507,1.40256709 C0.368074254,1.5814867 0.281690141,1.80124335 0.281690141,2.06184364 C0.281690141,2.32244393 0.368074254,2.54997958 0.54084507,2.74445741 L3.05352113,5.32322054 C3.22629194,5.51769837 3.31267606,5.74134452 3.31267606,5.99416569 C3.31267606,6.24698687 3.22629194,6.47063302 3.05352113,6.66511085 L0.54084507,9.24387398 C0.368074254,9.43835181 0.281690141,9.66588746 0.281690141,9.92648775 L0.281690141,9.92648775 Z\",\n fill: \"#FFFFFF\"\n })));\n}\n\nconst icons = {\n correct: QuizCorrectIcon,\n wrong: QuizWrongIcon\n};\nconst useStyles$3 = createUseStyles(theme => {\n const size = {\n height: 20,\n width: 20\n };\n const containerBase = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...size\n };\n\n const getIconContainerBg = (highlight, backgroundColor, iconName) => {\n if (iconName === 'correct') {\n return '#00BF6F';\n }\n\n if (iconName === 'wrong') {\n return '#b32e22';\n }\n\n if (highlight) {\n return theme.correctAnswerHighlightColor;\n }\n\n return 'transparent';\n };\n\n const getIconContainerBorderColor = iconName => {\n if (iconName === 'correct') {\n return theme.border.correctColor;\n }\n\n if (iconName === 'wrong') {\n return theme.border.wrongColor;\n }\n\n return 'inherit';\n };\n\n const getIconContainerBackground = (highlight, backgroundColor) => {\n if (!backgroundColor) {\n return 'inherit';\n }\n\n if (highlight) {\n return theme.primaryBackgroundColor;\n }\n\n return backgroundColor;\n };\n\n return {\n radioContainer: {\n position: 'relative',\n ...size\n },\n radioInput: {\n opacity: 0,\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%'\n },\n iconContainer: ({\n highlight,\n iconName,\n type,\n backgroundColor\n }) => ({ ...containerBase,\n position: 'relative',\n borderRadius: type === 'radio' ? 10 : 2,\n height: iconName ? size.height : size.height - 2,\n border: iconName ? ['1px', 'solid', theme.border.defaultColor] : [],\n backgroundColor: getIconContainerBg(highlight, backgroundColor, iconName),\n borderColor: getIconContainerBorderColor(iconName)\n }),\n // container needed as background for alpha transparency in `correctAnswerHighlightColor`\n iconContainerBackground: ({\n highlight,\n type,\n iconName,\n backgroundColor\n }) => ({ ...containerBase,\n position: 'absolute',\n borderRadius: type === 'radio' ? 10 : 2,\n border: iconName ? [] : ['1px', 'solid', theme.border.defaultColor],\n backgroundColor: getIconContainerBackground(highlight, backgroundColor)\n })\n };\n});\n\nfunction InputIcon({\n type,\n id,\n ariaLabelledby,\n highlight = false,\n checked,\n isCorrect = true,\n ariaDescribedBy = [],\n noScreenReaderText = false,\n backgroundColor\n}) {\n let iconName;\n\n if (checked && isCorrect) {\n iconName = 'correct';\n } else if (checked) {\n iconName = 'wrong';\n }\n\n const {\n radioContainer,\n radioInput,\n iconContainer,\n iconContainerBackground\n } = useStyles$3({\n highlight,\n iconName,\n type,\n backgroundColor\n });\n const Icon = iconName && icons[iconName];\n return React__default.createElement(\"div\", {\n className: radioContainer\n }, React__default.createElement(\"input\", {\n id: id,\n className: radioInput,\n type: type,\n checked: !!checked,\n \"aria-labelledby\": ariaLabelledby || undefined,\n \"aria-describedby\": ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined,\n readOnly: true\n }), React__default.createElement(\"div\", {\n className: iconContainerBackground\n }, React__default.createElement(\"div\", {\n className: iconContainer,\n \"data-testid\": \"quiz-results-icon-container\"\n }, Icon && React__default.createElement(Icon, {\n isAriaHidden: true\n }))), iconName && !noScreenReaderText && React__default.createElement(SrText, {\n icon: iconName\n }));\n}\n\nconst useStyles$2 = createUseStyles(theme => {\n var _a; // Quiz results uses the default font size\n\n\n const defaultFrontSize = theme.fontSize.body;\n const {\n fontFamily = 'inherit',\n fontWeight = 'inherit',\n fontStyle = 'inherit',\n textDecoration = 'inherit',\n highlightColor = 'inherit',\n color = 'inherit'\n } = (_a = theme.questionBody) !== null && _a !== void 0 ? _a : {};\n const fontWeightOptions = getFontWeights(theme.questionBody.fontFamily);\n return {\n componentContainer: {\n position: 'relative'\n },\n radioInput: {\n opacity: 0,\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%'\n },\n labelContainer: ({\n highlight,\n type\n }) => ({\n display: 'inline-block',\n position: 'relative',\n padding: [1, 8],\n backgroundColor: highlight ? theme.correctAnswerHighlightColor : 'initial',\n borderRadius: type === 'checkbox' ? 4 : 13,\n // fix for IE11 bug - images leaking out of label container\n boxSizing: 'border-box',\n maxWidth: '100%'\n }),\n textContainer: ({\n highlight\n }) => {\n var _a;\n\n return {\n /* Right and left margin are both defined to account for RTL direction styling. */\n margin: [3, 30, 2],\n wordBreak: 'break-word',\n fontFamily,\n fontWeight,\n fontStyle,\n textDecoration,\n highlightColor,\n color,\n ...(highlight ? {\n fontWeight: (_a = fontWeightOptions.medium) !== null && _a !== void 0 ? _a : {}\n } : {}),\n fontSize: defaultFrontSize\n };\n },\n iconContainer: {\n margin: 2,\n position: 'absolute'\n },\n textInputContainer: {\n margin: [5, 0, 0, 0]\n },\n [`@media (min-width: ${theme.breakpoints.sm.min})`]: {\n textInputContainer: {\n margin: [5, 0, 0, 32]\n }\n }\n };\n});\n\nfunction QuizResultChoices({\n id,\n type,\n optionText,\n highlight = false,\n icon,\n hasTextInput = false,\n textInputValue = '',\n textInputSize = 50,\n textInputParagraphLines = 1\n}) {\n const {\n componentContainer,\n labelContainer,\n textContainer,\n iconContainer,\n textInputContainer\n } = useStyles$2({\n highlight,\n icon,\n type\n });\n const uniqId = useMemo(() => uniqueId('id-'), []);\n const radioButtonId = id || uniqId;\n const textInputId = `caption-${radioButtonId}`;\n const inputId = `input-${radioButtonId}`;\n const ariaDescribedBy = [];\n\n if (hasTextInput) {\n ariaDescribedBy.push(textInputId);\n }\n\n return React__default.createElement(React__default.Fragment, null, React__default.createElement(\"div\", {\n className: componentContainer\n }, React__default.createElement(\"label\", {\n htmlFor: inputId,\n className: labelContainer\n }, React__default.createElement(\"div\", {\n className: iconContainer\n }, React__default.createElement(InputIcon, {\n type: type,\n id: inputId,\n checked: !!icon,\n isCorrect: icon === 'correct',\n highlight: highlight,\n ariaDescribedBy: ariaDescribedBy,\n noScreenReaderText: true\n })), React__default.createElement(\"div\", {\n className: textContainer,\n translate: \"no\"\n }, React__default.createElement(RichText, {\n element: \"span\",\n text: optionText\n })), React__default.createElement(SrText, {\n icon: icon\n }))), React__default.createElement(\"div\", {\n className: textInputContainer,\n translate: \"no\"\n }, hasTextInput && (textInputParagraphLines <= 1 ? React__default.createElement(SingleTextbox, {\n id: textInputId,\n name: \"otherOptionText\",\n value: textInputValue,\n size: textInputSize,\n \"aria-labelledby\": inputId,\n autoHeight: true,\n readOnly: true\n }) : React__default.createElement(CommentBox, {\n id: textInputId,\n name: \"otherOptionText\",\n rows: textInputParagraphLines,\n defaultValue: textInputValue,\n cols: textInputSize,\n \"aria-labelledby\": inputId,\n readOnly: true\n }))));\n}\n\nconst useStyles$1 = createUseStyles(theme => {\n return {\n imageChoice: {\n display: 'inline-block'\n },\n componentContainer: ({\n highlight\n }) => ({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n alignItems: 'center',\n width: 224,\n borderRadius: 2,\n border: highlight ? `2px solid ${theme.answerColor}` : '1px solid #D0D2D3'\n }),\n iconLabel: {\n position: 'absolute',\n zIndex: 1,\n top: 2,\n left: 2\n },\n imageContainer: ({\n highlight\n }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: 168,\n position: 'relative',\n backgroundColor: highlight ? theme.correctAnswerHighlightColor : 'rgb(239, 239, 239)'\n }),\n imageStyle: {\n maxHeight: '100%',\n maxWidth: '100%',\n height: 'auto',\n width: 'auto',\n pointerEvents: 'none',\n flex: 'none' // fix for IE 11 - images leaking out of container\n\n },\n captionStyle: ({\n highlight\n }) => {\n var _a;\n\n return {\n fontFamily: (_a = theme.questionBody.fontFamily) !== null && _a !== void 0 ? _a : {},\n display: 'block',\n backgroundColor: highlight ? theme.correctAnswerHighlightColor : 'initial',\n color: theme.answerColor,\n width: '100%',\n padding: [7, 9, 9, 7],\n fontWeight: highlight ? 500 : 'initial'\n };\n },\n srOnly: {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0\n }\n };\n});\n\nfunction QuizResultImageChoice({\n id,\n highlight = false,\n selected = false,\n image,\n caption = '',\n correctMessage,\n selectedMessage,\n isManyAnswers = false\n}) {\n const {\n imageChoice,\n componentContainer,\n imageContainer,\n imageStyle,\n iconLabel,\n captionStyle,\n srOnly\n } = useStyles$1({\n highlight\n });\n const uniqId = useMemo(() => uniqueId('id-'), []);\n const imageChoiceId = id || uniqId;\n const captionId = `caption-${imageChoiceId}`;\n const selectedId = `selected-${imageChoiceId}`;\n const inputId = `input-${imageChoiceId}`;\n const highlightedId = `highlighted-${imageChoiceId}`;\n const ariaDescribedBy = [];\n\n if (highlight) {\n ariaDescribedBy.push(highlightedId);\n }\n\n if (selected) {\n ariaDescribedBy.push(selectedId);\n }\n\n return React__default.createElement(\"div\", {\n className: imageChoice\n }, React__default.createElement(\"div\", {\n className: componentContainer\n }, React__default.createElement(\"div\", {\n className: imageContainer\n }, React__default.createElement(\"label\", {\n htmlFor: inputId,\n className: iconLabel\n }, React__default.createElement(InputIcon, {\n id: inputId,\n type: isManyAnswers ? 'checkbox' : 'radio',\n checked: selected,\n isCorrect: selected && highlight,\n highlight: highlight,\n backgroundColor: \"rgb(239, 239, 239)\",\n ariaDescribedBy: ariaDescribedBy,\n ariaLabelledby: caption ? `${captionId} ${inputId}` : undefined\n })), React__default.createElement(\"img\", {\n className: imageStyle,\n src: image.url,\n // Only add alt text if it's different than the label that describes it\n alt: caption === image.altText ? '' : image.altText,\n \"aria-labelledby\": caption || undefined,\n \"aria-describedby\": ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined\n })), caption && React__default.createElement(\"span\", {\n className: captionStyle,\n id: captionId,\n translate: \"no\"\n }, caption), highlight && React__default.createElement(\"span\", {\n className: srOnly,\n id: highlightedId\n }, correctMessage), selected && React__default.createElement(\"span\", {\n className: srOnly,\n id: selectedId\n }, selectedMessage)));\n}\n\nconst useStyles = createUseStyles(theme => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j; // Quiz results has a consistent font size\n\n\n const fontSize = theme.fontSize.body;\n return {\n componentContainer: {\n margin: [5, 0],\n fontFamily: (_b = (_a = theme.questionTitle) === null || _a === void 0 ? void 0 : _a.fontFamily) !== null && _b !== void 0 ? _b : {},\n fontStyle: (_d = (_c = theme.questionTitle) === null || _c === void 0 ? void 0 : _c.fontStyle) !== null && _d !== void 0 ? _d : {},\n fontWeight: (_f = (_e = theme.questionTitle) === null || _e === void 0 ? void 0 : _e.fontWeight) !== null && _f !== void 0 ? _f : {},\n color: ((_g = theme.questionTitle) === null || _g === void 0 ? void 0 : _g.color) || theme.questionColor,\n fontSize,\n textDecoration: (_j = (_h = theme.questionTitle) === null || _h === void 0 ? void 0 : _h.textDecoration) !== null && _j !== void 0 ? _j : {}\n },\n scoreContainer: {\n display: 'inline'\n },\n feedbackContainer: {\n marginTop: 8,\n marginBottom: 0,\n wordWrap: 'wrap'\n },\n skippedBadge: {\n display: 'inline',\n padding: [2, 15],\n borderRadius: 15,\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n marginLeft: 5\n }\n };\n});\nconst COPY = defineMessages({\n SCORE: {\n id: 'QuizResultScore.SCORE',\n defaultMessage: '{score}/{total} {total, plural, one {point} other {points}}',\n description: '[Type: header][Vis: med] - total achieved point(s) of this quiz question'\n },\n SKIPPED: {\n id: 'QuizResultScore.SKIPPED',\n defaultMessage: 'Skipped',\n description: '[Type: header][Vis: med] - user skipped this quiz question'\n }\n});\n\nfunction QuizResultScore({\n score,\n total,\n feedback,\n skipped = false\n}) {\n const {\n componentContainer,\n scoreContainer,\n feedbackContainer,\n skippedBadge\n } = useStyles();\n return React__default.createElement(\"div\", {\n className: componentContainer\n }, React__default.createElement(\"p\", {\n className: scoreContainer\n }, React__default.createElement(T, {\n desc: COPY.SCORE,\n values: {\n score,\n total\n }\n })), skipped && React__default.createElement(\"span\", {\n className: skippedBadge\n }, React__default.createElement(T, {\n desc: COPY.SKIPPED\n })), feedback && React__default.createElement(\"p\", {\n translate: \"no\",\n className: feedbackContainer,\n dangerouslySetInnerHTML: {\n __html: sanitizeString(unescaper(feedback))\n }\n }));\n}\n/**\n * Get the icon to indicator whether or not user got the answer correct or not\n * @param responded whether user selected the answer option or not\n * @param answerOptionPoints answer option points\n */\n\n\nconst getCorrectnessIndicatorIcon = (responded, answerOptionPoints) => {\n if (!responded) {\n return undefined;\n }\n\n if (answerOptionPoints <= 0) {\n return 'wrong';\n }\n\n return 'correct';\n};\n/** Gets the icon and highlight for `idToSearch` */\n\n\nconst getIconAndHighlight = (answers, idToSearch, highlightCorrectAnswers) => {\n const {\n points = 0,\n responded = false\n } = answers.find(({\n answer\n }) => answer.id === idToSearch) || {};\n const icon = getCorrectnessIndicatorIcon(responded, points);\n return {\n icon,\n highlight: highlightCorrectAnswers && points > 0\n };\n};\n/** Picks feedback string based on user/total score */\n\n\nconst pickFeedback = (feedback, userScore, totalScore) => {\n if (userScore >= totalScore) {\n return feedback.correct;\n }\n\n if (userScore > 0) {\n return feedback.partial;\n }\n\n return feedback.incorrect;\n};\n/**\n * Calculate user score for a quiz question\n * @param quizAnswers Quiz or QuizImage results answers\n */\n\n\nconst getUserScore = quizAnswers => {\n return quizAnswers.reduce((acc, cur) => {\n return cur.responded ? acc + cur.points : acc;\n }, 0);\n};\n/** Helper Type Guard to filter our `undefined` */\n\n\nconst isNotUndefined = a => a !== undefined;\n\nconst isPureQuizAnswer = answer => 'label' in answer.answer && 'visible' in answer.answer;\n/** Filter `answers` to only regular Answers without invisible, \"other\" and \"none of the above\" */\n\n\nconst filterQuizAnswers = (answers, idsToFilter = []) => answers.filter(isPureQuizAnswer).filter(({\n answer: {\n visible\n }\n}) => visible).filter(a => !idsToFilter.filter(isNotUndefined).includes(a.answer.id));\n\nconst isPureQuizImageAnswer = answer => 'label' in answer.answer && 'visible' in answer.answer && 'image' in answer.answer;\n/** QuizImageAnswer without \"other\" and \"none of the above\" */\n\n\nconst filterOtherFromQuizImageAnswer = (answers, idsToFilter = []) => answers.filter(isPureQuizImageAnswer).filter(({\n answer: {\n visible\n }\n}) => visible).filter(a => !idsToFilter.filter(isNotUndefined).includes(a.answer.id));\n\nfunction CheckBox({\n id,\n title,\n questionNumber,\n numberingEnabled,\n highlightCorrectAnswers,\n answerNoneOfTheAbove,\n answerLayoutColumns,\n spacing,\n answerOther,\n quizResults\n}) {\n const userScore = getUserScore(quizResults.answers);\n const totalScore = quizResults.totalPoints;\n const feedback = pickFeedback(quizResults.feedback, userScore, totalScore);\n /** Visible answers without \"other\" and \"none of the above\" */\n\n const regularAnswers = filterQuizAnswers(quizResults.answers, [answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.id, answerOther === null || answerOther === void 0 ? void 0 : answerOther.id]);\n const isComment = (answerOther === null || answerOther === void 0 ? void 0 : answerOther.type) === 'COMMENT'; // eslint-disable-next-line react/no-unstable-nested-components\n\n function NoneOfTheAboveOption() {\n return (answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.visible) ? React__default.createElement(QuizResultChoices, {\n id: answerNoneOfTheAbove.id,\n type: \"checkbox\",\n optionText: answerNoneOfTheAbove.label,\n textInputValue: \"\",\n ...getIconAndHighlight(quizResults.answers, answerNoneOfTheAbove.id, highlightCorrectAnswers)\n }) : null;\n } // eslint-disable-next-line react/no-unstable-nested-components\n\n\n function OtherOption() {\n var _a, _b;\n\n if (!(answerOther === null || answerOther === void 0 ? void 0 : answerOther.visible)) {\n return null;\n }\n\n return isComment ? React__default.createElement(QuizResultComment, {\n id: answerOther.id,\n optionText: answerOther.label,\n textInputValue: ((_a = quizResults.answerOther) === null || _a === void 0 ? void 0 : _a.textAnswer) || '',\n textInputSize: answerOther.charsCount,\n textInputParagraphLines: answerOther.linesCount\n }) : React__default.createElement(QuizResultChoices, {\n id: answerOther.id,\n type: \"checkbox\",\n optionText: answerOther.label,\n textInputValue: ((_b = quizResults.answerOther) === null || _b === void 0 ? void 0 : _b.textAnswer) || '',\n hasTextInput: true,\n textInputSize: answerOther.charsCount,\n textInputParagraphLines: answerOther.linesCount,\n ...getIconAndHighlight(quizResults.answers, answerOther.id, !isComment && highlightCorrectAnswers)\n });\n }\n\n return React__default.createElement(QuestionFieldLayoutTemplate, {\n title: React__default.createElement(RespondentQuestionTitle, {\n id: id,\n heading: title,\n required: false,\n numbered: numberingEnabled,\n number: parseInt(questionNumber, 10),\n useDefaultFrontSize: true\n }),\n footer: React__default.createElement(QuizResultScore, {\n score: userScore,\n total: totalScore,\n feedback: feedback,\n skipped: false\n }),\n padding: spacing,\n clickShield: false,\n hasFooterPadding: true\n }, React__default.createElement(QuestionAnswerLayoutTemplate, {\n gridCellMargin: [4, 2],\n columns: answerLayoutColumns,\n noneOfTheAbove: !isComment ? React__default.createElement(NoneOfTheAboveOption, null) : null,\n other: React__default.createElement(OtherOption, null)\n }, regularAnswers.map(({\n answer,\n responded,\n points\n }) => {\n return React__default.createElement(QuizResultChoices, {\n key: answer.id,\n textInputValue: \"\",\n id: answer.id,\n type: \"checkbox\",\n optionText: answer.label,\n icon: getCorrectnessIndicatorIcon(responded, points),\n // Correct answers are expected to have a point value above 0\n // and should be highlighted.\n highlight: highlightCorrectAnswers && points > 0\n });\n }).concat(isComment ? [React__default.createElement(NoneOfTheAboveOption, {\n key: answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.id\n })] : [])));\n}\n\nvar CheckBox$1 = withErrorBoundary(CheckBox);\n\nfunction MultipleChoice({\n id,\n title,\n questionNumber,\n numberingEnabled,\n highlightCorrectAnswers,\n answerNoneOfTheAbove,\n answerLayoutColumns,\n spacing,\n answerOther,\n quizResults\n}) {\n const userScore = getUserScore(quizResults.answers);\n const totalScore = quizResults.totalPoints;\n const feedback = pickFeedback(quizResults.feedback, userScore, totalScore);\n /** Visible answers without \"other\" and \"none of the above\" */\n\n const regularAnswers = filterQuizAnswers(quizResults.answers, [answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.id, answerOther === null || answerOther === void 0 ? void 0 : answerOther.id]);\n const isComment = (answerOther === null || answerOther === void 0 ? void 0 : answerOther.type) === 'COMMENT'; // eslint-disable-next-line react/no-unstable-nested-components\n\n function NoneOfTheAboveOption() {\n return (answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.visible) ? React__default.createElement(QuizResultChoices, {\n type: \"radio\",\n id: answerNoneOfTheAbove.id,\n optionText: answerNoneOfTheAbove.label,\n textInputValue: \"\",\n ...getIconAndHighlight(quizResults.answers, answerNoneOfTheAbove.id, highlightCorrectAnswers)\n }) : null;\n } // eslint-disable-next-line react/no-unstable-nested-components\n\n\n function OtherOption() {\n var _a, _b;\n\n if (!(answerOther === null || answerOther === void 0 ? void 0 : answerOther.visible)) {\n return null;\n }\n\n return isComment ? React__default.createElement(QuizResultComment, {\n id: answerOther.id,\n optionText: answerOther.label,\n textInputValue: ((_a = quizResults.answerOther) === null || _a === void 0 ? void 0 : _a.textAnswer) || '',\n textInputSize: answerOther.charsCount,\n textInputParagraphLines: answerOther.linesCount\n }) : React__default.createElement(QuizResultChoices, {\n type: \"radio\",\n id: answerOther.id,\n optionText: answerOther.label,\n textInputValue: ((_b = quizResults.answerOther) === null || _b === void 0 ? void 0 : _b.textAnswer) || '',\n hasTextInput: true,\n textInputSize: answerOther.charsCount,\n textInputParagraphLines: answerOther.linesCount,\n ...getIconAndHighlight(quizResults.answers, answerOther.id, !isComment && highlightCorrectAnswers)\n });\n }\n\n return React__default.createElement(QuestionFieldLayoutTemplate, {\n title: React__default.createElement(RespondentQuestionTitle, {\n id: id,\n heading: title,\n required: false,\n numbered: numberingEnabled,\n number: parseInt(questionNumber, 10),\n useDefaultFrontSize: true\n }),\n footer: React__default.createElement(QuizResultScore, {\n score: userScore,\n total: totalScore,\n feedback: feedback,\n skipped: false\n }),\n padding: spacing,\n clickShield: false,\n hasFooterPadding: true\n }, React__default.createElement(QuestionAnswerLayoutTemplate, {\n gridCellMargin: [4, 2],\n columns: answerLayoutColumns,\n noneOfTheAbove: !isComment ? React__default.createElement(NoneOfTheAboveOption, null) : null,\n other: React__default.createElement(OtherOption, null)\n }, regularAnswers.map(answerOption => {\n const {\n answer,\n points,\n responded\n } = answerOption;\n const icon = getCorrectnessIndicatorIcon(responded, points);\n return React__default.createElement(QuizResultChoices, {\n type: \"radio\",\n key: answer.id,\n id: answer.id,\n optionText: answer.label,\n textInputValue: \"\",\n icon: icon,\n // Correct answers are expected to have a point value above 0\n // and should be highlighted.\n highlight: highlightCorrectAnswers && points > 0\n });\n }).concat(isComment && answerNoneOfTheAbove ? [React__default.createElement(NoneOfTheAboveOption, {\n key: answerNoneOfTheAbove.id\n })] : [])));\n}\n\nvar MultipleChoice$1 = withErrorBoundary(MultipleChoice);\n\nfunction ImageChoice({\n id,\n title,\n questionNumber,\n highlightCorrectAnswers,\n numberingEnabled,\n answerNoneOfTheAbove,\n quizResults,\n isManyAnswers\n}) {\n const userScore = getUserScore(quizResults.answers);\n const totalScore = quizResults.totalPoints;\n const feedback = pickFeedback(quizResults.feedback, userScore, totalScore);\n const noneOfTheAboveOption = answerNoneOfTheAbove && answerNoneOfTheAbove.visible ? React__default.createElement(QuizResultChoices, {\n type: isManyAnswers ? 'checkbox' : 'radio',\n id: answerNoneOfTheAbove.id,\n optionText: answerNoneOfTheAbove.label,\n textInputValue: \"\",\n ...getIconAndHighlight(quizResults.answers, answerNoneOfTheAbove.id, highlightCorrectAnswers)\n }) : null;\n /** Answers without \"none of the above\" */\n\n const regularAnswers = filterOtherFromQuizImageAnswer(quizResults.answers, [answerNoneOfTheAbove === null || answerNoneOfTheAbove === void 0 ? void 0 : answerNoneOfTheAbove.id]);\n return React__default.createElement(QuestionFieldLayoutTemplate, {\n title: React__default.createElement(RespondentQuestionTitle, {\n id: id,\n heading: title,\n required: false,\n numbered: numberingEnabled,\n number: parseInt(questionNumber, 10),\n useDefaultFrontSize: true\n }),\n footer: React__default.createElement(QuizResultScore, {\n score: userScore,\n total: totalScore,\n feedback: feedback,\n skipped: false\n }),\n clickShield: false,\n hasFooterPadding: true\n }, React__default.createElement(QuestionAnswerLayoutTemplate, {\n columns: \"horizontal\",\n noneOfTheAbove: noneOfTheAboveOption,\n adjustToContent: true,\n otherCellMargin: [4, 2, 9, 2],\n gridCellMargin: [15, 24, 15, 0]\n }, regularAnswers.map(answerOption => {\n const {\n answer,\n points,\n responded\n } = answerOption;\n return React__default.createElement(QuizResultImageChoice, {\n key: answer.id,\n id: answer.id,\n image: answer.image,\n caption: answer.label,\n selected: responded,\n isManyAnswers: isManyAnswers,\n // Correct answers are expected to have a point value above 0\n // and should be highlighted.\n highlight: highlightCorrectAnswers && points > 0\n });\n })));\n}\n\nvar ImageChoice$1 = withErrorBoundary(ImageChoice);\nexport { CheckBox$1 as CheckBox, ImageChoice$1 as ImageChoice, MultipleChoice$1 as MultipleChoice };","import React__default, { useMemo } from 'react';\nimport { selectQuestionTypeDefinition, isExternalQuestionWithTypeId } from '@sm/question-definitions';\nimport { withErrorBoundary } from '@sm/question-ui/helpers';\nimport { u as useProviderAccessContext, a as useExternalQuestionAugmentation, c as createVisualization } from './utils-5126869e.js';\n\nfunction UnsupportedQuestionTypeError({\n question\n}) {\n const typeId = isExternalQuestionWithTypeId(question) && question.typeId;\n return React__default.createElement(\"div\", null, \"Unsupported Question Type: \", typeId);\n}\n\nfunction SingleQuestionController({\n question: externalQuestion,\n displayOptions,\n namedSlots,\n responseSet\n}) {\n const {\n useUpstreamConfig,\n useVisualizationList\n } = useProviderAccessContext();\n const {\n capability,\n upstreamActions,\n renderProps,\n settings\n } = useUpstreamConfig();\n /* NOTE:\n Since Controllers are expected to be capability-independent -- and should not import\n the CapabilityProvider types -- this config is returning the type params as `unknown`s.\n This shouldn't be a problem -- as the Controller doesn't need to know\n any specifics about these types - other than passing them to the compatible\n Visualizations (something that the Visualization Helpers runtime already takes\n care of). However, the consequence is that overall type safety of the Controller\n is not as strict as we would like it to be. We should probably create a task\n to improve this later.\n */\n // TODO: add controller type to the visualization selection -- to allow for different DisplayOptions and better support for nested visualizations\n\n const visualizationOptions = useVisualizationList(capability\n /* , controllerType */\n ); // Augment the external question with the type id\n\n const augmentedExternalQuestion = useExternalQuestionAugmentation(externalQuestion, responseSet);\n const definition = selectQuestionTypeDefinition(augmentedExternalQuestion);\n const ChosenVisualization = useMemo(() => {\n if (!definition) {\n return null;\n } // Is this React.memo necessary?\n\n\n return React__default.memo(createVisualization(capability, definition.typeId, visualizationOptions, upstreamActions, settings, renderProps)); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [//* * Revisit / Hoist */\n // capability, // causes constant re-renders\n definition === null || definition === void 0 ? void 0 : definition.typeId // settings, // causes constant re-renders\n // renderProps, // causes constant re-renders\n // definition, // causes constant re-renders\n // upstreamActions, // causes constant re-renders\n // visualizationOptions, // causes constant re-renders\n ]);\n\n if (ChosenVisualization === null || !definition) {\n return React__default.createElement(UnsupportedQuestionTypeError, {\n question: augmentedExternalQuestion\n });\n }\n\n const toExternalQuestion = q => definition.toExternalQuestion(externalQuestion, q, capability);\n /* NOTE:\n Type safety improvement: Currently 'QuestionType' is all the possible question types\n -- while createVisualization will choose a visualization that can render\n question types for a specific capability -- meaning that the resulting question\n type of 'ChosenVisualization' is a subset of all the possible QuestionTypes\n (only those that have viable visualizations for that capability -- and, in the\n future, ControllerType)\n */\n\n\n const question = definition.fromExternalQuestion(augmentedExternalQuestion, capability);\n return React__default.createElement(ChosenVisualization, {\n question: question,\n displayOptions: displayOptions,\n namedSlots: namedSlots,\n toExternalQuestion: toExternalQuestion\n });\n}\n\nvar SingleQuestionController$1 = withErrorBoundary(SingleQuestionController);\nexport { SingleQuestionController$1 as S };","import React__default from 'react';\nimport { SurveyThemeWrapper } from '@sm/question-ui/theme-respondent';\nimport { d as declareVisualization, p as providerFactory } from './utils-5126869e.js';\nimport { MultipleChoice, CheckBox, ImageChoice } from '@sm/question-ui/respondent-quiz-results';\nexport { S as SingleQuestionController } from './controllers-8c913634.js';\nimport './vendor-8000eab9.js';\nimport '@sm/question-ui/helpers';\nimport '@sm/question-definitions';\n/**\n * Derive the answer layout columns\n * @param answerLayout answer layout from external question\n */\n\nconst getAnswerLayoutColumns = answerLayout => {\n if (answerLayout === 'VERTICAL') {\n return 1;\n }\n\n if (answerLayout === 'TWO_COLUMNS') {\n return 2;\n }\n\n if (answerLayout === 'THREE_COLUMNS') {\n return 3;\n }\n\n return 'horizontal';\n};\n\nconst isAnswer = maybeAnswer => 'label' in maybeAnswer && 'id' in maybeAnswer && 'visible' in maybeAnswer;\n\nconst quizAnswersToImageAnswers = (quizAnswers, answersImage) => quizAnswers.map(ans => {\n if (!isAnswer(ans.answer)) {\n return ans;\n }\n\n const matchingImageAnswer = answersImage.find(ansImg => ansImg.id === ans.answer.id);\n\n if (!matchingImageAnswer) {\n throw new Error('Image not found'); // TODO: Handle this later\n }\n\n const answer = matchingImageAnswer;\n return { ...ans,\n answer: { ...answer\n }\n };\n});\n/**\n * Map the quiz results with the image answers\n * @param quizResults the quizResults provided by the external question\n * @param answersImage the answersImage provided by the external question\n */\n\n\nconst getQuizResultsWithImage = (quizResults, answersImage) => ({ ...quizResults,\n answers: quizAnswersToImageAnswers(quizResults.answers, answersImage)\n});\n\nfunction MultipleChoiceVisualization({\n question: {\n layout: {\n answerLayout,\n spacing\n },\n quizResults,\n id,\n title,\n questionNumber,\n answerNoneOfTheAbove,\n answerOther\n },\n settings: {\n survey: {\n numberingEnabled,\n highlightCorrectAnswers\n }\n }\n}) {\n // TODO: use a better error handling once we have the error handing\n // pattern designed\n if (!quizResults) {\n /* eslint-disable-next-line no-console */\n console.warn('Missing quiz results in the data');\n return null;\n }\n\n const answerLayoutColumns = getAnswerLayoutColumns(answerLayout);\n return React__default.createElement(MultipleChoice, {\n id: id,\n title: title,\n questionNumber: questionNumber,\n highlightCorrectAnswers: highlightCorrectAnswers,\n numberingEnabled: numberingEnabled,\n answerNoneOfTheAbove: answerNoneOfTheAbove,\n answerLayoutColumns: answerLayoutColumns,\n spacing: spacing,\n answerOther: answerOther,\n quizResults: quizResults\n });\n}\n\nvar MultipleChoiceVisualization$1 = declareVisualization(['multiple_choice'], ['respondent-quiz-results'], MultipleChoiceVisualization);\n\nfunction CheckBoxVisualization({\n question: {\n layout: {\n answerLayout,\n spacing\n },\n quizResults,\n id,\n title,\n questionNumber,\n answerNoneOfTheAbove,\n answerOther\n },\n settings: {\n survey: {\n numberingEnabled,\n highlightCorrectAnswers\n }\n }\n}) {\n // TODO: use a better error handling once we have the error handing\n // pattern designed\n if (!quizResults) {\n /* eslint-disable-next-line no-console */\n console.warn('Missing quiz results in the data');\n return null;\n }\n\n const answerLayoutColumns = getAnswerLayoutColumns(answerLayout);\n return React__default.createElement(CheckBox, {\n id: id,\n title: title,\n questionNumber: questionNumber,\n highlightCorrectAnswers: highlightCorrectAnswers,\n numberingEnabled: numberingEnabled,\n answerNoneOfTheAbove: answerNoneOfTheAbove,\n answerLayoutColumns: answerLayoutColumns,\n spacing: spacing,\n answerOther: answerOther,\n quizResults: quizResults\n });\n}\n\nvar CheckBoxVisualization$1 = declareVisualization(['check_box'], ['respondent-quiz-results'], CheckBoxVisualization);\n\nfunction ImageChoiceVisualization({\n question: {\n quizResults,\n id,\n title,\n questionNumber,\n answerNoneOfTheAbove,\n answersImage,\n variant\n },\n settings: {\n survey: {\n numberingEnabled,\n highlightCorrectAnswers\n }\n }\n}) {\n // TODO: use a better error handling once we have the error handing\n // pattern designed\n if (!quizResults) {\n /* eslint-disable-next-line no-console */\n console.warn('Missing quiz results in the data');\n return null;\n }\n\n const isManyAnswers = variant === 'MANY_ANSWERS_IMAGE';\n const quizResultsWithImage = getQuizResultsWithImage(quizResults, answersImage);\n return React__default.createElement(ImageChoice, {\n id: id,\n title: title,\n questionNumber: questionNumber,\n highlightCorrectAnswers: highlightCorrectAnswers,\n numberingEnabled: numberingEnabled,\n answerNoneOfTheAbove: answerNoneOfTheAbove || null,\n quizResults: quizResultsWithImage,\n isManyAnswers: isManyAnswers\n });\n}\n\nvar ImageChoiceVisualization$1 = declareVisualization(['image_choice'], ['respondent-quiz-results'], ImageChoiceVisualization);\n\nfunction DropdownVisualization({\n question: {\n layout: {\n answerLayout,\n spacing\n },\n quizResults,\n id,\n title,\n questionNumber,\n answerOther\n },\n settings: {\n survey: {\n numberingEnabled,\n highlightCorrectAnswers\n }\n }\n}) {\n // TODO: use a better error handling once we have the error handing\n // pattern designed\n if (!quizResults) {\n /* eslint-disable-next-line no-console */\n console.warn('Missing quiz results in the data');\n return null;\n }\n\n const answerLayoutColumns = getAnswerLayoutColumns(answerLayout);\n return React__default.createElement(MultipleChoice, {\n id: id,\n title: title,\n questionNumber: questionNumber,\n highlightCorrectAnswers: highlightCorrectAnswers,\n numberingEnabled: numberingEnabled,\n answerNoneOfTheAbove: null,\n answerLayoutColumns: answerLayoutColumns,\n spacing: spacing,\n answerOther: answerOther,\n quizResults: quizResults\n });\n}\n\nvar DropdownVisualization$1 = declareVisualization(['dropdown'], ['respondent-quiz-results'], DropdownVisualization);\nvar visualizationList = [MultipleChoiceVisualization$1, CheckBoxVisualization$1, ImageChoiceVisualization$1, DropdownVisualization$1];\nconst ProviderHelper = providerFactory(visualizationList);\n\nfunction QuizResultsCapabilityProvider({\n settings,\n children\n}) {\n return React__default.createElement(ProviderHelper, {\n value: {\n capability: 'respondent-quiz-results',\n upstreamActions: null,\n renderProps: null,\n settings\n }\n }, React__default.createElement(SurveyThemeWrapper, null, children));\n}\n\nexport { QuizResultsCapabilityProvider, visualizationList as QuizResultsVisualizationList };","import React__default, { createContext, useContext, useMemo } from 'react';\nimport { E as ErrorBoundary } from './vendor-8000eab9.js';\nimport { FallbackComponent } from '@sm/question-ui/helpers';\nimport { getTypeId } from '@sm/question-definitions';\n\nconst filterVisualizationByQuestionType = typeId => qd => {\n const [qts] = qd;\n return qts.includes(typeId);\n};\n\nconst getAnswerLayoutColumns = answerLayout => {\n if (answerLayout === 'VERTICAL') {\n return 1;\n }\n\n if (answerLayout === 'TWO_COLUMNS') {\n return 2;\n }\n\n if (answerLayout === 'THREE_COLUMNS') {\n return 3;\n }\n\n return 'horizontal';\n};\n/**\n * Trim leading and trailing whitespace from text inputs\n */\n\n\nconst trimAllValues = values => values.map(value => ({ ...value,\n value: value.value.trim()\n}));\n/**\n * Trim leading and trailing whitespace from \"other\" text inputs - for both `ANSWER` and `COMMENT`\n */\n\n\nconst trimOtherValues = values => values.map(value => {\n if (value.type !== 'ANSWER' && value.type !== 'COMMENT') {\n return value;\n }\n\n return { ...value,\n value: value.value.trim()\n };\n});\n/**\n * Trim leading and trailing whitespace from DateTimeAnswerType\n */\n\n\nconst trimDateTimeValues = values => values.map(response => {\n var _a, _b, _c, _d;\n\n return { ...response,\n value: {\n date: (_a = response.value.date) === null || _a === void 0 ? void 0 : _a.trim(),\n hour: (_b = response.value.hour) === null || _b === void 0 ? void 0 : _b.trim(),\n minute: (_c = response.value.minute) === null || _c === void 0 ? void 0 : _c.trim(),\n period: (_d = response.value.period) === null || _d === void 0 ? void 0 : _d.trim()\n }\n };\n});\n\nconst declareVisualization = (questionTypes, capabilities, component) => {\n return [questionTypes, capabilities, component];\n};\n\nconst providerAccessContext = createContext(null);\n\nconst useProviderAccessContext = () => {\n const access = useContext(providerAccessContext);\n\n if (!access) {\n throw new Error('Must call useProviderAccessContext inside a properly setup Capability Provider');\n }\n\n const {\n useUpstreamConfig,\n useVisualizationList\n } = access;\n return {\n useVisualizationList,\n useUpstreamConfig\n };\n};\n/** providerFactory\n * Creates a helper component that enables a CapabilityProvider to store the appropriate configurations,\n * making them available to the visualizations through the generic controllers. It makes sure that all\n * Visualizations have the proper types passed onto them.\n * @param visualizationList list of visualization definitions for all the visualizations that will be\n * supported by this Capability Provider.\n * @returns React Context Provider accepting the appropriate configuration for the CapabilityProvider\n */\n\n\nconst providerFactory = visualizationList => {\n const ctx = React__default.createContext(null); // TODO: further filter types to match the ones in the right indexes based on capability\n\n const useVisualizationList = capability => visualizationList.filter(([, fs]) => fs.indexOf(capability) >= 0);\n\n const useUpstreamConfig = () => {\n const config = useContext(ctx);\n\n if (!config) {\n throw new Error('Must call useUpstreamConfig inside a properly set up Capability Provider');\n }\n\n return config;\n };\n\n const providerValue = {\n useVisualizationList: useVisualizationList,\n useUpstreamConfig: useUpstreamConfig\n };\n return function ProvidersWrapper({\n children,\n value\n }) {\n return React__default.createElement(ErrorBoundary, {\n FallbackComponent: FallbackComponent\n }, React__default.createElement(providerAccessContext.Provider, {\n value: providerValue\n }, React__default.createElement(ctx.Provider, {\n value: value\n }, children)));\n };\n};\n\nfunction UnsupportedVisualization({\n question: {\n typeId\n }\n}) {\n return React__default.createElement(\"div\", null, \"Unsupported Visualization for \", typeId);\n}\n\nconst createVisualization = (capability, questionTypeId, visualizationOptions, upstreamActions, settings, renderProps) => {\n const [,, VisualizationComponent] = visualizationOptions.find(filterVisualizationByQuestionType(questionTypeId)) || [];\n\n if (!VisualizationComponent) {\n return function UnsupportedVisualizationWrapper({\n question\n }) {\n return React__default.createElement(UnsupportedVisualization, {\n question: question\n });\n };\n }\n\n return function VisualizationComponentWrapper({\n question,\n displayOptions,\n namedSlots,\n toExternalQuestion\n }) {\n return React__default.createElement(VisualizationComponent, {\n capability: capability,\n question: question,\n upstreamActions: upstreamActions,\n settings: settings,\n displayOptions: displayOptions,\n renderProps: renderProps,\n toExternalQuestion: toExternalQuestion,\n namedSlots: namedSlots\n });\n };\n}; // TODO: add to question type definitions\n\n\nconst isRequired = q => {\n var _a;\n\n return ((_a = q.required) === null || _a === void 0 ? void 0 : _a.type) !== undefined;\n};\n\nconst equals = (a, b) => {\n if (a === b) {\n return true;\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (!a || !b || typeof a !== 'object' && typeof b !== 'object') {\n return a === b;\n }\n\n if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) {\n return false;\n }\n\n const objA = a;\n const objB = b;\n const keys = Object.keys(objA);\n\n if (keys.length !== Object.keys(objB).length) {\n return false;\n }\n\n return keys.every(k => equals(objA[k], objB[k]));\n};\n\nconst equalsIgnoreOrder = (a, b) => {\n if (a.length !== b.length) {\n return false;\n }\n\n const uniqueValues = new Set([...a, ...b]); // eslint-disable-next-line no-restricted-syntax\n\n for (const v of uniqueValues) {\n const aCount = a.filter(e => equals(e, v)).length;\n const bCount = b.filter(e => equals(e, v)).length;\n\n if (aCount !== bCount) {\n return false;\n }\n }\n\n return true;\n};\n/** Finds and attaches a typeId to an `ExternalQuestion` */\n\n\nconst useExternalQuestionAugmentation = (externalQuestion, responseSet) => {\n return useMemo(() => {\n const typeId = getTypeId(externalQuestion);\n\n if (!typeId) {\n throw new Error(`Unsupported Question Type of family ${externalQuestion.family}, variant ${externalQuestion.variant}.`);\n }\n\n if (responseSet !== undefined) {\n return { ...externalQuestion,\n typeId,\n ...responseSet\n };\n }\n\n return { ...externalQuestion,\n typeId\n };\n }, [externalQuestion, responseSet]);\n};\n\nexport { useExternalQuestionAugmentation as a, trimAllValues as b, createVisualization as c, declareVisualization as d, equalsIgnoreOrder as e, trimDateTimeValues as f, getAnswerLayoutColumns as g, isRequired as i, providerFactory as p, trimOtherValues as t, useProviderAccessContext as u };","import React__default, { useMemo } from 'react';\nimport { selectQuestionTypeDefinition, isExternalQuestionWithTypeId } from '@sm/question-definitions';\nimport { withErrorBoundary } from '@sm/question-ui/helpers';\nimport { u as useProviderAccessContext, a as useExternalQuestionAugmentation, c as createVisualization } from './utils-3f92f024.js';\n\nfunction UnsupportedQuestionTypeError({\n question\n}) {\n const typeId = isExternalQuestionWithTypeId(question) && question.typeId;\n return React__default.createElement(\"div\", null, \"Unsupported Question Type: \", typeId);\n}\n\nfunction SingleQuestionController({\n question: externalQuestion,\n displayOptions,\n namedSlots,\n responseSet\n}) {\n const {\n useUpstreamConfig,\n useVisualizationList\n } = useProviderAccessContext();\n const {\n capability,\n upstreamActions,\n renderProps,\n settings\n } = useUpstreamConfig();\n /* NOTE:\n Since Controllers are expected to be capability-independent -- and should not import\n the CapabilityProvider types -- this config is returning the type params as `unknown`s.\n This shouldn't be a problem -- as the Controller doesn't need to know\n any specifics about these types - other than passing them to the compatible\n Visualizations (something that the Visualization Helpers runtime already takes\n care of). However, the consequence is that overall type safety of the Controller\n is not as strict as we would like it to be. We should probably create a task\n to improve this later.\n */\n // TODO: add controller type to the visualization selection -- to allow for different DisplayOptions and better support for nested visualizations\n\n const visualizationOptions = useVisualizationList(capability\n /* , controllerType */\n ); // Augment the external question with the type id\n\n const augmentedExternalQuestion = useExternalQuestionAugmentation(externalQuestion, responseSet);\n const definition = selectQuestionTypeDefinition(augmentedExternalQuestion);\n const ChosenVisualization = useMemo(() => {\n if (!definition) {\n return null;\n } // Is this React.memo necessary?\n\n\n return React__default.memo(createVisualization(capability, definition.typeId, visualizationOptions, upstreamActions, settings, renderProps)); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [//* * Revisit / Hoist */\n // capability, // causes constant re-renders\n definition === null || definition === void 0 ? void 0 : definition.typeId // settings, // causes constant re-renders\n // renderProps, // causes constant re-renders\n // definition, // causes constant re-renders\n // upstreamActions, // causes constant re-renders\n // visualizationOptions, // causes constant re-renders\n ]);\n\n if (ChosenVisualization === null || !definition) {\n return React__default.createElement(UnsupportedQuestionTypeError, {\n question: augmentedExternalQuestion\n });\n }\n\n const toExternalQuestion = q => definition.toExternalQuestion(externalQuestion, q, capability);\n /* NOTE:\n Type safety improvement: Currently 'QuestionType' is all the possible question types\n -- while createVisualization will choose a visualization that can render\n question types for a specific capability -- meaning that the resulting question\n type of 'ChosenVisualization' is a subset of all the possible QuestionTypes\n (only those that have viable visualizations for that capability -- and, in the\n future, ControllerType)\n */\n\n\n const question = definition.fromExternalQuestion(augmentedExternalQuestion, capability);\n return React__default.createElement(ChosenVisualization, {\n question: question,\n displayOptions: displayOptions,\n namedSlots: namedSlots,\n toExternalQuestion: toExternalQuestion\n });\n}\n\nvar SingleQuestionController$1 = withErrorBoundary(SingleQuestionController);\nexport { SingleQuestionController$1 as S };","import React__default, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\nimport { SurveyThemeWrapper } from '@sm/question-ui/theme-respondent';\nimport { d as declareVisualization, i as isRequired, t as trimOtherValues, e as equalsIgnoreOrder, b as trimAllValues, g as getAnswerLayoutColumns, f as trimDateTimeValues, p as providerFactory } from './utils-3f92f024.js';\nimport { Dropdown, CommentBox, SingleTextbox, MultipleTextbox, MultipleChoice, Checkbox, DateTime, TextPresentational, ImagePresentational, ImageChoice, Nps, MatrixRating } from '@sm/question-ui/respondent-survey';\nimport { dropdownRespondentSurveyValidation, commentBoxRespondentSurveyValidation, singleTextboxRespondentSurveyValidation, multipleTextboxRespondentSurveyValidation, multipleChoiceRespondentSurveyValidation, checkBoxRespondentSurveyValidation, rankingRespondentSurveyValidation, dateTimeRespondentSurveyValidation, imageChoiceRespondentSurveyValidation, matrixRespondentSurveyValidation } from '@sm/question-definitions';\nexport { S as SingleQuestionController } from './controllers-20aa27dd.js';\nimport './vendor-8000eab9.js';\nimport '@sm/question-ui/helpers';\n\nconst useShowOkButton = (active, dirty) => {\n const [showOkButton, setShowOkButton] = useState(false);\n useEffect(() => {\n if (!active) {\n setShowOkButton(false);\n } else if (dirty) {\n setShowOkButton(true);\n }\n }, [active, dirty, setShowOkButton]);\n return showOkButton;\n};\n\nfunction useFieldIsDirty(active) {\n const [fieldDirty, setFieldIsDirty] = useState(false);\n useEffect(() => {\n setFieldIsDirty(false);\n }, [active]);\n return [fieldDirty, setFieldIsDirty];\n}\n\nconst useWithValidatorRegistration = (question, values, touched, registerValidator, unregisterValidator, questionTypeSpecificValidation) => {\n const {\n id\n } = question;\n const validationFunction = useRef();\n validationFunction.current = useCallback(forceValidation => {\n return questionTypeSpecificValidation(question, values, touched || forceValidation);\n }, [question, values, touched, questionTypeSpecificValidation]);\n useEffect(() => {\n if (registerValidator) {\n registerValidator(id, [forceValidation => {\n if (!validationFunction.current) {\n return null;\n }\n\n return validationFunction.current(forceValidation);\n }]);\n }\n\n return () => unregisterValidator === null || unregisterValidator === void 0 ? void 0 : unregisterValidator(id);\n }, [id, registerValidator, unregisterValidator]);\n}; // Visualization for Question of type Dropdown\n\n\nfunction RespondentDropdownVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, dropdownRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(Dropdown, {\n id: id,\n title: questionTitle,\n okButton: questionOkButton,\n required: required,\n error: error === null || error === void 0 ? void 0 : error.detail,\n onLeave: onLeaveQuestion,\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n const trimmedValues = trimOtherValues(values);\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues);\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n },\n choices: question.answers,\n choiceOther: question.answerOther,\n choiceComment: question.answerComment,\n responses: defaultAnswer.values,\n ...{\n padding,\n width\n }\n });\n}\n\nvar AnswerDropdownVisualization = declareVisualization(['dropdown'], ['respondent-survey'], RespondentDropdownVisualization);\n\nfunction RespondentCommentBoxVisualization({\n upstreamActions,\n question,\n settings: {\n survey\n },\n toExternalQuestion,\n displayOptions\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout.spacing : undefined;\n const cols = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.charsCount : undefined;\n const rows = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.linesCount : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, commentBoxRespondentSurveyValidation);\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && !!question.required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n if (upstreamActions.onLeaveQuestion) {\n upstreamActions.onLeaveQuestion(toExternalQuestion(question), answer);\n }\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(CommentBox, {\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n cols,\n rows\n },\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n // Dirty only if change ≠ default\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, values);\n return { ...response,\n values,\n isDirty,\n touched: true\n };\n });\n },\n responses: defaultAnswer.values,\n required: isRequired(question)\n });\n}\n\nvar AnswerCommentBoxVisualization = declareVisualization(['comment_box'], ['respondent-survey'], RespondentCommentBoxVisualization); // Visualization for Question of type SingleTextbox\n\nfunction RespondentSingleTextboxVisualization({\n upstreamActions,\n question,\n settings: {\n survey\n },\n toExternalQuestion,\n displayOptions\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const size = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.charsCount : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, singleTextboxRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && !!question.required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n if (upstreamActions.onLeaveQuestion) {\n upstreamActions.onLeaveQuestion(toExternalQuestion(question), answer);\n }\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(SingleTextbox, {\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n size\n },\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n var _a;\n\n const trimmedValues = trimAllValues(values); // Dirty only if change ≠ default\n\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues); // pass empty Array for values when the trimmedValue is an empty String, to trigger the scroll\n\n if (((_a = trimmedValues[0]) === null || _a === void 0 ? void 0 : _a.value) === '') {\n return { ...response,\n values: [],\n isDirty,\n touched: true\n };\n }\n\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n },\n responses: defaultAnswer.values,\n required: isRequired(question)\n });\n}\n\nvar AnswerSingleTextboxVisualization = declareVisualization(['single_textbox'], ['respondent-survey'], RespondentSingleTextboxVisualization);\n\nfunction RespondentMultipleTextboxVisualization({\n upstreamActions,\n question,\n settings: {\n survey\n },\n toExternalQuestion,\n displayOptions\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const size = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.charsCount : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, multipleTextboxRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && !!question.required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n if (upstreamActions.onLeaveQuestion) {\n upstreamActions.onLeaveQuestion(toExternalQuestion(question), answer);\n }\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(MultipleTextbox, {\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n size\n },\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n const trimmedValues = trimAllValues(values); // Dirty only if change ≠ default\n\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues);\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n },\n choices: question.answers,\n responses: defaultAnswer.values,\n required: isRequired(question)\n });\n}\n\nvar AnswerMultipleTextboxVisualization = declareVisualization(['multiple_textbox'], ['respondent-survey'], RespondentMultipleTextboxVisualization); // Visualization for Question of type MultipleChoice\n\nfunction RespondentMultipleChoiceVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout.spacing : undefined;\n const columnLayout = getAnswerLayoutColumns(layout === null || layout === void 0 ? void 0 : layout.answerLayout);\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, multipleChoiceRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && !!question.required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(MultipleChoice // required\n , {\n // required\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n // optional\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n width\n },\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n const trimmedValues = trimOtherValues(values); // Dirty only if change ≠ default\n\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues);\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n },\n choices: question.answers,\n choiceNoneOfTheAbove: question.answerNoneOfTheAbove ? { ...question.answerNoneOfTheAbove,\n type: 'NOTA'\n } : undefined,\n choiceOther: question.answerOther,\n choiceComment: question.answerComment,\n responses: defaultAnswer.values,\n required: isRequired(question),\n columnLayout: columnLayout\n });\n}\n\nvar AnswerMultipleChoiceVisualization = declareVisualization(['multiple_choice'], ['respondent-survey'], RespondentMultipleChoiceVisualization); // Visualization for Question of type Checkbox\n\nfunction RespondentCheckboxVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const columnLayout = getAnswerLayoutColumns(layout === null || layout === void 0 ? void 0 : layout.answerLayout);\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, checkBoxRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(Checkbox // required\n , {\n // required\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n // optional\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n width\n },\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n const trimmedValues = trimOtherValues(values); // Dirty only if change ≠ default\n\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues);\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n },\n choices: question.answers,\n choiceNoneOfTheAbove: { ...question.answerNoneOfTheAbove,\n type: 'NOTA'\n },\n choiceOther: question.answerOther,\n choiceComment: question.answerComment,\n responses: answer.values,\n required: required,\n columnLayout: columnLayout\n });\n}\n\nvar AnswerCheckboxVisualization = declareVisualization(['check_box'], ['respondent-survey'], RespondentCheckboxVisualization); // Visualization for Question of type Ranking\n\nfunction RespondentRankingVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, rankingRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n return React__default.createElement(\"div\", null, React__default.createElement(\"h1\", null, \"Tier 2 Not Implemented yet\"), \"TODO: Wire up Tier 2 and add Tests\", React__default.createElement(\"br\", null), React__default.createElement(\"pre\", null, React__default.createElement(\"code\", {\n onBlur: () => onLeaveQuestion(),\n onFocus: () => {\n setFieldIsDirty(true);\n setAnswer({});\n }\n }, `${JSON.stringify(questionTitle, null, 2)}\\n`, `${JSON.stringify(questionOkButton, null, 2)}\\n`, `${JSON.stringify(error, null, 2)}\\n`, `${JSON.stringify(padding, null, 2)}\\n`, `${JSON.stringify(width, null, 2)}`)));\n}\n\nvar AnswerRankingVisualization = declareVisualization(['ranking'], ['respondent-survey'], RespondentRankingVisualization); // Visualization for Question of type DateTime\n\nfunction RespondentDateTimeVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = upstreamErrors === null || upstreamErrors === void 0 ? void 0 : upstreamErrors.find(e => !e.detail.startsWith('ERROR_'));\n const inlineErrors = upstreamErrors === null || upstreamErrors === void 0 ? void 0 : upstreamErrors.filter(e => e.detail.startsWith('ERROR_')).map(err => ({\n detail: err.detail,\n fieldId: err.fieldId\n }));\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, dateTimeRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n\n const onChange = values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n const trimmedValues = trimDateTimeValues(values); // Dirty only if change ≠ default\n\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, trimmedValues);\n return { ...response,\n values: trimmedValues,\n isDirty,\n touched: true\n };\n });\n };\n\n const showDate = question.variant === 'DATETIME' || question.variant === 'DATE';\n const showTime = question.variant === 'DATETIME' || question.variant === 'TIME';\n return React__default.createElement(DateTime // required\n , {\n // required\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n showDate: showDate,\n showTime: showTime,\n // optional\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n inlineErrors: inlineErrors,\n ...{\n padding,\n width\n },\n onChange: onChange,\n choices: question.fieldSets,\n responses: answer.values,\n required: required\n });\n}\n\nvar AnswerDateTimeVisualization = declareVisualization(['date_time'], ['respondent-survey'], RespondentDateTimeVisualization);\n/** Visualization for Question of type Image & Text Presentation */\n\nfunction RespondentPresentationVisualization({\n question,\n displayOptions,\n settings: {\n survey\n }\n}) {\n var _a;\n\n const {\n id,\n layout,\n variant,\n heading: {\n default: {\n text,\n image\n }\n }\n } = question;\n const imageProps = {\n id: image === null || image === void 0 ? void 0 : image.id,\n src: image === null || image === void 0 ? void 0 : image.url,\n alt: (_a = image === null || image === void 0 ? void 0 : image.alt) !== null && _a !== void 0 ? _a : undefined\n };\n const questionOkButton = {\n visible: !survey.isClassic && !!(displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.active),\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const presentationProps = {\n id,\n text,\n padding,\n okButton: questionOkButton\n };\n return React__default.createElement(\"div\", null, variant === 'TEXT' ? React__default.createElement(TextPresentational, { ...presentationProps\n }) : React__default.createElement(ImagePresentational, { ...presentationProps,\n image: imageProps\n }));\n}\n\nvar AnswerPresentationVisualization = declareVisualization(['text_presentation', 'image_presentation'], ['respondent-survey'], RespondentPresentationVisualization); // Visualization for Question of type ImageChoice\n\nfunction RespondentImageChoiceVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, imageChoiceRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n let multiple = false;\n\n if (question.variant === 'MANY_ANSWERS_IMAGE') {\n multiple = true;\n }\n\n return React__default.createElement(ImageChoice, {\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n // Dirty only if change ≠ default\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, values);\n return { ...response,\n values,\n isDirty,\n touched: true\n };\n });\n },\n choices: question.answersImage,\n choiceNoneOfTheAbove: { ...question.answerNoneOfTheAbove,\n type: 'NOTA'\n },\n multiple: multiple,\n responses: defaultAnswer.values,\n required: required\n });\n}\n\nvar AnswerImageChoiceVisualization = declareVisualization(['image_choice'], ['respondent-survey'], RespondentImageChoiceVisualization); // Visualization for Question of type Nps\n\nfunction RespondentNpsVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n var _a;\n\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, multipleChoiceRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && !!question.required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n\n const onChange = values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n // Dirty only if change ≠ default\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, values);\n return { ...response,\n values,\n isDirty,\n touched: true\n };\n });\n };\n\n return React__default.createElement(Nps // required\n , {\n // required\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n // optional\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n ...{\n padding,\n width\n },\n rowId: question.fieldSet.id,\n onChange: onChange,\n choices: (_a = question.answersWeighted) !== null && _a !== void 0 ? _a : [],\n responses: defaultAnswer.values,\n required: isRequired(question)\n });\n}\n\nvar AnswerNpsVisualization = declareVisualization(['nps'], ['respondent-survey'], RespondentNpsVisualization); // Visualization for Question of type Matrix\n\nfunction RespondentMatrixVisualization({\n question,\n displayOptions,\n upstreamActions,\n toExternalQuestion,\n settings: {\n survey\n }\n}) {\n const {\n id,\n questionNumber,\n title,\n layout\n } = question;\n const {\n active,\n errors: upstreamErrors,\n answer: upstreamAnswer,\n registerValidator,\n unregisterValidator\n } = displayOptions || {};\n const error = (upstreamErrors !== null && upstreamErrors !== void 0 ? upstreamErrors : [])[0];\n const padding = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.spacing : undefined;\n const width = survey.isClassic ? layout === null || layout === void 0 ? void 0 : layout.width : undefined;\n const defaultAnswer = useMemo(() => {\n var _a;\n\n return {\n questionId: id,\n family: question.family,\n variant: question.variant,\n touched: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.touched),\n isDirty: !!(upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.isDirty),\n values: (_a = upstreamAnswer === null || upstreamAnswer === void 0 ? void 0 : upstreamAnswer.values) !== null && _a !== void 0 ? _a : []\n };\n }, [id, upstreamAnswer, question]);\n const [answer, setAnswer] = useState(defaultAnswer);\n useWithValidatorRegistration(question, answer.values, answer.touched, registerValidator, unregisterValidator, matrixRespondentSurveyValidation);\n /**\n * Determines if the field is dirty (changed) internally (not for validation)\n * The OK Button is visible when change is made to the field only. The dirty\n * state resets (false) when activation of the question changes.\n */\n\n const [fieldDirty, setFieldIsDirty] = useFieldIsDirty(!!active);\n const showOkButton = useShowOkButton(!!active, fieldDirty);\n const required = isRequired(question);\n const questionTitle = {\n id: `question-title-${id}`,\n heading: title,\n number: Number(questionNumber),\n numbered: survey.numberingEnabled,\n required: survey.asteriskEnabled && required\n };\n const questionOkButton = {\n visible: !survey.isClassic && showOkButton,\n text: survey.okLabel,\n onClick: displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.onSubmit\n };\n const onLeaveQuestion = useCallback(() => {\n var _a;\n\n (_a = upstreamActions.onLeaveQuestion) === null || _a === void 0 ? void 0 : _a.call(upstreamActions, toExternalQuestion(question), answer);\n }, [question, upstreamActions, answer, toExternalQuestion]);\n let choices = [];\n let columnChoices = [];\n let multiple = false;\n\n if (question.variant === 'MANY_ANSWERS_CHECKBOX') {\n choices = question.answers;\n columnChoices = question.fieldSets;\n multiple = true;\n } else if (question.variant === 'SINGLE_ANSWER_RADIO' && question.family === 'MATRIX') {\n choices = question.answersWeighted;\n columnChoices = question.fieldSets;\n } else if (question.variant === 'SINGLE_ANSWER_RADIO' && question.family === 'RATING_SCALE') {\n choices = [question.fieldSet];\n columnChoices = question.answersWeighted;\n }\n\n return React__default.createElement(MatrixRating, {\n id: id,\n title: questionTitle,\n onLeave: onLeaveQuestion,\n okButton: questionOkButton,\n error: error === null || error === void 0 ? void 0 : error.detail,\n onChange: values => {\n setFieldIsDirty(true);\n setAnswer(response => {\n // Dirty only if change ≠ default\n const isDirty = !equalsIgnoreOrder(defaultAnswer.values, values);\n return { ...response,\n values,\n isDirty,\n touched: true\n };\n });\n },\n choices: choices,\n columnChoices: columnChoices,\n ...{\n padding,\n width\n },\n multiple: multiple,\n responses: defaultAnswer.values,\n required: required,\n choiceOther: question.answerOther,\n choiceComment: question.answerOther\n });\n}\n\nvar AnswerMatrixVisualization = declareVisualization(['matrix'], ['respondent-survey'], RespondentMatrixVisualization);\nvar visualizationList = [AnswerSingleTextboxVisualization, AnswerMultipleTextboxVisualization, AnswerCommentBoxVisualization, AnswerDropdownVisualization, AnswerMultipleChoiceVisualization, AnswerCheckboxVisualization, AnswerRankingVisualization, AnswerDateTimeVisualization, AnswerPresentationVisualization, AnswerImageChoiceVisualization, AnswerNpsVisualization, AnswerMatrixVisualization]; // Creates the helper to store the configuration\n\nconst ProviderHelper = providerFactory(visualizationList); // Declares the Provider Component itself, with the proper API\n\nfunction RespondentSurveyCapabilityProvider({\n upstreamActions,\n settings,\n children,\n renderProps\n}) {\n // here you can keep capability-specific state, translate actions or make other modifications\n // that are appropriate to your capability-specific behaviour\n return React__default.createElement(ProviderHelper, {\n value: {\n capability: 'respondent-survey',\n upstreamActions,\n renderProps,\n settings\n }\n }, React__default.createElement(SurveyThemeWrapper, null, children));\n}\n\nexport { RespondentSurveyCapabilityProvider as RespondentCapabilityProvider, RespondentSurveyCapabilityProvider, visualizationList as RespondentVisualizations };","import * as React from 'react';\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n _this.updatedWithError = false;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.updatedWithError = false;\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var error = this.state.error;\n\n if (error !== null) {\n this.updatedWithError = true;\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true;\n return;\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nexport { ErrorBoundary as E };"],"names":["Object","defineProperty","exports","value","default","createBrowserApolloClient","_ref","fragmentMatcherFn","metadata","pageRequestId","_ref$cacheHydration","cacheHydration","_ref$uri","uri","_ref$linkOptions","linkOptions","_ref$devToolsEnabled","devToolsEnabled","_ref$availableLoggedO","availableLoggedOutPaths","authLink","appName","appVersion","cache","_apolloCacheInmemory","InMemoryCache","fragmentMatcher","restore","_linkOptions$headers","headers","otherLinkOptions","_objectWithoutProperties","source","excluded","key","i","target","_objectWithoutPropertiesLoose","sourceKeys","keys","length","indexOf","getOwnPropertySymbols","sourceSymbolKeys","prototype","propertyIsEnumerable","call","apolloLinkMemoizeCache","link","_apolloLink","ApolloLink","operation","_operation$getContext","_operation$getContext2","targetPath","getContext","graphQLPath","includes","apolloLinkFactory","arguments","undefined","DEFAULT_TARGET_PATH","_apolloLinkBatchHttp","BatchHttpLink","_objectSpread","DEFAULT_LINK_OPTIONS","concat","request","Observable","of","_apolloClient","connectToDevTools","name","version","_interopRequireDefault","obj","__esModule","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","credentials","batchInterval","module","_toPropertyKey","arg","_toPrimitive","input","hint","prim","Symbol","toPrimitive","res","TypeError","String","Number","dateTimeFormat","isBrowser","getClientEnvironmentDetails","numberFormat","reduce","acc","style","currency","timeZone","Intl","DateTimeFormat","resolvedOptions","err","window","setTimeout","_default","number","dateTime","relativeTime","T","defineMessages","v","t","desc","values","opts","id","defaultMessage","html","getHTML","get","_react","_interopRequireWildcard","nodeInterop","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","hasOwnProperty","set","_propTypes","_intlMessageformat","_escapeHtml","_invariant","_lodash","_utils","_locale","_intlRelativeformat","_formats","_excluded","_excluded2","WeakMap","cacheBabelInterop","cacheNodeInterop","_defineProperties","props","descriptor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","result","Super","_getPrototypeOf","NewTarget","this","constructor","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","getPrototypeOf","_slicedToArray","arr","_arrayWithHoles","Array","isArray","_iterableToArrayLimit","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","return","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","from","_nonIterableSpread","minLen","n","toString","slice","test","len","arr2","intlRelativeFormat","INTL_OPT_KEY","INTL_MSG_STORE_KEY","getStore","glob","g","getOptionsObject","getDefaultOptions","currentLocale","warningHandler","console","warn","escapeHtml","randomStr","N","map","Math","random","join","keysOf","replacer","elements","part","substitute","message","variables","counter","vars","msg","options","uid","abs","hashInput","hash","charCodeAt","JSON","stringify","tokenDelimiter","tokenizedValues","generateToken","isValidElement","token","isString","s","formats","format","context","error","stack","exhausted","runningIndex","match","substr","_ref2","matched","tag","matchIndex","index","popped","pop","content","substring","replace","children","split","element","cloneElement","tokenReplacement","_getOptionsObject","messages","el","createElement","dangerouslySetInnerHTML","__html","defaultMsg","d","defineIntlRelativeFormat","currentLanguage","ReactIntlLocaleData","localeData","__addLocaleData","initIntl","messageStore","langInited","propTypes","shape","string","isRequired","description","arrayOf","objectOf","node","bool","defaultProps","L10NContext","createContext","isRTL","RTLLanguageCodes","LANGUAGES","l","code","L10nProvider","_React$Component","_inherits","subClass","superClass","create","_super","_this","_classCallCheck","instance","Constructor","state","localeCode","languageCode","getMessages","isNode","_createClass","protoProps","staticProps","componentDidUpdate","prevProps","setState","localeMessages","render","Provider","__self","__source","fileName","lineNumber","columnNumber","Component","DataCenterIds","DC_SPECIFIC_SUBDOMAINS","getDataCenterById","getDataCenterIdFromCurrentUrl","url","dataCenterAffinityCookie","subdomain","parseResult","_parseDomain","parseDomain","fromUrl","dataCenterId","US","type","ParseResultType","Listed","subDomains","dcSub","_dataCenters","dataCenterSpecificSubdomains","find","subSpecific","endsWith","CA","getDefaultSubdomainForDataCenter","dc","defaultSubdomain","dataCenters","EU","_languages","LANGUAGES_BY_CODE","LANGUAGES_BY_ID","_languageTags","convertLanguageTag","getAudienceSupportedCountries","AU","NZ","SG","GB","IE","getBenchmarksSupportedCountries","getCookieTransportTLDs","_tlds","tld","enabled","getEUCountries","_localeSets","EUCountryCodes","getLanguageCodeFromCountryCode","country","language","lang","countries","sanitizeCountryCode","getLanguageCodeFromSubdomain","LANGUAGES_WITH_SUBDOMAINS","getLanguageTagByCode","getLanguageTagById","getLanguageTags","getSMSupportedCountries","SMSupportedCountryCodes","getSiteSupportedLanguageCodes","getSiteSupportedLanguages","getSubdomainFromLanguageCodeAndDataCenter","getTldLanguageInfo","data","isDACHCountry","DASHCountryCodes","CountryCodes","isEUCountry","isEUDC","hostname","isEUSubdomain","isGBCountry","GBCountryCodes","isGDPRCountry","GDPRCountryCodes","isUSTerritory","USTerritoryCountryCodes","localeSets","normalizeLanguageTag","parseLanguageTag","GDPR_COUNTRIES","SM_SUPPORTED_COUNTRIES","EU_COUNTRIES","US_TERRITORIES","GB_COUNTRIES","DASH_COUNTRIES","fallBackCountry","isTwoLetterCode","c","toUpperCase","supportLevel","SupportLevels","SITE_WIDE","nt","LANGUAGE_TAGS","def","matches","tagRegEx","exec","groups","_wrapRegExp","re","BabelRegExp","RegExp","_groups","flags","buildGroups","k","str","indices","substitution","_","group","args","primary","script","region","variant","delimiter","toLowerCase","SURVEY_CREATION","codeIETF","displayName","helplink","helpCenterLangCode","displayOrder","LANGUAGES_BY_ID_REC","LANGUAGES_BY_CODE_REC","LANGUAGES_WITH_SUBDOMAINS_REC","freeze","AT","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GR","HR","HU","IM","IT","LT","LU","LV","MC","MT","NL","PL","PT","RO","SE","SI","SK","IS","LI","NO","GG","GI","GS","JE","GU","PR","UM","VI","AE","AR","BR","FO","GL","AD","AL","AX","BA","BY","GF","GP","MD","ME","MF","MK","MQ","PM","RE","RS","RU","SM","TF","TR","UA","VA","YT","HK","IN","JP","KR","MX","TW","AF","AG","AI","AM","AN","AO","AQ","AS","AW","AZ","BB","BD","BF","BH","BI","BJ","BL","BM","BN","BO","BS","BT","BV","BW","BZ","CC","CD","CF","CG","CI","CK","CL","CM","CN","CO","CR","CV","CX","DJ","DM","DO","DZ","EC","EG","EH","ER","ET","FJ","FK","FM","GA","GD","GE","GH","GM","GN","GQ","GT","GW","GY","HM","HN","HT","ID","IL","IO","IQ","JM","JO","KE","KG","KH","KI","KM","KN","KP","KW","KY","KZ","LA","LB","LC","LK","LR","LS","LY","MA","MG","MH","ML","MM","MN","MO","MP","MR","MS","MU","MV","MW","MY","MZ","NA","NC","NE","NF","NG","NI","NP","NR","NU","OM","PA","PE","PF","PG","PH","PK","PN","PS","PW","PY","QA","RW","SA","SB","SC","SH","SJ","SL","SN","SO","SR","ST","SV","SY","SZ","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TT","TV","TZ","UG","UY","UZ","VC","VE","VG","VN","VU","WF","WS","YE","ZM","ZW","ZA","NO_HOSTNAME","urlPattern","urlLike","URL","Error","startsWith","_a","ValidationErrorType","parse_domain_1","from_url_1","sanitize_1","RESERVED_TOP_LEVEL_DOMAINS","serialized_tries_1","look_up_1","parse_trie_1","getAtIndex","array","splitLabelsIntoDomains","labels","max","domain","topLevelDomains","parsedIcannTrie","parsedPrivateTrie","sanitizationResult","sanitize","SanitizationResultType","Invalid","errors","ValidIp","Ip","ip","ipVersion","Reserved","parseTrie","icannTrie","privateTrie","icannTlds","lookUpTldsInTrie","privateTlds","NotListed","indexOfPublicSuffixDomain","indexOfIcannDomain","assign","icann","__importDefault","mod","is_ip_1","createNoHostnameError","NoHostname","column","createDomainMaxLengthError","DomainMaxLength","createLabelMinLengthError","label","LabelMinLength","createLabelMaxLengthError","LabelMaxLength","createLabelInvalidCharacterError","invalidCharacter","LabelInvalidCharacter","inputTrimmed","trim","inputTrimmedAsIp","labelValidationErrors","ValidDomain","icann_json_1","private_json_1","EXCEPTION","WILDCARD","RESET","DOWN","SAME","UP","__createBinding","m","k2","__setModuleDefault","__importStar","characters","trie","labelsToCheck","tlds","labelLowerCase","unshift","createOrGetChild","createRootNode","NODE_TYPE_CHILD","NODE_TYPE_ROOT","Map","parent","child","nodes_1","serializedTrie","rootNode","parentNode","addDomain","char","charAt","createMetricsTracker","getCleanDigitalData","getRoot","setupRoot","GLOBAL_KEY","root","subscribers","automaticSubscribers","config","user","isAuthenticated","dataAnalyticsAPIPath","loggingAPIPath","legacyWeb","gtmId","digitalData","_enums","_helpers","userId","page","pageInfo","pageId","attributes","pathname","events","components","ep201","getCookieValue","ep202","initialize","reset","update","updateUserConfig","userConfigUpdate","getSubscribers","getAutomaticSubscribers","track","event","_event$data","_event$data2","_event$data2$data","maskedEvent","email","maskEmail","COMPONENT_ADD","PAGE_VIEW","VIRTUAL_PAGE_VIEW","pageViewMutation","subscriber","automaticTrack","addSubscriber","addAutomaticSubscriber","getConfig","getDigitalData","MetricsTracker","generateMetricsAttribute","eventData","ELEMENT_INTERACTION","_BaseMetricsTracker","_DataAnalyticsMetricsSubscriber","_LoggingMetricsSubscriber","_GTMMeticsSubscriber","_FacebookPixelSubscriber","_AmplitudeSubscriber","delegatedEvents","setupEvents","on","gce","currentTarget","metricsData","getAttribute","metricsDataJSON","parse","setupAutomaticEvents","clickableLinks","inputTarget","actionType","actionFlow","class","className","text","innerText","checked","cloneDigitalData","a","b","maskString","newDigitalData","_ComponentMetricsProvider","_types","GTMEventData","_MetricsTracker","MetricsTrackerType","_PageMetricsProvider","_SPARouteMetricsProvider","ComponentMetricsProvider","_ref$attributes","_ref$disableDA","disableDA","USER_EVENTS","componentName","PageMetricsProvider","GDPR","_GDPR$hasGDPRConsent","hasGDPRConsent","_user$id","_user$package","package","packageId","_user$email","useEffect","SPARouteMetricsProvider","countryCode","amplitudeSubscriber","digitalDataEvent","_user$session","_amplitudeRequire$def","amplitudeToken","overrideOneTrust","amplitudeEvent","amplitudeUserProperties","session","isAdminImpersonation","blockedByOneTrust","_parseOneTrustCookie","parseOneTrustCookie","hasOneTrustCookie","oneTrustGroups","amplitudeRequire","amplitude","amplitudeInstance","getInstance","init","includeReferrer","setTransport","_group$membership","_group$membership2","membership","groupId","setGroup","setUserId","userProps","hydrateDefaultUserProps","_user$group","_user$group$membershi","conditionallyAddKey","languageId","packageName","subscriptionStatus","joinedAt","subscribedAt","emailDomain","setUserProperties","clearStorage","logEvent","keyName","out","dataAnalyticsMetricsSubscriber","metricsTrackerConfig","eventMeta","ui_event","ui_goal","origin","legacy_web","location","href","fetch","method","body","meta","facebookPixelSubscriber","ReactPixel","_JSON$parse","isValidURL","whiteListedURLs","some","pattern","USER_METADATA","pageView","gtmMetricsSubscriber","gtmDataLayer","pagePath","dataLayer","gtm","eventObj","loadMarketingContainer","user_id","package_id","country_code","virtualPageUrl","virtualPageTitle","GDPR_ACTION","loggingMetricsSubscriber","logEventData","log","bodyRequestObject","USER_SUBSCRIPTION_STATUS","cookieValue","retVal","keyValues","keyVal","piece","decodeURIComponent","shift","tokens","cname","defaultValue","ca","document","cookie","_s3upload","DEFAULT_OPTIONS","preprocess","file","onSignedUrl","onProgress","onFinish","onError","signingUrl","scrubFilename","filename","s3path","autoUpload","S3Uploader","myUploader","uploadFile","abort","abortUpload","PackageType","isTeamPackage","isEnterprisePackage","isBasicPackage","isAnnualPackage","packageID","ENTERPRISE_PLATINUM","ENTERPRISE","STANDARD_ANNUAL","ADVANTAGE_ANNUAL","PREMIER_ANNUAL","TEAM_ADVANTAGE_ANNUAL","TEAM_PREMIER_ANNUAL","BASIC","ENT_GOLD","ENTERPRISE_CONTRIBUTOR_SEAT","ENTERPRISE_CASUAL_USER","environmentDetails","SupportedBrowserVendors","userAgent","userAgentTracker","_initialize","isBrowserSupported","supportedBrowsers","browser","_bowser","getParser","browsers","defaultSupportedBrowsers","cfg","vendor","operator","satisfies","isDesktop","isHeadlessChrome","isMobile","isTablet","isIOS","isAndroid","clientWindowSize","width","height","ua","__LOAD_PAYLOAD_CACHE__","clientWidth","clientHeight","navigator","inspectAgent","Chrome","Firefox","Safari","Edge","_billing","_tsAutoMock","PartialDeep","_S3Uploader","_environment","SupportedBrowsers","VersionOperators","createMock","_createURL","_deepFreeze","_isValidEmail","_sanitizeString","deepFreeze","getOwnPropertyNames","prop","isFrozen","isValidEmail","_dompurify","stringSanitize","JSDOM","overrides","createURL","params","queryString","encodeURIComponent","notNull","u","isNull","isNumber","isOptional","guard","isArrayOf","every","isOneOf","list","isFixed","isEither","isNullable","typeGuard","guards","entries","typeAssertion","assertGuard","questionId","detail","baseQuestionGuards","typeId","family","respondentSurveyMapping","externalQuestion","position","questionNumber","heading","title","imageChoiceCrossCapabilityMapping","respondentQuizResultsMapping","quizResults","aggregateResponseDashboardMapping","dashboardType","filterCount","selectedCount","skippedCount","answeredCount","responseData","aggregateResponse","aggregateResponseCustomizableSolutionsMapping","displayNumber","mapRespondentQuizResultsAnswerOther","answerOther","base","requiredErrorText","visible","linesCount","layout","charsCount","mapRespondentSurveyAnswerOther","shared","touched","selected","answerComment","mapRespondentSurveyRequiredAll","errorMessage","fillSpacing","spacing","_b","_c","top","bottom","left","right","checkBoxCrossCapabilityMapping","dropdownCrossCapabilityMapping","commentBoxCrossCapabilityMapping","singleTextboxCrossCapabilityMapping","matrixCrossCapabilityMapping","multipleChoiceCrossCapabilityMapping","multipleTextboxCrossCapabilityMapping","rankingCrossCapabilityMapping","sliderCrossCapabilityMapping","starRatingCrossCapabilityMapping","imagePresentationCrossCapabilityMapping","textPresentationCrossCapabilityMapping","npsCrossCapabilityMapping","isTextLengthValidation","minLength","maxLength","isNumericalValidation","minValue","maxValue","isDateValidation","minDate","maxDate","isDateFormatValidation","dateTimeCrossCapabilityMapping","CAPABILITIES","invalidCombination","questionTypeAndCapabilityMapping","single_textbox","q","validation","required","fieldSet","comment_box","multiple_textbox","answers","sumValidation","fieldSets","check_box","answerNA","answerNoneOfTheAbove","image_choice","answersImage","multiple_choice","dropdown","slider","scaleOptions","hideNumericalInput","star_rating","answersWeighted","symbolOptions","ranking","matrix","isExternalMatrixWithRadio","isForcedRanking","isWeighted","answerNotApplicable","isExternalMatrixWithCheckboxes","nps","date_time","image_presentation","assignments","text_presentation","mapDynamic","capability","mapInternalDynamicToExternal","cleanExternalQuestion","isCompatible$f","baseGuards$b","isQuestionTypeSingleTextbox","typeId$e","isOfQuestionType$e","runValidators","validators","question","validateEmptyValue","validationErrors","validator","newError","createValidationError","fieldId","checkValueTextLength","valueToValidate","validateTextLength","DATE_PATTERNS","DATE_INTL","DATE_US","DATE_BUILDERS","dd","mm","yyyy","Date","isDateValidationType","validationType","validateDate","dateType","date","dmin","dmax","getMinAndMaxDate","getTime","checkValueDateFormat","isNumericalValidationType","isSumValidationType","isValidInteger","maybeInteger","checkValueNumericalFormat","parsedNumber","parseFloat","isNaN","isValidDecimal","validateNumber","getDefaultExportFromCjs","x","isEmailExports","isEmail$1","assertStringExports","_typeof","assertString","invalidType","mergeExports","merge","defaults","isByteLengthExports","isByteLength","min","_assertString","encodeURI","isFQDNExports","isFQDN","_merge","default_fqdn_options","allow_trailing_dot","parts","require_tld","allow_numeric_tld","allow_underscores","isIPExports","isIP","ipv4Maybe","sort","addressAndZone","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","ipv6Block","isEmail","default_email_options","require_display_name","allow_display_name","display_email","splitNameAddress","display_name","_display_email","validateDisplayName","trim_quotes","display_name_without_quotes","ignore_max_length","lower_domain","domain_specific_validation","username","_isByteLength","_user_parts","gmailUserPart","_isFQDN","allow_ip_domain","_isIP","noBracketdomain","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","_i2","blacklisted_chars","search","checkValueEmailFormat","validateEmail","validateRequired","choiceCount","otherRequiredErrorText","noRangeValidation","isResponseValueArray","hasError","hasTypeAllValidationErrorWithoutRangeSelection","hasTypeAllValidationError","hasTypeAtLeastValidationError","hasTypeAtMostValidationError","hasTypeExactlyValidationError","hasTypeRangeValidationError","hasEmptyOtherAnswer","checkValueRequired","total","answerCount","allChoicesRequired","standAloneRequiredValidator","valueError","openEndedValidators","openEndedMultipleValueValidators","sum","valueSum","reduceSum","validateFixedSum","validateRespondentSurveyOpenEndedQuestion","answer","validateRespondentSurveyMultipleOpenEndedQuestion","valueErrors","answerValues","validateRespondentSurveySelectionAndOtherValue","selectedChoices","otherValue","hasRequiredAnswerError","selectedAnswerOtherRequiredError","returnValueErrors","singleTextboxQuestionDefinition","fromExternalQuestion","mapFromExternalQuestion$e","toExternalQuestion","eq","isOfQuestionType","isCompatible","baseGuards$a","isQuestionTypeMultipleTextbox","mapFromExternalQuestion$d","questionType","assertQuestionTypeMultipleTextbox","typeId$d","multipleTextboxQuestionDefinition","baseGuards$9","isQuestionTypeCommentBox","mapFromExternalQuestion$c","assertQuestionTypeCommentBox","typeId$c","commentBoxQuestionDefinition","baseGuards$8","isQuestionTypeMultipleChoice","typeId$b","multipleChoiceQuestionDefinition","mapFromExternalQuestion$b","baseGuards$7","isQuestionTypeCheckBox","mapFromExternalQuestion$a","assertQuestionTypeCheckBox","typeId$a","checkBoxQuestionDefinition","baseGuards$6","isQuestionTypeDropdown","mapFromExternalQuestion$9","assertQuestionTypeDropdown","typeId$9","dropdownQuestionDefinition","baseGuards$5","isQuestionTypeImageChoice","mapFromExternalQuestion$8","assertQuestionTypeImageChoice","typeId$8","imageChoiceQuestionDefinition","baseGuards$4","isQuestionTypeSlider","mapFromExternalQuestion$7","assertQuestionTypeSlider","typeId$7","sliderQuestionDefinition","baseStarRatingMatrixGuards","baseStarRatingScaleGuards","isQuestionTypeStarRating","mapFromExternalQuestion$6","assertQuestionTypeStarRating","typeId$6","starRatingQuestionDefinition","baseSingleAnswerGuards","baseManyAnswersGuards","baseRatingScaleGuards","isQuestionTypeMatrix","mapFromExternalQuestion$5","assertQuestionTypeMatrix","typeId$5","matrixRespondentSurveyValidation","flattenedValues","rest","matrixQuestionDefinition","baseGuards$3","isQuestionTypeRanking","mapFromExternalQuestion$4","assertQuestionTypeRanking","typeId$4","rankingQuestionDefinition","baseGuards$2","isQuestionTypeNps","npsQuestionDefinition","mapFromExternalQuestion$3","baseDateTimeGuards","baseDateGuards","baseTimeGuards","isQuestionTypeDateTime","typeId$2","errorMessageTokens","dateTimeAnswerPayloadToString","hour","minute","period","hasValidTime","validateTimeFormat","hourParsed","parseInt","minParsed","dateTimeRespondentSurveyValidation","simplifiedAnswers","stringifyAnswerValues","curr","checkValueFormat","dateTimeQuestionDefinition","mapFromExternalQuestion$2","baseGuards$1","isQuestionTypeImagePresentation","mapFromExternalQuestion$1","assertQuestionTypeImagePresentation","typeId$1","imagePresentationQuestionDefinition","baseGuards","isQuestionTypeTextPresentation","mapFromExternalQuestion","assertQuestionTypeTextPresentation","questionTypeDefinitionModules","selectQuestionTypeDefinition","isAggregateResponseHeaderItem","weight","isAggregateResponseHeader","items","isAggregateResponseBasicStats","rowItem","columnItem","groupItem","percentage","across","row","isAggregateResponseOtherAnswerItem","isAggregateResponseOtherAnswer","totalCount","isOneDimensionalAggregateResponseCell","isTwoDimensionalAggregateResponseCell","rowHeader","columnHeader","groupHeader","otherAnswers","stats","isThreeDimensionalAggregateResponseCell","isOneDimensionalChartData","rowID","rowLabel","isTwoDimensionalData","columnID","columnLabel","getTypeId","groupID","groupLabel","isExternalQuestionWithTypeId","initialState","ErrorBoundary","_len","_args","_key","updatedWithError","resetErrorBoundary","_this$props","_len2","_key2","onReset","_inheritsLoose","getDerivedStateFromError","_proto","componentDidCatch","info","_this$props$onError","_this$props2","componentDidMount","_this$props$onResetKe","_this$props3","resetKeys","changedArray","item","is","onResetKeysChange","_this$props4","fallbackRender","FallbackComponent","fallback","_props","classnamesExports","hasOwn","classNames","classes","argType","inner","useStyles$1","theme","wdsIcons","color","size","fontSize","iconSize","display","verticalAlign","textAlign","fill","palette","main","svgContainer","IconDocumentX","withIcon","WithIcon","viewBox","preserveAspectRatio","role","getDisplayName","getOriginalComponent","DocumentXIconPath","useStyles","fallbackComponent","fontFamily","questionBody","questionColor","border","borderRadius","minHeight","justifyContent","alignItems","marginLeft","COPY","ERROR","withErrorBoundary","ComponentWithErrorBoundary","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","r","defaultWidth","full","long","medium","short","time","lastWeek","yesterday","today","tomorrow","nextWeek","formattingValues","defaultFormattingWidth","argumentCallback","matchPatterns","defaultMatchWidth","parsePatterns","defaultParseWidth","valueCallback","formatDistance","addSuffix","comparison","formatLong","formatRelative","localize","ordinalNumber","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","matchPattern","parsePattern","any","weekStartsOn","firstWeekContainsDate","f","NaN","ceil","floor","h","w","y","D","P","getTimezoneOffset","setSeconds","C","M","U","RangeError","S","locale","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCFullYear","setUTCFullYear","Y","O","Ut","St","Xt","G","unit","Pt","R","Q","getUTCMonth","Et","L","H","round","I","B","Yt","setUTCMonth","E","getUTCHours","Nt","qt","K","getUTCMinutes","Bt","getUTCSeconds","Ot","getUTCMilliseconds","pow","Ht","X","_originalDate","At","zt","Gt","z","jt","Kt","Jt","Zt","_t","$t","Vt","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","te","setDate","getDate","ee","start","end","setHours","step","ne","getDay","ae","ue","se","ce","de","year","firstDayOfWeek","dayLabelFormat","weekdayLabelFormat","monthLabelFormat","days","useMemo","oe","getMonth","setFullYear","getFullYear","dayLabel","weekdayLabels","ie","monthLabel","le","fe","he","me","we","ge","setMonth","ve","ke","Ce","xe","now","Me","Se","startDate","endDate","isDateBlocked","minBookingDays","exactMinBookingDays","minBookingDate","maxBookingDate","Ye","focusedInput","onDatesChange","initialVisibleMonth","numberOfMonths","unavailableDates","changeActiveMonthOnSelect","useState","addEventListener","removeEventListener","pe","isDateBlockedFn","W","useCallback","F","activeMonths","isDateSelected","ye","isDateHovered","hoveredDate","isFirstOrLastSelectedDate","be","isStartDate","De","isEndDate","Te","isDateFocused","focusedDate","onResetDates","onDateHover","onDateSelect","onDateFocus","goToPreviousMonths","goToPreviousMonthsByOneMonth","goToNextMonths","goToNextMonthsByOneMonth","goToDate","goToPreviousYear","goToNextYear","_extends","safeIsNaN","ponyfill","areInputsEqual","newInputs","lastInputs","first","second","memoizeOne","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","memoized","newArgs","performance","cancelTimeout","timeoutID","cancelAnimationFrame","cachedRTLResult","getRTLOffsetType","recalculate","outerDiv","outerStyle","overflow","direction","innerDiv","innerStyle","appendChild","scrollLeft","removeChild","defaultItemKey$1","defaultItemKey","createListComponent","_class","_temp","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","List","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","onScroll","_getItemStyle","itemSize","itemStyleCache","_getItemStyleCache","_offset","isHorizontal","isRtl","offsetHorizontal","__","___","_onScrollHorizontal","_event$currentTarget","scrollWidth","prevState","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","scrollHeight","scrollTop","_outerRefSetter","ref","outerRef","current","requestTimeout","callback","delay","requestAnimationFrame","tick","_resetIsScrolling","getDerivedStateFromProps","nextProps","validateSharedProps$1","scrollTo","scrollToItem","align","itemCount","_callPropsCallbacks","_this$state","componentWillUnmount","innerRef","innerElementType","innerTagName","itemData","_this$props4$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","startIndex","stopIndex","_index","estimatedTotalSize","WebkitOverflowScrolling","willChange","pointerEvents","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props5","overscanCount","_this$state3","overscanBackward","overscanForward","PureComponent","validateSharedProps","_ref3","FixedSizeList","_ref4","lastItemOffset","maxOffset","minOffset","middleOffset","_ref5","offset","_ref6","numVisibleItems","_ref7","canUseDOM","isWindow","elementString","getWindow","_target$ownerDocument","_target$ownerDocument2","ownerDocument","defaultView","isDocument","Document","isHTMLElement","HTMLElement","getOwnerDocument","createAdjustmentFn","modifier","adjustments","accumulator","adjustment","valueAdjustment","add","subtract","isKeyboardEvent","KeyboardEvent","getEventCoordinates","isTouchEvent","TouchEvent","touches","clientX","clientY","changedTouches","hasViewportRelativeCoordinates","Action","defaultCoordinates","parseTransform","transform","transformArray","scaleX","scaleY","defaultOptions","ignoreTransform","getClientRect","rect","getBoundingClientRect","getComputedStyle","transformOrigin","inverseTransform","parsedTransform","translateX","translateY","getTransformAgnosticClientRect","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","scrollingElement","isSVGElement","SVGElement","computedStyle","isScrollable","overflowRegex","property","getFirstScrollableAncestor","firstScrollableAncestor","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","innerHeight","innerWidth","maxScroll","isTop","isLeft","isBottom","isRight","getScrollElementRect","scrollIntoViewIfNeeded","measure","scrollIntoView","block","inline","Listeners","listeners","removeAll","listener","_this$target","eventName","handler","_this$target2","hasExceededDistance","delta","measurement","dx","dy","sqrt","EventName","KeyboardCode","preventDefault","stopPropagation","defaultKeyboardCodes","Space","Enter","cancel","Esc","defaultKeyboardCoordinateGetter","currentCoordinates","Right","Left","Down","Up","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","handleCancel","attach","handleStart","Resize","VisibilityChange","Keydown","activeNode","onStart","active","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","collisionRect","newCoordinates","coordinatesDelta","scrollDelta","scrollableAncestors","scrollContainer","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","behavior","scrollBy","handleMove","coordinates","onMove","onEnd","detach","onCancel","isDistanceConstraint","constraint","isDelayConstraint","activators","onActivation","nativeEvent","activator","activatorNode","AbstractPointerSensor","listenerTarget","_getEventCoordinates","getEventListenerTarget","EventTarget","activated","initialCoordinates","timeoutId","documentListeners","handleKeydown","removeTextSelection","activationConstraint","move","passive","DragStart","ContextMenu","clearTimeout","Click","capture","SelectionChange","_getEventCoordinates2","tolerance","distance","cancelable","_this$document$getSel","getSelection","removeAllRanges","super","isPrimary","button","events$1","MouseButton","RightClick","events$2","AutoScrollActivator","TraversalOrder","noop","teardown","Backward","Forward","MeasuringStrategy","MeasuringFrequency","WhileDragging","Optimized","Status","contrastColor","rgb","useStyles$W","rowStyles","flexWrap","Row","useStyles$V","tooltip","breakpoints","md","center","zIndex","backgroundColor","boxShadow","tooltipBody","maxWidth","fontWeight","fontStyle","background","padding","lineHeight","defaultSelectors","useFocusTrap","selectors","focusRef","focusableEls","setEls","els","querySelectorAll","handleFocus","focusableElements","firstElement","lastElement","shiftKey","activeElement","focus","useStyles$U","modalOverlay","modal","marginBottom","closeBtn","cursor","marginTop","tooltipText","COPY$d","CLOSE_MODAL","Modal","closeModal","closeRef","tooltipId","handleClick","onClick","Tooltip","container","offsetWidth","showModal","setShowModal","mode","setMode","setAttribute","hasAttribute","openModal","matchMedia","modalEl","tooltipEl","containerEl","listSpacing","margin","mediaReset","useStyles$T","richTextContent","textDecoration","outline","listStyleType","listStyle","borderBottom","sanitizeOptions","ADD_TAGS","ADD_ATTR","RichText","elementId","Element","containerProps","tooltipNodes","setTooltipNodes","tooltipRef","sanitizeString","translate","useStyles$S","useSurveyIconStyles","withSvgIcon","SvgIcon","ariaLabelledBy","styles","hasTitle","iconTitleId","focusable","useStyles$R","COPY$c","createFieldId","createErrorId","useQuestionChoices","choices","sortableOptions","notaOption","otherOption","commentOption","useStyles$Q","nextButton","minWidth","overflowWrap","transition","outlineOffset","answerColor","COPY$b","OK_LABEL","Button","slicedText","EmptyFn","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","animate","fromValue","toValue","onUpdate","onComplete","duration","easingType","startTime","elapsed","getValue","useStyles$P","visuallyHidden","VisuallyHidden$1","useStyles$O","paddingBox","paddingTop","paddingBottom","paddingLeft","paddingRight","QuestionSpacing","useOnFocusLeave","focusCallback","ele","contains","relatedTarget","useStyles$N","footerRow","hasFooterPadding","containerStyles","errorRow","formReset","headerRow","COPY$a","QUESTION_TITLE","QuestionFieldLayoutTemplate","footer","clickShield","onSubmit","onLeave","containerRef","useRef","errorRef","lastShownError","setLastShownError","isAnimating","useLayoutEffect","initialHeight","offsetHeight","fieldsetRef","errorRowId","questionTitleId","createLegendId","tabIndex","useStyles$M","containerVertical","containerHorizontal","flexDirection","columnHorizontal","columnHorizontalAutoAdjust","xs","lg","sm","xxs","answerLayoutCell","gridCellMargin","flex","wordBreak","otherLayoutCell","otherCellMargin","QuestionAnswerLayoutTemplate","columns","noneOfTheAbove","adjustToContent","columnGroups","totalChildren","totalColumns","childrenArray","childrenArr","maxCellsPerCol","fullColumnsCount","sliceChildren","childrenPerColumn","calculateMaxNumOfChildrenPerColumn","columnClassNames","col","columnIndex","cell","cellIndex","WarningIcon$1","WarningIcon","clipRule","fillRule","stroke","useStyles$L","icon","alignSelf","flexShrink","validationMessage","isDark","gap","ValidationMessage","Wrapper","useStyles$K","breakpointMedium","breakpointXsMin","fontWeightOptions","getFontWeights","inputArea","cols","textSizeAdjust","primaryAccentColor","borderColor","bgColor","opacity","TextArea$1","forwardRef","TextArea","disabled","readOnly","forwardedRef","spellCheck","useStyles$J","inputField","autoHeight","TextInput$1","TextInput","onChange","handleChange","useStyles$I","commentLabelText","commentLabel","CommentChoice","lineCount","charCount","multipleTextLines","htmlFor","rows","textReset","useStyles$H","questionTitleFormatting","questionTitle","questionTitleFontSize","addonContainer","useDefaultFrontSize","isAccessible","whiteSpace","wordWrap","requiredAsterisk","richText","RespondentQuestionTitle","addon","numbered","useContext","defaultOKConfig","QuestionField","titleProps","okButton","showButton","okButtonProps","errorId","errorIdProp","useInputStyles","isChecked","defaultChecked","isDefaultChecked","isDisabled","isAriaDisabled","isReadOnly","isAriaReadOnly","setIsChecked","styleProps","inputProps","radioGroupContext","useRadioGroup","useControlledState","controlled","defaultProp","isControlled","valueState","setValue","newValue","setRef","useForkRef","refA","refB","refValue","RadioGroup","nameProp","valueProp","divProps","setValueState","useStyles$G","inputContainer","controlIcon","BaseInput$1","BaseInput","checkedProp","disabledProp","ariaDisabledProp","readOnlyProp","ariaReadOnlyProp","setChecked","defaultPrevented","newChecked","RadioIcon$1","RadioIcon","rx","ry","useStyles$F","radioInput","RadioInput$1","RadioInput","marginTopHelper$1","useStyles$E","controlLabel","borderStyle","light","inputSize","marginRight","Radio$1","Radio","radioGroup","useStyles$D","breakpointSmMax","rowRadio","radioWidth","BestWorstRow","rowId","columnIds","onKeyDown","bestColId","worstColId","bestRadioId","worstRadioId","labelId","radioEvents","useStyles$C","rowList","headerColumn","labelColumn","labelWidth","BestWorst","_dis","_ro","fields","responses","columnChoices","questionFieldProps","setSelectedChoices","bestAnswerColumn","worstAnswerColumn","rowFields","getRadioSelection","unCheckOption","radioId","newChoices","rowValue","handleKeyboard","isSelected","field","CheckboxIcon$1","CheckboxIcon","SelectIcon$1","SelectIcon","points","strokeLinejoin","strokeWidth","CaretDownIcon","CaretDown","CaretDownOutlineIcon","CaretDownOutline","CaretUpOutline","CaretLeftOutlineIcon","CaretLeftOutline","CaretRightOutlineIcon","CaretRightOutline","DragHandleIcon$1","DragHandleIcon","CalendarIcon","Calendar","useStyles$B","checkboxInput","checkBgColor","CheckboxInput$1","CheckboxInput","marginTopHelper","useStyles$A","checkboxContainer","Checkbox$3","Checkbox$2","useStyles$z","checkbox","labelContainer","textInput","checkHover","CheckboxTextfield","inputValue","checkboxProps","handleValueChange","inputRef","TEXT_INPUT_MAX_CHARS","useStyles$y","commentChoiceContainer","Checkbox$1","Checkbox","_req","columnLayout","choiceNoneOfTheAbove","choiceOther","choiceComment","newState","handleDefault","choice","getDefaultValueById","CommentBox$1","CommentBox","defaultResponses","fieldProps","titleId","useSSRSafeLayoutEffect","useStyles$x","selectContainerStyles","selectStyles","mozAppearance","webkitAppearance","appearance","selectIconStyles","disabledStyles","NativeSelect","iconClasses","iconProps","useStyles$w","selectOption","SelectAnswerOption","useStyles$v","inputGroup","rtl","buttonIcon","isOpen","ComboBoxInputGroup","open","close","ariaActiveDescendant","ariaAutocomplete","ariaControls","ariaLabel","useImperativeHandle","useStyles$u","listBox","overflowY","overflowX","numItemsVisible","containerHeight","itemHeight","focusNext","focusedIndex","visibleItemCount","focusItem","lastIndex","externalFocusedIndex","setFocusedIndex","itemsRef","ulRef","itemRect","ulRect","dataset","interactiveProps","HTMLUListElement","HTMLLIElement","useStyles$t","listBoxItem","ListBoxItem","useStyles$s","listBoxContainer","ARIA_ACTIVEDESCENDANT","VirtualizedListBox","listRef","listElement","removeAttribute","useStyles$r","comboBox","ComboBox","filterOnChange","outsideValue","optionAlign","comboBoxRef","listBoxRef","setIsOpen","currentOptions","setCurrentOptions","filterActive","setFilterActive","valueOnOpen","setValueOnOpen","firstRender","closeListBox","openListBox","option","matchingOption","activeDescendant","altKey","textContent","clip","clipPath","useStyles$q","srOnly","VisuallyHidden","Tag","useCalendarStyles","calendarPickerWrapper","calendarControls","comboboxWrapper","flexGrow","monthWrapper","gridTemplateColumns","gridGap","useMonthStyles","weekdayLabel","weekGrid","useDayStyles","dayDefault","daySelected","daySelectedFirstOrLast","dayDisabled","COPY$9","DAY_OF_MONTH","Day","dayRef","isSelectedStartOrEnd","isWithinHoverRange","disabledDate","onMouseEnter","Ne","dayInCalendar","COPY$8","DAY_OF_WEEK_LEGEND_SHORT","DAY_OF_WEEK_LEGEND_FULL","Month","dayProps","dayOfTheWeek","emptyDayKey","COPY$7","PREVIOUS_MONTH","NEXT_MONTH","MONTH_SELECT","YEAR_SELECT","MONTHS","startingYear","yearOptions","comboBoxSeedId","CalendarPicker","onDaySelect","onDateChange","initialSelectedDate","startingDayOfWeek","focusTrapRef","comboboxId","selectId","currentMonth","monthNames","months","monthOptions","newDate","getPreviousMonth","prevMonthLastDay","monthNamesIndex","monthIndex","findIndex","getNextMonth","nextMonthLastDay","useStyles$p","visibility","calendarVisibility","DisclosureContainer","onClose","disclosureRef","clickedOutside","comboBoxOptionClicked","US_DATE_FORMAT","stringToDate","dateString","badValues","isValid","validDateStringCheck","padStart","useStyles$o","dateInputWrapper","dateInput","maxHeight","calendarButton","calendarWrapper","calendarPosition","COPY$6","DATE_LABEL","DATE_BUTTON_LABEL","DateInput","dateFormat","ariaDescribedBy","setCalendarVisibility","dateInputID","calendarButtonRef","inputBound","disclosureBound","lastFocus","handleDisclosureClose","placeholder","segments","toISOString","toDateString","useStyles$n","separator","COPY$5","TIME_LABEL","HOUR_LABEL","MINUTES_LABEL","DAYTIME_LABEL","TimeInput","timeLabelID","hourLabelID","hourInputID","minuteLabelID","minuteInputID","periodLabelID","periodSelectID","onBlur","useStyles$m","inlineErrorContainer","COPY$4","ERROR_PROVIDE_DATE_INTL_FORMAT","ERROR_PROVIDE_DATE_US_FORMAT","ERROR_ENTER_HOURS","ERROR_ENTER_MINUTES","ERROR_SELECT_PERIOD","DateTime$1","DateTime","showDate","showTime","inlineErrors","responseValues","setResponseValues","getDateValueById","getTimeValueById","newResponse","handleDateChange","handleTimeChange","useStyles$l","defaultFontSize","highlightColor","otherStyles","hiddenInput","commentChoice","Dropdown$1","Dropdown","_required","_readOnly","responseValue","setResponseValue","defaultChoice","otherText","setOtherText","handleTextChange","choiceData","isOtherAnswerSelected","autoFocus","useStyles$k","imageChoice","controlImage","transitionDuration","optionLabel","imageContainer","objectFit","useStyles$j","imageInput","activeColor","ImageInput$1","ImageInput","ImageChoiceOption","ImageChoice$2","alt","src","imageSrc","imageId","ariaDescribeId","imageInputEvents","isDefaultPrevented","checkVal","useStyles$i","isFull","isThird","isHalf","cols3","cols2","cols1","imageChoiceContainer","xl","noneOfTheAboveContainer","ImageChoice$1","ImageChoice","multiple","imageChoiceType","groupName","image","altText","useStyles$h","imageStyles","Image","useStyles$g","presentationalTitleStyles","buttonStyles","ImagePresentational$1","ImagePresentational","richTextId","buttonProps","useStyles$f","RadioTextfield","refs","radioProps","radioRef","radio","textInputRef","handleInputChange","handleFocusChange","onFocus","useStyles$e","MultipleChoice","radioGroupProps","useStyles$d","MultipleTextbox","response","useStyles$c","npsContainer","npsLabel","npsRatingButtonList","npsRatingButton","borderLeft","borderRight","minLabel","maxLabel","useStyles$b","focusBackgroundColor","correctAnswerHighlightColor","primaryBackgroundColor","NpsRatingButton","component","COPY$3","NPS_QUESTION_TITLE","Nps","ratingChanged","clickedAnswerValue","scaleId","minFullLabel","maxFullLabel","minLabelText","maxLabelText","instructionsId","accessibleHeading","srOnlyClass","accessibleTitle","useStyles$a","gridCell","GridCell","useStyles$9","labelStyles","GridRow","rowIndex","cells","gridComponent","colId","colIndex","cellId","useStyles$8","gridStyles","columnContainer","columnBuffer","MatrixGrid","gridRef","focusedElement","querySelector","nextColumn","nextRow","previousColumn","previousRow","nextElement","useStyles$7","cellInputWrapper","hoverBorderStyle","RatingInput","qid","grid","inputId","useStyles$6","gridComponentStyle","MatrixRating","_disabled","isNa","prevRows","currentRow","currentCols","useStyles$5","listItemBackground","listItemBorderActive","flexStart","controlsFontSize","labelOffset","controlsPadding","rankItem","userSelect","ghost","outlineWidth","outlineStyle","outlineColor","orderIndex","ranksVisible","borderWidth","dragHandle","touchAction","controls","RankingRow","dragListeners","dragRef","contentContainer","dragHandleContainer","controlsContainer","indexLabel","orderButton","applicableControl","RANK_NA","ARIA_RANK_NA","itemDisabled","ARIA_RANK_MOVE_UP","ARIA_RANK_MOVE_DOWN","shouldHandleEvent","cur","noDnd","parentElement","PointerSensor","WebkitUserSelect","WebkitTouchCallout","listItem","dragOverlay","ARIA_RANK_MOVED_UP","ARIA_RANK_MOVED_DOWN","ARIA_RANK_MOVED_TO_TOP","ARIA_RANK_MOVED_TO_BOTTOM","SingleTextbox$1","SingleTextbox","_f","textPresentationalStyles","TextPresentational$1","TextPresentational","smFont","grey","themeAugmentation","ultralight","regular","bold","defaultColor","correctColor","wrongColor","applySurveyThemeAugmentation","questionHighlightColor","isNps","titleColor","getQuestionHighlightColor","secondaryAccentColor","prefix","boxSizing","MIN_SAFE_INTEGER","SurveyGlobalStyles","SurveyStylesProvider","generateJssId","generateId","rule","srcSheet","sheet","classNamePrefix","SurveyThemeWrapper","declareVisualization","questionTypes","capabilities","providerAccessContext","UnsupportedVisualization","COPY$2","componentContainer","textContainer","textInputContainer","QuizResultComment","optionText","textInputValue","textInputSize","textInputParagraphLines","useStyles$4","COPY$1","CORRECT","INCORRECT","SrText","icons","correct","QuizCorrectIcon","isAriaHidden","wrong","QuizWrongIcon","useStyles$3","containerBase","getIconContainerBg","highlight","iconName","getIconContainerBorderColor","getIconContainerBackground","radioContainer","iconContainer","iconContainerBackground","InputIcon","ariaLabelledby","isCorrect","noScreenReaderText","Icon","useStyles$2","defaultFrontSize","QuizResultChoices","hasTextInput","uniqId","radioButtonId","textInputId","iconLabel","imageStyle","captionStyle","QuizResultImageChoice","caption","correctMessage","selectedMessage","isManyAnswers","imageChoiceId","captionId","selectedId","highlightedId","_g","_h","_j","scoreContainer","feedbackContainer","skippedBadge","SCORE","SKIPPED","QuizResultScore","score","feedback","skipped","getCorrectnessIndicatorIcon","responded","answerOptionPoints","getIconAndHighlight","idToSearch","highlightCorrectAnswers","pickFeedback","userScore","totalScore","partial","incorrect","getUserScore","quizAnswers","isNotUndefined","isPureQuizAnswer","filterQuizAnswers","idsToFilter","isPureQuizImageAnswer","CheckBox$1","CheckBox","numberingEnabled","answerLayoutColumns","totalPoints","regularAnswers","isComment","NoneOfTheAboveOption","OtherOption","textAnswer","MultipleChoice$1","answerOption","noneOfTheAboveOption","filterOtherFromQuizImageAnswer","UnsupportedQuestionTypeError","SingleQuestionController$1","SingleQuestionController","displayOptions","namedSlots","responseSet","useUpstreamConfig","useVisualizationList","access","useProviderAccessContext","upstreamActions","renderProps","settings","visualizationOptions","augmentedExternalQuestion","useExternalQuestionAugmentation","definition","ChosenVisualization","questionTypeId","VisualizationComponent","qd","qts","VisualizationComponentWrapper","UnsupportedVisualizationWrapper","createVisualization","getAnswerLayoutColumns","answerLayout","quizAnswersToImageAnswers","ans","maybeAnswer","matchingImageAnswer","ansImg","ProviderHelper","visualizationList","ctx","providerValue","fs","ProvidersWrapper","providerFactory","MultipleChoiceVisualization","survey","CheckBoxVisualization","ImageChoiceVisualization","quizResultsWithImage","getQuizResultsWithImage","DropdownVisualization","QuizResultsCapabilityProvider","trimAllValues","trimOtherValues","equals","objA","objB","equalsIgnoreOrder","uniqueValues","Set","useShowOkButton","dirty","showOkButton","setShowOkButton","useFieldIsDirty","fieldDirty","setFieldIsDirty","useWithValidatorRegistration","registerValidator","unregisterValidator","questionTypeSpecificValidation","validationFunction","forceValidation","AnswerDropdownVisualization","RespondentDropdownVisualization","upstreamErrors","upstreamAnswer","isClassic","defaultAnswer","isDirty","setAnswer","asteriskEnabled","questionOkButton","okLabel","onLeaveQuestion","trimmedValues","AnswerCommentBoxVisualization","RespondentCommentBoxVisualization","RespondentSingleTextboxVisualization","RespondentMultipleTextboxVisualization","RespondentMultipleChoiceVisualization","RespondentCheckboxVisualization","RespondentRankingVisualization","RespondentDateTimeVisualization","trimDateTimeValues","RespondentPresentationVisualization","imageProps","presentationProps","RespondentImageChoiceVisualization","RespondentNpsVisualization","RespondentMatrixVisualization","RespondentSurveyCapabilityProvider"],"sourceRoot":""}