{"version":3,"file":"static/js/main.a17e64c4.js","sources":["../../../node_modules/react-native-web/dist/exports/StyleSheet/dom/createCSSStyleSheet.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/dom/createOrderedCSSStyleSheet.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/dom/index.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/@sentry/src/scope.ts","../../../node_modules/@sentry/src/misc.ts","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/ViewabilityHelper/index.js","administration/components/admin-hub/admin-hub-header.tsx","../../../node_modules/promise/lib/core.js","../../../node_modules/core-js/modules/web.immediate.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/react-native-web/dist/cjs/modules/TextInputState/index.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/react-bootstrap/esm/Col.js","../../../node_modules/@notifee/react-native/src/validators/validateIOSInput.ts","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-native-web/dist/modules/unitlessNumbers/index.js","../../../node_modules/react-native-web/dist/modules/setValueForStyles/dangerousStyleValue.js","../../../node_modules/react-native-web/dist/modules/setValueForStyles/index.js","../../../node_modules/react-native-web/dist/exports/UIManager/index.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/react-bootstrap/esm/Feedback.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/es-define-property/index.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/environment-is-ios.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/hyphenateStyleName.js","../../../node_modules/@restart/hooks/esm/useForceUpdate.js","../../../packages/ui/shared/account-location.tsx","../../../packages/ui/shared/icon.tsx","../../../packages/ui/shared/alert-bar.tsx","../../../packages/ui/shared/asset-progress-bar.tsx","../../../packages/ui/shared/asset-status-pill.tsx","../../../packages/ui/shared/base-comment.tsx","../../../packages/ui/shared/collapse.tsx","../../../packages/ui/shared/text-input-helper.tsx","../../../packages/ui/shared/debug-accounts.tsx","../../../packages/ui/shared/debug-messaging.tsx","../../../packages/ui/shared/debug-permissions.tsx","../../../packages/ui/shared/dynamic-jsx.tsx","../../../packages/ui/shared/empty-list.tsx","../../../packages/ui/shared/list-button.tsx","../../../packages/ui/shared/unread-status-indicator.tsx","../../../packages/ui/shared/notification-list-item.tsx","../../../packages/ui/shared/notification-preferences.tsx","../../../packages/ui/shared/range.tsx","../../../packages/ui/shared/success-fail-badge.tsx","../../../packages/ui/shared/text-badge.tsx","../../../packages/ui/shared/textarea-helper.tsx","../../../packages/ui/shared/toggle.tsx","../../../packages/ui/shared/comment-input.tsx","../../../packages/ui/shared/circle-badge.tsx","../../../packages/ui/shared/flex.tsx","../../../packages/ui/shared/margin.tsx","../../../packages/ui/shared/account-badge.tsx","../../../packages/ui/shared/divider.tsx","../../../packages/ui/shared/badge.tsx","../../../node_modules/react-overlays/esm/useRootClose.js","../../../node_modules/react-overlays/esm/ownerDocument.js","../../../node_modules/src/errors.ts","../../../node_modules/src/hubextensions.ts","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/react-bootstrap/esm/CardImg.js","../../../node_modules/react-bootstrap/esm/Card.js","../../../node_modules/react-native-web/dist/cjs/modules/useLocale/index.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/inline-style-prefixer/lib/plugins/backgroundClip.js","../../../node_modules/@sentry/src/node.ts","../../../node_modules/@sentry/src/env.ts","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","../../../node_modules/react-native-web/dist/exports/View/index.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/@hypnosphi/create-react-context/lib/implementation.js","../../../node_modules/react-tiny-popover/src/useArrowContainer.ts","../../../node_modules/react-query/es/core/focusManager.js","../../../node_modules/src/flags.ts","../../../node_modules/react-native-web/dist/cjs/exports/RefreshControl/index.js","../../../node_modules/src/span.ts","../../../node_modules/object-is/index.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/infoLog/index.js","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/jwt-decode/lib/atob.js","../../../node_modules/jwt-decode/lib/base64_url_decode.js","../../../node_modules/jwt-decode/lib/index.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/preprocess.js","../../../node_modules/react-native-web/dist/cjs/modules/AccessibilityUtil/index.js","../../../node_modules/dom-helpers/esm/ownerDocument.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../node_modules/hyphenate-style-name/index.js","../../../node_modules/react-native-web/dist/modules/dismissKeyboard/index.js","../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../node_modules/src/utils.ts","../../../node_modules/prop-types/index.js","../../../node_modules/@notifee/react-native/src/validators/validateIOSCategory.ts","../../../node_modules/dom-helpers/esm/listen.js","jss/mixins/focus.ts","jss/mixins/chevron.ts","../../../node_modules/lodash/_stackHas.js","../../../node_modules/react-native-web/dist/cjs/modules/useLayoutEffect/index.js","../../../node_modules/react-bootstrap/esm/FormContext.js","../../../node_modules/react-native-web/dist/exports/Text/TextAncestorContext.js","../../../node_modules/set-function-name/index.js","../../../node_modules/@notifee/react-native/src/utils/index.ts","../../../packages/contexts/content-settings/content-settings.context.tsx","../../../node_modules/warning/warning.js","../../../node_modules/react-native-web/dist/cjs/modules/ScrollResponder/index.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/math-intrinsics/min.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/@restart/hooks/esm/useWillUnmount.js","../../../node_modules/@restart/hooks/esm/useUpdatedRef.js","../../../node_modules/@notifee/react-native/src/validators/validateNotification.ts","../../../node_modules/react-native-web/dist/exports/Keyboard/index.js","../../../node_modules/dom-helpers/esm/removeClass.js","../../../node_modules/@notifee/react-native/src/validators/validateIOSPermissions.ts","../../../node_modules/p-defer/index.js","../../../node_modules/@restart/hooks/esm/useMounted.js","../../../node_modules/math-intrinsics/max.js","../../../node_modules/classnames/index.js","../../../node_modules/react-bootstrap-typeahead/es/constants.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getStringLabelKey.js","../../../node_modules/react-bootstrap-typeahead/es/utils/nodash.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getOptionLabel.js","../../../node_modules/react-bootstrap-typeahead/es/utils/addCustomOption.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getOptionProperty.js","../../../node_modules/react-bootstrap-typeahead/es/utils/stripDiacritics.js","../../../node_modules/react-bootstrap-typeahead/es/utils/warn.js","../../../node_modules/react-bootstrap-typeahead/es/utils/defaultFilterBy.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getDisplayName.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getMatchBounds.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getHintText.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getMenuItemId.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getInputProps.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getInputText.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getIsOnlyResult.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getTruncatedOptions.js","../../../node_modules/react-bootstrap-typeahead/es/utils/getUpdatedActiveIndex.js","../../../node_modules/react-bootstrap-typeahead/es/utils/isSelectable.js","../../../node_modules/react-bootstrap-typeahead/es/utils/preventInputBlur.js","../../../node_modules/react-bootstrap-typeahead/es/utils/size.js","../../../node_modules/react-bootstrap-typeahead/es/core/Context.js","../../../node_modules/react-bootstrap-typeahead/es/core/TypeaheadManager.js","../../../node_modules/react-bootstrap-typeahead/es/propTypes.js","../../../node_modules/react-bootstrap-typeahead/es/core/Typeahead.js","../../../node_modules/react-bootstrap-typeahead/es/utils/validateSelectedPropChange.js","../../../node_modules/react-bootstrap-typeahead/es/utils/isShown.js","../../../node_modules/react-bootstrap-typeahead/es/behaviors/async.js","../../../node_modules/react-bootstrap-typeahead/es/components/ClearButton.js","../../../node_modules/react-bootstrap-typeahead/es/components/Loader.js","../../../node_modules/popper.js/src/utils/isBrowser.js","../../../node_modules/popper.js/src/utils/debounce.js","../../../node_modules/popper.js/src/utils/isFunction.js","../../../node_modules/popper.js/src/utils/getStyleComputedProperty.js","../../../node_modules/popper.js/src/utils/getParentNode.js","../../../node_modules/popper.js/src/utils/getScrollParent.js","../../../node_modules/popper.js/src/utils/getReferenceNode.js","../../../node_modules/popper.js/src/utils/isIE.js","../../../node_modules/popper.js/src/utils/getOffsetParent.js","../../../node_modules/popper.js/src/utils/getRoot.js","../../../node_modules/popper.js/src/utils/findCommonOffsetParent.js","../../../node_modules/popper.js/src/utils/isOffsetContainer.js","../../../node_modules/popper.js/src/utils/getScroll.js","../../../node_modules/popper.js/src/utils/getBordersSize.js","../../../node_modules/popper.js/src/utils/getWindowSizes.js","../../../node_modules/popper.js/src/utils/getClientRect.js","../../../node_modules/popper.js/src/utils/getBoundingClientRect.js","../../../node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../node_modules/popper.js/src/utils/includeScroll.js","../../../node_modules/popper.js/src/utils/isFixed.js","../../../node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","../../../node_modules/popper.js/src/utils/getBoundaries.js","../../../node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../node_modules/popper.js/src/utils/computeAutoPlacement.js","../../../node_modules/popper.js/src/utils/getReferenceOffsets.js","../../../node_modules/popper.js/src/utils/getOuterSizes.js","../../../node_modules/popper.js/src/utils/getOppositePlacement.js","../../../node_modules/popper.js/src/utils/getPopperOffsets.js","../../../node_modules/popper.js/src/utils/find.js","../../../node_modules/popper.js/src/utils/runModifiers.js","../../../node_modules/popper.js/src/utils/findIndex.js","../../../node_modules/popper.js/src/methods/update.js","../../../node_modules/popper.js/src/utils/isModifierEnabled.js","../../../node_modules/popper.js/src/utils/getSupportedPropertyName.js","../../../node_modules/popper.js/src/methods/destroy.js","../../../node_modules/popper.js/src/utils/getWindow.js","../../../node_modules/popper.js/src/utils/setupEventListeners.js","../../../node_modules/popper.js/src/methods/enableEventListeners.js","../../../node_modules/popper.js/src/methods/disableEventListeners.js","../../../node_modules/popper.js/src/utils/removeEventListeners.js","../../../node_modules/popper.js/src/utils/isNumeric.js","../../../node_modules/popper.js/src/utils/setStyles.js","../../../node_modules/popper.js/src/modifiers/computeStyle.js","../../../node_modules/popper.js/src/utils/isModifierRequired.js","../../../node_modules/popper.js/src/methods/placements.js","../../../node_modules/popper.js/src/utils/clockwise.js","../../../node_modules/popper.js/src/modifiers/flip.js","../../../node_modules/popper.js/src/modifiers/offset.js","../../../node_modules/popper.js/src/modifiers/index.js","../../../node_modules/popper.js/src/modifiers/shift.js","../../../node_modules/popper.js/src/modifiers/preventOverflow.js","../../../node_modules/popper.js/src/modifiers/keepTogether.js","../../../node_modules/popper.js/src/modifiers/arrow.js","../../../node_modules/popper.js/src/utils/getOppositeVariation.js","../../../node_modules/popper.js/src/modifiers/inner.js","../../../node_modules/popper.js/src/modifiers/hide.js","../../../node_modules/popper.js/src/utils/getRoundedOffsets.js","../../../node_modules/popper.js/src/modifiers/applyStyle.js","../../../node_modules/popper.js/src/utils/setAttributes.js","../../../node_modules/popper.js/src/methods/defaults.js","../../../node_modules/popper.js/src/index.js","../../../node_modules/react-bootstrap-typeahead/node_modules/react-popper/lib/esm/Manager.js","../../../node_modules/react-bootstrap-typeahead/node_modules/react-popper/lib/esm/utils.js","../../../node_modules/react-bootstrap-typeahead/node_modules/react-popper/lib/esm/Popper.js","../../../node_modules/react-bootstrap-typeahead/es/components/Overlay.js","../../../node_modules/react-bootstrap-typeahead/es/behaviors/token.js","../../../node_modules/react-bootstrap-typeahead/es/components/Token.js","../../../node_modules/react-bootstrap-typeahead/es/components/Hint.js","../../../node_modules/react-bootstrap-typeahead/es/components/Input.js","../../../node_modules/react-bootstrap-typeahead/es/behaviors/classNames.js","../../../node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputMulti.js","../../../node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputSingle.js","../../../node_modules/react-bootstrap-typeahead/es/components/Highlighter.js","../../../node_modules/compute-scroll-into-view/src/index.ts","../../../node_modules/scroll-into-view-if-needed/es/index.js","../../../node_modules/react-bootstrap-typeahead/es/behaviors/item.js","../../../node_modules/react-bootstrap-typeahead/es/components/MenuItem.js","../../../node_modules/react-bootstrap-typeahead/es/components/Menu.js","../../../node_modules/react-bootstrap-typeahead/es/components/TypeaheadMenu.js","../../../node_modules/react-bootstrap-typeahead/es/components/Typeahead.js","../../../node_modules/react-bootstrap-typeahead/es/components/AsyncTypeahead.js","../../../node_modules/core-js/internals/function-bind-context.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/react-bootstrap/esm/SelectableContext.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../packages/ui/shared/popup.tsx","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/fbjs/lib/warning.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/dom-helpers/esm/camelize.js","../../../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../../../node_modules/lodash.debounce/index.js","../../../node_modules/idb/build/wrap-idb-value.js","../../../node_modules/idb/build/index.js","../../../node_modules/react-native-web/dist/cjs/modules/prefixStyles/index.js","../../../packages/contexts/qmrs/fail-codes.service.ts","../../../packages/contexts/qmrs/qmrs.state.ts","../../../packages/contexts/qmrs/qmrs.utils.ts","../../../packages/contexts/qmrs/qmrs.context.tsx","../../../packages/contexts/qmrs/qmrs.hooks.ts","../../../packages/contexts/qmrs/qmrs.service.ts","../../../node_modules/react-native-web/dist/exports/TextInput/index.js","../../../node_modules/inline-style-prefixer/lib/utils/capitalizeString.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/object-is/implementation.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../../../node_modules/react-native-web/dist/modules/forwardedProps/index.js","../../../node_modules/prop-types-extra/lib/isRequiredForA11y.js","userarticles/context/categories.context.tsx","../../../node_modules/lodash/_stackSet.js","../../../node_modules/define-properties/index.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/Batchinator/index.js","../../../node_modules/@sentry/src/syncpromise.ts","../../../node_modules/@sentry/src/is.ts","../../../node_modules/dunder-proto/get.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/hash.js","../../../packages/ui/shared/label.tsx","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/utils.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/inline-style-prefixer/lib/plugins/filter.js","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/@sentry/src/stacktrace.ts","../../../packages/ui/node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/styleq/dist/styleq.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/create-react-class/index.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/core-js/internals/well-known-symbol-define.js","../../../node_modules/react-native-web/dist/cjs/modules/useLocale/isLocaleRTL.js","../../../node_modules/react-native-web/dist/cjs/modules/multiplyStyleLengthValue/index.js","../../../node_modules/css-in-js-utils/lib/hyphenateProperty.js","../../../packages/contexts/content-settings/content-settings.state.ts","../../../node_modules/react-bootstrap/esm/Spinner.js","../../../node_modules/react-bootstrap/esm/transitionEndListener.js","../../../node_modules/react-native-web/dist/cjs/modules/useMergeRefs/index.js","../../../node_modules/lodash/_hashSet.js","vin-sessions/assets/Icons.tsx","../../../node_modules/date-fns/isAfter.js","../../../node_modules/react-overlays/esm/DropdownContext.js","../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/ResponderEventTypes.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/lodash/_baseIsEqual.js","../../../node_modules/@notifee/react-native/src/index.ts","../../../node_modules/lodash/_equalByTag.js","../../../node_modules/@restart/hooks/esm/useTimeout.js","../../../node_modules/react-query/es/core/notifyManager.js","config/get-env-config.ts","../../../node_modules/@notifee/react-native/src/validators/validateIOSCategoryAction.ts","../../../node_modules/theming/dist/theming.esm.js","../../../node_modules/is-in-browser/dist/module.js","../../../node_modules/react-jss/node_modules/jss/dist/jss.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-rule-value-observable/dist/jss-plugin-rule-value-observable.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-template/dist/jss-plugin-template.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-extend/dist/jss-plugin-extend.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-compose/dist/jss-plugin-compose.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-expand/dist/jss-plugin-expand.esm.js","../../../node_modules/css-vendor/dist/css-vendor.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../../../node_modules/react-jss/node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../../../node_modules/react-jss/node_modules/jss-preset-default/dist/jss-preset-default.esm.js","../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../../../node_modules/css-jss/node_modules/jss/dist/jss.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-rule-value-observable/dist/jss-plugin-rule-value-observable.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-template/dist/jss-plugin-template.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-extend/dist/jss-plugin-extend.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-compose/dist/jss-plugin-compose.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-expand/dist/jss-plugin-expand.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../../../node_modules/css-jss/node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../../../node_modules/css-jss/dist/css-jss.esm.js","../../../node_modules/css-jss/node_modules/jss-preset-default/dist/jss-preset-default.esm.js","../../../node_modules/react-jss/dist/react-jss.esm.js","../../../node_modules/shallow-equal/dist/index.esm.js","../../../packages/core/utils/media-helpers.ts","../../../packages/core/utils/notifications.ts","../../../packages/core/utils/utils.ts","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/index.js","../../../node_modules/react-native-web/dist/cjs/exports/findNodeHandle/index.js","../../../node_modules/fbjs/lib/invariant.js","../../../node_modules/deepmerge/dist/cjs.js","../../../node_modules/react-bootstrap/esm/Alert.js","components/navigation-item.tsx","../../../node_modules/react-native-web/dist/cjs/exports/createElement/index.js","../../../node_modules/@sentry/src/string.ts","../../../node_modules/@notifee/react-native/src/validators/validateAndroidFullScreenAction.ts","../../../packages/contexts/qmrsdashboard/qmrsdashboard.hooks.tsx","../../../node_modules/react-native-web/dist/cjs/exports/FlatList/index.js","../../../node_modules/react-redux/node_modules/react-is/index.js","../../../node_modules/css-in-js-utils/lib/isPrefixedValue.js","../../../node_modules/promise/lib/rejection-tracking.js","components/navigation-sub-item.tsx","../../../node_modules/is-date-object/index.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/react-element-popper/build/browser.min.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/@notifee/react-native/src/utils/validate.ts","components/empty/empty.tsx","../../../node_modules/react-native-web/dist/cjs/exports/InteractionManager/index.js","../../../node_modules/react-native-web/dist/exports/Platform/index.js","../../../node_modules/lodash/_mapToArray.js","../../../node_modules/react-native-web-linear-gradient/dist/index.js","../../../node_modules/html-parse-stringify/src/parse.js","../../../node_modules/html-parse-stringify/src/stringify.js","../../../node_modules/react-i18next/dist/es/utils.js","../../../node_modules/react-i18next/dist/es/unescape.js","../../../node_modules/react-i18next/dist/es/defaults.js","../../../node_modules/react-i18next/dist/es/i18nInstance.js","../../../node_modules/react-i18next/dist/es/initReactI18next.js","../../../node_modules/react-i18next/dist/es/context.js","../../../node_modules/react-i18next/dist/es/useTranslation.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/@notifee/react-native/src/NotifeeApiModule.ts","../../../node_modules/core-js/internals/symbol-constructor-detection.js","jss/fonts.ts","../../../node_modules/lodash/_Map.js","../../../node_modules/es-errors/syntax.js","../../../node_modules/react-native-web/dist/modules/AccessibilityUtil/propsToAriaRole.js","../../../node_modules/react-native-web/dist/modules/AccessibilityUtil/propsToAccessibilityComponent.js","../../../node_modules/react-native-web/dist/modules/AccessibilityUtil/index.js","../../../node_modules/react-native-web/dist/modules/AccessibilityUtil/isDisabled.js","../../../node_modules/math-intrinsics/floor.js","../../../node_modules/es-errors/index.js","../../../node_modules/@babel/runtime/helpers/toPrimitive.js","../../../node_modules/react-native-web/dist/cjs/exports/Switch/index.js","../../../node_modules/react-native-web/dist/modules/AssetRegistry/index.js","../../../node_modules/react-native-web/dist/modules/ImageLoader/index.js","../../../node_modules/react-native-web/dist/exports/Image/index.js","../../../node_modules/inline-style-prefixer/lib/plugins/crossFade.js","../../../packages/models/api/techline.ts","../../../node_modules/react-bootstrap/esm/DropdownMenu.js","../../../node_modules/@babel/runtime/helpers/extends.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/react-bootstrap/node_modules/classnames/index.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/@restart/hooks/esm/useMergedRefs.js","../../../node_modules/mem/node_modules/mimic-fn/index.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/preprocess.js","../../../node_modules/color/node_modules/color-name/index.js","../../../node_modules/@notifee/react-native/src/types/Notification.ts","../../../node_modules/inline-style-prefixer/lib/utils/isObject.js","../../../node_modules/react-native-web/dist/modules/requestIdleCallback/index.js","../../../node_modules/react-native-web/dist/exports/InteractionManager/index.js","../../../node_modules/@sentry/src/instrument.ts","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/bezier.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/Easing.js","../../../node_modules/react-native-web/dist/exports/Easing/index.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/core-js/internals/make-built-in.js","../../../node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/es-errors/ref.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/@notifee/react-native/src/types/Trigger.ts","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/core-js/internals/environment-is-node.js","components/table/table-renderer.tsx","../react-jsx-parser/webpack/universalModuleDefinition","../react-jsx-parser/node_modules/acorn-jsx/index.js","../react-jsx-parser/node_modules/acorn-jsx/xhtml.js","../react-jsx-parser/node_modules/acorn/dist/acorn.js","../react-jsx-parser/node_modules/acorn/dist/acorn.mjs","../react-jsx-parser/source/constants/attributeNames.ts","../react-jsx-parser/source/constants/specialTags.ts","../react-jsx-parser/source/helpers/hash.ts","../react-jsx-parser/source/helpers/parseStyle.ts","../react-jsx-parser/source/helpers/camelCase.ts","../react-jsx-parser/source/helpers/resolvePath.ts","../react-jsx-parser/source/components/JsxParser.tsx","../react-jsx-parser/external \"react\"","../react-jsx-parser/webpack/bootstrap","../react-jsx-parser/webpack/startup","../react-jsx-parser/webpack/runtime/compat get default export","../react-jsx-parser/webpack/runtime/define property getters","../react-jsx-parser/webpack/runtime/hasOwnProperty shorthand","../react-jsx-parser/webpack/runtime/make namespace object","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/react-to-print/lib/index.js","../../../packages/contexts/escalations/escalation-modal.context.tsx","../../../packages/contexts/escalations/escalation-modal.hooks.tsx","../../../packages/contexts/escalations/escalation.service.tsx","../../../node_modules/core-js/internals/weak-map-basic-detection.js","../../../node_modules/react-tiny-popover/src/util.ts","../../../node_modules/dom-helpers/esm/scrollbarSize.js","../../../node_modules/dom-helpers/esm/activeElement.js","../../../node_modules/dom-helpers/esm/isWindow.js","../../../node_modules/dom-helpers/esm/isDocument.js","../../../node_modules/react-overlays/esm/isOverflowing.js","../../../node_modules/react-overlays/esm/manageAriaHidden.js","../../../node_modules/react-overlays/esm/ModalManager.js","../../../node_modules/react-overlays/esm/Modal.js","../../../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../../../node_modules/react-bootstrap/esm/ModalBody.js","../../../node_modules/react-bootstrap/esm/ModalContext.js","../../../node_modules/react-bootstrap/esm/ModalDialog.js","../../../node_modules/react-bootstrap/esm/ModalFooter.js","../../../node_modules/react-bootstrap/esm/ModalHeader.js","../../../node_modules/react-bootstrap/esm/ModalTitle.js","../../../node_modules/react-bootstrap/esm/Modal.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidChannelGroup.ts","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/core-js/modules/esnext.symbol.observable.js","../../../node_modules/react-bootstrap/esm/SafeAnchor.js","../../../node_modules/react-bootstrap/esm/Button.js","../../../node_modules/lodash/_cacheHas.js","../../../packages/core/styles/colors.ts","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/normalizeValueWithProperty.js","../../../node_modules/lodash/keys.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/react-native-web/dist/modules/useStable/index.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/format.js","../../../node_modules/core-js/internals/function-call.js","../../../node_modules/call-bound/index.js","../../../packages/contexts/content-settings/content-settings.service.ts","../../../node_modules/react-bootstrap/esm/DropdownToggle.js","../../../packages/contexts/asset-uploads/asset-uploads.state.ts","../../../packages/contexts/asset-uploads/asset-uploads.abstract-service.ts","../../../packages/contexts/asset-uploads/asset-uploads.context.tsx","../../../packages/contexts/asset-uploads/asset-uploads.hooks.ts","../../../node_modules/react-native-web/dist/cjs/modules/AccessibilityUtil/propsToAriaRole.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/react-overlays/esm/useWaitForDOMRef.js","../../../node_modules/inline-style-prefixer/lib/createPrefixer.js","../../../node_modules/lodash/_root.js","../../../node_modules/core-js/internals/well-known-symbol-wrapped.js","../../../node_modules/react-app-polyfill/stable.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/color-name/index.js","../../../node_modules/react-native-web/dist/cjs/exports/Text/TextAncestorContext.js","../../../node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","../../../node_modules/react-native-web/dist/cjs/modules/usePressEvents/index.js","../../../node_modules/react-native-web/dist/cjs/exports/ActivityIndicator/index.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/core-js/modules/web.clear-immediate.js","../../../packages/contexts/worksheets/worksheets.state.ts","../../../packages/contexts/worksheets/worksheets.service.ts","../../../packages/contexts/worksheets/worksheets.context.tsx","../../../packages/contexts/worksheets/worksheets.hooks.tsx","../../../packages/contexts/auth/auth-token.service.ts","../../../packages/contexts/auth/auth.service.ts","../../../node_modules/lodash/_getAllKeys.js","../../../packages/ui/shared/modal/styles.ts","../../../packages/ui/shared/modal/index.tsx","../../../node_modules/es-errors/eval.js","../../../node_modules/react-native-web/dist/cjs/exports/TouchableOpacity/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/core-js/internals/schedulers-fix.js","../../../node_modules/ts-action/esm5/reducer.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/ResponderSystem.js","../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../node_modules/@notifee/react-native/src/types/NotificationIOS.ts","../../../node_modules/react-bootstrap/esm/NavbarContext.js","../../../node_modules/invariant/browser.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/css-in-js-utils/es/assignStyle.js","../../../node_modules/css-in-js-utils/es/camelCaseProperty.js","../../../node_modules/css-in-js-utils/es/hyphenateProperty.js","../../../node_modules/css-in-js-utils/es/cssifyDeclaration.js","../../../node_modules/css-in-js-utils/es/cssifyObject.js","../../../node_modules/css-in-js-utils/es/isPrefixedProperty.js","../../../node_modules/css-in-js-utils/es/isPrefixedValue.js","../../../node_modules/css-in-js-utils/es/isUnitlessProperty.js","../../../node_modules/css-in-js-utils/es/unprefixProperty.js","../../../node_modules/css-in-js-utils/es/normalizeProperty.js","../../../node_modules/css-in-js-utils/es/resolveArrayValue.js","../../../node_modules/css-in-js-utils/es/unprefixValue.js","../../../node_modules/@sentry/src/index.ts","../../../node_modules/react-native-web/dist/exports/KeyboardAvoidingView/index.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/react-native-web/dist/exports/TouchableWithoutFeedback/index.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidChannel.ts","../../../node_modules/core-js/internals/try-to-string.js","../../../node_modules/uuid/lib/bytesToUuid.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/LayoutAnimation/index.js","../../../node_modules/@firebase/component/src/component.ts","../../../node_modules/@firebase/component/src/constants.ts","../../../node_modules/@firebase/component/src/provider.ts","../../../node_modules/@firebase/component/src/component_container.ts","../../../node_modules/is-arguments/index.js","../../../node_modules/inline-style-prefixer/lib/utils/prefixValue.js","../../../node_modules/inline-style-prefixer/lib/utils/prefixProperty.js","../../../node_modules/inline-style-prefixer/lib/utils/addNewValuesOnly.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/react-native-web/dist/cjs/exports/Platform/index.js","../../../node_modules/src/factory.js","../../../node_modules/react-query/es/core/query.js","../../../node_modules/react-query/es/core/queryCache.js","../../../node_modules/react-query/es/core/mutationCache.js","../../../node_modules/react-query/es/core/infiniteQueryBehavior.js","../../../node_modules/react-query/es/core/queryClient.js","../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../node_modules/dom-helpers/esm/transitionEnd.js","../../../node_modules/dom-helpers/esm/triggerEvent.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/inline-style-prefixer/lib/plugins/imageSet.js","../../../node_modules/promise/lib/es6-extensions.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/isArray.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/object-utils.js","../../../node_modules/react-native-web/dist/cjs/modules/useElementLayout/index.js","../../../node_modules/core-js/internals/to-object.js","../../../packages/ui/shared/button.tsx","../../../node_modules/@notifee/react-native/src/types/NotificationAndroid.ts","../../../node_modules/object-keys/isArguments.js","../../../node_modules/react-tiny-popover/src/ArrowContainer.tsx","../../../node_modules/@sentry/src/logger.ts","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js","../../../node_modules/object-is/shim.js","../../../node_modules/@notifee/react-native/src/validators/iosCommunicationInfo/validateIOSCommunicationInfo.ts","../../../node_modules/inline-style-prefixer/lib/plugins/position.js","../../../node_modules/date-fns/parseISO.js","../../../node_modules/react-native-web/dist/exports/render/index.js","../../../node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js","../../../node_modules/react-native-web/dist/exports/NativeModules/index.js","../../../node_modules/react-native-web/dist/exports/AccessibilityInfo/index.js","../../../node_modules/react-native-web/dist/exports/Alert/index.js","../../../node_modules/react-native-web/dist/exports/Appearance/index.js","../../../node_modules/react-native-web/dist/exports/AppRegistry/AppContainer.js","../../../node_modules/react-native-web/dist/exports/AppRegistry/index.js","../../../node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js","../../../node_modules/react-native-web/dist/exports/AppState/index.js","../../../node_modules/react-native-web/dist/exports/BackHandler/index.js","../../../node_modules/react-native-web/dist/exports/Clipboard/index.js","../../../node_modules/react-native-web/dist/exports/DeviceInfo/index.js","../../../node_modules/react-native-web/dist/exports/I18nManager/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/LayoutAnimation/index.js","../../../node_modules/react-native-web/dist/exports/LayoutAnimation/index.js","../../../node_modules/react-native-web/dist/exports/NativeEventEmitter/index.js","../../../node_modules/react-native-web/dist/exports/Share/index.js","../../../node_modules/react-native-web/dist/exports/Vibration/index.js","../../../node_modules/react-native-web/dist/exports/Button/index.js","../../../node_modules/react-native-web/dist/exports/CheckBox/index.js","../../../node_modules/react-native-web/dist/exports/ImageBackground/index.js","../../../node_modules/react-native-web/dist/exports/Picker/index.js","../../../node_modules/react-native-web/dist/exports/Picker/PickerItem.js","../../../node_modules/react-native-web/dist/modules/createEventHandle/index.js","../../../node_modules/react-native-web/dist/modules/modality/index.js","../../../node_modules/react-native-web/dist/modules/useEvent/index.js","../../../node_modules/react-native-web/dist/modules/useHover/index.js","../../../node_modules/react-native-web/dist/exports/Pressable/index.js","../../../node_modules/react-native-web/dist/exports/ProgressBar/index.js","../../../node_modules/react-native-web/dist/exports/SafeAreaView/index.js","../../../node_modules/react-native-web/dist/exports/StatusBar/index.js","../../../node_modules/react-native-web/dist/modules/multiplyStyleLengthValue/index.js","../../../node_modules/react-native-web/dist/exports/Switch/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/PooledClass/index.js","../../../node_modules/react-native-web/dist/exports/Touchable/BoundingDimensions.js","../../../node_modules/react-native-web/dist/exports/Touchable/Position.js","../../../node_modules/react-native-web/dist/exports/Touchable/index.js","../../../node_modules/react-native-web/dist/modules/UnimplementedView/index.js","../../../node_modules/react-native-web/dist/exports/TouchableNativeFeedback/index.js","../../../node_modules/react-native-web/dist/exports/VirtualizedList/index.js","../../../node_modules/react-native-web/dist/exports/YellowBox/index.js","../../../node_modules/react-native-web/dist/exports/LogBox/index.js","../../../node_modules/react-native-web/dist/exports/DrawerLayoutAndroid/index.js","../../../node_modules/react-native-web/dist/exports/InputAccessoryView/index.js","../../../node_modules/react-native-web/dist/exports/ToastAndroid/index.js","../../../node_modules/react-native-web/dist/exports/PermissionsAndroid/index.js","../../../node_modules/react-native-web/dist/exports/Settings/index.js","../../../node_modules/react-native-web/dist/exports/Systrace/index.js","../../../node_modules/react-native-web/dist/exports/TVEventHandler/index.js","../../../node_modules/react-native-web/dist/exports/DeviceEventEmitter/index.js","../../../node_modules/react-native-web/dist/exports/useColorScheme/index.js","../../../node_modules/react-native-web/dist/exports/useLocaleContext/index.js","../../../node_modules/react-native-web/dist/exports/useWindowDimensions/index.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/@babel/runtime/helpers/inherits.js","../../../node_modules/@hypnosphi/create-react-context/lib/index.js","../../../node_modules/dom-helpers/esm/querySelectorAll.js","../../../node_modules/whatwg-fetch/fetch.js","../../../node_modules/@babel/runtime/helpers/objectSpread2.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/NativeRNVectorIcons.web.js","../../../node_modules/react-native-web/dist/cjs/modules/isSelectionValid/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/VirtualizeUtils/index.js","../../../packages/ui/node_modules/react-dom/index.js","../../../node_modules/functions-have-names/index.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-native-web/dist/cjs/modules/useStable/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/VirtualizedSectionList/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/SectionList/index.js","../../../node_modules/react-native-web/dist/exports/SectionList/index.js","../../../node_modules/react-native-web/dist/cjs/modules/mergeRefs/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/NativeAnimatedHelper.js","../../../node_modules/react-native-web/dist/vendor/react-native/TurboModule/TurboModuleRegistry.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedNode.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedWithChildren.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedInterpolation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedValue.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedEvent.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedTransform.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedStyle.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedProps.js","../../../node_modules/react-native-web/dist/vendor/react-native/Utilities/setAndForwardRef.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/createAnimatedComponent.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedFlatList.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedImage.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedScrollView.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedSectionList.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedText.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedView.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedAddition.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedDiffClamp.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedDivision.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedModulo.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedMultiplication.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedSubtraction.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedTracking.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedValueXY.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/animations/Animation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/animations/DecayAnimation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/SpringConfig.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/animations/SpringAnimation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/animations/TimingAnimation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedImplementation.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedMock.js","../../../node_modules/react-native-web/dist/vendor/react-native/Animated/Animated.js","../../../node_modules/react-native-web/dist/exports/Animated/index.js","../../../node_modules/normalize-css-color/index.js","../../../node_modules/react-bootstrap/esm/CardContext.js","../../../node_modules/react-tiny-popover/src/useElementRef.ts","../../../node_modules/regexp.prototype.flags/shim.js","../../../node_modules/@babel/runtime/helpers/createClass.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/core-js/internals/is-callable.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/object-assign/index.js","../../../packages/models/api/assets.ts","../../../node_modules/react-native-web/dist/cjs/exports/View/index.js","../../../node_modules/react-overlays/esm/DropdownMenu.js","../../../node_modules/@sentry/src/time.ts","../../../node_modules/react-native-web/dist/cjs/modules/getBoundingClientRect/index.js","../../../node_modules/react-native-web/dist/cjs/modules/usePressEvents/PressResponder.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/index.js","../../../node_modules/uuid/v4.js","../../../node_modules/core-js/internals/function-uncurry-this.js","../../../packages/contexts/content-settings/content-settings.hooks.ts","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/react-native-web/dist/modules/createDOMProps/index.js","../../../node_modules/is-regex/index.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/@notifee/react-native/src/validators/validateIOSAttachment.ts","../../../node_modules/react-native-web/dist/cjs/exports/TouchableHighlight/index.js","../../../node_modules/react-native-web/dist/cjs/modules/canUseDom/index.js","../../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js","services/http-client.ts","../../../node_modules/react-native-web/dist/vendor/react-native/Batchinator/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/FillRateHelper/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/ViewabilityHelper/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/infoLog/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/VirtualizedListContext.js","../../../node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js","../../../node_modules/dom-helpers/esm/removeEventListener.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/dom/createCSSStyleSheet.js","../../../node_modules/regexp.prototype.flags/index.js","../../../node_modules/call-bind/index.js","../../../node_modules/symbol-observable/es/index.js","../../../node_modules/symbol-observable/es/ponyfill.js","../../../node_modules/inline-style-prefixer/lib/plugins/transition.js","../../../node_modules/react-bootstrap/esm/Collapse.js","../../../node_modules/map-age-cleaner/dist/index.js","../../../node_modules/core-js/internals/is-null-or-undefined.js","../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../node_modules/es-object-atoms/index.js","../../../node_modules/react-native-web/dist/modules/canUseDom/index.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/math-intrinsics/isNaN.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/normalizeColor.js","../../../node_modules/react-query/es/core/utils.js","../../../node_modules/set-function-length/index.js","../../../node_modules/color/node_modules/color-convert/conversions.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/unitlessNumbers.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/normalizeValueWithProperty.js","../../../node_modules/styleq/dist/transform-localize-style.js","../../../node_modules/lodash/_arraySome.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidStyle.ts","../../../packages/core/storage/storage-keys.ts","../../../packages/core/storage/storage.service.ts","../../../node_modules/react-query/es/react/reactBatchedUpdates.js","../../../node_modules/react-query/es/react/setBatchUpdatesFn.js","../../../node_modules/react-query/es/react/logger.js","../../../node_modules/react-query/es/react/setLogger.js","../../../node_modules/react-query/es/react/QueryClientProvider.js","../../../node_modules/react-query/es/core/mutationObserver.js","../../../node_modules/react-query/es/react/utils.js","../../../node_modules/react-query/es/react/useMutation.js","../../../node_modules/react-query/es/core/queryObserver.js","../../../node_modules/react-query/es/react/QueryErrorResetBoundary.js","../../../node_modules/react-query/es/react/useQuery.js","../../../node_modules/react-query/es/react/useBaseQuery.js","../../../node_modules/math-intrinsics/round.js","../../../node_modules/@firebase/installations/src/util/constants.ts","../../../node_modules/@firebase/installations/src/util/errors.ts","../../../node_modules/@firebase/installations/src/functions/common.ts","../../../node_modules/@firebase/installations/src/util/sleep.ts","../../../node_modules/@firebase/installations/src/helpers/generate-fid.ts","../../../node_modules/@firebase/installations/src/helpers/buffer-to-base64-url-safe.ts","../../../node_modules/@firebase/installations/src/util/get-key.ts","../../../node_modules/@firebase/installations/src/helpers/fid-changed.ts","../../../node_modules/@firebase/installations/src/helpers/idb-manager.ts","../../../node_modules/@firebase/installations/src/helpers/get-installation-entry.ts","../../../node_modules/@firebase/installations/src/functions/create-installation-request.ts","../../../node_modules/@firebase/installations/src/functions/generate-auth-token-request.ts","../../../node_modules/@firebase/installations/src/helpers/refresh-auth-token.ts","../../../node_modules/@firebase/installations/src/api/get-token.ts","../../../node_modules/@firebase/installations/src/helpers/extract-app-config.ts","../../../node_modules/@firebase/installations/src/functions/config.ts","../../../node_modules/@firebase/installations/src/api/get-id.ts","../../../node_modules/@firebase/installations/src/index.ts","../../../node_modules/@firebase/messaging/src/util/constants.ts","../../../node_modules/@firebase/messaging/src/interfaces/internal-message-payload.ts","../../../node_modules/@firebase/messaging/src/helpers/array-base64-translator.ts","../../../node_modules/@firebase/messaging/src/helpers/migrate-old-database.ts","../../../node_modules/@firebase/messaging/src/internals/idb-manager.ts","../../../node_modules/@firebase/messaging/src/util/errors.ts","../../../node_modules/@firebase/messaging/src/internals/requests.ts","../../../node_modules/@firebase/messaging/src/internals/token-manager.ts","../../../node_modules/@firebase/messaging/src/helpers/externalizePayload.ts","../../../node_modules/@firebase/messaging/src/helpers/logToFirelog.ts","../../../node_modules/@firebase/messaging/src/helpers/extract-app-config.ts","../../../node_modules/@firebase/messaging/src/messaging-service.ts","../../../node_modules/@firebase/messaging/src/helpers/registerDefaultSw.ts","../../../node_modules/@firebase/messaging/src/api/getToken.ts","../../../node_modules/@firebase/messaging/src/helpers/updateVapidKey.ts","../../../node_modules/@firebase/messaging/src/helpers/updateSwReg.ts","../../../node_modules/@firebase/messaging/src/helpers/logToScion.ts","../../../node_modules/@firebase/messaging/src/listeners/window-listener.ts","../../../node_modules/@firebase/messaging/src/helpers/is-console-message.ts","../../../node_modules/@firebase/messaging/src/helpers/register.ts","../../../node_modules/@firebase/messaging/src/api.ts","../../../node_modules/@firebase/messaging/src/api/isSupported.ts","../../../node_modules/@firebase/messaging/src/api/deleteToken.ts","../../../node_modules/@firebase/messaging/src/api/onMessage.ts","../../../node_modules/react-native-web/dist/cjs/modules/dismissKeyboard/index.js","../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/attr-accept/dist/es/index.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/react-bootstrap/esm/Row.js","../../../packages/contexts/investigations/investigation-modal.context.tsx","../../../packages/contexts/investigations/investigation-modal.hooks.tsx","../../../packages/contexts/investigations/investigation.service.tsx","../../../node_modules/regexp.prototype.flags/polyfill.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/lodash/isEqual.js","../../../node_modules/has-tostringtag/shams.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../packages/ui/shared/loading-circle.tsx","../../../node_modules/abortcontroller-polyfill/dist/umd-polyfill.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/simple-swizzle/index.js","../../../node_modules/regexp.prototype.flags/implementation.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/react-native-web/dist/exports/createElement/index.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/ResponderTouchHistoryStore.js","../../../packages/contexts/auth/auth.state.ts","../../../node_modules/react-native-web/dist/cjs/modules/AccessibilityUtil/isDisabled.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/ensure-native-module-available.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/get-intrinsic/index.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/icon-button.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react-bootstrap/esm/ThemeProvider.js","../../../node_modules/react-overlays/esm/safeFindDOMNode.js","../../../node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../node_modules/react-native-web/dist/exports/Linking/index.js","../../../node_modules/react-native-web/dist/exports/TouchableOpacity/index.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/react-native-web/dist/cjs/modules/pick/index.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/postcss-value-parser/lib/walk.js","../../../node_modules/react-tiny-popover/src/usePopover.ts","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../packages/models/api/form.ts","../../../node_modules/uncontrollable/lib/esm/utils.js","../../../node_modules/uncontrollable/lib/esm/hook.js","../../../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../../node_modules/react-query/es/core/mutation.js","../../../node_modules/core-js/internals/array-slice.js","../../../packages/ui/shared/hooks/hover-state.hook.ts","../../../packages/ui/shared/hooks/use-alert.ts","../../../packages/ui/shared/hooks/use-interval.ts","../../../node_modules/postcss-value-parser/lib/index.js","../../../node_modules/fbjs/lib/emptyFunction.js","../../../node_modules/@babel/runtime/helpers/defineProperty.js","../../../packages/ui/shared/popups/meeting-notes.popup.tsx","../../../packages/ui/shared/popups/session-timeout.popup.tsx","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/FlatList/index.js","../../../node_modules/photoeditorsdk/esm/production/no-polyfills-0e45cf64.js","../../../node_modules/lodash/_isMasked.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/create-icon-set.js","../../../node_modules/styleq/transform-localize-style.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/lodash/_baseIsEqualDeep.js","components/select.tsx","../../../node_modules/core-js/internals/a-callable.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/deepDiffer/index.js","../../../node_modules/@notifee/react-native/src/NotifeeNativeModule.web.ts","../../../node_modules/@remix-run/router/history.ts","../../../node_modules/@remix-run/router/utils.ts","../../../node_modules/@remix-run/router/router.ts","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/react-is/cjs/react-is.production.js","../../../node_modules/color/node_modules/color-convert/index.js","../../../node_modules/@sentry/src/flags.ts","../../../packages/models/api/worksheets.ts","../../../node_modules/es-errors/type.js","../../../node_modules/@sentry/src/global.ts","../../../node_modules/react-native-web/dist/cjs/exports/processColor/index.js","../../../node_modules/react/index.js","../../../node_modules/@amplitude/ua-parser-js/src/ua-parser.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/postcss-value-parser/lib/stringify.js","../../../node_modules/core-js/modules/es.regexp.flags.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/index.js","../../../node_modules/lodash/_mapCacheDelete.js","core/navigation/navigation.contex.tsx","../../../node_modules/react-native-web/dist/vendor/react-native/NativeEventEmitter/index.js","../../../node_modules/uuid/index.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/core-js/internals/function-name.js","../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","../../../node_modules/react-bootstrap/esm/FormCheckInput.js","../../../node_modules/react-bootstrap/esm/FormCheckLabel.js","../../../node_modules/react-bootstrap/esm/FormCheck.js","../../../node_modules/has-property-descriptors/index.js","../../../node_modules/react-query/es/core/logger.js","../../../node_modules/react-viewer/dist/index.js","../../../node_modules/react-native-web/dist/cjs/modules/prefixStyles/static.js","../../../node_modules/react-native-web/dist/modules/isWebColor/index.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/normalizeColor.js","../../../node_modules/yn/lenient.js","../../../node_modules/yn/index.js","../../../packages/core/config/constants.ts","../../../packages/core/config/config.service.ts","../../../node_modules/react-native-web/dist/modules/getBoundingClientRect/index.js","../../../node_modules/void-elements/index.js","../../../node_modules/@restart/hooks/esm/useSafeState.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/react-overlays/esm/popper.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/react-overlays/esm/usePopper.js","../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../node_modules/react-bootstrap/esm/Fade.js","../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../node_modules/react-bootstrap/esm/FormFileInput.js","../../../node_modules/react-bootstrap/esm/FormFileLabel.js","../../../node_modules/react-bootstrap/esm/FormFile.js","../../../node_modules/react-bootstrap/esm/FormGroup.js","../../../node_modules/react-bootstrap/esm/FormLabel.js","../../../node_modules/react-bootstrap/esm/FormText.js","../../../node_modules/react-bootstrap/esm/Switch.js","../../../node_modules/react-bootstrap/esm/Form.js","../../../node_modules/core-js/internals/is-pure.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/dom-helpers/esm/getComputedStyle.js","../../../node_modules/dom-helpers/esm/ownerWindow.js","../../../node_modules/dom-helpers/esm/hyphenate.js","../../../node_modules/dom-helpers/esm/hyphenateStyle.js","../../../node_modules/dom-helpers/esm/isTransform.js","../../../node_modules/dom-helpers/esm/css.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/date-fns/constants.js","../../../node_modules/math-intrinsics/pow.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/unitlessNumbers.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/dom/createOrderedCSSStyleSheet.js","../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/react-native-web/dist/exports/processColor/index.js","../../../packages/contexts/qmrs/advanced-search.context.tsx","userarticles/context/categories.actions.ts","userarticles/context/categories.state.ts","../../../node_modules/react-native-web/dist/cjs/exports/ScrollView/ScrollViewBase.js","../../../node_modules/hasown/index.js","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/i18next/dist/esm/i18next.js","../../../node_modules/core-js/internals/math-trunc.js","../../../node_modules/react-native-web/dist/modules/useLocale/isLocaleRTL.js","../../../node_modules/react-native-web/dist/modules/useLocale/index.js","../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/validate.js","../../../node_modules/react-native-web/dist/modules/TextInputState/index.js","../../../node_modules/react-bootstrap/esm/NavContext.js","../../../node_modules/lodash/eq.js","../../../packages/contexts/qmrsdashboard/qmrsdashboard.state.ts","../../../node_modules/lodash/isLength.js","../../../node_modules/dom-helpers/esm/canUseDOM.js","../../../node_modules/core-js/modules/web.set-immediate.js","../../../node_modules/lodash/lodash.js","../../../node_modules/react-native-web/dist/exports/Dimensions/index.js","../../../node_modules/react-query/es/core/subscribable.js","../../../node_modules/deep-equal/index.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/react-native-web/dist/exports/TouchableHighlight/index.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/react-native-web/dist/cjs/modules/setValueForStyles/index.js","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@amplitude/utils/src/misc.ts","../../../node_modules/amplitude-js/node_modules/decode-uri-component/index.js","../../../node_modules/amplitude-js/node_modules/split-on-first/index.js","../../../node_modules/amplitude-js/node_modules/filter-obj/index.js","../../../node_modules/amplitude-js/node_modules/query-string/base.js","../../../node_modules/amplitude-js/node_modules/query-string/index.js","../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../node_modules/amplitude-js/amplitude.esm.js","../../../packages/core/analytics/analytics.ts","../../../node_modules/react-native-web/dist/cjs/modules/AccessibilityUtil/propsToAccessibilityComponent.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../node_modules/@notifee/react-native/src/validators/validate.ts","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../node_modules/@notifee/react-native/src/validators/validateTrigger.ts","../../../node_modules/core-js/internals/define-built-in-accessor.js","../../../node_modules/core-js/modules/esnext.symbol.dispose.js","../../../packages/contexts/bmis/bmis.state.ts","../../../packages/contexts/bmis/bmis.context.tsx","../../../packages/contexts/bmis/bmis.hooks.ts","../../../packages/contexts/bmis/bmis.service.ts","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/lodash/_Set.js","../../../node_modules/math-intrinsics/abs.js","../../../node_modules/math-intrinsics/sign.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/react-query/es/core/onlineManager.js","../../../node_modules/@restart/hooks/esm/useCallbackRef.js","../../../node_modules/@sentry/src/browser.ts","../../../node_modules/core-js/internals/global-this.js","../../../node_modules/react-dom/index.js","../../../packages/ui/node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/core-js/internals/environment-user-agent.js","../../../node_modules/react/cjs/react.production.min.js","userarticles/context/articles.actions.ts","userarticles/context/articles.state.ts","../../../node_modules/react-native-web/dist/modules/useLayoutEffect/index.js","../../../node_modules/core-js/internals/path.js","../../../node_modules/postcss-value-parser/lib/unit.js","../../../node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/dom-helpers/esm/hasClass.js","../../../node_modules/mem/dist/index.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/es-errors/range.js","../../../node_modules/@notifee/react-native/src/validators/iosCommunicationInfo/validateIOSCommunicationInfoPerson.ts","../../../node_modules/get-proto/index.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/has-own-property.js","../../../node_modules/inline-style-prefixer/lib/plugins/sizing.js","../../../node_modules/asap/browser-raw.js","../../../node_modules/@sentry/src/object.ts","../../../node_modules/function-bind/index.js","../../../node_modules/react-app-polyfill/ie11.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidPressAction.ts","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/VirtualizeUtils/index.js","../../../node_modules/react-native-web/dist/modules/pick/index.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/create-icon-set-from-icomoon.js","../../../node_modules/react-native-web/dist/cjs/exports/LayoutAnimation/index.js","../../../node_modules/@babel/runtime/regenerator/index.js","../../../node_modules/@firebase/util/src/constants.ts","../../../node_modules/@firebase/util/src/crypt.ts","../../../node_modules/@firebase/util/src/defaults.ts","../../../node_modules/@firebase/util/src/global.ts","../../../node_modules/@firebase/util/src/deferred.ts","../../../node_modules/@firebase/util/src/environment.ts","../../../node_modules/@firebase/util/src/errors.ts","../../../node_modules/@firebase/util/src/obj.ts","../../../node_modules/@firebase/util/src/compat.ts","../../../node_modules/react-tiny-popover/src/useMemoizedArray.ts","../../../node_modules/react-native-web/dist/cjs/exports/Dimensions/index.js","../../../node_modules/object-keys/index.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/hash.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/hyphenateStyleName.js","../../../node_modules/react-native-web/dist/modules/prefixStyles/static.js","../../../node_modules/react-native-web/dist/modules/prefixStyles/index.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/compiler/index.js","../../../node_modules/react-native-web/dist/exports/StyleSheet/index.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/react-date-object/dist/index.module.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidNotification.ts","../../../node_modules/react-native-web/dist/modules/useResponderEvents/createResponderEvent.js","../../../node_modules/react-native-web/dist/modules/useResponderEvents/ResponderEventTypes.js","../../../node_modules/react-native-web/dist/modules/useResponderEvents/utils.js","../../../node_modules/react-native-web/dist/modules/isSelectionValid/index.js","../../../node_modules/react-native-web/dist/modules/useResponderEvents/ResponderTouchHistoryStore.js","../../../node_modules/react-native-web/dist/modules/useResponderEvents/ResponderSystem.js","../../../node_modules/react-native-web/dist/modules/useResponderEvents/index.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidAction.ts","../../../node_modules/react-native-web/dist/cjs/exports/UIManager/index.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/create-icon-set-from-fontello.js","../../../node_modules/core-js/internals/environment.js","../../../packages/core/http/abort-controller.hook.ts","../../../packages/core/http/http-client.ts","../../../node_modules/src/idletransaction.ts","../../../node_modules/react-bootstrap/esm/FormControl.js","../../../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../../node_modules/core-js/internals/validate-arguments-length.js","../../../packages/contexts/notifications/notifications.state.ts","../../../packages/contexts/notifications/notifications.context.tsx","../../../packages/contexts/notifications/notifications.hooks.ts","../../../packages/contexts/notifications/notifications.service.ts","../../../node_modules/core-js/internals/define-global-property.js","../../../packages/contexts/qmrsdashboard/qmrsdashboard.context.tsx","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/dom/index.js","../../../node_modules/inline-style-prefixer/lib/plugins/logical.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/VirtualizedList/index.js","../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../node_modules/react-native-web/dist/exports/PixelRatio/index.js","../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../node_modules/@sentry/src/session.ts","../../../node_modules/@sentry/src/hub.ts","../../../node_modules/react-native-web/dist/exports/RefreshControl/index.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","userarticles/context/articles.context.tsx","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-native-web/dist/cjs/modules/setValueForStyles/dangerousStyleValue.js","../../../node_modules/gopd/gOPD.js","../../../node_modules/react-native-web/dist/cjs/modules/requestIdleCallback/index.js","../../../node_modules/lodash/_equalArrays.js","../../../node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/react-native-web/dist/exports/ActivityIndicator/index.js","../../../node_modules/core-js/internals/environment-v8-version.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/react-native-web/dist/cjs/exports/StyleSheet/compiler/createReactDOMStyle.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../../../node_modules/color-string/index.js","../../../node_modules/gud/index.js","../../../node_modules/core-js/internals/regexp-flags.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/react-native-web/dist/cjs/modules/isWebColor/index.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/react-overlays/esm/DropdownToggle.js","../../../node_modules/core-js/internals/function-apply.js","../../../node_modules/color/index.js","../../../node_modules/lodash/isObject.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/@notifee/react-native/src/version.ts","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/react-router-dom/dom.ts","../../../node_modules/react-router-dom/index.tsx","../../../node_modules/react-native-web/dist/modules/mergeRefs/index.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/react-native-web/dist/modules/useMergeRefs/index.js","../../../node_modules/react-native-web/dist/cjs/vendor/react-native/FillRateHelper/index.js","../../../node_modules/ua-parser-js/src/ua-parser.js","../../../node_modules/@restart/hooks/esm/usePrevious.js","../../../node_modules/object-keys/implementation.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/create-multi-style-icon-set.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/html.js","../../../node_modules/@notifee/react-native/src/validators/validateIOSNotification.ts","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/blueimp-md5/js/md5.js","../../../node_modules/lodash/_listCacheHas.js","../../../packages/contexts/auth/auth.hooks.ts","../../../node_modules/react-native-web/dist/vendor/react-native/deepDiffer/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/FlatList/index.js","../../../node_modules/react-native-web/dist/exports/FlatList/index.js","../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","components/table/table-action-header.tsx","components/table/table-body.tsx","components/table/table-cell.tsx","components/table/table-checkbox.tsx","components/table/table-head.tsx","components/table/table-header.tsx","components/table/table-pagination.tsx","components/table/table-row.tsx","components/table/table.tsx","../../../packages/contexts/permissions/permissions.state.ts","../../../packages/contexts/permissions/permissions.context.tsx","../../../packages/contexts/permissions/permissions.hooks.ts","../../../packages/contexts/permissions/permissions.service.ts","../../../node_modules/lodash/_nativeKeys.js","../../../packages/contexts/qmrsdashboard/qmrsdashboard.service.ts","../../../packages/contexts/qmrsdashboard/districtstats.service.ts","../../../packages/contexts/qmrsdashboard/pendingqmrsreview.service.ts","../../../node_modules/scheduler/index.js","../../../node_modules/src/constants.ts","../../../packages/ui/shared/typography.tsx","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/dom-helpers/esm/addEventListener.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/lodash/_equalObjects.js","../../../node_modules/uuid/v1.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/define-built-in.js","../../../node_modules/shallowequal/index.js","../../../node_modules/react-multi-date-picker/build/index.js","../../../node_modules/react-native-web/dist/modules/useElementLayout/index.js","../../../node_modules/core-js/internals/get-method.js","../../../node_modules/react-query/es/core/retryer.js","../../../node_modules/react-scrollspy/lib/scrollspy.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/react-native-web/dist/cjs/modules/unitlessNumbers/index.js","../../../node_modules/src/transaction.ts","services/asset-uploads.service.ts","../../../packages/core/push-notifications/push-notifications.abstract-service.ts","../../../node_modules/firebase/app/index.ts","services/singletons.ts","../../../packages/contexts/accounts/accounts.service.ts","../../../packages/contexts/comments/comments.service.ts","../../../packages/contexts/cvt/cvt.service.ts","../../../packages/contexts/dashboard/dashboard.service.ts","vin-sessions/context/docs-session.service.ts","../../../packages/contexts/entities/entities.service.ts","../../../packages/contexts/feedback/feedback-admin.service.ts","../../../packages/contexts/feedback/feedback.service.ts","../../../packages/contexts/locations/locations.service.ts","services/push-notifications.service.ts","../../../packages/contexts/techline/techline.service.ts","../../../packages/contexts/toughbook-attachments/toughbook-attachments.service.ts","vin-sessions/context/vin-session.service.ts","../../../node_modules/core-js/internals/task.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/dom-helpers/esm/contains.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/object-is/polyfill.js","../../../node_modules/react-bootstrap/esm/CloseButton.js","../../../node_modules/uuid/lib/rng-browser.js","../../../node_modules/react-native-web/dist/exports/findNodeHandle/index.js","../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../packages/models/api/account.ts","../../../packages/models/api/comment.ts","../../../packages/models/api/feedback.ts","../../../packages/models/api/notification.ts","../../../packages/models/api/qmr.ts","../../../node_modules/react-native-web/dist/modules/usePlatformMethods/index.js","../../../node_modules/ts-action/esm5/action.js","../../../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../../../node_modules/styled-components/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../../node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../../../node_modules/styled-components/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../../../node_modules/styled-components/src/constants.js","../../../node_modules/styled-components/src/sheet/Tag.js","../../../node_modules/styled-components/src/sheet/GroupedTag.js","../../../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../../../node_modules/styled-components/src/sheet/Sheet.js","../../../node_modules/styled-components/src/utils/isStaticRules.js","../../../node_modules/styled-components/src/models/ComponentStyle.js","../../../node_modules/styled-components/src/models/StyledComponent.js","../../../node_modules/dom-helpers/esm/addClass.js","../../../node_modules/postcss-value-parser/lib/parse.js","../../../node_modules/has-symbols/index.js","../../../node_modules/@firebase/logger/src/logger.ts","../../../node_modules/@firebase/app/src/platformLoggerService.ts","../../../node_modules/@firebase/app/src/logger.ts","../../../node_modules/@firebase/app/src/constants.ts","../../../node_modules/@firebase/app/src/internal.ts","../../../node_modules/@firebase/app/src/errors.ts","../../../node_modules/@firebase/app/src/firebaseApp.ts","../../../node_modules/@firebase/app/src/api.ts","../../../node_modules/@firebase/app/src/indexeddb.ts","../../../node_modules/@firebase/app/src/heartbeatService.ts","../../../node_modules/@firebase/app/src/registerCoreComponents.ts","../../../node_modules/@firebase/app/src/index.ts","../../../node_modules/react-native-web/dist/cjs/modules/usePlatformMethods/index.js","../../../node_modules/react-native-web/dist/cjs/modules/useResponderEvents/createResponderEvent.js","../../../node_modules/core-js/internals/function-uncurry-this-clause.js","../../../node_modules/react-native-web/dist/vendor/react-native/TouchHistoryMath/index.js","../../../node_modules/react-native-web/dist/vendor/react-native/PanResponder/index.js","../../../node_modules/react-native-web/dist/exports/PanResponder/index.js","../../../node_modules/react-tiny-popover/src/PopoverPortal.tsx","../../../node_modules/react-bootstrap/esm/divWithClassName.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/index.js","../../../node_modules/call-bind-apply-helpers/index.js","../../../node_modules/react-tiny-popover/src/Popover.tsx","../../../node_modules/es-errors/uri.js","../../../packages/contexts/auth/auth.context.tsx","../../../node_modules/define-data-property/index.js","../../../node_modules/fast-deep-equal/index.js","../../../node_modules/react-native-web/dist/exports/Modal/ModalPortal.js","../../../node_modules/react-native-web/dist/exports/Modal/ModalAnimation.js","../../../node_modules/react-native-web/dist/exports/Modal/ModalContent.js","../../../node_modules/react-native-web/dist/exports/Modal/ModalFocusTrap.js","../../../node_modules/react-native-web/dist/exports/Modal/index.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/@notifee/react-native/src/validators/validateAndroidInput.ts","../../../node_modules/@sentry/src/supports.ts","../../../node_modules/react-native-web/dist/modules/ScrollResponder/index.js","../../../node_modules/react-native-web/dist/exports/ScrollView/ScrollViewBase.js","../../../node_modules/react-native-web/dist/exports/ScrollView/index.js","../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../node_modules/lodash/_hashClear.js","../../../packages/contexts/synonyms/synonyms.state.ts","../../../packages/contexts/synonyms/synonyms.context.tsx","../../../packages/contexts/synonyms/synonyms.hooks.ts","../../../packages/contexts/synonyms/synonyms.service.ts","../../../node_modules/@notifee/react-native/src/utils/id.ts","../../../node_modules/react-native-web/dist/cjs/modules/createDOMProps/index.js","../../../packages/ui/node_modules/scheduler/index.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/react-bootstrap/esm/ToastContext.js","../../../node_modules/react-bootstrap/esm/ToastHeader.js","../../../node_modules/react-bootstrap/esm/ToastBody.js","../../../node_modules/react-bootstrap/esm/Toast.js","../../../node_modules/inline-style-prefixer/lib/plugins/cursor.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/react-native-web/dist/modules/usePressEvents/PressResponder.js","../../../node_modules/react-native-web/dist/modules/usePressEvents/index.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/function-bind-native.js","../../../node_modules/react-scrollspy/lib/throttle.js","../../../node_modules/react-native-web/dist/cjs/modules/forwardedProps/index.js","../../../packages/ui/node_modules/react-native-vector-icons/dist/lib/create-icon-source-cache.js","../../../node_modules/create-react-class/factory.js","../../../node_modules/core-js/modules/esnext.symbol.pattern-match.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/@restart/hooks/esm/useCommittedRef.js","../../../node_modules/@restart/hooks/esm/useEventCallback.js","../../../node_modules/prop-types-extra/lib/all.js","../../../node_modules/react-native-web/dist/vendor/react-native/emitter/_EventSubscription.js","../../../node_modules/react-native-web/dist/vendor/react-native/emitter/_EmitterSubscription.js","../../../node_modules/react-native-web/dist/vendor/react-native/emitter/_EventSubscriptionVendor.js","../../../node_modules/react-native-web/dist/vendor/react-native/emitter/_EventEmitter.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/gopd/index.js","../../../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../../../node_modules/color/node_modules/color-convert/route.js","../../../node_modules/dom-helpers/esm/matches.js","../../../node_modules/@restart/hooks/esm/useGlobalListener.js","../../../node_modules/@restart/hooks/esm/useEventListener.js","../../../node_modules/react-overlays/esm/Dropdown.js","../../../node_modules/react-bootstrap/esm/DropdownItem.js","../../../node_modules/react-bootstrap/esm/Dropdown.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../../../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../../../node_modules/react-router/lib/context.ts","../../../node_modules/react-router/lib/hooks.tsx","../../../node_modules/react-router/lib/components.tsx","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/plotly.js-basic-dist-min/plotly-basic.min.js","../../../node_modules/react-native-web/dist/vendor/react-native/emitter/EventEmitter.js","../../../node_modules/react-native-web/dist/vendor/react-native/NativeEventEmitter/RCTDeviceEventEmitter.js","../../../node_modules/react-native-web/dist/cjs/exports/ScrollView/index.js","../../../node_modules/react-native-web/dist/exports/Text/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react-bootstrap/esm/createChainedFunction.js","../../../node_modules/lodash/_MapCache.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../../../node_modules/@sentry/src/version.ts","../../../node_modules/@sentry/src/integrations/inboundfilters.ts","../../../node_modules/@sentry/src/integrations/functiontostring.ts","../../../node_modules/@sentry/src/polyfill.ts","../../../node_modules/@sentry/src/error.ts","../../../node_modules/@sentry/src/dsn.ts","../../../node_modules/@sentry/src/normalize.ts","../../../node_modules/@sentry/src/memo.ts","../../../node_modules/@sentry/src/integration.ts","../../../node_modules/@sentry/src/baseclient.ts","../../../node_modules/@sentry/src/api.ts","../../../node_modules/@sentry/src/envelope.ts","../../../node_modules/@sentry/src/request.ts","../../../node_modules/@sentry/src/transports/noop.ts","../../../node_modules/@sentry/src/severity.ts","../../../node_modules/@sentry/src/basebackend.ts","../../../node_modules/src/stack-parsers.ts","../../../node_modules/src/eventbuilder.ts","../../../node_modules/@sentry/src/promisebuffer.ts","../../../node_modules/@sentry/src/ratelimit.ts","../../../node_modules/@sentry/src/status.ts","../../../node_modules/@sentry/src/transports/base.ts","../../../node_modules/src/transports/utils.ts","../../../node_modules/@sentry/src/async.ts","../../../node_modules/src/transports/base.ts","../../../node_modules/@sentry/src/clientreport.ts","../../../node_modules/src/transports/fetch.ts","../../../node_modules/src/transports/xhr.ts","../../../node_modules/src/backend.ts","../../../node_modules/src/transports/new-fetch.ts","../../../node_modules/src/transports/new-xhr.ts","../../../node_modules/src/helpers.ts","../../../node_modules/@sentry/src/enums.ts","../../../node_modules/src/integrations/breadcrumbs.ts","../../../node_modules/src/client.ts","../../../node_modules/src/integrations/trycatch.ts","../../../node_modules/src/integrations/globalhandlers.ts","../../../node_modules/src/integrations/linkederrors.ts","../../../node_modules/src/integrations/dedupe.ts","../../../node_modules/src/integrations/useragent.ts","../../../node_modules/src/sdk.ts","../../../node_modules/@sentry/src/sdk.ts","../../../node_modules/@sentry/src/tracing.ts","../../../node_modules/src/browser/backgroundtab.ts","../../../node_modules/src/browser/web-vitals/lib/bindReporter.ts","../../../node_modules/src/browser/web-vitals/lib/initMetric.ts","../../../node_modules/src/browser/web-vitals/lib/generateUniqueID.ts","../../../node_modules/src/browser/web-vitals/lib/observe.ts","../../../node_modules/src/browser/web-vitals/lib/onHidden.ts","../../../node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../../../node_modules/src/browser/web-vitals/getLCP.ts","../../../node_modules/src/browser/metrics.ts","../../../node_modules/src/browser/web-vitals/getCLS.ts","../../../node_modules/src/browser/web-vitals/getFID.ts","../../../node_modules/src/browser/request.ts","../../../node_modules/src/browser/router.ts","../../../node_modules/src/browser/browsertracing.ts","../../../node_modules/src/index.ts","../../../packages/contexts/techline/techline.state.ts","../../../packages/contexts/techline/techline.context.tsx","../../../packages/contexts/dashboard/dashboard.state.ts","../../../packages/contexts/dashboard/dashboard.context.tsx","vin-sessions/context/vin-session.actionTypes.ts","vin-sessions/context/vin-sessions.state.ts","vin-sessions/context/vin-sessions.context.tsx","vin-sessions/components/stis-publications/context/publications.state.ts","vin-sessions/types/index.ts","vin-sessions/components/stis-publications/context/publications.context.tsx","../../../packages/contexts/shared-context-providers.tsx","utils/i18n.ts","utils/scroll-into-view.ts","config/constants.ts","utils/date-format.ts","utils/utils.ts","jss/theme/sc-button.ts","jss/theme/sc-card.ts","jss/theme/sc-dropdown.ts","jss/theme/sc-form.ts","jss/theme/sc-modal.ts","jss/global.ts","../../../node_modules/react-bootstrap/esm/Container.js","../../../node_modules/react-bootstrap/esm/TabContext.js","../../../node_modules/react-bootstrap/esm/AbstractNav.js","../../../node_modules/react-bootstrap/esm/NavItem.js","../../../node_modules/react-bootstrap/esm/AbstractNavItem.js","../../../node_modules/react-bootstrap/esm/NavLink.js","../../../node_modules/react-bootstrap/esm/Nav.js","../../../node_modules/react-bootstrap/esm/TabContainer.js","../../../node_modules/react-bootstrap/esm/TabContent.js","../../../node_modules/react-bootstrap/esm/TabPane.js","../../../node_modules/react-bootstrap/esm/ElementChildren.js","../../../node_modules/react-bootstrap/esm/Tabs.js","../../../node_modules/react-bootstrap/esm/Tab.js","components/debugger.tsx","components/action-dropdown.tsx","core/hooks/use-content-overlay.tsx","core/hooks/use-push-notifications.tsx","core/hooks/use-query.ts","core/hooks/use-summaries.tsx","core/hooks/use-permission.ts","components/notifications-panel.tsx","../../../packages/ui/assets/images/techshare-logo-white.svg","../../../node_modules/react-bootstrap/esm/Table.js","components/account-settings-notifications.tsx","components/account-settings-modal.tsx","../../../node_modules/react-bootstrap/esm/InputGroup.js","vin-sessions/context/vin-sessions.hooks.ts","vin-sessions/utils/vinSessionUtils.tsx","components/skeleton-loader/skeleton-loader.tsx","vin-sessions/assets/placeholder_car_image.svg","vin-sessions/components/vin-details.tsx","vin-sessions/components/toast-success.tsx","vin-sessions/components/vin-session-modal.tsx","vin-sessions/components/vin-session-button.tsx","vin-sessions/components/vin-filter-button.tsx","vin-sessions/components/render-menu.tsx","vin-sessions/components/vin-session-header.tsx","utils/is-dev-environment.ts","components/header.tsx","../../../node_modules/react-bootstrap/esm/Badge.js","components/navigation-item-hover-title.tsx","../../../packages/models/api/cvt.ts","cvt/hook/useCvtData.ts","components/navigation.tsx","components/private-route.tsx","../../../packages/ui/assets/images/techshare-logo.svg","../../../node_modules/react-bootstrap/esm/NavbarBrand.js","../../../node_modules/react-bootstrap/esm/NavbarCollapse.js","../../../node_modules/react-bootstrap/esm/NavbarToggle.js","../../../node_modules/react-bootstrap/esm/Navbar.js","views/utils.ts","views/techshareLandingPage/header-landing-page.tsx","views/techshareLandingPage/card.tsx","views/techshareLandingPage/main-page.tsx","vin-sessions/components/stis-publications/publication-type-icons.tsx","vin-sessions/components/stis-publications/stis-filter-panel.tsx","../../../node_modules/react-bootstrap/esm/PopoverTitle.js","../../../node_modules/react-bootstrap/esm/PopoverContent.js","../../../node_modules/react-bootstrap/esm/Popover.js","../../../node_modules/react-overlays/esm/Overlay.js","../../../node_modules/react-bootstrap/esm/Overlay.js","vin-sessions/components/stis-publications/document-preview-modal.tsx","vin-sessions/components/docs/hover-modal.tsx","../../../node_modules/react-bootstrap/esm/OverlayTrigger.js","../../../node_modules/react-bootstrap/esm/Tooltip.js","vin-sessions/components/stis-publications/context/publications.hooks.tsx","vin-sessions/components/stis-publications/stis-table.tsx","vin-sessions/components/docs/docs-pagination.tsx","vin-sessions/components/stis-publications/stis-publications.tsx","views/techshareLandingPage/main-content.tsx","views/techshareLandingPage/footer.tsx","views/auth-loading.tsx","../../../packages/ui/feedback/feedback-form-elements.tsx","../../../packages/ui/feedback/base-feedback-form-element.tsx","feedback/components/feedback-form-element.tsx","feedback/components/feedback-detail-side-panel.tsx","feedback/components/feedback-request-message.tsx","feedback/components/request-feedback-modal.tsx","feedback/components/send-feedback-modal.tsx","components/detail-view/detail-view-aside.tsx","components/detail-view/detail-view-body.tsx","components/detail-view/detail-view-content.tsx","components/detail-view/detail-view-header.tsx","components/detail-view/detail-view.tsx","components/loader.tsx","components/render-json.tsx","components/error-display.tsx","components/async-page.tsx","feedback/views/feedback-detail.tsx","assets/404.svg","views/no-match.tsx","qmr/components/qmr-table/qmr-table-head.tsx","qmr/components/qmr-table/qmr-table-row.tsx","components/recent-search-typeahead.tsx","components/possible-vehicle-card.tsx","components/retailer-search-results.tsx","components/retailer-search-input.tsx","components/select-qmr-primary-objectives.tsx","components/create-qmr-modal.tsx","qmr/components/qmr-quick-filters-panel.tsx","qmr/components/qmr-search.tsx","views/qmrs.tsx","qmr/components/qmr-feedback-modal.tsx","qmr/components/open-info-request-modal.tsx","utils/popover-content-location.ts","qmr/components/qmr-actions-dropdown.tsx","qmr/components/qmr-actions.tsx","qmr/components/qmr-header.tsx","qmr/components/qmr-report-sections.tsx","../../../packages/ui/qmr/fail-code-details.tsx","../../../packages/ui/qmr/qmr-activity-segment.tsx","../../../packages/ui/qmr/qmr-asset-list-item.tsx","../../../packages/ui/qmr/qmr-comment.tsx","../../../packages/ui/qmr/qmr-comments-list.tsx","../../../packages/ui/shared/info-card/card.tsx","../../../packages/ui/shared/info-card/web-wrapper.tsx","../../../packages/ui/shared/info-card/mobile-wrraper.tsx","../../../packages/ui/shared/info-card/wrapper.tsx","../../../packages/ui/shared/info-card/index.tsx","../../../packages/ui/utils/qmr.util.ts","../../../packages/ui/qmr/qmr-details-segment.tsx","../../../packages/ui/qmr/qmr-list-item.tsx","../../../packages/ui/qmr/popups/additional-info.popup.tsx","../../../packages/ui/qmr/popups/cause-info.popup.tsx","../../../packages/ui/qmr/popups/concern-info.popup.tsx","../../../packages/ui/qmr/popups/correction-info.popup.tsx","../../../packages/ui/qmr/popups/part-requests-closed.popup.tsx","../../../packages/ui/qmr/popups/part-requests-confirm-close.popup.tsx","../../../packages/ui/qmr/popups/part-requests-confirm-open.popup.tsx","../../../packages/ui/qmr/popups/part-requests-open.popup.tsx","../../../packages/ui/qmr/popups/urfca-info.popup.tsx","../../../packages/ui/qmr/qmr-part-requests-segment.tsx","qmr/components/confirm-delete-comment-modal.tsx","qmr/components/qmr-comments.tsx","qmr/components/qmr-info-requests.tsx","components/avatar.tsx","components/edit-retailer-modal.tsx","../../../node_modules/luxon/src/errors.js","../../../node_modules/luxon/src/impl/formats.js","../../../node_modules/luxon/src/zone.js","../../../node_modules/luxon/src/zones/systemZone.js","../../../node_modules/luxon/src/zones/IANAZone.js","../../../node_modules/luxon/src/impl/locale.js","../../../node_modules/luxon/src/impl/english.js","../../../node_modules/luxon/src/zones/fixedOffsetZone.js","../../../node_modules/luxon/src/zones/invalidZone.js","../../../node_modules/luxon/src/impl/zoneUtil.js","../../../node_modules/luxon/src/impl/util.js","../../../node_modules/luxon/src/settings.js","../../../node_modules/luxon/src/impl/formatter.js","../../../node_modules/luxon/src/impl/invalid.js","../../../node_modules/luxon/src/impl/regexParser.js","../../../node_modules/luxon/src/duration.js","../../../node_modules/luxon/src/interval.js","../../../node_modules/luxon/src/info.js","../../../node_modules/luxon/src/impl/diff.js","../../../node_modules/luxon/src/impl/digits.js","../../../node_modules/luxon/src/impl/tokenParser.js","../../../node_modules/luxon/src/impl/conversions.js","../../../node_modules/luxon/src/datetime.js","../../../node_modules/luxon/src/luxon.js","qmr/components/qmr-layout.tsx","components/edit-vehicle-modal.tsx","qmr/components/vehicle-information-draft.tsx","qmr/components/vehicle-information-submitted.tsx","../../../node_modules/file-selector/node_modules/tslib/tslib.es6.mjs","../../../node_modules/file-selector/src/file.ts","../../../node_modules/file-selector/src/file-selector.ts","../../../node_modules/react-dropzone/dist/es/utils/index.js","../../../node_modules/react-dropzone/dist/es/index.js","../../../node_modules/photoeditorsdk/esm/production/index.js","components/loader-button.tsx","qmr/components/confirm-delete-asset-modal.tsx","qmr/components/asset-editor-modal.tsx","qmr/components/attachments.tsx","qmr/components/confirm-injury-ewd-modal.tsx","qmr/components/confirm-death-ewd-modal.tsx","qmr/components/early-warning-detection-draft.tsx","../../../node_modules/date-fns/getDefaultOptions.js","../../../node_modules/date-fns/transpose.js","../../../node_modules/date-fns/parse/_lib/Setter.js","../../../node_modules/date-fns/parse/_lib/Parser.js","../../../node_modules/date-fns/parse/_lib/constants.js","../../../node_modules/date-fns/parse/_lib/utils.js","../../../node_modules/date-fns/setWeek.js","../../../node_modules/date-fns/setISOWeek.js","../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js","../../../node_modules/date-fns/addDays.js","../../../node_modules/date-fns/setDay.js","../../../node_modules/date-fns/getISODay.js","../../../node_modules/date-fns/setISODay.js","../../../node_modules/date-fns/parse/_lib/parsers.js","../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js","../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js","../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","../../../node_modules/date-fns/parse.js","qmr/components/repair-order-details-draft.tsx","qmr/components/concern-draft.tsx","qmr/components/concern-submitted.tsx","qmr/components/cause-draft.tsx","qmr/components/cause-submitted.tsx","../../../node_modules/date-fns/isBefore.js","qmr/components/correction-draft.tsx","qmr/components/correction-submitted.tsx","qmr/components/dtc-codes-submitted.tsx","qmr/components/dtc-codes-draft.tsx","qmr/components/fail-code-start-modal.tsx","qmr/components/fail-code-lookup-by-section.tsx","qmr/components/grid.tsx","qmr/components/fail-code-lookup-electrical-grid.tsx","qmr/components/fail-code-search.tsx","qmr/components/fail-code-part-search.tsx","qmr/components/fail-code-no-trouble-found.tsx","../../../node_modules/react-bootstrap/esm/AccordionContext.js","../../../node_modules/react-bootstrap/esm/AccordionToggle.js","../../../node_modules/react-bootstrap/esm/AccordionCollapse.js","../../../node_modules/react-bootstrap/esm/Accordion.js","qmr/components/fail-code-view-matching.tsx","qmr/components/fail-code-accident-investigation.tsx","qmr/components/fail-codes-container-modal.tsx","qmr/components/fail-code-report-section.tsx","qmr/components/additional-information.tsx","qmr/components/qmr-not-found.tsx","qmr/components/qmr-outcome.tsx","qmr/components/primary-objective.tsx","qmr/views/qmr-detail.tsx","qmr/components/qmrs-dashboard/qmrs-dashboard-banner.tsx","qmr/components/qmrs-dashboard/qmrs-dashboard-helpfullinks.tsx","qmr/components/qmrs-dashboard/qmrs-dashboard-pending-review-list.tsx","../../../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/stylis/src/Utility.js","../../../node_modules/stylis/src/Tokenizer.js","../../../node_modules/stylis/src/Enum.js","../../../node_modules/stylis/src/Serializer.js","../../../node_modules/stylis/src/Parser.js","../../../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/stylis/src/Middleware.js","../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../../../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../../../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../../node_modules/react-select/node_modules/memoize-one/dist/memoize-one.esm.js","../../../node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../node_modules/react-select/dist/react-select.esm.js","qmr/components/qmrs-dashboard/qmrs-dashboard-district-stats.tsx","../../../packages/ui/assets/images/OpenInNew.svg","qmr/components/qmrs-dashboard/qmrs-update-cards.tsx","qmr/views/qmrs-dashboard.tsx","utils/url-utils.ts","qmr/components/query-builder/utils/index.ts","qmr/components/query-builder/components/query-condition-group.tsx","qmr/components/query-builder/components/remove-button.tsx","qmr/components/query-builder/components/query-condition.tsx","qmr/components/query-builder/query-builder.tsx","qmr/components/advanced-search-modal.tsx","qmr/views/advanced-search.tsx","../../../node_modules/react-bootstrap/esm/DropdownButton.js","qmr/components/advanced-search-panel.tsx","qmr/views/advanced-search-results.tsx","qmr/components/advanced-search-delete-modal.tsx","qmr/views/advanced-search-saved.tsx","views/reports.tsx","techline/components/worksheet/hooks/useUserDetailsOrPermissions.ts","techline/views/techline-open.tsx","techline/components/techline-header.tsx","techline/components/techline.sidenav.tsx","techline/components/vehicleInfo.tsx","techline/components/case-details.inputs.tsx","techline/components/worksheets.inputs.tsx","techline/components/dtcs.inputs.tsx","techline/components/fail-code-start-modal-techline.tsx","techline/components/techline-fail-code-lookup-by-section.tsx","techline/components/techline-fail-code-search.tsx","techline/components/techline-fail-code-part-search.tsx","techline/components/grid.tsx","techline/components/techline-fail-code-lookup-electrical-grid.tsx","techline/components/techline-fail-code-no-trouble-found.tsx","techline/components/fail-codes-modal.tsx","techline/components/fail-code.inputs.tsx","techline/components/techline-asset-editor-modal.tsx","techline/components/confirm-delete-asset-modal.tsx","techline/components/attachments.tsx","techline/components/comments.tsx","techline/components/case-details.tsx","techline/components/worksheet/toaster.tsx","techline/components/worksheet/hooks/useCaseType.ts","techline/components/create-case-modal.tsx","techline/components/techline-quick-filters.tsx","techline/components/dtcs.details.tsx","techline/components/resolution.tsx","techline/views/all-cases.tsx","../../../node_modules/date-fns/compareDesc.js","administration/views/worksheets/components/selectPopover.tsx","administration/views/worksheets/components/worksheet-modal.tsx","techline/components/worksheet/worksheet-add.tsx","techline/components/worksheet/utils/util.ts","techline/components/worksheet/hooks/useWorksheetAnswerValidation.ts","techline/components/worksheet/hooks/useWorksheetMange.ts","techline/components/worksheet/worksheet-report.tsx","../../../node_modules/react-select/dist/useAsync-c64f5536.esm.js","../../../node_modules/react-select/async/dist/react-select-async.esm.js","techline/components/case-team.tsx","techline/components/case-team-on-details.tsx","techline/views/open.tsx","../../../node_modules/date-fns/isEqual.js","techline/views/draft.tsx","techline/components/dashboard/data-card.tsx","techline/components/dashboard/case-table.tsx","techline/components/dashboard/filters.tsx","../../../node_modules/date-fns/endOfWeek.js","../../../node_modules/date-fns/startOfMonth.js","../../../node_modules/date-fns/endOfMonth.js","techline/components/dashboard/search-retailer.tsx","techline/components/dashboard/status-tab.tsx","techline/views/dashboard.tsx","../../../packages/contexts/techline/techline.hooks.tsx","techline/views/techline-details.tsx","components/menu-table.tsx","../../../packages/contexts/dashboard/dashboard.hooks.tsx","views/overview.tsx","views/qmr-csv-export.tsx","components/terms-and-conditions-modal.tsx","views/termsAndConditions.ts","views/user-onboarding.tsx","investigations/components/investigations-quick-filters-panel.tsx","investigations/views/investigations.tsx","investigations/components/confirm-delete-comment-modal.tsx","investigations/components/investigation-comments-tab.tsx","investigations/components/investigation-details-tab.tsx","investigations/components/investigation-meeting-tab.tsx","investigations/components/investigation-modal.tsx","investigations/components/meeting-note-form.tsx","investigations/components/meeting-note.tsx","investigations/components/investigation-detail-panel.tsx","investigations/views/investigation-details.tsx","views/settings.tsx","userarticles/context/shared-category-context-providers.tsx","userarticles/user-articles.tsx","components/email-notifications-modal.tsx","escalations/components/escalation-modal.tsx","escalations/components/tr-reply-form.tsx","escalations/components/tr-reply.tsx","escalations/components/escalations-quick-filters-panel.tsx","escalations/views/escalations.tsx","administration/components/worksheet/hooks/useTranslationData.ts","administration/components/worksheet/inputPickers/InputPickerWrapper.tsx","administration/components/worksheet/inputPickers/util.ts","administration/components/worksheet/inputPickers/TimePicker/TimeComponent.tsx","administration/components/worksheet/inputPickers/TimePicker/index.tsx","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/get-user-locale/dist/esm/index.js","../../../node_modules/@wojtekmaj/date-utils/dist/esm/index.js","../../../node_modules/react-calendar/dist/esm/shared/const.js","../../../node_modules/react-calendar/dist/esm/shared/dateFormatter.js","../../../node_modules/react-calendar/dist/esm/shared/dates.js","../../../node_modules/react-calendar/dist/esm/Calendar/Navigation.js","../../../node_modules/react-calendar/dist/esm/Flex.js","../../../node_modules/react-calendar/dist/esm/shared/utils.js","../../../node_modules/react-calendar/dist/esm/TileGroup.js","../../../node_modules/react-calendar/dist/esm/Tile.js","../../../node_modules/react-calendar/dist/esm/CenturyView/Decade.js","../../../node_modules/react-calendar/dist/esm/CenturyView/Decades.js","../../../node_modules/react-calendar/dist/esm/shared/propTypes.js","../../../node_modules/react-calendar/dist/esm/CenturyView.js","../../../node_modules/react-calendar/dist/esm/DecadeView/Year.js","../../../node_modules/react-calendar/dist/esm/DecadeView/Years.js","../../../node_modules/react-calendar/dist/esm/DecadeView.js","../../../node_modules/react-calendar/dist/esm/YearView/Month.js","../../../node_modules/react-calendar/dist/esm/YearView/Months.js","../../../node_modules/react-calendar/dist/esm/YearView.js","../../../node_modules/react-calendar/dist/esm/MonthView/Day.js","../../../node_modules/react-calendar/dist/esm/MonthView/Days.js","../../../node_modules/react-calendar/dist/esm/MonthView/Weekdays.js","../../../node_modules/react-calendar/dist/esm/MonthView/WeekNumber.js","../../../node_modules/react-calendar/dist/esm/MonthView/WeekNumbers.js","../../../node_modules/react-calendar/dist/esm/MonthView.js","../../../node_modules/react-calendar/dist/esm/Calendar.js","../../../node_modules/react-calendar/dist/esm/index.js","administration/components/worksheet/inputPickers/DatePicker.tsx","administration/components/worksheet/inputPickers/DateTimePicker.tsx","administration/components/worksheet/inputPickers/InputPickers.tsx","administration/components/worksheet/inputPickers/input-picker-helper.tsx","administration/views/worksheets/utils.ts","assets/icon-handle.svg","../../../packages/contexts/form-element-modal/form-element-modal.state.ts","../../../packages/contexts/form-element-modal/form-element-modal.context.tsx","../../../packages/contexts/form-element-modal/form-element-modal.hooks.tsx","administration/components/worksheet/form-component.tsx","../../../node_modules/redux/es/redux.js","../../../node_modules/react-redux/es/components/Context.js","../../../node_modules/react-redux/es/utils/batch.js","../../../node_modules/react-redux/es/utils/Subscription.js","../../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../../../node_modules/react-redux/es/components/Provider.js","../../../node_modules/react-redux/es/components/connectAdvanced.js","../../../node_modules/react-redux/es/utils/shallowEqual.js","../../../node_modules/react-redux/es/connect/wrapMapToProps.js","../../../node_modules/react-redux/es/connect/mapDispatchToProps.js","../../../node_modules/react-redux/es/utils/bindActionCreators.js","../../../node_modules/react-redux/es/connect/mapStateToProps.js","../../../node_modules/react-redux/es/connect/mergeProps.js","../../../node_modules/react-redux/es/connect/selectorFactory.js","../../../node_modules/react-redux/es/connect/connect.js","../../../node_modules/react-redux/es/hooks/useSelector.js","../../../node_modules/use-memo-one/dist/use-memo-one.esm.js","../../../node_modules/react-redux/es/index.js","../../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../../../node_modules/css-box-model/dist/css-box-model.esm.js","../../../node_modules/memoize-one/dist/memoize-one.esm.js","../../../node_modules/raf-schd/dist/raf-schd.esm.js","../../../node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","../../../packages/ui/worksheet/conditional-options.tsx","../../../packages/ui/worksheet/useValidation.tsx","../../../packages/ui/worksheet/useAnswerHandle.ts","../../../packages/ui/worksheet/AssetEditorModal.tsx","../../../packages/ui/worksheet/worksheet-form-elements.tsx","administration/components/worksheet/Linkify.tsx","../../../packages/ui/worksheet/worksheet-form-element-label.tsx","../../../packages/ui/worksheet/base-worksheet-form-element.tsx","administration/views/worksheets/components/worksheet-form-element.tsx","administration/views/worksheets/components/utils.ts","administration/views/worksheets/utils/worksheet-assets.ts","administration/views/worksheets/utils/worksheet-form.ts","techline/components/worksheet/utils/assets.utils.ts","techline/components/worksheet/hooks/useWorksheetSubmissionData.ts","techline/components/worksheet/worksheet-answer.tsx","bmis/components/bmis-battery-badge.tsx","../../../packages/ui/bmis/bmis-aside-details.tsx","bmis/components/bmis-aside-content.tsx","components/printable-container/printable-container.tsx","components/printable-container/use-print.tsx","bmis/components/bmis-pdf/pdf-header.tsx","bmis/components/bmis-pdf/pdf-body.tsx","bmis/components/bmis-pdf/index.tsx","bmis/components/bmis-header.tsx","bmis/components/bmis-report-sections.tsx","bmis/components/bmis-layout.tsx","bmis/views/bmis-detail.tsx","bmis/views/bmis-list.tsx","bmis/bmis-router.tsx","administration/components/fail-code-teams-csv-export.tsx","vin-sessions/components/docs/docs-search-results.tsx","vin-sessions/components/docs/docs-filter-panel.tsx","vin-sessions/components/docs/docs-table.tsx","vin-sessions/components/docs-query-search.tsx","vin-sessions/components/vin-session-dropdown.tsx","vin-sessions/components/vin-session-banner.tsx","components/data-card/data-card-header.tsx","components/data-card/data-card-body.tsx","components/data-card/data-card-footer.tsx","components/data-card/data-card-empty-state.tsx","components/data-card/data-card.tsx","bmis/components/bmis-summary-card.tsx","vin-sessions/components/qmr-reports.tsx","vin-sessions/components/reference-card.tsx","vin-sessions/components/quick-references.tsx","vin-sessions/views/vin-session-dashboard.tsx","administration/components/admin-hub/data-card.tsx","administration/components/admin-hub/admin-hub-section.tsx","administration/views/admin-hub.tsx","content-settings/content-settings-main-wrapper.tsx","content-settings/components/content-settings-layout.tsx","content-settings/components/common/content-card.tsx","content-settings/components/common/generic-content-modal.tsx","content-settings/components/common/section-header.tsx","content-settings/components/common/generic-content.tsx","../../../node_modules/react-transition-group/esm/CSSTransition.js","components/toast-notification.tsx","content-settings/content-settings-main-qmrs-dashboard.tsx","content-settings/content-settings-techline.tsx","content-settings/content-settings-techshare.tsx","administration/components/bulk-user-enable-button.tsx","administration/components/chip.tsx","administration/components/form-edit-select-list.tsx","administration/components/form-component-edit-modal.tsx","administration/components/form-component.tsx","administration/components/form-edit-likert-long-text.tsx","administration/components/form-edit-likert.tsx","administration/components/form-edit-text-input.tsx","administration/components/form-edit-text-static.tsx","administration/components/form-element.tsx","administration/components/role-dropdown.tsx","administration/views/entity-detail.tsx","administration/views/entity-form.tsx","components/table-action-button/action-button.tsx","administration/components/add-fail-code-panel.tsx","administration/components/fail-codes-teams-head.tsx","components/table/fail-code-table-renderer.tsx","administration/components/fail-codes-teams-row.tsx","administration/components/fail-code-search-bar.tsx","administration/views/failCodeTeamsToaster/successToast.tsx","administration/components/failCodeTeams.hooks.ts","administration/views/fail-code-teams.tsx","administration/views/feedback-detail.tsx","administration/views/feedback-form-builder.tsx","administration/views/manage-entities.tsx","administration/views/manage-feedback.tsx","administration/views/manage-retailers.tsx","administration/components/manage-users-panel.tsx","administration/components/add-user-panel.tsx","administration/views/manage-users.tsx","administration/views/worksheets/types.ts","administration/views/worksheets/hooks/use-worksheet-form-translation.ts","administration/views/worksheets/hooks/use-worksheet-permission.ts","administration/views/worksheets/components/worksheets-table.tsx","administration/views/worksheets/hooks/use-filter.ts","administration/views/worksheets/components/SearchFilter.tsx","administration/views/worksheets/index.tsx","administration/views/retailer-detail.tsx","administration/views/retailer-form.tsx","components/tag-input.tsx","administration/components/synonyms/add-synonym-modal.tsx","administration/components/synonyms/delete-synonym-modal.tsx","components/pagination/index.tsx","administration/components/synonyms/edit-synonym-modal.tsx","administration/views/synonyms.tsx","administration/views/toughbook-attachments.tsx","administration/views/worksheets/components/worksheet-form-header.tsx","administration/views/worksheets/hooks/use-worksheet-data.ts","administration/views/worksheets/dto/create.worksheet.dto.ts","administration/views/worksheets/utils/refetch-assets.ts","administration/views/worksheets/worksheet-form/use-worksheet-form-detail.hooks.ts","administration/views/worksheets/components/worksheets-user.tsx","administration/views/worksheets/components/worksheet-form-right-sidebar.tsx","administration/views/worksheets/worksheet-detail/worksheet-detail.tsx","administration/components/worksheet/inputPickers/FilePicker.tsx","administration/components/worksheet/file-fields.tsx","administration/components/worksheet/form-edit-file.tsx","administration/components/worksheet/resizeable-textarea.tsx","administration/components/worksheet/hooks/useValidationField.ts","administration/components/worksheet/add-field.tsx","administration/components/worksheet/form-edit-date.tsx","administration/components/worksheet/form-edit-time.tsx","administration/components/worksheet/form-edit-dateTime.tsx","administration/components/worksheet/worksheet-form-component-edit-modal.tsx","administration/components/worksheet/form-edit-likert-long-text.tsx","administration/components/worksheet/form-edit-likert.tsx","administration/components/worksheet/form-edit-text-input.tsx","administration/components/worksheet/form-edit-text-static.tsx","administration/components/worksheet/form-quantity-menu-option.tsx","administration/components/worksheet/form-quantity-menu-item-list.tsx","administration/components/worksheet/form-edit-worksheet-select-list.tsx","administration/views/worksheets/hooks/use-worksheet-form.ts","administration/views/worksheets/components/worksheet-form-left-sidebar.tsx","administration/views/worksheets/worksheet-form/worksheets-form.tsx","vin-sessions/components/stis-publications/stis-publication-form-header.tsx","vin-sessions/components/stis-publications/hooks/use-translation-data.ts","vin-sessions/components/stis-publications/hooks/use-publication-form.ts","vin-sessions/components/stis-publications/hooks/use-publication-data.ts","vin-sessions/components/stis-publications/hooks/use-publication-form-detail.hooks.ts","vin-sessions/components/stis-publications/publication-detail-view-aside.tsx","vin-sessions/components/stis-publications/stis-publication-form-right-sidebar.tsx","vin-sessions/components/file-upload.tsx","vin-sessions/components/stis-publications/document-info.tsx","vin-sessions/components/stis-publications/associate-sections.tsx","vin-sessions/components/stis-publications/dtcc-typeahead.tsx","vin-sessions/components/stis-publications/document-search-metadata.tsx","vin-sessions/components/stis-publications/preview-description.tsx","vin-sessions/components/stis-publications/publication-modal.tsx","vin-sessions/components/stis-publications/hooks/use-prompt.ts","vin-sessions/components/stis-publications/stis-publication-form.tsx","administration/views/worksheets/worksheet-preview/worksheet-preview.tsx","administration/administration-router.tsx","../../../node_modules/react-toastify/src/style.css","../../../node_modules/react-toastify/src/utils/propValidator.ts","../../../node_modules/react-toastify/src/utils/cssTransition.tsx","../../../node_modules/react-toastify/src/utils/collapseToast.ts","../../../node_modules/react-toastify/src/utils/mapper.ts","../../../node_modules/react-toastify/src/components/ProgressBar.tsx","../../../node_modules/react-toastify/src/core/genToastId.ts","../../../node_modules/react-toastify/src/core/containerObserver.ts","../../../node_modules/react-toastify/src/core/store.ts","../../../node_modules/react-toastify/src/core/toast.ts","../../../node_modules/react-toastify/src/hooks/useToast.ts","../../../node_modules/react-toastify/src/hooks/useIsomorphicLayoutEffect.ts","../../../node_modules/react-toastify/src/components/Icons.tsx","../../../node_modules/react-toastify/src/components/Toast.tsx","../../../node_modules/react-toastify/src/components/CloseButton.tsx","../../../node_modules/react-toastify/src/components/Transitions.tsx","../../../node_modules/react-toastify/src/components/ToastContainer.tsx","../../../node_modules/react-toastify/src/hooks/useToastContainer.ts","../../../node_modules/react-bootstrap/esm/ProgressBar.js","cvt/components/cvt-report-graph.tsx","cvt/components/cvt-report-table.tsx","cvt/components/cvt-report-details.tsx","../../../node_modules/fflate/esm/browser.js","../../../node_modules/jspdf/src/libs/globalObject.js","../../../node_modules/jspdf/src/libs/console.js","../../../node_modules/jspdf/src/libs/FileSaver.js","../../../node_modules/jspdf/src/libs/AtobBtoa.js","../../../node_modules/jspdf/src/libs/rgbcolor.js","../../../node_modules/jspdf/src/libs/md5.js","../../../node_modules/jspdf/src/libs/rc4.js","../../../node_modules/jspdf/src/libs/pdfsecurity.js","../../../node_modules/jspdf/src/libs/pdfname.js","../../../node_modules/jspdf/src/jspdf.js","../../../node_modules/jspdf/src/modules/acroform.js","../../../node_modules/jspdf/src/libs/fontFace.js","../../../node_modules/jspdf/src/modules/addimage.js","../../../node_modules/jspdf/src/modules/annotations.js","../../../node_modules/jspdf/src/modules/arabic.js","../../../node_modules/jspdf/src/modules/autoprint.js","../../../node_modules/jspdf/src/modules/canvas.js","../../../node_modules/jspdf/src/modules/cell.js","../../../node_modules/jspdf/src/modules/javascript.js","../../../node_modules/jspdf/src/modules/context2d.js","../../../node_modules/jspdf/src/modules/filters.js","../../../node_modules/jspdf/src/modules/fileloading.js","../../../node_modules/jspdf/src/modules/html.js","../../../node_modules/jspdf/src/modules/outline.js","../../../node_modules/jspdf/src/modules/jpeg_support.js","../../../node_modules/jspdf/src/libs/png.js","../../../node_modules/jspdf/src/modules/split_text_to_size.js","../../../node_modules/jspdf/src/libs/omggif.js","../../../node_modules/jspdf/src/libs/JPEGEncoder.js","../../../node_modules/jspdf/src/libs/BMPDecoder.js","../../../node_modules/jspdf/src/libs/WebPDecoder.js","../../../node_modules/jspdf/src/modules/png_support.js","../../../node_modules/jspdf/src/modules/gif_support.js","../../../node_modules/jspdf/src/modules/bmp_support.js","../../../node_modules/jspdf/src/modules/webp_support.js","../../../node_modules/jspdf/src/modules/rgba_support.js","../../../node_modules/jspdf/src/modules/setlanguage.js","../../../node_modules/jspdf/src/modules/standard_fonts_metrics.js","../../../node_modules/jspdf/src/modules/ttfsupport.js","../../../node_modules/jspdf/src/modules/svg.js","../../../node_modules/jspdf/src/modules/total_pages.js","../../../node_modules/jspdf/src/modules/viewerpreferences.js","../../../node_modules/jspdf/src/modules/xmp_metadata.js","../../../node_modules/jspdf/src/modules/utf8.js","../../../node_modules/jspdf/src/modules/vfs.js","../../../node_modules/jspdf/src/libs/bidiEngine.js","../../../node_modules/jspdf/src/libs/ttffont.js","cvt/hook/useCvtReport.tsx","cvt/components/cvt-table.tsx","cvt/components/input-picker-helper.tsx","cvt/components/cvt-filters.tsx","cvt/components/file-upload-modal.tsx","cvt/views/cvt.tsx","cvt/components/cvt-left-aside.tsx","cvt/components/cvt-right-aside.tsx","core/navigation/app.navigator.tsx","techline/components/worksheet/hooks/useWorksheetSubmission.ts","techline/views/recent-searches.tsx","feedback/views/feedback-browser.tsx","escalations/views/escalation-detail.tsx","cvt/views/cvt-report.tsx","app.tsx","index.tsx"],"sourceRoot":"","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport canUseDOM from '../../../modules/canUseDom'; // $FlowFixMe: HTMLStyleElement is incorrectly typed - https://github.com/facebook/flow/issues/2696\n\nexport default function createCSSStyleSheet(id, rootNode, textContent) {\n if (canUseDOM) {\n var root = rootNode != null ? rootNode : document;\n var element = root.getElementById(id);\n\n if (element == null) {\n element = document.createElement('style');\n element.setAttribute('id', id);\n\n if (typeof textContent === 'string') {\n element.appendChild(document.createTextNode(textContent));\n }\n\n if (root instanceof ShadowRoot) {\n root.insertBefore(element, root.firstChild);\n } else {\n var head = root.head;\n\n if (head) {\n head.insertBefore(element, head.firstChild);\n }\n }\n } // $FlowFixMe: HTMLElement is incorrectly typed\n\n\n return element.sheet;\n } else {\n return null;\n }\n}","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar slice = Array.prototype.slice;\n/**\n * Order-based insertion of CSS.\n *\n * Each rule is associated with a numerically defined group.\n * Groups are ordered within the style sheet according to their number, with the\n * lowest first.\n *\n * Groups are implemented using marker rules. The selector of the first rule of\n * each group is used only to encode the group number for hydration. An\n * alternative implementation could rely on CSSMediaRule, allowing groups to be\n * treated as a sub-sheet, but the Edge implementation of CSSMediaRule is\n * broken.\n * https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule\n * https://gist.github.com/necolas/aa0c37846ad6bd3b05b727b959e82674\n */\n\nexport default function createOrderedCSSStyleSheet(sheet) {\n var groups = {};\n var selectors = {};\n /**\n * Hydrate approximate record from any existing rules in the sheet.\n */\n\n if (sheet != null) {\n var group;\n slice.call(sheet.cssRules).forEach((cssRule, i) => {\n var cssText = cssRule.cssText; // Create record of existing selectors and rules\n\n if (cssText.indexOf('stylesheet-group') > -1) {\n group = decodeGroupRule(cssRule);\n groups[group] = {\n start: i,\n rules: [cssText]\n };\n } else {\n var selectorText = getSelectorText(cssText);\n\n if (selectorText != null) {\n selectors[selectorText] = true;\n groups[group].rules.push(cssText);\n }\n }\n });\n }\n\n function sheetInsert(sheet, group, text) {\n var orderedGroups = getOrderedGroups(groups);\n var groupIndex = orderedGroups.indexOf(group);\n var nextGroupIndex = groupIndex + 1;\n var nextGroup = orderedGroups[nextGroupIndex]; // Insert rule before the next group, or at the end of the stylesheet\n\n var position = nextGroup != null && groups[nextGroup].start != null ? groups[nextGroup].start : sheet.cssRules.length;\n var isInserted = insertRuleAt(sheet, text, position);\n\n if (isInserted) {\n // Set the starting index of the new group\n if (groups[group].start == null) {\n groups[group].start = position;\n } // Increment the starting index of all subsequent groups\n\n\n for (var i = nextGroupIndex; i < orderedGroups.length; i += 1) {\n var groupNumber = orderedGroups[i];\n var previousStart = groups[groupNumber].start || 0;\n groups[groupNumber].start = previousStart + 1;\n }\n }\n\n return isInserted;\n }\n\n var OrderedCSSStyleSheet = {\n /**\n * The textContent of the style sheet.\n */\n getTextContent() {\n return getOrderedGroups(groups).map(group => {\n var rules = groups[group].rules; // Sorting provides deterministic order of styles in group for\n // build-time extraction of the style sheet.\n\n var marker = rules.shift();\n rules.sort();\n rules.unshift(marker);\n return rules.join('\\n');\n }).join('\\n');\n },\n\n /**\n * Insert a rule into the style sheet\n */\n insert(cssText, groupValue) {\n var group = Number(groupValue); // Create a new group.\n\n if (groups[group] == null) {\n var markerRule = encodeGroupRule(group); // Create the internal record.\n\n groups[group] = {\n start: null,\n rules: [markerRule]\n }; // Update CSSOM.\n\n if (sheet != null) {\n sheetInsert(sheet, group, markerRule);\n }\n } // selectorText is more reliable than cssText for insertion checks. The\n // browser excludes vendor-prefixed properties and rewrites certain values\n // making cssText more likely to be different from what was inserted.\n\n\n var selectorText = getSelectorText(cssText);\n\n if (selectorText != null && selectors[selectorText] == null) {\n // Update the internal records.\n selectors[selectorText] = true;\n groups[group].rules.push(cssText); // Update CSSOM.\n\n if (sheet != null) {\n var isInserted = sheetInsert(sheet, group, cssText);\n\n if (!isInserted) {\n // Revert internal record change if a rule was rejected (e.g.,\n // unrecognized pseudo-selector)\n groups[group].rules.pop();\n }\n }\n }\n }\n\n };\n return OrderedCSSStyleSheet;\n}\n/**\n * Helper functions\n */\n\nfunction encodeGroupRule(group) {\n return \"[stylesheet-group=\\\"\" + group + \"\\\"]{}\";\n}\n\nvar groupPattern = /[\"']/g;\n\nfunction decodeGroupRule(cssRule) {\n return Number(cssRule.selectorText.split(groupPattern)[1]);\n}\n\nfunction getOrderedGroups(obj) {\n return Object.keys(obj).map(Number).sort((a, b) => a > b ? 1 : -1);\n}\n\nvar selectorPattern = /\\s*([,])\\s*/g;\n\nfunction getSelectorText(cssText) {\n var selector = cssText.split('{')[0].trim();\n return selector !== '' ? selector.replace(selectorPattern, '$1') : null;\n}\n\nfunction insertRuleAt(root, cssText, position) {\n try {\n // $FlowFixMe: Flow is missing CSSOM types needed to type 'root'.\n root.insertRule(cssText, position);\n return true;\n } catch (e) {\n // JSDOM doesn't support `CSSSMediaRule#insertRule`.\n // Also ignore errors that occur from attempting to insert vendor-prefixed selectors.\n return false;\n }\n}","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport canUseDOM from '../../../modules/canUseDom';\nimport createCSSStyleSheet from './createCSSStyleSheet';\nimport createOrderedCSSStyleSheet from './createOrderedCSSStyleSheet';\nvar defaultId = 'react-native-stylesheet';\nvar roots = new WeakMap();\nvar sheets = [];\nvar initialRules = [// minimal top-level reset\n'html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}', 'body{margin:0;}', // minimal form pseudo-element reset\n'button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}', 'input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}'];\nexport function createSheet(root, id) {\n if (id === void 0) {\n id = defaultId;\n }\n\n var sheet;\n\n if (canUseDOM) {\n var rootNode = root != null ? root.getRootNode() : document; // Create the initial style sheet\n\n if (sheets.length === 0) {\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id));\n initialRules.forEach(rule => {\n sheet.insert(rule, 0);\n });\n roots.set(rootNode, sheets.length);\n sheets.push(sheet);\n } else {\n var index = roots.get(rootNode);\n\n if (index == null) {\n var initialSheet = sheets[0]; // If we're creating a new sheet, populate it with existing styles\n\n var textContent = initialSheet != null ? initialSheet.getTextContent() : ''; // Cast rootNode to 'any' because Flow types for getRootNode are wrong\n\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id, rootNode, textContent));\n roots.set(rootNode, sheets.length);\n sheets.push(sheet);\n } else {\n sheet = sheets[index];\n }\n }\n } else {\n // Create the initial style sheet\n if (sheets.length === 0) {\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id));\n initialRules.forEach(rule => {\n sheet.insert(rule, 0);\n });\n sheets.push(sheet);\n } else {\n sheet = sheets[0];\n }\n }\n\n return {\n getTextContent() {\n return sheet.getTextContent();\n },\n\n id,\n\n insert(cssText, groupValue) {\n sheets.forEach(s => {\n s.insert(cssText, groupValue);\n });\n }\n\n };\n}","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @format\n */\n'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\n\nvar _createForOfIteratorHelperLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createForOfIteratorHelperLoose\"));\n\nvar _invariant = _interopRequireDefault(require(\"fbjs/lib/invariant\"));\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n * visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nclass ViewabilityHelper {\n constructor(config) {\n if (config === void 0) {\n config = {\n viewAreaCoveragePercentThreshold: 0\n };\n }\n\n this._hasInteracted = false;\n this._timers = new Set();\n this._viewableIndices = [];\n this._viewableItems = new Map();\n this._config = config;\n }\n /**\n * Cleanup, e.g. on unmount. Clears any pending timers.\n */\n\n\n dispose() {\n this._timers.forEach(clearTimeout);\n }\n /**\n * Determines which items are viewable based on the current metrics and config.\n */\n\n\n computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange // Optional optimization to reduce the scan size\n ) {\n var _this$_config = this._config,\n itemVisiblePercentThreshold = _this$_config.itemVisiblePercentThreshold,\n viewAreaCoveragePercentThreshold = _this$_config.viewAreaCoveragePercentThreshold;\n var viewAreaMode = viewAreaCoveragePercentThreshold != null;\n var viewablePercentThreshold = viewAreaMode ? viewAreaCoveragePercentThreshold : itemVisiblePercentThreshold;\n (0, _invariant.default)(viewablePercentThreshold != null && itemVisiblePercentThreshold != null !== (viewAreaCoveragePercentThreshold != null), 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');\n var viewableIndices = [];\n\n if (itemCount === 0) {\n return viewableIndices;\n }\n\n var firstVisible = -1;\n\n var _ref = renderRange || {\n first: 0,\n last: itemCount - 1\n },\n first = _ref.first,\n last = _ref.last;\n\n if (last >= itemCount) {\n console.warn('Invalid render range computing viewability ' + JSON.stringify({\n renderRange,\n itemCount\n }));\n return [];\n }\n\n for (var idx = first; idx <= last; idx++) {\n var metrics = getFrameMetrics(idx);\n\n if (!metrics) {\n continue;\n }\n\n var top = metrics.offset - scrollOffset;\n var bottom = top + metrics.length;\n\n if (top < viewportHeight && bottom > 0) {\n firstVisible = idx;\n\n if (_isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, metrics.length)) {\n viewableIndices.push(idx);\n }\n } else if (firstVisible >= 0) {\n break;\n }\n }\n\n return viewableIndices;\n }\n /**\n * Figures out which items are viewable and how that has changed from before and calls\n * `onViewableItemsChanged` as appropriate.\n */\n\n\n onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange // Optional optimization to reduce the scan size\n ) {\n if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) {\n return;\n }\n\n var viewableIndices = [];\n\n if (itemCount) {\n viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange);\n }\n\n if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every((v, ii) => v === viewableIndices[ii])) {\n // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n // extra work in those cases.\n return;\n }\n\n this._viewableIndices = viewableIndices;\n\n if (this._config.minimumViewTime) {\n var handle = setTimeout(() => {\n this._timers.delete(handle);\n\n this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }, this._config.minimumViewTime);\n\n this._timers.add(handle);\n } else {\n this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }\n }\n /**\n * clean-up cached _viewableIndices to evaluate changed items on next update\n */\n\n\n resetViewableIndices() {\n this._viewableIndices = [];\n }\n /**\n * Records that an interaction has happened even if there has been no scroll.\n */\n\n\n recordInteraction() {\n this._hasInteracted = true;\n }\n\n _onUpdateSync( // $FlowFixMe\n viewableIndicesToCheck, // $FlowFixMe\n onViewableItemsChanged, // $FlowFixMe\n createViewToken) {\n // Filter out indices that have gone out of view since this call was scheduled.\n viewableIndicesToCheck = viewableIndicesToCheck.filter(ii => this._viewableIndices.includes(ii));\n var prevItems = this._viewableItems;\n var nextItems = new Map(viewableIndicesToCheck.map(ii => {\n var viewable = createViewToken(ii, true);\n return [viewable.key, viewable];\n }));\n var changed = [];\n\n for (var _iterator = (0, _createForOfIteratorHelperLoose2.default)(nextItems), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n viewable = _step$value[1];\n\n if (!prevItems.has(key)) {\n changed.push(viewable);\n }\n }\n\n for (var _iterator2 = (0, _createForOfIteratorHelperLoose2.default)(prevItems), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n _key = _step2$value[0],\n _viewable = _step2$value[1];\n\n if (!nextItems.has(_key)) {\n changed.push((0, _objectSpread2.default)((0, _objectSpread2.default)({}, _viewable), {}, {\n isViewable: false\n }));\n }\n }\n\n if (changed.length > 0) {\n this._viewableItems = nextItems;\n onViewableItemsChanged({\n viewableItems: Array.from(nextItems.values()),\n changed,\n viewabilityConfig: this._config\n });\n }\n }\n\n}\n\nfunction _isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, itemLength) {\n if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n return true;\n } else {\n var pixels = _getPixelsVisible(top, bottom, viewportHeight);\n\n var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n return percent >= viewablePercentThreshold;\n }\n}\n\nfunction _getPixelsVisible(top, bottom, viewportHeight) {\n var visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(top, bottom, viewportHeight) {\n return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nvar _default = ViewabilityHelper;\nexports.default = _default;\nmodule.exports = exports.default;","import React, { useCallback } from 'react';\nimport { createUseStyles } from 'react-jss';\nimport { GestureResponderEvent, StyleSheet } from 'react-native';\nimport { Button, Icon, Typography } from '@packages/ui/shared';\nimport { useNavigate } from 'react-router-dom';\n\nexport interface BreadcrumbModel {\n title: string;\n to?: string;\n}\n\nconst useStyles = createUseStyles({\n header: {\n alignItems: 'center',\n backgroundColor: '#ffffff',\n borderBottom: '1px solid #e0e0e0',\n display: 'flex',\n justifyContent: 'space-between',\n padding: '16px 24px',\n },\n titleContainer: {\n alignItems: 'center',\n display: 'flex',\n gap: 8,\n maxWidth: '100%',\n },\n buttonsContainer: {\n alignItems: 'center',\n display: 'flex',\n gap: 16,\n },\n});\n\nconst styles = StyleSheet.create({\n headerTitle: {\n fontSize: 21,\n fontWeight: '600',\n lineHeight: 32,\n overflow: 'hidden',\n },\n iconSpacing: {\n marginRight: 16,\n },\n});\n\nexport interface AdminHubHeaderProps {\n externalButtons?: React.ReactNode[];\n breadcrumbs: BreadcrumbModel[];\n}\n\nexport const AdminHubHeader: React.FC = ({ breadcrumbs, externalButtons = [] }) => {\n const classes = useStyles();\n const navigate = useNavigate();\n\n const handleNavigation = useCallback(\n (event: GestureResponderEvent) => {\n event.preventDefault();\n if (breadcrumbs.length > 1) {\n const previousBreadcrumb = breadcrumbs[breadcrumbs.length - 2];\n\n if (previousBreadcrumb?.to) {\n navigate(previousBreadcrumb.to);\n return;\n }\n }\n navigate(-1);\n },\n [breadcrumbs, navigate]\n );\n\n return (\n
\n
\n {breadcrumbs.length > 1 && (\n \n \n \n )}\n {breadcrumbs.map((breadcrumb, index) => (\n \n \n {breadcrumb.title}\n \n {index < breadcrumbs.length - 1 && }\n \n ))}\n
\n {externalButtons.length > 0 && (\n
\n {externalButtons.map((button, index) => (\n {button}\n ))}\n
\n )}\n
\n );\n};\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._x = 0;\n this._y = 0;\n this._z = null;\n this._A = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._y === 3) {\n self = self._z;\n }\n if (Promise._B) {\n Promise._B(self);\n }\n if (self._y === 0) {\n if (self._x === 0) {\n self._x = 1;\n self._A = deferred;\n return;\n }\n if (self._x === 1) {\n self._x = 2;\n self._A = [self._A, deferred];\n return;\n }\n self._A.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._y === 1) {\n resolve(deferred.promise, self._z);\n } else {\n reject(deferred.promise, self._z);\n }\n return;\n }\n var ret = tryCallOne(cb, self._z);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._y = 3;\n self._z = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._y = 1;\n self._z = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._y = 2;\n self._z = newValue;\n if (Promise._C) {\n Promise._C(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._x === 1) {\n handle(self, self._A);\n self._A = null;\n }\n if (self._x === 2) {\n for (var i = 0; i < self._A.length; i++) {\n handle(self, self._A[i]);\n }\n self._A = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _UIManager = _interopRequireDefault(require(\"../../exports/UIManager\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n/**\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n */\nvar TextInputState = {\n /**\n * Internal state\n */\n _currentlyFocusedNode: null,\n\n /**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\n currentlyFocusedField() {\n if (document.activeElement !== this._currentlyFocusedNode) {\n this._currentlyFocusedNode = null;\n }\n\n return this._currentlyFocusedNode;\n },\n\n /**\n * @param {Object} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\n focusTextInput(textFieldNode) {\n if (textFieldNode !== null) {\n this._currentlyFocusedNode = textFieldNode;\n\n if (document.activeElement !== textFieldNode) {\n _UIManager.default.focus(textFieldNode);\n }\n }\n },\n\n /**\n * @param {Object} textFieldNode id of the text field to focus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\n blurTextInput(textFieldNode) {\n if (textFieldNode !== null) {\n this._currentlyFocusedNode = null;\n\n if (document.activeElement === textFieldNode) {\n _UIManager.default.blur(textFieldNode);\n }\n }\n }\n\n};\nvar _default = TextInputState;\nexports.default = _default;\nmodule.exports = exports.default;","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import { IOSInput } from '../types/NotificationIOS';\nimport { objectHasProperty, isBoolean, isObject, isString, isUndefined } from '../utils';\n\nexport default function validateIOSInput(input?: IOSInput): IOSInput {\n const out: IOSInput = {};\n\n // default value\n if (!input) {\n return out;\n }\n\n // if true, empty object\n if (isBoolean(input)) {\n return out;\n }\n\n if (!isObject(input)) {\n throw new Error('expected an object value.');\n }\n\n if (objectHasProperty(input, 'buttonText') && !isUndefined(input.buttonText)) {\n if (!isString(input.buttonText)) {\n throw new Error(\"'buttonText' expected a string value.\");\n }\n\n out.buttonText = input.buttonText;\n }\n\n if (objectHasProperty(input, 'placeholderText') && !isUndefined(input.placeholderText)) {\n if (!isString(input.placeholderText)) {\n throw new Error(\"'placeholderText' expected a string value.\");\n }\n\n out.placeholderText = input.placeholderText;\n }\n\n return out;\n}\n","'use strict';\n\nvar l, s;\nif (process.env.NODE_ENV === 'production') {\n l = require('./cjs/react-dom-server-legacy.browser.production.min.js');\n s = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n l = require('./cjs/react-dom-server-legacy.browser.development.js');\n s = require('./cjs/react-dom-server.browser.development.js');\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\n","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar unitlessNumbers = {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexOrder: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowGap: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnGap: true,\n gridColumnStart: true,\n lineClamp: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n // transform types\n scale: true,\n scaleX: true,\n scaleY: true,\n scaleZ: true,\n // RN properties\n shadowOpacity: true\n};\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\nvar prefixes = ['ms', 'Moz', 'O', 'Webkit'];\n\nvar prefixKey = (prefix, key) => {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n};\n\nObject.keys(unitlessNumbers).forEach(prop => {\n prefixes.forEach(prefix => {\n unitlessNumbers[prefixKey(prefix, prop)] = unitlessNumbers[prop];\n });\n});\nexport default unitlessNumbers;","/* eslint-disable */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * From React 16.0.0\n * \n */\nimport isUnitlessNumber from '../unitlessNumbers';\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n if (isEmpty) {\n return '';\n }\n\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return ('' + value).trim();\n}\n\nexport default dangerousStyleValue;","/* eslint-disable */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * From React 16.3.0\n * \n */\nimport dangerousStyleValue from './dangerousStyleValue';\n/**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n var style = node.style;\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n if (styleName === 'float') {\n styleName = 'cssFloat';\n }\n\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else {\n style[styleName] = styleValue;\n }\n }\n}\n\nexport default setValueForStyles;","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport getBoundingClientRect from '../../modules/getBoundingClientRect';\nimport setValueForStyles from '../../modules/setValueForStyles';\n\nvar getRect = node => {\n // Unlike the DOM's getBoundingClientRect, React Native layout measurements\n // for \"height\" and \"width\" ignore scale transforms.\n // https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements\n var _getBoundingClientRec = getBoundingClientRect(node),\n x = _getBoundingClientRec.x,\n y = _getBoundingClientRec.y,\n top = _getBoundingClientRec.top,\n left = _getBoundingClientRec.left;\n\n var width = node.offsetWidth;\n var height = node.offsetHeight;\n return {\n x,\n y,\n width,\n height,\n top,\n left\n };\n};\n\nvar measureLayout = (node, relativeToNativeNode, callback) => {\n var relativeNode = relativeToNativeNode || node && node.parentNode;\n\n if (node && relativeNode) {\n setTimeout(() => {\n var relativeRect = getBoundingClientRect(relativeNode);\n\n var _getRect = getRect(node),\n height = _getRect.height,\n left = _getRect.left,\n top = _getRect.top,\n width = _getRect.width;\n\n var x = left - relativeRect.left;\n var y = top - relativeRect.top;\n callback(x, y, width, height, left, top);\n }, 0);\n }\n};\n\nvar focusableElements = {\n A: true,\n INPUT: true,\n SELECT: true,\n TEXTAREA: true\n};\nvar UIManager = {\n blur(node) {\n try {\n node.blur();\n } catch (err) {}\n },\n\n focus(node) {\n try {\n var name = node.nodeName; // A tabIndex of -1 allows element to be programmatically focused but\n // prevents keyboard focus, so we don't want to set the value on elements\n // that support keyboard focus by default.\n\n if (node.getAttribute('tabIndex') == null && focusableElements[name] == null) {\n node.setAttribute('tabIndex', '-1');\n }\n\n node.focus();\n } catch (err) {}\n },\n\n measure(node, callback) {\n measureLayout(node, null, callback);\n },\n\n measureInWindow(node, callback) {\n if (node) {\n setTimeout(() => {\n var _getRect2 = getRect(node),\n height = _getRect2.height,\n left = _getRect2.left,\n top = _getRect2.top,\n width = _getRect2.width;\n\n callback(left, top, width, height);\n }, 0);\n }\n },\n\n measureLayout(node, relativeToNativeNode, onFail, onSuccess) {\n measureLayout(node, relativeToNativeNode, onSuccess);\n },\n\n updateView(node, props) {\n for (var prop in props) {\n if (!Object.prototype.hasOwnProperty.call(props, prop)) {\n continue;\n }\n\n var value = props[prop];\n\n switch (prop) {\n case 'style':\n {\n setValueForStyles(node, value);\n break;\n }\n\n case 'class':\n case 'className':\n {\n node.setAttribute('class', value);\n break;\n }\n\n case 'text':\n case 'value':\n // native platforms use `text` prop to replace text input value\n node.value = value;\n break;\n\n default:\n node.setAttribute(prop, value);\n }\n }\n },\n\n configureNextLayoutAnimation(config, onAnimationDidEnd) {\n onAnimationDidEnd();\n },\n\n // mocks\n setLayoutAnimationEnabledExperimental() {}\n\n};\nexport default UIManager;","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\n\nfunction hyphenateStyleName(name) {\n if (name in cache) {\n return cache[name];\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\n\nvar _default = hyphenateStyleName;\nexports.default = _default;\nmodule.exports = exports.default;","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return \n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(state => !state, false);\n return dispatch;\n}","/* eslint-disable react-native/no-inline-styles */\nimport React, { FC } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { Typography } from './typography';\nimport { AccountLocation as IAccountLocation } from '@packages/models/api';\nimport colors from '@packages/core/styles/colors';\n\ninterface Props {\n elements: IAccountLocation['elements'];\n index: number;\n showCount?: boolean;\n}\n\nexport const AccountLocation: FC = ({ showCount, elements, index }) => {\n return (\n \n \n \n Location\n {showCount ? ' ' + (index + 1) : ''}\n \n \n\n {elements\n .filter((el) => el.shouldDisplay)\n .map((el, elIndex) => {\n const isLast = elIndex === elements.length - 1;\n\n return (\n \n \n {el.title}\n \n {el.value}\n \n );\n })}\n \n );\n};\n\nconst styles = StyleSheet.create({\n table: {\n borderColor: colors.grayThree,\n borderWidth: 1,\n marginBottom: 16,\n },\n tableHeader: {\n paddingVertical: 8,\n paddingHorizontal: 12,\n backgroundColor: colors.grayTwo,\n borderColor: colors.grayThree,\n borderBottomWidth: 1,\n },\n fiieldTitle: {\n marginBottom: 8,\n },\n field: {\n borderColor: colors.grayThree,\n borderBottomWidth: 1,\n padding: 16,\n },\n});\n","import React, { FC } from 'react';\nimport { createIconSetFromIcoMoon } from 'react-native-vector-icons';\nimport { IconProps as RNVIIconProps } from 'react-native-vector-icons/Icon';\nimport { StyleSheet, View, StyleProp, ViewStyle } from 'react-native';\nimport colors from '@packages/core/styles/colors';\nimport icoMoonConfig from '../assets/sts-icons.json';\n\nconst STSIcon = createIconSetFromIcoMoon(icoMoonConfig, 'STS-Icons', 'STS-Icons.ttf');\n\nexport interface IconProps extends RNVIIconProps {\n name: StsIconName | string;\n hero?: boolean;\n heroContainerStyle?: StyleProp;\n raised?: boolean;\n raisedContainerStyle?: StyleProp;\n color?: keyof typeof colors;\n status?: boolean;\n}\n\nexport const Icon: FC = ({\n hero,\n heroContainerStyle,\n raised,\n raisedContainerStyle,\n color,\n status,\n ...iconProps\n}) => {\n let iconSize = 24;\n if (status) {\n iconSize = 16;\n } else if (hero) {\n iconSize = 120;\n }\n const colorHex = colors[color || (hero ? 'graySix' : color || 'textDarkSecondary')];\n\n const icon = ;\n\n if (hero) {\n return (\n \n {icon}\n \n );\n }\n\n if (raised) {\n return {icon};\n }\n\n return icon;\n};\n\nconst styles = StyleSheet.create({\n raisedIconContainer: {\n backgroundColor: colors.white,\n borderRadius: 50,\n height: 32,\n width: 32,\n justifyContent: 'center',\n alignItems: 'center',\n shadowColor: colors.black,\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.23,\n shadowRadius: 2.62,\n\n elevation: 4,\n },\n heroIconContainer: {\n padding: 36,\n borderRadius: 100,\n backgroundColor: colors.grayTwo,\n },\n});\n\nexport const StsIconNamesAsArray = [\n 'administration',\n 'arrow-back',\n 'arrow-double-up',\n 'arrow-forward',\n 'arrow-small-down',\n 'arrow-small-up',\n 'barcode-scan',\n 'battery',\n 'bell-outline',\n 'bell',\n 'calendar',\n 'calender-month',\n 'camera',\n 'car-lift',\n 'car-subaru',\n 'chat-bubble-text',\n 'chat-bubble',\n 'check-circle-hollow',\n 'checkbox-group',\n 'checkbox-indeterminate',\n 'checkbox-marked',\n 'checkbox-unmarked',\n 'checkmark',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'circle-indeterminate',\n 'clock',\n 'copy',\n 'download',\n 'draggable',\n 'electrical',\n 'entity',\n 'error',\n 'escalation',\n 'export',\n 'eye-off',\n 'eye',\n 'file',\n 'filter-list',\n 'flag',\n 'folders',\n 'fork',\n 'gear-outline',\n 'gear',\n 'headset',\n 'history',\n 'home',\n 'image-collection',\n 'image',\n 'info',\n 'keyword-preview',\n 'keyboard-return',\n 'launch',\n 'library-add',\n 'likert-long-text',\n 'likert',\n 'list',\n 'lock-closed',\n 'lock-open',\n 'logout',\n 'long-text',\n 'magnify-minus-outline',\n 'magnify-plus-outline',\n 'magnifying-glass',\n 'mark-as-read',\n 'mark-as-unread',\n 'menu',\n 'microphone-outline',\n 'minus',\n 'more-dots-vertical',\n 'more-dots',\n 'open-in-browser',\n 'open-in-full',\n 'open-in-new',\n 'paintbrush-outline',\n 'paintbrush',\n 'paperclip',\n 'paragraph',\n 'pencil',\n 'phone',\n 'plus',\n 'question-mark',\n 'radio-group',\n 'radio-marked',\n 'radio-unmarked',\n 'refresh',\n 'select',\n 'share',\n 'short-text',\n 'sync-down',\n 'system_update',\n 'title',\n 'trash-striped',\n 'trash',\n 'update',\n 'upload-in-progress',\n 'upload',\n 'user',\n 'videocam',\n 'warning',\n 'wifi-off',\n 'workflow',\n 'x-circle',\n 'x-close',\n] as const;\n\nexport type StsIconName = (typeof StsIconNamesAsArray)[number];\n\nexport const isValidIconType = (type: StsIconName) => {\n return StsIconNamesAsArray.includes(type);\n};\n","import React, { FC } from 'react';\nimport { StyleSheet, View, TouchableOpacity, StyleProp, ViewStyle } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { Icon } from './icon';\n\ninterface AlertBarProps {\n show: boolean;\n style?: StyleProp;\n success?: boolean;\n error?: boolean;\n warning?: boolean;\n onClose(): void;\n children?: React.ReactNode;\n}\n\nexport const AlertBar: FC = ({ show, style, success, error, warning, onClose, children }) => {\n function handleCloseButtonPress() {\n onClose();\n }\n\n if (!show) {\n return null;\n }\n\n return (\n \n \n {success && }\n {error && }\n \n\n {children}\n\n \n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n alert: {\n padding: 16,\n paddingRight: 50,\n position: 'relative',\n flexDirection: 'row',\n backgroundColor: colors.grayOne,\n },\n iconWrapper: {\n height: 24,\n width: 24,\n borderRadius: 100,\n justifyContent: 'center',\n alignItems: 'center',\n },\n childrenOuter: {\n flex: 1,\n paddingTop: 2,\n paddingLeft: 16,\n },\n closeButton: {\n top: 6,\n right: 6,\n width: 44,\n height: 44,\n position: 'absolute',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport const alertBarDefaultStyles = StyleSheet.create({\n text: {\n fontSize: 17,\n lineHeight: 20,\n fontWeight: '600',\n },\n link: {\n fontSize: 15,\n lineHeight: 20,\n },\n});\n","import React, { FC } from 'react';\nimport { View, ViewStyle, StyleSheet, TouchableOpacity } from 'react-native';\nimport LinearGradient from 'react-native-linear-gradient';\n\nimport colors from '@packages/core/styles/colors';\nimport { Icon } from './icon';\n\ninterface AssetProgressBarProps {\n percent: number;\n canCancel?: boolean;\n onCancel?(): void;\n style?: ViewStyle;\n}\n\nexport const AssetProgressBar: FC = ({ percent, canCancel, onCancel, style }) => {\n function handleCanceButtonPress() {\n if (onCancel) {\n onCancel();\n }\n }\n\n return (\n \n \n \n \n {canCancel && (\n \n \n \n )}\n \n );\n};\n\nconst styles = StyleSheet.create({\n progressBar: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n progressBarContainer: {\n flex: 1,\n height: 6,\n borderRadius: 3,\n overflow: 'hidden',\n },\n progressBarFill: {\n height: '100%',\n },\n progressBarCancelButtonOuter: {\n width: 44,\n height: 44,\n marginRight: -9,\n alignItems: 'center',\n justifyContent: 'center',\n },\n progressBarCancelButton: {\n width: 18,\n height: 18,\n borderRadius: 9,\n backgroundColor: colors.grayFive,\n },\n});\n","import React, { FC } from 'react';\nimport { StyleSheet, View, StyleProp, ViewStyle, Image } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { AssetProcessingState } from '@packages/models/api';\n\nimport { Typography } from './typography';\n\ninterface AssetStatusPillProps {\n status: AssetProcessingState;\n style?: StyleProp;\n}\n\nexport const AssetStatusPill: FC = ({ status, style }) => {\n switch (status) {\n case AssetProcessingState.Uploading: {\n return (\n \n \n Uploading\n \n );\n }\n case AssetProcessingState.Processing: {\n return (\n \n \n Upload Processing\n \n );\n }\n case AssetProcessingState.Complete: {\n return (\n \n \n Uploaded\n \n );\n }\n case AssetProcessingState.Error: {\n return (\n \n \n Upload Failed\n \n );\n }\n default:\n return null;\n }\n};\n\nconst styles = StyleSheet.create({\n container: {\n paddingLeft: 2,\n paddingRight: 10,\n borderRadius: 50,\n paddingVertical: 2,\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n backgroundColor: colors.greenFour,\n },\n assetStatusPillText: {\n marginLeft: 2,\n lineHeight: 18,\n fontWeight: '600',\n },\n containerUploading: {\n backgroundColor: colors.grayTwo,\n },\n containerProcessing: {\n backgroundColor: colors.yellowFour,\n },\n containerComplete: {\n backgroundColor: colors.greenFour,\n },\n containerError: {\n backgroundColor: colors.redFour,\n },\n});\n","import React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { Typography } from './typography';\n\ninterface Props {\n comment: C;\n authorName: string;\n timestamp: string;\n body: string;\n hideAuthor?: boolean;\n authorTextVariant?: 'default' | 'bold';\n commentOptionsRenderer?: (comment: C) => JSX.Element | null;\n editCommentRenderer?: (comment: C) => JSX.Element;\n}\n\nconst authorTextVariants = {\n default: {\n variant: 'default',\n color: 'blueOne',\n } as const,\n bold: {\n variant: 'h6',\n color: 'textDarkPrimary',\n } as const,\n} as const;\n\nexport function BaseComment({\n comment,\n authorName,\n timestamp,\n body,\n authorTextVariant = Platform.select({ web: 'default', default: 'bold' }),\n hideAuthor = false,\n commentOptionsRenderer,\n editCommentRenderer,\n}: Props) {\n return (\n \n \n \n {!hideAuthor && {authorName}}\n\n \n {timestamp}\n \n \n {commentOptionsRenderer && {commentOptionsRenderer(comment)}}\n \n {editCommentRenderer ? (\n editCommentRenderer(comment)\n ) : (\n \n {body}\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n commentHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 8,\n },\n commentBody: {\n marginBottom: 24,\n },\n});\n","import React, { FC, useState, useEffect, useRef } from 'react';\nimport { Animated, View, StyleSheet, LayoutChangeEvent } from 'react-native';\n\ninterface CollapseProps {\n open?: boolean;\n children?: React.ReactNode;\n}\n\nexport const Collapse: FC = ({ open, children }) => {\n const collapseAnimation = useRef(new Animated.Value(0)).current;\n\n const [isInstantiated, setIsInstantiated] = useState(false);\n const [collapseHeight, setCollapseHeight] = useState(0);\n\n useEffect(() => {\n const initialValue = open ? 0 : collapseHeight;\n const targetValue = open ? collapseHeight : 0;\n const animationDuration = isInstantiated ? 300 : 0;\n\n collapseAnimation.setValue(initialValue);\n\n Animated.timing(collapseAnimation, {\n toValue: targetValue,\n duration: animationDuration,\n }).start();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [collapseAnimation, collapseHeight, open]);\n\n function handleCollapseLayout(event: LayoutChangeEvent) {\n if (isInstantiated) {\n return;\n }\n\n setCollapseHeight(event.nativeEvent.layout.height);\n setIsInstantiated(true);\n }\n\n return (\n \n {children}\n \n );\n};\n\nconst styles = StyleSheet.create({\n collapseOuter: {\n overflow: 'hidden',\n },\n});\n","import React, { forwardRef, useState, useImperativeHandle, useRef, useEffect } from 'react';\nimport { StyleSheet, TextInput, TextInputProps, TextStyle, View, ViewStyle, Platform, StyleProp } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\n\nimport { Label } from './label';\nimport { Typography } from './typography';\nimport { useHoverState } from './hooks';\nimport { Icon } from './icon';\n\ninterface TextInputState {\n isHovered: boolean;\n isFocused: boolean;\n isDisabled: boolean;\n hasError: boolean;\n}\n\nexport interface TextInputHelperProps extends TextInputProps {\n style?: ViewStyle;\n inputContainerStyle?: ViewStyle;\n label?: string;\n labelHint?: string;\n showCharCount?: boolean;\n textInputStyle?: TextStyle;\n rightIcon?: JSX.Element | ((rightIconProps: { inputState: TextInputState }) => JSX.Element);\n errorMessage?: string;\n required?: boolean;\n optional?: boolean;\n controlId?: string;\n type?: string;\n maxDate?: string;\n minDate?: string;\n labelStyle?: StyleProp;\n}\n\nexport const TextInputHelper = forwardRef(\n (\n {\n style,\n inputContainerStyle,\n label,\n labelHint,\n required,\n optional,\n showCharCount,\n textInputStyle,\n rightIcon,\n errorMessage,\n controlId,\n type,\n maxDate,\n minDate,\n labelStyle,\n ...props\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n const { isHovered, hoverEventHandlers } = useHoverState();\n\n const inputRef = useRef(null);\n\n useImperativeHandle(ref, () => inputRef.current, []);\n\n useEffect(() => {\n if (Platform.OS === 'web' && type) {\n inputRef.current &&\n inputRef.current.setNativeProps({\n type,\n max: maxDate,\n min: minDate,\n });\n }\n }, [maxDate, minDate, type]);\n\n const isDisabled = typeof props.editable === 'boolean' && !props.editable;\n const hasError = !!errorMessage;\n\n const inputState = {\n isHovered,\n isFocused,\n isDisabled,\n hasError,\n };\n\n return (\n \n {!!label && (\n \n {label}\n \n )}\n\n \n {\n setIsFocused(true);\n props.onFocus && props.onFocus(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n props.onBlur && props.onBlur(e);\n }}\n underlineColorAndroid=\"transparent\"\n style={[styles.textInput, textInputStyle]}\n placeholderTextColor={colors.textDarkTertiary}\n />\n\n \n {hasError && }\n\n {typeof rightIcon === 'function' ? rightIcon({ inputState }) : rightIcon}\n \n \n\n {hasError && (\n \n {errorMessage}\n \n )}\n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n inputContainer: {\n height: Platform.select({ web: 40, default: 48 }),\n paddingHorizontal: 12,\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 3,\n borderWidth: 1,\n borderColor: colors.grayFive,\n },\n focusedInput: {\n borderWidth: 2,\n borderColor: colors.blueOne,\n },\n invalidInput: {\n borderWidth: 2,\n borderColor: colors.redOne,\n },\n textInput: {\n flex: 1,\n fontSize: 17,\n lineHeight: 24,\n maxWidth: '100%',\n color: colors.textDarkPrimary,\n textAlignVertical: 'top',\n },\n hoveredInput: {\n shadowColor: colors.black,\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.16,\n shadowRadius: 4,\n },\n disabledInput: {\n borderColor: colors.grayTwo,\n color: colors.textDarkSecondary,\n backgroundColor: colors.grayTwo,\n },\n rightIconsWrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n errorIconSpacer: {\n marginRight: 12,\n },\n errorMessage: {\n marginTop: 8,\n },\n dateInput: {\n paddingRight: 0,\n },\n});\n","import React, { FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { View, TouchableOpacity, FlatList, Keyboard, KeyboardEvent } from 'react-native';\n\nimport { HttpClient, useAbortController } from '@packages/core/http';\n\nimport { Typography } from './typography';\nimport { TextInputHelper } from './text-input-helper';\nimport { debounce } from 'lodash';\nimport colors from '@packages/core/styles/colors';\n\ntype AutocompleteAccount = {\n accountId: string;\n soaUsername: string;\n name: string;\n};\n\nexport const DebugAccounts: FC<{\n account: any;\n httpClient: HttpClient;\n onAccountChange: (accessToken: string) => void;\n}> = ({ account, httpClient, onAccountChange }) => {\n const { abortSignalRef } = useAbortController();\n const [accounts, setAccounts] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(false);\n\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n useEffect(() => {\n const onKeyboardWillShow = (e: KeyboardEvent) => {\n setKeyboardHeight(e.endCoordinates.height);\n };\n\n const onKeyboardWillHide = () => {\n setKeyboardHeight(0);\n };\n\n const keyboardShowListener = Keyboard.addListener('keyboardWillShow', onKeyboardWillShow);\n const keyboardHideListener = Keyboard.addListener('keyboardWillHide', onKeyboardWillHide);\n\n return () => {\n keyboardShowListener.remove();\n keyboardHideListener.remove();\n };\n }, []);\n\n const searchAccounts = useCallback(\n (query = '') => {\n setAccounts([]);\n setLoading(true);\n\n httpClient\n .orchestrateRequest<{ autocompleteAccounts: AutocompleteAccount[] }>({\n method: 'GET' as const,\n signal: abortSignalRef.current,\n ignoreCache: true,\n url: `/accounts/autocomplete?query=${query}`,\n })\n .then((response) => {\n setLoading(false);\n if (!response.success && response.aborted) {\n return;\n } else if (!response.success) {\n throw response.data;\n } else {\n setAccounts(response.data.autocompleteAccounts);\n }\n })\n .catch((e) => {\n setLoading(false);\n setError(e.message);\n console.log('Debugger error::', e);\n });\n },\n [abortSignalRef, httpClient]\n );\n\n const debouncedSearch = useMemo(() => debounce(searchAccounts, 300), [searchAccounts]);\n\n const getAccountToken = useCallback(\n (accountId: string) => {\n httpClient\n .orchestrateRequest<{ accessToken: string }>({\n method: 'GET' as const,\n signal: abortSignalRef.current,\n ignoreCache: true,\n url: `/accounts/${accountId}/access-token`,\n })\n .then((response) => {\n if (response.success) {\n onAccountChange(response.data.accessToken);\n } else {\n console.log('Debugger error::', { response });\n }\n })\n .catch((e) => {\n console.log('Debugger error::', e);\n });\n },\n [abortSignalRef, httpClient, onAccountChange]\n );\n\n return (\n item.accountId}\n renderItem={({ item }) => {\n return (\n {\n getAccountToken(item.accountId);\n }}\n style={{ padding: 8, borderBottomColor: colors.borderDark, borderBottomWidth: 1 }}\n >\n {item.name}\n {item.soaUsername}\n \n );\n }}\n stickyHeaderIndices={[0]}\n ListHeaderComponent={\n \n {\n setLoading(true);\n debouncedSearch(text);\n }}\n />\n \n }\n ListFooterComponent={}\n ListEmptyComponent={{loading ? 'Loading...' : error}}\n />\n );\n};\n","import React, { FC, useCallback, useEffect, useState } from 'react';\nimport { FlatList, View, TouchableOpacity } from 'react-native';\n\nimport { Typography } from './typography';\nimport { Button } from './button';\nimport { Collapse } from './collapse';\nimport notifee from '@notifee/react-native';\n\nexport const DebugMessaging: FC<{ account: any; service: any; messaging: any }> = ({ account, service, messaging }) => {\n const [deviceInfo, setDeviceInfo] = useState({\n type: '',\n fingerprint: '',\n token: '',\n });\n const [messages, setMessages] = useState([]);\n const [selectedIdx, setSelectedIdx] = useState(-1);\n\n const [supportsMessaging, setSupportsMessaging] = useState(true);\n\n const readDeviceInfo = useCallback(() => {\n setDeviceInfo({\n type: service.clientDeviceTypeId,\n fingerprint: service.deviceFingerprint,\n token: service.pushToken,\n });\n }, [service.clientDeviceTypeId, service.deviceFingerprint, service.pushToken]);\n\n useEffect(() => {\n readDeviceInfo();\n }, [readDeviceInfo]);\n\n useEffect(() => {\n function addMessage(msg: any) {\n setMessages([...messages, msg]);\n }\n\n try {\n const messagingInstance = messaging();\n\n messagingInstance.onMessage((m: any) => {\n addMessage(m);\n });\n\n notifee.onBackgroundEvent(async ({ type, detail }) => {\n addMessage(detail);\n });\n } catch (e) {\n if (e.code === 'messaging/unsupported-browser') {\n setSupportsMessaging(false);\n }\n }\n }, [messages, messaging]);\n\n if (!account) {\n return (\n \n Must be signed in.\n \n );\n }\n\n if (!supportsMessaging) {\n return (\n \n This browser does not support messaging\n \n );\n }\n\n return (\n \n \n {\n service.terminate();\n readDeviceInfo();\n setMessages([]);\n }}\n />\n\n {\n service.init().then(readDeviceInfo);\n }}\n />\n \n\n \n Account id: {account.accountId}\n \n\n \n Device Type: {deviceInfo.type}\n \n\n \n Device fingerprint: {deviceInfo.fingerprint}\n \n\n \n Device token: {deviceInfo.token}\n \n\n \n Messages & Notifications received -{' '}\n (tap message to expand json)\n \n\n {\n return '' + idx;\n }}\n renderItem={({ item, index }) => {\n const isSelected = selectedIdx === index;\n\n return (\n {\n setSelectedIdx(isSelected ? -1 : index);\n }}\n style={{ minHeight: 40 }}\n >\n Message {index + 1}\n\n \n {JSON.stringify(item, null, 4)}\n \n \n );\n }}\n />\n \n );\n};\n","import React, { FC, useCallback, useEffect, useState } from 'react';\nimport { View, TouchableOpacity, ScrollView } from 'react-native';\n\nimport { HttpClient, useAbortController } from '@packages/core/http';\n\nimport { Typography } from './typography';\nimport { Button } from './button';\nimport { Collapse } from './collapse';\n\nexport const DebugPermissions: FC<{ account: any; httpClient: HttpClient; onRefetch: () => void }> = ({\n account,\n httpClient,\n onRefetch,\n}) => {\n const { abortSignalRef } = useAbortController();\n const [capabilities, setCapabilities] = useState(null);\n const [permissions, setPermissions] = useState({});\n\n const [showCapabilities, setShowCapabilities] = useState(false);\n const [showRoleContexts, setShowRoleContexts] = useState(false);\n const [showRetailerPermissions, setShowRetailerPermissions] = useState(false);\n const [showGlobalPermissions, setGlobalShowPermissions] = useState(false);\n const [showOrgPermissions, setShowOrgPermissions] = useState(false);\n\n const fetchPermissions = useCallback(() => {\n if (!account || !account.accountId) {\n return;\n }\n\n setCapabilities(null);\n setPermissions({});\n\n const config = {\n method: 'GET' as const,\n signal: abortSignalRef.current,\n ignoreCache: true,\n };\n\n httpClient\n .orchestrateRequest({\n ...config,\n url: `/accounts/${account.accountId}/permissions-debug`,\n })\n .then((permissionsResponse) => {\n if (permissionsResponse.success) {\n setPermissions(permissionsResponse.data);\n } else {\n console.log('Debugger error::', { permissionsResponse });\n }\n })\n .catch((e) => {\n console.log('Debugger error::', e);\n });\n }, [abortSignalRef, account, httpClient]);\n\n useEffect(() => {\n fetchPermissions();\n }, [fetchPermissions]);\n\n if (!account) {\n return (\n \n Must be signed in.\n \n );\n }\n\n return (\n \n {\n typeof onRefetch === 'function' && onRefetch();\n fetchPermissions();\n }}\n />\n\n \n Account id: {account.accountId}\n \n\n {\n setShowCapabilities(!showCapabilities);\n }}\n style={{ minHeight: 40 }}\n >\n Capabilities\n\n {capabilities && (\n \n {JSON.stringify(capabilities, null, 4)}\n \n )}\n \n\n {\n setShowRoleContexts(!showRoleContexts);\n }}\n >\n Role Contexts\n\n {permissions.roleContexts && (\n \n \n {JSON.stringify(permissions.roleContexts, null, 4)}\n \n \n )}\n \n\n {\n setShowRetailerPermissions(!showRetailerPermissions);\n }}\n >\n Retailer Permissions\n\n {permissions.retailerPermissions && (\n \n {JSON.stringify(permissions.retailerPermissions, null, 4)}\n \n )}\n \n\n {\n setGlobalShowPermissions(!showGlobalPermissions);\n }}\n >\n Global Permissions\n\n {permissions.globalPermissions && (\n \n {JSON.stringify(permissions.globalPermissions, null, 4)}\n \n )}\n \n\n {\n setShowOrgPermissions(!showOrgPermissions);\n }}\n >\n Org Permissions\n {permissions.orgPermissions && (\n \n {permissions.orgPermissions?.map((r: any) => {\n return {r};\n })}\n \n )}\n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { View } from 'react-native';\nimport JsxParser from 'react-jsx-parser';\n\nimport { Typography } from './typography';\n\nconst SupportedComponents = {\n View,\n Typography,\n};\n\ninterface Props {\n jsx: string;\n}\n\nexport const DynamicJSX: FC = ({ jsx }) => {\n // https://github.com/TroyAlford/react-jsx-parser/issues/86#issuecomment-634979428\n const trimmedJsx = useMemo(() => {\n // remove any white spaces between JSX tags\n // otherwise RN throws when trying to \"render the spaces\"\n return jsx\n .trim()\n .replace(/\\r?\\n|\\r/g, '')\n .replace(/>\\s+<');\n }, [jsx]);\n return (\n // https://github.com/TroyAlford/react-jsx-parser#proptypes--settings\n // TS types for this version of the library cause issues with CRA bundler\n // @ts-ignore\n \n );\n};\n","import colors from '@packages/core/styles/colors';\nimport React, { FC } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Typography, Icon, StsIconName } from './';\n\ninterface EmptyListProps {\n iconName?: StsIconName;\n iconColor?: keyof typeof colors;\n title?: string;\n description?: string;\n children?: React.ReactNode;\n}\n\nexport const EmptyList: FC = ({ iconName, iconColor, title, description, children }) => {\n return (\n \n \n {iconName && (\n \n \n \n )}\n\n {title && (\n \n {title}\n \n )}\n\n {description ? (\n \n {description}\n \n ) : null}\n\n {children}\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n paddingVertical: 56,\n paddingHorizontal: 24,\n },\n messageOuter: {\n alignItems: 'center',\n },\n iconOuter: {\n marginBottom: 32,\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n titleText: {\n marginBottom: 16,\n textAlign: 'center',\n },\n descriptionText: {\n textAlign: 'center',\n },\n});\n","import React, { FC } from 'react';\nimport { StyleSheet, TouchableOpacity, TouchableOpacityProps, View, StyleProp, TextStyle } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { Icon } from './icon';\nimport { Typography } from './typography';\n\nexport interface ListButtonProps extends TouchableOpacityProps {\n title: string;\n titleTextStyle?: StyleProp;\n secondaryText?: string;\n badge?: string;\n light?: boolean;\n radio?: boolean;\n selected?: boolean;\n leftIcon?: JSX.Element;\n rightIcon?: JSX.Element | null;\n}\n\nexport const ListButton: FC = ({\n title,\n titleTextStyle,\n secondaryText,\n badge,\n light,\n radio,\n selected,\n leftIcon,\n rightIcon,\n style,\n children,\n ...props\n}) => {\n return (\n \n {(radio || !!leftIcon) && (\n \n {leftIcon || (\n \n )}\n \n )}\n\n \n {title ? (\n \n {title}\n \n ) : (\n <>\n )}\n\n {secondaryText ? (\n \n {secondaryText}\n \n ) : undefined}\n\n {children}\n \n\n \n {badge && (\n \n \n {badge}\n \n \n )}\n {rightIcon}\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n listButton: {\n borderRadius: 3,\n minHeight: 60,\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 12,\n marginBottom: 12,\n backgroundColor: colors.grayThree,\n },\n lightButton: {\n backgroundColor: colors.white,\n shadowColor: colors.black,\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.16,\n shadowRadius: 4,\n elevation: 2,\n },\n leftIconContainer: {\n marginLeft: -4,\n paddingRight: 12,\n },\n listButtonTextWrapper: {\n flex: 1,\n },\n badgeWrapper: {\n backgroundColor: colors.blueOne,\n borderRadius: 100,\n minWidth: 18,\n height: 18,\n paddingHorizontal: 4,\n justifyContent: 'center',\n alignItems: 'center',\n },\n rightSideOuter: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nListButton.defaultProps = {\n rightIcon: ,\n};\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\n\nexport const UnreadStatusIndicator = () => {\n return (\n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n unreadIndicatorOuter: {\n width: 16,\n height: 16,\n marginLeft: 11,\n borderRadius: 8,\n alignContent: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(31, 81, 143, 0.15)',\n },\n unreadIndicatorInner: {\n width: 11,\n height: 11,\n borderRadius: 5.5,\n alignSelf: 'center',\n backgroundColor: colors.blueOne,\n },\n});\n","/* eslint-disable react-native/no-inline-styles */\nimport { format } from 'date-fns';\nimport React, { FC, useMemo } from 'react';\nimport { TouchableOpacity, View, StyleSheet } from 'react-native';\n\nimport { Typography } from './typography';\nimport colors from '@packages/core/styles/colors';\n\nimport { Notification, NotificationStatusId } from '@packages/models/api';\nimport { UnreadStatusIndicator } from './unread-status-indicator';\n\ninterface NotificationProps {\n item: Notification;\n fluid?: boolean;\n onPress(notification: Notification): void;\n}\n\nexport const NotificationListItem: FC = ({ item, fluid, onPress }) => {\n function handleNotificationPress() {\n onPress(item);\n }\n\n const isNew =\n item.notificationStatusId === NotificationStatusId.New ||\n item.notificationStatusId === NotificationStatusId.Unread;\n\n const formattedTimestamp = useMemo(() => {\n const timestampDate = new Date(item.createdTimestamp);\n // https://date-fns.org/v2.21.1/docs/format\n // based on notification group -- either 01:16pm or Fri 1/15\n const formatString = item.notificationGroupingId === 'TODAY' ? 'h:mm a' : 'E L/dd';\n return format(timestampDate, formatString);\n }, [item.createdTimestamp, item.notificationGroupingId]);\n\n return (\n \n \n \n {item.message}\n \n \n \n {formattedTimestamp}\n \n {isNew && }\n \n \n \n {item.data.vehicleModelYear} {item.data.carlineName}\n \n\n {!!item.retailerName && (\n \n {item.retailerName}\n {!!item.retailerCode && ` (${item.retailerCode})`}\n \n )}\n \n );\n};\n\nconst styles = StyleSheet.create({\n notificationListItem: {\n paddingVertical: 16,\n },\n notificationTextBlue: {\n fontSize: 15,\n fontWeight: 'bold',\n color: colors.blueOne,\n },\n statusPill: {\n fontSize: 12,\n textTransform: 'uppercase',\n backgroundColor: colors.greenFour,\n },\n notificationMessageOuter: {\n marginBottom: 8,\n flexDirection: 'row',\n },\n notificationMessage: {\n flex: 1,\n },\n notificationTimestampOuter: {\n flexShrink: 0,\n paddingLeft: 16,\n flexDirection: 'row',\n justifyContent: 'center',\n },\n notificationVehicleText: {\n marginBottom: 8,\n },\n});\n","export const NotificationPreferenceOrderConfig = {\n // Defined in these configs come in order first, if not defined, it will be appended at the end\n // Needed for the UI to display the notifications in a consistent order\n // Since the backend will return it in an order that is not consistent all the time\n qmrNotifications: [\n 'QMR_SUBMITTED_NOTIFY_CREATOR',\n 'QMR_SUBMITTED',\n 'QMR_STATUS_CHANGED',\n 'QMR_COMMENT_ADDED',\n 'QMR_ADDITIONAL_INFO_ADDED',\n 'QMR_FEEDBACK_PROVIDED',\n 'QMR_ATTACHMENT_ADDED',\n 'QMR_TOUGHBOOK_ATTACHMENT_ADDED',\n 'QMR_EDITED',\n 'QMR_MORE_INFO_REQ_OPENED',\n 'QMR_MORE_INFO_REQ_CLOSED',\n 'QMR_MORE_INFO_COMMENT',\n 'PART_COLLECTION_REQUEST_OPENED',\n 'PART_COLLECTION_REQUEST_CLOSED',\n 'QMR_CSV_EXPORT',\n 'QMR_CSV_EXPORT_FAILURE',\n 'QMR_ESCALATION_FAILURE',\n 'QMR_FAIL_CODE_APPROVAL_REQUESTED',\n ],\n techlineNotifications: ['NORTHSTAR_NOTIFICATION'],\n investigationNotifications: ['INVESTIGATION_COMMENT_ADDED', 'INVESTIGATION_MEETING_NOTE_ADDED'],\n feedbackNotifications: ['FEEDBACK_SUBMITTED', 'FEEDBACK_REQUESTED', 'FEEDBACK_ACKNOWLEDGED'],\n failCodeCSVExportNotifications: ['FAILCODE_CSV_EXPORT'],\n};\n\ninterface SpecialCaseConfig {\n [key: string]: {\n isInAppLockedOn?: boolean;\n isGlobalLockedOn?: boolean;\n hasInApp?: boolean;\n hasEmail?: boolean;\n hasPush?: boolean;\n tooltip?: string;\n shouldRenderCondition?: string;\n };\n}\n\nexport const SpecialCasesConfig: SpecialCaseConfig = {\n // References\n // https://github.com/SubaruTechShare/sts-backend/blob/develop/src/main/java/io/subcomm/backend/notification/NotificationConstants.java\n // https://subaru4.sharepoint.com/:x:/r/sites/TechShare/_layouts/15/Doc.aspx?sourcedoc=%7B3AF8D0CF-791A-4BD6-B29B-37CE44558E2B%7D&file=Permissions%20(Active).xlsx&action=default&mobileredirect=true&DefaultItemOpen=1\n // TODO : maybe use an API to get it from backend...\n QMR_SUBMITTED_NOTIFY_CREATOR: {\n hasInApp: false,\n hasPush: false,\n tooltip:\n 'When a QMR is submitted, the creator will receive a confirmation email (this is a email only notification).',\n },\n QMR_SUBMITTED: {\n tooltip:\n 'When a QMR is submitted, the associated reviewer will receive a notification of a new QMR in their district.',\n // This is the closest capability for this. DSQMs and above are the ones who can review QMRs.\n shouldRenderCondition: 'systemCapabilities.canSearchRestrictedFields',\n },\n QMR_TOUGHBOOK_ATTACHMENT_ADDED: {\n hasPush: false,\n tooltip:\n \"Receive a notification when an attachment is added through the 'Send to QMR' folder on the Toughbook and associated with your QMR.\",\n },\n QMR_CSV_EXPORT: {\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n QMR_CSV_EXPORT_FAILURE: {\n isGlobalLockedOn: true,\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n QMR_ESCALATION_FAILURE: {\n isGlobalLockedOn: true,\n shouldRenderCondition: 'systemCapabilities.canViewEscalations',\n },\n INVESTIGATION_COMMENT_ADDED: {\n hasPush: false,\n },\n INVESTIGATION_MEETING_NOTE_ADDED: {\n hasPush: false,\n },\n NORTHSTAR_NOTIFICATION: {\n tooltip: 'Receive notifications related to any Techline case where you are a case team member.',\n },\n QMR_EDITED: {\n tooltip: 'Receive a notification when a QMR you are associated with is edited.',\n },\n QMR_MORE_INFO_REQ_OPENED: {\n // using canExportQMRsAsCsv because there is no specific capability for this and it is the closest thing\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n QMR_MORE_INFO_COMMENT: {\n hasPush: false,\n // using canExportQMRsAsCsv because there is no specific capability for this and it is the closest thing\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n QMR_MORE_INFO_REQ_CLOSED: {\n hasPush: false,\n // using canExportQMRsAsCsv because there is no specific capability for this and it is the closest thing\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n PART_COLLECTION_REQUEST_CLOSED: {\n // using canExportQMRsAsCsv because there is no specific capability for this and it is the closest thing\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n PART_COLLECTION_REQUEST_OPENED: {\n // using canExportQMRsAsCsv because there is no specific capability for this and it is the closest thing\n shouldRenderCondition: 'systemCapabilities.canExportQMRsAsCsv',\n },\n FAILCODE_CSV_EXPORT: {\n hasPush: false,\n },\n};\n\nexport const getAccountCapabilitiesPerNotification = (obj: any, path: string) => {\n // This function is used to get the capabilities for a specific notification\n // Where obj is the account object and path is the path to the capability\n // Example usage: getAccountCapabilitiesPerNotification(account, 'systemCapabilities.canExportQMRsAsCsv');\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\n};\n\nexport const QmrNotifcationLockedRoles = [\n // These roles always have locked on \"in-app\" notifications for QMRs per business requirement\n 'RETAILER_USER',\n 'RETAILER_ADMIN',\n 'DSQM',\n 'RSQM',\n];\n\ninterface NotificationTypeNames {\n [key: string]: string;\n}\n\nexport const NotificationTypeNames: NotificationTypeNames = {\n // these are the notifications that we want to have a special mapping name\n // if not in here, it will automatically be mapped to a human-readable name using regex script\n\n // For example, we want to clarify QMR_SUBMITTED that it is to \"NOTIFY REVIEWER\"\n // and the other is to \"NOTIFY CREATOR\"\n QMR_SUBMITTED: 'Submitted (Notify Reviewer)',\n QMR_SUBMITTED_NOTIFY_CREATOR: 'Submitted (Notify Creator)',\n NORTHSTAR_NOTIFICATION: 'Techline',\n QMR_CSV_EXPORT: 'CSV Export',\n QMR_CSV_EXPORT_FAILURE: 'CSV Export Failure',\n FAILCODE_CSV_EXPORT: 'Fail Code CSV Export',\n};\n\nexport const NotificationAPINameToHumanReadable = (apiName: string) => {\n // Converts something like \"INVESITGATION_COMMENT_ADDED\" to \"Investigation Comment Added\"\n // or \"QMR_ATTACHMENT_ADDED\" to \"Attachment Added\"\n return apiName\n .replace(/_/g, ' ') // Replace underscores with spaces\n .toLowerCase() // Convert to lowercase to start with a clean slate\n .replace(/\\b\\w/g, (letter: string) => letter.toUpperCase()) // Capitalize the first letter of each word\n .replace(/^Qmr /, ''); // Remove 'Qmr ' if it is the first word\n};\n\nexport const NotificationGroupInTitleCase = (groupName: string): string => {\n // Converts a group name like \"qmrNotification\" to \"Qmr\"\n\n // Split the string by 'Notifications'\n const parts = groupName.split('Notifications');\n\n // Extract the first part and capitalize the first letter\n const titleCaseString = parts[0].charAt(0).toUpperCase() + parts[0].slice(1);\n\n return titleCaseString;\n};\n","import React, { FC, useRef, useEffect, useState, useCallback, useMemo } from 'react';\nimport { Animated, View, StyleSheet, PanResponder, LayoutChangeEvent } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { Typography } from './typography';\nimport LinearGradient from 'react-native-linear-gradient';\n\ninterface ValueProp {\n id: string;\n value: number;\n message?: string;\n}\n\ninterface RangeProps {\n values: ValueProp[];\n value: number | undefined;\n onChange(value: number): void;\n disabled?: boolean;\n}\n\nexport const Range: FC = ({ values, value, onChange, disabled }) => {\n const rangeRef = useRef(null);\n\n const [rangeWidth, setRangeWidth] = useState(0);\n const [startX, setStartX] = useState(0);\n\n const fillWidth = useRef(new Animated.Value(0)).current;\n const fillOpacity = useRef(new Animated.Value(value === undefined ? 0 : 1)).current;\n const knobTextOpacity = useRef(new Animated.Value(1)).current;\n const messageX = useRef(new Animated.Value(0)).current;\n const messagePlacholderOpacity = useRef(new Animated.Value(1)).current;\n const messageWidth = useRef(0);\n\n const animateFillWidthToPixelValue = useCallback(\n (targetValue: number) => {\n Animated.spring(fillWidth, {\n toValue: targetValue,\n }).start();\n },\n [fillWidth]\n );\n\n const jumpFillWidthToPixelValue = useCallback(\n (targetValue: number) => {\n Animated.timing(fillWidth, {\n toValue: targetValue,\n duration: 0,\n }).start();\n },\n [fillWidth]\n );\n\n const animateFillWidthToRangeValue = useCallback(\n (targetValue: number) => {\n const valueAsPercent = (targetValue - 1) / (values.length - 1);\n const valueAsWidth = valueAsPercent * rangeWidth;\n\n animateFillWidthToPixelValue(valueAsWidth);\n },\n [animateFillWidthToPixelValue, rangeWidth, values.length]\n );\n\n const animateFillOpacityToValue = useCallback(\n (targetValue: number) => {\n Animated.timing(fillOpacity, {\n toValue: targetValue,\n duration: 300,\n }).start();\n },\n [fillOpacity]\n );\n\n const animateKnobTextOpacityToValue = useCallback(\n (targetValue: number) => {\n Animated.timing(knobTextOpacity, {\n toValue: targetValue,\n duration: 100,\n }).start();\n },\n [knobTextOpacity]\n );\n\n const animateMessagePlaceholderOpacityToValue = useCallback(\n (targetValue: number) => {\n Animated.timing(messagePlacholderOpacity, {\n toValue: targetValue,\n duration: 300,\n }).start();\n },\n [messagePlacholderOpacity]\n );\n\n const animateMessageX = useCallback(() => {\n if (!value) {\n return;\n }\n\n const valueAsPercent = (value - 1) / (values.length - 1);\n const valueAsWidth = valueAsPercent * rangeWidth;\n\n if (valueAsWidth + messageWidth.current / 2 > rangeWidth) {\n Animated.spring(messageX, {\n toValue: rangeWidth - messageWidth.current,\n }).start();\n } else if (valueAsWidth - messageWidth.current / 2 < 0) {\n Animated.spring(messageX, {\n toValue: 0,\n }).start();\n } else {\n Animated.spring(messageX, {\n toValue: valueAsWidth - messageWidth.current / 2,\n }).start();\n }\n }, [messageX, rangeWidth, value, values.length]);\n\n const emitValue = useCallback(() => {\n // @ts-ignore\n let calculatedPosition = fillWidth._value;\n\n if (calculatedPosition < 0) {\n calculatedPosition = 0;\n }\n if (calculatedPosition > rangeWidth) {\n calculatedPosition = rangeWidth;\n }\n\n const percentage = calculatedPosition / rangeWidth;\n const totalOutcomes = values.length - 1;\n const closestOutcome = Math.round(percentage * totalOutcomes);\n const valueToEmit = closestOutcome + 1;\n\n if (valueToEmit !== value) {\n onChange(valueToEmit);\n } else {\n animateFillWidthToRangeValue(valueToEmit);\n }\n\n animateKnobTextOpacityToValue(1);\n }, [\n animateFillWidthToRangeValue,\n animateKnobTextOpacityToValue,\n // @ts-ignore\n fillWidth._value,\n onChange,\n rangeWidth,\n value,\n values.length,\n ]);\n\n // Detect when value prop changes, and animate to that position\n useEffect(() => {\n if (value === undefined || isNaN(value)) {\n animateMessagePlaceholderOpacityToValue(1);\n animateFillOpacityToValue(0);\n return;\n }\n\n animateFillWidthToRangeValue(value);\n animateMessagePlaceholderOpacityToValue(0);\n animateMessageX();\n }, [\n animateFillOpacityToValue,\n animateFillWidthToRangeValue,\n animateMessagePlaceholderOpacityToValue,\n animateMessageX,\n value,\n ]);\n\n // Bind touch events\n const panResponder = useMemo(() => {\n return PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: (_event, gestureState) => {\n if (rangeRef.current) {\n rangeRef.current.measure((_fx, _fy, _width, _height, px, _py) => {\n setStartX(gestureState.x0 - px);\n jumpFillWidthToPixelValue(gestureState.x0 - px);\n });\n } else {\n setStartX(gestureState.x0);\n jumpFillWidthToPixelValue(gestureState.x0);\n }\n\n animateFillOpacityToValue(1);\n animateKnobTextOpacityToValue(0);\n },\n onPanResponderMove: (_event, gestureState) => {\n fillWidth.setValue(startX + gestureState.dx);\n },\n onPanResponderRelease: () => {\n emitValue();\n },\n onPanResponderTerminate: () => {\n emitValue();\n },\n });\n }, [\n animateFillOpacityToValue,\n animateKnobTextOpacityToValue,\n disabled,\n emitValue,\n fillWidth,\n jumpFillWidthToPixelValue,\n startX,\n ]);\n\n const handleRangeLayout = useCallback(() => {\n if (!rangeRef.current) {\n return;\n }\n\n rangeRef.current.measure((_fx, _fy, width, _height, _px, _py) => {\n if (width >= 0) {\n setRangeWidth(width);\n }\n });\n }, []);\n\n const handleMessageLayout = useCallback(\n (event: LayoutChangeEvent) => {\n messageWidth.current = event.nativeEvent.layout.width;\n animateMessageX();\n },\n [animateMessageX]\n );\n\n return (\n <>\n \n \n \n \n \n \n \n {String(value)}\n \n \n \n \n {values.map((v) => {\n return ;\n })}\n \n \n \n \n \n {values[0] && values[0].message}\n \n \n {values[values.length - 1] && values[values.length - 1].message}\n \n \n\n \n \n {value && value - 1 < values.length ? values[value - 1].message : ''}\n \n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n range: {\n paddingVertical: 12,\n },\n track: {\n height: 16,\n borderRadius: 8,\n alignItems: 'center',\n flexDirection: 'row',\n paddingHorizontal: 2,\n justifyContent: 'space-between',\n backgroundColor: colors.grayFour,\n },\n marker: {\n width: 12,\n height: 12,\n borderRadius: 6,\n backgroundColor: colors.grayFive,\n },\n fill: {\n top: 0,\n left: 0,\n bottom: 0,\n zIndex: 1,\n position: 'absolute',\n },\n fillGradient: {\n width: '100%',\n height: '100%',\n borderRadius: 500,\n },\n knob: {\n top: -4,\n right: -4,\n width: 24,\n height: 24,\n borderRadius: 12,\n position: 'absolute',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: colors.blueOne,\n },\n knobText: {\n color: colors.white,\n },\n messageOuter: {\n position: 'relative',\n },\n message: {\n top: 0,\n left: 0,\n position: 'absolute',\n },\n messageText: {\n color: colors.blueOne,\n },\n messagePlaceholderOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n messagePlaceholderText: {\n color: colors.grayFive,\n },\n});\n","import React, { FC } from 'react';\nimport { StyleProp, ViewStyle, View, StyleSheet } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { Icon } from './icon';\nimport { Typography } from './typography';\n\ninterface SuccessFailBadgeProps {\n success: boolean;\n style?: StyleProp;\n children?: React.ReactNode;\n}\nexport const SuccessFailBadge: FC = ({ success, children, style }) => {\n return (\n \n \n \n \n\n {children}\n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n paddingHorizontal: 12,\n alignSelf: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 28,\n borderRadius: 18,\n },\n successBadge: {\n backgroundColor: colors.greenFour,\n },\n failBadge: {\n backgroundColor: colors.redFour,\n },\n iconWrapper: {\n marginRight: 12,\n height: 20,\n width: 20,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 50,\n },\n successIcon: {\n backgroundColor: colors.greenOne,\n },\n failIcon: {\n backgroundColor: colors.redOne,\n },\n});\n","import React, { FC } from 'react';\nimport { View, StyleSheet, ViewProps, TextProps } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\n\nimport { Typography, TypographyProps } from './typography';\n\nexport type BadgeVariants =\n | 'default'\n | 'blue'\n | 'red'\n | 'green'\n | 'yellow'\n | 'gray'\n // Techline Statuses\n | 'DRAFT'\n | 'OPEN'\n | 'CLOSED'\n | 'PENDING'\n | 'UPDATE';\n\ninterface TextBadgeProps extends ViewProps {\n variant?: BadgeVariants;\n icon?: JSX.Element | null;\n textStyle?: TextProps['style'];\n children?: React.ReactNode;\n typographyProps?: TypographyProps;\n}\n\nexport const TextBadge: FC = ({\n icon = null,\n variant = 'default',\n style,\n children,\n textStyle,\n typographyProps,\n ...props\n}) => {\n return (\n \n {icon}\n\n \n {children}\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 2,\n paddingHorizontal: 4,\n borderRadius: 3,\n },\n text: {\n fontSize: 12,\n textTransform: 'uppercase',\n },\n textAfterIcon: {\n marginLeft: 4,\n },\n\n // Variant backgrounds\n default: {\n backgroundColor: colors.grayThree,\n },\n blue: {\n backgroundColor: colors.blueFour,\n },\n red: {\n backgroundColor: colors.redFour,\n },\n green: {\n backgroundColor: colors.greenFour,\n },\n yellow: {\n backgroundColor: colors.yellowFour,\n },\n gray: {\n backgroundColor: colors.grayThree,\n },\n\n // Techline Case Statuses\n // Check { caseStatusMap } from '@web/utils\n\n DRAFT: {\n backgroundColor: colors.grayThree,\n },\n\n OPEN: {\n backgroundColor: colors.greenThree,\n },\n\n CLOSED: {\n backgroundColor: colors.grayThree,\n },\n\n UPDATE: {\n backgroundColor: colors.redThree,\n },\n\n PENDING: {\n backgroundColor: colors.yellowThree,\n },\n});\n","import React, { forwardRef, useState } from 'react';\nimport { Platform, StyleSheet, TextInput, TextInputProps, TextStyle, View, ViewStyle } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\nimport { Label, LabelProps } from './label';\nimport { Typography } from './typography';\nimport { Icon } from './icon';\nimport { useHoverState } from './hooks';\n\nexport interface TextareaHelperProps extends TextInputProps {\n buttonElement?: JSX.Element;\n style?: ViewStyle;\n label?: string;\n labelRightElement?: LabelProps['customRightElement'];\n textInputStyle?: TextStyle;\n errorMessage?: string;\n required?: boolean;\n optional?: boolean;\n controlId?: string;\n containerStyle?: ViewStyle;\n}\n\nexport const TextareaHelper = forwardRef(\n (\n {\n buttonElement,\n style,\n label,\n labelRightElement,\n required,\n optional,\n textInputStyle,\n errorMessage,\n controlId,\n containerStyle,\n ...textInputProps\n },\n ref\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n const { isHovered, hoverEventHandlers } = useHoverState();\n\n const isDisabled = typeof textInputProps.editable === 'boolean' && !textInputProps.editable;\n\n return (\n \n {!!label && (\n \n {label}\n \n )}\n\n \n {\n setIsFocused(true);\n textInputProps.onFocus && textInputProps.onFocus(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n textInputProps.onBlur && textInputProps.onBlur(e);\n }}\n underlineColorAndroid=\"transparent\"\n style={[styles.textInput, textInputStyle]}\n placeholderTextColor={colors.textDarkTertiary}\n />\n\n {buttonElement}\n \n\n {!!errorMessage && (\n <>\n \n\n \n {errorMessage}\n \n \n )}\n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n inputContainer: {\n height: Platform.select({ web: 142, default: 234 }),\n borderRadius: 3,\n borderWidth: 1,\n borderColor: colors.grayFive,\n },\n textInput: {\n flex: 1,\n paddingVertical: 8,\n paddingHorizontal: 12,\n fontSize: 17,\n lineHeight: 24,\n color: colors.textDarkPrimary,\n textAlignVertical: 'top',\n },\n hoveredInput: {\n shadowColor: colors.black,\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.16,\n shadowRadius: 4,\n },\n disabledInput: {\n borderColor: colors.grayTwo,\n color: colors.textDarkSecondary,\n backgroundColor: colors.grayTwo,\n },\n focusedInput: {\n borderWidth: 2,\n borderColor: colors.blueOne,\n },\n invalidInput: {\n borderWidth: 2,\n borderColor: colors.redOne,\n },\n errorIcon: {\n position: 'absolute',\n right: 12,\n top: 35,\n },\n errorMessage: {\n marginTop: 8,\n },\n});\n","import React, { FC, useEffect, useRef } from 'react';\nimport { Animated, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { Typography } from './typography';\n\nimport colors from '@packages/core/styles/colors';\n\ninterface ToggleProps {\n uncheckedLabel?: string;\n checkedLabel?: string;\n checked: boolean;\n onChange(checked: boolean): void;\n}\n\nexport const Toggle: FC = ({ uncheckedLabel, checkedLabel, checked, onChange }) => {\n const uncheckedLeft = -4;\n const checkedLeft = 18;\n const animationDuration = 200;\n const toggleAnimation = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n Animated.timing(toggleAnimation, {\n toValue: checked ? checkedLeft : uncheckedLeft,\n duration: animationDuration,\n }).start();\n }, [checked, toggleAnimation, uncheckedLeft]);\n\n function handleTogglePress() {\n onChange(!checked);\n }\n\n return (\n \n {uncheckedLabel && (\n \n {uncheckedLabel}\n \n )}\n \n \n \n \n \n {checkedLabel && (\n \n {checkedLabel}\n \n )}\n \n );\n};\n\nconst styles = StyleSheet.create({\n toggleOuter: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n uncheckedLabel: {\n marginRight: 16,\n },\n checkedLabel: {\n marginLeft: 16,\n },\n toggle: {\n width: 42,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n },\n slide: {\n width: 34,\n height: 14,\n borderRadius: 20,\n position: 'relative',\n backgroundColor: colors.grayThree,\n },\n handle: {\n top: -3,\n left: 0,\n zIndex: 1,\n width: 20,\n height: 20,\n borderRadius: 10,\n position: 'absolute',\n shadowColor: colors.black,\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.21,\n shadowRadius: 3,\n elevation: 3,\n },\n});\n","import React, { useState } from 'react';\nimport { Platform, StyleSheet, TextInput, TextInputProps, TextStyle, View, ViewStyle } from 'react-native';\nimport { useTranslation } from 'react-i18next';\n\nimport { noop } from '@packages/core/utils';\n\nimport { TextInputHelper } from './text-input-helper';\nimport { Button } from './button';\n\ninterface Props {\n comment: string;\n onChange(text: string): void;\n onAddComment(args: { text: string }): Promise;\n onCancel?(): void;\n isLoading?: boolean;\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n },\n btnContainer: {\n flexDirection: 'row',\n marginTop: 10,\n justifyContent: 'flex-end',\n },\n cancelBtn: {\n marginRight: 5,\n },\n});\n\nexport const CommentInput = ({ comment, onAddComment, onChange, isLoading = false, onCancel = noop }: Props) => {\n const { t } = useTranslation();\n\n const handleOnChange = (text: string) => {\n onChange(text);\n };\n\n const handleOnCancel = () => {\n onChange('');\n onCancel();\n };\n\n const handleOnAddComment = async () => {\n await onAddComment({ text: comment });\n onChange('');\n };\n\n return (\n \n \n\n \n \n\n \n \n \n );\n};\n","import React from 'react';\nimport { View, StyleSheet } from 'react-native';\n\nimport colors from '@packages/core/styles/colors';\n\ninterface CircleBadgeProps {\n size?: number;\n color?: keyof typeof colors;\n children: any;\n}\n\nexport function CircleBadge({ size = 5, color = 'grayTwo', children }: CircleBadgeProps) {\n const badgeSize = size * 10;\n\n const styles = StyleSheet.create({\n badge: {\n width: badgeSize,\n height: badgeSize,\n borderStyle: 'solid',\n borderColor: 'black',\n borderRadius: badgeSize,\n backgroundColor: colors[color],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n });\n\n return {children};\n}\n\nexport default CircleBadge;\n","import React from 'react';\nimport { View, ViewStyle } from 'react-native';\n\ninterface FlexProps extends ViewStyle {\n children: any;\n /**\n * @desc Auto add Spacer between each child set to this size if greater than 0.\n */\n autoSpacing?: number;\n}\n\ninterface SpacerProps {\n size?: number;\n}\n\nfunction Spacer({ size = 20 }: SpacerProps) {\n return ;\n}\n\n/**\n * @desc Easily render a flexbox.\n * Default direction is `column`.\n */\nexport function Flex(props: FlexProps) {\n const { autoSpacing } = props;\n\n if (autoSpacing && autoSpacing > 0) {\n return (\n \n {React.Children.map(props.children, (node, index) => {\n const isLastNode = index === React.Children.count(props.children) - 1;\n\n return (\n <>\n {node}\n {!isLastNode && }\n \n );\n })}\n \n );\n }\n\n return {props.children};\n}\n\nFlex.Spacer = Spacer;\n\nexport default Flex;\n","import React from 'react';\nimport { View, StyleSheet } from 'react-native';\n\ninterface MarginProps {\n m?: number | string;\n right?: number | string;\n left?: number | string;\n bottom?: number | string;\n top?: number | string;\n horizontal?: number | string;\n vertical?: number | string;\n}\n\nexport function Margin({ m, right, left, bottom, top, horizontal, vertical }: MarginProps) {\n const styles = StyleSheet.create({\n theMargin: {\n margin: m,\n marginRight: right,\n marginLeft: left,\n marginBottom: bottom,\n marginTop: top,\n marginHorizontal: horizontal,\n marginVertical: vertical,\n },\n });\n\n return ;\n}\n\nexport default Margin;\n","import React from 'react';\n\nimport { Account } from '@packages/models/api';\nimport { getAccountInitials } from '@packages/core/utils';\n\nimport { CircleBadge } from './circle-badge';\nimport { Typography } from './typography';\n\ninterface AccountBadgeProps {\n account: Account;\n}\n\nexport function AccountBadge({ account }: AccountBadgeProps) {\n return (\n \n {getAccountInitials(account)}\n \n );\n}\n\nexport default AccountBadge;\n","import colors from '@packages/core/styles/colors';\nimport React from 'react';\nimport { View, StyleSheet } from 'react-native';\n\nexport const Divider = () => {\n return ;\n};\n\nconst styles = StyleSheet.create({\n divider: {\n width: '100%',\n borderColor: colors.grayTwo,\n borderBottomWidth: 2,\n },\n});\n","import colors from '@packages/core/styles/colors';\nimport React, { FC } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { Typography } from './typography';\n\ninterface CollapseProps {\n badge: string | number;\n}\n\nexport const Badge: FC = ({ badge }) => {\n return (\n \n \n {badge}\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n badgeWrapper: {\n backgroundColor: colors.blueOne,\n borderRadius: 100,\n minWidth: 18,\n height: 18,\n marginHorizontal: 5,\n paddingHorizontal: 4,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var _e$composedPath$;\n\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n IS_DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n","import { getMainCarrier, Hub } from '@sentry/hub';\nimport {\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(transaction: T, options: Options, samplingContext: SamplingContext): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n IS_DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n IS_DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n IS_DEBUG_BUILD && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n IS_DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout?: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n): IdleTransaction {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ?\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\n\nexports.__esModule = true;\nexports.LocaleProvider = LocaleProvider;\nexports.getLocaleDirection = getLocaleDirection;\nexports.useLocaleContext = useLocaleContext;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _isLocaleRTL = require(\"./isLocaleRTL\");\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar defaultLocale = {\n direction: 'ltr',\n locale: 'en-US'\n};\nvar LocaleContext = /*#__PURE__*/(0, _react.createContext)(defaultLocale);\n\nfunction getLocaleDirection(locale) {\n return (0, _isLocaleRTL.isLocaleRTL)(locale) ? 'rtl' : 'ltr';\n}\n\nfunction LocaleProvider(props) {\n var direction = props.direction,\n locale = props.locale,\n children = props.children;\n var needsContext = direction || locale;\n return needsContext ? /*#__PURE__*/_react.default.createElement(LocaleContext.Provider, {\n children: children,\n value: {\n direction: locale ? getLocaleDirection(locale) : direction,\n locale\n }\n }) : children;\n}\n\nfunction useLocaleContext() {\n return (0, _react.useContext)(LocaleContext);\n}","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = backgroundClip;\nfunction backgroundClip() {\n return null;\n}","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n var styles = window.getComputedStyle(element);\n var top = parseFloat(styles.marginTop) || 0;\n var right = parseFloat(styles.marginRight) || 0;\n var bottom = parseFloat(styles.marginBottom) || 0;\n var left = parseFloat(styles.marginLeft) || 0;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n}\n\nexport default function usePopperMarginModifiers() {\n var overlayRef = useRef(null);\n var margins = useRef(null);\n var arrowMargins = useRef(null);\n var popoverClass = useBootstrapPrefix(undefined, 'popover');\n var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n var callback = useCallback(function (overlay) {\n if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n margins.current = getMargins(overlay);\n overlay.style.margin = '0';\n overlayRef.current = overlay;\n }, [popoverClass, dropdownMenuClass]);\n var offset = useMemo(function () {\n return {\n name: 'offset',\n options: {\n offset: function offset(_ref) {\n var placement = _ref.placement;\n if (!margins.current) return [0, 0];\n var _margins$current = margins.current,\n top = _margins$current.top,\n left = _margins$current.left,\n bottom = _margins$current.bottom,\n right = _margins$current.right;\n\n switch (placement.split('-')[0]) {\n case 'top':\n return [0, bottom];\n\n case 'left':\n return [0, right];\n\n case 'bottom':\n return [0, top];\n\n case 'right':\n return [0, left];\n\n default:\n return [0, 0];\n }\n }\n }\n };\n }, [margins]);\n var arrow = useMemo(function () {\n return {\n name: 'arrow',\n options: {\n padding: function padding() {\n // The options here are used for Popper 2.8.4 and up.\n // For earlier version, padding is handled in popoverArrowMargins below.\n if (!arrowMargins.current) {\n return 0;\n }\n\n var _arrowMargins$current = arrowMargins.current,\n top = _arrowMargins$current.top,\n right = _arrowMargins$current.right;\n var padding = top || right;\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n }\n }\n };\n }, [arrowMargins]); // Converts popover arrow margin to arrow modifier padding\n\n var popoverArrowMargins = useMemo(function () {\n return {\n name: 'popoverArrowMargins',\n enabled: true,\n phase: 'main',\n fn: function fn() {\n return undefined;\n },\n requiresIfExists: ['arrow'],\n effect: function effect(_ref2) {\n var state = _ref2.state;\n\n if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass)) {\n return undefined;\n }\n\n if (state.modifiersData['arrow#persistent']) {\n // @popperjs/core <= 2.8.3 uses arrow#persistent to pass padding to arrow modifier.\n var _getMargins = getMargins(state.elements.arrow),\n top = _getMargins.top,\n right = _getMargins.right;\n\n var padding = top || right;\n state.modifiersData['arrow#persistent'].padding = {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n } else {\n // @popperjs/core >= 2.8.4 gets the padding from the arrow modifier options,\n // so we'll get the margins here, and let the arrow modifier above pass\n // it to popper.\n arrowMargins.current = getMargins(state.elements.arrow);\n }\n\n state.elements.arrow.style.margin = '0';\n return function () {\n if (state.elements.arrow) state.elements.arrow.style.margin = '';\n };\n }\n };\n }, [popoverClass]);\n return [callback, [offset, arrow, popoverArrowMargins]];\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"hrefAttrs\", \"onLayout\", \"onMoveShouldSetResponder\", \"onMoveShouldSetResponderCapture\", \"onResponderEnd\", \"onResponderGrant\", \"onResponderMove\", \"onResponderReject\", \"onResponderRelease\", \"onResponderStart\", \"onResponderTerminate\", \"onResponderTerminationRequest\", \"onScrollShouldSetResponder\", \"onScrollShouldSetResponderCapture\", \"onSelectionChangeShouldSetResponder\", \"onSelectionChangeShouldSetResponderCapture\", \"onStartShouldSetResponder\", \"onStartShouldSetResponderCapture\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport * as forwardedProps from '../../modules/forwardedProps';\nimport pick from '../../modules/pick';\nimport useElementLayout from '../../modules/useElementLayout';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport useResponderEvents from '../../modules/useResponderEvents';\nimport StyleSheet from '../StyleSheet';\nimport TextAncestorContext from '../Text/TextAncestorContext';\nimport { useLocaleContext, getLocaleDirection } from '../../modules/useLocale';\nvar forwardPropsList = Object.assign({}, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.focusProps, forwardedProps.keyboardProps, forwardedProps.mouseProps, forwardedProps.touchProps, forwardedProps.styleProps, {\n href: true,\n lang: true,\n onScroll: true,\n onWheel: true,\n pointerEvents: true\n});\n\nvar pickProps = props => pick(props, forwardPropsList);\n\nvar View = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var hrefAttrs = props.hrefAttrs,\n onLayout = props.onLayout,\n onMoveShouldSetResponder = props.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = props.onMoveShouldSetResponderCapture,\n onResponderEnd = props.onResponderEnd,\n onResponderGrant = props.onResponderGrant,\n onResponderMove = props.onResponderMove,\n onResponderReject = props.onResponderReject,\n onResponderRelease = props.onResponderRelease,\n onResponderStart = props.onResponderStart,\n onResponderTerminate = props.onResponderTerminate,\n onResponderTerminationRequest = props.onResponderTerminationRequest,\n onScrollShouldSetResponder = props.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = props.onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder = props.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = props.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = props.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = props.onStartShouldSetResponderCapture,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n React.Children.toArray(props.children).forEach(item => {\n if (typeof item === 'string') {\n console.error(\"Unexpected text node: \" + item + \". A text node cannot be a child of a .\");\n }\n });\n }\n\n var hasTextAncestor = React.useContext(TextAncestorContext);\n var hostRef = React.useRef(null);\n\n var _useLocaleContext = useLocaleContext(),\n contextDirection = _useLocaleContext.direction;\n\n useElementLayout(hostRef, onLayout);\n useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture\n });\n var component = 'div';\n var langDirection = props.lang != null ? getLocaleDirection(props.lang) : null;\n var componentDirection = props.dir || langDirection;\n var writingDirection = componentDirection || contextDirection;\n var supportedProps = pickProps(rest);\n supportedProps.dir = componentDirection;\n supportedProps.style = [styles.view$raw, hasTextAncestor && styles.inline, props.style];\n\n if (props.href != null) {\n component = 'a';\n\n if (hrefAttrs != null) {\n var download = hrefAttrs.download,\n rel = hrefAttrs.rel,\n target = hrefAttrs.target;\n\n if (download != null) {\n supportedProps.download = download;\n }\n\n if (rel != null) {\n supportedProps.rel = rel;\n }\n\n if (typeof target === 'string') {\n supportedProps.target = target.charAt(0) !== '_' ? '_' + target : target;\n }\n }\n }\n\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);\n supportedProps.ref = setRef;\n return createElement(component, supportedProps, {\n writingDirection\n });\n});\nView.displayName = 'View';\nvar styles = StyleSheet.create({\n view$raw: {\n alignItems: 'stretch',\n backgroundColor: 'transparent',\n border: '0 solid black',\n boxSizing: 'border-box',\n display: 'flex',\n flexBasis: 'auto',\n flexDirection: 'column',\n flexShrink: 0,\n listStyle: 'none',\n margin: 0,\n minHeight: 0,\n minWidth: 0,\n padding: 0,\n position: 'relative',\n textDecoration: 'none',\n zIndex: 0\n },\n inline: {\n display: 'inline-flex'\n }\n});\nexport default View;","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","import { useMemo } from 'react';\nimport { UseArrowContainerProps } from '.';\n\nexport const useArrowContainer = ({\n childRect,\n popoverRect,\n position,\n arrowSize,\n arrowColor,\n}: UseArrowContainerProps) => {\n const arrowContainerStyle = useMemo(\n () =>\n ({\n padding: arrowSize,\n } as React.CSSProperties),\n [arrowSize],\n );\n\n const arrowStyle = useMemo(\n () =>\n ({\n position: 'absolute',\n ...((): React.CSSProperties => {\n const arrowWidth = arrowSize * 2;\n let top = childRect.top - popoverRect.top + childRect.height / 2 - arrowWidth / 2;\n let left = childRect.left - popoverRect.left + childRect.width / 2 - arrowWidth / 2;\n\n const lowerBound = arrowSize;\n const leftUpperBound = popoverRect.width - arrowSize;\n const topUpperBound = popoverRect.height - arrowSize;\n\n left = left < lowerBound ? lowerBound : left;\n left = left + arrowWidth > leftUpperBound ? leftUpperBound - arrowWidth : left;\n top = top < lowerBound ? lowerBound : top;\n top = top + arrowWidth > topUpperBound ? topUpperBound - arrowWidth : top;\n\n top = Number.isNaN(top) ? 0 : top;\n left = Number.isNaN(left) ? 0 : left;\n\n switch (position) {\n case 'right':\n return {\n borderTop: `${arrowSize}px solid transparent`,\n borderBottom: `${arrowSize}px solid transparent`,\n borderRight: `${arrowSize}px solid ${arrowColor}`,\n left: 0,\n top,\n };\n case 'left':\n return {\n borderTop: `${arrowSize}px solid transparent`,\n borderBottom: `${arrowSize}px solid transparent`,\n borderLeft: `${arrowSize}px solid ${arrowColor}`,\n right: 0,\n top,\n };\n case 'bottom':\n return {\n borderLeft: `${arrowSize}px solid transparent`,\n borderRight: `${arrowSize}px solid transparent`,\n borderBottom: `${arrowSize}px solid ${arrowColor}`,\n top: 0,\n left,\n };\n case 'top':\n return {\n borderLeft: `${arrowSize}px solid transparent`,\n borderRight: `${arrowSize}px solid transparent`,\n borderTop: `${arrowSize}px solid ${arrowColor}`,\n bottom: 0,\n left,\n };\n default:\n return {\n display: 'hidden',\n };\n }\n })(),\n } as React.CSSProperties),\n [\n arrowColor,\n arrowSize,\n childRect.height,\n childRect.left,\n childRect.top,\n childRect.width,\n popoverRect.height,\n popoverRect.left,\n popoverRect.top,\n popoverRect.width,\n position,\n ],\n );\n\n return {\n arrowContainerStyle,\n arrowStyle,\n };\n};\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n\n function FocusManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onFocus) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = FocusManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this2.setFocused(focused);\n } else {\n _this2.onFocus();\n }\n });\n };\n\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n };\n\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n\n return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _View = _interopRequireDefault(require(\"../View\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _excluded = [\"colors\", \"enabled\", \"onRefresh\", \"progressBackgroundColor\", \"progressViewOffset\", \"refreshing\", \"size\", \"tintColor\", \"title\", \"titleColor\"];\n\nfunction RefreshControl(props) {\n var colors = props.colors,\n enabled = props.enabled,\n onRefresh = props.onRefresh,\n progressBackgroundColor = props.progressBackgroundColor,\n progressViewOffset = props.progressViewOffset,\n refreshing = props.refreshing,\n size = props.size,\n tintColor = props.tintColor,\n title = props.title,\n titleColor = props.titleColor,\n rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);\n return /*#__PURE__*/_react.default.createElement(_View.default, rest);\n}\n\nvar _default = RefreshControl;\nexports.default = _default;\nmodule.exports = exports.default;","/* eslint-disable max-lines */\nimport { Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated\n */\n public child(\n spanContext?: Pick>,\n ): Span {\n return this.startChild(spanContext);\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data ?? {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId ?? this.spanId;\n this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags ?? {};\n this.traceId = spanContext.traceId ?? this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Intentional info-level logging for clear separation from ad-hoc console debug logging.\n */\n\nexports.__esModule = true;\nexports.default = void 0;\n\nfunction infoLog() {\n return console.log(...arguments);\n}\n\nvar _default = infoLog;\nexports.default = _default;\nmodule.exports = exports.default;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport normalizeColor from './compiler/normalizeColor';\nimport normalizeValueWithProperty from './compiler/normalizeValueWithProperty';\nvar emptyObject = {};\n/**\n * Shadows\n */\n\nvar defaultOffset = {\n height: 0,\n width: 0\n};\nexport var createBoxShadowValue = style => {\n var shadowColor = style.shadowColor,\n shadowOffset = style.shadowOffset,\n shadowOpacity = style.shadowOpacity,\n shadowRadius = style.shadowRadius;\n\n var _ref = shadowOffset || defaultOffset,\n height = _ref.height,\n width = _ref.width;\n\n var offsetX = normalizeValueWithProperty(width);\n var offsetY = normalizeValueWithProperty(height);\n var blurRadius = normalizeValueWithProperty(shadowRadius || 0);\n var color = normalizeColor(shadowColor || 'black', shadowOpacity);\n\n if (color != null && offsetX != null && offsetY != null && blurRadius != null) {\n return offsetX + \" \" + offsetY + \" \" + blurRadius + \" \" + color;\n }\n};\nexport var createTextShadowValue = style => {\n var textShadowColor = style.textShadowColor,\n textShadowOffset = style.textShadowOffset,\n textShadowRadius = style.textShadowRadius;\n\n var _ref2 = textShadowOffset || defaultOffset,\n height = _ref2.height,\n width = _ref2.width;\n\n var radius = textShadowRadius || 0;\n var offsetX = normalizeValueWithProperty(width);\n var offsetY = normalizeValueWithProperty(height);\n var blurRadius = normalizeValueWithProperty(radius);\n var color = normalizeValueWithProperty(textShadowColor, 'textShadowColor');\n\n if (color && (height !== 0 || width !== 0 || radius !== 0) && offsetX != null && offsetY != null && blurRadius != null) {\n return offsetX + \" \" + offsetY + \" \" + blurRadius + \" \" + color;\n }\n};\n/**\n * Preprocess styles\n */\n\nexport var preprocess = originalStyle => {\n var style = originalStyle || emptyObject;\n var nextStyle = {};\n\n for (var originalProp in style) {\n var originalValue = style[originalProp];\n var prop = originalProp;\n var value = originalValue;\n\n if (!Object.prototype.hasOwnProperty.call(style, originalProp) || originalValue == null) {\n continue;\n } // Convert shadow styles\n\n\n if (prop === 'shadowColor' || prop === 'shadowOffset' || prop === 'shadowOpacity' || prop === 'shadowRadius') {\n var boxShadowValue = createBoxShadowValue(style);\n\n if (boxShadowValue != null && nextStyle.boxShadow == null) {\n var boxShadow = style.boxShadow;\n prop = 'boxShadow';\n value = boxShadow ? boxShadow + \", \" + boxShadowValue : boxShadowValue;\n } else {\n continue;\n }\n } // Convert text shadow styles\n\n\n if (prop === 'textShadowColor' || prop === 'textShadowOffset' || prop === 'textShadowRadius') {\n var textShadowValue = createTextShadowValue(style);\n\n if (textShadowValue != null && nextStyle.textShadow == null) {\n var textShadow = style.textShadow;\n prop = 'textShadow';\n value = textShadow ? textShadow + \", \" + textShadowValue : textShadowValue;\n } else {\n continue;\n }\n }\n\n nextStyle[prop] = value;\n } // $FlowIgnore\n\n\n return nextStyle;\n};\nexport default preprocess;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _isDisabled = _interopRequireDefault(require(\"./isDisabled\"));\n\nvar _propsToAccessibilityComponent = _interopRequireDefault(require(\"./propsToAccessibilityComponent\"));\n\nvar _propsToAriaRole = _interopRequireDefault(require(\"./propsToAriaRole\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar AccessibilityUtil = {\n isDisabled: _isDisabled.default,\n propsToAccessibilityComponent: _propsToAccessibilityComponent.default,\n propsToAriaRole: _propsToAriaRole.default\n};\nvar _default = AccessibilityUtil;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport TextInputState from '../TextInputState';\n\nvar dismissKeyboard = () => {\n TextInputState.blurTextInput(TextInputState.currentlyFocusedField());\n};\n\nexport default dismissKeyboard;","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(maybeOptions?: Options | undefined): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*\n * Copyright (c) 2016-present Invertase Limited\n */\nimport {\n IOSIntentIdentifier,\n IOSNotificationCategory,\n IOSNotificationCategoryAction,\n} from '../types/NotificationIOS';\nimport { objectHasProperty, isArray, isObject, isString, isBoolean } from '../utils';\nimport validateIOSCategoryAction from './validateIOSCategoryAction';\n\nexport default function validateIOSCategory(\n category: IOSNotificationCategory,\n): IOSNotificationCategory {\n if (!isObject(category)) {\n throw new Error(\"'category' expected an object value.\");\n }\n\n /**\n * id\n */\n if (!isString(category.id)) {\n throw new Error(\"'category.id' expected a string value.\");\n }\n\n // empty check\n if (!category.id) {\n throw new Error(\"'category.id' expected a valid string id.\");\n }\n\n const out: IOSNotificationCategory = {\n id: category.id,\n allowInCarPlay: false,\n allowAnnouncement: false,\n hiddenPreviewsShowTitle: false,\n hiddenPreviewsShowSubtitle: false,\n };\n\n /**\n * summaryFormat\n */\n if (objectHasProperty(category, 'summaryFormat')) {\n if (!isString(category.summaryFormat)) {\n throw new Error(\"'category.summaryFormat' expected a string value.\");\n }\n\n out.summaryFormat = category.summaryFormat;\n }\n\n /**\n * allowInCarPlay\n */\n if (objectHasProperty(category, 'allowInCarPlay')) {\n if (!isBoolean(category.allowInCarPlay)) {\n throw new Error(\"'category.allowInCarPlay' expected a boolean value.\");\n }\n\n out.allowInCarPlay = category.allowInCarPlay;\n }\n\n /**\n * allowAnnouncement\n */\n if (objectHasProperty(category, 'allowAnnouncement')) {\n if (!isBoolean(category.allowAnnouncement)) {\n throw new Error(\"'category.allowAnnouncement' expected a boolean value.\");\n }\n\n out.allowAnnouncement = category.allowAnnouncement;\n }\n\n /**\n * hiddenPreviewsShowTitle\n */\n if (objectHasProperty(category, 'hiddenPreviewsShowTitle')) {\n if (!isBoolean(category.hiddenPreviewsShowTitle)) {\n throw new Error(\"'category.hiddenPreviewsShowTitle' expected a boolean value.\");\n }\n\n out.hiddenPreviewsShowTitle = category.hiddenPreviewsShowTitle;\n }\n\n /**\n * hiddenPreviewsShowSubtitle\n */\n if (objectHasProperty(category, 'hiddenPreviewsShowSubtitle')) {\n if (!isBoolean(category.hiddenPreviewsShowSubtitle)) {\n throw new Error(\"'category.hiddenPreviewsShowSubtitle' expected a boolean value.\");\n }\n\n out.hiddenPreviewsShowSubtitle = category.hiddenPreviewsShowSubtitle;\n }\n\n /**\n * summaryFormat\n */\n if (objectHasProperty(category, 'hiddenPreviewsBodyPlaceholder')) {\n if (!isString(category.hiddenPreviewsBodyPlaceholder)) {\n throw new Error(\"'category.hiddenPreviewsBodyPlaceholder' expected a string value.\");\n }\n\n out.hiddenPreviewsBodyPlaceholder = category.hiddenPreviewsBodyPlaceholder;\n }\n\n /**\n * intentIdentifiers\n */\n if (objectHasProperty(category, 'intentIdentifiers')) {\n if (!isArray(category.intentIdentifiers)) {\n throw new Error(\"'category.intentIdentifiers' expected an array value.\");\n }\n\n const identifiers = Object.values(IOSIntentIdentifier);\n\n for (let i = 0; i < category.intentIdentifiers.length; i++) {\n const intentIdentifier = category.intentIdentifiers[i];\n\n if (!identifiers.includes(intentIdentifier)) {\n throw new Error(\n `'category.intentIdentifiers' unexpected intentIdentifier \"${intentIdentifier}\" at array index \"${i}\".`,\n );\n }\n }\n\n out.intentIdentifiers = category.intentIdentifiers;\n }\n\n /**\n * actions\n */\n if (objectHasProperty(category, 'actions')) {\n if (!isArray(category.actions)) {\n throw new Error(\"'category.actions' expected an array value.\");\n }\n\n const actions: IOSNotificationCategoryAction[] = [];\n\n for (let i = 0; i < category.actions.length; i++) {\n try {\n actions[i] = validateIOSCategoryAction(category.actions[i]);\n } catch (e) {\n throw new Error(`'category.actions' invalid action at index \"${i}\". ${e}`);\n }\n }\n\n out.actions = actions;\n }\n\n return out;\n}\n","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","export const focus = () => ({\n '&:focus': {\n outline: 'none',\n boxShadow: '0 0 0 0.2rem rgba(38, 143, 255, 0.5)',\n },\n});\n","import colors from '@packages/core/styles/colors';\n\nexport enum ChevronDirection {\n UP = 'UP',\n DOWN = 'DOWN',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nexport interface ChevronProps {\n color?: string;\n direction?: ChevronDirection;\n topOffest?: string | number;\n leftOffset?: string | number;\n rightOffset?: string | number;\n}\n\nexport const chevron = (props: ChevronProps = {}) => {\n const config = {\n color: colors.blueOne,\n direction: ChevronDirection.DOWN,\n topOffest: '50%',\n leftOffset: '50%',\n rightOffset: 'auto',\n ...props,\n };\n\n let beforeTransform;\n let afterTransform;\n\n switch (config.direction) {\n case ChevronDirection.UP:\n beforeTransform = 'translateX(calc(-50% - 3px)) rotate(-45deg)';\n afterTransform = 'translateX(calc(-50% + 3px)) rotate(45deg)';\n break;\n case ChevronDirection.DOWN:\n beforeTransform = 'translateX(calc(-50% - 3px)) rotate(45deg)';\n afterTransform = 'translateX(calc(-50% + 3px)) rotate(-45deg)';\n break;\n case ChevronDirection.LEFT:\n beforeTransform = 'translate(-50%, calc(-50% - 3px)) rotate(135deg)';\n afterTransform = 'translate(-50%, calc(-50% + 3px)) rotate(-135deg)';\n break;\n case ChevronDirection.RIGHT:\n beforeTransform = 'translate(-50%, calc(-50% - 3px)) rotate(45deg)';\n afterTransform = 'translate(-50%, calc(-50% + 3px)) rotate(-45deg)';\n break;\n default:\n beforeTransform = '';\n afterTransform = '';\n break;\n }\n\n return {\n '&:before, &:after': {\n border: 0,\n width: 10,\n height: 2,\n zIndex: 1,\n content: '\"\"',\n borderRadius: 1,\n position: 'absolute',\n top: config.topOffest,\n left: config.leftOffset,\n right: config.rightOffset,\n transition: '0.2s transform',\n backgroundColor: config.color,\n },\n '&:before': {\n transform: beforeTransform,\n },\n '&:after': {\n transform: afterTransform,\n },\n };\n};\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _canUseDom = _interopRequireDefault(require(\"../canUseDom\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * useLayoutEffect throws an error on the server. On the few occasions where is\n * problematic, use this hook.\n *\n * \n */\nvar useLayoutEffectImpl = _canUseDom.default ? _react.useLayoutEffect : _react.useEffect;\nvar _default = useLayoutEffectImpl;\nexports.default = _default;\nmodule.exports = exports.default;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport { createContext } from 'react';\nvar TextAncestorContext = /*#__PURE__*/createContext(false);\nexport default TextAncestorContext;","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","/*\n * Copyright (c) 2016-present Invertase Limited\n */\n\nimport { Platform } from 'react-native';\n\nexport * from './id';\nexport * from './validate';\n\n/* eslint-disable-next-line @typescript-eslint/ban-types */\nexport function isError(value: object): boolean {\n if (Object.prototype.toString.call(value) === '[object Error]') {\n return true;\n }\n\n return value instanceof Error;\n}\n\nexport function objectHasProperty(\n target: T,\n property: string | number | symbol,\n): property is keyof T {\n return Object.hasOwnProperty.call(target, property);\n}\n\nexport const isIOS = Platform.OS === 'ios';\n\nexport const isAndroid = Platform.OS === 'android';\n\nexport const isWeb = Platform.OS === 'web';\n\nexport function noop(): void {\n // noop-🐈\n}\nexport const kReactNativeNotifeeForegroundServiceHeadlessTask =\n 'app.notifee.foreground-service-headless-task';\n\nexport const kReactNativeNotifeeNotificationEvent = 'app.notifee.notification-event';\n\nexport const kReactNativeNotifeeNotificationBackgroundEvent =\n 'app.notifee.notification-event-background';\n\nexport enum NotificationType {\n ALL = 0,\n DISPLAYED = 1,\n TRIGGER = 2,\n}\n","import React, { createContext, ReactNode, useReducer, useEffect } from 'react';\nimport { ContentSettingDashboard, Techline } from '@packages/models/api';\nimport { ContentSettingsService } from './content-settings.service';\nimport {\n dashboardReducer,\n initialState,\n dashboardActions,\n DashboardState,\n DashboardActionDispatcher,\n} from './content-settings.state';\n\ntype DashboardSection = keyof ContentSettingDashboard;\n\ninterface ContentSettingsContextType {\n state: DashboardState;\n dispatch: DashboardActionDispatcher;\n loadDashboards: () => Promise;\n addDashboard: (section: T, dashboard: Techline) => Promise;\n updateDashboard: (\n section: T,\n id: string,\n dashboard: Partial\n ) => Promise;\n deleteDashboard: (section: T, id: string) => Promise;\n service: ContentSettingsService;\n}\n\nexport const ContentSettingsContext = createContext(undefined);\n\nexport const ContentSettingsProvider: React.FC<{ children: ReactNode; service: ContentSettingsService }> = ({\n children,\n service,\n}) => {\n const [state, dispatch] = useReducer(dashboardReducer, initialState);\n\n const loadDashboards = async () => {\n dispatch(dashboardActions.isLoading());\n try {\n const data = await service.fetchDashboard();\n dispatch(dashboardActions.setDashboardData({ dashboardData: data }));\n dispatch(dashboardActions.hasLoaded());\n } catch (error) {\n console.error('Failed to load dashboards', error);\n const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';\n dispatch(dashboardActions.hasErrors({ errors: [errorMessage] }));\n }\n };\n\n const addDashboard = async (section: T, dashboard: Techline) => {\n const optimisticDashboard = { ...dashboard, techlineDashboardId: `${Date.now()}` };\n\n dispatch(\n dashboardActions.setDashboardData({\n dashboardData: {\n ...state.dashboardData,\n [section]: [...(state.dashboardData[section] || []), optimisticDashboard],\n },\n })\n );\n\n try {\n const newDashboard = (await service.createDashboard(dashboard)) as { techline: Techline };\n const newSection = newDashboard?.[section];\n dispatch(\n dashboardActions.setDashboardData({\n dashboardData: {\n ...state.dashboardData,\n [section]: [...(state.dashboardData[section] || []), newSection],\n },\n })\n );\n } catch (error) {\n console.error('Failed to create dashboard', error);\n dispatch(\n dashboardActions.setDashboardData({\n dashboardData: {\n ...state.dashboardData,\n [section]:\n state.dashboardData[section]?.filter(\n (d) => (d as Techline).techlineDashboardId !== optimisticDashboard.techlineDashboardId\n ) || [],\n },\n })\n );\n }\n };\n\n const updateDashboard = async (\n section: T,\n id: string,\n dashboard: Partial\n ) => {\n dispatch(\n dashboardActions.setDashboardData({\n dashboardData: {\n ...state.dashboardData,\n [section]:\n state.dashboardData[section]?.map((d) =>\n (d as Techline).techlineDashboardId === id ? { ...d, ...dashboard } : d\n ) || [],\n },\n })\n );\n\n try {\n await service.updateDashboard(id, dashboard);\n } catch (error) {\n console.error('Failed to update dashboard', error);\n loadDashboards();\n }\n };\n\n const deleteDashboard = async (section: T, id: string) => {\n const previousDashboards = { ...state.dashboardData };\n\n dispatch(\n dashboardActions.setDashboardData({\n dashboardData: {\n ...state.dashboardData,\n [section]:\n state.dashboardData[section]?.filter((d) => (d as Techline).techlineDashboardId !== id) || [],\n },\n })\n );\n\n try {\n await service.deleteDashboard(id);\n } catch (error) {\n console.error('Failed to delete dashboard', error);\n dispatch(dashboardActions.setDashboardData({ dashboardData: previousDashboards })); // Rollback\n }\n };\n\n useEffect(() => {\n loadDashboards();\n }, []);\n\n return (\n \n {children}\n \n );\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _Dimensions = _interopRequireDefault(require(\"../../exports/Dimensions\"));\n\nvar _findNodeHandle = _interopRequireDefault(require(\"../../exports/findNodeHandle\"));\n\nvar _invariant = _interopRequireDefault(require(\"fbjs/lib/invariant\"));\n\nvar _Platform = _interopRequireDefault(require(\"../../exports/Platform\"));\n\nvar _TextInputState = _interopRequireDefault(require(\"../TextInputState\"));\n\nvar _UIManager = _interopRequireDefault(require(\"../../exports/UIManager\"));\n\nvar _warning = _interopRequireDefault(require(\"fbjs/lib/warning\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... physical touch starts ...\n * 2. `onTouchStartCapture` (when you press down to stop the scroll)\n * 3. `onTouchStart` (same, but bubble phase)\n * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... bounce begins ...\n * ... some time elapses ...\n * ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart` (same, but bubble phase)\n * 5. `onTouchEnd` (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n * this.props.onKeyboardWillShow\n * this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n * this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n * this.props.onKeyboardWillHide\n * this.props.onKeyboardDidHide\n */\nvar emptyObject = {};\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\nvar ScrollResponderMixin = {\n // mixins: [Subscribable.Mixin],\n scrollResponderMixinGetInitialState: function scrollResponderMixinGetInitialState() {\n return {\n isTouching: false,\n lastMomentumScrollBeginTime: 0,\n lastMomentumScrollEndTime: 0,\n // Reset to false every time becomes responder. This is used to:\n // - Determine if the scroll view has been scrolled and therefore should\n // refuse to give up its responder lock.\n // - Determine if releasing should dismiss the keyboard when we are in\n // tap-to-dismiss mode (!this.props.keyboardShouldPersistTaps).\n observedScrollSinceBecomingResponder: false,\n becameResponderWhileAnimating: false\n };\n },\n\n /**\n * Invoke this from an `onScroll` event.\n */\n scrollResponderHandleScrollShouldSetResponder: function scrollResponderHandleScrollShouldSetResponder() {\n return this.state.isTouching;\n },\n\n /**\n * Merely touch starting is not sufficient for a scroll view to become the\n * responder. Being the \"responder\" means that the very next touch move/end\n * event will result in an action/movement.\n *\n * Invoke this from an `onStartShouldSetResponder` event.\n *\n * `onStartShouldSetResponder` is used when the next move/end will trigger\n * some UI movement/action, but when you want to yield priority to views\n * nested inside of the view.\n *\n * There may be some cases where scroll views actually should return `true`\n * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n * that gives priority to nested views.\n *\n * - If a single tap on the scroll view triggers an action such as\n * recentering a map style view yet wants to give priority to interaction\n * views inside (such as dropped pins or labels), then we would return true\n * from this method when there is a single touch.\n *\n * - Similar to the previous case, if a two finger \"tap\" should trigger a\n * zoom, we would check the `touches` count, and if `>= 2`, we would return\n * true.\n *\n */\n scrollResponderHandleStartShouldSetResponder: function scrollResponderHandleStartShouldSetResponder() {\n return false;\n },\n\n /**\n * There are times when the scroll view wants to become the responder\n * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n * that *doesn't* give priority to nested views (hence the capture phase):\n *\n * - Currently animating.\n * - Tapping anywhere that is not the focused input, while the keyboard is\n * up (which should dismiss the keyboard).\n *\n * Invoke this from an `onStartShouldSetResponderCapture` event.\n */\n scrollResponderHandleStartShouldSetResponderCapture: function scrollResponderHandleStartShouldSetResponderCapture(e) {\n // First see if we want to eat taps while the keyboard is up\n // var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n // if (!this.props.keyboardShouldPersistTaps &&\n // currentlyFocusedTextInput != null &&\n // e.target !== currentlyFocusedTextInput) {\n // return true;\n // }\n return this.scrollResponderIsAnimating();\n },\n\n /**\n * Invoke this from an `onResponderReject` event.\n *\n * Some other element is not yielding its role as responder. Normally, we'd\n * just disable the `UIScrollView`, but a touch has already began on it, the\n * `UIScrollView` will not accept being disabled after that. The easiest\n * solution for now is to accept the limitation of disallowing this\n * altogether. To improve this, find a way to disable the `UIScrollView` after\n * a touch has already started.\n */\n scrollResponderHandleResponderReject: function scrollResponderHandleResponderReject() {\n (0, _warning.default)(false, \"ScrollView doesn't take rejection well - scrolls anyway\");\n },\n\n /**\n * We will allow the scroll view to give up its lock iff it acquired the lock\n * during an animation. This is a very useful default that happens to satisfy\n * many common user experiences.\n *\n * - Stop a scroll on the left edge, then turn that into an outer view's\n * backswipe.\n * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n * view dismiss.\n * - However, without catching the scroll view mid-bounce (while it is\n * motionless), if you drag far enough for the scroll view to become\n * responder (and therefore drag the scroll view a bit), any backswipe\n * navigation of a swipe gesture higher in the view hierarchy, should be\n * rejected.\n */\n scrollResponderHandleTerminationRequest: function scrollResponderHandleTerminationRequest() {\n return !this.state.observedScrollSinceBecomingResponder;\n },\n\n /**\n * Invoke this from an `onTouchEnd` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchEnd: function scrollResponderHandleTouchEnd(e) {\n var nativeEvent = e.nativeEvent;\n this.state.isTouching = nativeEvent.touches.length !== 0;\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n },\n\n /**\n * Invoke this from an `onResponderRelease` event.\n */\n scrollResponderHandleResponderRelease: function scrollResponderHandleResponderRelease(e) {\n this.props.onResponderRelease && this.props.onResponderRelease(e); // By default scroll views will unfocus a textField\n // if another touch occurs outside of it\n\n var currentlyFocusedTextInput = _TextInputState.default.currentlyFocusedField();\n\n if (!this.props.keyboardShouldPersistTaps && currentlyFocusedTextInput != null && e.target !== currentlyFocusedTextInput && !this.state.observedScrollSinceBecomingResponder && !this.state.becameResponderWhileAnimating) {\n this.props.onScrollResponderKeyboardDismissed && this.props.onScrollResponderKeyboardDismissed(e);\n\n _TextInputState.default.blurTextInput(currentlyFocusedTextInput);\n }\n },\n scrollResponderHandleScroll: function scrollResponderHandleScroll(e) {\n this.state.observedScrollSinceBecomingResponder = true;\n this.props.onScroll && this.props.onScroll(e);\n },\n\n /**\n * Invoke this from an `onResponderGrant` event.\n */\n scrollResponderHandleResponderGrant: function scrollResponderHandleResponderGrant(e) {\n this.state.observedScrollSinceBecomingResponder = false;\n this.props.onResponderGrant && this.props.onResponderGrant(e);\n this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n },\n\n /**\n * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n * animation, and there's not an easy way to distinguish a drag vs. stopping\n * momentum.\n *\n * Invoke this from an `onScrollBeginDrag` event.\n */\n scrollResponderHandleScrollBeginDrag: function scrollResponderHandleScrollBeginDrag(e) {\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n },\n\n /**\n * Invoke this from an `onScrollEndDrag` event.\n */\n scrollResponderHandleScrollEndDrag: function scrollResponderHandleScrollEndDrag(e) {\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollBegin` event.\n */\n scrollResponderHandleMomentumScrollBegin: function scrollResponderHandleMomentumScrollBegin(e) {\n this.state.lastMomentumScrollBeginTime = Date.now();\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollEnd` event.\n */\n scrollResponderHandleMomentumScrollEnd: function scrollResponderHandleMomentumScrollEnd(e) {\n this.state.lastMomentumScrollEndTime = Date.now();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchStart` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchStart: function scrollResponderHandleTouchStart(e) {\n this.state.isTouching = true;\n this.props.onTouchStart && this.props.onTouchStart(e);\n },\n\n /**\n * Invoke this from an `onTouchMove` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchMove: function scrollResponderHandleTouchMove(e) {\n this.props.onTouchMove && this.props.onTouchMove(e);\n },\n\n /**\n * A helper function for this class that lets us quickly determine if the\n * view is currently animating. This is particularly useful to know when\n * a touch has just started or ended.\n */\n scrollResponderIsAnimating: function scrollResponderIsAnimating() {\n var now = Date.now();\n var timeSinceLastMomentumScrollEnd = now - this.state.lastMomentumScrollEndTime;\n var isAnimating = timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || this.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\n return isAnimating;\n },\n\n /**\n * Returns the node that represents native view that can be scrolled.\n * Components can pass what node to use by defining a `getScrollableNode`\n * function otherwise `this` is used.\n */\n scrollResponderGetScrollableNode: function scrollResponderGetScrollableNode() {\n return this.getScrollableNode ? this.getScrollableNode() : (0, _findNodeHandle.default)(this);\n },\n\n /**\n * A helper function to scroll to a specific point in the scrollview.\n * This is currently used to help focus on child textviews, but can also\n * be used to quickly scroll to any element we want to focus. Syntax:\n *\n * scrollResponderScrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})\n *\n * Note: The weird argument signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as as alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollResponderScrollTo: function scrollResponderScrollTo(x, y, animated) {\n if (typeof x === 'number') {\n console.warn('`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.');\n } else {\n var _ref = x || emptyObject;\n\n x = _ref.x;\n y = _ref.y;\n animated = _ref.animated;\n }\n\n var node = this.scrollResponderGetScrollableNode();\n var left = x || 0;\n var top = y || 0;\n\n if (typeof node.scroll === 'function') {\n node.scroll({\n top,\n left,\n behavior: !animated ? 'auto' : 'smooth'\n });\n } else {\n node.scrollLeft = left;\n node.scrollTop = top;\n }\n },\n\n /**\n * A helper function to zoom to a specific rect in the scrollview. The argument has the shape\n * {x: number; y: number; width: number; height: number; animated: boolean = true}\n *\n * @platform ios\n */\n scrollResponderZoomTo: function scrollResponderZoomTo(rect, animated) {\n if (_Platform.default.OS !== 'ios') {\n (0, _invariant.default)('zoomToRect is not implemented');\n }\n },\n\n /**\n * Displays the scroll indicators momentarily.\n */\n scrollResponderFlashScrollIndicators: function scrollResponderFlashScrollIndicators() {},\n\n /**\n * This method should be used as the callback to onFocus in a TextInputs'\n * parent view. Note that any module using this mixin needs to return\n * the parent view's ref in getScrollViewRef() in order to use this method.\n * @param {any} nodeHandle The TextInput node handle\n * @param {number} additionalOffset The scroll view's top \"contentInset\".\n * Default is 0.\n * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n * down to make it meet the keyboard's top. Default is false.\n */\n scrollResponderScrollNativeHandleToKeyboard: function scrollResponderScrollNativeHandleToKeyboard(nodeHandle, additionalOffset, preventNegativeScrollOffset) {\n this.additionalScrollOffset = additionalOffset || 0;\n this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n\n _UIManager.default.measureLayout(nodeHandle, (0, _findNodeHandle.default)(this.getInnerViewNode()), this.scrollResponderTextInputFocusError, this.scrollResponderInputMeasureAndScrollToKeyboard);\n },\n\n /**\n * The calculations performed here assume the scroll view takes up the entire\n * screen - even if has some content inset. We then measure the offsets of the\n * keyboard, and compensate both for the scroll view's \"contentInset\".\n *\n * @param {number} left Position of input w.r.t. table view.\n * @param {number} top Position of input w.r.t. table view.\n * @param {number} width Width of the text input.\n * @param {number} height Height of the text input.\n */\n scrollResponderInputMeasureAndScrollToKeyboard: function scrollResponderInputMeasureAndScrollToKeyboard(left, top, width, height) {\n var keyboardScreenY = _Dimensions.default.get('window').height;\n\n if (this.keyboardWillOpenTo) {\n keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY;\n }\n\n var scrollOffsetY = top - keyboardScreenY + height + this.additionalScrollOffset; // By default, this can scroll with negative offset, pulling the content\n // down so that the target component's bottom meets the keyboard's top.\n // If requested otherwise, cap the offset at 0 minimum to avoid content\n // shifting down.\n\n if (this.preventNegativeScrollOffset) {\n scrollOffsetY = Math.max(0, scrollOffsetY);\n }\n\n this.scrollResponderScrollTo({\n x: 0,\n y: scrollOffsetY,\n animated: true\n });\n this.additionalOffset = 0;\n this.preventNegativeScrollOffset = false;\n },\n scrollResponderTextInputFocusError: function scrollResponderTextInputFocusError(e) {\n console.error('Error measuring text field: ', e);\n },\n\n /**\n * `componentWillMount` is the closest thing to a standard \"constructor\" for\n * React components.\n *\n * The `keyboardWillShow` is called before input focus.\n */\n UNSAFE_componentWillMount: function UNSAFE_componentWillMount() {\n this.keyboardWillOpenTo = null;\n this.additionalScrollOffset = 0; // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillShow', this.scrollResponderKeyboardWillShow);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillHide', this.scrollResponderKeyboardWillHide);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidShow', this.scrollResponderKeyboardDidShow);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidHide', this.scrollResponderKeyboardDidHide);\n },\n\n /**\n * Warning, this may be called several times for a single keyboard opening.\n * It's best to store the information in this method and then take any action\n * at a later point (either in `keyboardDidShow` or other).\n *\n * Here's the order that events occur in:\n * - focus\n * - willShow {startCoordinates, endCoordinates} several times\n * - didShow several times\n * - blur\n * - willHide {startCoordinates, endCoordinates} several times\n * - didHide several times\n *\n * The `ScrollResponder` providesModule callbacks for each of these events.\n * Even though any user could have easily listened to keyboard events\n * themselves, using these `props` callbacks ensures that ordering of events\n * is consistent - and not dependent on the order that the keyboard events are\n * subscribed to. This matters when telling the scroll view to scroll to where\n * the keyboard is headed - the scroll responder better have been notified of\n * the keyboard destination before being instructed to scroll to where the\n * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n * will work.\n *\n * WARNING: These callbacks will fire even if a keyboard is displayed in a\n * different navigation pane. Filter out the events to determine if they are\n * relevant to you. (For example, only if you receive these callbacks after\n * you had explicitly focused a node etc).\n */\n scrollResponderKeyboardWillShow: function scrollResponderKeyboardWillShow(e) {\n this.keyboardWillOpenTo = e;\n this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n },\n scrollResponderKeyboardWillHide: function scrollResponderKeyboardWillHide(e) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n },\n scrollResponderKeyboardDidShow: function scrollResponderKeyboardDidShow(e) {\n // TODO(7693961): The event for DidShow is not available on iOS yet.\n // Use the one from WillShow and do not assign.\n if (e) {\n this.keyboardWillOpenTo = e;\n }\n\n this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e);\n },\n scrollResponderKeyboardDidHide: function scrollResponderKeyboardDidHide(e) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e);\n }\n};\nvar ScrollResponder = {\n Mixin: ScrollResponderMixin\n};\nvar _default = ScrollResponder;\nexports.default = _default;\nmodule.exports = exports.default;","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.40.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n const onUnmount = useUpdatedRef(fn);\n useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n const valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","/*\n * Copyright (c) 2016-present Invertase Limited\n */\n\nimport {\n generateId,\n objectHasProperty,\n isObject,\n isString,\n isAndroid,\n isIOS,\n isNumber,\n} from '../utils';\n\nimport validateAndroidNotification from './validateAndroidNotification';\nimport validateIOSNotification from './validateIOSNotification';\nimport { Notification } from '../types/Notification';\nimport { Platform } from 'react-native';\nimport { NotificationAndroid } from '../types/NotificationAndroid';\nimport { NotificationIOS } from '..';\n\n/**\n * Validate platform-specific notification\n *\n * Only throws a validation error if the device is on the same platform\n * Otherwise, will show a debug log in the console\n */\nexport const validatePlatformSpecificNotification = (\n out: Notification,\n specifiedPlatform: string,\n): NotificationAndroid | NotificationIOS => {\n try {\n if (specifiedPlatform === 'ios') {\n return validateIOSNotification(out.ios);\n } else {\n return validateAndroidNotification(out.android);\n }\n } catch (error) {\n const isRunningOnSamePlatform = specifiedPlatform === Platform.OS;\n if (isRunningOnSamePlatform) {\n throw error;\n } else {\n console.debug(`Invalid ${specifiedPlatform} notification ->`, error);\n return {};\n }\n }\n};\n\nexport default function validateNotification(notification: Notification): Notification {\n if (!isObject(notification)) {\n throw new Error(\"'notification' expected an object value.\");\n }\n\n // Defaults\n const out: Notification = {\n id: '',\n data: {},\n };\n\n if (isAndroid) {\n /* istanbul ignore next */\n out.android = {};\n } else if (isIOS) {\n out.ios = {};\n }\n\n /**\n * id\n */\n if (objectHasProperty(notification, 'id')) {\n if (!isString(notification.id) || !notification.id) {\n throw new Error(\"'notification.id' invalid notification ID, expected a unique string value.\");\n }\n\n out.id = notification.id;\n } else {\n out.id = generateId();\n }\n\n /**\n * title\n */\n if (objectHasProperty(notification, 'title')) {\n if (notification.title !== undefined && !isString(notification.title)) {\n throw new Error(\"'notification.title' expected a string value or undefined.\");\n }\n\n out.title = notification.title;\n }\n\n /**\n * body\n */\n if (objectHasProperty(notification, 'body')) {\n if (notification.body !== undefined && !isString(notification.body)) {\n throw new Error(\"'notification.body' expected a string value or undefined.\");\n }\n\n out.body = notification.body;\n }\n\n /**\n * subtitle\n */\n if (objectHasProperty(notification, 'subtitle')) {\n if (notification.subtitle !== undefined && !isString(notification.subtitle)) {\n throw new Error(\"'notification.subtitle' expected a string value or undefined.\");\n }\n\n out.subtitle = notification.subtitle;\n }\n\n /**\n * data\n */\n if (objectHasProperty(notification, 'data') && notification.data !== undefined) {\n if (!isObject(notification.data)) {\n throw new Error(\"'notification.data' expected an object value containing key/value pairs.\");\n }\n\n const entries = Object.entries(notification.data);\n\n for (let i = 0; i < entries.length; i++) {\n const [key, value] = entries[i];\n if (!isString(value) && !isNumber(value) && !isObject(value)) {\n throw new Error(\n `'notification.data' value for key \"${key}\" is invalid, expected a string value.`,\n );\n }\n }\n\n out.data = notification.data;\n }\n\n /**\n * android\n */\n const validatedAndroid = validatePlatformSpecificNotification(\n notification,\n 'android',\n ) as NotificationAndroid;\n\n if (isAndroid) {\n out.android = validatedAndroid;\n }\n\n /**\n * ios\n */\n const validatedIOS = validatePlatformSpecificNotification(notification, 'ios') as NotificationIOS;\n if (isIOS) {\n out.ios = validatedIOS;\n }\n\n return out;\n}\n","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport dismissKeyboard from '../../modules/dismissKeyboard';\nvar Keyboard = {\n addListener() {\n return {\n remove: () => {}\n };\n },\n\n dismiss() {\n dismissKeyboard();\n },\n\n removeAllListeners() {},\n\n removeListener() {}\n\n};\nexport default Keyboard;","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import { IOSNotificationPermissions } from '../types/NotificationIOS';\nimport { objectHasProperty, isBoolean } from '../utils';\n\nexport default function validateIOSPermissions(\n permissions: IOSNotificationPermissions,\n): IOSNotificationPermissions {\n const out: IOSNotificationPermissions = {\n alert: true,\n badge: true,\n sound: true,\n carPlay: true,\n provisional: false,\n announcement: false,\n criticalAlert: false,\n };\n\n if (!permissions) {\n return out;\n }\n\n if (objectHasProperty(permissions, 'alert')) {\n if (!isBoolean(permissions.alert)) {\n throw new Error(\"'alert' expected a boolean value.\");\n }\n\n out.alert = permissions.alert;\n }\n\n if (objectHasProperty(permissions, 'badge')) {\n if (!isBoolean(permissions.badge)) {\n throw new Error(\"'alert' badge a boolean value.\");\n }\n\n out.badge = permissions.badge;\n }\n\n if (objectHasProperty(permissions, 'sound')) {\n if (!isBoolean(permissions.sound)) {\n throw new Error(\"'sound' expected a boolean value.\");\n }\n\n out.sound = permissions.sound;\n }\n\n if (objectHasProperty(permissions, 'carPlay')) {\n if (!isBoolean(permissions.carPlay)) {\n throw new Error(\"'carPlay' expected a boolean value.\");\n }\n\n out.carPlay = permissions.carPlay;\n }\n\n if (objectHasProperty(permissions, 'provisional')) {\n if (!isBoolean(permissions.provisional)) {\n throw new Error(\"'provisional' expected a boolean value.\");\n }\n\n out.provisional = permissions.provisional;\n }\n\n if (objectHasProperty(permissions, 'announcement')) {\n if (!isBoolean(permissions.announcement)) {\n throw new Error(\"'announcement' expected a boolean value.\");\n }\n\n out.announcement = permissions.announcement;\n }\n\n if (objectHasProperty(permissions, 'criticalAlert')) {\n if (!isBoolean(permissions.criticalAlert)) {\n throw new Error(\"'criticalAlert' expected a boolean value.\");\n }\n\n out.criticalAlert = permissions.criticalAlert;\n }\n\n return out;\n}\n","'use strict';\nmodule.exports = () => {\n\tconst ret = {};\n\n\tret.promise = new Promise((resolve, reject) => {\n\t\tret.resolve = resolve;\n\t\tret.reject = reject;\n\t});\n\n\treturn ret;\n};\n","import { useRef, useEffect } from 'react';\n\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\nexport default function useMounted() {\n const mounted = useRef(true);\n const isMounted = useRef(() => mounted.current);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * Common (non-printable) keycodes for `keydown` and `keyup` events. Note that\n * `keypress` handles things differently and may not return the same values.\n */\nexport var BACKSPACE = 8;\nexport var TAB = 9;\nexport var RETURN = 13;\nexport var ESC = 27;\nexport var SPACE = 32;\nexport var LEFT = 37;\nexport var UP = 38;\nexport var RIGHT = 39;\nexport var DOWN = 40;\nexport var DEFAULT_LABELKEY = 'label';\nexport var ALIGN = {\n JUSTIFY: 'justify',\n LEFT: 'left',\n RIGHT: 'right'\n};\nexport var SIZE = {\n LARGE: 'large',\n LG: 'lg',\n SM: 'sm',\n SMALL: 'small'\n};","import { DEFAULT_LABELKEY } from '../constants';\nexport default function getStringLabelKey(labelKey) {\n return typeof labelKey === 'string' ? labelKey : DEFAULT_LABELKEY;\n}","var idCounter = 0;\nexport function head(arr) {\n return Array.isArray(arr) && arr.length ? arr[0] : undefined;\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function noop() {}\nexport function pick(obj, keys) {\n var result = {};\n keys.forEach(function (k) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n result[k] = obj[k];\n }\n });\n return result;\n}\nexport function uniqueId(prefix) {\n idCounter += 1;\n return (prefix == null ? '' : String(prefix)) + idCounter;\n} // Export for testing purposes.\n\nexport function valuesPolyfill(obj) {\n return Object.keys(obj).reduce(function (accum, key) {\n if (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n accum.push(obj[key]);\n }\n\n return accum;\n }, []);\n}\nexport function values(obj) {\n return isFunction(Object.values) ? Object.values(obj) : valuesPolyfill(obj);\n}","import invariant from 'invariant';\nimport getStringLabelKey from './getStringLabelKey';\nimport { isFunction, isString } from './nodash';\n\n/**\n * Retrieves the display string from an option. Options can be the string\n * themselves, or an object with a defined display string. Anything else throws\n * an error.\n */\nfunction getOptionLabel(option, labelKey) {\n // Handle internally created options first.\n if (!isString(option) && (option.paginationOption || option.customOption)) {\n return option[getStringLabelKey(labelKey)];\n }\n\n var optionLabel;\n\n if (isFunction(labelKey)) {\n optionLabel = labelKey(option);\n } else if (isString(option)) {\n optionLabel = option;\n } else {\n // `option` is an object and `labelKey` is a string.\n optionLabel = option[labelKey];\n }\n\n !isString(optionLabel) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'One or more options does not have a valid label string. Check the ' + '`labelKey` prop to ensure that it matches the correct option key and ' + 'provides a string for filtering and display.') : invariant(false) : void 0;\n return optionLabel;\n}\n\nexport default getOptionLabel;","import getOptionLabel from './getOptionLabel';\n\nfunction addCustomOption(results, props) {\n var allowNew = props.allowNew,\n labelKey = props.labelKey,\n text = props.text;\n\n if (!allowNew || !text.trim()) {\n return false;\n } // If the consumer has provided a callback, use that to determine whether or\n // not to add the custom option.\n\n\n if (typeof allowNew === 'function') {\n return allowNew(results, props);\n } // By default, don't add the custom option if there is an exact text match\n // with an existing option.\n\n\n return !results.some(function (o) {\n return getOptionLabel(o, labelKey) === text;\n });\n}\n\nexport default addCustomOption;","import { isString } from './nodash';\nexport default function getOptionProperty(option, key) {\n if (isString(option)) {\n return undefined;\n }\n\n return option[key];\n}","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Taken from: http://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript/18391901#18391901\n */\n\n/* eslint-disable max-len */\nvar map = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\xD0\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'OE',\n letters: \"\\x8C\\u0152\"\n}, {\n base: 'oe',\n letters: \"\\x9C\\u0153\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\n/* eslint-enable max-len */\n\nvar diacriticsMap = {};\n\nfor (var ii = 0; ii < map.length; ii++) {\n var letters = map[ii].letters;\n\n for (var jj = 0; jj < letters.length; jj++) {\n diacriticsMap[letters[jj]] = map[ii].base;\n }\n} // \"what?\" version ... http://jsperf.com/diacritics/12\n\n\nexport default function stripDiacritics(str) {\n return str.replace(/[\\u0300-\\u036F]/g, '') // Remove combining diacritics\n\n /* eslint-disable-next-line no-control-regex */\n .replace(/[^\\u0000-\\u007E]/g, function (a) {\n return diacriticsMap[a] || a;\n });\n}","import warning from 'warning';\nvar warned = {};\n/**\n * Copied from: https://github.com/ReactTraining/react-router/blob/master/modules/routerWarning.js\n */\n\nexport default function warn(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (!falseToWarn && message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n\n warned[message] = true;\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n warning.apply(void 0, [falseToWarn, \"[react-bootstrap-typeahead] \".concat(message)].concat(args));\n}\nexport function resetWarned() {\n warned = {};\n}","import isEqual from 'fast-deep-equal';\nimport getOptionProperty from './getOptionProperty';\nimport { isFunction, isString } from './nodash';\nimport stripDiacritics from './stripDiacritics';\nimport warn from './warn';\n\nfunction isMatch(input, string, props) {\n var searchStr = input;\n var str = string;\n\n if (!props.caseSensitive) {\n searchStr = searchStr.toLowerCase();\n str = str.toLowerCase();\n }\n\n if (props.ignoreDiacritics) {\n searchStr = stripDiacritics(searchStr);\n str = stripDiacritics(str);\n }\n\n return str.indexOf(searchStr) !== -1;\n}\n/**\n * Default algorithm for filtering results.\n */\n\n\nexport default function defaultFilterBy(option, props) {\n var filterBy = props.filterBy,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text; // Don't show selected options in the menu for the multi-select case.\n\n if (multiple && selected.some(function (o) {\n return isEqual(o, option);\n })) {\n return false;\n }\n\n if (isFunction(labelKey) && isMatch(text, labelKey(option), props)) {\n return true;\n }\n\n var fields = filterBy.slice();\n\n if (isString(labelKey)) {\n // Add the `labelKey` field to the list of fields if it isn't already there.\n if (fields.indexOf(labelKey) === -1) {\n fields.unshift(labelKey);\n }\n }\n\n if (isString(option)) {\n warn(fields.length <= 1, 'You cannot filter by properties when `option` is a string.');\n return isMatch(text, option, props);\n }\n\n return fields.some(function (field) {\n var value = getOptionProperty(option, field);\n\n if (!isString(value)) {\n warn(false, 'Fields passed to `filterBy` should have string values. Value will ' + 'be converted to a string; results may be unexpected.');\n value = String(value);\n }\n\n return isMatch(text, value, props);\n });\n}","export default function getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}","import invariant from 'invariant';\nimport stripDiacritics from './stripDiacritics';\nvar CASE_INSENSITIVE = 'i';\nvar COMBINING_MARKS = /[\\u0300-\\u036F]/;\n// Export for testing.\nexport function escapeStringRegexp(str) {\n !(typeof str === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`escapeStringRegexp` expected a string.') : invariant(false) : void 0; // Escape characters with special meaning either inside or outside character\n // sets. Use a simple backslash escape when it’s always valid, and a \\unnnn\n // escape when the simpler form would be disallowed by Unicode patterns’\n // stricter grammar.\n\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\nexport default function getMatchBounds(subject, str) {\n var search = new RegExp(escapeStringRegexp(stripDiacritics(str)), CASE_INSENSITIVE);\n var matches = search.exec(stripDiacritics(subject));\n\n if (!matches) {\n return null;\n }\n\n var start = matches.index;\n var matchLength = matches[0].length; // Account for combining marks, which changes the indices.\n\n if (COMBINING_MARKS.test(subject)) {\n // Starting at the beginning of the subject string, check for the number of\n // combining marks and increment the start index whenever one is found.\n for (var ii = 0; ii <= start; ii++) {\n if (COMBINING_MARKS.test(subject[ii])) {\n start += 1;\n }\n } // Similarly, increment the length of the match string if it contains a\n // combining mark.\n\n\n for (var _ii = start; _ii <= start + matchLength; _ii++) {\n if (COMBINING_MARKS.test(subject[_ii])) {\n matchLength += 1;\n }\n }\n }\n\n return {\n end: start + matchLength,\n start: start\n };\n}","import getMatchBounds from './getMatchBounds';\nimport getOptionLabel from './getOptionLabel';\n\nfunction getHintText(props) {\n var activeIndex = props.activeIndex,\n initialItem = props.initialItem,\n isFocused = props.isFocused,\n isMenuShown = props.isMenuShown,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text; // Don't display a hint under the following conditions:\n\n if ( // No text entered.\n !text || // The input is not focused.\n !isFocused || // The menu is hidden.\n !isMenuShown || // No item in the menu.\n !initialItem || // The initial item is a custom option.\n initialItem.customOption || // One of the menu items is active.\n activeIndex > -1 || // There's already a selection in single-select mode.\n !!selected.length && !multiple) {\n return '';\n }\n\n var initialItemStr = getOptionLabel(initialItem, labelKey);\n var bounds = getMatchBounds(initialItemStr.toLowerCase(), text.toLowerCase());\n\n if (!(bounds && bounds.start === 0)) {\n return '';\n } // Text matching is case- and accent-insensitive, so to display the hint\n // correctly, splice the input string with the hint string.\n\n\n return text + initialItemStr.slice(bounds.end, initialItemStr.length);\n}\n\nexport default getHintText;","export default function getMenuItemId(id, position) {\n return \"\".concat(id || '', \"-item-\").concat(position);\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"activeIndex\", \"id\", \"isFocused\", \"isMenuShown\", \"multiple\", \"onFocus\", \"placeholder\"],\n _excluded2 = [\"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport cx from 'classnames';\nimport getMenuItemId from './getMenuItemId';\n\nvar getInputProps = function getInputProps(_ref) {\n var activeIndex = _ref.activeIndex,\n id = _ref.id,\n isFocused = _ref.isFocused,\n isMenuShown = _ref.isMenuShown,\n multiple = _ref.multiple,\n onFocus = _ref.onFocus,\n placeholder = _ref.placeholder,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return function () {\n var _cx;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n className = _ref2.className,\n inputProps = _objectWithoutProperties(_ref2, _excluded2);\n\n var props = _objectSpread(_objectSpread(_objectSpread({\n /* eslint-disable sort-keys */\n // These props can be overridden by values in `inputProps`.\n autoComplete: 'off',\n placeholder: placeholder,\n type: 'text'\n }, inputProps), rest), {}, {\n 'aria-activedescendant': activeIndex >= 0 ? getMenuItemId(id, activeIndex) : undefined,\n 'aria-autocomplete': 'both',\n 'aria-expanded': isMenuShown,\n 'aria-haspopup': 'listbox',\n 'aria-owns': isMenuShown ? id : undefined,\n className: cx((_cx = {}, _defineProperty(_cx, className || '', !multiple), _defineProperty(_cx, \"focus\", isFocused), _cx)),\n onClick: function onClick(e) {\n // Re-open the menu if it's closed, eg: via ESC.\n onFocus && onFocus(e);\n inputProps.onClick && inputProps.onClick(e);\n },\n onFocus: onFocus,\n // Comboboxes are single-select by definition:\n // https://www.w3.org/TR/wai-aria-practices-1.1/#combobox\n role: 'combobox'\n /* eslint-enable sort-keys */\n\n });\n\n if (!multiple) {\n return props;\n }\n\n return _objectSpread(_objectSpread({}, props), {}, {\n 'aria-autocomplete': 'list',\n 'aria-expanded': undefined,\n inputClassName: className,\n role: undefined\n });\n };\n};\n\nexport default getInputProps;","import getOptionLabel from './getOptionLabel';\nimport { head } from './nodash';\n\nfunction getInputText(props) {\n var activeItem = props.activeItem,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text;\n\n if (activeItem) {\n // Display the input value if the pagination item is active.\n return getOptionLabel(activeItem, labelKey);\n }\n\n var selectedItem = !multiple && !!selected.length && head(selected);\n\n if (selectedItem) {\n return getOptionLabel(selectedItem, labelKey);\n }\n\n return text;\n}\n\nexport default getInputText;","import getOptionProperty from './getOptionProperty';\nimport { head } from './nodash';\n\nfunction getIsOnlyResult(props) {\n var allowNew = props.allowNew,\n highlightOnlyResult = props.highlightOnlyResult,\n results = props.results;\n\n if (!highlightOnlyResult || allowNew) {\n return false;\n }\n\n return results.length === 1 && !getOptionProperty(head(results), 'disabled');\n}\n\nexport default getIsOnlyResult;","/**\n * Truncates the result set based on `maxResults` and returns the new set.\n */\nfunction getTruncatedOptions(options, maxResults) {\n if (!maxResults || maxResults >= options.length) {\n return options;\n }\n\n return options.slice(0, maxResults);\n}\n\nexport default getTruncatedOptions;","import { DOWN, UP } from '../constants';\n\nfunction skipDisabledOptions(currentIndex, keyCode, items) {\n var newIndex = currentIndex;\n\n while (items[newIndex] && items[newIndex].disabled) {\n newIndex += keyCode === UP ? -1 : 1;\n }\n\n return newIndex;\n}\n\nexport default function getUpdatedActiveIndex(currentIndex, keyCode, items) {\n var newIndex = currentIndex; // Increment or decrement index based on user keystroke.\n\n newIndex += keyCode === UP ? -1 : 1; // Skip over any disabled options.\n\n newIndex = skipDisabledOptions(newIndex, keyCode, items); // If we've reached the end, go back to the beginning or vice-versa.\n\n if (newIndex === items.length) {\n newIndex = -1;\n } else if (newIndex === -2) {\n newIndex = items.length - 1; // Skip over any disabled options.\n\n newIndex = skipDisabledOptions(newIndex, keyCode, items);\n }\n\n return newIndex;\n}","/**\n * Check if an input type is selectable, based on WHATWG spec.\n *\n * See:\n * - https://stackoverflow.com/questions/21177489/selectionstart-selectionend-on-input-type-number-no-longer-allowed-in-chrome/24175357\n * - https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n */\nexport default function isSelectable(inputNode) {\n return inputNode.selectionStart != null;\n}","/**\n * Prevent the main input from blurring when a menu item or the clear button is\n * clicked. (#226 & #310)\n */\nexport default function preventInputBlur(e) {\n e.preventDefault();\n}","export function isSizeLarge(size) {\n return size === 'large' || size === 'lg';\n}\nexport function isSizeSmall(size) {\n return size === 'small' || size === 'sm';\n}","import { createContext, useContext } from 'react';\nimport { noop } from '../utils';\nexport var TypeaheadContext = /*#__PURE__*/createContext({\n activeIndex: -1,\n hintText: '',\n id: '',\n initialItem: null,\n inputNode: null,\n isOnlyResult: false,\n onActiveItemChange: noop,\n onAdd: noop,\n onInitialItemChange: noop,\n onMenuItemClick: noop,\n selectHintOnEnter: undefined,\n setItem: noop\n});\nexport var useTypeaheadContext = function useTypeaheadContext() {\n return useContext(TypeaheadContext);\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { useEffect } from 'react';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport { TypeaheadContext } from './Context';\nimport { getHintText, getInputProps, getInputText, getIsOnlyResult, pick } from '../utils';\nimport { RETURN } from '../constants';\nvar inputPropKeys = ['activeIndex', 'disabled', 'id', 'inputRef', 'isFocused', 'isMenuShown', 'multiple', 'onBlur', 'onChange', 'onFocus', 'onKeyDown', 'placeholder'];\nvar propKeys = ['activeIndex', 'hideMenu', 'isMenuShown', 'labelKey', 'onClear', 'onHide', 'onRemove', 'results', 'selected', 'text', 'toggleMenu'];\nvar contextKeys = ['activeIndex', 'id', 'initialItem', 'inputNode', 'onActiveItemChange', 'onAdd', 'onInitialItemChange', 'onMenuItemClick', 'selectHintOnEnter', 'setItem'];\n\nvar TypeaheadManager = function TypeaheadManager(props) {\n var allowNew = props.allowNew,\n children = props.children,\n initialItem = props.initialItem,\n isMenuShown = props.isMenuShown,\n onAdd = props.onAdd,\n onInitialItemChange = props.onInitialItemChange,\n onKeyDown = props.onKeyDown,\n onMenuToggle = props.onMenuToggle,\n results = props.results;\n var prevProps = usePrevious(props);\n useEffect(function () {\n // Clear the initial item when there are no results.\n if (!(allowNew || results.length)) {\n onInitialItemChange(null);\n }\n });\n useEffect(function () {\n if (prevProps && prevProps.isMenuShown !== isMenuShown) {\n onMenuToggle(isMenuShown);\n }\n });\n\n var handleKeyDown = function handleKeyDown(e) {\n switch (e.keyCode) {\n case RETURN:\n if (initialItem && getIsOnlyResult(props)) {\n onAdd(initialItem);\n }\n\n break;\n\n default:\n break;\n }\n\n onKeyDown(e);\n };\n\n var childProps = _objectSpread(_objectSpread({}, pick(props, propKeys)), {}, {\n getInputProps: getInputProps(_objectSpread(_objectSpread({}, pick(props, inputPropKeys)), {}, {\n onKeyDown: handleKeyDown,\n value: getInputText(props)\n }))\n });\n\n var contextValue = _objectSpread(_objectSpread({}, pick(props, contextKeys)), {}, {\n hintText: getHintText(props),\n isOnlyResult: getIsOnlyResult(props)\n });\n\n return /*#__PURE__*/React.createElement(TypeaheadContext.Provider, {\n value: contextValue\n }, children(childProps));\n};\n\nexport default TypeaheadManager;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport { isFunction, values, warn } from './utils';\nimport { SIZE } from './constants';\nvar INPUT_PROPS_BLACKLIST = [{\n alt: 'onBlur',\n prop: 'onBlur'\n}, {\n alt: 'onInputChange',\n prop: 'onChange'\n}, {\n alt: 'onFocus',\n prop: 'onFocus'\n}, {\n alt: 'onKeyDown',\n prop: 'onKeyDown'\n}];\nexport var sizeType = PropTypes.oneOf(values(SIZE));\n/**\n * Allows additional warnings or messaging related to prop validation.\n */\n\nexport function checkPropType(validator, callback) {\n return function (props, propName, componentName) {\n PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n isFunction(callback) && callback(props, propName, componentName);\n };\n}\nexport function caseSensitiveType(props, propName, componentName) {\n var caseSensitive = props.caseSensitive,\n filterBy = props.filterBy;\n warn(!caseSensitive || typeof filterBy !== 'function', 'Your `filterBy` function will override the `caseSensitive` prop.');\n}\nexport function deprecated(validator, reason) {\n return function (props, propName, componentName) {\n if (props[propName] != null) {\n warn(false, \"The `\".concat(propName, \"` prop is deprecated. \").concat(reason));\n }\n\n return PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n };\n}\nexport function defaultInputValueType(props, propName, componentName) {\n var defaultInputValue = props.defaultInputValue,\n defaultSelected = props.defaultSelected,\n multiple = props.multiple,\n selected = props.selected;\n var name = defaultSelected.length ? 'defaultSelected' : 'selected';\n warn(!(!multiple && defaultInputValue && (defaultSelected.length || selected && selected.length)), \"`defaultInputValue` will be overridden by the value from `\".concat(name, \"`.\"));\n}\nexport function defaultSelectedType(props, propName, componentName) {\n var defaultSelected = props.defaultSelected,\n multiple = props.multiple;\n warn(multiple || defaultSelected.length <= 1, 'You are passing multiple options to the `defaultSelected` prop of a ' + 'Typeahead in single-select mode. The selections will be truncated to a ' + 'single selection.');\n}\nexport function highlightOnlyResultType(props, propName, componentName) {\n var allowNew = props.allowNew,\n highlightOnlyResult = props.highlightOnlyResult;\n warn(!(highlightOnlyResult && allowNew), '`highlightOnlyResult` will not work with `allowNew`.');\n}\nexport function ignoreDiacriticsType(props, propName, componentName) {\n var filterBy = props.filterBy,\n ignoreDiacritics = props.ignoreDiacritics;\n warn(ignoreDiacritics || typeof filterBy !== 'function', 'Your `filterBy` function will override the `ignoreDiacritics` prop.');\n}\nexport function inputPropsType(props, propName, componentName) {\n var inputProps = props.inputProps;\n\n if (!(inputProps && Object.prototype.toString.call(inputProps) === '[object Object]')) {\n return;\n } // Blacklisted properties.\n\n\n INPUT_PROPS_BLACKLIST.forEach(function (_ref) {\n var alt = _ref.alt,\n prop = _ref.prop;\n var msg = alt ? \" Use the top-level `\".concat(alt, \"` prop instead.\") : null;\n warn(!inputProps[prop], \"The `\".concat(prop, \"` property of `inputProps` will be ignored.\").concat(msg));\n });\n}\nexport function isRequiredForA11y(props, propName, componentName) {\n warn(props[propName] != null, \"The prop `\".concat(propName, \"` is required to make `\").concat(componentName, \"` \") + 'accessible for users of assistive technologies such as screen readers.');\n}\nexport function labelKeyType(props, propName, componentName) {\n var allowNew = props.allowNew,\n labelKey = props.labelKey;\n warn(!(isFunction(labelKey) && allowNew), '`labelKey` must be a string when `allowNew={true}`.');\n}\nexport var optionType = PropTypes.oneOfType([PropTypes.object, PropTypes.string]);\nexport function selectedType(props, propName, componentName) {\n var multiple = props.multiple,\n onChange = props.onChange,\n selected = props.selected;\n warn(multiple || !selected || selected.length <= 1, 'You are passing multiple options to the `selected` prop of a Typeahead ' + 'in single-select mode. This may lead to unexpected behaviors or errors.');\n warn(!selected || selected && isFunction(onChange), 'You provided a `selected` prop without an `onChange` handler. If you ' + 'want the typeahead to be uncontrolled, use `defaultSelected`. ' + 'Otherwise, set `onChange`.');\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"onChange\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport isEqual from 'fast-deep-equal';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TypeaheadManager from './TypeaheadManager';\nimport { caseSensitiveType, checkPropType, defaultInputValueType, defaultSelectedType, deprecated, highlightOnlyResultType, ignoreDiacriticsType, isRequiredForA11y, labelKeyType, optionType, selectedType } from '../propTypes';\nimport { addCustomOption, defaultFilterBy, getOptionLabel, getStringLabelKey, getUpdatedActiveIndex, getTruncatedOptions, head, isShown, isString, noop, uniqueId, validateSelectedPropChange } from '../utils';\nimport { DEFAULT_LABELKEY, DOWN, ESC, RETURN, TAB, UP } from '../constants';\nvar propTypes = {\n /**\n * Allows the creation of new selections on the fly. Note that any new items\n * will be added to the list of selections, but not the list of original\n * options unless handled as such by `Typeahead`'s parent.\n *\n * If a function is specified, it will be used to determine whether a custom\n * option should be included. The return value should be true or false.\n */\n allowNew: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n\n /**\n * Autofocus the input when the component initially mounts.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Whether or not filtering should be case-sensitive.\n */\n caseSensitive: checkPropType(PropTypes.bool, caseSensitiveType),\n\n /**\n * The initial value displayed in the text input.\n */\n defaultInputValue: checkPropType(PropTypes.string, defaultInputValueType),\n\n /**\n * Whether or not the menu is displayed upon initial render.\n */\n defaultOpen: PropTypes.bool,\n\n /**\n * Specify any pre-selected options. Use only if you want the component to\n * be uncontrolled.\n */\n defaultSelected: checkPropType(PropTypes.arrayOf(optionType), defaultSelectedType),\n\n /**\n * Either an array of fields in `option` to search, or a custom filtering\n * callback.\n */\n filterBy: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]),\n\n /**\n * Highlights the menu item if there is only one result and allows selecting\n * that item by hitting enter. Does not work with `allowNew`.\n */\n highlightOnlyResult: checkPropType(PropTypes.bool, highlightOnlyResultType),\n\n /**\n * An html id attribute, required for assistive technologies such as screen\n * readers.\n */\n id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n\n /**\n * Whether the filter should ignore accents and other diacritical marks.\n */\n ignoreDiacritics: checkPropType(PropTypes.bool, ignoreDiacriticsType),\n\n /**\n * Specify the option key to use for display or a function returning the\n * display string. By default, the selector will use the `label` key.\n */\n labelKey: checkPropType(PropTypes.oneOfType([PropTypes.string, PropTypes.func]), labelKeyType),\n\n /**\n * Maximum number of results to display by default. Mostly done for\n * performance reasons so as not to render too many DOM nodes in the case of\n * large data sets.\n */\n maxResults: PropTypes.number,\n\n /**\n * Number of input characters that must be entered before showing results.\n */\n minLength: PropTypes.number,\n\n /**\n * Whether or not multiple selections are allowed.\n */\n multiple: PropTypes.bool,\n\n /**\n * Invoked when the input is blurred. Receives an event.\n */\n onBlur: PropTypes.func,\n\n /**\n * Invoked whenever items are added or removed. Receives an array of the\n * selected options.\n */\n onChange: PropTypes.func,\n\n /**\n * Invoked when the input is focused. Receives an event.\n */\n onFocus: PropTypes.func,\n\n /**\n * Invoked when the input value changes. Receives the string value of the\n * input.\n */\n onInputChange: PropTypes.func,\n\n /**\n * Invoked when a key is pressed. Receives an event.\n */\n onKeyDown: PropTypes.func,\n\n /**\n * Invoked when menu visibility changes.\n */\n onMenuToggle: PropTypes.func,\n\n /**\n * Invoked when the pagination menu item is clicked. Receives an event.\n */\n onPaginate: PropTypes.func,\n\n /**\n * Whether or not the menu should be displayed. `undefined` allows the\n * component to control visibility, while `true` and `false` show and hide\n * the menu, respectively.\n */\n open: PropTypes.bool,\n\n /**\n * Full set of options, including pre-selected options. Must either be an\n * array of objects (recommended) or strings.\n */\n options: PropTypes.arrayOf(optionType).isRequired,\n\n /**\n * Give user the ability to display additional results if the number of\n * results exceeds `maxResults`.\n */\n paginate: PropTypes.bool,\n\n /**\n * The selected option(s) displayed in the input. Use this prop if you want\n * to control the component via its parent.\n */\n selected: checkPropType(PropTypes.arrayOf(optionType), selectedType),\n\n /**\n * Allows selecting the hinted result by pressing enter.\n */\n selectHintOnEnter: deprecated(PropTypes.bool, 'Use the `shouldSelect` prop on the `Hint` component to define which ' + 'keystrokes can select the hint.')\n};\nvar defaultProps = {\n allowNew: false,\n autoFocus: false,\n caseSensitive: false,\n defaultInputValue: '',\n defaultOpen: false,\n defaultSelected: [],\n filterBy: [],\n highlightOnlyResult: false,\n ignoreDiacritics: true,\n labelKey: DEFAULT_LABELKEY,\n maxResults: 100,\n minLength: 0,\n multiple: false,\n onBlur: noop,\n onFocus: noop,\n onInputChange: noop,\n onKeyDown: noop,\n onMenuToggle: noop,\n onPaginate: noop,\n paginate: true\n};\nexport function getInitialState(props) {\n var defaultInputValue = props.defaultInputValue,\n defaultOpen = props.defaultOpen,\n defaultSelected = props.defaultSelected,\n maxResults = props.maxResults,\n multiple = props.multiple;\n var selected = props.selected ? props.selected.slice() : defaultSelected.slice();\n var text = defaultInputValue;\n\n if (!multiple && selected.length) {\n // Set the text if an initial selection is passed in.\n text = getOptionLabel(head(selected), props.labelKey);\n\n if (selected.length > 1) {\n // Limit to 1 selection in single-select mode.\n selected = selected.slice(0, 1);\n }\n }\n\n return {\n activeIndex: -1,\n activeItem: null,\n initialItem: null,\n isFocused: false,\n selected: selected,\n showMenu: defaultOpen,\n shownResults: maxResults,\n text: text\n };\n}\nexport function clearTypeahead(state, props) {\n return _objectSpread(_objectSpread({}, getInitialState(props)), {}, {\n isFocused: state.isFocused,\n selected: [],\n text: ''\n });\n}\nexport function hideMenu(state, props) {\n var _getInitialState = getInitialState(props),\n activeIndex = _getInitialState.activeIndex,\n activeItem = _getInitialState.activeItem,\n initialItem = _getInitialState.initialItem,\n shownResults = _getInitialState.shownResults;\n\n return {\n activeIndex: activeIndex,\n activeItem: activeItem,\n initialItem: initialItem,\n showMenu: false,\n shownResults: shownResults\n };\n}\nexport function toggleMenu(state, props) {\n return state.showMenu ? hideMenu(state, props) : {\n showMenu: true\n };\n}\n/**\n * Manually trigger the input's change event.\n * https://stackoverflow.com/questions/23892547/what-is-the-best-way-to-trigger-onchange-event-in-react-js/46012210#46012210\n */\n\nfunction triggerInputChange(input, value) {\n var inputValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value');\n inputValue && inputValue.set && inputValue.set.call(input, value);\n var e = new Event('input', {\n bubbles: true\n });\n input.dispatchEvent(e);\n}\n\nvar Typeahead = /*#__PURE__*/function (_React$Component) {\n _inherits(Typeahead, _React$Component);\n\n var _super = _createSuper(Typeahead);\n\n function Typeahead() {\n var _this;\n\n _classCallCheck(this, Typeahead);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", getInitialState(_this.props));\n\n _defineProperty(_assertThisInitialized(_this), \"inputNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"isMenuShown\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"items\", []);\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n _this.inputNode && _this.inputNode.blur();\n\n _this.hideMenu();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n _this.setState(clearTypeahead);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", function () {\n _this.inputNode && _this.inputNode.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInput\", function () {\n return _this.inputNode;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"inputRef\", function (inputNode) {\n _this.inputNode = inputNode;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setItem\", function (item, position) {\n _this.items[position] = item;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"hideMenu\", function () {\n _this.setState(hideMenu);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleMenu\", function () {\n _this.setState(toggleMenu);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleActiveIndexChange\", function (activeIndex) {\n _this.setState(function (state) {\n return {\n activeIndex: activeIndex,\n activeItem: activeIndex === -1 ? null : state.activeItem\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleActiveItemChange\", function (activeItem) {\n // Don't update the active item if it hasn't changed.\n if (!isEqual(activeItem, _this.state.activeItem)) {\n _this.setState({\n activeItem: activeItem\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleBlur\", function (e) {\n e.persist();\n\n _this.setState({\n isFocused: false\n }, function () {\n return _this.props.onBlur(e);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleChange\", function (selected) {\n _this.props.onChange && _this.props.onChange(selected);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleClear\", function () {\n _this.inputNode && triggerInputChange(_this.inputNode, '');\n\n _this.setState(clearTypeahead, function () {\n // Change handler is automatically triggered for single selections but\n // not multi-selections.\n if (_this.props.multiple) {\n _this._handleChange([]);\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleFocus\", function (e) {\n e.persist();\n\n _this.setState({\n isFocused: true,\n showMenu: true\n }, function () {\n return _this.props.onFocus(e);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleInitialItemChange\", function (initialItem) {\n // Don't update the initial item if it hasn't changed.\n if (!isEqual(initialItem, _this.state.initialItem)) {\n _this.setState({\n initialItem: initialItem\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleInputChange\", function (e) {\n e.persist();\n var text = e.currentTarget.value;\n var _this$props = _this.props,\n multiple = _this$props.multiple,\n onInputChange = _this$props.onInputChange; // Clear selections when the input value changes in single-select mode.\n\n var shouldClearSelections = _this.state.selected.length && !multiple;\n\n _this.setState(function (state, props) {\n var _getInitialState2 = getInitialState(props),\n activeIndex = _getInitialState2.activeIndex,\n activeItem = _getInitialState2.activeItem,\n shownResults = _getInitialState2.shownResults;\n\n return {\n activeIndex: activeIndex,\n activeItem: activeItem,\n selected: shouldClearSelections ? [] : state.selected,\n showMenu: true,\n shownResults: shownResults,\n text: text\n };\n }, function () {\n onInputChange(text, e);\n shouldClearSelections && _this._handleChange([]);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleKeyDown\", function (e) {\n var activeItem = _this.state.activeItem; // Skip most actions when the menu is hidden.\n\n if (!_this.isMenuShown) {\n if (e.keyCode === UP || e.keyCode === DOWN) {\n _this.setState({\n showMenu: true\n });\n }\n\n _this.props.onKeyDown(e);\n\n return;\n }\n\n switch (e.keyCode) {\n case UP:\n case DOWN:\n // Prevent input cursor from going to the beginning when pressing up.\n e.preventDefault();\n\n _this._handleActiveIndexChange(getUpdatedActiveIndex(_this.state.activeIndex, e.keyCode, _this.items));\n\n break;\n\n case RETURN:\n // Prevent form submission while menu is open.\n e.preventDefault();\n activeItem && _this._handleMenuItemSelect(activeItem, e);\n break;\n\n case ESC:\n case TAB:\n // ESC simply hides the menu. TAB will blur the input and move focus to\n // the next item; hide the menu so it doesn't gain focus.\n _this.hideMenu();\n\n break;\n\n default:\n break;\n }\n\n _this.props.onKeyDown(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleMenuItemSelect\", function (option, e) {\n if (option.paginationOption) {\n _this._handlePaginate(e);\n } else {\n _this._handleSelectionAdd(option);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handlePaginate\", function (e) {\n e.persist();\n\n _this.setState(function (state, props) {\n return {\n shownResults: state.shownResults + props.maxResults\n };\n }, function () {\n return _this.props.onPaginate(e, _this.state.shownResults);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleSelectionAdd\", function (option) {\n var _this$props2 = _this.props,\n multiple = _this$props2.multiple,\n labelKey = _this$props2.labelKey;\n var selected;\n var selection = option;\n var text; // Add a unique id to the custom selection. Avoid doing this in `render` so\n // the id doesn't increment every time.\n\n if (!isString(selection) && selection.customOption) {\n selection = _objectSpread(_objectSpread({}, selection), {}, {\n id: uniqueId('new-id-')\n });\n }\n\n if (multiple) {\n // If multiple selections are allowed, add the new selection to the\n // existing selections.\n selected = _this.state.selected.concat(selection);\n text = '';\n } else {\n // If only a single selection is allowed, replace the existing selection\n // with the new one.\n selected = [selection];\n text = getOptionLabel(selection, labelKey);\n }\n\n _this.setState(function (state, props) {\n return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n initialItem: selection,\n selected: selected,\n text: text\n });\n }, function () {\n return _this._handleChange(selected);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleSelectionRemove\", function (selection) {\n var selected = _this.state.selected.filter(function (option) {\n return !isEqual(option, selection);\n }); // Make sure the input stays focused after the item is removed.\n\n\n _this.focus();\n\n _this.setState(function (state, props) {\n return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n selected: selected\n });\n }, function () {\n return _this._handleChange(selected);\n });\n });\n\n return _this;\n }\n\n _createClass(Typeahead, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.autoFocus && this.focus();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props3 = this.props,\n labelKey = _this$props3.labelKey,\n multiple = _this$props3.multiple,\n selected = _this$props3.selected;\n validateSelectedPropChange(selected, prevProps.selected); // Sync selections in state with those in props.\n\n if (selected && !isEqual(selected, prevState.selected)) {\n this.setState({\n selected: selected\n });\n\n if (!multiple) {\n this.setState({\n text: selected.length ? getOptionLabel(head(selected), labelKey) : ''\n });\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // Omit `onChange` so Flow doesn't complain.\n var _this$props4 = this.props,\n onChange = _this$props4.onChange,\n otherProps = _objectWithoutProperties(_this$props4, _excluded);\n\n var mergedPropsAndState = _objectSpread(_objectSpread({}, otherProps), this.state);\n\n var filterBy = mergedPropsAndState.filterBy,\n labelKey = mergedPropsAndState.labelKey,\n options = mergedPropsAndState.options,\n paginate = mergedPropsAndState.paginate,\n shownResults = mergedPropsAndState.shownResults,\n text = mergedPropsAndState.text;\n this.isMenuShown = isShown(mergedPropsAndState);\n this.items = []; // Reset items on re-render.\n\n var results = [];\n\n if (this.isMenuShown) {\n var cb = typeof filterBy === 'function' ? filterBy : defaultFilterBy;\n results = options.filter(function (option) {\n return cb(option, mergedPropsAndState);\n }); // This must come before results are truncated.\n\n var shouldPaginate = paginate && results.length > shownResults; // Truncate results if necessary.\n\n results = getTruncatedOptions(results, shownResults); // Add the custom option if necessary.\n\n if (addCustomOption(results, mergedPropsAndState)) {\n results.push(_defineProperty({\n customOption: true\n }, getStringLabelKey(labelKey), text));\n } // Add the pagination item if necessary.\n\n\n if (shouldPaginate) {\n var _results$push2;\n\n results.push((_results$push2 = {}, _defineProperty(_results$push2, getStringLabelKey(labelKey), ''), _defineProperty(_results$push2, \"paginationOption\", true), _results$push2));\n }\n }\n\n return /*#__PURE__*/React.createElement(TypeaheadManager, _extends({}, mergedPropsAndState, {\n hideMenu: this.hideMenu,\n inputNode: this.inputNode,\n inputRef: this.inputRef,\n isMenuShown: this.isMenuShown,\n onActiveItemChange: this._handleActiveItemChange,\n onAdd: this._handleSelectionAdd,\n onBlur: this._handleBlur,\n onChange: this._handleInputChange,\n onClear: this._handleClear,\n onFocus: this._handleFocus,\n onHide: this.hideMenu,\n onInitialItemChange: this._handleInitialItemChange,\n onKeyDown: this._handleKeyDown,\n onMenuItemClick: this._handleMenuItemSelect,\n onRemove: this._handleSelectionRemove,\n results: results,\n setItem: this.setItem,\n toggleMenu: this.toggleMenu\n }));\n }\n }]);\n\n return Typeahead;\n}(React.Component);\n\n_defineProperty(Typeahead, \"propTypes\", propTypes);\n\n_defineProperty(Typeahead, \"defaultProps\", defaultProps);\n\nexport default Typeahead;","import warn from './warn';\nexport default function validateSelectedPropChange(prevSelected, selected) {\n var uncontrolledToControlled = !prevSelected && selected;\n var controlledToUncontrolled = prevSelected && !selected;\n var from, to, precedent;\n\n if (uncontrolledToControlled) {\n from = 'uncontrolled';\n to = 'controlled';\n precedent = 'an';\n } else {\n from = 'controlled';\n to = 'uncontrolled';\n precedent = 'a';\n }\n\n var message = \"You are changing \".concat(precedent, \" \").concat(from, \" typeahead to be \").concat(to, \". \") + \"Input elements should not switch from \".concat(from, \" to \").concat(to, \" (or vice versa). \") + 'Decide between using a controlled or uncontrolled element for the ' + 'lifetime of the component.';\n warn(!(uncontrolledToControlled || controlledToUncontrolled), message);\n}","export default function isShown(props) {\n var open = props.open,\n minLength = props.minLength,\n showMenu = props.showMenu,\n text = props.text; // If menu visibility is controlled via props, that value takes precedence.\n\n if (open || open === false) {\n return open;\n }\n\n if (text.length < minLength) {\n return false;\n }\n\n return showMenu;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"allowNew\", \"delay\", \"emptyLabel\", \"isLoading\", \"minLength\", \"onInputChange\", \"onSearch\", \"options\", \"promptText\", \"searchText\", \"useCache\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport debounce from 'lodash.debounce';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef, useCallback, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport Typeahead from '../core/Typeahead';\nimport { optionType } from '../propTypes';\nimport { getDisplayName, isFunction, warn } from '../utils';\nvar propTypes = {\n /**\n * Delay, in milliseconds, before performing search.\n */\n delay: PropTypes.number,\n\n /**\n * Whether or not a request is currently pending. Necessary for the\n * container to know when new results are available.\n */\n isLoading: PropTypes.bool.isRequired,\n\n /**\n * Number of input characters that must be entered before showing results.\n */\n minLength: PropTypes.number,\n\n /**\n * Callback to perform when the search is executed.\n */\n onSearch: PropTypes.func.isRequired,\n\n /**\n * Options to be passed to the typeahead. Will typically be the query\n * results, but can also be initial default options.\n */\n options: PropTypes.arrayOf(optionType),\n\n /**\n * Message displayed in the menu when there is no user input.\n */\n promptText: PropTypes.node,\n\n /**\n * Message displayed in the menu while the request is pending.\n */\n searchText: PropTypes.node,\n\n /**\n * Whether or not the component should cache query results.\n */\n useCache: PropTypes.bool\n};\nvar defaultProps = {\n delay: 200,\n minLength: 2,\n options: [],\n promptText: 'Type to search...',\n searchText: 'Searching...',\n useCache: true\n};\n\n/**\n * Logic that encapsulates common behavior and functionality around\n * asynchronous searches, including:\n *\n * - Debouncing user input\n * - Optional query caching\n * - Search prompt and empty results behaviors\n */\nexport function useAsync(props) {\n var allowNew = props.allowNew,\n delay = props.delay,\n emptyLabel = props.emptyLabel,\n isLoading = props.isLoading,\n minLength = props.minLength,\n onInputChange = props.onInputChange,\n onSearch = props.onSearch,\n options = props.options,\n promptText = props.promptText,\n searchText = props.searchText,\n useCache = props.useCache,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var cacheRef = useRef({});\n var handleSearchDebouncedRef = useRef();\n var queryRef = useRef(props.defaultInputValue || '');\n var forceUpdate = useForceUpdate();\n var prevProps = usePrevious(props);\n var handleSearch = useCallback(function (query) {\n queryRef.current = query;\n\n if (!query || minLength && query.length < minLength) {\n return;\n } // Use cached results, if applicable.\n\n\n if (useCache && cacheRef.current[query]) {\n // Re-render the component with the cached results.\n forceUpdate();\n return;\n } // Perform the search.\n\n\n onSearch(query);\n }, [forceUpdate, minLength, onSearch, useCache]); // Set the debounced search function.\n\n useEffect(function () {\n handleSearchDebouncedRef.current = debounce(handleSearch, delay);\n return function () {\n handleSearchDebouncedRef.current && handleSearchDebouncedRef.current.cancel();\n };\n }, [delay, handleSearch]);\n useEffect(function () {\n // Ensure that we've gone from a loading to a completed state. Otherwise\n // an empty response could get cached if the component updates during the\n // request (eg: if the parent re-renders for some reason).\n if (!isLoading && prevProps && prevProps.isLoading && useCache) {\n cacheRef.current[queryRef.current] = options;\n }\n });\n\n var getEmptyLabel = function getEmptyLabel() {\n if (!queryRef.current.length) {\n return promptText;\n }\n\n if (isLoading) {\n return searchText;\n }\n\n return emptyLabel;\n };\n\n var handleInputChange = useCallback(function (query, e) {\n onInputChange && onInputChange(query, e);\n handleSearchDebouncedRef.current && handleSearchDebouncedRef.current(query);\n }, [onInputChange]);\n var cachedQuery = cacheRef.current[queryRef.current];\n return _objectSpread(_objectSpread({}, otherProps), {}, {\n // Disable custom selections during a search if `allowNew` isn't a function.\n allowNew: isFunction(allowNew) ? allowNew : allowNew && !isLoading,\n emptyLabel: getEmptyLabel(),\n isLoading: isLoading,\n minLength: minLength,\n onInputChange: handleInputChange,\n options: useCache && cachedQuery ? cachedQuery : options\n });\n}\nexport function withAsync(Component) {\n var AsyncTypeahead = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(Component, _extends({}, useAsync(props), {\n ref: ref\n }));\n });\n AsyncTypeahead.displayName = \"withAsync(\".concat(getDisplayName(Component), \")\"); // $FlowFixMe\n\n AsyncTypeahead.propTypes = propTypes; // $FlowFixMe\n\n AsyncTypeahead.defaultProps = defaultProps;\n return AsyncTypeahead;\n}\nexport default function asyncContainer(Component) {\n /* istanbul ignore next */\n warn(false, 'The `asyncContainer` export is deprecated; use `withAsync` instead.');\n /* istanbul ignore next */\n\n return withAsync(Component);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"className\", \"label\", \"onClick\", \"onKeyDown\", \"size\"];\nimport cx from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { isSizeLarge, noop } from '../utils';\nimport { sizeType } from '../propTypes';\nimport { BACKSPACE } from '../constants';\nvar propTypes = {\n label: PropTypes.string,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n size: sizeType\n};\nvar defaultProps = {\n label: 'Clear',\n onClick: noop,\n onKeyDown: noop\n};\n\n/**\n * ClearButton\n *\n * http://getbootstrap.com/css/#helper-classes-close\n */\nvar ClearButton = function ClearButton(_ref) {\n var className = _ref.className,\n label = _ref.label,\n _onClick = _ref.onClick,\n _onKeyDown = _ref.onKeyDown,\n size = _ref.size,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n \"aria-label\": label,\n className: cx('close', 'rbt-close', {\n 'rbt-close-lg': isSizeLarge(size)\n }, className),\n onClick: function onClick(e) {\n e.stopPropagation();\n\n _onClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n // Prevent browser from navigating back.\n if (e.keyCode === BACKSPACE) {\n e.preventDefault();\n }\n\n _onKeyDown(e);\n },\n type: \"button\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only visually-hidden\"\n }, label));\n};\n\nClearButton.propTypes = propTypes;\nClearButton.defaultProps = defaultProps;\nexport default ClearButton;","import PropTypes from 'prop-types';\nimport React from 'react';\nvar propTypes = {\n label: PropTypes.string\n};\nvar defaultProps = {\n label: 'Loading...'\n};\n\nvar Loader = function Loader(_ref) {\n var label = _ref.label;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"rbt-loader spinner-border spinner-border-sm\",\n role: \"status\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only visually-hidden\"\n }, label));\n};\n\nLoader.propTypes = propTypes;\nLoader.defaultProps = defaultProps;\nexport default Loader;","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\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\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\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\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"styles\"],\n _excluded2 = [\"ref\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable react/no-unused-prop-types */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popper } from 'react-popper';\nimport { values } from '../utils';\nimport { ALIGN } from '../constants';\n// `Element` is not defined during server-side rendering, so shim it here.\n\n/* istanbul ignore next */\nvar SafeElement = typeof Element === 'undefined' ? function () {} : Element;\nvar propTypes = {\n /**\n * Specify menu alignment. The default value is `justify`, which makes the\n * menu as wide as the input and truncates long values. Specifying `left`\n * or `right` will align the menu to that side and the width will be\n * determined by the length of menu item values.\n */\n align: PropTypes.oneOf(values(ALIGN)),\n children: PropTypes.func.isRequired,\n\n /**\n * Specify whether the menu should appear above the input.\n */\n dropup: PropTypes.bool,\n\n /**\n * Whether or not to automatically adjust the position of the menu when it\n * reaches the viewport boundaries.\n */\n flip: PropTypes.bool,\n isMenuShown: PropTypes.bool,\n positionFixed: PropTypes.bool,\n referenceElement: PropTypes.instanceOf(SafeElement)\n};\nvar defaultProps = {\n align: ALIGN.JUSTIFY,\n dropup: false,\n flip: false,\n isMenuShown: false,\n positionFixed: false\n};\n\nfunction getModifiers(_ref) {\n var align = _ref.align,\n flip = _ref.flip;\n return {\n computeStyles: {\n enabled: true,\n fn: function fn(_ref2) {\n var styles = _ref2.styles,\n data = _objectWithoutProperties(_ref2, _excluded);\n\n return _objectSpread(_objectSpread({}, data), {}, {\n styles: _objectSpread(_objectSpread({}, styles), {}, {\n // Use the following condition instead of `align === 'justify'`\n // since it allows the component to fall back to justifying the\n // menu width if `align` is undefined.\n width: align !== ALIGN.RIGHT && align !== ALIGN.LEFT ? // Set the popper width to match the target width.\n data.offsets.reference.width : styles.width\n })\n });\n }\n },\n flip: {\n enabled: flip\n },\n preventOverflow: {\n escapeWithReference: true\n }\n };\n} // Flow expects a string literal value for `placement`.\n\n\nvar PLACEMENT = {\n bottom: {\n end: 'bottom-end',\n start: 'bottom-start'\n },\n top: {\n end: 'top-end',\n start: 'top-start'\n }\n};\nexport function getPlacement(_ref3) {\n var align = _ref3.align,\n dropup = _ref3.dropup;\n var x = align === ALIGN.RIGHT ? 'end' : 'start';\n var y = dropup ? 'top' : 'bottom';\n return PLACEMENT[y][x];\n}\n\nvar Overlay = function Overlay(props) {\n var children = props.children,\n isMenuShown = props.isMenuShown,\n positionFixed = props.positionFixed,\n referenceElement = props.referenceElement;\n\n if (!isMenuShown) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Popper, {\n modifiers: getModifiers(props),\n placement: getPlacement(props),\n positionFixed: positionFixed,\n referenceElement: referenceElement\n }, function (_ref4) {\n var ref = _ref4.ref,\n popperProps = _objectWithoutProperties(_ref4, _excluded2);\n\n return children(_objectSpread(_objectSpread({}, popperProps), {}, {\n innerRef: ref,\n inputHeight: referenceElement ? referenceElement.offsetHeight : 0\n }));\n });\n};\n\nOverlay.propTypes = propTypes;\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"onBlur\", \"onClick\", \"onFocus\", \"onRemove\", \"option\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport useRootClose from \"react-overlays/useRootClose\";\nimport { getDisplayName, isFunction, warn } from '../utils';\nimport { BACKSPACE } from '../constants';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n onBlur: PropTypes.func,\n onClick: PropTypes.func,\n onFocus: PropTypes.func,\n onRemove: PropTypes.func,\n option: optionType.isRequired\n};\nexport var useToken = function useToken(_ref) {\n var onBlur = _ref.onBlur,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n onRemove = _ref.onRemove,\n option = _ref.option,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n active = _useState2[0],\n setActive = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n rootElement = _useState4[0],\n attachRef = _useState4[1];\n\n var handleActiveChange = function handleActiveChange(e, isActive, callback) {\n setActive(isActive);\n typeof callback === 'function' && callback(e);\n };\n\n var handleBlur = function handleBlur(e) {\n handleActiveChange(e, false, onBlur);\n };\n\n var handleClick = function handleClick(e) {\n handleActiveChange(e, true, onClick);\n };\n\n var handleFocus = function handleFocus(e) {\n handleActiveChange(e, true, onFocus);\n };\n\n var handleRemove = function handleRemove() {\n onRemove && onRemove(option);\n };\n\n var handleKeyDown = function handleKeyDown(e) {\n switch (e.keyCode) {\n case BACKSPACE:\n if (active) {\n // Prevent backspace keypress from triggering the browser \"back\"\n // action.\n e.preventDefault();\n handleRemove();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n useRootClose(rootElement, handleBlur, _objectSpread(_objectSpread({}, props), {}, {\n disabled: !active\n }));\n return _objectSpread(_objectSpread({}, props), {}, {\n active: active,\n onBlur: handleBlur,\n onClick: handleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onRemove: isFunction(onRemove) ? handleRemove : undefined,\n ref: attachRef\n });\n};\nexport var withToken = function withToken(Component) {\n var displayName = \"withToken(\".concat(getDisplayName(Component), \")\");\n\n var WrappedToken = function WrappedToken(props) {\n return /*#__PURE__*/React.createElement(Component, useToken(props));\n };\n\n WrappedToken.displayName = displayName;\n WrappedToken.propTypes = propTypes;\n return WrappedToken;\n};\nexport default function tokenContainer(Component) {\n /* istanbul ignore next */\n warn(false, 'The `tokenContainer` export is deprecated; use `withToken` instead.');\n /* istanbul ignore next */\n\n return withToken(Component);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"onRemove\", \"tabIndex\"];\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nimport ClearButton from './ClearButton';\nimport { withToken } from '../behaviors/token';\nimport { isFunction } from '../utils';\nvar InteractiveToken = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var active = _ref.active,\n children = _ref.children,\n className = _ref.className,\n onRemove = _ref.onRemove,\n tabIndex = _ref.tabIndex,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: cx('rbt-token', 'rbt-token-removeable', {\n 'rbt-token-active': !!active\n }, className),\n ref: ref,\n tabIndex: tabIndex || 0\n }), children, /*#__PURE__*/React.createElement(ClearButton, {\n className: \"rbt-token-remove-button\",\n label: \"Remove\",\n onClick: onRemove,\n tabIndex: -1\n }));\n});\n\nvar StaticToken = function StaticToken(_ref2) {\n var children = _ref2.children,\n className = _ref2.className,\n disabled = _ref2.disabled,\n href = _ref2.href;\n var classnames = cx('rbt-token', {\n 'rbt-token-disabled': disabled\n }, className);\n\n if (href && !disabled) {\n return /*#__PURE__*/React.createElement(\"a\", {\n className: classnames,\n href: href\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames\n }, children);\n};\n/**\n * Token\n *\n * Individual token component, generally displayed within the TokenizerInput\n * component, but can also be rendered on its own.\n */\n\n\nvar Token = /*#__PURE__*/forwardRef(function (props, ref) {\n var disabled = props.disabled,\n onRemove = props.onRemove,\n readOnly = props.readOnly;\n return !disabled && !readOnly && isFunction(onRemove) ? /*#__PURE__*/React.createElement(InteractiveToken, _extends({}, props, {\n ref: ref\n })) : /*#__PURE__*/React.createElement(StaticToken, props);\n});\nexport default withToken(Token);","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport invariant from 'invariant';\nimport React, { cloneElement, useEffect, useRef } from 'react';\nimport { useTypeaheadContext } from '../core/Context';\nimport { isSelectable } from '../utils';\nimport { RETURN, RIGHT, TAB } from '../constants';\n\n// IE doesn't seem to get the composite computed value (eg: 'padding',\n// 'borderStyle', etc.), so generate these from the individual values.\nfunction interpolateStyle(styles, attr) {\n var subattr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n // Title-case the sub-attribute.\n if (subattr) {\n /* eslint-disable-next-line no-param-reassign */\n subattr = subattr.replace(subattr[0], subattr[0].toUpperCase());\n }\n\n return ['Top', 'Right', 'Bottom', 'Left'].map(function (dir) {\n return styles[attr + dir + subattr];\n }).join(' ');\n}\n\nfunction copyStyles(inputNode, hintNode) {\n if (!inputNode || !hintNode) {\n return;\n }\n\n var inputStyle = window.getComputedStyle(inputNode);\n /* eslint-disable no-param-reassign */\n\n hintNode.style.borderStyle = interpolateStyle(inputStyle, 'border', 'style');\n hintNode.style.borderWidth = interpolateStyle(inputStyle, 'border', 'width');\n hintNode.style.fontSize = inputStyle.fontSize;\n hintNode.style.height = inputStyle.height;\n hintNode.style.lineHeight = inputStyle.lineHeight;\n hintNode.style.margin = interpolateStyle(inputStyle, 'margin');\n hintNode.style.padding = interpolateStyle(inputStyle, 'padding');\n /* eslint-enable no-param-reassign */\n}\n\nexport function defaultShouldSelect(e, state) {\n var shouldSelectHint = false;\n var currentTarget = e.currentTarget,\n keyCode = e.keyCode;\n\n if (keyCode === RIGHT) {\n // For selectable input types (\"text\", \"search\"), only select the hint if\n // it's at the end of the input value. For non-selectable types (\"email\",\n // \"number\"), always select the hint.\n shouldSelectHint = isSelectable(currentTarget) ? currentTarget.selectionStart === currentTarget.value.length : true;\n }\n\n if (keyCode === TAB) {\n // Prevent input from blurring on TAB.\n e.preventDefault();\n shouldSelectHint = true;\n }\n\n if (keyCode === RETURN) {\n shouldSelectHint = !!state.selectHintOnEnter;\n }\n\n return typeof state.shouldSelect === 'function' ? state.shouldSelect(shouldSelectHint, e) : shouldSelectHint;\n}\nexport var useHint = function useHint(_ref) {\n var children = _ref.children,\n shouldSelect = _ref.shouldSelect;\n !(React.Children.count(children) === 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`useHint` expects one child.') : invariant(false) : void 0;\n\n var _useTypeaheadContext = useTypeaheadContext(),\n hintText = _useTypeaheadContext.hintText,\n initialItem = _useTypeaheadContext.initialItem,\n inputNode = _useTypeaheadContext.inputNode,\n onAdd = _useTypeaheadContext.onAdd,\n selectHintOnEnter = _useTypeaheadContext.selectHintOnEnter;\n\n var hintRef = useRef(null);\n\n var onKeyDown = function onKeyDown(e) {\n if (hintText && initialItem && defaultShouldSelect(e, {\n selectHintOnEnter: selectHintOnEnter,\n shouldSelect: shouldSelect\n })) {\n onAdd(initialItem);\n }\n\n children.props.onKeyDown && children.props.onKeyDown(e);\n };\n\n useEffect(function () {\n copyStyles(inputNode, hintRef.current);\n });\n return {\n child: /*#__PURE__*/cloneElement(children, _objectSpread(_objectSpread({}, children.props), {}, {\n onKeyDown: onKeyDown\n })),\n hintRef: hintRef,\n hintText: hintText\n };\n};\n\nvar Hint = function Hint(_ref2) {\n var className = _ref2.className,\n props = _objectWithoutProperties(_ref2, _excluded);\n\n var _useHint = useHint(props),\n child = _useHint.child,\n hintRef = _useHint.hintRef,\n hintText = _useHint.hintText;\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: {\n display: 'flex',\n flex: 1,\n height: '100%',\n position: 'relative'\n }\n }, child, /*#__PURE__*/React.createElement(\"input\", {\n \"aria-hidden\": true,\n className: \"rbt-input-hint\",\n ref: hintRef,\n readOnly: true,\n style: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n boxShadow: 'none',\n color: 'rgba(0, 0, 0, 0.54)',\n left: 0,\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n width: '100%'\n },\n tabIndex: -1,\n value: hintText\n }));\n};\n\nexport default Hint;","import _extends from \"@babel/runtime/helpers/extends\";\nimport cx from 'classnames';\nimport React from 'react';\nvar Input = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(\"input\", _extends({}, props, {\n className: cx('rbt-input-main', props.className),\n ref: ref\n }));\n});\nexport default Input;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"className\", \"isInvalid\", \"isValid\", \"size\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport cx from 'classnames';\nimport React from 'react';\nimport { getDisplayName, isSizeLarge, isSizeSmall } from '../utils';\n\nfunction withClassNames(Component) {\n // Use a class instead of function component to support refs.\n\n /* eslint-disable-next-line react/prefer-stateless-function */\n var WrappedComponent = /*#__PURE__*/function (_React$Component) {\n _inherits(WrappedComponent, _React$Component);\n\n var _super = _createSuper(WrappedComponent);\n\n function WrappedComponent() {\n _classCallCheck(this, WrappedComponent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(WrappedComponent, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n isInvalid = _this$props.isInvalid,\n isValid = _this$props.isValid,\n size = _this$props.size,\n props = _objectWithoutProperties(_this$props, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: cx('form-control', 'rbt-input', {\n 'form-control-lg': isSizeLarge(size),\n 'form-control-sm': isSizeSmall(size),\n 'is-invalid': isInvalid,\n 'is-valid': isValid\n }, className)\n }));\n }\n }]);\n\n return WrappedComponent;\n }(React.Component);\n\n _defineProperty(WrappedComponent, \"displayName\", \"withClassNames(\".concat(getDisplayName(Component), \")\"));\n\n return WrappedComponent;\n}\n\nexport default withClassNames;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"children\", \"className\", \"inputClassName\", \"inputRef\", \"placeholder\", \"referenceElementRef\", \"selected\", \"shouldSelectHint\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport cx from 'classnames';\nimport React from 'react';\nimport Hint from './Hint';\nimport Input from './Input';\nimport { isSelectable } from '../utils';\nimport withClassNames from '../behaviors/classNames';\nimport { BACKSPACE } from '../constants';\n\nvar TypeaheadInputMulti = /*#__PURE__*/function (_React$Component) {\n _inherits(TypeaheadInputMulti, _React$Component);\n\n var _super = _createSuper(TypeaheadInputMulti);\n\n function TypeaheadInputMulti() {\n var _this;\n\n _classCallCheck(this, TypeaheadInputMulti);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_input\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getInputRef\", function (input) {\n _this._input = input;\n\n _this.props.inputRef(input);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleContainerClickOrFocus\", function (e) {\n // Don't focus the input if it's disabled.\n if (_this.props.disabled) {\n e.currentTarget.blur();\n return;\n } // Move cursor to the end if the user clicks outside the actual input.\n\n\n var inputNode = _this._input;\n\n if (!inputNode || // $FlowFixMe\n e.currentTarget.contains(e.target) && e.currentTarget !== e.target) {\n return;\n }\n\n if (isSelectable(inputNode)) {\n inputNode.selectionStart = inputNode.value.length;\n }\n\n inputNode.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleKeyDown\", function (e) {\n var _this$props = _this.props,\n onKeyDown = _this$props.onKeyDown,\n selected = _this$props.selected,\n value = _this$props.value;\n\n switch (e.keyCode) {\n case BACKSPACE:\n if (e.currentTarget === _this._input && selected.length && !value) {\n // Prevent browser from going back.\n e.preventDefault(); // If the input is selected and there is no text, focus the last\n // token when the user hits backspace.\n\n if (_this.wrapperRef.current) {\n var children = _this.wrapperRef.current.children;\n var lastToken = children[children.length - 2];\n lastToken && lastToken.focus();\n }\n }\n\n break;\n\n default:\n break;\n }\n\n onKeyDown(e);\n });\n\n return _this;\n }\n\n _createClass(TypeaheadInputMulti, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n inputClassName = _this$props2.inputClassName,\n inputRef = _this$props2.inputRef,\n placeholder = _this$props2.placeholder,\n referenceElementRef = _this$props2.referenceElementRef,\n selected = _this$props2.selected,\n shouldSelectHint = _this$props2.shouldSelectHint,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt-input-multi', className),\n disabled: props.disabled,\n onClick: this._handleContainerClickOrFocus,\n onFocus: this._handleContainerClickOrFocus,\n ref: referenceElementRef,\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rbt-input-wrapper\",\n ref: this.wrapperRef\n }, children, /*#__PURE__*/React.createElement(Hint, {\n shouldSelect: shouldSelectHint\n }, /*#__PURE__*/React.createElement(Input, _extends({}, props, {\n className: inputClassName,\n onKeyDown: this._handleKeyDown,\n placeholder: selected.length ? '' : placeholder,\n ref: this.getInputRef,\n style: {\n backgroundColor: 'transparent',\n border: 0,\n boxShadow: 'none',\n cursor: 'inherit',\n outline: 'none',\n padding: 0,\n width: '100%',\n zIndex: 1\n }\n })))));\n }\n }]);\n\n return TypeaheadInputMulti;\n}(React.Component);\n\nexport default withClassNames(TypeaheadInputMulti);","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"inputRef\", \"referenceElementRef\", \"shouldSelectHint\"];\nimport React from 'react';\nimport Hint from './Hint';\nimport Input from './Input';\nimport withClassNames from '../behaviors/classNames';\nexport default withClassNames(function (_ref) {\n var inputRef = _ref.inputRef,\n referenceElementRef = _ref.referenceElementRef,\n shouldSelectHint = _ref.shouldSelectHint,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Hint, {\n shouldSelect: shouldSelectHint\n }, /*#__PURE__*/React.createElement(Input, _extends({}, props, {\n ref: function ref(node) {\n inputRef(node);\n referenceElementRef(node);\n }\n })));\n});","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getMatchBounds } from '../utils';\nvar propTypes = {\n children: PropTypes.string.isRequired,\n highlightClassName: PropTypes.string,\n search: PropTypes.string.isRequired\n};\nvar defaultProps = {\n highlightClassName: 'rbt-highlight-text'\n};\n\n/**\n * Stripped-down version of https://github.com/helior/react-highlighter\n *\n * Results are already filtered by the time the component is used internally so\n * we can safely ignore case and diacritical marks for the purposes of matching.\n */\nvar Highlighter = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Highlighter, _React$PureComponent);\n\n var _super = _createSuper(Highlighter);\n\n function Highlighter() {\n _classCallCheck(this, Highlighter);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Highlighter, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n highlightClassName = _this$props.highlightClassName,\n search = _this$props.search;\n\n if (!search || !children) {\n return children;\n }\n\n var matchCount = 0;\n var remaining = children;\n var highlighterChildren = [];\n\n while (remaining) {\n var bounds = getMatchBounds(remaining, search); // No match anywhere in the remaining string, stop.\n\n if (!bounds) {\n highlighterChildren.push(remaining);\n break;\n } // Capture the string that leads up to a match.\n\n\n var nonMatch = remaining.slice(0, bounds.start);\n\n if (nonMatch) {\n highlighterChildren.push(nonMatch);\n } // Capture the matching string.\n\n\n var match = remaining.slice(bounds.start, bounds.end);\n highlighterChildren.push( /*#__PURE__*/React.createElement(\"mark\", {\n className: highlightClassName,\n key: matchCount\n }, match));\n matchCount += 1; // And if there's anything left over, continue the loop.\n\n remaining = remaining.slice(bounds.end);\n }\n\n return highlighterChildren;\n }\n }]);\n\n return Highlighter;\n}(React.PureComponent);\n\n_defineProperty(Highlighter, \"propTypes\", propTypes);\n\n_defineProperty(Highlighter, \"defaultProps\", defaultProps);\n\nexport default Highlighter;","// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┐ ┏ ━ ━ ━ ┓\n * │ target │ frame\n * └────────┘ ┗ ━ ━ ━ ┛\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──┐\n * ┏━│━━│━┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * ┗━│━━│━┛\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐\n * │┃ ┃│ do nothing\n * └───────────┘\n * ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──┐\n * ┏━│━━│━┓ ┏━┌━━┐━┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * ┗━ ━━ ━┛ ┗━ ━━ ━┛\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━┌━━┐━┓\n * │ │\n * from ┃ ┌──┐ ┃ to ┃ │ │ ┃\n * │ │ │ │\n * ┗━│━━│━┛ ┗━│━━│━┛\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━ ━━ ━┓\n *\n * from ┃ ┃ to ┃ ┌──┐ ┃\n * ┌──┐ │ │\n * ┗━│━━│━┛ ┗━└━━┘━┛\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──┐\n * │ │\n * │ │ ┌──┐\n * ┏━│━━│━┓ ┏━│━━│━┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * ┗━ ━━ ━┛ ┗━└━━┘━┛\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nfunction getParentElement(element: Node): Element | null {\n const parent = element.parentElement\n if (parent == null) {\n return (element.getRootNode() as ShadowRoot).host || null\n }\n return parent\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = window as unknown as Window & {\n visualViewport: visualViewport\n }\n\n const { scrollMode, block, inline, boundary, skipOverflowHiddenElements } =\n options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = getParentElement(cursor)\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const { height, width, top, right, bottom, left } =\n frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n const scaleX =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth === 0\n ? 0\n : width / (frame as HTMLElement).offsetWidth\n : 0\n const scaleY =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight === 0\n ? 0\n : height / (frame as HTMLElement).offsetHeight\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll / scaleY,\n frame.scrollHeight - height / scaleY + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll / scaleX,\n frame.scrollWidth - width / scaleX + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n","import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"label\", \"onClick\", \"option\", \"position\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTypeaheadContext } from '../core/Context';\nimport { getDisplayName, getMenuItemId, preventInputBlur, warn } from '../utils';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n option: optionType.isRequired,\n position: PropTypes.number\n};\nexport var useItem = function useItem(_ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n option = _ref.option,\n position = _ref.position,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useTypeaheadContext = useTypeaheadContext(),\n activeIndex = _useTypeaheadContext.activeIndex,\n id = _useTypeaheadContext.id,\n isOnlyResult = _useTypeaheadContext.isOnlyResult,\n onActiveItemChange = _useTypeaheadContext.onActiveItemChange,\n onInitialItemChange = _useTypeaheadContext.onInitialItemChange,\n onMenuItemClick = _useTypeaheadContext.onMenuItemClick,\n setItem = _useTypeaheadContext.setItem;\n\n var itemRef = useRef(null);\n useEffect(function () {\n if (position === 0) {\n onInitialItemChange(option);\n }\n });\n useEffect(function () {\n if (position === activeIndex) {\n onActiveItemChange(option); // Automatically scroll the menu as the user keys through it.\n\n var node = itemRef.current;\n node && scrollIntoView(node, {\n block: 'nearest',\n boundary: node.parentNode,\n inline: 'nearest',\n scrollMode: 'if-needed'\n });\n }\n });\n var handleClick = useCallback(function (e) {\n onMenuItemClick(option, e);\n onClick && onClick(e);\n }, [onClick, onMenuItemClick, option]);\n var active = isOnlyResult || activeIndex === position; // Update the item's position in the item stack.\n\n setItem(option, position);\n return _objectSpread(_objectSpread({}, props), {}, {\n active: active,\n 'aria-label': label,\n 'aria-selected': active,\n id: getMenuItemId(id, position),\n onClick: handleClick,\n onMouseDown: preventInputBlur,\n ref: itemRef,\n role: 'option'\n });\n};\nexport var withItem = function withItem(Component) {\n var displayName = \"withItem(\".concat(getDisplayName(Component), \")\");\n\n var WrappedMenuItem = function WrappedMenuItem(props) {\n return /*#__PURE__*/React.createElement(Component, useItem(props));\n };\n\n WrappedMenuItem.displayName = displayName;\n WrappedMenuItem.propTypes = propTypes;\n return WrappedMenuItem;\n};\nexport default function menuItemContainer(Component) {\n /* istanbul ignore next */\n warn(false, 'The `menuItemContainer` export is deprecated; use `withItem` instead.');\n /* istanbul ignore next */\n\n return withItem(Component);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"disabled\", \"onClick\"];\nimport cx from 'classnames';\nimport React from 'react';\nimport { withItem } from '../behaviors/item';\nvar BaseMenuItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n children = _ref.children,\n className = _ref.className,\n disabled = _ref.disabled,\n _onClick = _ref.onClick,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"a\", _extends({}, props, {\n className: cx('dropdown-item', {\n active: active,\n disabled: disabled\n }, className),\n href: props.href || '#',\n onClick: function onClick(e) {\n e.preventDefault();\n !disabled && _onClick && _onClick(e);\n },\n ref: ref\n }), children);\n});\nexport { BaseMenuItem };\nexport default withItem(BaseMenuItem);","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { Children } from 'react';\nimport { BaseMenuItem } from './MenuItem';\nimport { preventInputBlur } from '../utils';\nimport { checkPropType, isRequiredForA11y } from '../propTypes';\n\nvar MenuDivider = function MenuDivider(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"dropdown-divider\",\n role: \"separator\"\n });\n};\n\nvar MenuHeader = function MenuHeader(props) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n React.createElement(\"div\", _extends({}, props, {\n className: \"dropdown-header\",\n role: \"heading\"\n }))\n );\n};\n\nvar propTypes = {\n 'aria-label': PropTypes.string,\n\n /**\n * Message to display in the menu if there are no valid results.\n */\n emptyLabel: PropTypes.node,\n\n /**\n * Needed for accessibility.\n */\n id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n\n /**\n * Maximum height of the dropdown menu.\n */\n maxHeight: PropTypes.string\n};\nvar defaultProps = {\n 'aria-label': 'menu-options',\n emptyLabel: 'No matches found.',\n maxHeight: '300px'\n};\n\n/**\n * Menu component that handles empty state when passed a set of results.\n */\nvar Menu = /*#__PURE__*/function (_React$Component) {\n _inherits(Menu, _React$Component);\n\n var _super = _createSuper(Menu);\n\n function Menu() {\n _classCallCheck(this, Menu);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Menu, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n inputHeight = _this$props.inputHeight,\n scheduleUpdate = _this$props.scheduleUpdate; // Update the menu position if the height of the input changes.\n\n if (inputHeight !== prevProps.inputHeight) {\n scheduleUpdate();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n emptyLabel = _this$props2.emptyLabel,\n id = _this$props2.id,\n innerRef = _this$props2.innerRef,\n maxHeight = _this$props2.maxHeight,\n style = _this$props2.style,\n text = _this$props2.text;\n var contents = Children.count(children) === 0 ? /*#__PURE__*/React.createElement(BaseMenuItem, {\n disabled: true,\n role: \"option\"\n }, emptyLabel) : children;\n return (\n /*#__PURE__*/\n\n /* eslint-disable jsx-a11y/interactive-supports-focus */\n React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n className: cx('rbt-menu', 'dropdown-menu', 'show', className),\n id: id,\n key: // Force a re-render if the text changes to ensure that menu\n // positioning updates correctly.\n text,\n onMouseDown: // Prevent input from blurring when clicking on the menu scrollbar.\n preventInputBlur,\n ref: innerRef,\n role: \"listbox\",\n style: _objectSpread(_objectSpread({}, style), {}, {\n display: 'block',\n maxHeight: maxHeight,\n overflow: 'auto'\n })\n }, contents)\n /* eslint-enable jsx-a11y/interactive-supports-focus */\n\n );\n }\n }]);\n\n return Menu;\n}(React.Component);\n\n_defineProperty(Menu, \"propTypes\", propTypes);\n\n_defineProperty(Menu, \"defaultProps\", defaultProps);\n\n_defineProperty(Menu, \"Divider\", MenuDivider);\n\n_defineProperty(Menu, \"Header\", MenuHeader);\n\nexport default Menu;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"labelKey\", \"newSelectionPrefix\", \"options\", \"paginationText\", \"renderMenuItemChildren\", \"text\"];\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Highlighter from './Highlighter';\nimport Menu from './Menu';\nimport MenuItem from './MenuItem';\nimport { getOptionLabel, getOptionProperty } from '../utils';\nvar propTypes = {\n /**\n * Provides the ability to specify a prefix before the user-entered text to\n * indicate that the selection will be new. No-op unless `allowNew={true}`.\n */\n newSelectionPrefix: PropTypes.node,\n\n /**\n * Prompt displayed when large data sets are paginated.\n */\n paginationText: PropTypes.node,\n\n /**\n * Provides a hook for customized rendering of menu item contents.\n */\n renderMenuItemChildren: PropTypes.func\n};\nvar defaultProps = {\n newSelectionPrefix: 'New selection: ',\n paginationText: 'Display additional results...',\n renderMenuItemChildren: function renderMenuItemChildren(option, props, idx) {\n return /*#__PURE__*/React.createElement(Highlighter, {\n search: props.text\n }, getOptionLabel(option, props.labelKey));\n }\n};\n\nvar TypeaheadMenu = function TypeaheadMenu(props) {\n var labelKey = props.labelKey,\n newSelectionPrefix = props.newSelectionPrefix,\n options = props.options,\n paginationText = props.paginationText,\n renderMenuItemChildren = props.renderMenuItemChildren,\n text = props.text,\n menuProps = _objectWithoutProperties(props, _excluded);\n\n var renderMenuItem = function renderMenuItem(option, position) {\n var label = getOptionLabel(option, labelKey);\n var menuItemProps = {\n disabled: getOptionProperty(option, 'disabled'),\n label: label,\n option: option,\n position: position\n };\n\n if (option.customOption) {\n return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n className: \"rbt-menu-custom-option\",\n key: position,\n label: label\n }), newSelectionPrefix, /*#__PURE__*/React.createElement(Highlighter, {\n search: text\n }, label));\n }\n\n if (option.paginationOption) {\n return /*#__PURE__*/React.createElement(Fragment, {\n key: \"pagination-item\"\n }, /*#__PURE__*/React.createElement(Menu.Divider, null), /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n className: \"rbt-menu-pagination-option\",\n label: paginationText\n }), paginationText));\n }\n\n return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n key: position\n }), renderMenuItemChildren(option, props, position));\n };\n\n return (\n /*#__PURE__*/\n // Explictly pass `text` so Flow doesn't complain...\n React.createElement(Menu, _extends({}, menuProps, {\n text: text\n }), options.map(renderMenuItem))\n );\n};\n\nTypeaheadMenu.propTypes = propTypes;\nTypeaheadMenu.defaultProps = defaultProps;\nexport default TypeaheadMenu;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nvar _excluded = [\"children\", \"onRootClose\"],\n _excluded2 = [\"getInputProps\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef, useState } from 'react';\nimport useRootClose from \"react-overlays/useRootClose\";\nimport Typeahead from '../core/Typeahead';\nimport ClearButton from './ClearButton';\nimport Loader from './Loader';\nimport Overlay from './Overlay';\nimport Token from './Token';\nimport TypeaheadInputMulti from './TypeaheadInputMulti';\nimport TypeaheadInputSingle from './TypeaheadInputSingle';\nimport TypeaheadMenu from './TypeaheadMenu';\nimport { getOptionLabel, isFunction, isSizeLarge, pick, preventInputBlur } from '../utils';\nimport { checkPropType, inputPropsType, sizeType } from '../propTypes';\nvar propTypes = {\n /**\n * Displays a button to clear the input when there are selections.\n */\n clearButton: PropTypes.bool,\n\n /**\n * Props to be applied directly to the input. `onBlur`, `onChange`,\n * `onFocus`, and `onKeyDown` are ignored.\n */\n inputProps: checkPropType(PropTypes.object, inputPropsType),\n\n /**\n * Bootstrap 4 only. Adds the `is-invalid` classname to the `form-control`.\n */\n isInvalid: PropTypes.bool,\n\n /**\n * Indicate whether an asynchronous data fetch is happening.\n */\n isLoading: PropTypes.bool,\n\n /**\n * Bootstrap 4 only. Adds the `is-valid` classname to the `form-control`.\n */\n isValid: PropTypes.bool,\n\n /**\n * Callback for custom input rendering.\n */\n renderInput: PropTypes.func,\n\n /**\n * Callback for custom menu rendering.\n */\n renderMenu: PropTypes.func,\n\n /**\n * Callback for custom menu rendering.\n */\n renderToken: PropTypes.func,\n\n /**\n * Specifies the size of the input.\n */\n size: sizeType\n};\nvar defaultProps = {\n clearButton: false,\n inputProps: {},\n isInvalid: false,\n isLoading: false,\n isValid: false,\n renderMenu: function renderMenu(results, menuProps, props) {\n return /*#__PURE__*/React.createElement(TypeaheadMenu, _extends({}, menuProps, {\n labelKey: props.labelKey,\n options: results,\n text: props.text\n }));\n },\n renderToken: function renderToken(option, props, idx) {\n return /*#__PURE__*/React.createElement(Token, {\n disabled: props.disabled,\n key: idx,\n onRemove: props.onRemove,\n option: option,\n tabIndex: props.tabIndex\n }, getOptionLabel(option, props.labelKey));\n }\n};\n\nfunction getOverlayProps(props) {\n return pick(props, ['align', 'dropup', 'flip', 'positionFixed']);\n}\n\nvar RootClose = function RootClose(_ref) {\n var children = _ref.children,\n onRootClose = _ref.onRootClose,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n rootElement = _useState2[0],\n attachRef = _useState2[1];\n\n useRootClose(rootElement, onRootClose, props);\n return children(attachRef);\n};\n\nvar TypeaheadComponent = /*#__PURE__*/function (_React$Component) {\n _inherits(TypeaheadComponent, _React$Component);\n\n var _super = _createSuper(TypeaheadComponent);\n\n function TypeaheadComponent() {\n var _this;\n\n _classCallCheck(this, TypeaheadComponent);\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 = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_referenceElement\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"referenceElementRef\", function (referenceElement) {\n _this._referenceElement = referenceElement;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderInput\", function (inputProps, props) {\n var _this$props = _this.props,\n isInvalid = _this$props.isInvalid,\n isValid = _this$props.isValid,\n multiple = _this$props.multiple,\n renderInput = _this$props.renderInput,\n renderToken = _this$props.renderToken,\n size = _this$props.size;\n\n if (isFunction(renderInput)) {\n return renderInput(inputProps, props);\n }\n\n var commonProps = _objectSpread(_objectSpread({}, inputProps), {}, {\n isInvalid: isInvalid,\n isValid: isValid,\n size: size\n });\n\n if (!multiple) {\n return /*#__PURE__*/React.createElement(TypeaheadInputSingle, commonProps);\n }\n\n var labelKey = props.labelKey,\n onRemove = props.onRemove,\n selected = props.selected;\n return /*#__PURE__*/React.createElement(TypeaheadInputMulti, _extends({}, commonProps, {\n selected: selected\n }), selected.map(function (option, idx) {\n return renderToken(option, _objectSpread(_objectSpread({}, commonProps), {}, {\n labelKey: labelKey,\n onRemove: onRemove\n }), idx);\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderMenu\", function (results, menuProps, props) {\n var _this$props2 = _this.props,\n emptyLabel = _this$props2.emptyLabel,\n id = _this$props2.id,\n maxHeight = _this$props2.maxHeight,\n newSelectionPrefix = _this$props2.newSelectionPrefix,\n paginationText = _this$props2.paginationText,\n renderMenu = _this$props2.renderMenu,\n renderMenuItemChildren = _this$props2.renderMenuItemChildren;\n return renderMenu(results, _objectSpread(_objectSpread({}, menuProps), {}, {\n emptyLabel: emptyLabel,\n id: id,\n maxHeight: maxHeight,\n newSelectionPrefix: newSelectionPrefix,\n paginationText: paginationText,\n renderMenuItemChildren: renderMenuItemChildren\n }), props);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderAux\", function (_ref2) {\n var onClear = _ref2.onClear,\n selected = _ref2.selected;\n var _this$props3 = _this.props,\n clearButton = _this$props3.clearButton,\n disabled = _this$props3.disabled,\n isLoading = _this$props3.isLoading,\n size = _this$props3.size;\n var content;\n\n if (isLoading) {\n content = /*#__PURE__*/React.createElement(Loader, null);\n } else if (clearButton && !disabled && selected.length) {\n content = /*#__PURE__*/React.createElement(ClearButton, {\n onClick: onClear,\n onFocus: function onFocus(e) {\n // Prevent the main input from auto-focusing again.\n e.stopPropagation();\n },\n onMouseDown: preventInputBlur,\n size: size\n });\n }\n\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt-aux', {\n 'rbt-aux-lg': isSizeLarge(size)\n })\n }, content) : null;\n });\n\n return _this;\n }\n\n _createClass(TypeaheadComponent, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n instanceRef = _this$props4.instanceRef,\n open = _this$props4.open,\n options = _this$props4.options,\n style = _this$props4.style;\n return /*#__PURE__*/React.createElement(Typeahead, _extends({}, this.props, {\n options: options,\n ref: instanceRef\n }), function (_ref3) {\n var getInputProps = _ref3.getInputProps,\n props = _objectWithoutProperties(_ref3, _excluded2);\n\n var hideMenu = props.hideMenu,\n isMenuShown = props.isMenuShown,\n results = props.results;\n\n var auxContent = _this2._renderAux(props);\n\n return /*#__PURE__*/React.createElement(RootClose, {\n disabled: open || !isMenuShown,\n onRootClose: hideMenu\n }, function (ref) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt', {\n 'has-aux': !!auxContent\n }, className),\n ref: ref,\n style: _objectSpread(_objectSpread({}, style), {}, {\n outline: 'none',\n position: 'relative'\n }),\n tabIndex: -1\n }, _this2._renderInput(_objectSpread(_objectSpread({}, getInputProps(_this2.props.inputProps)), {}, {\n referenceElementRef: _this2.referenceElementRef\n }), props), /*#__PURE__*/React.createElement(Overlay, _extends({}, getOverlayProps(_this2.props), {\n isMenuShown: isMenuShown,\n referenceElement: _this2._referenceElement\n }), function (menuProps) {\n return _this2._renderMenu(results, menuProps, props);\n }), auxContent, isFunction(children) ? children(props) : children);\n });\n });\n }\n }]);\n\n return TypeaheadComponent;\n}(React.Component);\n\n_defineProperty(TypeaheadComponent, \"propTypes\", propTypes);\n\n_defineProperty(TypeaheadComponent, \"defaultProps\", defaultProps);\n\nexport default /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(TypeaheadComponent, _extends({}, props, {\n instanceRef: ref\n }));\n});","import { withAsync } from '../behaviors/async';\nimport Typeahead from './Typeahead';\nexport default withAsync(Typeahead);","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (href === void 0) {\n href = null;\n }\n\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","import React, { FC } from 'react';\nimport { View, StyleSheet, StyleProp, ViewStyle, KeyboardAvoidingView, Platform, ModalProps } from 'react-native';\nimport Modal from './modal';\n\nimport colors from '@packages/core/styles/colors';\n\nexport interface PopupProps extends Partial {\n contentStyle?: StyleProp;\n show?: boolean;\n onModalHide?: () => void;\n}\n\nexport const Popup: FC = ({ children, contentStyle, onModalHide, show }) => {\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n modal: {\n margin: 0,\n },\n wrapper: {\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n content: {\n borderRadius: 4,\n marginHorizontal: 20,\n backgroundColor: colors.white,\n shadowOffset: {\n height: 0,\n width: 8,\n },\n maxWidth: Platform.select({ web: 640 }),\n shadowRadius: 12,\n shadowColor: colors.black,\n shadowOpacity: 0.16,\n },\n});\n\nexport const modalDefaultStyles = StyleSheet.create({\n header: {\n marginTop: 20,\n marginBottom: 24,\n marginHorizontal: 20,\n minHeight: 40 + 16,\n justifyContent: 'center',\n paddingBottom: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.grayThree,\n },\n headerRow: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n headerIcon: {\n marginRight: 20,\n },\n headerImage: {\n marginTop: 40,\n marginBottom: 20,\n alignSelf: 'center',\n },\n content: {\n marginHorizontal: 20,\n marginBottom: 32,\n },\n footer: {\n marginBottom: 32,\n marginHorizontal: 20,\n },\n webHeader: {\n paddingVertical: 20,\n paddingHorizontal: 30,\n borderBottomWidth: 1,\n borderBottomColor: colors.grayThree,\n backgroundColor: colors.grayOne,\n borderTopLeftRadius: 3,\n borderTopRightRadius: 3,\n },\n webContent: {\n paddingVertical: 30,\n paddingHorizontal: 30,\n flexDirection: 'row',\n },\n webContentIcon: {\n marginRight: 16,\n },\n webFooter: {\n paddingVertical: 12,\n paddingHorizontal: 30,\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n borderTopWidth: 1,\n borderTopColor: colors.grayThree,\n },\n webCancelButton: {\n marginRight: 8,\n },\n});\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createPrefixer = _interopRequireDefault(require(\"inline-style-prefixer/lib/createPrefixer\"));\n\nvar _static = _interopRequireDefault(require(\"./static\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar prefixAll = (0, _createPrefixer.default)(_static.default);\nvar _default = prefixAll;\nexports.default = _default;\nmodule.exports = exports.default;","import { HttpClient } from '@packages/core/http';\nimport {\n FailCodeSearchResponse,\n FailCodesSearchResponse,\n FailCodeSectionsResponse,\n FailCodeSubsectionsResponse,\n FailCodeFiguresResponse,\n FailCodesResponse,\n FailCodeLocationsResponse,\n FailCodeFrequenciesResponse,\n FailCodeConcernsResponse,\n FailCodeElectricalGridSubSectionResponse,\n IncidentSectionsResponse,\n IncidentSubsectionsResponse,\n} from '@packages/models/api';\n\nimport { FailCodes } from '@packages/models/api/fail-codes';\n\nexport interface DeleteFailCodeParams {\n failCode: string;\n team?: string;\n action: string;\n}\n\nexport interface FailCodeParams {\n failCode?: string;\n}\n\nexport interface AddFailCodeTeamParams {\n action: string;\n team: string;\n failCode: string;\n}\n\nexport interface DeleteTeamParams {\n action: string;\n team: string;\n}\n\nexport interface RenameTeamParams {\n action: string;\n team: string;\n newTeam: string;\n}\n\nexport interface AddFailCodeParams {\n action: string;\n team: string;\n failCode: string;\n}\n\nexport interface SearchFailCodeParams {\n query: string;\n}\n\nexport interface FailCodeQueryParams {\n page?: number;\n size?: number;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport class FailCodesService {\n constructor(private http: HttpClient) {}\n\n searchFailCodes({\n qmrId,\n query,\n ignoreCache,\n signal,\n }: {\n qmrId?: string;\n query?: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/search' + this.http.queryString({ qmrId, query });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n searchFailCode({\n searchFailCodeParams,\n ignoreCache,\n signal,\n }: {\n searchFailCodeParams: SearchFailCodeParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/all-fail-codes-with-teams' + this.http.queryString(searchFailCodeParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n searchPartNumbers({\n qmrId,\n query,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n query?: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/part-number/search' + this.http.queryString({ qmrId, query });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeSections({\n qmrId,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/sections' + this.http.queryString({ qmrId });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n lookupFailCodeSubsections({\n qmrId,\n sectionNumber,\n sectionName,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n sectionNumber: number;\n sectionName: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/subsections' + this.http.queryString({ qmrId, sectionNumber, sectionName });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n lookupFailCodeFigures({\n qmrId,\n sectionNumber,\n sectionName,\n subsectionNumber,\n subsectionName,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n sectionNumber: number;\n sectionName: string;\n subsectionNumber: number;\n subsectionName: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url =\n '/fail-codes/figures' +\n this.http.queryString({ qmrId, sectionNumber, sectionName, subsectionNumber, subsectionName });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n lookupFailCodes({\n qmrId,\n sectionNumber,\n subsectionNumber,\n figureCode,\n partNumber,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n sectionNumber?: number;\n subsectionNumber?: number;\n figureCode?: string;\n partNumber?: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = partNumber\n ? this.http.queryString({ qmrId, partNumber })\n : this.http.queryString({ qmrId, sectionNumber, subsectionNumber, figureCode });\n\n const url = '/fail-codes' + queryString;\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeWiringDiagramSubsections({\n qmrId,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = this.http.queryString({ qmrId });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/electrical-wiring-diagrams/subsection-figures' + queryString,\n ignoreCache,\n signal,\n });\n }\n\n fetchIsValidFailCode({\n failCode,\n ignoreCache,\n signal,\n }: {\n failCode: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = this.http.queryString({ failCode });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/siebel-fail-codes' + queryString,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeLocations({ ignoreCache, signal }: { ignoreCache?: boolean; signal?: AbortSignal }) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/locations',\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeFrequencies({\n locationCode,\n ignoreCache,\n signal,\n }: {\n locationCode: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/frequencies' + this.http.queryString({ locationCode });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeConcerns({\n locationCode,\n frequencyCode,\n ignoreCache,\n signal,\n }: {\n locationCode: string;\n frequencyCode: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/concerns' + this.http.queryString({ locationCode, frequencyCode });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchPossibleSections({\n qmrId,\n failCode,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n failCode?: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = this.http.queryString({ qmrId, failCode });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/fail-code-sections' + queryString,\n ignoreCache,\n signal,\n });\n }\n\n fetchPossibleSubsections({\n qmrId,\n failCode,\n sectionNumber,\n sectionName,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n failCode?: string;\n sectionNumber: number;\n sectionName: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = this.http.queryString({ qmrId, failCode, sectionNumber, sectionName });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/fail-code-subsections' + queryString,\n ignoreCache,\n signal,\n });\n }\n\n fetchSubSectionsWithoutFailCode({\n qmrId,\n sectionNumber,\n sectionName,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n sectionNumber: number;\n sectionName: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const queryString = this.http.queryString({ qmrId, sectionNumber, sectionName });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/fail-codes/subsections' + queryString,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeIncident({\n qmrId,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/incident-inspection' + this.http.queryString({ qmrId });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchIncidentSections({\n qmrId,\n failCode,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n failCode: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-codes/incident-inspection/sections' + this.http.queryString({ qmrId, failCode });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchIncidentSubsections({\n qmrId,\n failCode,\n sectionName,\n ignoreCache,\n signal,\n }: {\n qmrId: string;\n failCode: string;\n sectionName: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url =\n '/fail-codes/incident-inspection/subsections' + this.http.queryString({ qmrId, failCode, sectionName });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n getFailCodeTeams({\n ignoreCache = false,\n signal,\n queryParameters = {},\n }: {\n ignoreCache?: boolean;\n signal?: AbortSignal;\n queryParameters?: FailCodeQueryParams;\n }) {\n const url = `/fail-codes-teams${this.http.queryString(queryParameters)}`;\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n deleteFailCode({\n deleteParams,\n ignoreCache,\n signal,\n }: {\n deleteParams: DeleteFailCodeParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-code-process' + this.http.queryString(deleteParams);\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url,\n ignoreCache,\n signal,\n });\n }\n\n getFailCode({\n searchParams,\n ignoreCache,\n signal,\n }: {\n searchParams: FailCodeParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/all-fail-codes-with-teams' + this.http.queryString(searchParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n addFailCodeTeam({\n addParams,\n ignoreCache,\n signal,\n }: {\n addParams: AddFailCodeTeamParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-code-process' + this.http.queryString(addParams);\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url,\n ignoreCache,\n signal,\n });\n }\n\n deleteTeam({\n deleteTeamParams,\n ignoreCache,\n signal,\n }: {\n deleteTeamParams: DeleteTeamParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-code-process' + this.http.queryString(deleteTeamParams);\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url,\n ignoreCache,\n signal,\n });\n }\n\n renameFailCodeTeam({\n renameParams,\n ignoreCache,\n signal,\n }: {\n renameParams: RenameTeamParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-code-process' + this.http.queryString(renameParams);\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url,\n ignoreCache,\n signal,\n });\n }\n\n addFailCode({\n addFailCodeParams,\n ignoreCache,\n signal,\n }: {\n addFailCodeParams: AddFailCodeParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/fail-code-process' + this.http.queryString(addFailCodeParams);\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url,\n ignoreCache,\n signal,\n });\n }\n\n initiateCsvExport({ failCodes }: { failCodes: FailCodes[] | null }, searchId?: string | null) {\n const failCode = failCodes ? failCodes.map((failCodes) => failCodes.failCode) : null;\n const body = {\n failCodes: failCode,\n ...(searchId ? { searchId } : {}),\n };\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/failCode/csv-export',\n body,\n });\n }\n}\n","import { Dispatch, Reducer } from 'react';\nimport { action, on, props, reducer, union, payload } from 'ts-action';\nimport deepMerge from 'deepmerge';\n\nimport { Asset, AssetType, Qmr, AssetProcessingState, PatchQmrDto } from '@packages/models/api';\n\ninterface NewQmr {\n retailerId?: string;\n vin?: string;\n carlineId?: string;\n modelYear?: number;\n engineNumber?: string;\n transmissionNumber?: string;\n qmrCategories?: string[];\n}\n\nexport interface QmrState {\n newQmr: NewQmr;\n qmr: Qmr | null;\n draftMedia: DraftMedia[];\n submitAttempted: boolean;\n localPatch: PatchQmrDto | null;\n}\n\nexport interface DraftMedia {\n assetId: Asset['assetId'];\n assetTypeId: AssetType;\n rawSource: any; // RN PickerImage or Web File/blob\n thumbnailSource?: any;\n overlaySource?: any;\n note?: string;\n name?: string;\n sizeInBytes?: number;\n uploadId?: string;\n processingStateId?: AssetProcessingState;\n replacesAssetId?: Asset['assetId'];\n contentType?: string;\n}\n\nexport const qmrActions = {\n setSubmitAttempted: action('SET_SUBMIT_ATTEMPTED', props<{ submitAttempted: boolean }>()),\n setNewQmr: action('SET_NEW_QMR', props>()),\n updateQmr: action('UPDATE_QMR', props<{ qmr: Partial }>()),\n addDraftMedia: action('ADD_MEDIA_DRAFT', props()),\n updateDraftMedia: action(\n 'UPDATE_DRAFT_MEDIA',\n props<{\n draftMedia: Partial;\n replaceId: string;\n }>()\n ),\n removeDraftMedia: action('REMOVE_DRAFT_MEDIA', props<{ assetId: string }>()),\n setDraftMedia: action('SET_DRAFT_MEDIA', props<{ draftMedia: DraftMedia[] }>()),\n updateAsset: action('UPDATE_ASSET', props<{ asset: Asset }>()),\n applyLocalPatch: action('APPLY_LOCAL_PATCH', payload()),\n};\n\nconst actionsUnion = union(...Object.values(qmrActions));\ntype QmrActions = typeof actionsUnion.actions;\n\nexport type QmrActionDispatcher = Dispatch;\n\nexport const initialState: QmrState = {\n newQmr: {},\n qmr: null,\n draftMedia: [],\n submitAttempted: false,\n localPatch: null,\n};\n\nexport const qmrReducer: Reducer = reducer(\n initialState,\n on(qmrActions.setSubmitAttempted, (state, { submitAttempted }) => {\n return {\n ...state,\n submitAttempted,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n on(qmrActions.setNewQmr, (state, { type, ...newQmr }) => {\n return {\n ...state,\n newQmr,\n };\n }),\n on(qmrActions.updateQmr, (state, { qmr }) => {\n const uploadedAssetIds = qmr.assets?.map((a) => a.assetId) ?? [];\n const draftIds = (state.draftMedia || []).map((i) => i.assetId);\n const shouldUpdateDrafts = draftIds.some((d) => uploadedAssetIds.includes(d));\n\n return {\n ...state,\n qmr: qmr as Qmr,\n draftMedia: shouldUpdateDrafts\n ? state.draftMedia.filter((d) => {\n return !uploadedAssetIds.includes(d.assetId);\n })\n : state.draftMedia || [],\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n on(qmrActions.addDraftMedia, (state, { type, ...newDraft }) => {\n let currentDraftMedia = state.draftMedia;\n\n if (newDraft.replacesAssetId) {\n currentDraftMedia = currentDraftMedia.filter(\n (oldDraft) => oldDraft.replacesAssetId !== newDraft.replacesAssetId\n );\n }\n\n return {\n ...state,\n draftMedia: [...currentDraftMedia, newDraft],\n };\n }),\n on(qmrActions.updateDraftMedia, (state, { draftMedia: updatedDraftMedia, replaceId }) => {\n return {\n ...state,\n draftMedia: state.draftMedia.map((draftMedia) => {\n if (draftMedia.assetId === replaceId) {\n return deepMerge(draftMedia, updatedDraftMedia, {\n arrayMerge: (_, y) => y,\n });\n }\n\n return draftMedia;\n }),\n };\n }),\n on(qmrActions.removeDraftMedia, (state, { assetId }) => {\n return {\n ...state,\n draftMedia: state.draftMedia.filter((dM) => dM.assetId !== assetId),\n };\n }),\n on(qmrActions.setDraftMedia, (state, { draftMedia }) => {\n const uploadedAssetIds = state.qmr?.assets?.map((a) => a.assetId) ?? [];\n\n return {\n ...state,\n draftMedia: draftMedia.filter((a) => !uploadedAssetIds.includes(a.assetId)),\n };\n }),\n on(qmrActions.updateAsset, (state, { asset }) => {\n if (!state.qmr) {\n return state;\n }\n\n if (!Array.isArray(state.qmr.assets)) {\n return {\n ...state,\n qmr: {\n ...state.qmr,\n assets: [asset],\n },\n };\n }\n\n const qmrAssetIndex = state.qmr.assets.findIndex((qmrAsset) => qmrAsset.assetId === asset.assetId);\n\n if (qmrAssetIndex === -1) {\n return {\n ...state,\n qmr: {\n ...state.qmr,\n assets: [...state.qmr.assets, asset],\n },\n };\n }\n\n return {\n ...state,\n qmr: {\n ...state.qmr,\n assets: Object.assign([], state.qmr.assets, {\n [qmrAssetIndex]: asset,\n }),\n },\n };\n }),\n on(qmrActions.applyLocalPatch, (state, { payload: actionPayload }) => {\n if (actionPayload === null) {\n return {\n ...state,\n localPatch: null,\n };\n }\n\n return {\n ...state,\n qmr: Object.assign({}, state.qmr, actionPayload),\n localPatch: {\n ...state.localPatch,\n ...actionPayload,\n },\n };\n })\n);\n","import { get, pick } from 'lodash';\nimport i18n from 'i18next';\nimport { Platform } from 'react-native';\nimport { isAfter, parseISO } from 'date-fns';\n\nimport {\n Qmr,\n Asset,\n QmrEwdState,\n AssetMediaType,\n QmrStatusTypeId,\n DsqmReviewStatusTypeId,\n TrReplyStatusType,\n} from '@packages/models/api';\nimport { AssetMediaUrlsByType, AssetMediaViewModel, getAssetMediaUrlsByType } from '@packages/core/utils';\nimport colors from '@packages/core/styles/colors';\n\nexport enum QmrReportSectionStatus {\n Empty,\n Optional,\n Partial,\n Warning,\n Completed,\n Loading,\n Error,\n}\n\nconst qmrSectionStatusIconMap = {\n [QmrReportSectionStatus.Empty]: 'check-circle-hollow',\n [QmrReportSectionStatus.Optional]: 'x-circle',\n [QmrReportSectionStatus.Partial]: 'warning',\n [QmrReportSectionStatus.Warning]: 'warning',\n [QmrReportSectionStatus.Completed]: 'check-circle-hollow',\n [QmrReportSectionStatus.Loading]: 'upload-in-progress',\n [QmrReportSectionStatus.Error]: 'error',\n} as const;\n\nconst qmrSectionStatusColorMap = {\n [QmrReportSectionStatus.Empty]: 'grayThree',\n [QmrReportSectionStatus.Optional]: 'grayFive',\n [QmrReportSectionStatus.Partial]: 'yellowOne',\n [QmrReportSectionStatus.Warning]: 'yellowOne',\n [QmrReportSectionStatus.Completed]: 'blueOne',\n [QmrReportSectionStatus.Loading]: 'blueOne',\n [QmrReportSectionStatus.Error]: 'redOne',\n} as const;\n\nconst qmrQaReviewIconMap = {\n [QmrStatusTypeId.PendingReview]: 'circle-indeterminate',\n [QmrStatusTypeId.UnderReview]: 'warning',\n [QmrStatusTypeId.Completed]: 'check-circle-hollow',\n [QmrStatusTypeId.MoreInfoRequested]: 'error',\n} as const;\n\nconst qmrQaReviewColorMap = {\n [QmrStatusTypeId.PendingReview]: {\n iconColor: 'brandSecondary',\n badgeVariant: 'default',\n },\n [QmrStatusTypeId.UnderReview]: {\n iconColor: 'yellowOne',\n badgeVariant: 'yellow',\n },\n [QmrStatusTypeId.Completed]: {\n iconColor: 'greenOne',\n badgeVariant: 'green',\n },\n [QmrStatusTypeId.MoreInfoRequested]: {\n iconColor: 'redOne',\n badgeVariant: 'red',\n },\n} as const;\n\nconst qmrDsqmReviewIconMap = {\n [DsqmReviewStatusTypeId.PendingReview]: 'circle-indeterminate',\n [DsqmReviewStatusTypeId.UnderReview]: 'warning',\n [DsqmReviewStatusTypeId.Completed]: 'check-circle-hollow',\n [DsqmReviewStatusTypeId.MoreInfoRequested]: 'error',\n} as const;\n\nconst dsqmReviewStatusIconMap = {\n [DsqmReviewStatusTypeId.NoActionNeeded]: 'check-circle-hollow',\n [DsqmReviewStatusTypeId.PendingReview]: 'warning',\n [DsqmReviewStatusTypeId.UnderReview]: 'warning',\n};\n\nconst qmrDsqmReviewColorMap = {\n [DsqmReviewStatusTypeId.PendingReview]: {\n iconColor: 'brandSecondary',\n badgeVariant: 'default',\n },\n [DsqmReviewStatusTypeId.UnderReview]: {\n iconColor: 'yellowOne',\n badgeVariant: 'yellow',\n },\n [DsqmReviewStatusTypeId.Completed]: {\n iconColor: 'greenOne',\n badgeVariant: 'green',\n },\n [DsqmReviewStatusTypeId.MoreInfoRequested]: {\n iconColor: 'redOne',\n badgeVariant: 'red',\n },\n} as const;\n\nconst dsqmReviewStatusColorMap = {\n [DsqmReviewStatusTypeId.PendingReview]: {\n iconColor: 'yellowOne',\n badgeVariant: 'yellow',\n },\n [DsqmReviewStatusTypeId.UnderReview]: {\n iconColor: 'yellowOne',\n badgeVariant: 'yellow',\n },\n [DsqmReviewStatusTypeId.Completed]: {\n iconColor: 'greenOne',\n badgeVariant: 'green',\n },\n};\n\nconst qmrTrReplyColorMap = {\n [TrReplyStatusType.Draft]: {\n badgeVariant: 'yellow',\n },\n [TrReplyStatusType.Issued]: {\n badgeVariant: 'yellow',\n },\n [TrReplyStatusType.TempReplyReceived]: {\n badgeVariant: 'blue',\n },\n [TrReplyStatusType.FinalReplyReceived]: {\n badgeVariant: 'blue',\n },\n [TrReplyStatusType.FinalReplyApproved]: {\n badgeVariant: 'green',\n },\n [TrReplyStatusType.FinalReplyRefused]: {\n badgeVariant: 'red',\n },\n [TrReplyStatusType.NotEscalated]: {\n badgeVariant: 'yellow',\n },\n} as const;\n\nexport interface BaseQmrReportSection {\n status: QmrReportSectionStatus;\n required: boolean;\n iconName: string;\n iconColor: keyof typeof colors;\n description?: string;\n}\n\nexport const getQmrRetailerSection = ({ qmr }: { qmr: Qmr | null }): BaseQmrReportSection => {\n const status = qmr ? QmrReportSectionStatus.Completed : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description:\n Platform.OS === 'web'\n ? `#${qmr?.retailer.code}`\n : qmr\n ? `${qmr.retailer.name} (#${qmr.retailer.code})`\n : 'N/A',\n };\n};\n\nexport const getQmrVehicleDetailsSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasRequiredVehicleDetailFields = !!qmr && qmr.modelYear && qmr.carlineId;\n const hasPartialVehicleDetailFields =\n !!qmr && (qmr.vin || qmr.modelYear || qmr.carlineId || qmr.transmissionNumber || qmr.engineNumber);\n\n const status = hasRequiredVehicleDetailFields\n ? QmrReportSectionStatus.Completed\n : submitAttempted && !hasRequiredVehicleDetailFields\n ? QmrReportSectionStatus.Error\n : hasPartialVehicleDetailFields\n ? QmrReportSectionStatus.Partial\n : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description: qmr ? `${qmr.modelYear} ${qmr.carlineName}` : 'N/A',\n };\n};\n\nexport const getQmrMediaSection = ({\n qmr,\n numPending = 0,\n numUploading = 0,\n numUploadErrors = 0,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n numPending?: number;\n numUploading?: number;\n numUploadErrors?: number;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const qmrAssetCount = (qmr && qmr.assets && qmr.assets.length) || 0;\n\n const status =\n numUploadErrors > 0\n ? QmrReportSectionStatus.Error\n : numUploading > 0\n ? QmrReportSectionStatus.Loading\n : numPending > 0\n ? QmrReportSectionStatus.Warning\n : qmrAssetCount > 0\n ? QmrReportSectionStatus.Completed\n : QmrReportSectionStatus.Optional;\n\n return {\n status,\n required: false,\n description:\n status === QmrReportSectionStatus.Error\n ? i18n.t('qmr:sections.media.secondaryError', {\n count: numUploadErrors,\n })\n : status === QmrReportSectionStatus.Loading\n ? i18n.t('qmr:sections.media.secondaryUploading', {\n count: numUploading,\n })\n : status === QmrReportSectionStatus.Warning\n ? i18n.t('qmr:sections.media.secondaryPending', {\n count: numPending,\n })\n : i18n.t('qmr:sections.media.secondary', {\n count: qmrAssetCount,\n }),\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n };\n};\n\nexport const getQmrConcernSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasRequiredConcernFields =\n !!qmr &&\n qmr.complaint?.trim().length &&\n typeof qmr.complaintDuplicated === 'boolean' &&\n qmr.mileage &&\n qmr.failureDate &&\n typeof qmr.ewdSignsExist === 'boolean' &&\n (qmr.ewdSignsExist === true\n ? qmr.ewdRollover ||\n qmr.ewdFire ||\n qmr.ewdAccident ||\n qmr.ewdInjury ||\n qmr.ewdDeath ||\n qmr.ewdPropertyDamage\n : true);\n\n const hasPartialConcernFields = qmr\n ? qmr.complaint?.trim().length ||\n typeof qmr.complaintDuplicated === 'boolean' ||\n qmr.repairOrderNumber ||\n qmr.mileage ||\n qmr.failureDate ||\n typeof qmr.ewdSignsExist === 'boolean'\n : false;\n\n const status = hasRequiredConcernFields\n ? QmrReportSectionStatus.Completed\n : submitAttempted && !hasRequiredConcernFields\n ? QmrReportSectionStatus.Error\n : hasPartialConcernFields\n ? QmrReportSectionStatus.Partial\n : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description:\n Platform.OS === 'web'\n ? status === QmrReportSectionStatus.Completed\n ? i18n.t('qmr:sections.status.complete', 'Complete')\n : ''\n : (qmr && qmr.complaint) || '',\n };\n};\n\nexport const getQmrCauseSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasRequiredCauseFields = !!qmr && qmr.cause;\n const hasPartialCauseFields = qmr ? qmr.cause || qmr.partNumber : false;\n\n const status = hasRequiredCauseFields\n ? QmrReportSectionStatus.Completed\n : submitAttempted && !hasRequiredCauseFields\n ? QmrReportSectionStatus.Error\n : hasPartialCauseFields\n ? QmrReportSectionStatus.Partial\n : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description:\n Platform.OS === 'web'\n ? status === QmrReportSectionStatus.Completed\n ? i18n.t('qmr:sections.status.complete', 'Complete')\n : ''\n : (qmr && qmr.cause) || '',\n };\n};\n\nexport const getQmrCorrectionSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasRequiredCorrectionFields =\n !!qmr &&\n (qmr.importedFromSiebel\n ? !!qmr.correction\n : !!qmr.correction && typeof qmr.issueResolved === 'boolean' && !!qmr.repairDate);\n\n const hasPartialCorrectionFields = qmr\n ? qmr.importedFromSiebel\n ? !!qmr.correction\n : !!qmr.correction || typeof qmr.issueResolved === 'boolean' || !!qmr.repairDate\n : false;\n\n const status = hasRequiredCorrectionFields\n ? QmrReportSectionStatus.Completed\n : submitAttempted && !hasRequiredCorrectionFields\n ? QmrReportSectionStatus.Error\n : hasPartialCorrectionFields\n ? QmrReportSectionStatus.Partial\n : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description:\n Platform.OS === 'web'\n ? status === QmrReportSectionStatus.Completed\n ? i18n.t('qmr:sections.status.complete', 'Complete')\n : ''\n : (qmr && qmr.correction) || '',\n };\n};\n\nexport const getQmrDtcCodesSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasDtcCodes = !!qmr && qmr.dtcCodesSet && Array.isArray(qmr.dtcCodes);\n\n const status = hasDtcCodes ? QmrReportSectionStatus.Completed : QmrReportSectionStatus.Optional;\n\n return {\n status,\n required: false,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description:\n Platform.OS === 'web'\n ? i18n.t('qmr:sections.dtcCodes.secondary', '{{ count}} added', {\n count: (qmr && qmr.dtcCodes && qmr.dtcCodes.length) || 0,\n })\n : (qmr && qmr.dtcCodes && qmr.dtcCodes.map((c) => c.dtcCode).join(', ')) ||\n i18n.t('qmr:sections.status.optional', 'Optional'),\n };\n};\n\nexport const getQmrFailCodeSection = ({\n qmr,\n submitAttempted = false,\n}: {\n qmr: Qmr | null;\n submitAttempted?: boolean;\n}): BaseQmrReportSection => {\n const hasFailCode = qmr && qmr.failCode;\n const requiresApprover = qmr?.failCodeApproved === false;\n\n const status =\n submitAttempted && !hasFailCode\n ? QmrReportSectionStatus.Error\n : hasFailCode || !qmr?.capabilities.addFailCodeToQmr || requiresApprover\n ? QmrReportSectionStatus.Completed\n : QmrReportSectionStatus.Empty;\n\n const getDescription = () => {\n if (!qmr?.capabilities.addFailCodeToQmr || requiresApprover) {\n return 'Sending to Approver';\n }\n\n if (hasFailCode && qmr?.isValidFailCode === true) {\n return `${qmr?.failCode} - ${qmr?.failCodeDescription || 'No Description'}`;\n }\n\n if (hasFailCode && qmr?.isValidFailCode === false) {\n return `${qmr?.failCode} - Invalid Fail Code Selected`;\n }\n\n return '';\n };\n\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description: getDescription(),\n };\n};\n\nexport const getQmrObjectiveSection = ({ qmr }: { qmr: Qmr | null }): BaseQmrReportSection => {\n const status = QmrReportSectionStatus.Completed;\n return {\n status,\n required: true,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n description: qmr?.qmrCategories?.join(', '),\n };\n};\n\nexport const getQmrAdditionalInfoSection = ({ qmr }: { qmr: Qmr | null }): BaseQmrReportSection => {\n const hasAdditionalComments =\n qmr && Array.isArray(qmr.additionalInfoComments) && qmr.additionalInfoComments.length > 0;\n const status = hasAdditionalComments ? QmrReportSectionStatus.Completed : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: false,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n };\n};\n\nexport const getQmrOutcome = ({ qmr }: { qmr: Qmr | null }): BaseQmrReportSection => {\n const hasQmrOutcome = qmr && qmr.outcomeAvailable;\n const status = hasQmrOutcome ? QmrReportSectionStatus.Completed : QmrReportSectionStatus.Empty;\n\n return {\n status,\n required: false,\n iconName: qmrSectionStatusIconMap[status],\n iconColor: qmrSectionStatusColorMap[status],\n };\n};\n\nexport const getQmrVehicleDetails = (qmr: Qmr | null) => {\n if (!qmr) {\n return { displayName: 'N/A', vin: 'N/A' };\n }\n\n const { modelYear, carlineName, vin } = qmr;\n\n return {\n displayName: `${modelYear} ${carlineName}`,\n vin: vin || 'N/A',\n };\n};\n\nexport type QmrAssetDetails = {\n assetId: Asset['assetId'];\n assetTypeId: Asset['assetTypeId'];\n assetProcessingStateId: Asset['assetProcessingStateId'];\n createdTimestampDescription: Asset['createdTimestampDescription'];\n isAdditionalUpload: boolean;\n name: Asset['name'];\n note: Asset['note'];\n isRestricted: boolean;\n media: AssetMediaUrlsByType;\n thumbnailMedia: AssetMediaViewModel;\n};\n\nexport const getQmrAssetDetails = (qmr: Qmr | null): QmrAssetDetails[] => {\n if (!qmr || !Array.isArray(qmr.assets)) {\n return [];\n }\n\n return qmr.assets\n .map((asset) => {\n // reduces media array to map of\n // AssetMediaType => { uri, size }\n const media = getAssetMediaUrlsByType(asset.media, asset.assetId, asset.name);\n const restrictedAssetIds = qmr.restrictedAssetIds || [];\n\n return {\n assetId: asset.assetId,\n assetTypeId: asset.assetTypeId,\n assetProcessingStateId: asset.assetProcessingStateId,\n createdTimestampDescription: asset.createdTimestampDescription,\n isAdditionalUpload:\n !asset.importedFromSiebel &&\n isAfter(\n parseISO(asset?.createdTimestamp),\n parseISO(qmr?.firstSubmittedTimestamp ?? '1970-01-01T00:00:00Z')\n ),\n note: asset.note,\n name: asset.name,\n isRestricted: restrictedAssetIds.includes(asset.assetId),\n media,\n thumbnailMedia:\n media[AssetMediaType.Thumbnail] || media[AssetMediaType.Original] || media[AssetMediaType.File],\n };\n })\n .filter((asset) => {\n return asset.isRestricted ? !!qmr.capabilities.viewRestrictedMediaOnQmr : true;\n });\n};\n\nexport const getQmrRoleReview = (qmr: Qmr) => {\n const trReplyStatusType = get(\n qmr,\n 'trReplyStatus.trReplyStatusId',\n TrReplyStatusType.NotEscalated\n ) as TrReplyStatusType;\n return {\n qa: {\n iconName: qmrQaReviewIconMap[qmr.qmrStatus.qmrStatusTypeId],\n ...qmrQaReviewColorMap[qmr.qmrStatus.qmrStatusTypeId],\n },\n dsqm: {\n iconName: dsqmReviewStatusIconMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n ...dsqmReviewStatusColorMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n },\n dqsm: {\n iconName: qmrDsqmReviewIconMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n ...qmrDsqmReviewColorMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n },\n trReply: {\n ...qmrTrReplyColorMap[trReplyStatusType],\n },\n dsqmStatus: {\n iconName: qmrQaReviewIconMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n ...qmrQaReviewColorMap[qmr.dsqmReviewStatus.dsqmReviewStatusTypeId],\n },\n };\n};\n\nexport const initialQmrEwdState: QmrEwdState = {\n ewdSignsExist: undefined,\n ewdAccident: false,\n ewdDeath: false,\n ewdDeathCount: 0,\n ewdFire: false,\n ewdInjury: false,\n ewdInjuryCount: 0,\n ewdPropertyDamage: false,\n ewdRollover: false,\n};\n\nexport function getQmrEwdState(qmr: Qmr): QmrEwdState {\n return Object.assign(\n {},\n initialQmrEwdState,\n pick(qmr, [\n 'ewdSignsExist',\n 'ewdRollover',\n 'ewdFire',\n 'ewdAccident',\n 'ewdPropertyDamage',\n 'ewdInjury',\n 'ewdInjuryCount',\n 'ewdDeath',\n 'ewdDeathCount',\n ])\n );\n}\n","import React, { createContext, FC, useReducer } from 'react';\n\nimport {\n ApiResponse,\n Asset,\n Qmr,\n CreateQmrDto,\n QmrResponseDto,\n PatchQmrDto,\n PatchQmrAssetDto,\n UpdateQmrDtcCodesDto,\n} from '@packages/models/api';\n\nimport { QmrsService } from './qmrs.service';\nimport { initialState, QmrActionDispatcher, qmrReducer, QmrState, qmrActions } from './qmrs.state';\nimport { getQmrEwdState } from './qmrs.utils';\n\nexport const QmrStateContext = createContext(undefined);\nexport const QmrDispatchContext = createContext(undefined);\n\nexport const QmrProvider: FC<{ children: React.ReactNode }> = ({ children }) => {\n const [state, dispatch] = useReducer(qmrReducer, initialState);\n\n return (\n \n {children}\n \n );\n};\n\ninterface QmrDataAccess {\n qmrsService: QmrsService;\n qmrDispatch: QmrActionDispatcher;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n}\n\nexport async function fetchQmr({\n qmrId,\n qmrsService,\n qmrDispatch,\n signal,\n ignoreCache,\n}: { qmrId: Qmr['qmrId'] } & QmrDataAccess) {\n qmrDispatch(qmrActions.applyLocalPatch(null));\n\n return updateQmr({\n apiPromise: qmrsService.fetchQmr({\n qmrId,\n ignoreCache,\n signal,\n }),\n qmrDispatch,\n });\n}\n\nasync function updateQmr({\n apiPromise,\n qmrDispatch,\n}: {\n apiPromise: Promise>;\n qmrDispatch: QmrActionDispatcher;\n}) {\n const response = await apiPromise;\n\n if (!response.success && response.aborted) {\n return;\n } else if (!response.success) {\n return Promise.reject(response.data);\n }\n\n qmrDispatch(qmrActions.updateQmr({ qmr: response.data.qmr }));\n\n return response.data.qmr;\n}\n\nexport async function createQmr({\n newQmr,\n qmrsService,\n qmrDispatch,\n signal,\n}: { newQmr: CreateQmrDto } & QmrDataAccess) {\n return updateQmr({\n apiPromise: qmrsService.createQmr(newQmr, signal),\n qmrDispatch,\n });\n}\n\nexport async function saveQmr({ qmr, qmrsService, qmrDispatch, signal }: { qmr: Qmr } & QmrDataAccess) {\n const {\n qmrId,\n retailerId,\n qmrStatus,\n vin,\n modelYear,\n carlineId,\n transmissionNumber,\n engineNumber,\n complaint,\n complaintDuplicated,\n repairOrderNumber,\n mileage,\n failureDate,\n cause,\n partNumber,\n correction,\n issueResolved,\n repairDate,\n dtcCodes,\n } = qmr;\n\n const ewdState = getQmrEwdState(qmr);\n\n const apiPromise = qmrsService.saveQmr(\n qmrId,\n {\n retailerId,\n vin,\n qmrStatusId: qmrStatus.qmrStatusId,\n modelYear,\n carlineId,\n transmissionNumber,\n engineNumber,\n complaint,\n repairOrderNumber,\n mileage,\n failureDate,\n cause,\n partNumber,\n correction,\n issueResolved,\n repairDate,\n ...ewdState,\n dtcCodesSet: true,\n dtcCodes: Array.isArray(dtcCodes)\n ? dtcCodes.map((c) => {\n return {\n dtcCodeId: c.dtcCodeId,\n markedAsPrimary: !!c.markedAsPrimary,\n freezeFrameDataAvailable: !!c.freezeFrameDataAvailable,\n };\n })\n : [],\n // failCode: null, // TODO: Fail Code Implementation\n complaintDuplicated: complaintDuplicated || false,\n },\n signal\n );\n\n return updateQmr({\n apiPromise,\n qmrDispatch,\n });\n}\n\nexport async function patchQmr({\n qmrId,\n qmrPatch,\n isLocalPatch = false,\n qmrsService,\n qmrDispatch,\n signal,\n}: {\n qmrId: Qmr['qmrId'];\n qmrPatch: Partial;\n isLocalPatch?: boolean;\n} & QmrDataAccess) {\n if (isLocalPatch) {\n qmrDispatch(qmrActions.applyLocalPatch(qmrPatch));\n return;\n }\n\n return updateQmr({\n apiPromise: qmrsService.patchQmr({ qmrId, signal, ...qmrPatch }),\n qmrDispatch,\n });\n}\n\nexport async function updateQmrDtcCodes({\n qmrId,\n dtcCodes,\n qmrsService,\n qmrDispatch,\n signal,\n}: {\n qmrId: Qmr['qmrId'];\n dtcCodes: UpdateQmrDtcCodesDto['dtcCodes'];\n} & QmrDataAccess) {\n return updateQmr({\n apiPromise: qmrsService.updateQmrDtcCodes(qmrId, { dtcCodesSet: true, dtcCodes }, signal),\n qmrDispatch,\n });\n}\n\nexport async function updateQmrRestrictedAssetIds({\n qmrId,\n restrictedAssetIds,\n qmrsService,\n qmrDispatch,\n signal,\n}: {\n qmrId: Qmr['qmrId'];\n restrictedAssetIds: Asset['assetId'][];\n} & QmrDataAccess) {\n return updateQmr({\n apiPromise: qmrsService.updateQmrRestrictedAssetIds(\n qmrId,\n {\n restrictedAssetIds,\n },\n signal\n ),\n qmrDispatch,\n });\n}\n\nexport async function updateQmrAsset({\n assetId,\n assetPatch,\n qmrsService,\n qmrDispatch,\n signal,\n}: { assetId: Asset['assetId']; assetPatch: PatchQmrAssetDto } & QmrDataAccess) {\n const response = await qmrsService.patchQmrAsset({\n assetId,\n signal,\n ...assetPatch,\n });\n\n if (!response.success && response.aborted) {\n return;\n } else if (!response.success) {\n return Promise.reject(response.data);\n }\n\n qmrDispatch(qmrActions.updateAsset({ asset: response.data.asset }));\n\n return response.data.asset;\n}\n\nexport async function deleteQmrAssets({\n qmrId,\n assetIds,\n qmrsService,\n qmrDispatch,\n signal,\n}: { qmrId: Qmr['qmrId']; assetIds: Asset['assetId'][] } & QmrDataAccess) {\n return updateQmr({\n apiPromise: qmrsService.deleteQmrAssets(qmrId, { assetIds }, signal),\n qmrDispatch,\n });\n}\n\nexport async function setQmrNoRepairModeFailCode({\n qmrId,\n locationCode,\n frequencyCode,\n concernCode,\n qmrsService,\n qmrDispatch,\n signal,\n}: { qmrId: Qmr['qmrId']; locationCode: string; frequencyCode: string; concernCode: string } & QmrDataAccess) {\n return updateQmr({\n apiPromise: qmrsService.setQmrNoRepairModeFailCode({\n qmrId,\n locationCode,\n frequencyCode,\n concernCode,\n signal,\n }),\n qmrDispatch,\n });\n}\n","import { useContext, useEffect, useState, useMemo, useRef, useCallback } from 'react';\nimport { isEqual, every } from 'lodash';\nimport { useQuery, useMutation } from 'react-query';\n\nimport {\n QmrEwdState,\n AssetProcessingState,\n QmrStatusId,\n DsqmReviewStatusId,\n QaQmrAction,\n DsqmQmrAction,\n Qmr,\n} from '@packages/models/api';\nimport { AlertHook } from '@packages/ui/shared';\nimport { QmrsService } from './qmrs.service';\nimport { fetchQmr, QmrDispatchContext, QmrStateContext } from './qmrs.context';\nimport {\n getQmrEwdState,\n getQmrRetailerSection,\n getQmrVehicleDetailsSection,\n getQmrMediaSection,\n getQmrConcernSection,\n getQmrCauseSection,\n getQmrCorrectionSection,\n getQmrDtcCodesSection,\n getQmrFailCodeSection,\n getQmrObjectiveSection,\n} from './qmrs.utils';\nimport { useQmrAssetUploads, AssetUploadsService } from '../asset-uploads';\nimport { qmrActions } from './qmrs.state';\nimport { useTranslation } from 'react-i18next';\nimport { AdvancedSearchContext } from './advanced-search.context';\nimport { useInvestigationModal } from '../investigations';\nimport { useEscalationModal } from '../escalations';\nimport React from 'react';\n\nexport const useQmrState = () => {\n const state = useContext(QmrStateContext);\n\n if (state === undefined) {\n throw new Error('useQmrState must be used within a QmrProvider');\n }\n\n return state;\n};\n\nexport const useQmrDispatch = () => {\n const dispatch = useContext(QmrDispatchContext);\n\n if (dispatch === undefined) {\n throw new Error('useQmrDispatch must be used within a QmrProvider');\n }\n\n return dispatch;\n};\n\nexport const useQmrEwdState = () => {\n const { qmr } = useQmrState();\n\n const [ewdState, setEwdState] = useState(getQmrEwdState(qmr!));\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const hasSigns = ewdState ? ewdState.ewdSignsExist : false;\n\n useEffect(() => {\n if (!qmr || !ewdState) {\n return;\n }\n\n setHasUnsavedChanges(!isEqual(getQmrEwdState(qmr), ewdState));\n }, [ewdState, qmr]);\n\n useEffect(() => {\n if (hasSigns || !hasUnsavedChanges) {\n return;\n }\n\n setEwdState({\n ewdSignsExist: false,\n ewdAccident: false,\n ewdDeath: false,\n ewdDeathCount: 0,\n ewdFire: false,\n ewdInjury: false,\n ewdInjuryCount: 0,\n ewdPropertyDamage: false,\n ewdRollover: false,\n });\n }, [hasSigns, hasUnsavedChanges]);\n\n return {\n ewdState,\n setEwdState,\n hasUnsavedChanges,\n };\n};\n\nexport const useQmrReportSections = (submitAttempted: boolean) => {\n const { qmr, draftMedia } = useQmrState();\n const { inProgressUploads, failedUploads } = useQmrAssetUploads(qmr?.qmrId);\n\n const retailerSection = useMemo(() => getQmrRetailerSection({ qmr }), [qmr]);\n const vehicleDetailsSection = useMemo(\n () => getQmrVehicleDetailsSection({ qmr, submitAttempted }),\n [qmr, submitAttempted]\n );\n const mediaSection = useMemo(() => {\n if (!qmr) {\n return;\n }\n return getQmrMediaSection({\n qmr,\n submitAttempted,\n numPending: draftMedia.length,\n numUploading: inProgressUploads.length,\n numUploadErrors: failedUploads.length,\n });\n }, [draftMedia.length, failedUploads.length, inProgressUploads.length, qmr, submitAttempted]);\n const concernSection = useMemo(() => getQmrConcernSection({ qmr, submitAttempted }), [qmr, submitAttempted]);\n const causeSection = useMemo(() => getQmrCauseSection({ qmr, submitAttempted }), [qmr, submitAttempted]);\n const correctionSection = useMemo(() => getQmrCorrectionSection({ qmr, submitAttempted }), [qmr, submitAttempted]);\n const dtcCodesSection = useMemo(() => getQmrDtcCodesSection({ qmr, submitAttempted }), [qmr, submitAttempted]);\n const failCodesSection = useMemo(() => getQmrFailCodeSection({ qmr, submitAttempted }), [qmr, submitAttempted]);\n const objectiveSection = useMemo(() => getQmrObjectiveSection({ qmr }), [qmr]);\n return {\n retailerSection,\n vehicleDetailsSection,\n mediaSection,\n concernSection,\n causeSection,\n correctionSection,\n dtcCodesSection,\n failCodesSection,\n objectiveSection,\n };\n};\n\ninterface UseQmrPolling {\n qmrsService: QmrsService;\n intervalSec?: number;\n signal?: AbortSignal;\n pollImmediately?: boolean;\n}\n\n/**\n * @desc Hook to poll for QMR in current context\n */\nexport const useQmrPolling = ({ intervalSec = 120, qmrsService, signal, pollImmediately = false }: UseQmrPolling) => {\n const { qmr } = useQmrState();\n const qmrDispatch = useQmrDispatch();\n\n const qmrId = qmr?.qmrId;\n\n const poll = useCallback(async () => {\n if (!qmrId) {\n return;\n }\n\n try {\n await fetchQmr({\n qmrId,\n qmrDispatch,\n qmrsService,\n ignoreCache: true,\n signal,\n });\n } catch (error) {\n console.error('Error: Failed to fetch qmr');\n }\n }, [qmrId, qmrDispatch, qmrsService, signal]);\n\n useEffect(() => {\n if (pollImmediately) {\n poll();\n }\n\n const intervalId = setInterval(poll, intervalSec * 1000);\n\n return () => clearInterval(intervalId);\n }, [intervalSec, poll, pollImmediately, signal]);\n};\n\nexport const useQmrAssetPolling = (assetUploadsService: AssetUploadsService) => {\n const { qmr } = useQmrState();\n const qmrDispatch = useQmrDispatch();\n const pollingIntervalsRef = useRef(new Map());\n\n useEffect(() => {\n if (!qmr?.assets) {\n return;\n }\n\n const intervals = pollingIntervalsRef.current;\n\n for (const asset of qmr?.assets) {\n if (intervals.has(asset.assetId) && asset.assetProcessingStateId !== AssetProcessingState.Processing) {\n // if we are polling for this asset, but it's no longer processing\n // then clear its polling interval timer\n clearInterval(intervals.get(asset.assetId));\n intervals.delete(asset.assetId);\n return;\n }\n\n if (asset.assetProcessingStateId === AssetProcessingState.Processing && !intervals.has(asset.assetId)) {\n const id = setInterval(() => {\n assetUploadsService\n .getAsset({\n assetId: asset.assetId,\n ignoreCache: true,\n })\n .then((response) => {\n if (response.success) {\n if (response.data && response.data.asset) {\n qmrDispatch(qmrActions.updateAsset({ asset: response.data.asset }));\n\n if (\n response.data.asset.assetProcessingStateId !== AssetProcessingState.Processing\n ) {\n clearInterval(id);\n }\n }\n }\n });\n }, 5000);\n\n intervals.set(asset.assetId, id);\n }\n }\n }, [assetUploadsService, qmr?.assets, qmrDispatch]);\n\n useEffect(() => {\n const intervals = pollingIntervalsRef.current;\n\n return () => {\n intervals.forEach((id) => {\n clearInterval(id);\n });\n };\n }, []);\n};\n\nexport const useQmrReviewState = () => {\n const { qmr } = useQmrState();\n const { t } = useTranslation();\n const [updatedStatusId, setUpdatedStatusId] = useState<'dsqmReviewStatusId' | 'qmrStatusId'>();\n const [updatedStatusValue, setUpdatedStatusValue] = useState();\n const [primaryActionDescription, setPrimaryActionDescription] = useState('');\n const [qaActions, setQaActions] = useState([]);\n const [dsqmActions, setDsqmActions] = useState([]);\n\n const { finishReviewText, qmrActionsText } = useMemo(\n () => ({\n finishReviewText: t('text:finishReview', 'Finish Review'),\n qmrActionsText: t('text:qmrActions', 'Change status'),\n }),\n [t]\n );\n\n const showPrimaryActionButton = useMemo(() => {\n return (\n !!updatedStatusId &&\n (qaActions.length === 0 && dsqmActions.length === 0\n ? updatedStatusValue !== QmrStatusId.MoreInfoRequested &&\n updatedStatusValue !== DsqmReviewStatusId.MoreInfoRequested\n : true)\n );\n }, [dsqmActions.length, qaActions.length, updatedStatusId, updatedStatusValue]);\n\n const primaryActionButtonVariant = useMemo(() => {\n return primaryActionDescription === finishReviewText\n ? 'success'\n : primaryActionDescription === qmrActionsText\n ? 'primary-dropdown'\n : 'primary';\n }, [finishReviewText, primaryActionDescription, qmrActionsText]);\n\n const hasManyPrimaryActions = useMemo(() => {\n return qaActions.length > 0 || dsqmActions.length > 0;\n }, [dsqmActions.length, qaActions.length]);\n\n const availableActions = useMemo(() => {\n if (dsqmActions.length > 0) {\n return dsqmActions.map((action) => {\n return {\n label: action.actionDescription,\n isSelected: action.dsqmReviewStatusId === updatedStatusValue,\n onSelect: () => setUpdatedStatusValue(action.dsqmReviewStatusId),\n statusId: action.dsqmReviewStatusId,\n };\n });\n }\n\n return qaActions.map((action) => {\n return {\n label: action.actionDescription,\n isSelected: action.qmrStatusId === updatedStatusValue,\n onSelect: () => setUpdatedStatusValue(action.qmrStatusId),\n statusId: action.qmrStatusId,\n };\n });\n }, [dsqmActions, qaActions, updatedStatusValue]);\n\n const showOpenInfoRequestButton = useMemo(() => {\n if (dsqmActions.length > 0) {\n return dsqmActions.findIndex((a) => a.dsqmReviewStatusId === DsqmReviewStatusId.MoreInfoRequested) > -1;\n }\n\n return qaActions.findIndex((a) => a.qmrStatusId === QmrStatusId.MoreInfoRequested) > -1;\n }, [dsqmActions, qaActions]);\n\n const shouldShowAsDropdown = useCallback(() => {\n if (!qmr) {\n return false;\n }\n if (qmr.capabilities.transitionableDsqmReviewStatuses.length === 1) {\n return (\n qmr.capabilities.transitionableDsqmReviewStatuses[0].dsqmReviewStatusId ===\n DsqmReviewStatusId.NoActionNeeded\n );\n } else if (qmr.capabilities.transitionableQmrStatuses.length === 1) {\n return (\n qmr.capabilities.transitionableQmrStatuses[0].qmrStatusId === QmrStatusId.NoActionNeeded ||\n qmr.capabilities.transitionableQmrStatuses[0].qmrStatusId === QmrStatusId.MoreInformationNeeded\n );\n }\n return false;\n }, [qmr]);\n\n useEffect(() => {\n if (!qmr) {\n return;\n }\n\n if (qmr.capabilities.transitionableDsqmReviewStatuses.length > 0) {\n setUpdatedStatusId('dsqmReviewStatusId');\n if (qmr.capabilities.transitionableDsqmReviewStatuses.length === 1 && !shouldShowAsDropdown()) {\n const action = qmr.capabilities.transitionableDsqmReviewStatuses[0];\n setUpdatedStatusValue(action.dsqmReviewStatusId);\n setPrimaryActionDescription(action.actionDescription);\n } else {\n setDsqmActions(qmr.capabilities.transitionableDsqmReviewStatuses);\n setPrimaryActionDescription(\n qmr.dsqmReviewStatus.dsqmReviewStatusId === DsqmReviewStatusId.UnderReview\n ? finishReviewText\n : qmrActionsText\n );\n }\n } else if (qmr.capabilities.transitionableQmrStatuses.length > 0) {\n setUpdatedStatusId('qmrStatusId');\n if (qmr.capabilities.transitionableQmrStatuses.length === 1 && !shouldShowAsDropdown()) {\n const action = qmr.capabilities.transitionableQmrStatuses[0];\n setUpdatedStatusValue(action.qmrStatusId);\n setPrimaryActionDescription(action.actionDescription);\n } else {\n setQaActions(qmr.capabilities.transitionableQmrStatuses);\n setPrimaryActionDescription(\n qmr.qmrStatus.qmrStatusId === QmrStatusId.UnderReview ? finishReviewText : qmrActionsText\n );\n }\n } else {\n setUpdatedStatusId(undefined);\n setUpdatedStatusValue(undefined);\n setPrimaryActionDescription('');\n setDsqmActions([]);\n setQaActions([]);\n }\n }, [finishReviewText, qmr, qmrActionsText, shouldShowAsDropdown]);\n\n return {\n updatedStatusId,\n updatedStatusValue,\n availableActions,\n primaryActionDescription,\n finishReviewText,\n qmrActionsText,\n showPrimaryActionButton,\n primaryActionButtonVariant,\n hasManyPrimaryActions,\n showOpenInfoRequestButton,\n };\n};\n\nexport const useAdvancedSearchContext = () => {\n const advancedSearchContext = useContext(AdvancedSearchContext);\n return advancedSearchContext;\n};\n\n/**\n * @desc Hook to get a single info request\n */\nexport const useQmrInfoRequest = ({ id, qmrsService }: { id: string; qmrsService: QmrsService }) => {\n const queryFn = async () => {\n const res = await qmrsService.getInfoRequest({ id });\n\n if (!res.success) {\n throw res.data;\n }\n\n return res.data.data;\n };\n\n const query = useQuery(`qmr-info-req-${id}`, queryFn);\n\n return {\n query,\n };\n};\n\n/**\n * @desc Hook to get all info requests for a QMR\n */\nexport const useQmrInfoRequests = ({ qmrsService }: { qmrsService: QmrsService }) => {\n const { qmr } = useQmrState();\n\n const qmrId = qmr?.qmrId;\n\n const queryFn = async () => {\n if (!qmrId) {\n throw new Error('No QMR id');\n }\n\n const res = await qmrsService.getInfoRequests({ qmrId });\n\n if (!res.success) {\n throw res.data;\n }\n\n return res.data;\n };\n\n const query = useQuery(`qmr-info-reqs-${qmrId}`, queryFn, { enabled: !!qmrId });\n\n const openRequest = query.data?.openRequest;\n const closedRequests = query.data?.closedRequests || [];\n\n const canViewInfoRequest = qmr?.capabilities.viewMoreInfoRequest || false;\n const hasOpenInfoRequest = !!openRequest && canViewInfoRequest;\n\n return {\n query,\n openRequest,\n closedRequests,\n hasOpenInfoRequest,\n };\n};\n\n/**\n * @desc Hook that provides functions for manipulating QMR Info Requests\n */\nexport const useQmrInfoRequestActions = ({\n qmrsService,\n onSuccess,\n}: {\n qmrsService: QmrsService;\n onSuccess(): void;\n}) => {\n const { qmr } = useQmrState();\n\n const qmrId = qmr?.qmrId;\n\n const openInfoRequest = useCallback(\n async ({ request }: { request: string }) => {\n if (!qmrId) {\n throw new Error('No QMR id');\n }\n\n const res = await qmrsService.openInfoRequest({ qmrId, request });\n\n if (!res.success && !res.aborted) {\n throw res.data;\n }\n },\n [qmrId, qmrsService]\n );\n\n const openInfoRequestMutation = useMutation(openInfoRequest, { onSuccess });\n\n const closeInfoRequest = useCallback(\n async ({ requestId }: { requestId: string }) => {\n const res = await qmrsService.closeInfoRequest({ requestId });\n\n if (!res.success && !res.aborted) {\n throw res.data;\n }\n },\n [qmrsService]\n );\n\n const closeInfoRequestMutation = useMutation(closeInfoRequest, { onSuccess });\n\n const addCommentOnInfoRequest = useCallback(\n async ({ requestId, comment }: { requestId: string; comment: string }) => {\n if (!qmrId) {\n throw new Error('No QMR id');\n }\n\n const res = await qmrsService.addCommentOnInfoRequest({ comment, qmrId, requestId });\n\n if (!res.success && !res.aborted) {\n throw res.data;\n }\n },\n [qmrId, qmrsService]\n );\n\n const addCommentOnInfoRequestMutation = useMutation(addCommentOnInfoRequest, { onSuccess });\n\n const canViewInfoRequest = qmr?.capabilities.viewMoreInfoRequest || false;\n const canOpenCloseInfoRequest = qmr?.capabilities.openCloseMoreInfoRequest || false;\n\n return {\n openInfoRequestMutation,\n closeInfoRequestMutation,\n addCommentOnInfoRequestMutation,\n canViewInfoRequest,\n canOpenCloseInfoRequest,\n };\n};\n\nexport const useQmrCsvExport = ({ qmrsService }: { qmrsService: QmrsService }) => {\n const initiateCsvExport = useCallback(\n async ({\n qmrs,\n alert,\n searchId,\n isNQRSearch,\n }: {\n qmrs: Qmr[] | null;\n alert: AlertHook;\n searchId?: string | null;\n isNQRSearch?: boolean;\n }) => {\n try {\n const response = await qmrsService.initiateCsvExport({ qmrs }, searchId, isNQRSearch);\n\n if (!response.success && response.aborted) {\n return;\n } else if (!response.success) {\n throw response.data;\n }\n\n alert.showAlert({\n type: 'success',\n content:\n 'Request to download Reports as CSV is in progress. It may take a few minutes. You will receive a notification when it is ready to view.',\n });\n } catch (error) {\n alert.showAlert({\n type: 'error',\n content: 'Request to download Reports as CSV has failed. Please try again.',\n });\n }\n },\n [qmrsService]\n );\n\n const initiateCsvExportMutation = useMutation(initiateCsvExport);\n\n const isLoading = initiateCsvExportMutation.isLoading;\n\n return {\n initiateCsvExportMutation,\n isLoading,\n };\n};\n\nexport const useQmrTableActions = ({\n qmrs,\n alert,\n qmrsService,\n}: {\n qmrs: Qmr[] | null;\n alert: AlertHook;\n qmrsService: QmrsService;\n}) => {\n const qmrCsvExport = useQmrCsvExport({ qmrsService });\n const { showModal } = useInvestigationModal();\n const { showModal: showEscalationModal } = useEscalationModal();\n\n const actionHandlerMap: { [k: string]: () => any } = useMemo(\n () => ({\n DOWNLOAD: () => {\n qmrCsvExport.initiateCsvExportMutation.mutateAsync({ qmrs, alert });\n },\n ADD_TO_INVESTIGATION: () => {\n showModal({\n allowInvestigationReassignment: true,\n selectedQmrs: qmrs ? qmrs : [],\n onSuccess: (investigation) => {\n alert.showAlert({\n type: 'success',\n content: React.createElement('div', { style: { fontWeight: 500 } }, [\n React.createElement(\n 'span',\n {},\n `${qmrs?.length} QMR ${\n qmrs?.length === 1 ? 'was' : 'were'\n } added to the investigation \"${investigation.title}\". `\n ),\n React.createElement(\n 'a',\n { href: `/investigations/${investigation.investigationId}` },\n 'Go to investigation'\n ),\n ]),\n });\n },\n });\n },\n ESCALATE: () => {\n if (every(qmrs, { escalated: true })) {\n return window.alert('The QMR is already Escalated');\n }\n showEscalationModal({\n selectedQmrs: qmrs ? qmrs : [],\n });\n },\n }),\n [qmrCsvExport.initiateCsvExportMutation, qmrs, alert, showModal, showEscalationModal]\n );\n\n const handleActionPress = useCallback(\n (actionId: string) => {\n const handler = actionHandlerMap[actionId];\n\n if (!handler) {\n return;\n }\n\n handler();\n },\n [actionHandlerMap]\n );\n\n return {\n handleActionPress,\n };\n};\n","import { HttpClient } from '@packages/core/http';\n\nimport {\n Qmr,\n QmrApiSupplement,\n CreateQmrDto,\n UpdateQmrDtcCodesDto,\n UpdateQmrRestrictedAssetIdsDto,\n SaveQmrDto,\n QmrResponseDto,\n QmrListResponseDto,\n QmrStatusSummariesResponseDto,\n DtcCodesResponseDto,\n PartNumbersResponseDto,\n PatchQmrAssetDto,\n DeleteQmrAssetsDto,\n RetailersResponseDto,\n VehiclesResponseDto,\n CarlinesResponseDto,\n GetAssetResponseDto,\n PatchQmrDto,\n Comment,\n QmrQuickFiltersResponseDto,\n RecentQuickSearchesResponseDto,\n AdvancedSearchParametersDto,\n ADVANCED_SEARCH_FIELD_TYPE_ID,\n AdvancedSearchAutocompleteResultsDto,\n AdvancedSearchResultsDto,\n AdvancedSearchSavedSearchesDto,\n AdvancedSearchRecentSearchesDto,\n Retailer,\n QmrInfoRequestDto,\n QmrInfoRequestData,\n RetailerSearchResponseDto,\n RetailerResponseDto,\n Account,\n FailCodeApproverSetting,\n OpenPartCollectRequestResponseDto,\n ClosePartCollectRequestResponseDto,\n} from '@packages/models/api';\n\ninterface DtcSearchParams {\n query: string;\n}\n\ninterface CarlineSearchParams {\n query: string;\n}\n\nexport interface RetailerSearchParams {\n query?: string;\n canCreateQmr?: boolean;\n recent?: boolean;\n techline?: boolean;\n}\n\nexport interface RetailerListParams {\n page?: number;\n size?: number;\n query?: string;\n}\n\nexport interface AddAdditionalInformationResponseBody {\n comment: Comment;\n}\n\ninterface GetAdvancedSearchSavedSearchesParameters {\n size?: number;\n page?: number;\n}\n\nexport class QmrsService {\n constructor(private http: HttpClient) {}\n\n fetchDtcCodes({\n searchParams,\n ignoreCache = false,\n signal,\n }: {\n searchParams: DtcSearchParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/dtc-codes' + this.http.queryString(searchParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchPartNumbers({\n qmrId,\n query,\n ignoreCache = false,\n signal,\n }: {\n qmrId: string;\n query?: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/part-number/search' + this.http.queryString({ qmrId, query });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchRetailers({\n searchParams,\n ignoreCache = false,\n signal,\n }: {\n searchParams: RetailerSearchParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/retailers' + this.http.queryString(searchParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n searchRetailers({\n searchParams,\n ignoreCache,\n signal,\n }: {\n searchParams: RetailerListParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = '/searchable-retailers' + this.http.queryString(searchParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchRetailerbyId({\n retailerId,\n ignoreCache,\n signal,\n }: {\n retailerId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/retailers/${retailerId}`,\n ignoreCache,\n signal,\n });\n }\n\n fetchFailCodeApproverSettings({ ignoreCache, signal }: { ignoreCache?: boolean; signal?: AbortSignal }) {\n return this.http.orchestrateRequest<{\n failCodeApproverSettings: FailCodeApproverSetting[];\n }>({\n method: 'GET',\n url: '/retailers/fail-code-approver-settings',\n ignoreCache,\n signal,\n });\n }\n\n fetchRetailerFailCodeApprovers({\n retailerId,\n ignoreCache,\n signal,\n }: {\n retailerId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest<{ accounts: Account[] }>({\n method: 'GET',\n url: `/retailers/${retailerId}/fail-code-approvers`,\n ignoreCache,\n signal,\n });\n }\n\n updateRetailerApproverSetting({\n retailerId,\n approverSettingId,\n ignoreCache,\n signal,\n }: {\n retailerId: string;\n approverSettingId: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/retailers/${retailerId}/fail-code-approver-setting/${approverSettingId}`,\n ignoreCache,\n signal,\n });\n }\n\n updateRetailerFailCodeApprovers({\n retailerId,\n accountIds,\n ignoreCache,\n signal,\n }: {\n retailerId: string;\n accountIds: string[];\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/retailers/${retailerId}/fail-code-approvers`,\n body: { accountIds },\n ignoreCache,\n signal,\n });\n }\n\n checkVin({ vin, ignoreCache = false, signal }: { vin: string; ignoreCache?: boolean; signal?: AbortSignal }) {\n let searchParams: { vin?: string; vinSuffix?: string } = {};\n\n if (vin.length < 17) {\n searchParams.vinSuffix = vin;\n } else {\n searchParams.vin = vin;\n }\n\n const url = '/vehicles' + this.http.queryString(searchParams);\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchCarlines({\n searchParams,\n ignoreCache = false,\n signal,\n }: {\n searchParams?: CarlineSearchParams;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n let url = '/carlines';\n\n if (searchParams) {\n url += this.http.queryString(searchParams);\n }\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchQmrStatusSummaries(signal?: AbortSignal, ignoreCache = false) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/qmrs/status-summaries',\n ignoreCache,\n signal,\n });\n }\n\n fetchQmrQuickFilters({ ignoreCache = false, signal }: { ignoreCache?: boolean; signal?: AbortSignal }) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/qmrs/quick-filters',\n ignoreCache,\n signal,\n });\n }\n\n fetchRecentQuickSearches({ ignoreCache = false, signal }: { ignoreCache?: boolean; signal?: AbortSignal }) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/qmrs/quick-search-recent',\n ignoreCache,\n signal,\n });\n }\n\n fetchQmrsList({\n queryString,\n ignoreCache = false,\n signal,\n }: {\n queryString: string;\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n const url = `/qmrs?${queryString}&supplement=${QmrApiSupplement.List}`;\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url,\n ignoreCache,\n signal,\n });\n }\n\n fetchQmr({\n qmrId,\n ignoreCache = false,\n signal,\n }: {\n qmrId: Qmr['qmrId'];\n ignoreCache?: boolean;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/${qmrId}`,\n ignoreCache,\n signal,\n });\n }\n\n createQmr(body: CreateQmrDto, signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/qmrs',\n body,\n signal,\n });\n }\n\n patchQmr({ qmrId, signal, ...body }: { qmrId: Qmr['qmrId']; signal?: AbortSignal } & PatchQmrDto) {\n return this.http.orchestrateRequest({\n method: 'PATCH',\n url: `/qmrs/${qmrId}`,\n signal,\n body,\n });\n }\n\n saveQmr(qmrId: Qmr['qmrId'], body: SaveQmrDto, signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/qmrs/${qmrId}`,\n body,\n signal,\n });\n }\n\n updateQmrDtcCodes(qmrId: Qmr['qmrId'], body: UpdateQmrDtcCodesDto, signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/qmrs/${qmrId}/dtc-codes`,\n body,\n signal,\n });\n }\n\n updateQmrRestrictedAssetIds(qmrId: Qmr['qmrId'], body: UpdateQmrRestrictedAssetIdsDto, signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/qmrs/${qmrId}/restricted-asset-ids`,\n body,\n signal,\n });\n }\n\n deleteQmr(qmrId: Qmr['qmrId'], signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'DELETE',\n url: `/qmrs/${qmrId}`,\n signal,\n });\n }\n\n patchQmrAsset({ assetId, signal, ...body }: { assetId: string; signal?: AbortSignal } & PatchQmrAssetDto) {\n return this.http.orchestrateRequest({\n method: 'PATCH',\n url: `/assets/${assetId}`,\n signal,\n body,\n });\n }\n\n deleteQmrAssets(qmrId: Qmr['qmrId'], body: DeleteQmrAssetsDto, signal?: AbortSignal) {\n return this.http.orchestrateRequest({\n method: 'DELETE',\n url: `/qmrs/${qmrId}/assets`,\n body,\n signal,\n });\n }\n\n setQmrNoRepairModeFailCode({\n qmrId,\n locationCode,\n frequencyCode,\n concernCode,\n signal,\n }: {\n qmrId: Qmr['qmrId'];\n locationCode: string;\n frequencyCode: string;\n concernCode: string;\n signal?: AbortSignal;\n }) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/qmrs/${qmrId}/fail-code`,\n body: {\n locationCode,\n frequencyCode,\n concernCode,\n },\n signal,\n });\n }\n\n addAdditionalInformation(qmrId: string, body: string) {\n return this.http.orchestrateRequest({\n method: 'PUT',\n url: `/qmrs/${qmrId}/additional-info`,\n body: {\n qmrId,\n body,\n },\n });\n }\n\n getAdvancedSearchParameters() {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/qmrs/search/parameters',\n });\n }\n\n getAdvancedSearchAutocompleteResults(fieldTypeId: ADVANCED_SEARCH_FIELD_TYPE_ID, query: string) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/advanced-search/autocomplete/${fieldTypeId}?query=${query}`,\n });\n }\n\n postAdvancedSearchQuery(query: any, name?: string, publicSearch?: boolean, rolesToShareSelected?: string[]) {\n return this.http.orchestrateRequest<{ searchId: string }>({\n method: 'POST',\n url: '/qmrs/advanced-search',\n body: { query, name, publicSearch, sharedUserRoles: rolesToShareSelected || [] },\n });\n }\n\n updateAdvancedSearchQuery(\n searchId: string,\n query: any,\n name?: string,\n publicSearch?: boolean,\n rolesToShareSelected?: string[]\n ) {\n return this.http.orchestrateRequest<{ searchId: string }>({\n method: 'PUT',\n url: `/qmrs/advanced-search/${searchId}`,\n body: { query, name, publicSearch, sharedUserRoles: rolesToShareSelected || [] },\n });\n }\n\n getAdvancedSearchResultsForSearchId(searchId: string, queryParams: string) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/advanced-search/${searchId}?${queryParams}`,\n });\n }\n\n getAdvancedSearchSavedSearches(queryParameters?: GetAdvancedSearchSavedSearchesParameters) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/advanced-search/saved-searches${this.http.queryString(queryParameters || {})}`,\n });\n }\n\n getAdvancedSearchRecentSavedSearches() {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: '/qmrs/advanced-search/recent-saved-searches',\n });\n }\n\n deleteAdvancedSearchSavedSearch(searchId: string) {\n return this.http.orchestrateRequest({\n method: 'DELETE',\n url: `/qmrs/advanced-search/${searchId}`,\n });\n }\n getRetailerById(retailerId: string) {\n return this.http.orchestrateRequest<{ retailer: Retailer }>({\n method: 'GET',\n url: `/retailers/${retailerId}`,\n });\n }\n\n getInfoRequests({ qmrId }: { qmrId: Qmr['qmrId'] }) {\n const qs = this.http.queryString({ qmrId });\n\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/more-info-request${qs}`,\n ignoreCache: true,\n });\n }\n\n getInfoRequest({ id }: { id: string }) {\n return this.http.orchestrateRequest<{ data: QmrInfoRequestData }>({\n method: 'GET',\n url: `/qmrs/more-info-request/${id}`,\n ignoreCache: true,\n });\n }\n\n openInfoRequest({ qmrId, request }: { qmrId: Qmr['qmrId']; request: string }) {\n const body = {\n qmrId,\n request,\n };\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/qmrs/more-info-request',\n body,\n });\n }\n\n closeInfoRequest({ requestId }: { requestId: string }) {\n const body = {\n requestId,\n };\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/qmrs/more-info-request/close',\n body,\n });\n }\n\n addCommentOnInfoRequest({\n qmrId,\n comment,\n requestId: qmrMoreInfoRequestId,\n }: {\n qmrId: Qmr['qmrId'];\n comment: string;\n requestId: string;\n }) {\n const body = {\n body: comment,\n qmrId,\n qmrMoreInfoRequestId,\n };\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/qmrs/more-info-request/comments',\n body,\n });\n }\n\n initiateCsvExport({ qmrs }: { qmrs: Qmr[] | null }, searchId?: string | null, isNQRSearch?: boolean) {\n const qmrIds = qmrs ? qmrs.map((qmr) => qmr.qmrId) : null;\n const isNqr = isNQRSearch || qmrs?.[0].isNqr;\n const body = {\n qmrIds,\n ...(searchId ? { searchId } : {}),\n reportType: isNqr ? 'NQR' : 'QMR',\n };\n\n return this.http.orchestrateRequest({\n method: 'POST',\n url: '/qmrs/csv-export',\n body,\n });\n }\n\n openPartCollectionRequest(qmrId: string) {\n return this.http.orchestrateRequest({\n method: 'POST',\n url: `/qmrs/${qmrId}/part-collection-request`,\n });\n }\n\n closePartCollectionRequest(partCollectionRequestId: string) {\n return this.http.orchestrateRequest({\n method: 'PATCH',\n url: `/qmrs/part-collection-requests/${partCollectionRequestId}`,\n });\n }\n\n fetchQmrCategories(reportType?: string) {\n return this.http.orchestrateRequest({\n method: 'GET',\n url: `/qmrs/categories${this.http.queryString({ reportType })}`,\n });\n }\n}\n","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport * as forwardedProps from '../../modules/forwardedProps';\nimport pick from '../../modules/pick';\nimport useElementLayout from '../../modules/useElementLayout';\nimport useLayoutEffect from '../../modules/useLayoutEffect';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport useResponderEvents from '../../modules/useResponderEvents';\nimport { getLocaleDirection, useLocaleContext } from '../../modules/useLocale';\nimport StyleSheet from '../StyleSheet';\nimport TextInputState from '../../modules/TextInputState';\n/**\n * Determines whether a 'selection' prop differs from a node's existing\n * selection state.\n */\n\nvar isSelectionStale = (node, selection) => {\n var selectionEnd = node.selectionEnd,\n selectionStart = node.selectionStart;\n var start = selection.start,\n end = selection.end;\n return start !== selectionStart || end !== selectionEnd;\n};\n/**\n * Certain input types do no support 'selectSelectionRange' and will throw an\n * error.\n */\n\n\nvar setSelection = (node, selection) => {\n if (isSelectionStale(node, selection)) {\n var start = selection.start,\n end = selection.end;\n\n try {\n node.setSelectionRange(start, end || start);\n } catch (e) {}\n }\n};\n\nvar forwardPropsList = Object.assign({}, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.focusProps, forwardedProps.keyboardProps, forwardedProps.mouseProps, forwardedProps.touchProps, forwardedProps.styleProps, {\n autoCapitalize: true,\n autoComplete: true,\n autoCorrect: true,\n autoFocus: true,\n defaultValue: true,\n disabled: true,\n lang: true,\n maxLength: true,\n onChange: true,\n onScroll: true,\n placeholder: true,\n pointerEvents: true,\n readOnly: true,\n rows: true,\n spellCheck: true,\n value: true,\n type: true\n});\n\nvar pickProps = props => pick(props, forwardPropsList); // If an Input Method Editor is processing key input, the 'keyCode' is 229.\n// https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n\n\nfunction isEventComposing(nativeEvent) {\n return nativeEvent.isComposing || nativeEvent.keyCode === 229;\n}\n\nvar focusTimeout = null;\nvar TextInput = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var _props$autoCapitalize = props.autoCapitalize,\n autoCapitalize = _props$autoCapitalize === void 0 ? 'sentences' : _props$autoCapitalize,\n autoComplete = props.autoComplete,\n autoCompleteType = props.autoCompleteType,\n _props$autoCorrect = props.autoCorrect,\n autoCorrect = _props$autoCorrect === void 0 ? true : _props$autoCorrect,\n blurOnSubmit = props.blurOnSubmit,\n clearTextOnFocus = props.clearTextOnFocus,\n dir = props.dir,\n _props$editable = props.editable,\n editable = _props$editable === void 0 ? true : _props$editable,\n _props$keyboardType = props.keyboardType,\n keyboardType = _props$keyboardType === void 0 ? 'default' : _props$keyboardType,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$numberOfLines = props.numberOfLines,\n numberOfLines = _props$numberOfLines === void 0 ? 1 : _props$numberOfLines,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onChangeText = props.onChangeText,\n onContentSizeChange = props.onContentSizeChange,\n onFocus = props.onFocus,\n onKeyPress = props.onKeyPress,\n onLayout = props.onLayout,\n onMoveShouldSetResponder = props.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = props.onMoveShouldSetResponderCapture,\n onResponderEnd = props.onResponderEnd,\n onResponderGrant = props.onResponderGrant,\n onResponderMove = props.onResponderMove,\n onResponderReject = props.onResponderReject,\n onResponderRelease = props.onResponderRelease,\n onResponderStart = props.onResponderStart,\n onResponderTerminate = props.onResponderTerminate,\n onResponderTerminationRequest = props.onResponderTerminationRequest,\n onScrollShouldSetResponder = props.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = props.onScrollShouldSetResponderCapture,\n onSelectionChange = props.onSelectionChange,\n onSelectionChangeShouldSetResponder = props.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = props.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = props.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = props.onStartShouldSetResponderCapture,\n onSubmitEditing = props.onSubmitEditing,\n placeholderTextColor = props.placeholderTextColor,\n returnKeyType = props.returnKeyType,\n _props$secureTextEntr = props.secureTextEntry,\n secureTextEntry = _props$secureTextEntr === void 0 ? false : _props$secureTextEntr,\n selection = props.selection,\n selectTextOnFocus = props.selectTextOnFocus,\n spellCheck = props.spellCheck;\n var type;\n var inputMode;\n\n switch (keyboardType) {\n case 'email-address':\n type = 'email';\n break;\n\n case 'number-pad':\n case 'numeric':\n inputMode = 'numeric';\n break;\n\n case 'decimal-pad':\n inputMode = 'decimal';\n break;\n\n case 'phone-pad':\n type = 'tel';\n break;\n\n case 'search':\n case 'web-search':\n type = 'search';\n break;\n\n case 'url':\n type = 'url';\n break;\n\n default:\n type = 'text';\n }\n\n if (secureTextEntry) {\n type = 'password';\n }\n\n var dimensions = React.useRef({\n height: null,\n width: null\n });\n var hostRef = React.useRef(null);\n var handleContentSizeChange = React.useCallback(hostNode => {\n if (multiline && onContentSizeChange && hostNode != null) {\n var newHeight = hostNode.scrollHeight;\n var newWidth = hostNode.scrollWidth;\n\n if (newHeight !== dimensions.current.height || newWidth !== dimensions.current.width) {\n dimensions.current.height = newHeight;\n dimensions.current.width = newWidth;\n onContentSizeChange({\n nativeEvent: {\n contentSize: {\n height: dimensions.current.height,\n width: dimensions.current.width\n }\n }\n });\n }\n }\n }, [multiline, onContentSizeChange]);\n var imperativeRef = React.useMemo(() => hostNode => {\n // TextInput needs to add more methods to the hostNode in addition to those\n // added by `usePlatformMethods`. This is temporarily until an API like\n // `TextInput.clear(hostRef)` is added to React Native.\n if (hostNode != null) {\n hostNode.clear = function () {\n if (hostNode != null) {\n hostNode.value = '';\n }\n };\n\n hostNode.isFocused = function () {\n return hostNode != null && TextInputState.currentlyFocusedField() === hostNode;\n };\n\n handleContentSizeChange(hostNode);\n }\n }, [handleContentSizeChange]);\n\n function handleBlur(e) {\n TextInputState._currentlyFocusedNode = null;\n\n if (onBlur) {\n e.nativeEvent.text = e.target.value;\n onBlur(e);\n }\n }\n\n function handleChange(e) {\n var hostNode = e.target;\n var text = hostNode.value;\n e.nativeEvent.text = text;\n handleContentSizeChange(hostNode);\n\n if (onChange) {\n onChange(e);\n }\n\n if (onChangeText) {\n onChangeText(text);\n }\n }\n\n function handleFocus(e) {\n var hostNode = e.target;\n\n if (onFocus) {\n e.nativeEvent.text = hostNode.value;\n onFocus(e);\n }\n\n if (hostNode != null) {\n TextInputState._currentlyFocusedNode = hostNode;\n\n if (clearTextOnFocus) {\n hostNode.value = '';\n }\n\n if (selectTextOnFocus) {\n // Safari requires selection to occur in a setTimeout\n if (focusTimeout != null) {\n clearTimeout(focusTimeout);\n }\n\n focusTimeout = setTimeout(() => {\n if (hostNode != null) {\n hostNode.select();\n }\n }, 0);\n }\n }\n }\n\n function handleKeyDown(e) {\n var hostNode = e.target; // Prevent key events bubbling (see #612)\n\n e.stopPropagation();\n var blurOnSubmitDefault = !multiline;\n var shouldBlurOnSubmit = blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit;\n var nativeEvent = e.nativeEvent;\n var isComposing = isEventComposing(nativeEvent);\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (e.key === 'Enter' && !e.shiftKey && // Do not call submit if composition is occuring.\n !isComposing && !e.isDefaultPrevented()) {\n if ((blurOnSubmit || !multiline) && onSubmitEditing) {\n // prevent \"Enter\" from inserting a newline or submitting a form\n e.preventDefault();\n nativeEvent.text = e.target.value;\n onSubmitEditing(e);\n }\n\n if (shouldBlurOnSubmit && hostNode != null) {\n setTimeout(() => hostNode.blur(), 0);\n }\n }\n }\n\n function handleSelectionChange(e) {\n if (onSelectionChange) {\n try {\n var node = e.target;\n var selectionStart = node.selectionStart,\n selectionEnd = node.selectionEnd;\n e.nativeEvent.selection = {\n start: selectionStart,\n end: selectionEnd\n };\n e.nativeEvent.text = e.target.value;\n onSelectionChange(e);\n } catch (e) {}\n }\n }\n\n useLayoutEffect(() => {\n var node = hostRef.current;\n\n if (node != null && selection != null) {\n setSelection(node, selection);\n }\n\n if (document.activeElement === node) {\n TextInputState._currentlyFocusedNode = node;\n }\n }, [hostRef, selection]);\n var component = multiline ? 'textarea' : 'input';\n useElementLayout(hostRef, onLayout);\n useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture\n });\n\n var _useLocaleContext = useLocaleContext(),\n contextDirection = _useLocaleContext.direction;\n\n var supportedProps = pickProps(props);\n supportedProps.autoCapitalize = autoCapitalize;\n supportedProps.autoComplete = autoComplete || autoCompleteType || 'on';\n supportedProps.autoCorrect = autoCorrect ? 'on' : 'off'; // 'auto' by default allows browsers to infer writing direction\n\n supportedProps.dir = dir !== undefined ? dir : 'auto';\n supportedProps.enterKeyHint = returnKeyType;\n supportedProps.inputMode = inputMode;\n supportedProps.onBlur = handleBlur;\n supportedProps.onChange = handleChange;\n supportedProps.onFocus = handleFocus;\n supportedProps.onKeyDown = handleKeyDown;\n supportedProps.onSelect = handleSelectionChange;\n supportedProps.readOnly = !editable;\n supportedProps.rows = multiline ? numberOfLines : undefined;\n supportedProps.spellCheck = spellCheck != null ? spellCheck : autoCorrect;\n supportedProps.style = [{\n '--placeholderTextColor': placeholderTextColor\n }, styles.textinput$raw, styles.placeholder, props.style];\n supportedProps.type = multiline ? undefined : type;\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, imperativeRef, forwardedRef);\n supportedProps.ref = setRef;\n var langDirection = props.lang != null ? getLocaleDirection(props.lang) : null;\n var componentDirection = props.dir || langDirection;\n var writingDirection = componentDirection || contextDirection;\n var element = createElement(component, supportedProps, {\n writingDirection\n });\n return element;\n});\nTextInput.displayName = 'TextInput'; // $FlowFixMe\n\nTextInput.State = TextInputState;\nvar styles = StyleSheet.create({\n textinput$raw: {\n MozAppearance: 'textfield',\n WebkitAppearance: 'none',\n backgroundColor: 'transparent',\n border: '0 solid black',\n borderRadius: 0,\n boxSizing: 'border-box',\n font: '14px System',\n margin: 0,\n padding: 0,\n resize: 'none'\n },\n placeholder: {\n placeholderTextColor: 'var(--placeholderTextColor)'\n }\n});\nexport default TextInput;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nexport var defaultProps = {\n children: true,\n dataSet: true,\n nativeID: true,\n ref: true,\n suppressHydrationWarning: true,\n testID: true\n};\nexport var accessibilityProps = {\n accessibilityActiveDescendant: true,\n accessibilityAtomic: true,\n accessibilityAutoComplete: true,\n accessibilityBusy: true,\n accessibilityChecked: true,\n accessibilityColumnCount: true,\n accessibilityColumnIndex: true,\n accessibilityColumnSpan: true,\n accessibilityControls: true,\n accessibilityCurrent: true,\n accessibilityDescribedBy: true,\n accessibilityDetails: true,\n accessibilityDisabled: true,\n accessibilityErrorMessage: true,\n accessibilityExpanded: true,\n accessibilityFlowTo: true,\n accessibilityHasPopup: true,\n accessibilityHidden: true,\n accessibilityInvalid: true,\n accessibilityKeyShortcuts: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLevel: true,\n accessibilityLiveRegion: true,\n accessibilityModal: true,\n accessibilityMultiline: true,\n accessibilityMultiSelectable: true,\n accessibilityOrientation: true,\n accessibilityOwns: true,\n accessibilityPlaceholder: true,\n accessibilityPosInSet: true,\n accessibilityPressed: true,\n accessibilityReadOnly: true,\n accessibilityRequired: true,\n accessibilityRole: true,\n accessibilityRoleDescription: true,\n accessibilityRowCount: true,\n accessibilityRowIndex: true,\n accessibilityRowSpan: true,\n accessibilitySelected: true,\n accessibilitySetSize: true,\n accessibilitySort: true,\n accessibilityValueMax: true,\n accessibilityValueMin: true,\n accessibilityValueNow: true,\n accessibilityValueText: true,\n dir: true,\n focusable: true\n};\nexport var clickProps = {\n onClick: true,\n onClickCapture: true,\n onContextMenu: true\n};\nexport var focusProps = {\n onBlur: true,\n onFocus: true\n};\nexport var keyboardProps = {\n onKeyDown: true,\n onKeyDownCapture: true,\n onKeyUp: true,\n onKeyUpCapture: true\n};\nexport var mouseProps = {\n onMouseDown: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseMove: true,\n onMouseOver: true,\n onMouseOut: true,\n onMouseUp: true\n};\nexport var touchProps = {\n onTouchCancel: true,\n onTouchCancelCapture: true,\n onTouchEnd: true,\n onTouchEndCapture: true,\n onTouchMove: true,\n onTouchMoveCapture: true,\n onTouchStart: true,\n onTouchStartCapture: true\n};\nexport var styleProps = {\n classList: true,\n style: true\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","import * as React from 'react';\nimport { categoryReducer, initialState, CategoryActionDispatcher } from './categories.state';\nimport { CategoriesWithArticles } from '../types';\n\ntype Props = {\n categories: Array;\n};\n\nexport const defaultCategories: Array = [];\n\nexport const CategoriesContext = React.createContext(defaultCategories);\nexport const CategoriesDispatchContext = React.createContext(undefined);\n\nexport const CategoriesProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [state, setCategories] = React.useReducer(categoryReducer, initialState);\n\n return (\n \n {children}\n \n );\n};\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _InteractionManager = _interopRequireDefault(require(\"../../../exports/InteractionManager\"));\n\n/**\n * A simple class for batching up invocations of a low-pri callback. A timeout is set to run the\n * callback once after a delay, no matter how many times it's scheduled. Once the delay is reached,\n * InteractionManager.runAfterInteractions is used to invoke the callback after any hi-pri\n * interactions are done running.\n *\n * Make sure to cleanup with dispose(). Example:\n *\n * class Widget extends React.Component {\n * _batchedSave: new Batchinator(() => this._saveState, 1000);\n * _saveSate() {\n * // save this.state to disk\n * }\n * componentDidUpdate() {\n * this._batchedSave.schedule();\n * }\n * componentWillUnmount() {\n * this._batchedSave.dispose();\n * }\n * ...\n * }\n */\nclass Batchinator {\n constructor(callback, delayMS) {\n this._delay = delayMS;\n this._callback = callback;\n }\n /*\n * Cleanup any pending tasks.\n *\n * By default, if there is a pending task the callback is run immediately. Set the option abort to\n * true to not call the callback if it was pending.\n */\n\n\n dispose(options) {\n if (options === void 0) {\n options = {\n abort: false\n };\n }\n\n if (this._taskHandle) {\n this._taskHandle.cancel();\n\n if (!options.abort) {\n this._callback();\n }\n\n this._taskHandle = null;\n }\n }\n\n schedule() {\n if (this._taskHandle) {\n return;\n }\n\n var timeoutHandle = setTimeout(() => {\n this._taskHandle = _InteractionManager.default.runAfterInteractions(() => {\n // Note that we clear the handle before invoking the callback so that if the callback calls\n // schedule again, it will actually schedule another task.\n this._taskHandle = null;\n\n this._callback();\n });\n }, this._delay);\n this._taskHandle = {\n cancel: () => clearTimeout(timeoutHandle)\n };\n }\n\n}\n\nvar _default = Batchinator;\nexports.default = _default;\nmodule.exports = exports.default;","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/* eslint-disable */\n\n/**\n * JS Implementation of MurmurHash2\n *\n * @author
Gary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n *\n * \n */\nfunction murmurhash2_32_gc(str, seed) {\n var l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return h >>> 0;\n}\n\nvar hash = str => murmurhash2_32_gc(str, 1).toString(36);\n\nvar _default = hash;\nexports.default = _default;\nmodule.exports = exports.default;","import React, { FC, useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, StyleProp, TextStyle, Platform } from 'react-native';\nimport { useTranslation } from 'react-i18next';\n\nimport { Typography } from './typography';\n\nexport interface LabelProps {\n required?: boolean;\n optional?: boolean;\n charCount?: string;\n hint?: string;\n customRightElement?: JSX.Element;\n style?: StyleProp;\n controlId?: string;\n children?: React.ReactNode;\n}\n\nexport const Label: FC = ({\n children,\n required,\n optional,\n charCount,\n hint,\n style,\n controlId,\n customRightElement,\n}) => {\n const { t } = useTranslation();\n const labelRef = useRef(null);\n\n useEffect(() => {\n labelRef.current && controlId && labelRef.current.setNativeProps({ for: controlId });\n }, [controlId]);\n\n return (\n \n \n \n {children}\n {required && *}\n {optional && (\n \n {' '}\n ({t('text:optional', 'optional')})\n \n )}\n \n\n {hint && (\n \n {hint}\n \n )}\n \n\n {customRightElement\n ? customRightElement\n : charCount && (\n \n {charCount}\n \n )}\n \n );\n};\n\nconst styles = StyleSheet.create({\n labelWrapper: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 8,\n },\n hint: {\n marginTop: 4,\n },\n charCount: {\n alignSelf: 'flex-end',\n },\n});\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.getLowestCommonAncestor = getLowestCommonAncestor;\nexports.getResponderPaths = getResponderPaths;\nexports.hasTargetTouches = hasTargetTouches;\nexports.hasValidSelection = hasValidSelection;\nexports.isPrimaryPointerDown = isPrimaryPointerDown;\nexports.setResponderId = setResponderId;\n\nvar _isSelectionValid = _interopRequireDefault(require(\"../../modules/isSelectionValid\"));\n\n/**\n * Copyright (c) Nicolas Gallagher\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar keyName = '__reactResponderId';\n\nfunction getEventPath(domEvent) {\n // The 'selectionchange' event always has the 'document' as the target.\n // Use the anchor node as the initial target to reconstruct a path.\n // (We actually only need the first \"responder\" node in practice.)\n if (domEvent.type === 'selectionchange') {\n var target = window.getSelection().anchorNode;\n return composedPathFallback(target);\n } else {\n var path = domEvent.composedPath != null ? domEvent.composedPath() : composedPathFallback(domEvent.target);\n return path;\n }\n}\n\nfunction composedPathFallback(target) {\n var path = [];\n\n while (target != null && target !== document.body) {\n path.push(target);\n target = target.parentNode;\n }\n\n return path;\n}\n/**\n * Retrieve the responderId from a host node\n */\n\n\nfunction getResponderId(node) {\n if (node != null) {\n return node[keyName];\n }\n\n return null;\n}\n/**\n * Store the responderId on a host node\n */\n\n\nfunction setResponderId(node, id) {\n if (node != null) {\n node[keyName] = id;\n }\n}\n/**\n * Filter the event path to contain only the nodes attached to the responder system\n */\n\n\nfunction getResponderPaths(domEvent) {\n var idPath = [];\n var nodePath = [];\n var eventPath = getEventPath(domEvent);\n\n for (var i = 0; i < eventPath.length; i++) {\n var node = eventPath[i];\n var id = getResponderId(node);\n\n if (id != null) {\n idPath.push(id);\n nodePath.push(node);\n }\n }\n\n return {\n idPath,\n nodePath\n };\n}\n/**\n * Walk the paths and find the first common ancestor\n */\n\n\nfunction getLowestCommonAncestor(pathA, pathB) {\n var pathALength = pathA.length;\n var pathBLength = pathB.length;\n\n if ( // If either path is empty\n pathALength === 0 || pathBLength === 0 || // If the last elements aren't the same there can't be a common ancestor\n // that is connected to the responder system\n pathA[pathALength - 1] !== pathB[pathBLength - 1]) {\n return null;\n }\n\n var itemA = pathA[0];\n var indexA = 0;\n var itemB = pathB[0];\n var indexB = 0; // If A is deeper, skip indices that can't match.\n\n if (pathALength - pathBLength > 0) {\n indexA = pathALength - pathBLength;\n itemA = pathA[indexA];\n pathALength = pathBLength;\n } // If B is deeper, skip indices that can't match\n\n\n if (pathBLength - pathALength > 0) {\n indexB = pathBLength - pathALength;\n itemB = pathB[indexB];\n pathBLength = pathALength;\n } // Walk in lockstep until a match is found\n\n\n var depth = pathALength;\n\n while (depth--) {\n if (itemA === itemB) {\n return itemA;\n }\n\n itemA = pathA[indexA++];\n itemB = pathB[indexB++];\n }\n\n return null;\n}\n/**\n * Determine whether any of the active touches are within the current responder.\n * This cannot rely on W3C `targetTouches`, as neither IE11 nor Safari implement it.\n */\n\n\nfunction hasTargetTouches(target, touches) {\n if (!touches || touches.length === 0) {\n return false;\n }\n\n for (var i = 0; i < touches.length; i++) {\n var node = touches[i].target;\n\n if (node != null) {\n if (target.contains(node)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\n * Ignore 'selectionchange' events that don't correspond with a person's intent to\n * select text.\n */\n\n\nfunction hasValidSelection(domEvent) {\n if (domEvent.type === 'selectionchange') {\n return (0, _isSelectionValid.default)();\n }\n\n return domEvent.type === 'select';\n}\n/**\n * Events are only valid if the primary button was used without specific modifier keys.\n */\n\n\nfunction isPrimaryPointerDown(domEvent) {\n var altKey = domEvent.altKey,\n button = domEvent.button,\n buttons = domEvent.buttons,\n ctrlKey = domEvent.ctrlKey,\n type = domEvent.type;\n var isTouch = type === 'touchstart' || type === 'touchmove';\n var isPrimaryMouseDown = type === 'mousedown' && (button === 0 || buttons === 1);\n var isPrimaryMouseMove = type === 'mousemove' && buttons === 1;\n var noModifiers = altKey === false && ctrlKey === false;\n\n if (isTouch || isPrimaryMouseDown && noModifiers || isPrimaryMouseMove && noModifiers) {\n return true;\n }\n\n return false;\n}","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _cssInJsUtils = require('css-in-js-utils');\n\nvar FILTER_REGEX = /filter\\(/g;\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\n\nfunction filter(property, value) {\n if (typeof value === 'string' && !(0, _cssInJsUtils.isPrefixedValue)(value) && value.indexOf('filter(') !== -1) {\n return prefixes.map(function (prefix) {\n return value.replace(FILTER_REGEX, prefix + 'filter(');\n });\n }\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { StackFrame } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\nexport type StackParser = (stack: string, skipFirst?: number) => StackFrame[];\nexport type StackLineParserFn = (line: string) => StackFrame | undefined;\nexport type StackLineParser = [number, StackLineParserFn];\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n for (const parser of sortedParsers) {\n const frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function t(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new t(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new t(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new t(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new t(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new t(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new t(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new t(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new t(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new t(a,5,!1,a.toLowerCase(),null,!1,!1)});var qa=/[\\-:]([a-z])/g;function ra(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(qa,\nra);z[b]=new t(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new t(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction sa(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Ma=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?La(a):\"\"}\nfunction Oa(a){switch(a.tag){case 5:return La(a.type);case 16:return La(\"Lazy\");case 13:return La(\"Suspense\");case 19:return La(\"SuspenseList\");case 0:case 2:case 15:return a=Na(a.type,!1),a;case 11:return a=Na(a.type.render,!1),a;case 1:return a=Na(a.type,!0),a;default:return\"\"}}\nfunction Pa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case wa:return\"Fragment\";case va:return\"Portal\";case za:return\"Profiler\";case xa:return\"StrictMode\";case Da:return\"Suspense\";case Ea:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ba:return(a.displayName||\"Context\")+\".Consumer\";case Aa:return(a._context.displayName||\"Context\")+\".Provider\";case Ca:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Fa:return b=a.displayName||null,null!==b?b:Pa(a.type)||\"Memo\";case Ga:b=a._payload;a=a._init;try{return Pa(a(b))}catch(c){}}return null}\nfunction Qa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Pa(b);case 8:return b===xa?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Ra(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Sa(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ta(a){var b=Sa(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ua(a){a._valueTracker||(a._valueTracker=Ta(a))}function Va(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Sa(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Wa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Xa(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Ya(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Ra(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Za(a,b){b=b.checked;null!=b&&sa(a,\"checked\",b,!1)}\nfunction $a(a,b){Za(a,b);var c=Ra(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Ra(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Wa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var db=Array.isArray;\nfunction eb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=lb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction nb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar ob={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},pb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(ob).forEach(function(a){pb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);ob[b]=ob[a]})});function qb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||ob.hasOwnProperty(a)&&ob[a]?(\"\"+b).trim():b+\"px\"}\nfunction rb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=qb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var sb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction tb(a,b){if(b){if(sb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction ub(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var vb=null;function wb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xb=null,yb=null,zb=null;\nfunction Ab(a){if(a=Bb(a)){if(\"function\"!==typeof xb)throw Error(p(280));var b=a.stateNode;b&&(b=Cb(b),xb(a.stateNode,a.type,b))}}function Db(a){yb?zb?zb.push(a):zb=[a]:yb=a}function Eb(){if(yb){var a=yb,b=zb;zb=yb=null;Ab(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(oc(a)/pc|0)|0}var qc=64,rc=4194304;\nfunction sc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function tc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=sc(h):(f&=g,0!==f&&(d=sc(f)))}else g=c&~e,0!==g?d=sc(g):0!==f&&(d=sc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction zc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-nc(b);a[b]=c}function Ac(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=ae),de=String.fromCharCode(32),ee=!1;\nfunction fe(a,b){switch(a){case \"keyup\":return-1!==Zd.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function ge(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var he=!1;function ie(a,b){switch(a){case \"compositionend\":return ge(b);case \"keypress\":if(32!==b.which)return null;ee=!0;return de;case \"textInput\":return a=b.data,a===de&&ee?null:a;default:return null}}\nfunction je(a,b){if(he)return\"compositionend\"===a||!$d&&fe(a,b)?(a=md(),ld=kd=jd=null,he=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ie(c)}}function Ke(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Ke(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Le(){for(var a=window,b=Wa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Wa(a.document)}return b}function Me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Ne(a){var b=Le(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Ke(c.ownerDocument.documentElement,c)){if(null!==d&&Me(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Je(c,f);var g=Je(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Pe=null,Qe=null,Re=null,Se=!1;\nfunction Te(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Se||null==Pe||Pe!==Wa(d)||(d=Pe,\"selectionStart\"in d&&Me(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Re&&He(Re,d)||(Re=d,d=ne(Qe,\"onSelect\"),0Sf||(a.current=Rf[Sf],Rf[Sf]=null,Sf--)}function G(a,b){Sf++;Rf[Sf]=a.current;a.current=b}var Uf={},H=Tf(Uf),Vf=Tf(!1),Wf=Uf;function Xf(a,b){var c=a.type.contextTypes;if(!c)return Uf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Yf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Zf(){E(Vf);E(H)}function $f(a,b,c){if(H.current!==Uf)throw Error(p(168));G(H,b);G(Vf,c)}function ag(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Qa(a)||\"Unknown\",e));return A({},c,d)}\nfunction bg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Uf;Wf=H.current;G(H,a);G(Vf,Vf.current);return!0}function cg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=ag(a,b,Wf),d.__reactInternalMemoizedMergedChildContext=a,E(Vf),E(H),G(H,a)):E(Vf);G(Vf,c)}var dg=null,eg=!1,fg=!1;function gg(a){null===dg?dg=[a]:dg.push(a)}function hg(a){eg=!0;gg(a)}\nfunction ig(){if(!fg&&null!==dg){fg=!0;var a=0,b=C;try{var c=dg;for(C=1;a>=g;e-=g;Yg=1<<32-nc(b)+e|c<m?(x=r,r=null):x=r.sibling;var v=q(e,r,h[m],k);if(null===v){null===r&&(r=x);break}a&&r&&null===v.alternate&&b(e,r);g=f(v,g,m);null===n?l=v:n.sibling=v;n=v;r=x}if(m===h.length)return c(e,r),I&&$g(e,m),l;if(null===r){for(;mr?(x=m,m=null):x=m.sibling;var w=q(e,m,v.value,k);if(null===w){null===m&&(m=x);break}a&&m&&null===w.alternate&&b(e,m);g=f(w,g,r);null===n?l=w:n.sibling=w;n=w;m=x}if(v.done)return c(e,\nm),I&&$g(e,r),l;if(null===m){for(;!v.done;r++,v=h.next())v=u(e,v.value,k),null!==v&&(g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);I&&$g(e,r);return l}for(m=d(e,m);!v.done;r++,v=h.next())v=y(m,e,r,v.value,k),null!==v&&(a&&null!==v.alternate&&m.delete(null===v.key?r:v.key),g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);a&&m.forEach(function(a){return b(e,a)});I&&$g(e,r);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===wa&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case ua:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===wa){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ga&&rh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=ph(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===wa?(d=xh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=vh(f.type,f.key,f.props,null,a.mode,h),h.ref=ph(a,d,f),h.return=a,a=h)}return g(a);case va:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=wh(f,a.mode,h);d.return=a;a=d}return g(a);case Ga:return l=f._init,J(a,d,l(f._payload),h)}if(db(f))return m(a,d,f,h);if(Ja(f))return w(a,d,f,h);qh(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=uh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var yh=sh(!0),zh=sh(!1),Ah={},Bh=Tf(Ah),Ch=Tf(Ah),Dh=Tf(Ah);function Eh(a){if(a===Ah)throw Error(p(174));return a}function Fh(a,b){G(Dh,b);G(Ch,a);G(Bh,Ah);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:kb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=kb(b,a)}E(Bh);G(Bh,b)}function Gh(){E(Bh);E(Ch);E(Dh)}\nfunction Hh(a){Eh(Dh.current);var b=Eh(Bh.current);var c=kb(b,a.type);b!==c&&(G(Ch,a),G(Bh,c))}function Ih(a){Ch.current===a&&(E(Bh),E(Ch))}var K=Tf(0);\nfunction Jh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Kh=[];\nfunction Lh(){for(var a=0;ac?c:4;a(!0);var d=Nh.transition;Nh.transition={};try{a(!1),b()}finally{C=c,Nh.transition=d}}function Bi(){return ai().memoizedState}\nfunction Ci(a,b,c){var d=Kg(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};Di(a)?Ei(b,c):(Fi(a,b,c),c=Jg(),a=Lg(a,d,c),null!==a&&Gi(a,b,d))}\nfunction ni(a,b,c){var d=Kg(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Di(a))Ei(b,e);else{Fi(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Ge(h,g))return}catch(k){}finally{}c=Jg();a=Lg(a,d,c);null!==a&&Gi(a,b,d)}}function Di(a){var b=a.alternate;return a===L||null!==b&&b===L}\nfunction Ei(a,b){Qh=Ph=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Fi(a,b,c){Bg(a)?(a=b.interleaved,null===a?(c.next=c,null===vg?vg=[b]:vg.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function Gi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Bc(a,c)}}\nvar Yh={readContext:ug,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Vh={readContext:ug,useCallback:function(a,b){$h().memoizedState=[a,void 0===b?null:b];return a},useContext:ug,useEffect:ri,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return pi(4194308,\n4,ui.bind(null,b,a),c)},useLayoutEffect:function(a,b){return pi(4194308,4,a,b)},useInsertionEffect:function(a,b){return pi(4,2,a,b)},useMemo:function(a,b){var c=$h();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=$h();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Ci.bind(null,L,a);return[d.memoizedState,a]},useRef:function(a){var b=\n$h();a={current:a};return b.memoizedState=a},useState:mi,useDebugValue:wi,useDeferredValue:function(a){return $h().memoizedState=a},useTransition:function(){var a=mi(!1),b=a[0];a=Ai.bind(null,a[1]);$h().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=L,e=$h();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===P)throw Error(p(349));0!==(Oh&30)||ki(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;ri(hi.bind(null,d,\nf,a),[a]);d.flags|=2048;ii(9,ji.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=$h(),b=P.identifierPrefix;if(I){var c=Zg;var d=Yg;c=(d&~(1<<32-nc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Rh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Nf]=b;a[Of]=d;Ti(a,b,!1,!1);b.stateNode=a;a:{g=ub(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eaj&&(b.flags|=\n128,d=!0,Xi(f,!1),b.lanes=4194304)}else{if(!d)if(a=Jh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Xi(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return Q(b),null}else 2*B()-f.renderingStartTime>aj&&1073741824!==c&&(b.flags|=128,d=!0,Xi(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=b,f.tail=b.sibling,f.renderingStartTime=\nB(),b.sibling=null,c=K.current,G(K,d?c&1|2:c&1),b;Q(b);return null;case 22:case 23:return bj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(cj&1073741824)&&(Q(b),b.subtreeFlags&6&&(b.flags|=8192)):Q(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}var dj=ta.ReactCurrentOwner,tg=!1;function ej(a,b,c,d){b.child=null===a?zh(b,null,c,d):yh(b,a.child,c,d)}\nfunction fj(a,b,c,d,e){c=c.render;var f=b.ref;sg(b,e);d=Uh(a,b,c,d,f,e);c=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&c&&bh(b);b.flags|=1;ej(a,b,d,e);return b.child}\nfunction hj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ij(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,jj(a,b,f,d,e);a=vh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:He;if(c(g,d)&&a.ref===b.ref)return gj(a,b,e)}b.flags|=1;a=th(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction jj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(He(f,d)&&a.ref===b.ref)if(tg=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(tg=!0);else return b.lanes=a.lanes,gj(a,b,e)}return kj(a,b,c,d,e)}\nfunction lj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(mj,cj),cj|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},d=null!==f?f.baseLanes:c,G(mj,cj),cj|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(mj,cj),cj|=a,null;\nelse null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(mj,cj),cj|=d;ej(a,b,e,c);return b.child}function nj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function kj(a,b,c,d,e){var f=Yf(c)?Wf:H.current;f=Xf(b,f);sg(b,e);c=Uh(a,b,c,d,f,e);d=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&d&&bh(b);b.flags|=1;ej(a,b,c,e);return b.child}\nfunction oj(a,b,c,d,e){if(Yf(c)){var f=!0;bg(b)}else f=!1;sg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Og(b,c,d),Qg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ug(l):(l=Yf(c)?Wf:H.current,l=Xf(b,l));var n=c.getDerivedStateFromProps,u=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;u||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Pg(b,g,d,l);wg=!1;var q=b.memoizedState;g.state=q;Eg(b,d,g,e);k=b.memoizedState;h!==d||q!==k||Vf.current||wg?(\"function\"===typeof n&&(Ig(b,c,n,d),k=b.memoizedState),(h=wg||Ng(b,c,h,d,q,k,l))?(u||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:kg(b.type,h);g.props=l;u=b.pendingProps;q=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ug(k):(k=Yf(c)?Wf:H.current,k=Xf(b,k));var y=c.getDerivedStateFromProps;(n=\"function\"===\ntypeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==u||q!==k)&&Pg(b,g,d,k);wg=!1;q=b.memoizedState;g.state=q;Eg(b,d,g,e);var m=b.memoizedState;h!==u||q!==m||Vf.current||wg?(\"function\"===typeof y&&(Ig(b,c,y,d),m=b.memoizedState),(l=wg||Ng(b,c,l,d,q,m,k)||!1)?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(d,m,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,m,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=m),g.props=d,g.state=m,g.context=\nk,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),d=!1)}return pj(a,b,c,d,f,e)}\nfunction pj(a,b,c,d,e,f){nj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&cg(b,c,!1),gj(a,b,f);d=b.stateNode;dj.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=yh(b,a.child,null,f),b.child=yh(b,null,h,f)):ej(a,b,h,f);b.memoizedState=d.state;e&&cg(b,c,!0);return b.child}function qj(a){var b=a.stateNode;b.pendingContext?$f(a,b.pendingContext,b.pendingContext!==b.context):b.context&&$f(a,b.context,!1);Fh(a,b.containerInfo)}\nfunction rj(a,b,c,d,e){nh();oh(e);b.flags|=256;ej(a,b,c,d);return b.child}var sj={dehydrated:null,treeContext:null,retryLane:0};function tj(a){return{baseLanes:a,cachePool:null,transitions:null}}function uj(a,b){return{baseLanes:a.baseLanes|b,cachePool:null,transitions:a.transitions}}\nfunction vj(a,b,c){var d=b.pendingProps,e=K.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(K,e&1);if(null===a){kh(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ne):f=wj(e,d,0,null),a=xh(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=tj(c),b.memoizedState=sj,a):xj(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,yj(a,b,c,Error(p(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=wj({mode:\"visible\",children:d.children},e,0,null);f=xh(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&yh(b,a.child,\nnull,c);b.child.memoizedState=tj(c);b.memoizedState=sj;return f}if(0===(b.mode&1))b=yj(a,b,c,null);else if(\"$!\"===h.data)b=yj(a,b,c,Error(p(419)));else if(d=0!==(c&a.childLanes),tg||d){d=P;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Lg(a,d,-1))}$i();b=yj(a,b,c,Error(p(421)))}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=zj.bind(null,a),h._reactRetry=b,b=null):(c=e.treeContext,eh=Kf(h.nextSibling),dh=b,I=!0,fh=null,null!==c&&(Vg[Wg++]=Yg,Vg[Wg++]=Zg,Vg[Wg++]=Xg,Yg=c.id,Zg=c.overflow,Xg=b),b=xj(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,\nf.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}function xj(a,b){b=wj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}\nfunction Bj(a,b,c,d){var e=a.child;a=e.sibling;c=th(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction Aj(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=th(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=th(g,d):(d=xh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yj(a,b,c,d){null!==d&&oh(d);yh(b,a.child,null,c);a=xj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction Cj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);rg(a.return,b,c)}function Dj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction Ej(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;ej(a,b,d.children,c);d=K.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&Cj(a,c,b);else if(19===a.tag)Cj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(K,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Jh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);Dj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Jh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}Dj(b,!0,c,null,f);break;case \"together\":Dj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction gj(a,b,c){null!==a&&(b.dependencies=a.dependencies);Fg|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=th(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=th(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction Fj(a,b,c){switch(b.tag){case 3:qj(b);nh();break;case 5:Hh(b);break;case 1:Yf(b.type)&&bg(b);break;case 4:Fh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(lg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(K,K.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return vj(a,b,c);G(K,K.current&1);a=gj(a,b,c);return null!==a?a.sibling:null}G(K,K.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return Ej(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(K,K.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,lj(a,b,c)}return gj(a,b,c)}\nfunction Gj(a,b){ch(b);switch(b.tag){case 1:return Yf(b.type)&&Zf(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Gh(),E(Vf),E(H),Lh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Ih(b),null;case 13:E(K);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));nh()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(K),null;case 4:return Gh(),null;case 10:return qg(b.type._context),null;case 22:case 23:return bj(),\nnull;case 24:return null;default:return null}}var Hj=!1,S=!1,Ij=\"function\"===typeof WeakSet?WeakSet:Set,T=null;function Jj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){U(a,b,d)}else c.current=null}function Kj(a,b,c){try{c()}catch(d){U(a,b,d)}}var Lj=!1;\nfunction Mj(a,b){Bf=cd;a=Le();if(Me(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(Z){c=null;break a}var g=0,h=-1,k=-1,l=0,n=0,u=a,q=null;b:for(;;){for(var y;;){u!==c||0!==e&&3!==u.nodeType||(h=g+e);u!==f||0!==d&&3!==u.nodeType||(k=g+d);3===u.nodeType&&(g+=\nu.nodeValue.length);if(null===(y=u.firstChild))break;q=u;u=y}for(;;){if(u===a)break b;q===c&&++l===e&&(h=g);q===f&&++n===d&&(k=g);if(null!==(y=u.nextSibling))break;u=q;q=u.parentNode}u=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Cf={focusedElem:a,selectionRange:c};cd=!1;for(T=b;null!==T;)if(b=T,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,T=a;else for(;null!==T;){b=T;try{var m=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==m){var w=m.memoizedProps,J=m.memoizedState,v=b.stateNode,x=v.getSnapshotBeforeUpdate(b.elementType===b.type?w:kg(b.type,w),J);v.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var r=b.stateNode.containerInfo;if(1===r.nodeType)r.textContent=\"\";else if(9===r.nodeType){var F=r.body;null!=F&&(F.textContent=\"\")}break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(Z){U(b,b.return,Z)}a=b.sibling;if(null!==a){a.return=b.return;T=a;break}T=b.return}m=Lj;Lj=!1;return m}\nfunction Nj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Kj(b,c,f)}e=e.next}while(e!==d)}}function Oj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Pj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Qj(a){var b=a.alternate;null!==b&&(a.alternate=null,Qj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Nf],delete b[Of],delete b[nf],delete b[Pf],delete b[Qf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Rj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Sj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Rj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Tj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Af));else if(4!==d&&(a=a.child,null!==a))for(Tj(a,b,c),a=a.sibling;null!==a;)Tj(a,b,c),a=a.sibling}\nfunction Uj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Uj(a,b,c),a=a.sibling;null!==a;)Uj(a,b,c),a=a.sibling}var V=null,Vj=!1;function Wj(a,b,c){for(c=c.child;null!==c;)Xj(a,b,c),c=c.sibling}\nfunction Xj(a,b,c){if(kc&&\"function\"===typeof kc.onCommitFiberUnmount)try{kc.onCommitFiberUnmount(jc,c)}catch(h){}switch(c.tag){case 5:S||Jj(c,b);case 6:var d=V,e=Vj;V=null;Wj(a,b,c);V=d;Vj=e;null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):V.removeChild(c.stateNode));break;case 18:null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?Jf(a.parentNode,c):1===a.nodeType&&Jf(a,c),ad(a)):Jf(V,c.stateNode));break;case 4:d=V;e=Vj;V=c.stateNode.containerInfo;Vj=!0;\nWj(a,b,c);V=d;Vj=e;break;case 0:case 11:case 14:case 15:if(!S&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Kj(c,b,g):0!==(f&4)&&Kj(c,b,g));e=e.next}while(e!==d)}Wj(a,b,c);break;case 1:if(!S&&(Jj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){U(c,b,h)}Wj(a,b,c);break;case 21:Wj(a,b,c);break;case 22:c.mode&1?(S=(d=S)||null!==\nc.memoizedState,Wj(a,b,c),S=d):Wj(a,b,c);break;default:Wj(a,b,c)}}function Yj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ij);b.forEach(function(b){var d=Zj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ak(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*jk(d/1960))-d;if(10a?16:a;if(null===uk)var d=!1;else{a=uk;uk=null;vk=0;if(0!==(W&6))throw Error(p(331));var e=W;W|=4;for(T=a.current;null!==T;){var f=T,g=f.child;if(0!==(T.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-dk?Jk(a,0):pk|=c);Ck(a,b)}function Xk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=rc,rc<<=1,0===(rc&130023424)&&(rc=4194304)));var c=Jg();a=Ak(a,b);null!==a&&(zc(a,b,c),Ck(a,c))}function zj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Xk(a,c)}\nfunction Zj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Xk(a,c)}var Uk;\nUk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Vf.current)tg=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return tg=!1,Fj(a,b,c);tg=0!==(a.flags&131072)?!0:!1}else tg=!1,I&&0!==(b.flags&1048576)&&ah(b,Ug,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=Xf(b,H.current);sg(b,c);e=Uh(null,b,d,a,e,c);var f=Zh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,Yf(d)?(f=!0,bg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,xg(b),e.updater=Mg,b.stateNode=e,e._reactInternals=b,Qg(b,d,a,c),b=pj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&bh(b),ej(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Yk(d);a=kg(d,a);switch(e){case 0:b=kj(null,b,d,a,c);break a;case 1:b=oj(null,b,\nd,a,c);break a;case 11:b=fj(null,b,d,a,c);break a;case 14:b=hj(null,b,d,kg(d.type,a),c);break a}throw Error(p(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),kj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),oj(a,b,d,e,c);case 3:a:{qj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;yg(a,b);Eg(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(p(423));b=rj(a,b,d,c,e);break a}else if(d!==e){e=Error(p(424));b=rj(a,b,d,c,e);break a}else for(eh=Kf(b.stateNode.containerInfo.firstChild),dh=b,I=!0,fh=null,c=zh(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{nh();if(d===e){b=gj(a,b,c);break a}ej(a,b,d,c)}b=b.child}return b;case 5:return Hh(b),null===a&&kh(b),d=b.type,e=\nb.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Df(d,e)?g=null:null!==f&&Df(d,f)&&(b.flags|=32),nj(a,b),ej(a,b,g,c),b.child;case 6:return null===a&&kh(b),null;case 13:return vj(a,b,c);case 4:return Fh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=yh(b,null,d,c):ej(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),fj(a,b,d,e,c);case 7:return ej(a,b,b.pendingProps,c),b.child;case 8:return ej(a,b,b.pendingProps.children,c),b.child;case 12:return ej(a,\nb,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;G(lg,d._currentValue);d._currentValue=g;if(null!==f)if(Ge(f.value,g)){if(f.children===e.children&&!Vf.current){b=gj(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=zg(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var n=l.pending;null===n?k.next=\nk:(k.next=n.next,n.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);rg(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);rg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}ej(a,b,e.children,c);b=b.child}return b;\ncase 9:return e=b.type,d=b.pendingProps.children,sg(b,c),e=ug(e),d=d(e),b.flags|=1,ej(a,b,d,c),b.child;case 14:return d=b.type,e=kg(d,b.pendingProps),e=kg(d.type,e),hj(a,b,d,e,c);case 15:return jj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Yf(d)?(a=!0,bg(b)):a=!1,sg(b,c),Og(b,d,e),Qg(b,d,e,c),pj(null,b,d,!0,a,c);case 19:return Ej(a,b,c);case 22:return lj(a,b,c)}throw Error(p(156,\nb.tag));};function Ek(a,b){return $b(a,b)}function Zk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function hh(a,b,c,d){return new Zk(a,b,c,d)}\nfunction ij(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Yk(a){if(\"function\"===typeof a)return ij(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Ca)return 11;if(a===Fa)return 14}return 2}\nfunction th(a,b){var c=a.alternate;null===c?(c=hh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction vh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ij(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case wa:return xh(c.children,e,f,b);case xa:g=8;e|=8;break;case za:return a=hh(12,c,b,e|2),a.elementType=za,a.lanes=f,a;case Da:return a=hh(13,c,b,e),a.elementType=Da,a.lanes=f,a;case Ea:return a=hh(19,c,b,e),a.elementType=Ea,a.lanes=f,a;case Ha:return wj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Aa:g=10;break a;case Ba:g=9;break a;case Ca:g=11;\nbreak a;case Fa:g=14;break a;case Ga:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=hh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function xh(a,b,c,d){a=hh(7,a,d,b);a.lanes=c;return a}function wj(a,b,c,d){a=hh(22,a,d,b);a.elementType=Ha;a.lanes=c;a.stateNode={};return a}function uh(a,b,c){a=hh(6,a,null,b);a.lanes=c;return a}\nfunction wh(a,b,c){b=hh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction $k(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=yc(0);this.expirationTimes=yc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=yc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function al(a,b,c,d,e,f,g,h,k){a=new $k(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=hh(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};xg(f);return a}function bl(a,b,c){var d=3 0) {\n var possibleStyle = styles.pop(); // Skip empty items\n\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n } // Push nested styles back onto the stack to be processed\n\n\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n\n continue;\n } // Process an individual style object\n\n\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n\n if (style.$$css) {\n // Build up the class names defined by this object\n var classNameChunk = ''; // Check the cache to see if we've already done this work\n\n if (nextCache != null && nextCache.has(style)) {\n // Cache: read\n var cacheEntry = nextCache.get(style);\n\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0]; // $FlowIgnore\n\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[2];\n }\n } // Update the chunks with data from this object\n else {\n // The properties defined by this object\n var definedPropertiesChunk = [];\n\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) continue; // Each property value is used as an HTML class name\n // { 'debug.string': 'debug.string', opacity: 's-jskmnoqp' }\n\n if (typeof value === 'string' || value === null) {\n // Only add to chunks if this property hasn't already been seen\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } // If we encounter a value that isn't a string or `null`\n else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n } // Cache: write\n\n\n if (nextCache != null) {\n // Create the next WeakMap for this sequence of styles\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, weakMap]);\n nextCache = weakMap;\n }\n } // Order of classes in chunks matches property-iteration order of style\n // object. Order of chunks matches passed order of styles from first to\n // last (which we iterate over in reverse).\n\n\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } // ----- DYNAMIC: Process inline style object -----\n else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n\n for (var _prop in style) {\n var _value = style[_prop];\n\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n\n if (subStyle == null) {\n subStyle = {};\n }\n\n subStyle[_prop] = _value;\n }\n\n definedProperties.push(_prop); // Cache is unnecessary overhead if results can't be reused.\n\n nextCache = null;\n }\n }\n }\n\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n\n var styleProps = [className, inlineStyle];\n return styleProps;\n };\n}\n\nvar styleq = createStyleq();\nexports.styleq = styleq;\nstyleq.factory = createStyleq;","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.isLocaleRTL = isLocaleRTL;\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar rtlScripts = new Set(['Arab', 'Syrc', 'Samr', 'Mand', 'Thaa', 'Mend', 'Nkoo', 'Adlm', 'Rohg', 'Hebr']);\nvar rtlLangs = new Set(['ae', // Avestan\n'ar', // Arabic\n'arc', // Aramaic\n'bcc', // Southern Balochi\n'bqi', // Bakthiari\n'ckb', // Sorani\n'dv', // Dhivehi\n'fa', 'far', // Persian\n'glk', // Gilaki\n'he', 'iw', // Hebrew\n'khw', // Khowar\n'ks', // Kashmiri\n'ku', // Kurdish\n'mzn', // Mazanderani\n'nqo', // N'Ko\n'pnb', // Western Punjabi\n'ps', // Pashto\n'sd', // Sindhi\n'ug', // Uyghur\n'ur', // Urdu\n'yi' // Yiddish\n]);\nvar cache = new Map();\n/**\n * Determine the writing direction of a locale\n */\n\nfunction isLocaleRTL(locale) {\n var cachedRTL = cache.get(locale);\n\n if (cachedRTL) {\n return cachedRTL;\n }\n\n var isRTL = false; // $FlowFixMe\n\n if (Intl.Locale) {\n // $FlowFixMe\n var script = new Intl.Locale(locale).maximize().script;\n isRTL = rtlScripts.has(script);\n } else {\n // Fallback to inferring from language\n var lang = locale.split('-')[0];\n isRTL = rtlLangs.has(lang);\n }\n\n cache.set(locale, isRTL);\n return isRTL;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar CSS_UNIT_RE = /^[+-]?\\d*(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?(%|\\w*)/;\n\nvar getUnit = str => str.match(CSS_UNIT_RE)[1];\n\nvar isNumeric = n => {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nvar multiplyStyleLengthValue = (value, multiple) => {\n if (typeof value === 'string') {\n var number = parseFloat(value) * multiple;\n var unit = getUnit(value);\n return \"\" + number + unit;\n } else if (isNumeric(value)) {\n return value * multiple;\n }\n};\n\nvar _default = multiplyStyleLengthValue;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = hyphenateProperty;\n\nvar _hyphenateStyleName = require(\"hyphenate-style-name\");\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2[\"default\"])(property);\n}","import { ContentSettingDashboard } from '@packages/models/api';\nimport { action, on, props, reducer, union } from 'ts-action';\nimport { Dispatch, Reducer } from 'react';\n\nexport enum DashboardActionsList {\n CLEAR_DASHBOARD_DATA = 'CLEAR_DASHBOARD_DATA',\n HAS_ERRORS = 'HAS_ERRORS',\n HAS_FETCHED = 'HAS_FETCHED',\n HAS_LOADED = 'HAS_LOADED',\n IS_LOADING = 'IS_LOADING',\n SET_DASHBOARD_DATA = 'SET_DASHBOARD_DATA',\n}\n\nexport const dashboardActions = {\n clearDashboardData: action(DashboardActionsList.CLEAR_DASHBOARD_DATA),\n hasErrors: action(DashboardActionsList.HAS_ERRORS, props<{ errors: string[] }>()),\n hasFetched: action(DashboardActionsList.HAS_FETCHED),\n hasLoaded: action(DashboardActionsList.HAS_LOADED),\n isLoading: action(DashboardActionsList.IS_LOADING),\n setDashboardData: action(\n DashboardActionsList.SET_DASHBOARD_DATA,\n props<{ dashboardData: ContentSettingDashboard }>()\n ),\n};\n\nconst actionsUnion = union(...Object.values(dashboardActions));\ntype DashboardActions = typeof actionsUnion.actions;\nexport type DashboardActionDispatcher = Dispatch;\n\nexport interface DashboardState {\n dashboardData: ContentSettingDashboard;\n errors: string[];\n hasFetched: boolean;\n loading: boolean;\n}\n\nexport const initialState: DashboardState = {\n dashboardData: {\n techline: [],\n },\n errors: [],\n hasFetched: false,\n loading: false,\n};\n\nexport const dashboardReducer: Reducer = reducer(\n initialState,\n on(dashboardActions.clearDashboardData, (state) => {\n return {\n ...state,\n dashboardData: {},\n };\n }),\n on(dashboardActions.hasFetched, (state) => {\n return {\n ...state,\n hasFetched: true,\n };\n }),\n on(dashboardActions.isLoading, (state) => {\n return {\n ...state,\n loading: true,\n };\n }),\n on(dashboardActions.hasLoaded, (state) => {\n return {\n ...state,\n loading: false,\n };\n }),\n on(dashboardActions.hasErrors, (state, { errors }) => {\n return {\n ...state,\n errors,\n };\n }),\n on(dashboardActions.setDashboardData, (state, { dashboardData }) => {\n return {\n ...state,\n dashboardData,\n };\n })\n);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"animation\", \"size\", \"children\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar Spinner = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n animation = _ref.animation,\n size = _ref.size,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'spinner');\n var bsSpinnerPrefix = bsPrefix + \"-\" + animation;\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsSpinnerPrefix, size && bsSpinnerPrefix + \"-\" + size, variant && \"text-\" + variant)\n }), children);\n});\nSpinner.displayName = 'Spinner';\nexport default Spinner;","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n var str = css(node, property) || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n var duration = parseDuration(element, 'transitionDuration');\n var delay = parseDuration(element, 'transitionDelay');\n var remove = transitionEnd(element, function (e) {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\n\nexports.__esModule = true;\nexports.default = useMergeRefs;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _mergeRefs = _interopRequireDefault(require(\"../mergeRefs\"));\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction useMergeRefs() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return React.useMemo(() => (0, _mergeRefs.default)(...args), // eslint-disable-next-line\n [...args]);\n}\n\nmodule.exports = exports.default;","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","import React from 'react';\n\nexport const OpenInNew = ({ style = {}, fill = '#999DA3' }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport const SystemSoftwareDownloadQuickReference = () => {\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nexport const VinSessionCarIcon = () => {\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nexport const TextIcon = () => {\n return (\n \n \n \n );\n};\n\nexport const Save = () => {\n return (\n \n \n \n );\n};\n\nexport const Share = () => {\n return (\n \n \n \n );\n};\n\nexport const Recent = () => {\n return (\n \n \n \n );\n};\n\nexport const Favourite = () => {\n return (\n \n \n \n );\n};\n\nexport const FavouriteOpen = () => {\n return (\n \n \n \n );\n};\n\nexport const Download = ({ color = '#1F518F' }: { color?: string }) => {\n return (\n \n \n \n );\n};\n\nexport const Eye = () => {\n return (\n \n \n \n );\n};\n\nexport const Layers = () => {\n return (\n \n \n \n );\n};\n\nexport const NoFoundError = () => {\n return (\n \n \n \n );\n};\n\nexport const Document = ({ color }: { color: string }) => {\n return (\n \n \n \n );\n};\n\nexport const CarIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const PhoneIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const BatteryIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport const TreeTroubleshootingIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const TechTipsIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const MenuBookIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const GuidesIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const AccountManagerIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const SpeedVelocimeterIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport const MenuBookCorrectionIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const OilCanIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n );\n};\n\nexport const PushPinIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const BookletIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const VideoIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n );\n};\n\nexport const CarCheckIcon = ({ size }: { size: number }) => {\n return (\n \n \n \n \n );\n};\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.TOUCH_START = exports.TOUCH_MOVE = exports.TOUCH_END = exports.TOUCH_CANCEL = exports.SELECTION_CHANGE = exports.SELECT = exports.SCROLL = exports.MOUSE_UP = exports.MOUSE_MOVE = exports.MOUSE_DOWN = exports.MOUSE_CANCEL = exports.FOCUS_OUT = exports.CONTEXT_MENU = exports.BLUR = void 0;\nexports.isCancelish = isCancelish;\nexports.isEndish = isEndish;\nexports.isMoveish = isMoveish;\nexports.isScroll = isScroll;\nexports.isSelectionChange = isSelectionChange;\nexports.isStartish = isStartish;\n\n/**\n * Copyright (c) Nicolas Gallagher\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar BLUR = 'blur';\nexports.BLUR = BLUR;\nvar CONTEXT_MENU = 'contextmenu';\nexports.CONTEXT_MENU = CONTEXT_MENU;\nvar FOCUS_OUT = 'focusout';\nexports.FOCUS_OUT = FOCUS_OUT;\nvar MOUSE_DOWN = 'mousedown';\nexports.MOUSE_DOWN = MOUSE_DOWN;\nvar MOUSE_MOVE = 'mousemove';\nexports.MOUSE_MOVE = MOUSE_MOVE;\nvar MOUSE_UP = 'mouseup';\nexports.MOUSE_UP = MOUSE_UP;\nvar MOUSE_CANCEL = 'dragstart';\nexports.MOUSE_CANCEL = MOUSE_CANCEL;\nvar TOUCH_START = 'touchstart';\nexports.TOUCH_START = TOUCH_START;\nvar TOUCH_MOVE = 'touchmove';\nexports.TOUCH_MOVE = TOUCH_MOVE;\nvar TOUCH_END = 'touchend';\nexports.TOUCH_END = TOUCH_END;\nvar TOUCH_CANCEL = 'touchcancel';\nexports.TOUCH_CANCEL = TOUCH_CANCEL;\nvar SCROLL = 'scroll';\nexports.SCROLL = SCROLL;\nvar SELECT = 'select';\nexports.SELECT = SELECT;\nvar SELECTION_CHANGE = 'selectionchange';\nexports.SELECTION_CHANGE = SELECTION_CHANGE;\n\nfunction isStartish(eventType) {\n return eventType === TOUCH_START || eventType === MOUSE_DOWN;\n}\n\nfunction isMoveish(eventType) {\n return eventType === TOUCH_MOVE || eventType === MOUSE_MOVE;\n}\n\nfunction isEndish(eventType) {\n return eventType === TOUCH_END || eventType === MOUSE_UP || isCancelish(eventType);\n}\n\nfunction isCancelish(eventType) {\n return eventType === TOUCH_CANCEL || eventType === MOUSE_CANCEL;\n}\n\nfunction isScroll(eventType) {\n return eventType === SCROLL;\n}\n\nfunction isSelectionChange(eventType) {\n return eventType === SELECT || eventType === SELECTION_CHANGE;\n}","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/*\n * Copyright (c) 2016-present Invertase Limited\n */\n\nimport NotifeeApiModule from './NotifeeApiModule';\nimport { ModuleStatics, ModuleWithStatics } from './types/Module';\nimport { version as SDK_VERSION } from './version';\nimport {\n isIOS,\n kReactNativeNotifeeNotificationBackgroundEvent,\n kReactNativeNotifeeNotificationEvent,\n} from './utils';\n\nconst apiModule = new NotifeeApiModule({\n version: SDK_VERSION,\n nativeModuleName: 'NotifeeApiModule',\n nativeEvents: isIOS\n ? [kReactNativeNotifeeNotificationEvent, kReactNativeNotifeeNotificationBackgroundEvent]\n : [kReactNativeNotifeeNotificationEvent],\n});\n\nconst statics: ModuleStatics = {\n SDK_VERSION,\n};\n\nconst defaultExports: ModuleWithStatics = Object.assign(apiModule, statics);\nexport default defaultExports;\n\nexport * from './types/Library';\nexport * from './types/Notification';\nexport * from './types/Trigger';\nexport * from './types/NotificationIOS';\nexport * from './types/NotificationAndroid';\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\nconst MAX_DELAY_MS = 2 ** 31 - 1;\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n const delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(() => setChainedTimeout(handleRef, fn, timeoutAtMs), MAX_DELAY_MS);\n}\n\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n *
\n * {hello ?

Hello

: null}\n *
\n * );\n * ```\n */\nexport default function useTimeout() {\n const isMounted = useMounted();\n\n // types are confused between node and web here IDK\n const handleRef = useRef();\n useWillUnmount(() => clearTimeout(handleRef.current));\n return useMemo(() => {\n const clear = () => clearTimeout(handleRef.current);\n function set(fn, delayMs = 0) {\n if (!isMounted()) return;\n clear();\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n return {\n set,\n clear,\n handleRef\n };\n }, []);\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n\n this.notifyFn = function (callback) {\n callback();\n };\n\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n\n var _proto = NotifyManager.prototype;\n\n _proto.batch = function batch(callback) {\n var result;\n this.transactions++;\n\n try {\n result = callback();\n } finally {\n this.transactions--;\n\n if (!this.transactions) {\n this.flush();\n }\n }\n\n return result;\n };\n\n _proto.schedule = function schedule(callback) {\n var _this = this;\n\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */\n ;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n\n _proto.flush = function flush() {\n var _this3 = this;\n\n var queue = this.queue;\n this.queue = [];\n\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n ;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n ;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n\n return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","import availableEnvs, { Environment, BuildConfig } from '@packages/core/config/build';\n\nfunction envToConfig(env: NodeJS.ProcessEnv): Readonly {\n return Object.entries(env)\n .filter(([envVar, value]) => {\n const isAppConfig = envVar.startsWith('REACT_APP_');\n const hasValue = typeof value !== 'undefined';\n\n return isAppConfig && hasValue;\n })\n .map<[keyof Environment, string]>(([envVar, value]) => [\n envVar.replace('REACT_APP_', '') as keyof Environment,\n value!,\n ])\n .reduce((local, [envVar, value]) => {\n local[envVar] = value;\n return local;\n }, {} as Environment);\n}\n\nexport function getEnvConfig(): Readonly {\n const serverConfig = document.getElementById('react-app-env-config');\n if (__DEV__) {\n // This is a build-time flag.\n\n // `react-scripts` build script\n // hijacks `process.env.NODE_ENV` and sets it to \"production\"\n // regardless of what process is executing it.\n // Used by the build toolchain to differentiate between:\n // - \"bundling for the local development server\" and,\n // - \"generating opitmized bundles\".\n\n // `process.env` is controlled by `react-scripts`.\n // Expose build process env vars to app in the `.env`\n // file located at the root of the web app project.\n // The env var name must start with \"REACT_APP_\" for\n // the build script to let it through.\n\n const localConfig = envToConfig(process.env);\n\n if (Object.keys(localConfig).length === 0) {\n return availableEnvs;\n }\n\n return {\n buildEnv: 'local',\n debugEnv: serverConfig?.innerHTML ? JSON.parse(serverConfig.innerHTML).REACT_APP_DEBUG_ENV : 'local',\n availableEnvironments: { local: envToConfig(process.env) },\n };\n }\n\n if (!serverConfig) {\n console.warn('App is running without configuration.');\n // TODO: What should the default be if config is missing from non-development server?\n\n // Using \"build-time\" env vars as defaults\n return availableEnvs;\n }\n\n return {\n buildEnv: 'production',\n debugEnv: JSON.parse(serverConfig.innerHTML).REACT_APP_DEBUG_ENV,\n availableEnvironments: {\n production: envToConfig(JSON.parse(serverConfig.innerHTML)),\n },\n };\n}\n\nexport function getReleaseVersion(): string {\n const serverConfig = document.getElementById('react-app-env-config');\n\n if (serverConfig?.innerHTML) {\n const parsedEnv = JSON.parse(serverConfig.innerHTML).REACT_APP_DEBUG_ENV;\n if (parsedEnv === 'production') {\n return JSON.parse(serverConfig.innerHTML).REACT_APP_APP_VERSION;\n }\n\n return JSON.parse(serverConfig.innerHTML).REACT_APP_APP_VERSION;\n }\n\n return 'local';\n}\n\nexport function getEnvironment(): string {\n const serverConfig = document.getElementById('react-app-env-config');\n\n if (serverConfig?.innerHTML) {\n return JSON.parse(serverConfig.innerHTML).REACT_APP_DEBUG_ENV;\n }\n\n return 'local';\n}\n","import { IOSNotificationCategoryAction } from '../types/NotificationIOS';\nimport { objectHasProperty, isBoolean, isObject, isString, isUndefined } from '../utils';\nimport validateIOSInput from './validateIOSInput';\n\nexport default function validateIOSCategoryAction(\n action: IOSNotificationCategoryAction,\n): IOSNotificationCategoryAction {\n if (!isObject(action)) {\n throw new Error('\"action\" expected an object value');\n }\n\n if (!isString(action.id) || action.id.length === 0) {\n throw new Error('\"action.id\" expected a valid string value.');\n }\n\n if (!isString(action.title) || action.title.length === 0) {\n throw new Error('\"action.title\" expected a valid string value.');\n }\n\n const out: IOSNotificationCategoryAction = {\n id: action.id,\n title: action.title,\n destructive: false,\n foreground: false,\n authenticationRequired: false,\n };\n\n if (objectHasProperty(action, 'input') && !isUndefined(action.input)) {\n if (action.input === true) {\n out.input = true;\n } else {\n try {\n out.input = validateIOSInput(action.input);\n } catch (e: any) {\n throw new Error(`'action' ${e.message}.`);\n }\n }\n }\n\n if (objectHasProperty(action, 'destructive')) {\n if (!isBoolean(action.destructive)) {\n throw new Error(\"'destructive' expected a boolean value.\");\n }\n\n out.destructive = action.destructive;\n }\n\n if (objectHasProperty(action, 'foreground')) {\n if (!isBoolean(action.foreground)) {\n throw new Error(\"'foreground' expected a boolean value.\");\n }\n\n out.foreground = action.foreground;\n }\n\n if (objectHasProperty(action, 'authenticationRequired')) {\n if (!isBoolean(action.authenticationRequired)) {\n throw new Error(\"'authenticationRequired' expected a boolean value.\");\n }\n\n out.authenticationRequired = action.authenticationRequired;\n }\n\n return out;\n}\n","import React, { createContext } from 'react';\nimport warning from 'tiny-warning';\nimport PropTypes from 'prop-types';\nimport hoist from 'hoist-non-react-statics';\nimport getDisplayName from 'react-display-name';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\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 isObject(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n}\n\nfunction createThemeProvider(context) {\n var ThemeProvider =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider() {\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\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cachedTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastOuterTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastTheme\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderProvider\", function (outerTheme) {\n var children = _this.props.children;\n return React.createElement(context.Provider, {\n value: _this.getTheme(outerTheme)\n }, children);\n });\n\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n _proto.getTheme = function getTheme(outerTheme) {\n if (this.props.theme !== this.lastTheme || outerTheme !== this.lastOuterTheme || !this.cachedTheme) {\n this.lastOuterTheme = outerTheme;\n this.lastTheme = this.props.theme;\n\n if (typeof this.lastTheme === 'function') {\n var theme = this.props.theme;\n this.cachedTheme = theme(outerTheme);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(this.cachedTheme), '[ThemeProvider] Please return an object from your theme function') : void 0;\n } else {\n var _theme = this.props.theme;\n process.env.NODE_ENV !== \"production\" ? warning(isObject(_theme), '[ThemeProvider] Please make your theme prop a plain object') : void 0;\n this.cachedTheme = outerTheme ? _extends({}, outerTheme, _theme) : _theme;\n }\n }\n\n return this.cachedTheme;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n\n if (!children) {\n return null;\n }\n\n return React.createElement(context.Consumer, null, this.renderProvider);\n };\n\n return ThemeProvider;\n }(React.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n ThemeProvider.propTypes = {\n // eslint-disable-next-line react/require-default-props\n children: PropTypes.node,\n theme: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.func]).isRequired\n };\n }\n\n return ThemeProvider;\n}\n\nfunction createWithTheme(context) {\n return function hoc(Component) {\n var withTheme = React.forwardRef(function (props, ref) {\n return React.createElement(context.Consumer, null, function (theme) {\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use withTheme only with the ThemeProvider') : void 0;\n return React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n withTheme.displayName = \"WithTheme(\" + getDisplayName(Component) + \")\";\n }\n\n hoist(withTheme, Component);\n return withTheme;\n };\n}\n\nfunction createUseTheme(context) {\n var useTheme = function useTheme() {\n var theme = React.useContext(context);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use useTheme only with the ThemeProvider') : void 0;\n return theme;\n };\n\n return useTheme;\n}\n\nfunction createTheming(context) {\n return {\n context: context,\n withTheme: createWithTheme(context),\n useTheme: createUseTheme(context),\n ThemeProvider: createThemeProvider(context)\n };\n}\n\nvar ThemeContext = createContext();\n\nvar _createTheming = createTheming(ThemeContext),\n withTheme = _createTheming.withTheme,\n ThemeProvider = _createTheming.ThemeProvider,\n useTheme = _createTheming.useTheme;\n\nexport { useTheme, ThemeContext, withTheme, createTheming, ThemeProvider };\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\\n\" + result + \"\\n\";\n return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.key = void 0;\n this.isProcessed = false;\n this.style = void 0;\n this.renderer = void 0;\n this.renderable = void 0;\n this.options = void 0;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n _this.selectorText = void 0;\n _this.id = void 0;\n _this.renderable = void 0;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(name, style, options) {\n if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(name, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.at = void 0;\n this.key = void 0;\n this.query = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.key = void 0;\n this.name = void 0;\n this.id = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\\n\" + children + \"\\n\";\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar plugin = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\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 = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n _this.renderable = void 0;\n return _this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.key = void 0;\n this.value = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Get a rule.\n */\n ;\n\n _proto.get = function get(name) {\n return this.map[name];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.map[name], data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var styleRule = rule;\n var style = styleRule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== styleRule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n for (var prop in styleRule.style) {\n var nextValue = styleRule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n styleRule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = styleRule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n styleRule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += '\\n';\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.options = void 0;\n this.deployed = void 0;\n this.attached = void 0;\n this.rules = void 0;\n this.renderer = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.queue = void 0;\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name.\n */\n ;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = void 0;\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n // $FlowFixMe[prop-missing]\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += '\\n';\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar registry = new SheetsRegistry();\n\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n return function (rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n\n/**\n * Get a style property value.\n */\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n\n/**\n * Set a style property.\n */\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n\n/**\n * Remove a style property.\n */\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n\n/**\n * Set the selector.\n */\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n var registry$1 = registry.registry;\n\n if (registry$1.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n var c = container;\n c.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n var _c = container;\n\n _c.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.element = void 0;\n this.sheet = void 0;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) registry.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules[index] = cssRule;\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n *\n * Only used for some old browsers because they can't set a selector.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.5.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = registry.index === 0 ? 0 : registry.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n registry.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n // $FlowFixMe[incompatible-call]\n return this.createRule(undefined, name, style);\n } // $FlowFixMe[incompatible-type]\n\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar jss = create();\n\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };\n","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n } // $FlowFixMe[prop-missing]\n\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule; // $FlowFixMe[prop-missing]\n\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n } // $FlowFixMe[prop-missing]\n\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import $$observable from 'symbol-observable';\nimport { createRule } from 'jss';\n\nvar isObservable = function isObservable(value) {\n return value && value[$$observable] && value === value[$$observable]();\n};\n\nvar observablePlugin = function observablePlugin(updateOptions) {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (!isObservable(decl)) return null; // Cast `decl` to `Observable`, since it passed the type guard.\n\n var style$ = decl;\n var rule = createRule(name, {}, options); // TODO\n // Call `stream.subscribe()` returns a subscription, which should be explicitly\n // unsubscribed from when we know this sheet is no longer needed.\n\n style$.subscribe(function (style) {\n for (var prop in style) {\n rule.prop(prop, style[prop], updateOptions);\n }\n });\n return rule;\n },\n onProcessRule: function onProcessRule(rule) {\n if (rule && rule.type !== 'style') return;\n var styleRule = rule;\n var style = styleRule.style;\n\n var _loop = function _loop(prop) {\n var value = style[prop];\n if (!isObservable(value)) return \"continue\";\n delete style[prop];\n value.subscribe({\n next: function next(nextValue) {\n styleRule.prop(prop, nextValue, updateOptions);\n }\n });\n };\n\n for (var prop in style) {\n var _ret = _loop(prop);\n\n if (_ret === \"continue\") continue;\n }\n }\n };\n};\n\nexport default observablePlugin;\n","import warning from 'tiny-warning';\n\nvar semiWithNl = /;\\n/;\n\n/**\n * Naive CSS parser.\n * - Supports only rule body (no selectors)\n * - Requires semicolon and new line after the value (except of last line)\n * - No nested rules support\n */\nvar parse = function parse(cssText) {\n var style = {};\n var split = cssText.split(semiWithNl);\n\n for (var i = 0; i < split.length; i++) {\n var decl = (split[i] || '').trim();\n if (!decl) continue;\n var colonIndex = decl.indexOf(':');\n\n if (colonIndex === -1) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Malformed CSS string \\\"\" + decl + \"\\\"\") : void 0;\n continue;\n }\n\n var prop = decl.substr(0, colonIndex).trim();\n var value = decl.substr(colonIndex + 1).trim();\n style[prop] = value;\n }\n\n return style;\n};\n\nvar onProcessRule = function onProcessRule(rule) {\n if (typeof rule.style === 'string') {\n // $FlowFixMe[prop-missing] We can safely assume that rule has the style property\n rule.style = parse(rule.style);\n }\n};\n\nfunction templatePlugin() {\n return {\n onProcessRule: onProcessRule\n };\n}\n\nexport default templatePlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.rules = void 0;\n this.options = void 0;\n this.key = void 0;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString() {\n return this.rules.toString();\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.options = void 0;\n this.rule = void 0;\n this.isProcessed = false;\n this.key = void 0;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar isObject = function isObject(obj) {\n return obj && typeof obj === 'object' && !Array.isArray(obj);\n};\n\nvar valueNs = \"extendCurrValue\" + Date.now();\n\nfunction mergeExtend(style, rule, sheet, newStyle) {\n var extendType = typeof style.extend; // Extend using a rule name.\n\n if (extendType === 'string') {\n if (!sheet) return;\n var refRule = sheet.getRule(style.extend);\n if (!refRule) return;\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] A rule tries to extend itself \\n\" + rule.toString()) : void 0;\n return;\n }\n\n var parent = refRule.options.parent;\n\n if (parent) {\n var originalStyle = parent.rules.raw[style.extend];\n extend(originalStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend using an array.\n\n\n if (Array.isArray(style.extend)) {\n for (var index = 0; index < style.extend.length; index++) {\n var singleExtend = style.extend[index];\n var singleStyle = typeof singleExtend === 'string' ? _extends({}, style, {\n extend: singleExtend\n }) : style.extend[index];\n extend(singleStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend is a style object.\n\n\n for (var prop in style.extend) {\n if (prop === 'extend') {\n extend(style.extend.extend, rule, sheet, newStyle);\n continue;\n }\n\n if (isObject(style.extend[prop])) {\n if (!(prop in newStyle)) newStyle[prop] = {};\n extend(style.extend[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n newStyle[prop] = style.extend[prop];\n }\n}\n\nfunction mergeRest(style, rule, sheet, newStyle) {\n // Copy base style.\n for (var prop in style) {\n if (prop === 'extend') continue;\n\n if (isObject(newStyle[prop]) && isObject(style[prop])) {\n extend(style[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n if (isObject(style[prop])) {\n newStyle[prop] = extend(style[prop], rule, sheet);\n continue;\n }\n\n newStyle[prop] = style[prop];\n }\n}\n/**\n * Recursively extend styles.\n */\n\n\nfunction extend(style, rule, sheet, newStyle) {\n if (newStyle === void 0) {\n newStyle = {};\n }\n\n mergeExtend(style, rule, sheet, newStyle);\n mergeRest(style, rule, sheet, newStyle);\n return newStyle;\n}\n/**\n * Handle `extend` property.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssExtend() {\n function onProcessStyle(style, rule, sheet) {\n if ('extend' in style) return extend(style, rule, sheet);\n return style;\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop !== 'extend') return value; // Value is empty, remove properties set previously.\n\n if (value == null || value === false) {\n // $FlowFixMe[prop-missing]\n for (var key in rule[valueNs]) {\n rule.prop(key, null);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = null;\n return null;\n }\n\n if (typeof value === 'object') {\n // $FlowFixMe[invalid-in-rhs] This will be an object\n for (var _key in value) {\n // $FlowFixMe[incompatible-use] This will be an object\n rule.prop(_key, value[_key]);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = value;\n } // Make sure we don't set the value in the core.\n\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssExtend;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n rule = rule;\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1 // $FlowFixMe[prop-missing]\n\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n container.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options) // Flow expects more options but they aren't required\n // And flow doesn't know this will always be a StyleRule which has the addRule method\n // $FlowFixMe[incompatible-use]\n // $FlowFixMe[prop-missing]\n .addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","import warning from 'tiny-warning';\n\n/**\n * Set selector.\n *\n * @param {Object} original rule\n * @param {String} className class string\n * @return {Boolean} flag, indicating function was successfull or not\n */\nfunction registerClass(rule, className) {\n // Skip falsy values\n if (!className) return true; // Support array of class names `{composes: ['foo', 'bar']}`\n\n if (Array.isArray(className)) {\n for (var index = 0; index < className.length; index++) {\n var isSetted = registerClass(rule, className[index]);\n if (!isSetted) return false;\n }\n\n return true;\n } // Support space separated class names `{composes: 'foo bar'}`\n\n\n if (className.indexOf(' ') > -1) {\n return registerClass(rule, className.split(' '));\n }\n\n var _ref = rule.options,\n parent = _ref.parent; // It is a ref to a local rule.\n\n if (className[0] === '$') {\n var refRule = parent.getRule(className.substr(1));\n\n if (!refRule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced rule is not defined. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Cyclic composition detected. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n parent.classes[rule.key] += \" \" + parent.classes[refRule.key];\n return true;\n }\n\n parent.classes[rule.key] += \" \" + className;\n return true;\n}\n/**\n * Convert compose property to additional class, remove property from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssCompose() {\n function onProcessStyle(style, rule) {\n if (!('composes' in style)) return style;\n registerClass(rule, style.composes); // Remove composes property to prevent infinite loop.\n\n delete style.composes;\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssCompose;\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var _key in obj) {\n newObj[_key] = obj[_key];\n newObj[_key.replace(regExp, replace)] = obj[_key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n }\n } else if (typeof value === 'number') {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","/**\n * A scheme for converting properties from array to regular style.\n * All properties listed below will be transformed to a string separated by space.\n */\nvar propArray = {\n 'background-size': true,\n 'background-position': true,\n border: true,\n 'border-bottom': true,\n 'border-left': true,\n 'border-top': true,\n 'border-right': true,\n 'border-radius': true,\n 'border-image': true,\n 'border-width': true,\n 'border-style': true,\n 'border-color': true,\n 'box-shadow': true,\n flex: true,\n margin: true,\n padding: true,\n outline: true,\n 'transform-origin': true,\n transform: true,\n transition: true\n /**\n * A scheme for converting arrays to regular styles inside of objects.\n * For e.g.: \"{position: [0, 0]}\" => \"background-position: 0 0;\".\n */\n\n};\nvar propArrayInObj = {\n position: true,\n // background-position\n size: true // background-size\n\n /**\n * A scheme for parsing and building correct styles from passed objects.\n */\n\n};\nvar propObj = {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n background: {\n attachment: null,\n color: null,\n image: null,\n position: null,\n repeat: null\n },\n border: {\n width: null,\n style: null,\n color: null\n },\n 'border-top': {\n width: null,\n style: null,\n color: null\n },\n 'border-right': {\n width: null,\n style: null,\n color: null\n },\n 'border-bottom': {\n width: null,\n style: null,\n color: null\n },\n 'border-left': {\n width: null,\n style: null,\n color: null\n },\n outline: {\n width: null,\n style: null,\n color: null\n },\n 'list-style': {\n type: null,\n position: null,\n image: null\n },\n transition: {\n property: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed for avoiding comilation issues with jss-plugin-camel-case\n delay: null\n },\n animation: {\n name: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n delay: null,\n 'iteration-count': null,\n iterationCount: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n direction: null,\n 'fill-mode': null,\n fillMode: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'play-state': null,\n playState: null // Needed to avoid compilation issues with jss-plugin-camel-case\n\n },\n 'box-shadow': {\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n color: null,\n inset: null\n },\n 'text-shadow': {\n x: 0,\n y: 0,\n blur: null,\n color: null\n }\n /**\n * A scheme for converting non-standart properties inside object.\n * For e.g.: include 'border-radius' property inside 'border' object.\n */\n\n};\nvar customPropObj = {\n border: {\n radius: 'border-radius',\n image: 'border-image',\n width: 'border-width',\n style: 'border-style',\n color: 'border-color'\n },\n 'border-bottom': {\n width: 'border-bottom-width',\n style: 'border-bottom-style',\n color: 'border-bottom-color'\n },\n 'border-top': {\n width: 'border-top-width',\n style: 'border-top-style',\n color: 'border-top-color'\n },\n 'border-left': {\n width: 'border-left-width',\n style: 'border-left-style',\n color: 'border-left-color'\n },\n 'border-right': {\n width: 'border-right-width',\n style: 'border-right-style',\n color: 'border-right-color'\n },\n background: {\n size: 'background-size',\n image: 'background-image'\n },\n font: {\n style: 'font-style',\n variant: 'font-variant',\n weight: 'font-weight',\n stretch: 'font-stretch',\n size: 'font-size',\n family: 'font-family',\n lineHeight: 'line-height',\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'line-height': 'line-height'\n },\n flex: {\n grow: 'flex-grow',\n basis: 'flex-basis',\n direction: 'flex-direction',\n wrap: 'flex-wrap',\n flow: 'flex-flow',\n shrink: 'flex-shrink'\n },\n align: {\n self: 'align-self',\n items: 'align-items',\n content: 'align-content'\n },\n grid: {\n 'template-columns': 'grid-template-columns',\n templateColumns: 'grid-template-columns',\n 'template-rows': 'grid-template-rows',\n templateRows: 'grid-template-rows',\n 'template-areas': 'grid-template-areas',\n templateAreas: 'grid-template-areas',\n template: 'grid-template',\n 'auto-columns': 'grid-auto-columns',\n autoColumns: 'grid-auto-columns',\n 'auto-rows': 'grid-auto-rows',\n autoRows: 'grid-auto-rows',\n 'auto-flow': 'grid-auto-flow',\n autoFlow: 'grid-auto-flow',\n row: 'grid-row',\n column: 'grid-column',\n 'row-start': 'grid-row-start',\n rowStart: 'grid-row-start',\n 'row-end': 'grid-row-end',\n rowEnd: 'grid-row-end',\n 'column-start': 'grid-column-start',\n columnStart: 'grid-column-start',\n 'column-end': 'grid-column-end',\n columnEnd: 'grid-column-end',\n area: 'grid-area',\n gap: 'grid-gap',\n 'row-gap': 'grid-row-gap',\n rowGap: 'grid-row-gap',\n 'column-gap': 'grid-column-gap',\n columnGap: 'grid-column-gap'\n }\n};\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Map values by given prop.\n *\n * @param {Array} array of values\n * @param {String} original property\n * @param {String} original rule\n * @return {String} mapped values\n */\nfunction mapValuesByProp(value, prop, rule) {\n return value.map(function (item) {\n return objectToArray(item, prop, rule, false, true);\n });\n}\n/**\n * Convert array to nested array, if needed\n */\n\n\nfunction processArray(value, prop, scheme, rule) {\n if (scheme[prop] == null) return value;\n if (value.length === 0) return [];\n if (Array.isArray(value[0])) return processArray(value[0], prop, scheme, rule);\n\n if (typeof value[0] === 'object') {\n return mapValuesByProp(value, prop, rule);\n }\n\n return [value];\n}\n/**\n * Convert object to array.\n */\n\n\nfunction objectToArray(value, prop, rule, isFallback, isInArray) {\n if (!(propObj[prop] || customPropObj[prop])) return [];\n var result = []; // Check if exists any non-standard property\n\n if (customPropObj[prop]) {\n // eslint-disable-next-line no-param-reassign\n value = customPropsToStyle(value, rule, customPropObj[prop], isFallback);\n } // Pass throught all standart props\n\n\n if (Object.keys(value).length) {\n for (var baseProp in propObj[prop]) {\n if (value[baseProp]) {\n if (Array.isArray(value[baseProp])) {\n result.push(propArrayInObj[baseProp] === null ? value[baseProp] : value[baseProp].join(' '));\n } else result.push(value[baseProp]);\n\n continue;\n } // Add default value from props config.\n\n\n if (propObj[prop][baseProp] != null) {\n result.push(propObj[prop][baseProp]);\n }\n }\n }\n\n if (!result.length || isInArray) return result;\n return [result];\n}\n/**\n * Convert custom properties values to styles adding them to rule directly\n */\n\n\nfunction customPropsToStyle(value, rule, customProps, isFallback) {\n for (var prop in customProps) {\n var propName = customProps[prop]; // If current property doesn't exist already in rule - add new one\n\n if (typeof value[prop] !== 'undefined' && (isFallback || !rule.prop(propName))) {\n var _styleDetector;\n\n var appendedValue = styleDetector((_styleDetector = {}, _styleDetector[propName] = value[prop], _styleDetector), rule)[propName]; // Add style directly in rule\n\n if (isFallback) rule.style.fallbacks[propName] = appendedValue;else rule.style[propName] = appendedValue;\n } // Delete converted property to avoid double converting\n\n\n delete value[prop];\n }\n\n return value;\n}\n/**\n * Detect if a style needs to be converted.\n */\n\n\nfunction styleDetector(style, rule, isFallback) {\n for (var prop in style) {\n var value = style[prop];\n\n if (Array.isArray(value)) {\n // Check double arrays to avoid recursion.\n if (!Array.isArray(value[0])) {\n if (prop === 'fallbacks') {\n for (var index = 0; index < style.fallbacks.length; index++) {\n style.fallbacks[index] = styleDetector(style.fallbacks[index], rule, true);\n }\n\n continue;\n }\n\n style[prop] = processArray(value, prop, propArray, rule); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n style.fallbacks = styleDetector(style.fallbacks, rule, true);\n continue;\n }\n\n style[prop] = objectToArray(value, prop, rule, isFallback); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n } // Maybe a computed value resulting in an empty string\n else if (style[prop] === '') delete style[prop];\n }\n\n return style;\n}\n/**\n * Adds possibility to write expanded styles.\n */\n\n\nfunction jssExpand() {\n function onProcessStyle(style, rule) {\n if (!style || rule.type !== 'style') return style;\n\n if (Array.isArray(style)) {\n // Pass rules one by one and reformat them\n for (var index = 0; index < style.length; index++) {\n style[index] = styleDetector(style[index], rule);\n }\n\n return style;\n }\n\n return styleDetector(style, rule);\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssExpand;\n","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @api public\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import functions from 'jss-plugin-rule-value-function';\nimport observable from 'jss-plugin-rule-value-observable';\nimport template from 'jss-plugin-template';\nimport global from 'jss-plugin-global';\nimport extend from 'jss-plugin-extend';\nimport nested from 'jss-plugin-nested';\nimport compose from 'jss-plugin-compose';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport expand from 'jss-plugin-expand';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort';\n\nvar create = function create(options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n plugins: [functions(), observable(options.observable), template(), global(), extend(), nested(), compose(), camelCase(), defaultUnit(options.defaultUnit), expand(), vendorPrefixer(), propsSort()]\n };\n};\n\nexport default create;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\\n\" + result + \"\\n\";\n return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.key = void 0;\n this.isProcessed = false;\n this.style = void 0;\n this.renderer = void 0;\n this.renderable = void 0;\n this.options = void 0;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n _this.selectorText = void 0;\n _this.id = void 0;\n _this.renderable = void 0;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(name, style, options) {\n if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(name, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.at = void 0;\n this.key = void 0;\n this.query = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.key = void 0;\n this.name = void 0;\n this.id = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\\n\" + children + \"\\n\";\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar plugin = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\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 = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n _this.renderable = void 0;\n return _this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.key = void 0;\n this.value = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Get a rule.\n */\n ;\n\n _proto.get = function get(name) {\n return this.map[name];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.map[name], data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var styleRule = rule;\n var style = styleRule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== styleRule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n for (var prop in styleRule.style) {\n var nextValue = styleRule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n styleRule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = styleRule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n styleRule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += '\\n';\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.options = void 0;\n this.deployed = void 0;\n this.attached = void 0;\n this.rules = void 0;\n this.renderer = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.queue = void 0;\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name.\n */\n ;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = void 0;\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n // $FlowFixMe[prop-missing]\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += '\\n';\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar registry = new SheetsRegistry();\n\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n return function (rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n\n/**\n * Get a style property value.\n */\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n\n/**\n * Set a style property.\n */\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n\n/**\n * Remove a style property.\n */\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n\n/**\n * Set the selector.\n */\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n var registry$1 = registry.registry;\n\n if (registry$1.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n var c = container;\n c.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n var _c = container;\n\n _c.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.element = void 0;\n this.sheet = void 0;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) registry.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules[index] = cssRule;\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n *\n * Only used for some old browsers because they can't set a selector.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.5.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = registry.index === 0 ? 0 : registry.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n registry.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n // $FlowFixMe[incompatible-call]\n return this.createRule(undefined, name, style);\n } // $FlowFixMe[incompatible-type]\n\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar jss = create();\n\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };\n","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n } // $FlowFixMe[prop-missing]\n\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule; // $FlowFixMe[prop-missing]\n\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n } // $FlowFixMe[prop-missing]\n\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import $$observable from 'symbol-observable';\nimport { createRule } from 'jss';\n\nvar isObservable = function isObservable(value) {\n return value && value[$$observable] && value === value[$$observable]();\n};\n\nvar observablePlugin = function observablePlugin(updateOptions) {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (!isObservable(decl)) return null; // Cast `decl` to `Observable`, since it passed the type guard.\n\n var style$ = decl;\n var rule = createRule(name, {}, options); // TODO\n // Call `stream.subscribe()` returns a subscription, which should be explicitly\n // unsubscribed from when we know this sheet is no longer needed.\n\n style$.subscribe(function (style) {\n for (var prop in style) {\n rule.prop(prop, style[prop], updateOptions);\n }\n });\n return rule;\n },\n onProcessRule: function onProcessRule(rule) {\n if (rule && rule.type !== 'style') return;\n var styleRule = rule;\n var style = styleRule.style;\n\n var _loop = function _loop(prop) {\n var value = style[prop];\n if (!isObservable(value)) return \"continue\";\n delete style[prop];\n value.subscribe({\n next: function next(nextValue) {\n styleRule.prop(prop, nextValue, updateOptions);\n }\n });\n };\n\n for (var prop in style) {\n var _ret = _loop(prop);\n\n if (_ret === \"continue\") continue;\n }\n }\n };\n};\n\nexport default observablePlugin;\n","import warning from 'tiny-warning';\n\nvar semiWithNl = /;\\n/;\n\n/**\n * Naive CSS parser.\n * - Supports only rule body (no selectors)\n * - Requires semicolon and new line after the value (except of last line)\n * - No nested rules support\n */\nvar parse = function parse(cssText) {\n var style = {};\n var split = cssText.split(semiWithNl);\n\n for (var i = 0; i < split.length; i++) {\n var decl = (split[i] || '').trim();\n if (!decl) continue;\n var colonIndex = decl.indexOf(':');\n\n if (colonIndex === -1) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Malformed CSS string \\\"\" + decl + \"\\\"\") : void 0;\n continue;\n }\n\n var prop = decl.substr(0, colonIndex).trim();\n var value = decl.substr(colonIndex + 1).trim();\n style[prop] = value;\n }\n\n return style;\n};\n\nvar onProcessRule = function onProcessRule(rule) {\n if (typeof rule.style === 'string') {\n // $FlowFixMe[prop-missing] We can safely assume that rule has the style property\n rule.style = parse(rule.style);\n }\n};\n\nfunction templatePlugin() {\n return {\n onProcessRule: onProcessRule\n };\n}\n\nexport default templatePlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.rules = void 0;\n this.options = void 0;\n this.key = void 0;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString() {\n return this.rules.toString();\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.options = void 0;\n this.rule = void 0;\n this.isProcessed = false;\n this.key = void 0;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar isObject = function isObject(obj) {\n return obj && typeof obj === 'object' && !Array.isArray(obj);\n};\n\nvar valueNs = \"extendCurrValue\" + Date.now();\n\nfunction mergeExtend(style, rule, sheet, newStyle) {\n var extendType = typeof style.extend; // Extend using a rule name.\n\n if (extendType === 'string') {\n if (!sheet) return;\n var refRule = sheet.getRule(style.extend);\n if (!refRule) return;\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] A rule tries to extend itself \\n\" + rule.toString()) : void 0;\n return;\n }\n\n var parent = refRule.options.parent;\n\n if (parent) {\n var originalStyle = parent.rules.raw[style.extend];\n extend(originalStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend using an array.\n\n\n if (Array.isArray(style.extend)) {\n for (var index = 0; index < style.extend.length; index++) {\n var singleExtend = style.extend[index];\n var singleStyle = typeof singleExtend === 'string' ? _extends({}, style, {\n extend: singleExtend\n }) : style.extend[index];\n extend(singleStyle, rule, sheet, newStyle);\n }\n\n return;\n } // Extend is a style object.\n\n\n for (var prop in style.extend) {\n if (prop === 'extend') {\n extend(style.extend.extend, rule, sheet, newStyle);\n continue;\n }\n\n if (isObject(style.extend[prop])) {\n if (!(prop in newStyle)) newStyle[prop] = {};\n extend(style.extend[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n newStyle[prop] = style.extend[prop];\n }\n}\n\nfunction mergeRest(style, rule, sheet, newStyle) {\n // Copy base style.\n for (var prop in style) {\n if (prop === 'extend') continue;\n\n if (isObject(newStyle[prop]) && isObject(style[prop])) {\n extend(style[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n\n if (isObject(style[prop])) {\n newStyle[prop] = extend(style[prop], rule, sheet);\n continue;\n }\n\n newStyle[prop] = style[prop];\n }\n}\n/**\n * Recursively extend styles.\n */\n\n\nfunction extend(style, rule, sheet, newStyle) {\n if (newStyle === void 0) {\n newStyle = {};\n }\n\n mergeExtend(style, rule, sheet, newStyle);\n mergeRest(style, rule, sheet, newStyle);\n return newStyle;\n}\n/**\n * Handle `extend` property.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssExtend() {\n function onProcessStyle(style, rule, sheet) {\n if ('extend' in style) return extend(style, rule, sheet);\n return style;\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop !== 'extend') return value; // Value is empty, remove properties set previously.\n\n if (value == null || value === false) {\n // $FlowFixMe[prop-missing]\n for (var key in rule[valueNs]) {\n rule.prop(key, null);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = null;\n return null;\n }\n\n if (typeof value === 'object') {\n // $FlowFixMe[invalid-in-rhs] This will be an object\n for (var _key in value) {\n // $FlowFixMe[incompatible-use] This will be an object\n rule.prop(_key, value[_key]);\n } // $FlowFixMe[prop-missing] Flow complains because there is no indexer property in StyleRule\n\n\n rule[valueNs] = value;\n } // Make sure we don't set the value in the core.\n\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssExtend;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n rule = rule;\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1 // $FlowFixMe[prop-missing]\n\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n container.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options) // Flow expects more options but they aren't required\n // And flow doesn't know this will always be a StyleRule which has the addRule method\n // $FlowFixMe[incompatible-use]\n // $FlowFixMe[prop-missing]\n .addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","import warning from 'tiny-warning';\n\n/**\n * Set selector.\n *\n * @param {Object} original rule\n * @param {String} className class string\n * @return {Boolean} flag, indicating function was successfull or not\n */\nfunction registerClass(rule, className) {\n // Skip falsy values\n if (!className) return true; // Support array of class names `{composes: ['foo', 'bar']}`\n\n if (Array.isArray(className)) {\n for (var index = 0; index < className.length; index++) {\n var isSetted = registerClass(rule, className[index]);\n if (!isSetted) return false;\n }\n\n return true;\n } // Support space separated class names `{composes: 'foo bar'}`\n\n\n if (className.indexOf(' ') > -1) {\n return registerClass(rule, className.split(' '));\n }\n\n var _ref = rule.options,\n parent = _ref.parent; // It is a ref to a local rule.\n\n if (className[0] === '$') {\n var refRule = parent.getRule(className.substr(1));\n\n if (!refRule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced rule is not defined. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Cyclic composition detected. \\n\" + rule.toString()) : void 0;\n return false;\n }\n\n parent.classes[rule.key] += \" \" + parent.classes[refRule.key];\n return true;\n }\n\n parent.classes[rule.key] += \" \" + className;\n return true;\n}\n/**\n * Convert compose property to additional class, remove property from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssCompose() {\n function onProcessStyle(style, rule) {\n if (!('composes' in style)) return style;\n registerClass(rule, style.composes); // Remove composes property to prevent infinite loop.\n\n delete style.composes;\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssCompose;\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var _key in obj) {\n newObj[_key] = obj[_key];\n newObj[_key.replace(regExp, replace)] = obj[_key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n }\n } else if (typeof value === 'number') {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","/**\n * A scheme for converting properties from array to regular style.\n * All properties listed below will be transformed to a string separated by space.\n */\nvar propArray = {\n 'background-size': true,\n 'background-position': true,\n border: true,\n 'border-bottom': true,\n 'border-left': true,\n 'border-top': true,\n 'border-right': true,\n 'border-radius': true,\n 'border-image': true,\n 'border-width': true,\n 'border-style': true,\n 'border-color': true,\n 'box-shadow': true,\n flex: true,\n margin: true,\n padding: true,\n outline: true,\n 'transform-origin': true,\n transform: true,\n transition: true\n /**\n * A scheme for converting arrays to regular styles inside of objects.\n * For e.g.: \"{position: [0, 0]}\" => \"background-position: 0 0;\".\n */\n\n};\nvar propArrayInObj = {\n position: true,\n // background-position\n size: true // background-size\n\n /**\n * A scheme for parsing and building correct styles from passed objects.\n */\n\n};\nvar propObj = {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n background: {\n attachment: null,\n color: null,\n image: null,\n position: null,\n repeat: null\n },\n border: {\n width: null,\n style: null,\n color: null\n },\n 'border-top': {\n width: null,\n style: null,\n color: null\n },\n 'border-right': {\n width: null,\n style: null,\n color: null\n },\n 'border-bottom': {\n width: null,\n style: null,\n color: null\n },\n 'border-left': {\n width: null,\n style: null,\n color: null\n },\n outline: {\n width: null,\n style: null,\n color: null\n },\n 'list-style': {\n type: null,\n position: null,\n image: null\n },\n transition: {\n property: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed for avoiding comilation issues with jss-plugin-camel-case\n delay: null\n },\n animation: {\n name: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n delay: null,\n 'iteration-count': null,\n iterationCount: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n direction: null,\n 'fill-mode': null,\n fillMode: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'play-state': null,\n playState: null // Needed to avoid compilation issues with jss-plugin-camel-case\n\n },\n 'box-shadow': {\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n color: null,\n inset: null\n },\n 'text-shadow': {\n x: 0,\n y: 0,\n blur: null,\n color: null\n }\n /**\n * A scheme for converting non-standart properties inside object.\n * For e.g.: include 'border-radius' property inside 'border' object.\n */\n\n};\nvar customPropObj = {\n border: {\n radius: 'border-radius',\n image: 'border-image',\n width: 'border-width',\n style: 'border-style',\n color: 'border-color'\n },\n 'border-bottom': {\n width: 'border-bottom-width',\n style: 'border-bottom-style',\n color: 'border-bottom-color'\n },\n 'border-top': {\n width: 'border-top-width',\n style: 'border-top-style',\n color: 'border-top-color'\n },\n 'border-left': {\n width: 'border-left-width',\n style: 'border-left-style',\n color: 'border-left-color'\n },\n 'border-right': {\n width: 'border-right-width',\n style: 'border-right-style',\n color: 'border-right-color'\n },\n background: {\n size: 'background-size',\n image: 'background-image'\n },\n font: {\n style: 'font-style',\n variant: 'font-variant',\n weight: 'font-weight',\n stretch: 'font-stretch',\n size: 'font-size',\n family: 'font-family',\n lineHeight: 'line-height',\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'line-height': 'line-height'\n },\n flex: {\n grow: 'flex-grow',\n basis: 'flex-basis',\n direction: 'flex-direction',\n wrap: 'flex-wrap',\n flow: 'flex-flow',\n shrink: 'flex-shrink'\n },\n align: {\n self: 'align-self',\n items: 'align-items',\n content: 'align-content'\n },\n grid: {\n 'template-columns': 'grid-template-columns',\n templateColumns: 'grid-template-columns',\n 'template-rows': 'grid-template-rows',\n templateRows: 'grid-template-rows',\n 'template-areas': 'grid-template-areas',\n templateAreas: 'grid-template-areas',\n template: 'grid-template',\n 'auto-columns': 'grid-auto-columns',\n autoColumns: 'grid-auto-columns',\n 'auto-rows': 'grid-auto-rows',\n autoRows: 'grid-auto-rows',\n 'auto-flow': 'grid-auto-flow',\n autoFlow: 'grid-auto-flow',\n row: 'grid-row',\n column: 'grid-column',\n 'row-start': 'grid-row-start',\n rowStart: 'grid-row-start',\n 'row-end': 'grid-row-end',\n rowEnd: 'grid-row-end',\n 'column-start': 'grid-column-start',\n columnStart: 'grid-column-start',\n 'column-end': 'grid-column-end',\n columnEnd: 'grid-column-end',\n area: 'grid-area',\n gap: 'grid-gap',\n 'row-gap': 'grid-row-gap',\n rowGap: 'grid-row-gap',\n 'column-gap': 'grid-column-gap',\n columnGap: 'grid-column-gap'\n }\n};\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Map values by given prop.\n *\n * @param {Array} array of values\n * @param {String} original property\n * @param {String} original rule\n * @return {String} mapped values\n */\nfunction mapValuesByProp(value, prop, rule) {\n return value.map(function (item) {\n return objectToArray(item, prop, rule, false, true);\n });\n}\n/**\n * Convert array to nested array, if needed\n */\n\n\nfunction processArray(value, prop, scheme, rule) {\n if (scheme[prop] == null) return value;\n if (value.length === 0) return [];\n if (Array.isArray(value[0])) return processArray(value[0], prop, scheme, rule);\n\n if (typeof value[0] === 'object') {\n return mapValuesByProp(value, prop, rule);\n }\n\n return [value];\n}\n/**\n * Convert object to array.\n */\n\n\nfunction objectToArray(value, prop, rule, isFallback, isInArray) {\n if (!(propObj[prop] || customPropObj[prop])) return [];\n var result = []; // Check if exists any non-standard property\n\n if (customPropObj[prop]) {\n // eslint-disable-next-line no-param-reassign\n value = customPropsToStyle(value, rule, customPropObj[prop], isFallback);\n } // Pass throught all standart props\n\n\n if (Object.keys(value).length) {\n for (var baseProp in propObj[prop]) {\n if (value[baseProp]) {\n if (Array.isArray(value[baseProp])) {\n result.push(propArrayInObj[baseProp] === null ? value[baseProp] : value[baseProp].join(' '));\n } else result.push(value[baseProp]);\n\n continue;\n } // Add default value from props config.\n\n\n if (propObj[prop][baseProp] != null) {\n result.push(propObj[prop][baseProp]);\n }\n }\n }\n\n if (!result.length || isInArray) return result;\n return [result];\n}\n/**\n * Convert custom properties values to styles adding them to rule directly\n */\n\n\nfunction customPropsToStyle(value, rule, customProps, isFallback) {\n for (var prop in customProps) {\n var propName = customProps[prop]; // If current property doesn't exist already in rule - add new one\n\n if (typeof value[prop] !== 'undefined' && (isFallback || !rule.prop(propName))) {\n var _styleDetector;\n\n var appendedValue = styleDetector((_styleDetector = {}, _styleDetector[propName] = value[prop], _styleDetector), rule)[propName]; // Add style directly in rule\n\n if (isFallback) rule.style.fallbacks[propName] = appendedValue;else rule.style[propName] = appendedValue;\n } // Delete converted property to avoid double converting\n\n\n delete value[prop];\n }\n\n return value;\n}\n/**\n * Detect if a style needs to be converted.\n */\n\n\nfunction styleDetector(style, rule, isFallback) {\n for (var prop in style) {\n var value = style[prop];\n\n if (Array.isArray(value)) {\n // Check double arrays to avoid recursion.\n if (!Array.isArray(value[0])) {\n if (prop === 'fallbacks') {\n for (var index = 0; index < style.fallbacks.length; index++) {\n style.fallbacks[index] = styleDetector(style.fallbacks[index], rule, true);\n }\n\n continue;\n }\n\n style[prop] = processArray(value, prop, propArray, rule); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n style.fallbacks = styleDetector(style.fallbacks, rule, true);\n continue;\n }\n\n style[prop] = objectToArray(value, prop, rule, isFallback); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n } // Maybe a computed value resulting in an empty string\n else if (style[prop] === '') delete style[prop];\n }\n\n return style;\n}\n/**\n * Adds possibility to write expanded styles.\n */\n\n\nfunction jssExpand() {\n function onProcessStyle(style, rule) {\n if (!style || rule.type !== 'style') return style;\n\n if (Array.isArray(style)) {\n // Pass rules one by one and reformat them\n for (var index = 0; index < style.length; index++) {\n style[index] = styleDetector(style[index], rule);\n }\n\n return style;\n }\n\n return styleDetector(style, rule);\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssExpand;\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @api public\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import { create } from 'jss';\nimport preset from 'jss-preset-default';\n\n// I have been trying to benchmark and I have seen a slow down after about 10k rules.\n// Since we are in a single sheet mode, user shouldn't care about this.\nvar MAX_RULES_PER_SHEET = 10000;\nvar defaultJss = create(preset());\n\nvar createCss = function createCss(jss) {\n if (jss === void 0) {\n jss = defaultJss;\n }\n\n var cache = new Map();\n var ruleIndex = 0;\n var sheet;\n\n var getSheet = function getSheet() {\n if (!sheet || sheet.rules.index.length > MAX_RULES_PER_SHEET) {\n sheet = jss.createStyleSheet().attach();\n }\n\n return sheet;\n };\n\n function css() {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments; // We can avoid the need for stringification with a babel plugin,\n // which could generate a hash at build time and add it to the object.\n\n var argsStr = JSON.stringify(args);\n var cached = cache.get(argsStr);\n if (cached) return cached.className;\n var flatArgs = []; // Flatten arguments which can be\n // - style objects\n // - array of style objects\n // - arrays of style objects\n\n for (var argIndex in args) {\n var arg = args[argIndex];\n\n if (!Array.isArray(arg)) {\n flatArgs.push(arg);\n continue;\n }\n\n for (var innerArgIndex = 0; innerArgIndex < arg.length; innerArgIndex++) {\n flatArgs.push(arg[innerArgIndex]);\n }\n }\n\n var mergedStyle = {};\n var labels = [];\n\n for (var i = 0; i < flatArgs.length; i++) {\n var style = flatArgs[i];\n if (!style) continue;\n var styleObject = style; // It can be a class name that css() has previously generated.\n\n if (typeof style === 'string') {\n // eslint-disable-next-line no-shadow\n var _cached = cache.get(style);\n\n if (_cached) {\n // eslint-disable-next-line prefer-spread\n if (_cached.labels.length) labels.push.apply(labels, _cached.labels);\n styleObject = _cached.style;\n }\n }\n\n if (styleObject.label && labels.indexOf(styleObject.label) === -1) labels.push(styleObject.label);\n Object.assign(mergedStyle, styleObject);\n }\n\n delete mergedStyle.label;\n var label = labels.length === 0 ? 'css' : labels.join('-');\n var key = label + \"-\" + ruleIndex++;\n getSheet().addRule(key, mergedStyle);\n var className = getSheet().classes[key];\n var cacheValue = {\n style: mergedStyle,\n labels: labels,\n className: className\n };\n cache.set(argsStr, cacheValue);\n cache.set(className, cacheValue);\n return className;\n } // For testing only.\n\n\n css.getSheet = getSheet;\n return css;\n};\n\nvar css = createCss();\n\nexport default css;\nexport { createCss as create };\n","import functions from 'jss-plugin-rule-value-function';\nimport observable from 'jss-plugin-rule-value-observable';\nimport template from 'jss-plugin-template';\nimport global from 'jss-plugin-global';\nimport extend from 'jss-plugin-extend';\nimport nested from 'jss-plugin-nested';\nimport compose from 'jss-plugin-compose';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport expand from 'jss-plugin-expand';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort';\n\nvar create = function create(options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n plugins: [functions(), observable(options.observable), template(), global(), extend(), nested(), compose(), camelCase(), defaultUnit(options.defaultUnit), expand(), vendorPrefixer(), propsSort()]\n };\n};\n\nexport default create;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport { createContext, forwardRef, createElement as createElement$1, Component, useRef, useContext, useMemo, useDebugValue, useEffect, useLayoutEffect } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { ThemeContext } from 'theming';\nexport { ThemeProvider, createTheming, useTheme, withTheme } from 'theming';\nimport warning from 'tiny-warning';\nimport defaultJss, { SheetsManager, create as create$1, getDynamicStyles, createGenerateId, SheetsRegistry } from 'jss';\nexport { SheetsRegistry, createGenerateId } from 'jss';\nimport preset from 'jss-preset-default';\nimport isInBrowser from 'is-in-browser';\nimport PropTypes from 'prop-types';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport isPropValid from '@emotion/is-prop-valid';\nimport defaultCss from 'css-jss';\n\n// eslint-disable-next-line no-unused-vars\nvar getDisplayName = function getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n};\n\nvar memoize = function memoize(fn) {\n var lastArgs;\n var lastResult;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (Array.isArray(lastArgs) && args.length === lastArgs.length) {\n var isSame = true;\n\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== lastArgs[i]) {\n isSame = false;\n }\n }\n\n if (isSame) {\n return lastResult;\n }\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};\n\nvar mergeClasses = function mergeClasses(baseClasses, additionalClasses) {\n var combinedClasses = _extends({}, baseClasses);\n\n for (var name in additionalClasses) {\n combinedClasses[name] = name in combinedClasses ? combinedClasses[name] + \" \" + additionalClasses[name] : additionalClasses[name];\n }\n\n return combinedClasses;\n};\n\nvar JssContext = createContext({\n classNamePrefix: '',\n disableStylesGeneration: false\n});\n\n/**\n * Global index counter to preserve source order.\n * As we create the style sheet during componentWillMount lifecycle,\n * children are handled after the parents, so the order of style elements would\n * be parent->child. It is a problem though when a parent passes a className\n * which needs to override any childs styles. StyleSheet of the child has a higher\n * specificity, because of the source order.\n * So our solution is to render sheets them in the reverse order child->sheet, so\n * that parent has a higher specificity.\n *\n * We start at [Number.MIN_SAFE_INTEGER] to always insert sheets from react-jss first before any\n * sheet which might be inserted manually by the user.\n */\nvar index = Number.MIN_SAFE_INTEGER || -1e9;\n\nvar getSheetIndex = function getSheetIndex() {\n return index++;\n};\n\nvar defaultManagers = new Map();\nvar getManager = function getManager(context, managerId) {\n // If `managers` map is present in the context, we use it in order to\n // let JssProvider reset them when new response has to render server-side.\n if (context.managers) {\n if (!context.managers[managerId]) {\n context.managers[managerId] = new SheetsManager();\n }\n\n return context.managers[managerId];\n }\n\n var manager = defaultManagers.get(managerId);\n\n if (!manager) {\n manager = new SheetsManager();\n defaultManagers.set(managerId, manager);\n }\n\n return manager;\n};\nvar manageSheet = function manageSheet(options) {\n var sheet = options.sheet,\n context = options.context,\n index = options.index,\n theme = options.theme;\n\n if (!sheet) {\n return;\n }\n\n var manager = getManager(context, index);\n manager.manage(theme);\n\n if (context.registry) {\n context.registry.add(sheet);\n }\n};\nvar unmanageSheet = function unmanageSheet(options) {\n if (!options.sheet) {\n return;\n }\n\n var manager = getManager(options.context, options.index);\n manager.unmanage(options.theme);\n};\n\nvar jss = create$1(preset());\n\nvar sheetsMeta = new WeakMap();\nvar getMeta = function getMeta(sheet) {\n return sheetsMeta.get(sheet);\n};\nvar addMeta = function addMeta(sheet, meta) {\n sheetsMeta.set(sheet, meta);\n};\n\n// eslint-disable-next-line no-unused-vars\nvar getStyles = function getStyles(options) {\n var styles = options.styles;\n\n if (typeof styles !== 'function') {\n return styles;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(styles.length !== 0, \"[JSS] <\" + (options.name || 'Hook') + \" />'s styles function doesn't rely on the \\\"theme\\\" argument. We recommend declaring styles as an object instead.\") : void 0;\n return styles(options.theme);\n};\n\nfunction getSheetOptions(options, link) {\n var minify;\n\n if (options.context.id && options.context.id.minify != null) {\n minify = options.context.id.minify;\n }\n\n var classNamePrefix = options.context.classNamePrefix || '';\n\n if (options.name && !minify) {\n classNamePrefix += options.name.replace(/\\s/g, '-') + \"-\";\n }\n\n var meta = '';\n if (options.name) meta = options.name + \", \";\n meta += typeof options.styles === 'function' ? 'Themed' : 'Unthemed';\n return _extends({}, options.sheetOptions, {\n index: options.index,\n meta: meta,\n classNamePrefix: classNamePrefix,\n link: link,\n generateId: options.sheetOptions.generateId || options.context.generateId\n });\n}\n\n// eslint-disable-next-line no-unused-vars\nvar createStyleSheet = function createStyleSheet(options) {\n if (options.context.disableStylesGeneration) {\n return undefined;\n }\n\n var manager = getManager(options.context, options.index);\n var existingSheet = manager.get(options.theme);\n\n if (existingSheet) {\n return existingSheet;\n }\n\n var jss$1 = options.context.jss || jss;\n var styles = getStyles(options);\n var dynamicStyles = getDynamicStyles(styles);\n var sheet = jss$1.createStyleSheet(styles, getSheetOptions(options, dynamicStyles !== null));\n addMeta(sheet, {\n dynamicStyles: dynamicStyles,\n styles: styles\n });\n manager.add(options.theme, sheet);\n return sheet;\n};\nvar removeDynamicRules = function removeDynamicRules(sheet, rules) {\n // Loop over each dynamic rule and remove the dynamic rule\n // We can't just remove the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.deleteRule(rules[key]);\n }\n};\nvar updateDynamicRules = function updateDynamicRules(data, sheet, rules) {\n // Loop over each dynamic rule and update it\n // We can't just update the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.updateOne(rules[key], data);\n }\n};\nvar addDynamicRules = function addDynamicRules(sheet, data) {\n var meta = getMeta(sheet);\n\n if (!meta) {\n return undefined;\n }\n\n var rules = {}; // Loop over each dynamic rule and add it to the stylesheet\n\n for (var key in meta.dynamicStyles) {\n var initialRuleCount = sheet.rules.index.length;\n var originalRule = sheet.addRule(key, meta.dynamicStyles[key]); // Loop through all created rules, fixes updating dynamic rules\n\n for (var i = initialRuleCount; i < sheet.rules.index.length; i++) {\n var rule = sheet.rules.index[i];\n sheet.updateOne(rule, data); // If it's the original rule, we need to add it by the correct key so the hook and hoc\n // can correctly concat the dynamic class with the static one\n\n rules[originalRule === rule ? key : rule.key] = rule;\n }\n }\n\n return rules;\n};\n\nvar getSheetClasses = function getSheetClasses(sheet, dynamicRules) {\n if (!dynamicRules) {\n return sheet.classes;\n }\n\n var classes = {};\n var meta = getMeta(sheet);\n\n if (!meta) {\n return sheet.classes;\n }\n\n for (var key in meta.styles) {\n classes[key] = sheet.classes[key];\n\n if (key in dynamicRules) {\n classes[key] += \" \" + sheet.classes[dynamicRules[key].key];\n }\n }\n\n return classes;\n};\n\nvar NoRenderer = function NoRenderer(props) {\n return props.children || null;\n};\n\nvar noTheme = {};\n\n/**\n * HOC creator function that wrapps the user component.\n *\n * `withStyles(styles, [options])(Component)`\n */\nvar createWithStyles = function createWithStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n injectTheme = _options.injectTheme,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"injectTheme\"]);\n\n var isThemingEnabled = typeof styles === 'function';\n var ThemeConsumer = theming && theming.context.Consumer || ThemeContext.Consumer;\n return function (InnerComponent) {\n if (InnerComponent === void 0) {\n InnerComponent = NoRenderer;\n }\n\n var displayName = getDisplayName(InnerComponent);\n\n var getTheme = function getTheme(props) {\n return isThemingEnabled ? props.theme : noTheme;\n };\n\n var WithStyles =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(WithStyles, _React$Component);\n\n // $FlowFixMe[prop-missing]\n WithStyles.createState = function createState(props) {\n var sheet = createStyleSheet({\n styles: styles,\n theme: getTheme(props),\n index: index,\n name: displayName,\n context: props.jssContext,\n sheetOptions: sheetOptions\n });\n\n if (!sheet) {\n return {\n classes: {},\n dynamicRules: undefined,\n sheet: undefined\n };\n }\n\n var dynamicRules = addDynamicRules(sheet, props);\n return {\n sheet: sheet,\n dynamicRules: dynamicRules,\n classes: getSheetClasses(sheet, dynamicRules)\n };\n };\n\n WithStyles.manage = function manage(props, state) {\n var sheet = state.sheet;\n\n if (sheet) {\n manageSheet({\n sheet: sheet,\n index: index,\n context: props.jssContext,\n theme: getTheme(props)\n });\n }\n };\n\n WithStyles.unmanage = function unmanage(props, state) {\n var sheet = state.sheet,\n dynamicRules = state.dynamicRules;\n\n if (sheet) {\n unmanageSheet({\n context: props.jssContext,\n index: index,\n sheet: sheet,\n theme: getTheme(props)\n });\n\n if (dynamicRules) {\n removeDynamicRules(sheet, dynamicRules);\n }\n }\n };\n\n function WithStyles(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.mergeClassesProp = memoize(function (sheetClasses, classesProp) {\n return classesProp ? mergeClasses(sheetClasses, classesProp) : sheetClasses;\n });\n _this.state = WithStyles.createState(props);\n var registry = props.jssContext.registry;\n var sheet = _this.state.sheet;\n\n if (sheet && registry) {\n registry.add(sheet);\n }\n\n return _this;\n }\n\n var _proto = WithStyles.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var props = this.props,\n state = this.state;\n\n if (props && state) {\n WithStyles.manage(props, state);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (isThemingEnabled && this.props.theme !== prevProps.theme) {\n var newState = WithStyles.createState(this.props);\n WithStyles.manage(this.props, newState);\n WithStyles.unmanage(prevProps, prevState); // eslint-disable-next-line react/no-did-update-set-state\n\n this.setState(newState);\n } else if (this.state.sheet && this.state.dynamicRules) {\n // Only update the rules when we don't generate a new sheet\n updateDynamicRules(this.props, this.state.sheet, this.state.dynamicRules);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n WithStyles.unmanage(this.props, this.state);\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n jssContext = _this$props.jssContext,\n theme = _this$props.theme,\n classes = _this$props.classes,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"jssContext\", \"theme\", \"classes\"]);\n\n var sheetClasses = this.state.classes;\n\n var props = _extends({}, rest, {\n classes: this.mergeClassesProp(sheetClasses, classes)\n });\n\n if (innerRef) props.ref = innerRef;\n if (injectTheme) props.theme = theme;\n return createElement$1(InnerComponent, props);\n };\n\n return WithStyles;\n }(Component);\n\n WithStyles.displayName = \"WithStyles(\" + displayName + \")\";\n WithStyles.defaultProps = _extends({}, InnerComponent.defaultProps);\n var JssContextSubscriber = forwardRef(function (props, ref) {\n return createElement$1(JssContext.Consumer, null, function (context) {\n if (isThemingEnabled || injectTheme) {\n return createElement$1(ThemeConsumer, null, function (theme) {\n return createElement$1(WithStyles, _extends({\n innerRef: ref,\n theme: theme\n }, props, {\n jssContext: context\n }));\n });\n }\n\n return createElement$1(WithStyles, _extends({\n innerRef: ref\n }, props, {\n jssContext: context,\n theme: noTheme\n }));\n });\n });\n JssContextSubscriber.displayName = \"JssContextSubscriber(\" + displayName + \")\"; // $FlowFixMe[prop-missing] - React's types should allow custom static properties on component.\n\n JssContextSubscriber.InnerComponent = InnerComponent;\n return hoistNonReactStatics(JssContextSubscriber, InnerComponent);\n };\n};\n\nvar useEffectOrLayoutEffect = isInBrowser ? useLayoutEffect : useEffect;\nvar noTheme$1 = {};\n\nvar createUseStyles = function createUseStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n name = _options.name,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"name\"]);\n\n var ThemeContext$1 = theming && theming.context || ThemeContext;\n var useTheme = typeof styles === 'function' ? // $FlowFixMe[incompatible-return]\n function () {\n return useContext(ThemeContext$1) || noTheme$1;\n } : // $FlowFixMe[incompatible-return]\n function () {\n return noTheme$1;\n };\n return function useStyles(data) {\n var isFirstMount = useRef(true);\n var context = useContext(JssContext);\n var theme = useTheme();\n\n var _React$useMemo = useMemo(function () {\n var newSheet = createStyleSheet({\n context: context,\n styles: styles,\n name: name,\n theme: theme,\n index: index,\n sheetOptions: sheetOptions\n });\n var newDynamicRules = newSheet ? addDynamicRules(newSheet, data) : null;\n\n if (newSheet) {\n manageSheet({\n index: index,\n context: context,\n sheet: newSheet,\n theme: theme\n });\n }\n\n return [newSheet, newDynamicRules];\n }, [context, theme]),\n sheet = _React$useMemo[0],\n dynamicRules = _React$useMemo[1];\n\n useEffectOrLayoutEffect(function () {\n // We only need to update the rules on a subsequent update and not in the first mount\n if (sheet && dynamicRules && !isFirstMount.current) {\n updateDynamicRules(data, sheet, dynamicRules);\n }\n }, [data]);\n useEffectOrLayoutEffect(function () {\n return (// cleanup only\n function () {\n if (sheet) {\n unmanageSheet({\n index: index,\n context: context,\n sheet: sheet,\n theme: theme\n });\n }\n\n if (sheet && dynamicRules) {\n removeDynamicRules(sheet, dynamicRules);\n }\n }\n );\n }, [sheet]);\n var classes = sheet && dynamicRules ? getSheetClasses(sheet, dynamicRules) : {};\n useDebugValue(classes);\n useDebugValue(theme === noTheme$1 ? 'No theme' : theme);\n useEffect(function () {\n isFirstMount.current = false;\n });\n return classes;\n };\n};\n\nvar initialContext = {};\n\nvar JssProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(JssProvider, _React$Component);\n\n function JssProvider() {\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.managers = {};\n\n _this.createContext = function (parentContext, prevContext) {\n if (prevContext === void 0) {\n prevContext = initialContext;\n }\n\n var _this$props = _this.props,\n registry = _this$props.registry,\n classNamePrefix = _this$props.classNamePrefix,\n jss = _this$props.jss,\n generateId = _this$props.generateId,\n disableStylesGeneration = _this$props.disableStylesGeneration,\n media = _this$props.media,\n id = _this$props.id;\n\n var context = _extends({}, parentContext);\n\n if (registry) {\n context.registry = registry; // This way we identify a new request on the server, because user will create\n // a new Registry instance for each.\n\n if (registry !== _this.registry) {\n // We reset managers because we have to regenerate all sheets for the new request.\n _this.managers = {};\n _this.registry = registry;\n }\n }\n\n context.managers = _this.managers;\n\n if (id !== undefined) {\n context.id = id;\n }\n\n if (generateId !== undefined) {\n context.generateId = generateId;\n } else if (!context.generateId || !prevContext || context.id !== prevContext.id) {\n context.generateId = createGenerateId(context.id);\n }\n\n if (classNamePrefix) {\n context.classNamePrefix = (context.classNamePrefix || '') + classNamePrefix;\n }\n\n if (media !== undefined) {\n context.media = media;\n }\n\n if (jss) {\n context.jss = jss;\n }\n\n if (disableStylesGeneration !== undefined) {\n context.disableStylesGeneration = disableStylesGeneration;\n }\n\n if (prevContext && shallowEqualObjects(prevContext, context)) {\n return prevContext;\n }\n\n return context;\n };\n\n _this.prevContext = void 0;\n _this.generateId = void 0;\n _this.registry = void 0;\n\n _this.renderProvider = function (parentContext) {\n var children = _this.props.children;\n\n var context = _this.createContext(parentContext, _this.prevContext);\n\n _this.prevContext = context;\n return createElement$1(JssContext.Provider, {\n value: context\n }, children);\n };\n\n return _this;\n }\n\n var _proto = JssProvider.prototype;\n\n _proto.render = function render() {\n return createElement$1(JssContext.Consumer, null, this.renderProvider);\n };\n\n return JssProvider;\n}(Component);\n\nJssProvider.propTypes = {\n registry: PropTypes.instanceOf(SheetsRegistry),\n jss: PropTypes.instanceOf(defaultJss.constructor),\n generateId: PropTypes.func,\n classNamePrefix: PropTypes.string,\n disableStylesGeneration: PropTypes.bool,\n children: PropTypes.node.isRequired,\n media: PropTypes.string,\n id: PropTypes.shape({\n minify: PropTypes.bool\n })\n};\n\n// eslint-disable-next-line no-unused-vars\nvar parseStyles = function parseStyles(args) {\n var dynamicStyles = [];\n var staticStyle;\n var labels = []; // Not using ...rest to optimize perf.\n\n for (var key in args) {\n var style = args[key];\n if (!style) continue;\n\n if (typeof style === 'function') {\n dynamicStyles.push(style);\n } else {\n if (!staticStyle) staticStyle = {};\n Object.assign(staticStyle, style);\n\n if (staticStyle.label) {\n if (labels.indexOf(staticStyle.label) === -1) labels.push(staticStyle.label);\n }\n }\n }\n\n var styles = {};\n var label = labels.length === 0 ? 'sc' : labels.join('-');\n\n if (staticStyle) {\n // Label should not leak to the core.\n if ('label' in staticStyle) delete staticStyle.label;\n styles[label] = staticStyle;\n } // When there is only one function rule, we don't need to wrap it.\n\n\n if (dynamicStyles.length === 1) {\n styles['scd'] = dynamicStyles[0];\n } // We create a new function rule which will call all other function rules\n // and merge the styles they return.\n\n\n if (dynamicStyles.length > 1) {\n styles['scd'] = function (props) {\n var merged = {};\n\n for (var i = 0; i < dynamicStyles.length; i++) {\n var dynamicStyle = dynamicStyles[i](props);\n if (dynamicStyle) Object.assign(merged, dynamicStyle);\n }\n\n return merged;\n };\n }\n\n return {\n styles: styles,\n label: label\n };\n};\n\nvar shouldForwardPropSymbol = Symbol('react-jss-styled');\n\nvar getShouldForwardProp = function getShouldForwardProp(tagOrComponent, options) {\n var shouldForwardProp = options.shouldForwardProp; // $FlowFixMe[invalid-computed-prop]\n // $FlowFixMe[incompatible-type]\n\n var childShouldForwardProp = tagOrComponent[shouldForwardPropSymbol];\n var finalShouldForwardProp = shouldForwardProp || childShouldForwardProp;\n\n if (shouldForwardProp && childShouldForwardProp) {\n finalShouldForwardProp = function finalShouldForwardProp(prop) {\n return childShouldForwardProp(prop) && shouldForwardProp(prop);\n };\n }\n\n return finalShouldForwardProp;\n};\n\nvar getChildProps = function getChildProps(props, shouldForwardProp, isTag) {\n var childProps = {};\n\n for (var prop in props) {\n if (shouldForwardProp) {\n if (shouldForwardProp(prop) === true) {\n childProps[prop] = props[prop];\n }\n\n continue;\n } // We don't want to pass non-dom props to the DOM.\n\n\n if (isTag) {\n if (isPropValid(prop)) {\n childProps[prop] = props[prop];\n }\n\n continue;\n }\n\n childProps[prop] = props[prop];\n }\n\n return childProps;\n};\n\n// eslint-disable-next-line no-unused-vars\nvar configureStyled = function configureStyled(tagOrComponent, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n theming = _options.theming;\n var isTag = typeof tagOrComponent === 'string';\n var ThemeContext$1 = theming ? theming.context : ThemeContext;\n var shouldForwardProp = getShouldForwardProp(tagOrComponent, options);\n\n var _options2 = options,\n _ = _options2.shouldForwardProp,\n hookOptions = _objectWithoutPropertiesLoose(_options2, [\"shouldForwardProp\"]);\n\n return function createStyledComponent() {\n // eslint-disable-next-line prefer-rest-params\n var _parseStyles = parseStyles(arguments),\n styles = _parseStyles.styles,\n label = _parseStyles.label;\n\n var useStyles = createUseStyles(styles, hookOptions);\n\n var Styled = function Styled(props) {\n var as = props.as,\n className = props.className;\n var theme = useContext(ThemeContext$1);\n var propsWithTheme = Object.assign({\n theme: theme\n }, props);\n var classes = useStyles(propsWithTheme);\n var childProps = getChildProps(props, shouldForwardProp, isTag);\n var classNames = ((classes[label] || classes.sc || '') + \" \" + (classes.scd || '')).trim();\n childProps.className = className ? className + \" \" + classNames : classNames;\n\n if (!isTag && shouldForwardProp) {\n // $FlowFixMe[invalid-computed-prop] we are not supposed to attach random properties to component functions.\n // $FlowFixMe[incompatible-use]\n tagOrComponent[shouldForwardPropSymbol] = shouldForwardProp;\n }\n\n if (isTag && as) {\n return createElement$1(as, childProps);\n }\n\n return createElement$1(tagOrComponent, childProps);\n };\n\n return Styled;\n };\n};\n\n/* eslint-disable prefer-rest-params, prefer-spread */\nvar create = function create(css) {\n if (css === void 0) {\n css = defaultCss;\n }\n\n return function createElement(type, props\n /* :: , ..._args: any */\n ) {\n var args = arguments;\n\n if (props && props.css) {\n var className = css(props.css);\n var newProps = Object.assign({}, props);\n newProps.className = props.className ? props.className + \" \" + className : className;\n delete newProps.css;\n args[1] = newProps;\n } // $FlowFixMe[missing-arg]\n\n\n return createElement$1.apply(undefined, args);\n };\n};\nvar createElement = create();\n\nexport default createWithStyles;\nexport { JssContext, JssProvider, create as createJsx, createUseStyles, jss, createElement as jsx, configureStyled as styled, createWithStyles as withStyles };\n","function shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport { shallowEqualArrays, shallowEqualObjects };\n","import { AssetMedia, AssetImageMedia, AssetVideoMedia, AssetMediaType } from '@packages/models/api';\n\nexport interface AssetMediaViewModel {\n assetId: string;\n uri: string;\n iconName?: string;\n rawSize?: {\n height: number;\n width: number;\n };\n type?: string;\n name?: string;\n id?: string;\n}\n\nexport type AssetMediaUrlsByType = {\n [imgType in AssetMediaType]: AssetMediaViewModel;\n};\n\nconst isVideo = <(media: AssetMedia) => media is AssetVideoMedia>((media) => !!(media as AssetVideoMedia).assetVideoId);\nconst isPhoto = <(media: AssetMedia) => media is AssetImageMedia>((media) => !!(media as AssetImageMedia).assetImageId);\n\nexport const getAssetMediaUrlsByType = (allMedia: AssetMedia[], assetId: string, assetName?: string) => {\n // reduces media array to map of\n // AssetMediaType => { uri, size }\n return allMedia.reduce((imgTypes, assetMedia) => {\n if (isVideo(assetMedia)) {\n imgTypes[assetMedia.assetVideoTypeId] = {\n assetId,\n uri: assetMedia.url,\n rawSize: {\n height: assetMedia.height,\n width: assetMedia.width,\n },\n type: assetMedia.contentType,\n name: assetName || assetMedia.assetVideoId,\n id: assetMedia.assetVideoId,\n };\n } else if (isPhoto(assetMedia)) {\n imgTypes[assetMedia.assetImageTypeId] = {\n assetId,\n uri: assetMedia.url,\n rawSize: {\n height: assetMedia.height,\n width: assetMedia.width,\n },\n type: assetMedia.contentType,\n name: assetName || assetMedia.assetImageId,\n id: assetMedia.assetImageId,\n };\n } else {\n imgTypes[AssetMediaType.File] = {\n assetId,\n uri: assetMedia.url,\n iconName: assetMedia.contentType.startsWith('audio')\n ? 'headset'\n : assetMedia.contentType.startsWith('video')\n ? 'videocam'\n : assetMedia.contentType.startsWith('image')\n ? 'image'\n : 'file',\n type: assetMedia.contentType,\n name: assetName || assetMedia.assetFileId,\n id: assetMedia.assetFileId,\n };\n }\n\n return imgTypes;\n }, {} as AssetMediaUrlsByType);\n};\n\nexport function getMediaUrl(media: ReturnType) {\n return media.ORIGINAL_OVERLAID\n ? media.ORIGINAL_OVERLAID.uri\n : media.ORIGINAL\n ? media.ORIGINAL.uri\n : media.FILE\n ? media.FILE.uri\n : '';\n}\n","export function displayNotificationCount(count?: number): string {\n if (count === undefined) {\n return '';\n }\n\n return count > 99 ? '99+' : count.toString();\n}\n","import { Account } from '@packages/models/api';\n\nexport function noop() {}\n\nexport function getAccountInitials(account: Account) {\n return `${account.firstName[0]}${account.lastName[0]}`;\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\n\nvar _compiler = require(\"./compiler\");\n\nvar _dom = require(\"./dom\");\n\nvar _transformLocalizeStyle = require(\"styleq/transform-localize-style\");\n\nvar _preprocess = require(\"./preprocess\");\n\nvar _styleq = require(\"styleq\");\n\nvar _validate = require(\"./validate\");\n\nvar _canUseDom = _interopRequireDefault(require(\"../../modules/canUseDom\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar staticStyleMap = new WeakMap();\nvar sheet = (0, _dom.createSheet)();\n\nfunction customStyleq(styles, isRTL) {\n return _styleq.styleq.factory({\n transform(style) {\n var compiledStyle = staticStyleMap.get(style);\n\n if (compiledStyle != null) {\n return (0, _transformLocalizeStyle.localizeStyle)(compiledStyle, isRTL);\n }\n\n return style;\n }\n\n })(styles);\n}\n\nfunction insertRules(compiledOrderedRules) {\n compiledOrderedRules.forEach(_ref => {\n var rules = _ref[0],\n order = _ref[1];\n\n if (sheet != null) {\n rules.forEach(rule => {\n sheet.insert(rule, order);\n });\n }\n });\n}\n\nfunction compileAndInsertAtomic(style) {\n var _atomic = (0, _compiler.atomic)((0, _preprocess.preprocess)(style)),\n compiledStyle = _atomic[0],\n compiledOrderedRules = _atomic[1];\n\n insertRules(compiledOrderedRules);\n return compiledStyle;\n}\n\nfunction compileAndInsertReset(style, key) {\n var _classic = (0, _compiler.classic)(style, key),\n compiledStyle = _classic[0],\n compiledOrderedRules = _classic[1];\n\n insertRules(compiledOrderedRules);\n return compiledStyle;\n}\n/* ----- API ----- */\n\n\nvar absoluteFillObject = {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n};\nvar absoluteFill = create({\n x: (0, _objectSpread2.default)({}, absoluteFillObject)\n}).x;\n/**\n * create\n */\n\nfunction create(styles) {\n Object.keys(styles).forEach(key => {\n var styleObj = styles[key]; // Only compile at runtime if the style is not already compiled\n\n if (styleObj != null && styleObj.$$css !== true) {\n var compiledStyles;\n\n if (key.indexOf('$raw') > -1) {\n compiledStyles = compileAndInsertReset(styleObj, key.split('$raw')[0]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n (0, _validate.validate)(styleObj);\n styles[key] = Object.freeze(styleObj);\n }\n\n compiledStyles = compileAndInsertAtomic(styleObj);\n }\n\n staticStyleMap.set(styleObj, compiledStyles);\n }\n });\n return styles;\n}\n/**\n * compose\n */\n\n\nfunction compose(style1, style2) {\n if (process.env.NODE_ENV !== 'production') {\n /* eslint-disable prefer-rest-params */\n var len = arguments.length;\n\n if (len > 2) {\n var readableStyles = [...arguments].map(a => flatten(a));\n throw new Error(\"StyleSheet.compose() only accepts 2 arguments, received \" + len + \": \" + JSON.stringify(readableStyles));\n }\n /* eslint-enable prefer-rest-params */\n\n }\n\n if (style1 && style2) {\n return [style1, style2];\n } else {\n return style1 || style2;\n }\n}\n/**\n * flatten\n */\n\n\nfunction flatten() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var flatArray = styles.flat(Infinity);\n var result = {};\n\n for (var i = 0; i < flatArray.length; i++) {\n var style = flatArray[i];\n\n if (style != null && typeof style === 'object') {\n // $FlowFixMe\n Object.assign(result, style);\n }\n }\n\n return result;\n}\n/**\n * getSheet\n */\n\n\nfunction getSheet() {\n return {\n id: sheet.id,\n textContent: sheet.getTextContent()\n };\n}\n/**\n * resolve\n */\n\n\nfunction StyleSheet(styles, options) {\n var isRTL = options != null && options.writingDirection === 'rtl';\n var styleProps = customStyleq(styles, isRTL);\n\n if (Array.isArray(styleProps) && styleProps[1] != null) {\n styleProps[1] = (0, _compiler.inline)((0, _preprocess.preprocess)(styleProps[1]), isRTL);\n }\n\n return styleProps;\n}\n\nStyleSheet.absoluteFill = absoluteFill;\nStyleSheet.absoluteFillObject = absoluteFillObject;\nStyleSheet.create = create;\nStyleSheet.compose = compose;\nStyleSheet.flatten = flatten;\nStyleSheet.getSheet = getSheet; // `hairlineWidth` is not implemented using screen density as browsers may\n// round sub-pixel values down to `0`, causing the line not to be rendered.\n\nStyleSheet.hairlineWidth = 1;\n\nif (_canUseDom.default && window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.resolveRNStyle = StyleSheet.flatten;\n}\n\nvar stylesheet = StyleSheet;\nvar _default = stylesheet;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _reactDom = require(\"react-dom\");\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar findNodeHandle = component => {\n var node;\n\n try {\n node = (0, _reactDom.findDOMNode)(component);\n } catch (e) {}\n\n return node;\n};\n\nvar _default = findNodeHandle;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport divWithClassName from './divWithClassName';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport SafeAnchor from './SafeAnchor';\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nvar AlertHeading = createWithBsPrefix('alert-heading', {\n Component: DivStyledAsH4\n});\nvar AlertLink = createWithBsPrefix('alert-link', {\n Component: SafeAnchor\n});\nvar defaultProps = {\n show: true,\n transition: Fade,\n closeLabel: 'Close alert'\n};\nvar Alert = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n show = _useUncontrolled.show,\n closeLabel = _useUncontrolled.closeLabel,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n variant = _useUncontrolled.variant,\n onClose = _useUncontrolled.onClose,\n dismissible = _useUncontrolled.dismissible,\n transition = _useUncontrolled.transition,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n var handleClose = useEventCallback(function (e) {\n if (onClose) {\n onClose(false, e);\n }\n });\n var Transition = transition === true ? Fade : transition;\n var alert = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"alert\"\n }, !Transition ? props : undefined, {\n ref: ref,\n className: classNames(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\")\n }), dismissible && /*#__PURE__*/React.createElement(CloseButton, {\n onClick: handleClose,\n label: closeLabel\n }), children);\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/React.createElement(Transition, _extends({\n unmountOnExit: true\n }, props, {\n ref: undefined,\n in: show\n }), alert);\n});\nAlert.displayName = 'Alert';\nAlert.defaultProps = defaultProps;\nAlert.Link = AlertLink;\nAlert.Heading = AlertHeading;\nexport default Alert;","import React, { FC } from 'react';\nimport { Button, Icon, StsIconName, Typography } from '@packages/ui/shared';\nimport { Collapse } from 'react-bootstrap';\nimport { createUseStyles } from 'react-jss';\nimport { Document } from '@web/vin-sessions/assets/Icons';\nimport { Link } from 'react-router-dom';\nimport { StyleSheet } from 'react-native';\nimport colors from '@packages/core/styles/colors';\nimport fonts from '@web/jss/fonts';\n\nconst useNavigationItemStyles = createUseStyles({\n navigationItem: ({ isActive, mainNav, isAdminHub }: NavigationItemProps) => ({\n borderRight: isActive && isAdminHub ? 'none' : `1px solid ${colors.grayThree}`,\n backgroundColor: isActive ? colors.white : 'transparent',\n borderTop: `1px solid ${mainNav && isActive ? colors.grayThree : 'transparent'}`,\n borderBottom: `1px solid ${isActive ? colors.grayThree : 'transparent'}`,\n '&:hover': {\n backgroundColor: isActive ? colors.white : colors.grayThree,\n },\n }),\n header: (props: NavigationItemProps) => ({\n display: 'flex',\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > a, & > span': {\n cursor: 'pointer',\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n padding: props.mainNav ? 14 : 20,\n '&:hover': {\n textDecoration: 'none',\n },\n },\n '& span': {\n color: props.isActive ? colors.blueOne : colors.graySix,\n },\n '&:hover': {\n '& img': {\n backgroundColor: colors.blueOne,\n },\n '& span': {\n color: colors.blueOne,\n },\n },\n backgroundColor: props.isMainNavActive ? colors.blueOne : 'transparent',\n }),\n icon: {\n display: 'flex',\n marginRight: 14,\n },\n notificationCount: {\n height: 16,\n minWidth: 16,\n ...fonts.xxs,\n marginLeft: 4,\n padding: '0 4px',\n borderRadius: 8,\n textAlign: 'center',\n color: colors.white,\n lineHeight: '1.5rem',\n ...fonts.robotoRegular,\n backgroundColor: colors.redOne,\n },\n stisNotificationCount: {\n alignItems: 'center',\n backgroundColor: '#dee6ef',\n borderRadius: 100,\n display: 'flex',\n height: 20,\n justifyContent: 'center',\n width: 31,\n marginRight: 8,\n },\n});\n\nconst styles = StyleSheet.create({\n count: {\n color: colors.blueOne,\n fontWeight: 'bold',\n fontSize: 14,\n },\n});\n\ninterface NavigationItemProps {\n to?: string;\n title: string;\n iconName?: StsIconName | 'techline-logo';\n open?: boolean;\n notificationCount?: number;\n isActive?: boolean;\n mainNav?: boolean;\n isMainNavActive?: boolean;\n onCollapseToggle?(open: boolean): void;\n onClick?(e?: React.MouseEvent): void;\n onHover?(title: string, ref?: React.ReactNode): void;\n onHoverLeave?(title: string, ref?: React.ReactNode): void;\n children?: React.ReactNode;\n stisIconFlag?: boolean;\n publicationsCount?: number;\n isAdminHub?: boolean;\n displayFlag?: boolean;\n}\n\nconst NavigationItem: FC = ({\n children,\n onHover,\n onHoverLeave,\n to,\n title,\n iconName,\n open = false,\n notificationCount,\n isActive,\n isAdminHub,\n mainNav = true,\n isMainNavActive = false,\n onCollapseToggle,\n onClick,\n stisIconFlag,\n publicationsCount,\n displayFlag,\n}) => {\n const hoverRefEl = React.useRef(null);\n\n const classes: any = useNavigationItemStyles({\n isActive,\n mainNav,\n hasChildren: !children,\n isMainNavActive,\n isAdminHub,\n });\n\n function handleChevronButtonClick() {\n if (onCollapseToggle) {\n onCollapseToggle(!open);\n }\n }\n\n const handleHover = () => {\n if (onHover) {\n onHover(title, hoverRefEl?.current);\n }\n };\n\n const handleHoverLeave = () => {\n if (onHoverLeave) {\n onHoverLeave(title, hoverRefEl?.current);\n }\n };\n\n const WrapperComponent = !!to ? Link : 'span';\n\n return (\n displayFlag && (\n
\n
\n {\n onClick && onClick(e);\n }}\n onMouseEnter={handleHover}\n onMouseLeave={handleHoverLeave}\n ref={hoverRefEl}\n >\n {iconName && iconName !== 'techline-logo' && (\n
\n \n
\n )}\n\n {stisIconFlag && (\n
\n \n
\n )}\n\n {iconName === 'techline-logo' && (\n
\n \n \n \n \n \n
\n )}\n\n \n {title}\n \n\n {!!notificationCount &&
{notificationCount}
}\n \n\n {children && (\n \n )}\n {publicationsCount ? (\n
\n {publicationsCount}\n
\n ) : null}\n
\n\n {children && (\n \n
{children}
\n
\n )}\n
\n )\n );\n};\n\nexport default NavigationItem;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _AccessibilityUtil = _interopRequireDefault(require(\"../../modules/AccessibilityUtil\"));\n\nvar _createDOMProps = _interopRequireDefault(require(\"../../modules/createDOMProps\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _useLocale = require(\"../../modules/useLocale\");\n\n/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar createElement = (component, props, options) => {\n // Use equivalent platform elements where possible.\n var accessibilityComponent;\n\n if (component && component.constructor === String) {\n accessibilityComponent = _AccessibilityUtil.default.propsToAccessibilityComponent(props);\n }\n\n var Component = accessibilityComponent || component;\n var domProps = (0, _createDOMProps.default)(Component, props, options);\n\n var element = /*#__PURE__*/_react.default.createElement(Component, domProps); // Update locale context if element's writing direction prop changes\n\n\n var elementWithLocaleProvider = domProps.dir ? /*#__PURE__*/_react.default.createElement(_useLocale.LocaleProvider, {\n children: element,\n direction: domProps.dir,\n locale: domProps.lang\n }) : element;\n return elementWithLocaleProvider;\n};\n\nvar _default = createElement;\nexports.default = _default;\nmodule.exports = exports.default;","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","/*\n * Copyright (c) 2016-present Invertase Limited\n */\n\nimport { NotificationFullScreenAction } from '../types/Notification';\nimport { isObject, isString, isUndefined, isArray, isNumber } from '../utils';\n\nconst LAUNCH_ACTIVITY_DEFAULT_VALUE = 'default';\nconst PRESS_ACTION_DEFAULT_VALUE = 'default';\n\nexport default function validateAndroidFullScreenAction(\n fullScreenAction: NotificationFullScreenAction,\n): NotificationFullScreenAction {\n if (!isObject(fullScreenAction)) {\n throw new Error(\"'fullScreenAction' expected an object value.\");\n }\n\n if (!isString(fullScreenAction.id) || fullScreenAction.id.length === 0) {\n throw new Error(\"'id' expected a non-empty string value.\");\n }\n\n const out: NotificationFullScreenAction = {\n id: fullScreenAction.id,\n };\n\n if (!isUndefined(fullScreenAction.launchActivity)) {\n if (!isString(fullScreenAction.launchActivity)) {\n throw new Error(\"'launchActivity' expected a string value.\");\n }\n\n out.launchActivity = fullScreenAction.launchActivity;\n } else if (fullScreenAction.id === PRESS_ACTION_DEFAULT_VALUE) {\n // Set default value for launchActivity\n out.launchActivity = LAUNCH_ACTIVITY_DEFAULT_VALUE;\n }\n\n if (!isUndefined(fullScreenAction.launchActivityFlags)) {\n if (!isArray(fullScreenAction.launchActivityFlags)) {\n throw new Error(\n \"'launchActivityFlags' must be an array of `AndroidLaunchActivityFlag` values.\",\n );\n }\n\n // quick sanity check on first item only\n if (fullScreenAction.launchActivityFlags.length) {\n if (!isNumber(fullScreenAction.launchActivityFlags[0])) {\n throw new Error(\n \"'launchActivityFlags' must be an array of `AndroidLaunchActivityFlag` values.\",\n );\n }\n }\n\n out.launchActivityFlags = fullScreenAction.launchActivityFlags;\n }\n\n if (!isUndefined(fullScreenAction.mainComponent)) {\n if (!isString(fullScreenAction.mainComponent)) {\n throw new Error(\"'mainComponent' expected a string value.\");\n }\n\n out.mainComponent = fullScreenAction.mainComponent;\n }\n\n return out;\n}\n","import { useContext } from 'react';\nimport { IQmrsDashboardProps } from './qmrsdashboard.state';\nimport { QmrsDashboardContext, QmrsDashboardDispatchContext } from './qmrsdashboard.context';\n\nexport const useQmrsDashboardState = () => {\n const state = useContext(QmrsDashboardContext);\n\n if (state === undefined) {\n throw new Error('useTechlineState must be used within a TechlineProvider');\n }\n\n return state;\n};\n\nexport const useQmrsDashboardDispatch = () => {\n const state = useContext(QmrsDashboardDispatchContext);\n if (state === undefined) {\n throw new Error('useQmrsDashboardDispatch must be used within a DashboardProvider');\n }\n\n return state;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _FlatList = _interopRequireDefault(require(\"../../vendor/react-native/FlatList\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar _default = _FlatList.default;\nexports.default = _default;\nmodule.exports = exports.default;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isPrefixedValue;\nvar RE = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && RE.test(value);\n}","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._B = null;\n Promise._C = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._B = function (promise) {\n if (\n promise._y === 2 && // IS REJECTED\n rejections[promise._E]\n ) {\n if (rejections[promise._E].logged) {\n onHandled(promise._E);\n } else {\n clearTimeout(rejections[promise._E].timeout);\n }\n delete rejections[promise._E];\n }\n };\n Promise._C = function (promise, err) {\n if (promise._x === 0) { // not yet handled\n promise._E = id++;\n rejections[promise._E] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._E),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}","import React, { FC } from 'react';\n\nimport { Link } from 'react-router-dom';\nimport { createUseStyles } from 'react-jss';\nimport classNames from 'classnames';\n\nimport colors from '@packages/core/styles/colors';\nimport { Icon, StsIconName, Typography } from '@packages/ui/shared';\nimport { useClickState } from '@web/core/navigation/navigation.contex';\n\nconst useNavigationSubItemStyles = createUseStyles({\n navigationSubItem: ({ iconName }: { iconName: StsIconName }) => ({\n display: 'flex',\n padding: `10px ${iconName ? '0' : '14px'}`,\n color: colors.textDarkPrimary,\n '&:hover': {\n textDecoration: 'none',\n },\n }),\n labelWrapper: ({ iconName, isSubOfSub }: { iconName: StsIconName; isSubOfSub: boolean }) => {\n let paddingLeft = iconName ? 16 : 34;\n if (isSubOfSub) paddingLeft += 30;\n\n return {\n flex: 1,\n paddingLeft,\n };\n },\n badge: {\n height: 16,\n minWidth: 16,\n marginLeft: 4,\n display: 'flex',\n borderRadius: 8,\n padding: '0 4px',\n textAlign: 'center',\n color: colors.white,\n alignItems: 'center',\n backgroundColor: colors.blueFour,\n },\n isActive: {\n backgroundColor: colors.blueOne,\n },\n});\n\ninterface NavigationSubItemProps {\n to: string;\n title: string;\n badge?: string;\n isActive?: boolean;\n noWrap?: boolean;\n iconName?: StsIconName;\n isSubOfSub?: boolean;\n children?: React.ReactNode;\n}\n\nconst NavigationSubItem: FC = ({\n to,\n title,\n badge = '',\n isActive = false,\n noWrap = false,\n iconName,\n isSubOfSub,\n}) => {\n const classes = useNavigationSubItemStyles({ noWrap, iconName, isSubOfSub });\n const { toggleClickState, isMobileDevice } = useClickState();\n\n const handleClick = () => {\n if (isMobileDevice) toggleClickState();\n };\n\n return (\n \n
\n
\n {iconName && (\n \n )}\n {title}\n
\n\n {badge && (\n
\n \n {badge}\n \n
\n )}\n
\n \n );\n};\n\nexport default NavigationSubItem;\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"react-dom\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react-dom\",\"react\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).ElementPopper=e(t.ReactDOM,t.React)}(this,(function(t,e){\"use strict\";function r(t){return t&&\"object\"==typeof t&&\"default\"in t?t:{default:t}}var o=r(e);function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function i(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,o=new Array(e);r0&&st+at>0&&(j?Ot-=(st+at)/2:A-st-at0&&dt+ct>0&&(j?Et-=(dt+ct)/2:R-dt-cti+e&&l>=f&&\"bottom\"===et&&(ft-=Y+R,et=\"top\")),u||(L+ito?L+it-o:-A+it+wt,st)),z-at>n&&(st=p(L+wtn&&s>d&&\"right\"===et&&(ut-=A+k,et=\"left\")),u||(N+lte?N+lt-e:-R+lt+yt,dt)),I-ct>r&&(dt=p(N+ytMath.round(Math.abs(e))?t:e}return e.forwardRef(u)}));\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","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}\nexport { _nonIterableRest as default };","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/ban-types */\n/*\n * Copyright (c) 2016-present Invertase Limited\n */\nexport function isNull(value: any): value is null {\n return value === null;\n}\n\nexport function isObject(value: any): value is object {\n return value ? typeof value === 'object' && !Array.isArray(value) && !isNull(value) : false;\n}\n\nexport function isFunction(value: any): value is Function {\n return value ? typeof value === 'function' : false;\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string';\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number';\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === 'boolean';\n}\n\nexport function isArray(value: any): value is Array {\n return Array.isArray(value);\n}\n\nexport function isArrayOfStrings(value: any): value is Array {\n if (!isArray(value)) return false;\n for (let i = 0; i < value.length; i++) {\n if (!isString(value[i])) return false;\n }\n return true;\n}\n\nexport function isUndefined(value: any): value is undefined {\n return value === undefined;\n}\n\nexport function objectKeyValuesAreStrings(value: object): value is { [key: string]: string } {\n if (!isObject(value)) {\n return false;\n }\n\n const entries = Object.entries(value);\n\n for (let i = 0; i < entries.length; i++) {\n const [key, entryValue] = entries[i];\n if (!isString(key) || !isString(entryValue)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * /^[a-zA-Z0-9_]+$/\n *\n * @param value\n * @returns {boolean}\n */\nconst AlphaNumericUnderscore = /^[a-zA-Z0-9_]+$/;\n\nexport function isAlphaNumericUnderscore(value: string): boolean {\n return AlphaNumericUnderscore.test(value);\n}\n\n/**\n * URL test\n * @param url\n * @returns {boolean}\n */\nconst IS_VALID_URL_REGEX = /^(http|https):\\/\\/[^ \"]+$/;\n\nexport function isValidUrl(url: string): boolean {\n return IS_VALID_URL_REGEX.test(url);\n}\n\nexport function isValidEnum(value: any, enumType: Record): boolean {\n if (!Object.values(enumType).includes(value)) {\n return false;\n }\n\n return true;\n}\n","import React from 'react';\nimport { Icon, IconProps, StsIconName, Typography } from '@packages/ui/shared';\nimport { StyleProp, TextStyle, StyleSheet } from 'react-native';\nimport { createUseStyles } from 'react-jss';\nimport colors from '@packages/core/styles/colors';\n\nconst useStyles = createUseStyles({\n container: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n textAlign: 'center',\n padding: '20px',\n },\n imageWrapper: {\n width: 160,\n height: 160,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n backgroundColor: colors.grayOne,\n marginBottom: 16,\n overflow: 'hidden',\n },\n image: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n});\n\nexport interface EmptyProps {\n image?: React.ReactNode | string;\n imageStyle?: React.CSSProperties;\n description?: string | React.ReactNode;\n children?: React.ReactNode;\n icon?: StsIconName;\n iconProps?: Partial;\n className?: string;\n descriptionStyle?: StyleProp;\n containerStyle?: React.CSSProperties;\n iconFlag?: boolean;\n}\n\nconst DefaultIconProps: Partial = {\n color: 'grayFive',\n size: 80,\n style: {},\n};\n\nexport const Empty: React.FC = React.memo(\n ({\n image,\n imageStyle,\n description = 'No Result',\n children,\n icon = 'battery',\n iconProps = DefaultIconProps,\n className = '',\n descriptionStyle,\n containerStyle,\n iconFlag,\n }) => {\n const classes = useStyles();\n\n const renderImage = () => {\n if (image) {\n if (typeof image === 'string') {\n return (\n \n );\n }\n return
{image}
;\n }\n\n return (\n \n );\n };\n\n const typographyStyle = StyleSheet.flatten([\n {\n fontSize: '21px',\n textAlign: 'center',\n marginTop: '8px',\n width: '320px',\n paddingRight: '30px',\n paddingLeft: '30px',\n gap: 4,\n fontWeight: '600',\n whiteSpace: 'pre-wrap',\n lineHeight: '32px',\n },\n descriptionStyle,\n ]);\n\n return (\n
\n {!iconFlag &&
{renderImage()}
}\n {description && (\n \n {description}\n \n )}\n {children}\n
\n );\n }\n);\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _invariant = _interopRequireDefault(require(\"fbjs/lib/invariant\"));\n\nvar _requestIdleCallback = _interopRequireWildcard(require(\"../../modules/requestIdleCallback\"));\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar InteractionManager = {\n Events: {\n interactionStart: 'interactionStart',\n interactionComplete: 'interactionComplete'\n },\n\n /**\n * Schedule a function to run after all interactions have completed.\n */\n runAfterInteractions(task) {\n var handle;\n var promise = new Promise(resolve => {\n handle = (0, _requestIdleCallback.default)(() => {\n if (task) {\n resolve(task());\n } else {\n resolve();\n }\n });\n });\n return {\n then: promise.then.bind(promise),\n done: promise.then.bind(promise),\n cancel: () => {\n (0, _requestIdleCallback.cancelIdleCallback)(handle);\n }\n };\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle() {\n return 1;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle) {\n (0, _invariant.default)(!!handle, 'Must provide a handle to clear.');\n },\n\n addListener: () => {}\n};\nvar _default = InteractionManager;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar Platform = {\n OS: 'web',\n select: obj => 'web' in obj ? obj.web : obj.default,\n\n get isTesting() {\n if (process.env.NODE_ENV === 'test') {\n return true;\n }\n\n return false;\n }\n\n};\nexport default Platform;","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","Object.defineProperty(exports,\"__esModule\",{value:true});var _extends=Object.assign||function(target){for(var i=1;i=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");}return call&&(typeof call===\"object\"||typeof call===\"function\")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!==\"function\"&&superClass!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var LinearGradient=function(_PureComponent){_inherits(LinearGradient,_PureComponent);function LinearGradient(){var _ref;var _temp,_this,_ret;_classCallCheck(this,LinearGradient);for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _ret=(_temp=(_this=_possibleConstructorReturn(this,(_ref=LinearGradient.__proto__||Object.getPrototypeOf(LinearGradient)).call.apply(_ref,[this].concat(args))),_this),_this.state={width:1,height:1},_this.measure=function(event){_this.setState({width:event.nativeEvent.layout.width,height:event.nativeEvent.layout.height});if(_this.props.onLayout){_this.props.onLayout(event);}},_this.getAngle=function(){if(_this.props.useAngle){return _this.props.angle+'deg';}var angle=Math.atan2(_this.state.width*(_this.props.end.y-_this.props.start.y),_this.state.height*(_this.props.end.x-_this.props.start.x))+Math.PI/2;return angle+'rad';},_this.getColors=function(){return _this.props.colors.map(function(color,index){var location=_this.props.locations[index];var locationStyle='';if(location){locationStyle=' '+location*100+'%';}return color+locationStyle;}).join(',');},_temp),_possibleConstructorReturn(_this,_ret);}_createClass(LinearGradient,[{key:'render',value:function render(){var _props=this.props,start=_props.start,end=_props.end,colors=_props.colors,locations=_props.locations,useAngle=_props.useAngle,angleCenter=_props.angleCenter,angle=_props.angle,style=_props.style,children=_props.children,otherProps=_objectWithoutProperties(_props,['start','end','colors','locations','useAngle','angleCenter','angle','style','children']);return _react2.default.createElement(_reactNative.View,_extends({},otherProps,{style:[style,{backgroundImage:'linear-gradient('+this.getAngle()+','+this.getColors()+')'}],onLayout:this.measure,__source:{fileName:_jsxFileName,lineNumber:76}}),children);}}]);return LinearGradient;}(_react.PureComponent);LinearGradient.defaultProps={start:{x:0.5,y:0},end:{x:0.5,y:1},locations:[],colors:[],useAngle:false,angle:0};exports.default=LinearGradient;\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith(''\n return buff\n }\n}\n\nexport default function (doc) {\n return doc.reduce(function (token, rootEl) {\n return token + stringify('', rootEl)\n }, '')\n}\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n?.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/*\n * Copyright (c) 2016-present Invertase Limited\n */\n\nimport { AppRegistry, Platform } from 'react-native';\nimport { Module } from './types/Module';\nimport {\n AndroidChannel,\n AndroidChannelGroup,\n AndroidNotificationSetting,\n NativeAndroidChannel,\n NativeAndroidChannelGroup,\n} from './types/NotificationAndroid';\nimport {\n AuthorizationStatus,\n InitialNotification,\n Notification,\n Event,\n TriggerNotification,\n DisplayedNotification,\n NotificationSettings,\n} from './types/Notification';\nimport { PowerManagerInfo } from './types/PowerManagerInfo';\nimport { Trigger } from './types/Trigger';\nimport NotifeeNativeModule, { NativeModuleConfig } from './NotifeeNativeModule';\nimport {\n isAndroid,\n isArray,\n isFunction,\n isIOS,\n isNumber,\n isString,\n isUndefined,\n isWeb,\n kReactNativeNotifeeForegroundServiceHeadlessTask,\n kReactNativeNotifeeNotificationBackgroundEvent,\n kReactNativeNotifeeNotificationEvent,\n NotificationType,\n} from './utils';\nimport validateNotification from './validators/validateNotification';\nimport validateTrigger from './validators/validateTrigger';\nimport validateAndroidChannel from './validators/validateAndroidChannel';\nimport validateAndroidChannelGroup from './validators/validateAndroidChannelGroup';\nimport { IOSNotificationCategory, IOSNotificationPermissions } from './types/NotificationIOS';\nimport validateIOSCategory from './validators/validateIOSCategory';\nimport validateIOSPermissions from './validators/validateIOSPermissions';\n\nlet backgroundEventHandler: (event: Event) => Promise;\n\nlet registeredForegroundServiceTask: (notification: Notification) => Promise;\n\nif (isAndroid) {\n // Register foreground service\n AppRegistry.registerHeadlessTask(kReactNativeNotifeeForegroundServiceHeadlessTask, () => {\n if (!registeredForegroundServiceTask) {\n console.warn(\n '[notifee] no registered foreground service has been set for displaying a foreground notification.',\n );\n return (): Promise => Promise.resolve();\n }\n\n return ({ notification }): Promise => registeredForegroundServiceTask(notification);\n });\n}\n\nexport default class NotifeeApiModule extends NotifeeNativeModule implements Module {\n constructor(config: NativeModuleConfig) {\n super(config);\n if (isAndroid) {\n // Register background handler\n AppRegistry.registerHeadlessTask(kReactNativeNotifeeNotificationEvent, () => {\n return (event: Event): Promise => {\n if (!backgroundEventHandler) {\n console.warn(\n '[notifee] no background event handler has been set. Set a handler via the \"onBackgroundEvent\" method.',\n );\n return Promise.resolve();\n }\n return backgroundEventHandler(event);\n };\n });\n } else if (isIOS) {\n this.emitter.addListener(\n kReactNativeNotifeeNotificationBackgroundEvent,\n (event: Event): Promise => {\n if (!backgroundEventHandler) {\n console.warn(\n '[notifee] no background event handler has been set. Set a handler via the \"onBackgroundEvent\" method.',\n );\n return Promise.resolve();\n }\n\n return backgroundEventHandler(event);\n },\n );\n }\n }\n\n public getTriggerNotificationIds = (): Promise => {\n if (isAndroid || isIOS) {\n return this.native.getTriggerNotificationIds();\n }\n\n return Promise.resolve([]);\n };\n\n public getTriggerNotifications = (): Promise => {\n if (isAndroid || isIOS) {\n return this.native.getTriggerNotifications();\n }\n\n return Promise.resolve([]);\n };\n\n public getDisplayedNotifications = (): Promise => {\n if (isAndroid || isIOS) {\n return this.native.getDisplayedNotifications();\n }\n\n return Promise.resolve([]);\n };\n\n public isChannelBlocked = (channelId: string): Promise => {\n if (!isString(channelId)) {\n throw new Error(\"notifee.isChannelBlocked(*) 'channelId' expected a string value.\");\n }\n\n if (isWeb || isIOS || this.native.ANDROID_API_LEVEL < 26) {\n return Promise.resolve(false);\n }\n\n return this.native.isChannelBlocked(channelId);\n };\n\n public isChannelCreated = (channelId: string): Promise => {\n if (!isString(channelId)) {\n channelId;\n throw new Error(\"notifee.isChannelCreated(*) 'channelId' expected a string value.\");\n }\n\n if (isWeb || isIOS || this.native.ANDROID_API_LEVEL < 26) {\n return Promise.resolve(true);\n }\n\n return this.native.isChannelCreated(channelId);\n };\n\n public cancelAllNotifications = (notificationIds?: string[], tag?: string): Promise => {\n if (isAndroid || isIOS) {\n if (notificationIds) {\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds(\n notificationIds,\n NotificationType.ALL,\n tag,\n );\n }\n return this.native.cancelAllNotificationsWithIds(notificationIds);\n }\n return this.native.cancelAllNotifications();\n }\n\n return Promise.resolve();\n };\n\n public cancelDisplayedNotifications = (\n notificationIds?: string[],\n tag?: string,\n ): Promise => {\n if (isAndroid || isIOS) {\n if (notificationIds) {\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds(\n notificationIds,\n NotificationType.DISPLAYED,\n tag,\n );\n }\n\n return this.native.cancelDisplayedNotificationsWithIds(notificationIds);\n }\n\n return this.native.cancelDisplayedNotifications();\n }\n\n return Promise.resolve();\n };\n\n public cancelTriggerNotifications = (notificationIds?: string[]): Promise => {\n if (isAndroid || isIOS) {\n if (notificationIds) {\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds(\n notificationIds,\n NotificationType.TRIGGER,\n null,\n );\n }\n return this.native.cancelTriggerNotificationsWithIds(notificationIds);\n }\n return this.native.cancelTriggerNotifications();\n }\n\n return Promise.resolve();\n };\n\n public cancelNotification = (notificationId: string, tag?: string): Promise => {\n if (!isString(notificationId)) {\n throw new Error(\"notifee.cancelNotification(*) 'notificationId' expected a string value.\");\n }\n\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds([notificationId], NotificationType.ALL, tag);\n }\n\n if (isIOS) {\n return this.native.cancelNotification(notificationId);\n }\n\n return Promise.resolve();\n };\n\n public cancelDisplayedNotification = (notificationId: string, tag?: string): Promise => {\n if (!isString(notificationId)) {\n throw new Error(\n \"notifee.cancelDisplayedNotification(*) 'notificationId' expected a string value.\",\n );\n }\n\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds(\n [notificationId],\n NotificationType.DISPLAYED,\n tag,\n );\n }\n\n if (isIOS) {\n return this.native.cancelDisplayedNotification(notificationId);\n }\n\n return Promise.resolve();\n };\n\n public cancelTriggerNotification = (notificationId: string): Promise => {\n if (!isString(notificationId)) {\n throw new Error(\n \"notifee.cancelTriggerNotification(*) 'notificationId' expected a string value.\",\n );\n }\n\n if (isAndroid) {\n return this.native.cancelAllNotificationsWithIds(\n [notificationId],\n NotificationType.TRIGGER,\n null,\n );\n }\n\n if (isIOS) {\n return this.native.cancelTriggerNotification(notificationId);\n }\n\n return Promise.resolve();\n };\n\n public createChannel = (channel: AndroidChannel): Promise => {\n let options: AndroidChannel;\n try {\n options = validateAndroidChannel(channel);\n } catch (e: any) {\n throw new Error(`notifee.createChannel(*) ${e.message}`);\n }\n\n if (isAndroid) {\n if (this.native.ANDROID_API_LEVEL < 26) {\n return Promise.resolve(options.id);\n }\n\n return this.native.createChannel(options).then(() => {\n return options.id;\n });\n }\n\n return Promise.resolve('');\n };\n\n public createChannels = (channels: AndroidChannel[]): Promise => {\n if (!isArray(channels)) {\n throw new Error(\"notifee.createChannels(*) 'channels' expected an array of AndroidChannel.\");\n }\n\n const options: AndroidChannel[] = [];\n try {\n for (let i = 0; i < channels.length; i++) {\n options[i] = validateAndroidChannel(channels[i]);\n }\n } catch (e: any) {\n throw new Error(`notifee.createChannels(*) 'channels' a channel is invalid: ${e.message}`);\n }\n\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.createChannels(options);\n }\n\n return Promise.resolve();\n };\n\n public createChannelGroup = (channelGroup: AndroidChannelGroup): Promise => {\n let options: AndroidChannelGroup;\n try {\n options = validateAndroidChannelGroup(channelGroup);\n } catch (e: any) {\n throw new Error(`notifee.createChannelGroup(*) ${e.message}`);\n }\n\n if (isAndroid) {\n if (this.native.ANDROID_API_LEVEL < 26) {\n return Promise.resolve(options.id);\n }\n\n return this.native.createChannelGroup(options).then(() => {\n return options.id;\n });\n }\n\n return Promise.resolve('');\n };\n\n public createChannelGroups = (channelGroups: AndroidChannelGroup[]): Promise => {\n if (!isArray(channelGroups)) {\n throw new Error(\n \"notifee.createChannelGroups(*) 'channelGroups' expected an array of AndroidChannelGroup.\",\n );\n }\n\n const options = [];\n try {\n for (let i = 0; i < channelGroups.length; i++) {\n options[i] = validateAndroidChannelGroup(channelGroups[i]);\n }\n } catch (e: any) {\n throw new Error(\n `notifee.createChannelGroups(*) 'channelGroups' a channel group is invalid: ${e.message}`,\n );\n }\n\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.createChannelGroups(options);\n }\n\n return Promise.resolve();\n };\n\n public deleteChannel = (channelId: string): Promise => {\n if (!isString(channelId)) {\n throw new Error(\"notifee.deleteChannel(*) 'channelId' expected a string value.\");\n }\n\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.deleteChannel(channelId);\n }\n\n return Promise.resolve();\n };\n\n public deleteChannelGroup = (channelGroupId: string): Promise => {\n if (!isString(channelGroupId)) {\n throw new Error(\"notifee.deleteChannelGroup(*) 'channelGroupId' expected a string value.\");\n }\n\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.deleteChannelGroup(channelGroupId);\n }\n\n return Promise.resolve();\n };\n\n public displayNotification = (notification: Notification): Promise => {\n let options: Notification;\n try {\n options = validateNotification(notification);\n } catch (e: any) {\n throw new Error(`notifee.displayNotification(*) ${e.message}`);\n }\n\n if (isIOS || isAndroid) {\n return this.native.displayNotification(options).then((): string => {\n return options.id as string;\n });\n }\n\n return Promise.resolve('');\n };\n\n public openAlarmPermissionSettings = (): Promise => {\n if (isAndroid) {\n return this.native.openAlarmPermissionSettings();\n }\n\n return Promise.resolve();\n };\n\n public createTriggerNotification = (\n notification: Notification,\n trigger: Trigger,\n ): Promise => {\n let options: Notification;\n let triggerOptions: Trigger;\n\n try {\n options = validateNotification(notification);\n } catch (e: any) {\n throw new Error(`notifee.createTriggerNotification(*) ${e.message}`);\n }\n\n try {\n triggerOptions = validateTrigger(trigger);\n } catch (e: any) {\n throw new Error(`notifee.createTriggerNotification(*) ${e.message}`);\n }\n\n if (isIOS || isAndroid) {\n return this.native.createTriggerNotification(options, triggerOptions).then((): string => {\n return options.id as string;\n });\n }\n\n return Promise.resolve('');\n };\n\n public getChannel = (channelId: string): Promise => {\n if (!isString(channelId)) {\n throw new Error(\"notifee.getChannel(*) 'channelId' expected a string value.\");\n }\n\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.getChannel(channelId);\n }\n\n return Promise.resolve(null);\n };\n\n public getChannels = (): Promise => {\n if (isAndroid && this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.getChannels();\n }\n\n return Promise.resolve([]);\n };\n\n public getChannelGroup = (channelGroupId: string): Promise => {\n if (!isString(channelGroupId)) {\n throw new Error(\"notifee.getChannelGroup(*) 'channelGroupId' expected a string value.\");\n }\n\n if (isAndroid || this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.getChannelGroup(channelGroupId);\n }\n\n return Promise.resolve(null);\n };\n\n public getChannelGroups = (): Promise => {\n if (isAndroid || this.native.ANDROID_API_LEVEL >= 26) {\n return this.native.getChannelGroups();\n }\n\n return Promise.resolve([]);\n };\n\n public getInitialNotification = (): Promise => {\n if (isIOS || isAndroid) {\n return this.native.getInitialNotification();\n }\n\n return Promise.resolve(null);\n };\n\n public onBackgroundEvent = (observer: (event: Event) => Promise): void => {\n if (!isFunction(observer)) {\n throw new Error(\"notifee.onBackgroundEvent(*) 'observer' expected a function.\");\n }\n\n backgroundEventHandler = observer;\n };\n\n public onForegroundEvent = (observer: (event: Event) => void): (() => void) => {\n if (!isFunction(observer)) {\n throw new Error(\"notifee.onForegroundEvent(*) 'observer' expected a function.\");\n }\n\n const subscriber = this.emitter.addListener(\n kReactNativeNotifeeNotificationEvent,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore See https://github.com/facebook/react-native/pull/36462\n ({ type, detail }) => {\n observer({ type, detail });\n },\n );\n\n return (): void => {\n subscriber.remove();\n };\n };\n\n public openNotificationSettings = (channelId?: string): Promise => {\n if (!isUndefined(channelId) && !isString(channelId)) {\n throw new Error(\"notifee.openNotificationSettings(*) 'channelId' expected a string value.\");\n }\n\n if (isAndroid) {\n return this.native.openNotificationSettings(channelId || null);\n }\n\n return Promise.resolve();\n };\n\n public requestPermission = (\n permissions: IOSNotificationPermissions = {},\n ): Promise => {\n if (isAndroid) {\n return this.native\n .requestPermission()\n .then(\n ({\n authorizationStatus,\n android,\n }: Pick) => {\n return {\n authorizationStatus,\n android,\n ios: {\n alert: 1,\n badge: 1,\n criticalAlert: 1,\n showPreviews: 1,\n sound: 1,\n carPlay: 1,\n lockScreen: 1,\n announcement: 1,\n notificationCenter: 1,\n inAppNotificationSettings: 1,\n authorizationStatus,\n },\n web: {},\n };\n },\n );\n }\n\n if (isIOS) {\n let options: IOSNotificationPermissions;\n try {\n options = validateIOSPermissions(permissions);\n } catch (e: any) {\n throw new Error(`notifee.requestPermission(*) ${e.message}`);\n }\n\n return this.native\n .requestPermission(options)\n .then(\n ({\n authorizationStatus,\n ios,\n }: Pick) => {\n return {\n authorizationStatus,\n ios,\n android: {\n alarm: AndroidNotificationSetting.ENABLED,\n },\n web: {},\n };\n },\n );\n }\n\n // assume web\n return Promise.resolve({\n authorizationStatus: AuthorizationStatus.NOT_DETERMINED,\n android: {\n alarm: AndroidNotificationSetting.ENABLED,\n },\n ios: {\n alert: 1,\n badge: 1,\n criticalAlert: 1,\n showPreviews: 1,\n sound: 1,\n carPlay: 1,\n lockScreen: 1,\n announcement: 1,\n notificationCenter: 1,\n inAppNotificationSettings: 1,\n authorizationStatus: AuthorizationStatus.NOT_DETERMINED,\n },\n web: {},\n });\n };\n\n public registerForegroundService(runner: (notification: Notification) => Promise): void {\n if (!isFunction(runner)) {\n throw new Error(\"notifee.registerForegroundService(_) 'runner' expected a function.\");\n }\n\n if (isAndroid) {\n registeredForegroundServiceTask = runner;\n }\n\n return;\n }\n\n public setNotificationCategories = (categories: IOSNotificationCategory[]): Promise => {\n if (!isIOS) {\n return Promise.resolve();\n }\n\n if (!isArray(categories)) {\n throw new Error(\n \"notifee.setNotificationCategories(*) 'categories' expected an array of IOSCategory.\",\n );\n }\n\n const options = [];\n try {\n for (let i = 0; i < categories.length; i++) {\n options[i] = validateIOSCategory(categories[i]);\n }\n } catch (e: any) {\n throw new Error(\n `notifee.setNotificationCategories(*) 'categories' a category is invalid: ${e.message}`,\n );\n }\n\n return this.native.setNotificationCategories(categories);\n };\n\n public getNotificationCategories = (): Promise => {\n if (!isIOS) {\n return Promise.resolve([]);\n }\n\n return this.native.getNotificationCategories();\n };\n\n public getNotificationSettings = (): Promise => {\n if (isAndroid) {\n return this.native\n .getNotificationSettings()\n .then(\n ({\n authorizationStatus,\n android,\n }: Pick) => {\n return {\n authorizationStatus,\n android,\n ios: {\n alert: 1,\n badge: 1,\n criticalAlert: 1,\n showPreviews: 1,\n sound: 1,\n carPlay: 1,\n lockScreen: 1,\n announcement: 1,\n notificationCenter: 1,\n inAppNotificationSettings: 1,\n authorizationStatus,\n },\n web: {},\n };\n },\n );\n }\n\n if (isIOS) {\n return this.native\n .getNotificationSettings()\n .then(\n ({\n authorizationStatus,\n ios,\n }: Pick) => {\n return {\n authorizationStatus,\n ios,\n android: {\n alarm: AndroidNotificationSetting.ENABLED,\n },\n };\n },\n );\n }\n\n // assume web\n return Promise.resolve({\n authorizationStatus: AuthorizationStatus.NOT_DETERMINED,\n android: {\n alarm: AndroidNotificationSetting.ENABLED,\n },\n ios: {\n alert: 1,\n badge: 1,\n criticalAlert: 1,\n showPreviews: 1,\n sound: 1,\n carPlay: 1,\n lockScreen: 1,\n announcement: 1,\n notificationCenter: 1,\n inAppNotificationSettings: 1,\n authorizationStatus: AuthorizationStatus.NOT_DETERMINED,\n },\n web: {},\n });\n };\n\n public getBadgeCount = (): Promise => {\n if (!isIOS) {\n return Promise.resolve(0);\n }\n\n return this.native.getBadgeCount();\n };\n\n public setBadgeCount = (count: number): Promise => {\n if (!isIOS) {\n return Promise.resolve();\n }\n\n if (!isNumber(count) || count < 0) {\n throw new Error(\"notifee.setBadgeCount(*) 'count' expected a number value greater than 0.\");\n }\n\n return this.native.setBadgeCount(Math.round(count));\n };\n\n public incrementBadgeCount = (incrementBy?: number): Promise => {\n if (!isIOS) {\n return Promise.resolve();\n }\n\n let value = 1;\n if (!isUndefined(incrementBy)) {\n if (!isNumber(incrementBy) || incrementBy < 1) {\n throw new Error(\n \"notifee.decrementBadgeCount(*) 'incrementBy' expected a number value greater than 1.\",\n );\n }\n\n value = incrementBy;\n }\n\n return this.native.incrementBadgeCount(Math.round(value));\n };\n\n public decrementBadgeCount = (decrementBy?: number): Promise => {\n if (!isIOS) {\n return Promise.resolve();\n }\n\n let value = 1;\n if (!isUndefined(decrementBy)) {\n if (!isNumber(decrementBy) || decrementBy < 1) {\n throw new Error(\n \"notifee.decrementBadgeCount(*) 'decrementBy' expected a number value greater than 1.\",\n );\n }\n\n value = decrementBy;\n }\n\n return this.native.decrementBadgeCount(Math.round(value));\n };\n\n public isBatteryOptimizationEnabled = (): Promise => {\n if (!isAndroid) {\n return Promise.resolve(false);\n }\n\n return this.native.isBatteryOptimizationEnabled();\n };\n\n public openBatteryOptimizationSettings = (): Promise => {\n if (!isAndroid) {\n return Promise.resolve();\n }\n return this.native.openBatteryOptimizationSettings();\n };\n\n public getPowerManagerInfo = (): Promise => {\n if (!isAndroid) {\n // only Android supports this, so instead we\n // return a dummy response to allow the power manager\n // flow work the same on all platforms\n return Promise.resolve({\n manufacturer: Platform.OS,\n activity: null,\n } as PowerManagerInfo);\n }\n\n return this.native.getPowerManagerInfo();\n };\n\n public openPowerManagerSettings = (): Promise => {\n if (!isAndroid) {\n return Promise.resolve();\n }\n return this.native.openPowerManagerSettings();\n };\n\n public stopForegroundService = (): Promise => {\n if (!isAndroid) {\n return Promise.resolve();\n }\n return this.native.stopForegroundService();\n };\n\n public hideNotificationDrawer = (): void => {\n if (!isAndroid) {\n return;\n }\n return this.native.hideNotificationDrawer();\n };\n}\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","const roboto = {\n fontFamily: '\"Roboto\", sans-serif',\n weights: {\n regular: 400,\n medium: 500,\n bold: 700,\n },\n};\n\nconst fonts = {\n ...roboto,\n xxs: {\n fontSize: '1.3rem',\n lineHeight: '1.6rem',\n },\n xs: {\n fontSize: '1.5rem',\n lineHeight: '1.8rem',\n },\n s: {\n fontSize: '1.7rem',\n lineHeight: '2.4rem',\n },\n m: {\n fontSize: '1.9rem',\n lineHeight: '2.4rem',\n },\n l: {\n fontSize: '2.1rem',\n lineHeight: '2.6rem',\n },\n xl: {\n fontSize: '2.7rem',\n lineHeight: '3.6rem',\n },\n xxl: {\n fontSize: '3.5rem',\n lineHeight: '4.8rem',\n },\n robotoRegular: {\n fontFamily: roboto.fontFamily,\n fontWeight: roboto.weights.regular,\n },\n robotoMedium: {\n fontFamily: roboto.fontFamily,\n fontWeight: roboto.weights.medium,\n },\n robotoBold: {\n fontFamily: roboto.fontFamily,\n fontWeight: roboto.weights.bold,\n },\n};\n\nexport default fonts;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null\n};\n\nvar propsToAriaRole = _ref => {\n var accessibilityRole = _ref.accessibilityRole;\n\n if (accessibilityRole) {\n var inferredRole = accessibilityRoleToWebRole[accessibilityRole];\n\n if (inferredRole !== null) {\n // ignore roles that don't map to web\n return inferredRole || accessibilityRole;\n }\n }\n};\n\nexport default propsToAriaRole;","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport propsToAriaRole from './propsToAriaRole';\nvar roleComponents = {\n article: 'article',\n banner: 'header',\n blockquote: 'blockquote',\n code: 'code',\n complementary: 'aside',\n contentinfo: 'footer',\n deletion: 'del',\n emphasis: 'em',\n figure: 'figure',\n insertion: 'ins',\n form: 'form',\n list: 'ul',\n listitem: 'li',\n main: 'main',\n navigation: 'nav',\n region: 'section',\n strong: 'strong'\n};\nvar emptyObject = {};\n\nvar propsToAccessibilityComponent = function propsToAccessibilityComponent(props) {\n if (props === void 0) {\n props = emptyObject;\n }\n\n // special-case for \"label\" role which doesn't map to an ARIA role\n if (props.accessibilityRole === 'label') {\n return 'label';\n }\n\n var role = propsToAriaRole(props);\n\n if (role) {\n if (role === 'heading') {\n var level = props.accessibilityLevel || props['aria-level'];\n\n if (level != null) {\n return \"h\" + level;\n }\n\n return 'h1';\n }\n\n return roleComponents[role];\n }\n};\n\nexport default propsToAccessibilityComponent;","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport isDisabled from './isDisabled';\nimport propsToAccessibilityComponent from './propsToAccessibilityComponent';\nimport propsToAriaRole from './propsToAriaRole';\nvar AccessibilityUtil = {\n isDisabled,\n propsToAccessibilityComponent,\n propsToAriaRole\n};\nexport default AccessibilityUtil;","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isDisabled = props => props.disabled || Array.isArray(props.accessibilityStates) && props.accessibilityStates.indexOf('disabled') > -1;\n\nexport default isDisabled;","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createElement = _interopRequireDefault(require(\"../createElement\"));\n\nvar _multiplyStyleLengthValue = _interopRequireDefault(require(\"../../modules/multiplyStyleLengthValue\"));\n\nvar _StyleSheet = _interopRequireDefault(require(\"../StyleSheet\"));\n\nvar _View = _interopRequireDefault(require(\"../View\"));\n\nvar _excluded = [\"accessibilityLabel\", \"activeThumbColor\", \"activeTrackColor\", \"disabled\", \"onValueChange\", \"style\", \"thumbColor\", \"trackColor\", \"value\"];\nvar emptyObject = {};\nvar thumbDefaultBoxShadow = '0px 1px 3px rgba(0,0,0,0.5)';\nvar thumbFocusedBoxShadow = thumbDefaultBoxShadow + \", 0 0 0 10px rgba(0,0,0,0.1)\";\nvar defaultActiveTrackColor = '#A3D3CF';\nvar defaultTrackColor = '#939393';\nvar defaultDisabledTrackColor = '#D5D5D5';\nvar defaultActiveThumbColor = '#009688';\nvar defaultThumbColor = '#FAFAFA';\nvar defaultDisabledThumbColor = '#BDBDBD';\nvar Switch = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var accessibilityLabel = props.accessibilityLabel,\n activeThumbColor = props.activeThumbColor,\n activeTrackColor = props.activeTrackColor,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n onValueChange = props.onValueChange,\n _props$style = props.style,\n style = _props$style === void 0 ? emptyObject : _props$style,\n thumbColor = props.thumbColor,\n trackColor = props.trackColor,\n _props$value = props.value,\n value = _props$value === void 0 ? false : _props$value,\n other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);\n var thumbRef = React.useRef(null);\n\n function handleChange(event) {\n if (onValueChange != null) {\n onValueChange(event.nativeEvent.target.checked);\n }\n }\n\n function handleFocusState(event) {\n var isFocused = event.nativeEvent.type === 'focus';\n var boxShadow = isFocused ? thumbFocusedBoxShadow : thumbDefaultBoxShadow;\n\n if (thumbRef.current != null) {\n thumbRef.current.style.boxShadow = boxShadow;\n }\n }\n\n var _StyleSheet$flatten = _StyleSheet.default.flatten(style),\n styleHeight = _StyleSheet$flatten.height,\n styleWidth = _StyleSheet$flatten.width;\n\n var height = styleHeight || '20px';\n var minWidth = (0, _multiplyStyleLengthValue.default)(height, 2);\n var width = styleWidth > minWidth ? styleWidth : minWidth;\n var trackBorderRadius = (0, _multiplyStyleLengthValue.default)(height, 0.5);\n\n var trackCurrentColor = function () {\n if (value === true) {\n if (trackColor != null && typeof trackColor === 'object') {\n return trackColor.true;\n } else {\n return activeTrackColor !== null && activeTrackColor !== void 0 ? activeTrackColor : defaultActiveTrackColor;\n }\n } else {\n if (trackColor != null && typeof trackColor === 'object') {\n return trackColor.false;\n } else {\n return trackColor !== null && trackColor !== void 0 ? trackColor : defaultTrackColor;\n }\n }\n }();\n\n var thumbCurrentColor = value ? activeThumbColor !== null && activeThumbColor !== void 0 ? activeThumbColor : defaultActiveThumbColor : thumbColor !== null && thumbColor !== void 0 ? thumbColor : defaultThumbColor;\n var thumbHeight = height;\n var thumbWidth = thumbHeight;\n var rootStyle = [styles.root, style, disabled && styles.cursorDefault, {\n height,\n width\n }];\n\n var disabledTrackColor = function () {\n if (value === true) {\n if (typeof activeTrackColor === 'string' && activeTrackColor != null || typeof trackColor === 'object' && trackColor != null && trackColor.true) {\n return trackCurrentColor;\n } else {\n return defaultDisabledTrackColor;\n }\n } else {\n if (typeof trackColor === 'string' && trackColor != null || typeof trackColor === 'object' && trackColor != null && trackColor.false) {\n return trackCurrentColor;\n } else {\n return defaultDisabledTrackColor;\n }\n }\n }();\n\n var disabledThumbColor = function () {\n if (value === true) {\n if (activeThumbColor == null) {\n return defaultDisabledThumbColor;\n } else {\n return thumbCurrentColor;\n }\n } else {\n if (thumbColor == null) {\n return defaultDisabledThumbColor;\n } else {\n return thumbCurrentColor;\n }\n }\n }();\n\n var trackStyle = [styles.track, {\n backgroundColor: disabled ? disabledTrackColor : trackCurrentColor,\n borderRadius: trackBorderRadius\n }];\n var thumbStyle = [styles.thumb, value && styles.thumbActive, {\n backgroundColor: disabled ? disabledThumbColor : thumbCurrentColor,\n height: thumbHeight,\n marginStart: value ? (0, _multiplyStyleLengthValue.default)(thumbWidth, -1) : 0,\n width: thumbWidth\n }];\n var nativeControl = (0, _createElement.default)('input', {\n accessibilityLabel,\n checked: value,\n disabled: disabled,\n onBlur: handleFocusState,\n onChange: handleChange,\n onFocus: handleFocusState,\n ref: forwardedRef,\n style: [styles.nativeControl, styles.cursorInherit],\n type: 'checkbox',\n role: 'switch'\n });\n return /*#__PURE__*/React.createElement(_View.default, (0, _extends2.default)({}, other, {\n style: rootStyle\n }), /*#__PURE__*/React.createElement(_View.default, {\n style: trackStyle\n }), /*#__PURE__*/React.createElement(_View.default, {\n ref: thumbRef,\n style: thumbStyle\n }), nativeControl);\n});\nSwitch.displayName = 'Switch';\n\nvar styles = _StyleSheet.default.create({\n root: {\n cursor: 'pointer',\n userSelect: 'none'\n },\n cursorDefault: {\n cursor: 'default'\n },\n cursorInherit: {\n cursor: 'inherit'\n },\n track: (0, _objectSpread2.default)((0, _objectSpread2.default)({\n forcedColorAdjust: 'none'\n }, _StyleSheet.default.absoluteFillObject), {}, {\n height: '70%',\n margin: 'auto',\n transitionDuration: '0.1s',\n width: '100%'\n }),\n thumb: {\n forcedColorAdjust: 'none',\n alignSelf: 'flex-start',\n borderRadius: '100%',\n boxShadow: thumbDefaultBoxShadow,\n start: '0%',\n transform: [{\n translateZ: 0\n }],\n transitionDuration: '0.1s'\n },\n thumbActive: {\n start: '100%'\n },\n nativeControl: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _StyleSheet.default.absoluteFillObject), {}, {\n height: '100%',\n margin: 0,\n appearance: 'none',\n padding: 0,\n width: '100%'\n })\n});\n\nvar _default = Switch;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar assets = [];\nexport function registerAsset(asset) {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\nexport function getAssetByID(assetId) {\n return assets[assetId - 1];\n}","/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar dataUriPattern = /^data:/;\nexport class ImageUriCache {\n static has(uri) {\n var entries = ImageUriCache._entries;\n var isDataUri = dataUriPattern.test(uri);\n return isDataUri || Boolean(entries[uri]);\n }\n\n static add(uri) {\n var entries = ImageUriCache._entries;\n var lastUsedTimestamp = Date.now();\n\n if (entries[uri]) {\n entries[uri].lastUsedTimestamp = lastUsedTimestamp;\n entries[uri].refCount += 1;\n } else {\n entries[uri] = {\n lastUsedTimestamp,\n refCount: 1\n };\n }\n }\n\n static remove(uri) {\n var entries = ImageUriCache._entries;\n\n if (entries[uri]) {\n entries[uri].refCount -= 1;\n } // Free up entries when the cache is \"full\"\n\n\n ImageUriCache._cleanUpIfNeeded();\n }\n\n static _cleanUpIfNeeded() {\n var entries = ImageUriCache._entries;\n var imageUris = Object.keys(entries);\n\n if (imageUris.length + 1 > ImageUriCache._maximumEntries) {\n var leastRecentlyUsedKey;\n var leastRecentlyUsedEntry;\n imageUris.forEach(uri => {\n var entry = entries[uri];\n\n if ((!leastRecentlyUsedEntry || entry.lastUsedTimestamp < leastRecentlyUsedEntry.lastUsedTimestamp) && entry.refCount === 0) {\n leastRecentlyUsedKey = uri;\n leastRecentlyUsedEntry = entry;\n }\n });\n\n if (leastRecentlyUsedKey) {\n delete entries[leastRecentlyUsedKey];\n }\n }\n }\n\n}\nImageUriCache._maximumEntries = 256;\nImageUriCache._entries = {};\nvar id = 0;\nvar requests = {};\nvar ImageLoader = {\n abort(requestId) {\n var image = requests[\"\" + requestId];\n\n if (image) {\n image.onerror = null;\n image.onload = null;\n image = null;\n delete requests[\"\" + requestId];\n }\n },\n\n getSize(uri, success, failure) {\n var complete = false;\n var interval = setInterval(callback, 16);\n var requestId = ImageLoader.load(uri, callback, errorCallback);\n\n function callback() {\n var image = requests[\"\" + requestId];\n\n if (image) {\n var naturalHeight = image.naturalHeight,\n naturalWidth = image.naturalWidth;\n\n if (naturalHeight && naturalWidth) {\n success(naturalWidth, naturalHeight);\n complete = true;\n }\n }\n\n if (complete) {\n ImageLoader.abort(requestId);\n clearInterval(interval);\n }\n }\n\n function errorCallback() {\n if (typeof failure === 'function') {\n failure();\n }\n\n ImageLoader.abort(requestId);\n clearInterval(interval);\n }\n },\n\n has(uri) {\n return ImageUriCache.has(uri);\n },\n\n load(uri, onLoad, onError) {\n id += 1;\n var image = new window.Image();\n image.onerror = onError;\n\n image.onload = e => {\n // avoid blocking the main thread\n var onDecode = () => onLoad({\n nativeEvent: e\n });\n\n if (typeof image.decode === 'function') {\n // Safari currently throws exceptions when decoding svgs.\n // We want to catch that error and allow the load handler\n // to be forwarded to the onLoad handler in this case\n image.decode().then(onDecode, onDecode);\n } else {\n setTimeout(onDecode, 0);\n }\n };\n\n image.src = uri;\n requests[\"\" + id] = image;\n return id;\n },\n\n prefetch(uri) {\n return new Promise((resolve, reject) => {\n ImageLoader.load(uri, () => {\n // Add the uri to the cache so it can be immediately displayed when used\n // but also immediately remove it to correctly reflect that it has no active references\n ImageUriCache.add(uri);\n ImageUriCache.remove(uri);\n resolve();\n }, reject);\n });\n },\n\n queryCache(uris) {\n var result = {};\n uris.forEach(u => {\n if (ImageUriCache.has(u)) {\n result[u] = 'disk/memory';\n }\n });\n return Promise.resolve(result);\n }\n\n};\nexport default ImageLoader;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"accessibilityLabel\", \"blurRadius\", \"defaultSource\", \"draggable\", \"onError\", \"onLayout\", \"onLoad\", \"onLoadEnd\", \"onLoadStart\", \"pointerEvents\", \"source\", \"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport { getAssetByID } from '../../modules/AssetRegistry';\nimport { createBoxShadowValue } from '../StyleSheet/preprocess';\nimport ImageLoader from '../../modules/ImageLoader';\nimport PixelRatio from '../PixelRatio';\nimport StyleSheet from '../StyleSheet';\nimport TextAncestorContext from '../Text/TextAncestorContext';\nimport View from '../View';\nvar ERRORED = 'ERRORED';\nvar LOADED = 'LOADED';\nvar LOADING = 'LOADING';\nvar IDLE = 'IDLE';\nvar _filterId = 0;\nvar svgDataUriPattern = /^(data:image\\/svg\\+xml;utf8,)(.*)/;\n\nfunction createTintColorSVG(tintColor, id) {\n return tintColor && id != null ? /*#__PURE__*/React.createElement(\"svg\", {\n style: {\n position: 'absolute',\n height: 0,\n visibility: 'hidden',\n width: 0\n }\n }, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"tint-\" + id,\n suppressHydrationWarning: true\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodColor: \"\" + tintColor,\n key: tintColor\n }), /*#__PURE__*/React.createElement(\"feComposite\", {\n in2: \"SourceAlpha\",\n operator: \"atop\"\n })))) : null;\n}\n\nfunction getFlatStyle(style, blurRadius, filterId) {\n var flatStyle = StyleSheet.flatten(style);\n var filter = flatStyle.filter,\n resizeMode = flatStyle.resizeMode,\n shadowOffset = flatStyle.shadowOffset,\n tintColor = flatStyle.tintColor; // Add CSS filters\n // React Native exposes these features as props and proprietary styles\n\n var filters = [];\n var _filter = null;\n\n if (filter) {\n filters.push(filter);\n }\n\n if (blurRadius) {\n filters.push(\"blur(\" + blurRadius + \"px)\");\n }\n\n if (shadowOffset) {\n var shadowString = createBoxShadowValue(flatStyle);\n\n if (shadowString) {\n filters.push(\"drop-shadow(\" + shadowString + \")\");\n }\n }\n\n if (tintColor && filterId != null) {\n filters.push(\"url(#tint-\" + filterId + \")\");\n }\n\n if (filters.length > 0) {\n _filter = filters.join(' ');\n } // These styles are converted to CSS filters applied to the\n // element displaying the background image.\n\n\n delete flatStyle.blurRadius;\n delete flatStyle.shadowColor;\n delete flatStyle.shadowOpacity;\n delete flatStyle.shadowOffset;\n delete flatStyle.shadowRadius;\n delete flatStyle.tintColor; // These styles are not supported on View\n\n delete flatStyle.overlayColor;\n delete flatStyle.resizeMode;\n return [flatStyle, resizeMode, _filter, tintColor];\n}\n\nfunction resolveAssetDimensions(source) {\n if (typeof source === 'number') {\n var _getAssetByID = getAssetByID(source),\n _height = _getAssetByID.height,\n _width = _getAssetByID.width;\n\n return {\n height: _height,\n width: _width\n };\n } else if (source != null && !Array.isArray(source) && typeof source === 'object') {\n var _height2 = source.height,\n _width2 = source.width;\n return {\n height: _height2,\n width: _width2\n };\n }\n}\n\nfunction resolveAssetUri(source) {\n var uri = null;\n\n if (typeof source === 'number') {\n // get the URI from the packager\n var asset = getAssetByID(source);\n\n if (asset == null) {\n throw new Error(\"Image: asset with ID \\\"\" + source + \"\\\" could not be found. Please check the image source or packager.\");\n }\n\n var scale = asset.scales[0];\n\n if (asset.scales.length > 1) {\n var preferredScale = PixelRatio.get(); // Get the scale which is closest to the preferred scale\n\n scale = asset.scales.reduce((prev, curr) => Math.abs(curr - preferredScale) < Math.abs(prev - preferredScale) ? curr : prev);\n }\n\n var scaleSuffix = scale !== 1 ? \"@\" + scale + \"x\" : '';\n uri = asset ? asset.httpServerLocation + \"/\" + asset.name + scaleSuffix + \".\" + asset.type : '';\n } else if (typeof source === 'string') {\n uri = source;\n } else if (source && typeof source.uri === 'string') {\n uri = source.uri;\n }\n\n if (uri) {\n var match = uri.match(svgDataUriPattern); // inline SVG markup may contain characters (e.g., #, \") that need to be escaped\n\n if (match) {\n var prefix = match[1],\n svg = match[2];\n var encodedSvg = encodeURIComponent(svg);\n return \"\" + prefix + encodedSvg;\n }\n }\n\n return uri;\n}\n\nvar Image = /*#__PURE__*/React.forwardRef((props, ref) => {\n var accessibilityLabel = props.accessibilityLabel,\n blurRadius = props.blurRadius,\n defaultSource = props.defaultSource,\n draggable = props.draggable,\n onError = props.onError,\n onLayout = props.onLayout,\n onLoad = props.onLoad,\n onLoadEnd = props.onLoadEnd,\n onLoadStart = props.onLoadStart,\n pointerEvents = props.pointerEvents,\n source = props.source,\n style = props.style,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (props.children) {\n throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.');\n }\n }\n\n var _React$useState = React.useState(() => {\n var uri = resolveAssetUri(source);\n\n if (uri != null) {\n var isLoaded = ImageLoader.has(uri);\n\n if (isLoaded) {\n return LOADED;\n }\n }\n\n return IDLE;\n }),\n state = _React$useState[0],\n updateState = _React$useState[1];\n\n var _React$useState2 = React.useState({}),\n layout = _React$useState2[0],\n updateLayout = _React$useState2[1];\n\n var hasTextAncestor = React.useContext(TextAncestorContext);\n var hiddenImageRef = React.useRef(null);\n var filterRef = React.useRef(_filterId++);\n var requestRef = React.useRef(null);\n var shouldDisplaySource = state === LOADED || state === LOADING && defaultSource == null;\n\n var _getFlatStyle = getFlatStyle(style, blurRadius, filterRef.current),\n flatStyle = _getFlatStyle[0],\n _resizeMode = _getFlatStyle[1],\n filter = _getFlatStyle[2],\n tintColor = _getFlatStyle[3];\n\n var resizeMode = props.resizeMode || _resizeMode || 'cover';\n var selectedSource = shouldDisplaySource ? source : defaultSource;\n var displayImageUri = resolveAssetUri(selectedSource);\n var imageSizeStyle = resolveAssetDimensions(selectedSource);\n var backgroundImage = displayImageUri ? \"url(\\\"\" + displayImageUri + \"\\\")\" : null;\n var backgroundSize = getBackgroundSize(); // Accessibility image allows users to trigger the browser's image context menu\n\n var hiddenImage = displayImageUri ? createElement('img', {\n alt: accessibilityLabel || '',\n style: styles.accessibilityImage$raw,\n draggable: draggable || false,\n ref: hiddenImageRef,\n src: displayImageUri\n }) : null;\n\n function getBackgroundSize() {\n if (hiddenImageRef.current != null && (resizeMode === 'center' || resizeMode === 'repeat')) {\n var _hiddenImageRef$curre = hiddenImageRef.current,\n naturalHeight = _hiddenImageRef$curre.naturalHeight,\n naturalWidth = _hiddenImageRef$curre.naturalWidth;\n var _height3 = layout.height,\n _width3 = layout.width;\n\n if (naturalHeight && naturalWidth && _height3 && _width3) {\n var scaleFactor = Math.min(1, _width3 / naturalWidth, _height3 / naturalHeight);\n var x = Math.ceil(scaleFactor * naturalWidth);\n var y = Math.ceil(scaleFactor * naturalHeight);\n return x + \"px \" + y + \"px\";\n }\n }\n }\n\n function handleLayout(e) {\n if (resizeMode === 'center' || resizeMode === 'repeat' || onLayout) {\n var _layout = e.nativeEvent.layout;\n onLayout && onLayout(e);\n updateLayout(_layout);\n }\n } // Image loading\n\n\n var uri = resolveAssetUri(source);\n React.useEffect(() => {\n abortPendingRequest();\n\n if (uri != null) {\n updateState(LOADING);\n\n if (onLoadStart) {\n onLoadStart();\n }\n\n requestRef.current = ImageLoader.load(uri, function load(e) {\n updateState(LOADED);\n\n if (onLoad) {\n onLoad(e);\n }\n\n if (onLoadEnd) {\n onLoadEnd();\n }\n }, function error() {\n updateState(ERRORED);\n\n if (onError) {\n onError({\n nativeEvent: {\n error: \"Failed to load resource \" + uri + \" (404)\"\n }\n });\n }\n\n if (onLoadEnd) {\n onLoadEnd();\n }\n });\n }\n\n function abortPendingRequest() {\n if (requestRef.current != null) {\n ImageLoader.abort(requestRef.current);\n requestRef.current = null;\n }\n }\n\n return abortPendingRequest;\n }, [uri, requestRef, updateState, onError, onLoad, onLoadEnd, onLoadStart]);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, {\n accessibilityLabel: accessibilityLabel,\n onLayout: handleLayout,\n pointerEvents: pointerEvents,\n ref: ref,\n style: [styles.root, hasTextAncestor && styles.inline, imageSizeStyle, flatStyle]\n }), /*#__PURE__*/React.createElement(View, {\n style: [styles.image, resizeModeStyles[resizeMode], {\n backgroundImage,\n filter\n }, backgroundSize != null && {\n backgroundSize\n }],\n suppressHydrationWarning: true\n }), hiddenImage, createTintColorSVG(tintColor, filterRef.current));\n});\nImage.displayName = 'Image'; // $FlowIgnore: This is the correct type, but casting makes it unhappy since the variables aren't defined yet\n\nvar ImageWithStatics = Image;\n\nImageWithStatics.getSize = function (uri, success, failure) {\n ImageLoader.getSize(uri, success, failure);\n};\n\nImageWithStatics.prefetch = function (uri) {\n return ImageLoader.prefetch(uri);\n};\n\nImageWithStatics.queryCache = function (uris) {\n return ImageLoader.queryCache(uris);\n};\n\nvar styles = StyleSheet.create({\n root: {\n flexBasis: 'auto',\n overflow: 'hidden',\n zIndex: 0\n },\n inline: {\n display: 'inline-flex'\n },\n image: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n backgroundColor: 'transparent',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n height: '100%',\n width: '100%',\n zIndex: -1\n }),\n accessibilityImage$raw: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n height: '100%',\n opacity: 0,\n width: '100%',\n zIndex: -1\n })\n});\nvar resizeModeStyles = StyleSheet.create({\n center: {\n backgroundSize: 'auto'\n },\n contain: {\n backgroundSize: 'contain'\n },\n cover: {\n backgroundSize: 'cover'\n },\n none: {\n backgroundPosition: '0',\n backgroundSize: 'auto'\n },\n repeat: {\n backgroundPosition: '0',\n backgroundRepeat: 'repeat',\n backgroundSize: 'auto'\n },\n stretch: {\n backgroundSize: '100% 100%'\n }\n});\nexport default ImageWithStatics;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _cssInJsUtils = require('css-in-js-utils');\n\nvar CROSS_FADE_REGEX = /cross-fade\\(/g;\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\n\nfunction crossFade(property, value) {\n if (typeof value === 'string' && !(0, _cssInJsUtils.isPrefixedValue)(value) && value.indexOf('cross-fade(') !== -1) {\n return prefixes.map(function (prefix) {\n return value.replace(CROSS_FADE_REGEX, prefix + 'cross-fade(');\n });\n }\n}","import { WorksheetAnswerElement, WorksheetSubmissions } from './worksheets';\n\nexport interface ITechline {\n techlineId: string;\n backgroundImage: string;\n message: string;\n header: string;\n showButton: boolean;\n buttonText: string;\n buttonLink: string;\n linkOne: string;\n linkTwo: string;\n linkThree: string;\n}\nexport enum TechlineStatusCode {\n DRAFT = 'DRAFT',\n OPEN = 'OPEN',\n OPEN_ESCALATED = 'OPEN-ESCALATED',\n UPDATE_REQUESTED = 'UPDATE_REQUESTED',\n PENDING_TECHLINE = 'PENDING TECHLINE',\n CLOSED = 'CLOSED',\n CLOSED_RESOLVED = 'CLOSED-RESOLVED',\n}\n\nexport interface RetailerProfile {\n city: string;\n districtCode: string;\n districtId: string;\n isPrimary: boolean;\n name: string;\n postalCode: string;\n regionCode: string;\n regionId: string;\n retailerNumber: string;\n retailerProfileId: string;\n state: string;\n userName: string;\n zoneCode: string;\n zoneId: string;\n soaUserId?: string;\n}\n\nexport interface Retailer {\n accidentFlag: boolean;\n airbagRuptureFlag: boolean;\n asset: { assetId: string; enginId: string; transmissionNumber: string };\n caseId: string;\n caseTypes: { caseType: string; caseTypeSourceId: string; isPrimary: string }[];\n customerConcern: string;\n deathFlag: boolean;\n diagnosticTroubleCodes: [];\n didTheConditionImprove: string;\n fireFlag: boolean;\n hasBeenAbleToDuplicate: boolean;\n injuryFlag: boolean;\n mileage: number;\n modifiedOn: string;\n modifiedOnDescription: string;\n previousDiagnosisAndRepairs: string;\n previousMileage: number;\n previousRONumber: string;\n product: {\n colorCategory: string;\n model: string;\n modelNumber: string;\n modelYear: string;\n optionCode: string;\n productId: string;\n };\n propertyDamage: string;\n repairCode: string;\n repairOrderNumber: string;\n repairOrderOpenDate: string;\n retailerProfiles: RetailerProfile[];\n retailerUniqueProfiles?: RetailerProfile[];\n rolloverFlag: boolean;\n rolloverFireAccidentInjuryDeathDamage: string;\n section: string;\n stateCode: number;\n statusCode: number;\n subSection: string;\n symptoms: [];\n techShareCaseClosureDescription: string;\n techlineStatusCode: TechlineStatusCode;\n technician5StepsBeforeFailureDuplication: string;\n technicianDescription: string;\n vehicleHasBeenInBefore: boolean;\n wasTheVehicleRepaired: boolean;\n werePartsReplaced: boolean;\n whatPartsWereReplaced: string;\n worksheetSubmissions: WorksheetSubmissions[];\n}\n\nexport interface RetrieveCaseResponse {\n caseDetails: {\n message: string;\n results: Retailer;\n status: string;\n statusCode: number;\n };\n vinDetails: any;\n caseAssetsDetails: any;\n caseTypeDetails?: any;\n}\n\nexport interface WorksheetOnCaseSubmit {\n submissions: { submissionId: string; worksheetId: string; answers: WorksheetAnswerElement[] }[];\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"];\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n sm: alignDirection\n}), PropTypes.shape({\n md: alignDirection\n}), PropTypes.shape({\n lg: alignDirection\n}), PropTypes.shape({\n xl: alignDirection\n})]);\nvar defaultProps = {\n align: 'left',\n alignRight: false,\n flip: true\n};\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n align = _ref.align,\n alignRight = _ref.alignRight,\n rootCloseEvent = _ref.rootCloseEvent,\n flip = _ref.flip,\n showProps = _ref.show,\n renderOnMount = _ref.renderOnMount,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n popperConfig = _ref.popperConfig,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isNavbar = useContext(NavbarContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n popperRef = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n var keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n var brkPoint = keys[0];\n var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n // left in addition to align left classes.\n // Reuse alignRight to toggle the class below.\n\n alignRight = direction === 'left';\n alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n }\n } else if (align === 'right') {\n alignRight = true;\n }\n }\n\n var _useDropdownMenu = useDropdownMenu({\n flip: flip,\n rootCloseEvent: rootCloseEvent,\n show: showProps,\n alignEnd: alignRight,\n usePopper: !isNavbar && alignClasses.length === 0,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n })\n }),\n menuProps = _useDropdownMenu[0],\n _useDropdownMenu$ = _useDropdownMenu[1],\n hasShown = _useDropdownMenu$.hasShown,\n popper = _useDropdownMenu$.popper,\n show = _useDropdownMenu$.show,\n alignEnd = _useDropdownMenu$.alignEnd,\n toggle = _useDropdownMenu$.toggle;\n\n menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = function () {\n return toggle == null ? void 0 : toggle(false);\n };\n\n menuProps.alignRight = alignEnd;\n }\n\n var style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = _extends({}, props.style, menuProps.style);\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n style: style,\n className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return