{ "version": 3, "sources": ["virtual:metro:__appbundleprelude__", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/classCallCheck.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/typeof.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/toPrimitive.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/toPropertyKey.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/createClass.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/assertThisInitialized.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/getPrototypeOf.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/setPrototypeOf.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/inherits.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react.macos.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native.macos.js", "../excel_shared_ux/lib/Components/Anchor/Anchor.js", "../excel_shared_ux/lib/Components/Anchor/index.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/arrayWithHoles.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/arrayLikeToArray.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/nonIterableRest.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/slicedToArray.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-types@0.40.0-4de5b93da8da63e35416/node_modules/@fluentui-react-native/theme-types/src/context.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-types@0.40.0-4de5b93da8da63e35416/node_modules/@fluentui-react-native/theme-types/src/index.ts", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react/jsx-runtime.macos.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme@0.11.12-63f77c26b3c88851ab28/node_modules/@fluentui-react-native/theme/src/ThemeProvider.tsx", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/iterableToArray.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/toConsumableArray.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/immutable-merge/Merge.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/memo-cache/getCacheEntry.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/memo-cache/getMemoCache.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/memo-cache/memoize.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/merge-props/mergeStyles.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/merge-props/mergeProps.ts", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/component-patterns/render.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/component-patterns/withSlots.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/component-patterns/stagedComponent.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/jsx-runtime.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework-base@0.2.1-f70113f570b513c2ce2a/node_modules/@fluentui-react-native/framework-base/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme@0.11.12-63f77c26b3c88851ab28/node_modules/@fluentui-react-native/theme/src/mergeTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme@0.11.12-63f77c26b3c88851ab28/node_modules/@fluentui-react-native/theme/src/themeReference.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme@0.11.12-63f77c26b3c88851ab28/node_modules/@fluentui-react-native/theme/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-windows@0.53.0-bf5339f4a8beea56c131/node_modules/@fluentui-react-native/design-tokens-windows/light/tokens-global.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-tokens@0.27.7-66569483e6fe26319320/node_modules/@fluentui-react-native/theme-tokens/src/tokens-global.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/hc/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-windows@0.53.0-bf5339f4a8beea56c131/node_modules/@fluentui-react-native/design-tokens-windows/dark/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-windows@0.53.0-bf5339f4a8beea56c131/node_modules/@fluentui-react-native/design-tokens-windows/dark/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-windows@0.53.0-bf5339f4a8beea56c131/node_modules/@fluentui-react-native/design-tokens-windows/light/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-windows@0.53.0-bf5339f4a8beea56c131/node_modules/@fluentui-react-native/design-tokens-windows/light/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/assert-never@1.2.1-6f97155322598f5906f8/node_modules/assert-never/index.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/hc/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-tokens@0.27.7-66569483e6fe26319320/node_modules/@fluentui-react-native/theme-tokens/src/highContrast/tokens-alias.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-tokens@0.27.7-66569483e6fe26319320/node_modules/@fluentui-react-native/theme-tokens/src/getTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theme-tokens@0.27.7-66569483e6fe26319320/node_modules/@fluentui-react-native/theme-tokens/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theming-utils@0.26.7-2b6e32d71715573365cf/node_modules/@fluentui-react-native/theming-utils/src/getCurrentAppearance.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theming-utils@0.26.7-2b6e32d71715573365cf/node_modules/@fluentui-react-native/theming-utils/src/isHighContrast.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theming-utils@0.26.7-2b6e32d71715573365cf/node_modules/@fluentui-react-native/theming-utils/src/mapPipelineToTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theming-utils@0.26.7-2b6e32d71715573365cf/node_modules/@fluentui-react-native/theming-utils/src/mapPipelineToShadow.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-theming-utils@0.26.7-2b6e32d71715573365cf/node_modules/@fluentui-react-native/theming-utils/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/createAliasTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/defaultColors.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/stockWebPalette.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/defaultTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/createDefaultTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-default-theme@0.26.13-a564d9b847d0dd6c38d9/node_modules/@fluentui-react-native/default-theme/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createAliasesFromPalette.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createBrandedThemeWithAlias.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/black/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/black/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/colorful/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/colorful/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/darkgray/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-win32@0.53.0-b19b49287041b0061c66/node_modules/@fluentui-react-native/design-tokens-win32/darkgray/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/highContrast/tokens-alias.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/getOfficeTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createOfficeAliasTokens.ts", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/defineProperty.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/paletteFromOfficeColors.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createPartialOfficeTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createFontAliasTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/getThemeTypography.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/NativeModule/fallbackOfficeModule.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/NativeModule/hostThemeSetting.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/NativeModule/getThemingModule.native.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/createOfficeTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/NativeModule/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-win32-theme@0.35.0-f52db71b156f54aa0e95/node_modules/@fluentui-react-native/win32-theme/src/index.ts", "../excel_shared_ux/lib/Components/BusinessBar/types.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native-svg.macos.js", "../excel_shared_ux/assets/BusinessBar/alerterror.16.svgx", "../excel_shared_ux/assets/BusinessBar/close.16.svgx", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/@office-iss/sdx-string-resources.macos.js", "../excel_shared_ux/assets/BusinessBar/strings.resjson", "../excel_shared_ux/lib/Components/BusinessBar/internal/BusinessBar.native.js", "../excel_shared_ux/lib/Components/BusinessBar/BusinessBarThemeWrapper.native.js", "../excel_shared_ux/lib/Components/BusinessBar/index.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/Button.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-adapters@0.13.5-124b3e03fbadc3735031/node_modules/@fluentui-react-native/adapters/src/adapters.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-adapters@0.13.5-124b3e03fbadc3735031/node_modules/@fluentui-react-native/adapters/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/color-tokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/tokenBuilder.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/border-tokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/token.function.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/text-tokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/layout-tokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/shadow-tokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tokens@0.23.7-181001beec79373793a9/node_modules/@fluentui-react-native/tokens/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-slot@0.6.12-7912521e53081d75da91/node_modules/@fluentui-react-native/use-slot/src/useSlot.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-slot@0.6.12-7912521e53081d75da91/node_modules/@fluentui-react-native/use-slot/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-slots@0.10.12-0f5a36d1761f755b3926/node_modules/@fluentui-react-native/use-slots/src/buildUseSlots.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-slots@0.10.12-0f5a36d1761f755b3926/node_modules/@fluentui-react-native/use-slots/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-tokens@0.6.12-e71bf3759e35ff3cb226/node_modules/@fluentui-react-native/use-tokens/src/applyPropsToTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-tokens@0.6.12-e71bf3759e35ff3cb226/node_modules/@fluentui-react-native/use-tokens/src/applyTokenLayers.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-tokens@0.6.12-e71bf3759e35ff3cb226/node_modules/@fluentui-react-native/use-tokens/src/buildUseTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-tokens@0.6.12-e71bf3759e35ff3cb226/node_modules/@fluentui-react-native/use-tokens/src/patchTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-tokens@0.6.12-e71bf3759e35ff3cb226/node_modules/@fluentui-react-native/use-tokens/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-styling@0.13.12-6ea0b54ef9bfdc84365a/node_modules/@fluentui-react-native/use-styling/src/buildProps.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-styling@0.13.12-6ea0b54ef9bfdc84365a/node_modules/@fluentui-react-native/use-styling/src/buildUseStyling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-use-styling@0.13.12-6ea0b54ef9bfdc84365a/node_modules/@fluentui-react-native/use-styling/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-composition@0.11.12-2b32b12c2ff4f7cdbc2f/node_modules/@fluentui-react-native/composition/src/composeFactory.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-composition@0.11.12-2b32b12c2ff4f7cdbc2f/node_modules/@fluentui-react-native/composition/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/useFluentTheme.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/themeHelper.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/compose.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/compressible.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/useStyling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/useTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-framework@0.14.13-5dac858447569a53e3e1/node_modules/@fluentui-react-native/framework/src/index.ts", "../../../../npm/.store/sdx_lineage/@babel-runtime@7.24.6-50582f1addde549dfdc1/node_modules/@babel/runtime/helpers/extends.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/events.types.ts", "../../../../npm/.store/sdx_lineage/invariant@2.2.4-fea6fd5193392204d546/node_modules/invariant/browser.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/Pressability/HoverState.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/Pressability/InternalTypes.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/Pressability/Pressability.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/usePressability.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useAsPressable.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/usePressableState.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/setAndForwardRef.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useViewCommandFocus.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useSelectedKey.hooks.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useAsToggle.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useConst.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useControllableValue.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useAsToggleWithEvent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useKeyProps.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/useOnPressWithFocus.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/getAccessibilityState.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-interactive-hooks@0.27.15-fe82dd2f10e22b5db010/node_modules/@fluentui-react-native/interactive-hooks/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/Text.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/TextTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/Text.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/Variants.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/deprecated/Text.types.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-settings@0.15.11-d12c246438b7e095878c/node_modules/@uifabricshared/foundation-settings/src/Settings.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-settings@0.15.11-d12c246438b7e095878c/node_modules/@uifabricshared/foundation-settings/src/index.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-composable@0.13.11-e2f5d0b08eb5742d0ab4/node_modules/@uifabricshared/foundation-composable/src/Composable.slots.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-composable@0.13.11-e2f5d0b08eb5742d0ab4/node_modules/@uifabricshared/foundation-composable/src/Composable.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-composable@0.13.11-e2f5d0b08eb5742d0ab4/node_modules/@uifabricshared/foundation-composable/src/index.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-themed-settings@0.12.11-dc094b7e056c55d3a715/node_modules/@uifabricshared/themed-settings/src/CustomSettings.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-themed-settings@0.12.11-dc094b7e056c55d3a715/node_modules/@uifabricshared/themed-settings/src/index.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-theming-ramp@0.20.13-9c007c3be2889a4856af/node_modules/@uifabricshared/theming-ramp/src/SettingsWorker.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-theming-ramp@0.20.13-9c007c3be2889a4856af/node_modules/@uifabricshared/theming-ramp/src/Theme.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-theming-ramp@0.20.13-9c007c3be2889a4856af/node_modules/@uifabricshared/theming-ramp/src/index.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-tokens@0.15.13-86baf68ee207979ff330/node_modules/@uifabricshared/foundation-tokens/src/Token.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-tokens@0.15.13-86baf68ee207979ff330/node_modules/@uifabricshared/foundation-tokens/src/Token.function.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-tokens@0.15.13-86baf68ee207979ff330/node_modules/@uifabricshared/foundation-tokens/src/index.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-compose@1.15.13-cef5f83057e33a7c6a65/node_modules/@uifabricshared/foundation-compose/src/useStyling.ts", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-compose@1.15.13-cef5f83057e33a7c6a65/node_modules/@uifabricshared/foundation-compose/src/compose.tsx", "../../../../npm/.store/sdx_lineage/@uifabricshared-foundation-compose@1.15.13-cef5f83057e33a7c6a65/node_modules/@uifabricshared/foundation-compose/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/deprecated/Text.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/deprecated/Text.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-text@0.24.17-e04f8957555c9e766eb7/node_modules/@fluentui-react-native/text/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/legacy/Icon.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/legacy/useIconProps.hooks.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/FontIcon/FontIcon.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/SvgIcon/SvgIcon.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/FontIcon/useFontIcon.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/FontIcon/FontIcon.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/SvgIcon/useSvgIcon.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/SvgIcon/SvgIcon.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/Icon.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-icon@0.21.19-e227955c3a06d4688ae4/node_modules/@fluentui-react-native/icon/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/Button.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/Button.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/PrimaryButton/PrimaryButton.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/PrimaryButton/PrimaryButton.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/PrimaryButton/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/StealthButton/StealthButton.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/StealthButton/StealthButton.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/deprecated/StealthButton/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/Button.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-experimental-activity-indicator@0.10.14-c384c0b86852940ad64e/node_modules/@fluentui-react-native/experimental-activity-indicator/src/ActivityIndicator.types.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-experimental-activity-indicator@0.10.14-c384c0b86852940ad64e/node_modules/@fluentui-react-native/experimental-activity-indicator/src/ActivityIndicator.styling.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-experimental-activity-indicator@0.10.14-c384c0b86852940ad64e/node_modules/@fluentui-react-native/experimental-activity-indicator/src/CoreActivityIndicator.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-experimental-activity-indicator@0.10.14-c384c0b86852940ad64e/node_modules/@fluentui-react-native/experimental-activity-indicator/src/ActivityIndicator.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-experimental-activity-indicator@0.10.14-c384c0b86852940ad64e/node_modules/@fluentui-react-native/experimental-activity-indicator/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-styling-utils@0.7.5-127020545bd87ce62071/node_modules/@fluentui-react-native/styling-utils/src/getMarginAdjustment.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-styling-utils@0.7.5-127020545bd87ce62071/node_modules/@fluentui-react-native/styling-utils/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ButtonColorTokens.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ButtonFontTokens.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ButtonTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/Button.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/useButton.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/Button.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButton.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButtonColorTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButtonFontTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButtonTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButton.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/CompoundButton.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/CompoundButton/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/FAB/FAB.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/FAB/FAB.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/FAB/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/ToggleButton.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/ToggleButtonColorTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/ToggleButton.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/useToggleButton.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/ToggleButton.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/ToggleButton/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-button@0.39.15-589a622df88080ce122c/node_modules/@fluentui-react-native/button/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/Callout.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/Callout.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/Utilities/codegenNativeCommands.macos.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/Utilities/codegenNativeComponent.macos.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/NativeComponent/NativeComponentRegistry.macos.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/NativeComponent/ViewConfigIgnore.macos.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/ReactNative/RendererProxy.macos.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/CalloutNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/MacOSCalloutNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/Callout.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-callout@0.27.13-ff4bd006c4715299ea8b/node_modules/@fluentui-react-native/callout/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/deprecated/Checkbox.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/deprecated/Checkbox.settings.android.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/deprecated/Checkbox.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/deprecated/Checkbox.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/Checkbox.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/Checkbox.macos.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/useCheckbox.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-checkbox@0.23.19-6904c97c883906678b7e/node_modules/@fluentui-react-native/checkbox/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenu.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-zone@0.21.11-4fe4b85943f812c06c4a/node_modules/@fluentui-react-native/focus-zone/src/FocusZone.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-zone@0.21.11-4fe4b85943f812c06c4a/node_modules/@fluentui-react-native/focus-zone/src/FocusZoneNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-zone@0.21.11-4fe4b85943f812c06c4a/node_modules/@fluentui-react-native/focus-zone/src/FocusZone.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-zone@0.21.11-4fe4b85943f812c06c4a/node_modules/@fluentui-react-native/focus-zone/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenu.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenu.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenuItem.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenuItem.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/ContextualMenuItem.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/Submenu.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/Submenu.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/Submenu.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/SubmenuItem.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/SubmenuItem.settings.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/SubmenuItem.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-contextual-menu@0.24.27-5da54756cc87e172f28c/node_modules/@fluentui-react-native/contextual-menu/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-trap-zone@0.12.16-6a6f254fd3c1ffc64009/node_modules/@fluentui-react-native/focus-trap-zone/src/FocusTrapZoneNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-trap-zone@0.12.16-6a6f254fd3c1ffc64009/node_modules/@fluentui-react-native/focus-trap-zone/src/FocusTrapZone.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-focus-trap-zone@0.12.16-6a6f254fd3c1ffc64009/node_modules/@fluentui-react-native/focus-trap-zone/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/Link.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/LinkTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/Link.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/useLink.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/Link.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/legacy/Link.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/legacy/Link.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/legacy/Link.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-link@0.23.19-50f63608726fd07ad047/node_modules/@fluentui-react-native/link/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.helpers.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.icon.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.initials.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.initialsBackground.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.photo.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.ring.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tokens.root.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/PersonaCoin.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona-coin@0.15.13-715dd76521ac84523077/node_modules/@fluentui-react-native/persona-coin/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.tokens.coin.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.tokens.root.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.helpers.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.tokens.stack.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.tokens.texts.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/Persona.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-persona@0.16.13-787dccdd44ef21f2a120/node_modules/@fluentui-react-native/persona/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-pressable@0.12.15-a786f27447afeba9c427/node_modules/@fluentui-react-native/pressable/src/Pressable.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-pressable@0.12.15-a786f27447afeba9c427/node_modules/@fluentui-react-native/pressable/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/MacOSRadioButtonNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/RadioButton.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/RadioGroup.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/RadioGroup.settings.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/RadioGroup.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/legacy/RadioButton.macos.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-radio-group@0.21.27-0a0bfb5057aabb9f8fb3/node_modules/@fluentui-react-native/radio-group/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-separator@0.18.13-349d80c861b7c2bfb3a4/node_modules/@fluentui-react-native/separator/src/Separator.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-separator@0.18.13-349d80c861b7c2bfb3a4/node_modules/@fluentui-react-native/separator/src/SeparatorTokens.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-separator@0.18.13-349d80c861b7c2bfb3a4/node_modules/@fluentui-react-native/separator/src/Separator.styling.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-separator@0.18.13-349d80c861b7c2bfb3a4/node_modules/@fluentui-react-native/separator/src/Separator.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-separator@0.18.13-349d80c861b7c2bfb3a4/node_modules/@fluentui-react-native/separator/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-menu-button@0.13.30-c5665bab547a3135d5b5/node_modules/@fluentui-react-native/menu-button/src/MenuButton.types.ts", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native/Libraries/Image/resolveAssetSource.macos.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-menu-button@0.13.30-c5665bab547a3135d5b5/node_modules/@fluentui-react-native/menu-button/src/MacOSMenuButtonNativeComponent.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-menu-button@0.13.30-c5665bab547a3135d5b5/node_modules/@fluentui-react-native/menu-button/src/MenuButton.macos.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-menu-button@0.13.30-c5665bab547a3135d5b5/node_modules/@fluentui-react-native/menu-button/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/Tab.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/Tab.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/TabColorTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/TabTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/TabListContext.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/useTab.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/useTabAnimation.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/Tab/Tab.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/TabList.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/TabListTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/TabList.styling.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/useTabList.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabListAnimatedIndicator/TabListAnimatedIndicator.types.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabListAnimatedIndicator/useAnimatedIndicatorStyles.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabListAnimatedIndicator/TabListAnimatedIndicator.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/TabList/TabList.tsx", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-tablist@0.7.15-99993710a744d85b8dfe/node_modules/@fluentui-react-native/tablist/src/index.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native@0.42.24-b96d10e91930b81601d1/node_modules/@fluentui/react-native/src/index.ts", "../excel_shared_ux/lib/Components/ButtonGroup/ButtonGroup.native.js", "../excel_shared_ux/lib/Components/ButtonGroup/index.js", "../excel_shared_ux/lib/Components/Link/Link.native.js", "../excel_shared_ux/lib/Components/Link/index.js", "../excel_shared_ux/lib/Components/Footer/Footer.styles.js", "../excel_shared_ux/lib/Components/Footer/Footer.native.js", "../excel_shared_ux/lib/Components/Footer/index.js", "../excel_shared_ux/lib/Components/FontScaledSvg/FontScaledSvg.native.js", "../excel_shared_ux/lib/Components/FontScaledSvg/index.js", "../excel_shared_ux/lib/Components/FontScaledIconButton/FontScaledIconButton.native.js", "../excel_shared_ux/lib/Components/FontScaledIconButton/index.js", "../excel_shared_ux/lib/Components/Filter/DisplayLocation/DisplayLocation.styles.js", "../excel_shared_ux/lib/Components/Filter/DisplayLocation/DisplayLocation.native.js", "../excel_shared_ux/lib/Components/Filter/DisplayLocation/index.js", "../excel_shared_ux/lib/Components/Filter/RangeInput/RangeInput.styles.js", "../excel_shared_ux/assets/Filter/strings.resjson", "../excel_shared_ux/assets/Filter/commit.svgx", "../excel_shared_ux/lib/Components/Filter/RangeInput/RangeInput.native.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/Filter.helper.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/DisplayFilter.native.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/Filter.styles.js", "../excel_shared_ux/assets/Filter/filter.svgx", "../excel_shared_ux/assets/Filter/chevron.svgx", "../excel_shared_ux/lib/Components/Filter/FilterSection/FilterButton.native.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/FilterSubmenuItem.macos.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/FilterSection.native.js", "../excel_shared_ux/lib/Components/Filter/FilterSection/index.js", "../excel_shared_ux/lib/Components/Filter/index.js", "../excel_shared_ux/lib/Components/rangePicker/RangePicker.js", "../excel_shared_ux/lib/Components/rangePicker/native-common/RangePickerSelectionInput.js", "../excel_shared_ux/lib/Components/rangePicker/index.native.js", "../excel_shared_ux/lib/Components/ScrollableList/native-common/ExcelScrollableList.js", "../excel_shared_ux/lib/Components/ScrollableList/index.native.js", "../excel_shared_ux/lib/Components/Spinner/LoadingSpinner.native.js", "../excel_shared_ux/lib/Components/Spinner/index.js", "../excel_shared_ux/assets/UserActivityUX/strings.resjson", "../excel_shared_ux/lib/Components/UserActivityUX/types.js", "../../../../npm/.store/sdx_lineage/moment@2.30.1-170d6b4846797a86730f/node_modules/moment/moment.js", "../excel_shared_ux/assets/UserActivityUX/deleteCellsShiftLeft.16.svgx", "../excel_shared_ux/assets/UserActivityUX/deleteCellsShiftUp.16.svgx", "../excel_shared_ux/assets/UserActivityUX/deleteColumns.16.svgx", "../excel_shared_ux/assets/UserActivityUX/deleteRows.16.svgx", "../excel_shared_ux/assets/UserActivityUX/deleteSheet.16.svgx", "../excel_shared_ux/assets/UserActivityUX/editIcon.16.svgx", "../excel_shared_ux/assets/UserActivityUX/insertCellsShiftDown.16.svgx", "../excel_shared_ux/assets/UserActivityUX/insertCellsShiftRight.16.svgx", "../excel_shared_ux/assets/UserActivityUX/insertColumns.16.svgx", "../excel_shared_ux/assets/UserActivityUX/insertRows.16.svgx", "../excel_shared_ux/assets/UserActivityUX/insertWorksheet.16.svgx", "../excel_shared_ux/assets/UserActivityUX/mergeCells.16.svgx", "../excel_shared_ux/assets/UserActivityUX/rangeDrag.32.svgx", "../excel_shared_ux/assets/UserActivityUX/sortUp.16.svgx", "../excel_shared_ux/assets/UserActivityUX/splitCells.16.svgx", "../excel_shared_ux/lib/Utilities/UserActivityUX/Helper.js", "../excel_shared_ux/lib/Components/UserActivityUX/UserActivityCard/UserActivityCard.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/NewOldValue/NewOldValue.styles.js", "../excel_shared_ux/assets/UserActivityUX/newValueIcon.svgx", "../excel_shared_ux/assets/UserActivityUX/oldValueIcon.svgx", "../excel_shared_ux/lib/Components/UserActivityUX/NewOldValue/NewOldValue.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditItem/BulkEditItem.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditItem/BulkEditItem.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditList/BulkEditList.styles.js", "../excel_shared_ux/assets/UserActivityUX/bulkEditInfo.16.svgx", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditList/BulkEditList.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditButton/BulkEditButton.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/BulkEditButton/BulkEditButton.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/ValueChangesInfo/CellValueChangesInfo.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/ActivityInfo/ActivityInfo.styles.js", "../excel_shared_ux/lib/Components/FriendlyDate/FriendlyDateTimer.js", "../excel_shared_ux/lib/Components/FriendlyDate/FriendlyDate.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaInfo/PersonaInfo.styles.js", "../excel_shared_ux/lib/Utilities/PeoplePicture/PeoplePicture.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaInfo/PersonaInfo.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/ActivityRangeInfo/ActivityRangeInfo.styles.js", "../excel_shared_ux/assets/UserActivityUX/infoIcon.svgx", "../excel_shared_ux/lib/Components/UserActivityUX/ActivityRangeInfo/ActivityRangeInfo.native.js", "../excel_shared_ux/assets/UserActivityUX/moveArrowForward.16.svgx", "../excel_shared_ux/lib/Components/UserActivityUX/ActivityInfo/ActivityInfo.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/DegradedCardInfo/DegradedCardInfo.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/DegradedCardInfo/DegradedCardInfo.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/UserActivityCard/UserActivityCard.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/UserActivityCard/index.js", "../excel_shared_ux/lib/Components/UserActivityUX/SummaryCard/SummaryCard.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaList/PersonaList.styles.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaList/PersonaList.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaList/index.js", "../excel_shared_ux/lib/Components/UserActivityUX/SummaryCard/SummaryCard.native.js", "../excel_shared_ux/lib/Components/UserActivityUX/SummaryCard/index.js", "../excel_shared_ux/lib/Components/UserActivityUX/PersonaInfo/index.js", "../excel_shared_ux/lib/Components/UserActivityUX/index.js", "../excel_shared_ux/lib/Components/Carousel/Carousel.styles.js", "../excel_shared_ux/lib/Components/Carousel/Carousel.native.js", "../excel_shared_ux/lib/Components/Carousel/index.js", "../excel_shared_ux/lib/Components/index.js", "../excel_shared_ux/lib/RichApi/UserActivity/UserActivityRichApiHelper.js", "../excel_shared_ux/lib/Experimentation/ABFeature.js", "../excel_shared_ux/lib/RichApi/ExperimentationRichApiHelper.js", "../excel_shared_ux/lib/RichApi/index.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/react-native-macos.macos.js", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/appleHighContrast.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/dark/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/dark/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/hcdark/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/hcdark/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/hclight/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/hclight/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/light/tokens-aliases.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-design-tokens-macos@0.53.0-98c996e01dffedaee803/node_modules/@fluentui-react-native/design-tokens-macos/light/tokens-shadow.json", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/getMacOSTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/createMacOSAliasTokens.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/appleColors.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/appleShadows.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/appleTypography.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/appleTheme.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/createAppleTheme.macos.ts", "../../../../npm/.store/sdx_lineage/@fluentui-react-native-apple-theme@0.28.13-191f60f2b1ffec31cfbf/node_modules/@fluentui-react-native/apple-theme/src/index.ts", "../excel_shared_ux/lib/Theme/UserActivityThemeProvider.macos.js", "../excel_shared_ux/lib/Theme/index.js", "../excel_shared_ux/lib/Utilities/index.js", "../excel_shared_ux/lib/Experimentation/FeatureCollection.js", "../excel_shared_ux/lib/Experimentation/index.js", "../excel_shared_ux/lib/index.js", "src/Components/UserMessage/UserMessage.styles.ts", "../excel_shared_ux/src/Components/Footer/Footer.styles.ts", "src/Experimentation/GuidedReapplyFeatureCollection.ts", "../excel_shared_ux/assets/UserActivityUX/noChangesIllustration.160.svgx", "assets/strings.resjson", "src/Components/UserMessage/UserMessage.native.tsx", "src/Components/UserMessage/index.ts", "src/Components/PostReloadButtonGroup/PostReloadButtonGroup.styles.ts", "src/Components/PostReloadButtonGroup/PostReloadButtonGroup.native.tsx", "src/Components/TaskPane/GuidedReapplyTaskPane.native.tsx", "src/Components/TaskPane/index.ts", "src/Providers/UserActivityTaskPaneProvider.tsx", "../excel_shared_ux/src/Components/BusinessBar/types.ts", "src/Components/CollapsibleList/CollapsibleList.styles.ts", "assets/CollapsedChevron.svgx", "assets/CollapsedChevronRTL.svgx", "assets/ExpandedChevron.svgx", "assets/ApplySuccess.svgx", "assets/ApplyFail.svgx", "src/Components/CollapsibleList/CollapsibleList.native.tsx", "src/Providers/CollapsibleListProvider.tsx", "src/GuidedReapplyController/GuidedReapplyController.ts", "src/RichApi/RichApiEventHandler.ts", "src/RichApi/RichApiHelper.ts", "src/RichApi/RichApiDataModelAdapter.ts", "../excel_telemetry/lib/pluggableTelemetry/NullTelemetryLogger.js", "../excel_telemetry/lib/pluggableTelemetry/PluggableTelemetryLogger.js", "../excel_telemetry/lib/pluggableTelemetry/index.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/@ms/oteljs.macos.js", "../excel_telemetry/lib/otelTelemetryAdapter/TelemetryHelper.js", "../excel_telemetry/lib/otelTelemetryAdapter/TelemetryActivity.js", "../excel_telemetry/lib/otelTelemetryAdapter/TelemetryEvent.js", "../excel_telemetry/lib/otelTelemetryAdapter/OTelTelemetryLogger.js", "../excel_telemetry/lib/otelTelemetryAdapter/index.js", "../../../../npm/.store/sdx_lineage/@office-iss-sdx-platform-bundle-externals@6.1.8-93b210c81b137b2b70a4/node_modules/@office-iss/sdx-platform-bundle-externals/lib/redirects/@ms/oteljs-sdx.macos.js", "../excel_telemetry/lib/telemetryAPI/TelemetrySink.native.js", "../excel_telemetry/lib/telemetryAPI/InitializeTelemetry.js", "../excel_telemetry/lib/telemetryAPI/TelemetryLogger.js", "../excel_telemetry/lib/telemetryAPI/index.js", "../excel_telemetry/lib/index.js", "src/Telemetry/GuidedReapplyTelemetryLogger.ts", "src/index.native.tsx", "virtual:metro:__rnx_prelude__"], "sourcesContent": ["if (this.__platformBundles !== undefined) { var platformBundles = this.__platformBundles.concat(); Reflect.deleteProperty(this, '__platformBundles'); for (var i = 0; i < platformBundles.length; ++i) { console.log('PB start ' + (i + 1) + '/' + platformBundles.length); eval(platformBundles[i]); console.log('PB done ' + (i + 1) + '/' + platformBundles.length); }}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9fYXBwYnVuZGxlcHJlbHVkZV9fIl0sInNvdXJjZXNDb250ZW50IjpbImlmICh0aGlzLl9fcGxhdGZvcm1CdW5kbGVzICE9PSB1bmRlZmluZWQpIHsgdmFyIHBsYXRmb3JtQnVuZGxlcyA9IHRoaXMuX19wbGF0Zm9ybUJ1bmRsZXMuY29uY2F0KCk7IFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGhpcywgJ19fcGxhdGZvcm1CdW5kbGVzJyk7IGZvciAodmFyIGkgPSAwOyBpIDwgcGxhdGZvcm1CdW5kbGVzLmxlbmd0aDsgKytpKSB7IGNvbnNvbGUubG9nKCdQQiBzdGFydCAnICsgKGkgKyAxKSArICcvJyArIHBsYXRmb3JtQnVuZGxlcy5sZW5ndGgpOyBldmFsKHBsYXRmb3JtQnVuZGxlc1tpXSk7IGNvbnNvbGUubG9nKCdQQiBkb25lICAnICsgKGkgKyAxKSArICcvJyArIHBsYXRmb3JtQnVuZGxlcy5sZW5ndGgpOyAgfX0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9\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;", "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;", "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;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "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}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _getPrototypeOf(t) {\n return (module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _setPrototypeOf(t, e) {\n return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = OfficePlatformGlobal.React", "module.exports = OfficePlatformGlobal.ReactNative.Components", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Anchor = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar Anchor = function (props) {\r\n return React.createElement(React.Fragment, null, props.children);\r\n};\r\nexports.Anchor = Anchor;\r\n//# sourceMappingURL=Anchor.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Anchor = void 0;\r\nvar Anchor_1 = require(\"./Anchor\");\r\nObject.defineProperty(exports, \"Anchor\", { enumerable: true, get: function () { return Anchor_1.Anchor; } });\r\n//# sourceMappingURL=index.js.map", "function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "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}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "import * as React from 'react';\n\nimport type { Theme } from './Theme.types';\n\nexport const ThemeContext = React.createContext(undefined);\nexport const useTheme = () => React.useContext(ThemeContext);\n", "export type {\n AliasColorTokens,\n Color,\n FabricWebPalette,\n Palette,\n PaletteBackgroundColors,\n PaletteTextColors,\n PartialPalette,\n ThemeColorDefinition,\n} from './Color.types';\nexport type { ShadowValue, ShadowToken, BaseShadowAliasTokens, ThemeShadowDefinition, PartialShadowDefinition } from './Shadow.types';\nexport type { AppearanceOptions, PartialTheme, Spacing, Theme, ThemeOptions } from './Theme.types';\nexport type {\n FontDynamicTypeRamp,\n FontFamilies,\n FontFamily,\n FontFamilyValue,\n FontSize,\n FontSizeValuePoints,\n FontSizes,\n FontWeight,\n FontWeightValue,\n FontWeights,\n PartialTypography,\n TextStyling,\n Typography,\n Variant,\n VariantValue,\n Variants,\n} from './Typography.types';\nexport { ThemeContext, useTheme } from './context';\nexport type { OfficePalette } from './palette.types';\n", "module.exports = OfficePlatformGlobal.ReactJsxRuntime", "import * as React from 'react';\n\nimport { ThemeContext } from '@fluentui-react-native/theme-types';\n\nimport type { ThemeReference } from './themeReference';\n\nexport interface ThemeProviderProps extends React.PropsWithChildren> {\n /**\n * to set themes into the provider wrap them in a reference\n */\n theme: ThemeReference;\n}\n\nexport const ThemeProvider: React.FunctionComponent = (props: React.PropsWithChildren) => {\n const { theme: themeRef, children } = props;\n const [theme, setThemeState] = React.useState(() => themeRef.theme);\n\n React.useEffect(() => {\n // If the theme passed by prop is different, we directly update state. We also add a listener to update state if there's a change within the passed theme.\n setThemeState(themeRef.theme);\n\n const onInvalidate = () => {\n setThemeState(themeRef.theme);\n };\n\n themeRef.addOnThemeChanged(onInvalidate);\n return () => {\n themeRef.removeOnThemeChanged(onInvalidate);\n };\n }, [themeRef, setThemeState]);\n\n return {children};\n};\n", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "/**\n * The basic options for recursion at a given level. Two types for two behaviors:\n *\n * boolean:\n * - if true, recurse indefinitely\n * - if false, don't recurse\n *\n * number:\n * - if 0, don't recurse from this level\n * - if > 0, recurse that many times then stop\n * - if < 0, recurse indefinitely\n */\nexport type RecursionOption = boolean | number;\n\n/**\n * a function that can be set to merge arguments\n */\nexport type CustomRecursionHandler = (...vals: any[]) => any;\n\n/**\n * built in handler functions that can be applied for a given key\n */\nexport type BuiltinRecursionHandlers = 'appendArray';\n\n/**\n * Handlers for recursion of a given key or type. These can either be functions or a reference to a supported\n * built-in merge routine\n */\nexport type RecursionHandler = BuiltinRecursionHandlers | CustomRecursionHandler;\n\n/**\n * Base object type for merges, avoids using object since that is too broad. In particular things like null and arrays\n * are not valid object types for the purposes of this library.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type ObjectBase = {};\n\n/**\n *\n */\nexport type TypeofResult = 'undefined' | 'object' | 'boolean' | 'number' | 'string' | 'symbol' | 'bigint' | 'function';\nexport type ExpandedTypeof = TypeofResult | 'array' | 'null';\n\n/**\n * configuration object for the merge, key names are matched with a few exceptions:\n * - object: matches non-array object types\n * - array: matches array types\n * - [key: string]: matches anything by name\n */\nexport interface MergeOptions {\n [objectTypeOrKeyName: string]: RecursionOption | RecursionHandler | MergeOptions;\n}\n\n/**\n * built in handlers for the module\n */\nconst _builtinHandlers: { [K in BuiltinRecursionHandlers]: CustomRecursionHandler } = {\n appendArray: (...objs: any[]) => {\n return [].concat(...objs);\n },\n};\n\n/**\n * This processes the various type options for merge core and turns them into a MergeConfig\n * @param options - options passed into immutableMergeCore\n */\nfunction normalizeOptions(options: RecursionOption | MergeOptions): [MergeOptions, boolean] {\n return typeof options === 'boolean'\n ? [{ object: options }, options]\n : typeof options === 'number'\n ? [{ object: options >= 0 ? options : true }, options !== 0]\n : [options, true];\n}\n\n/**\n * Provide a more sensible type result that expands upon the built in typeof operator\n * In particular this will differentiate arrays and nulls from standard objects\n * @param val - value to check type\n */\nfunction getEntityType(val: unknown): ExpandedTypeof {\n switch (typeof val) {\n case 'object':\n if (val === null) {\n return 'null';\n } else if (Array.isArray(val)) {\n return 'array';\n }\n return 'object';\n default:\n return typeof val as TypeofResult;\n }\n}\n\n/** resolve custom handlers if they are applicable */\nfunction resolveIfHandler(option: RecursionHandler | RecursionOption | MergeOptions): CustomRecursionHandler | MergeOptions | undefined {\n return typeof option === 'function' ? option : typeof option === 'string' ? _builtinHandlers[option] : undefined;\n}\n\n/** pass array configurations down, this allows for saying all arrays should be appended rather than replaced */\nfunction getTypesMixin(config: MergeOptions): MergeOptions {\n return config.array ? { array: config.array } : {};\n}\n\n/** resolve the object behaviors for configuration */\nfunction resolveForObject(option: RecursionHandler | RecursionOption | MergeOptions, mixin: MergeOptions): MergeOptions | undefined {\n if (typeof option === 'boolean') {\n // booleans won't recurse if false, otherwise recurse infinitely\n return option ? { object: option, ...mixin } : mixin;\n } else if (typeof option === 'number') {\n // numbers get decremented or set to false if we've reached zero. Negative values will have been converted to boolean true\n return option === 0 ? mixin : { object: option - 1, ...mixin };\n } else {\n // otherwise it is an object type so just pass the child object through\n return option as MergeOptions;\n }\n}\n\n/**\n * Figure out the handler for this property.\n * It will either be a function, a config object to pass to a recursive call, or undefined\n * in the undefined case, this key will be left as-is\n */\nfunction getHandlerForPropertyOfType(\n config: MergeOptions,\n propKey: string,\n propType: string,\n): CustomRecursionHandler | MergeOptions | undefined {\n let result: CustomRecursionHandler | MergeOptions | undefined = undefined;\n const option = config[propKey] !== undefined ? config[propKey] : config[propType] !== undefined ? config[propType] : undefined;\n\n if (option !== undefined) {\n // try to resolve the option as a handler, either function or built-in first. This is the only option that is valid for non-object types.\n result = resolveIfHandler(option);\n\n // if it is an object then resolve boolean, number or config types\n if (result === undefined && propType === 'object') {\n result = resolveForObject(option, getTypesMixin(config));\n }\n }\n\n return result;\n}\n\n/**\n * Assign properties of source objects to a new target object. This is just a type wrapper around Object.assign\n * @param objs - array of objects to merge\n * @returns the result of object assign on the objects, typed to T\n */\nfunction assignToNewObject(...objs: T[]): T {\n return Object.assign({}, ...objs);\n}\n\n/**\n * Filter a set of unknown values to only include those that extend ObjectBase\n * @param values - array of values to filter\n * @returns the filtered set of values\n */\nexport function filterToObjects(values: unknown[]): T[] {\n return values.filter((v) => v && getEntityType(v) === 'object' && Object.getOwnPropertyNames(v).length > 0) as T[];\n}\n\n/**\n * This will merge two or more objects together using an immutable style merge pattern. If there is only one object or\n * if there is only one object with values, that object itself will be returned, with two or more objects the keys within will\n * be first merged with Object.assign and then optionally will recurse to merge sub objects as specified by the options.\n *\n * Note that this tries hard to not create extra objects, because of this merging an object with an empty object will not\n * create a new object.\n *\n * @param mergeOptions - options driving behavior of the merge. See MergeOptions for a description\n * @param singleMode - normally if there is only one branch to follow in the merge the routine will not recurse. If single mode\n * is true the routine will progress through all branches of the hierarchy. Useful if using a processor function that needs to be run.\n * @param objs - an array of objects to merge together\n */\nfunction immutableMergeWorker(mergeOptions: RecursionOption | MergeOptions, singleMode: boolean, ...objs: T[]): T {\n const setToMerge = filterToObjects(objs);\n const [options, mightRecurse] = normalizeOptions(mergeOptions);\n const processSingle = singleMode && setToMerge.length === 1;\n\n // there is work to do if there is more than one object to merge or if we are processing single objects\n if (setToMerge.length > 1 || (processSingle && setToMerge.length === 1)) {\n // now assign everything to get the normal property precedence (and merge all the keys)\n let result = processSingle ? undefined : assignToNewObject(...setToMerge);\n const processSet = result || setToMerge[0];\n\n for (const key in processSet) {\n if (processSet.hasOwnProperty(key)) {\n // only process if there is potential work to do\n if (mightRecurse) {\n const originalVal = processSet[key];\n const entityType = getEntityType(originalVal);\n const handler = getHandlerForPropertyOfType(options, key, entityType);\n if (handler !== undefined) {\n const values = setToMerge.map((set) => set[key]).filter((v) => v !== undefined);\n const updatedVal =\n typeof handler === 'function'\n ? handler(...values)\n : immutableMergeWorker(handler, singleMode, ...filterToObjects(values));\n if (updatedVal !== originalVal) {\n result = result || assignToNewObject(...setToMerge);\n result[key] = updatedVal;\n }\n }\n }\n\n // delete undefined keys from the object, otherwise there is no easy way to delete keys\n if (!processSingle && result[key] === undefined) {\n delete result[key];\n }\n }\n }\n\n // in the single processing case return the original if nothing changed, otherwise return result\n return result || processSet;\n }\n return setToMerge.length > 0 ? setToMerge[0] : undefined;\n}\n\n/**\n * Recursively immutable merge sets of objects infinitely deep. This behaves like a standard deep merge with arrays replacing\n * one another rather than appending. If appending arrays is desireable this can be configured via immutableMergeCore\n *\n * @param objs - variable input array of typed objects to merge\n */\nexport function immutableMerge(...objs: (T | undefined)[]): T | undefined {\n return immutableMergeWorker(true, false, ...objs);\n}\n\n/**\n * Version of immutable merge that can be configured to behave in a variety of manners. See the documentation for details.\n *\n * @param options - configuration options for the merge, this dictates what keys will be handled in what way\n * @param objs - set of objects to merge together\n */\nexport function immutableMergeCore(\n options: RecursionOption | MergeOptions,\n ...objs: (T | undefined)[]\n): T | undefined {\n return immutableMergeWorker(options, false, ...objs);\n}\n\n/**\n * Process one or more immutable objects ensuring that handlers are called on every entry that applies. If a single object\n * is passed in and no changes are made, that object will be returned. If updates happen from the handlers it will return the\n * minimally mutated object.\n *\n * The use case for this might be a style transformation on a deeply nested object. If no changes are made the object won't be\n * updated but in the case where something needs to be transformed this will perform the minimal mutations.\n *\n * @param processors - set of processor functions for handling keys\n * @param objs - one or more objects to process. If multiple objects are passed they will be merged\n */\nexport function processImmutable(options: MergeOptions, ...objs: (T | undefined)[]): T | undefined {\n return immutableMergeWorker(options, true, ...objs);\n}\n", "/** signature for the object/function key values, used for memoization */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport type MemoObjectKey = object | Function;\n\nexport type CacheEntry = {\n /** stores the cached value if any */\n value?: T;\n\n /** entry used for undefined and null values, these both collapse to the same type */\n empty?: CacheEntry;\n\n /** entry used for the case where the array of args is null or length 0 */\n noargs?: CacheEntry;\n\n /** all remaining non-object types are keyed as strings for lookups */\n str?: { [key: string]: CacheEntry };\n\n /** object types are keyed in a weak map on object identity */\n obj?: WeakMap>;\n};\n\n/**\n * Step one level deeper in the cache, based on the key value from the current location\n *\n * @param entry - base entry to work from\n * @param val - value to use as the key for progressing to the next level of the cache\n */\nfunction jumpToCacheEntry(entry: CacheEntry, val: any): CacheEntry {\n if (val === undefined || val === null) {\n // undefined or null just routes directly to the empty object. This avoids the issues of string collisions with 'null' or 'undefined'\n // when using the string key map, it also avoids creating the WeakMap (since null is technically typoef object), particularly in cases\n // where null is just being set on non-object types.\n return (entry.empty ??= {});\n }\n if (typeof val === 'object' || typeof val === 'function') {\n // objects and functions will be treated as key values in a WeakMap\n const byObj = (entry.obj ??= new WeakMap());\n return byObj.get(val) || byObj.set(val, {}).get(val);\n }\n // otherwise convert everything to a string and store it in the str object (using it as a map)\n const key = val + '';\n const byString = (entry.str ??= {});\n return (byString[key] ??= {});\n}\n\n/**\n * Given a base entry, either traverse or build the cache tree that matches the provided args\n *\n * @param entry - entry to use as the base of the cache walk\n * @param args - array of arguments to use to progress deeper into the cache\n */\nexport function getCacheEntry(entry: CacheEntry, args: unknown[]): CacheEntry {\n // in the case where the args array exists and is > 0 length:\n // - walk the cache from entry, like a linked list, jumping to the next entry by key, building it up as you go\n // - otherwise if there are no args just use the noargs branch\n return args && args.length > 0\n ? (args.reduce((previous: CacheEntry, arg: unknown) => jumpToCacheEntry(previous, arg), entry) as CacheEntry)\n : (entry.noargs ??= {});\n}\n", "import type { CacheEntry } from './getCacheEntry';\nimport { getCacheEntry } from './getCacheEntry';\n\nexport type ValueFactory = () => T;\n\n/**\n * Signature for the cache function. While the implementation is generic, it can run in two modes:\n * - Typed: the cache will enforce the type of both the factory and returned value\n * - Untyped: the cache will infer the type on each call from the factory return value\n */\nexport type GetTypedMemoValue = (factory: T | ValueFactory, keys: unknown[]) => [T, GetTypedMemoValue];\nexport type GetMemoValue = (factory: T | ValueFactory, keys: unknown[]) => [T, GetMemoValue];\n\n/** base node used to remember references when a globalKey is set */\nconst _baseEntry: CacheEntry = {};\n\n/**\n * Primary functional worker used to implement the caching pattern\n *\n * @param entry - entry to use as the base of the cache traversal\n * @param factory - generally a function who's results will be cached, and returned via the set of keys\n * @param keys - an ordered array of values of any type, used as keys to look up the entry\n */\nfunction getMemoValueWorker(entry: CacheEntry, factory: T | ValueFactory, keys: unknown[]): [T, GetMemoValue] {\n const foundEntry = getCacheEntry(entry, keys);\n // check the key being set, not the value to disambiguate an undefined factory result/value from never having run the factory\n if (!Object.prototype.hasOwnProperty.call(foundEntry, 'value')) {\n foundEntry.value = typeof factory === 'function' ? (factory as ValueFactory)() : factory;\n }\n return [foundEntry.value as T, (fact: U | ValueFactory, args: unknown[]) => getMemoValueWorker(foundEntry, fact, args)];\n}\n\n/**\n * Get a memo cache instance, this can either be completely self-contained or associated with a global key\n *\n * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used\n * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.\n */\nexport function getMemoCache(globalKey?: object): GetMemoValue {\n const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};\n return (fact, args) => getMemoValueWorker(entry, fact, args);\n}\n\n/**\n * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key\n *\n * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used\n * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.\n */\nexport function getTypedMemoCache(globalKey?: object): GetTypedMemoValue {\n const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};\n return (fact, args) => getMemoValueWorker(entry, fact, args);\n}\n", "import { getMemoCache } from './getMemoCache';\n\n/**\n * This wraps a function to memoize the results using the standard javascript memoization pattern\n * @param fn - function to memoize\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function memoize(fn: T): T {\n // create a unique cache that will be captured in the closure\n const cache = getMemoCache();\n // create the closure which wraps the calling function\n const closure = (...args: unknown[]) => {\n return cache(() => fn(...(args || [])), args)[0];\n };\n // now return that closure strongly typed as the function.\n return closure as unknown as T;\n}\n", "import { immutableMerge } from '../immutable-merge/Merge';\nimport { getMemoCache } from '../memo-cache/getMemoCache';\n\nimport type { StyleProp } from './mergeStyles.types';\n\n/**\n * Take a react-native style, which may be a recursive array, and return as a flattened\n * style. This is analagous to the flatten routine that is part of the style sheet API\n *\n * @param style - StyleProp to flatten, this can be a TStyle or an array\n */\nexport function flattenStyle(style: StyleProp): object {\n return Array.isArray(style) ? immutableMerge(...style.map((v) => flattenStyle(v))) : style || {};\n}\n\n/**\n * Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style\n *\n * @param styles - array of styles to merge together. The styles will be flattened as part of the process\n */\nexport function mergeAndFlattenStyles(...styles: StyleProp[]): object | undefined {\n // baseline merge and flatten the objects\n return immutableMerge(\n ...styles.map((styleProp: StyleProp) => {\n return flattenStyle(styleProp);\n }),\n );\n}\n\nconst _styleCache = getMemoCache();\n\nexport function mergeStyles(...styles: StyleProp[]): object | undefined {\n // filter the style set to just objects (which might be arrays or plain style objects)\n const inputs = styles.filter((s) => typeof s === 'object') as object[];\n\n // now memo the results if there is more than one element or if the one element is an array\n return inputs.length > 1 || (inputs.length === 1 && Array.isArray(inputs[0]))\n ? _styleCache(() => mergeAndFlattenStyles(undefined, ...inputs), inputs)[0]\n : inputs[0] || {};\n}\n", "import type { MergeOptions } from '../immutable-merge/Merge';\nimport { immutableMergeCore, filterToObjects } from '../immutable-merge/Merge';\n\nimport { mergeStyles } from './mergeStyles';\n\n/**\n * Props will not deeply merge with the exception of a style property. Also className needs to be handled specially.\n */\nconst mergePropsOptions: MergeOptions = {\n className: (...names: any[]) => names.filter((v) => v && typeof v === 'string').join(' '),\n style: mergeStyles,\n};\n\n/**\n * Merge props together, flattening and merging styles as appropriate\n * @param props - props to merge together\n */\nexport function mergeProps(...props: (TProps | undefined)[]): TProps {\n return immutableMergeCore(mergePropsOptions, ...filterToObjects(props));\n}\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 (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "import React from 'react';\nimport * as ReactJSX from 'react/jsx-runtime';\nimport type { RenderType, RenderResult, DirectComponent, LegacyDirectComponent } from './render.types';\n\nexport type CustomRender = () => RenderResult;\n\nfunction asDirectComponent(type: RenderType): DirectComponent | undefined {\n if (typeof type === 'function' && (type as DirectComponent)._callDirect) {\n return type as DirectComponent;\n }\n return undefined;\n}\n\nfunction asLegacyDirectComponent(type: RenderType): LegacyDirectComponent | undefined {\n if (typeof type === 'function' && (type as LegacyDirectComponent)._canCompose) {\n return type as LegacyDirectComponent;\n }\n return undefined;\n}\n\nexport function renderForJsxRuntime(\n type: React.ElementType,\n props: React.PropsWithChildren,\n key?: React.Key,\n jsxFn: typeof ReactJSX.jsx = ReactJSX.jsx,\n): RenderResult {\n const legacyDirect = asLegacyDirectComponent(type);\n if (legacyDirect) {\n const { children, ...rest } = props;\n const newProps = { ...rest, key };\n return legacyDirect(newProps, ...React.Children.toArray(children)) as RenderResult;\n }\n const directComponent = asDirectComponent(type);\n if (directComponent) {\n const newProps = { ...props, key };\n return directComponent(newProps);\n }\n return jsxFn(type, props, key);\n}\n\nexport function renderForClassicRuntime(type: RenderType, props: TProps, ...children: React.ReactNode[]): RenderResult {\n const legacyDirect = asLegacyDirectComponent(type);\n if (legacyDirect) {\n return legacyDirect(props, ...children) as RenderResult;\n }\n const directComponent = asDirectComponent(type);\n if (directComponent) {\n const newProps = { ...props, children };\n return directComponent(newProps);\n }\n return React.createElement(type, props, ...children);\n}\n\nexport const renderSlot = renderForClassicRuntime;\n", "import type React from 'react';\nimport { renderForClassicRuntime } from './render';\n\n/**\n * This function is required for any module that uses slots.\n *\n * This function is a slot resolver that automatically evaluates slot functions to generate React elements.\n * A byproduct of this resolver is that it removes slots from the React hierarchy by bypassing React.createElement.\n *\n * To use this function on a per-file basis, use the jsx directive targeting withSlots.\n * This directive must be the FIRST LINE in the file to work correctly.\n * Usage of this pragma also requires withSlots import statement.\n *\n * See React.createElement\n */\n\n// Can't use typeof on React.createElement since it's overloaded. Approximate createElement's signature for now and widen as needed.\nexport function withSlots(reactType: Parameters[0], props?: unknown, ...children: React.ReactNode[]) {\n // if it is a non-string type with _canCompose set just call the function directly, otherwise call createElement as normal\n return renderForClassicRuntime(reactType, props, ...children);\n}\n", "/**\n * @jsxRuntime classic\n * @jsx withSlots\n */\nimport * as React from 'react';\nimport { withSlots } from './withSlots';\n\nimport type { StagedComponent, TwoStageRender, StagedRender, ComposableFunction } from './render.types';\n\nfunction asArray(val: T | T[]): T[] {\n return Array.isArray(val) ? val : [val];\n}\n\n/**\n * Take a staged render function and make a real component out of it\n *\n * @param staged - staged render function to wrap into a staged component\n * @param memo - optional flag to enable wrapping the created component in a React.memo HOC\n */\nexport function stagedComponent(staged: StagedRender, memo?: boolean): ComposableFunction {\n const component = (props: React.PropsWithChildren) => {\n const { children, ...rest } = props;\n return staged(rest as TProps)({} as React.PropsWithChildren, asArray(children));\n };\n const stagedComponent = memo ? React.memo(component) : component;\n Object.assign(stagedComponent, { _staged: staged });\n return stagedComponent as ComposableFunction;\n}\n\n/**\n * Take a two stage render function and make a real component out of it, attaching the staged render function\n * so it can be split if used in that manner.\n * @param staged - two stage render function to wrap into a staged component\n */\nexport function twoStageComponent(staged: TwoStageRender): StagedComponent {\n return Object.assign(\n (props: React.PropsWithChildren) => {\n const { children, ...outerProps } = props;\n const innerProps = { children } as React.PropsWithChildren;\n const Inner = staged(outerProps as TProps);\n return ;\n },\n { _twoStageRender: staged },\n );\n}\n", "import type React from 'react';\nimport * as ReactJSX from 'react/jsx-runtime';\nimport { renderForJsxRuntime } from './component-patterns/render';\n\nexport function jsx(type: React.ElementType, props: React.PropsWithChildren, key?: React.Key): React.ReactElement {\n return renderForJsxRuntime(type, props, key, ReactJSX.jsx);\n}\n\nexport function jsxs(type: React.ElementType, props: React.PropsWithChildren, key?: React.Key): React.ReactElement {\n return renderForJsxRuntime(type, props, key, ReactJSX.jsxs);\n}\n", "// immutable-merge exports\nexport { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';\nexport type {\n BuiltinRecursionHandlers,\n CustomRecursionHandler,\n MergeOptions,\n ObjectBase,\n RecursionHandler,\n RecursionOption,\n} from './immutable-merge/Merge';\n\n// memo-cache exports\nexport type { GetMemoValue, GetTypedMemoValue } from './memo-cache/getMemoCache';\nexport { getMemoCache, getTypedMemoCache } from './memo-cache/getMemoCache';\nexport { memoize } from './memo-cache/memoize';\n\n// merge-props exports\nexport type { StyleProp } from './merge-props/mergeStyles.types';\nexport { mergeStyles } from './merge-props/mergeStyles';\nexport { mergeProps } from './merge-props/mergeProps';\n\n// component pattern exports\nexport { renderForClassicRuntime, renderForJsxRuntime, renderSlot } from './component-patterns/render';\nexport type {\n DirectComponent,\n DirectComponentFunction,\n LegacyDirectComponent,\n StagedComponent,\n StagedRender,\n TwoStageRender,\n RenderType,\n RenderResult,\n ComposableFunction,\n FinalRender,\n SlotFn,\n NativeReactType,\n} from './component-patterns/render.types';\nexport { withSlots } from './component-patterns/withSlots';\nexport { stagedComponent, twoStageComponent } from './component-patterns/stagedComponent';\nexport { jsx, jsxs } from './jsx-runtime';\n", "import { immutableMerge } from '@fluentui-react-native/framework-base';\nimport type { Theme, PartialTheme } from '@fluentui-react-native/theme-types';\n\nexport function mergeTheme(base: TTheme, partial: TPartial): TTheme {\n return immutableMerge(base, partial as unknown as TTheme);\n}\n", "import type { Theme, PartialTheme } from '@fluentui-react-native/theme-types';\n\nimport { mergeTheme } from './mergeTheme';\n\n/**\n * Argument type for listening for theme changes\n */\nexport type OnThemeChange = () => void;\n\n/**\n * A function that takes in a parent theme, then returns a partial set of changes to be merged with the parent theme to update\n * it.\n */\nexport type ThemeTransform = (parent: TTheme) => TPartial;\n\n/**\n * A theme recipe is either a partial theme to merge on top of a base theme, or a function that returns the same kind of\n * partial to merge. These are recipes because they are cached as distinct steps so that they can be reapplied if the\n * base theme changes\n */\nexport type ThemeRecipe = TPartial | ThemeTransform;\n\n/**\n * Provides a wrapper around a theme object, allowing the ability to create a theme from another theme, to listen to theme\n * changes, and to update the theme.\n *\n * This is the object that is designed to be handed to a theme provider, such that it can listen for changes and set the\n * value into context again.\n */\nexport class ThemeReference {\n private themeData: TTheme | undefined = undefined;\n private recipes: ThemeRecipe[];\n private listeners: OnThemeChange[] = [];\n private getParent: () => TTheme;\n private parentRef: ThemeReference | undefined = undefined;\n\n /**\n * Create the theme reference, either as a plain wrapper, or a wrapper with additional transforms and/or merging\n * @param base - can be either another ThemeReference object, or a fully specified theme\n * @param recipes - any number of recipes to be applied on top of the theme object\n */\n constructor(base: TTheme | ThemeReference, ...recipes: ThemeRecipe[]) {\n this.listeners = [];\n this.recipes = recipes;\n this.parentRef = base instanceof ThemeReference ? base : undefined;\n if (this.parentRef) {\n const onChanged = () => {\n this.invalidate();\n };\n this.parentRef.addOnThemeChanged(onChanged);\n }\n this.getParent = () => (this.parentRef ? this.parentRef.theme : (base as TTheme));\n }\n\n /**\n * get the internal theme object, which will be created on-demand\n */\n public get theme(): TTheme {\n if (!this.themeData) {\n let theme = this.getParent();\n for (const recipe of this.recipes) {\n theme = mergeTheme(theme, typeof recipe === 'function' ? recipe(theme) : recipe);\n }\n this.themeData = theme;\n }\n return this.themeData;\n }\n\n /**\n * register a new listener for theme changes\n */\n public addOnThemeChanged(listener: OnThemeChange): void {\n this.listeners.push(listener);\n }\n\n /**\n * remove a previously registered listener\n */\n public removeOnThemeChanged(listener: OnThemeChange): void {\n this.listeners = this.listeners.filter((v) => v !== listener);\n }\n\n /**\n * invalidate the theme, causing it to be regenerated. This can happen via notifications from the parent, but\n * can also be called directly if a functional transform needs to be re-run\n */\n public invalidate(): void {\n this.themeData = undefined;\n for (const listener of this.listeners) {\n listener();\n }\n }\n\n /**\n * update the recipes (but not the base) in the theme. This will also implicitly invalidate the theme\n * since the recipes changed.\n */\n public update(...recipes: ThemeRecipe[]): void {\n this.recipes = recipes || [];\n this.invalidate();\n }\n}\n", "export { ThemeProvider } from './ThemeProvider';\nexport type { ThemeProviderProps } from './ThemeProvider';\nexport { ThemeReference } from './themeReference';\nexport type { OnThemeChange, ThemeRecipe, ThemeTransform } from './themeReference';\n", "module.exports = {\n\t\"color\": {\n\t\t\"anchor\": {\n\t\t\t\"primary\": \"#394146\",\n\t\t\t\"shade10\": \"#333a3f\",\n\t\t\t\"shade20\": \"#2b3135\",\n\t\t\t\"shade30\": \"#202427\",\n\t\t\t\"shade40\": \"#111315\",\n\t\t\t\"shade50\": \"#090a0b\",\n\t\t\t\"tint10\": \"#4d565c\",\n\t\t\t\"tint20\": \"#626c72\",\n\t\t\t\"tint30\": \"#808a90\",\n\t\t\t\"tint40\": \"#bcc3c7\",\n\t\t\t\"tint50\": \"#dbdfe1\",\n\t\t\t\"tint60\": \"#f6f7f8\"\n\t\t},\n\t\t\"beige\": {\n\t\t\t\"primary\": \"#7a7574\",\n\t\t\t\"shade10\": \"#6e6968\",\n\t\t\t\"shade20\": \"#5d5958\",\n\t\t\t\"shade30\": \"#444241\",\n\t\t\t\"shade40\": \"#252323\",\n\t\t\t\"shade50\": \"#141313\",\n\t\t\t\"tint10\": \"#8a8584\",\n\t\t\t\"tint20\": \"#9a9594\",\n\t\t\t\"tint30\": \"#afabaa\",\n\t\t\t\"tint40\": \"#d7d4d4\",\n\t\t\t\"tint50\": \"#eae8e8\",\n\t\t\t\"tint60\": \"#faf9f9\"\n\t\t},\n\t\t\"berry\": {\n\t\t\t\"primary\": \"#c239b3\",\n\t\t\t\"shade10\": \"#af33a1\",\n\t\t\t\"shade20\": \"#932b88\",\n\t\t\t\"shade30\": \"#6d2064\",\n\t\t\t\"shade40\": \"#3a1136\",\n\t\t\t\"shade50\": \"#1f091d\",\n\t\t\t\"tint10\": \"#c94cbc\",\n\t\t\t\"tint20\": \"#d161c4\",\n\t\t\t\"tint30\": \"#da7ed0\",\n\t\t\t\"tint40\": \"#edbbe7\",\n\t\t\t\"tint50\": \"#f5daf2\",\n\t\t\t\"tint60\": \"#fdf5fc\"\n\t\t},\n\t\t\"black\": \"#000000\",\n\t\t\"blackAlpha10\": \"#0000001a\",\n\t\t\"blackAlpha20\": \"#00000033\",\n\t\t\"blackAlpha30\": \"#0000004d\",\n\t\t\"blackAlpha40\": \"#00000066\",\n\t\t\"blackAlpha5\": \"#0000000d\",\n\t\t\"blackAlpha50\": \"#00000080\",\n\t\t\"blackAlpha60\": \"#00000099\",\n\t\t\"blackAlpha70\": \"#000000b3\",\n\t\t\"blackAlpha80\": \"#000000cc\",\n\t\t\"blackAlpha90\": \"#000000e6\",\n\t\t\"blue\": {\n\t\t\t\"primary\": \"#0078d4\",\n\t\t\t\"shade10\": \"#006cbf\",\n\t\t\t\"shade20\": \"#005ba1\",\n\t\t\t\"shade30\": \"#004377\",\n\t\t\t\"shade40\": \"#002440\",\n\t\t\t\"shade50\": \"#001322\",\n\t\t\t\"tint10\": \"#1a86d9\",\n\t\t\t\"tint20\": \"#3595de\",\n\t\t\t\"tint30\": \"#5caae5\",\n\t\t\t\"tint40\": \"#a9d3f2\",\n\t\t\t\"tint50\": \"#d0e7f8\",\n\t\t\t\"tint60\": \"#f3f9fd\"\n\t\t},\n\t\t\"brand\": {\n\t\t\t\"10\": \"#061724\",\n\t\t\t\"20\": \"#082338\",\n\t\t\t\"30\": \"#0a2e4a\",\n\t\t\t\"40\": \"#0c3b5e\",\n\t\t\t\"50\": \"#0e4775\",\n\t\t\t\"60\": \"#0f548c\",\n\t\t\t\"70\": \"#115ea3\",\n\t\t\t\"80\": \"#0f6cbd\",\n\t\t\t\"90\": \"#2886de\",\n\t\t\t\"100\": \"#479ef5\",\n\t\t\t\"110\": \"#62abf5\",\n\t\t\t\"120\": \"#77b7f7\",\n\t\t\t\"130\": \"#96c6fa\",\n\t\t\t\"140\": \"#b4d6fa\",\n\t\t\t\"150\": \"#cfe4fa\",\n\t\t\t\"160\": \"#ebf3fc\",\n\t\t\t\"primary\": \"#185abd\",\n\t\t\t\"shade10\": \"#1651aa\",\n\t\t\t\"shade20\": \"#13458f\",\n\t\t\t\"shade30\": \"#0e336a\",\n\t\t\t\"shade40\": \"#004578\",\n\t\t\t\"shade50\": \"#043862\",\n\t\t\t\"shade60\": \"#092c47\",\n\t\t\t\"tint10\": \"#2e6ac5\",\n\t\t\t\"tint20\": \"#6794d7\",\n\t\t\t\"tint30\": \"#aec6eb\",\n\t\t\t\"tint40\": \"#d2e0f4\",\n\t\t\t\"tint50\": \"#deecf9\",\n\t\t\t\"tint60\": \"#eff6fc\"\n\t\t},\n\t\t\"brandShadowAmbient\": \"#0000004d\",\n\t\t\"brandShadowKey\": \"#00000040\",\n\t\t\"brass\": {\n\t\t\t\"primary\": \"#986f0b\",\n\t\t\t\"shade10\": \"#89640a\",\n\t\t\t\"shade20\": \"#745408\",\n\t\t\t\"shade30\": \"#553e06\",\n\t\t\t\"shade40\": \"#2e2103\",\n\t\t\t\"shade50\": \"#181202\",\n\t\t\t\"tint10\": \"#a47d1e\",\n\t\t\t\"tint20\": \"#b18c34\",\n\t\t\t\"tint30\": \"#c1a256\",\n\t\t\t\"tint40\": \"#e0cea2\",\n\t\t\t\"tint50\": \"#efe4cb\",\n\t\t\t\"tint60\": \"#fbf8f2\"\n\t\t},\n\t\t\"bronze\": {\n\t\t\t\"primary\": \"#a74109\",\n\t\t\t\"shade10\": \"#963a08\",\n\t\t\t\"shade20\": \"#7f3107\",\n\t\t\t\"shade30\": \"#5e2405\",\n\t\t\t\"shade40\": \"#321303\",\n\t\t\t\"shade50\": \"#1b0a01\",\n\t\t\t\"tint10\": \"#b2521e\",\n\t\t\t\"tint20\": \"#bc6535\",\n\t\t\t\"tint30\": \"#ca8057\",\n\t\t\t\"tint40\": \"#e5bba4\",\n\t\t\t\"tint50\": \"#f1d9cc\",\n\t\t\t\"tint60\": \"#fbf5f2\"\n\t\t},\n\t\t\"brown\": {\n\t\t\t\"primary\": \"#8e562e\",\n\t\t\t\"shade10\": \"#804d29\",\n\t\t\t\"shade20\": \"#6c4123\",\n\t\t\t\"shade30\": \"#50301a\",\n\t\t\t\"shade40\": \"#2b1a0e\",\n\t\t\t\"shade50\": \"#170e07\",\n\t\t\t\"tint10\": \"#9c663f\",\n\t\t\t\"tint20\": \"#a97652\",\n\t\t\t\"tint30\": \"#bb8f6f\",\n\t\t\t\"tint40\": \"#ddc3b0\",\n\t\t\t\"tint50\": \"#edded3\",\n\t\t\t\"tint60\": \"#faf7f4\"\n\t\t},\n\t\t\"burgundy\": {\n\t\t\t\"primary\": \"#a4262c\",\n\t\t\t\"shade10\": \"#942228\",\n\t\t\t\"shade20\": \"#7d1d21\",\n\t\t\t\"shade30\": \"#5c1519\",\n\t\t\t\"shade40\": \"#310b0d\",\n\t\t\t\"shade50\": \"#1a0607\",\n\t\t\t\"tint10\": \"#af393e\",\n\t\t\t\"tint20\": \"#ba4d52\",\n\t\t\t\"tint30\": \"#c86c70\",\n\t\t\t\"tint40\": \"#e4afb2\",\n\t\t\t\"tint50\": \"#f0d3d4\",\n\t\t\t\"tint60\": \"#fbf4f4\"\n\t\t},\n\t\t\"charcoal\": {\n\t\t\t\"primary\": \"#393939\",\n\t\t\t\"shade10\": \"#333333\",\n\t\t\t\"shade20\": \"#2b2b2b\",\n\t\t\t\"shade30\": \"#202020\",\n\t\t\t\"shade40\": \"#111111\",\n\t\t\t\"shade50\": \"#090909\",\n\t\t\t\"tint10\": \"#515151\",\n\t\t\t\"tint20\": \"#686868\",\n\t\t\t\"tint30\": \"#888888\",\n\t\t\t\"tint40\": \"#c4c4c4\",\n\t\t\t\"tint50\": \"#dfdfdf\",\n\t\t\t\"tint60\": \"#f7f7f7\"\n\t\t},\n\t\t\"cornflower\": {\n\t\t\t\"primary\": \"#4f6bed\",\n\t\t\t\"shade10\": \"#4760d5\",\n\t\t\t\"shade20\": \"#3c51b4\",\n\t\t\t\"shade30\": \"#2c3c85\",\n\t\t\t\"shade40\": \"#182047\",\n\t\t\t\"shade50\": \"#0d1126\",\n\t\t\t\"tint10\": \"#637cef\",\n\t\t\t\"tint20\": \"#778df1\",\n\t\t\t\"tint30\": \"#93a4f4\",\n\t\t\t\"tint40\": \"#c8d1fa\",\n\t\t\t\"tint50\": \"#e1e6fc\",\n\t\t\t\"tint60\": \"#f7f9fe\"\n\t\t},\n\t\t\"cranberry\": {\n\t\t\t\"primary\": \"#c50f1f\",\n\t\t\t\"shade10\": \"#b10e1c\",\n\t\t\t\"shade20\": \"#960b18\",\n\t\t\t\"shade30\": \"#6e0811\",\n\t\t\t\"shade40\": \"#3b0509\",\n\t\t\t\"shade50\": \"#200205\",\n\t\t\t\"tint10\": \"#cc2635\",\n\t\t\t\"tint20\": \"#d33f4c\",\n\t\t\t\"tint30\": \"#dc626d\",\n\t\t\t\"tint40\": \"#eeacb2\",\n\t\t\t\"tint50\": \"#f6d1d5\",\n\t\t\t\"tint60\": \"#fdf3f4\"\n\t\t},\n\t\t\"cyan\": {\n\t\t\t\"primary\": \"#0099bc\",\n\t\t\t\"shade10\": \"#008aa9\",\n\t\t\t\"shade20\": \"#00748f\",\n\t\t\t\"shade30\": \"#005669\",\n\t\t\t\"shade40\": \"#002e38\",\n\t\t\t\"shade50\": \"#00181e\",\n\t\t\t\"tint10\": \"#18a4c4\",\n\t\t\t\"tint20\": \"#31afcc\",\n\t\t\t\"tint30\": \"#56bfd7\",\n\t\t\t\"tint40\": \"#a4deeb\",\n\t\t\t\"tint50\": \"#cdedf4\",\n\t\t\t\"tint60\": \"#f2fafc\"\n\t\t},\n\t\t\"darkBlue\": {\n\t\t\t\"primary\": \"#003966\",\n\t\t\t\"shade10\": \"#00335c\",\n\t\t\t\"shade20\": \"#002b4e\",\n\t\t\t\"shade30\": \"#002039\",\n\t\t\t\"shade40\": \"#00111f\",\n\t\t\t\"shade50\": \"#000910\",\n\t\t\t\"tint10\": \"#0e4a78\",\n\t\t\t\"tint20\": \"#215c8b\",\n\t\t\t\"tint30\": \"#4178a3\",\n\t\t\t\"tint40\": \"#92b5d1\",\n\t\t\t\"tint50\": \"#c2d6e7\",\n\t\t\t\"tint60\": \"#eff4f9\"\n\t\t},\n\t\t\"darkBrown\": {\n\t\t\t\"primary\": \"#4d291c\",\n\t\t\t\"shade10\": \"#452519\",\n\t\t\t\"shade20\": \"#3a1f15\",\n\t\t\t\"shade30\": \"#2b1710\",\n\t\t\t\"shade40\": \"#170c08\",\n\t\t\t\"shade50\": \"#0c0704\",\n\t\t\t\"tint10\": \"#623a2b\",\n\t\t\t\"tint20\": \"#784d3e\",\n\t\t\t\"tint30\": \"#946b5c\",\n\t\t\t\"tint40\": \"#caada3\",\n\t\t\t\"tint50\": \"#e3d2cb\",\n\t\t\t\"tint60\": \"#f8f3f2\"\n\t\t},\n\t\t\"darkGreen\": {\n\t\t\t\"primary\": \"#0b6a0b\",\n\t\t\t\"shade10\": \"#0a5f0a\",\n\t\t\t\"shade20\": \"#085108\",\n\t\t\t\"shade30\": \"#063b06\",\n\t\t\t\"shade40\": \"#032003\",\n\t\t\t\"shade50\": \"#021102\",\n\t\t\t\"tint10\": \"#1a7c1a\",\n\t\t\t\"tint20\": \"#2d8e2d\",\n\t\t\t\"tint30\": \"#4da64d\",\n\t\t\t\"tint40\": \"#9ad29a\",\n\t\t\t\"tint50\": \"#c6e7c6\",\n\t\t\t\"tint60\": \"#f0f9f0\"\n\t\t},\n\t\t\"darkOrange\": {\n\t\t\t\"primary\": \"#da3b01\",\n\t\t\t\"shade10\": \"#c43501\",\n\t\t\t\"shade20\": \"#a62d01\",\n\t\t\t\"shade30\": \"#7a2101\",\n\t\t\t\"shade40\": \"#411200\",\n\t\t\t\"shade50\": \"#230900\",\n\t\t\t\"tint10\": \"#de501c\",\n\t\t\t\"tint20\": \"#e36537\",\n\t\t\t\"tint30\": \"#e9835e\",\n\t\t\t\"tint40\": \"#f4bfab\",\n\t\t\t\"tint50\": \"#f9dcd1\",\n\t\t\t\"tint60\": \"#fdf6f3\"\n\t\t},\n\t\t\"darkPurple\": {\n\t\t\t\"primary\": \"#401b6c\",\n\t\t\t\"shade10\": \"#3a1861\",\n\t\t\t\"shade20\": \"#311552\",\n\t\t\t\"shade30\": \"#240f3c\",\n\t\t\t\"shade40\": \"#130820\",\n\t\t\t\"shade50\": \"#0a0411\",\n\t\t\t\"tint10\": \"#512b7e\",\n\t\t\t\"tint20\": \"#633e8f\",\n\t\t\t\"tint30\": \"#7e5ca7\",\n\t\t\t\"tint40\": \"#b9a3d3\",\n\t\t\t\"tint50\": \"#d8cce7\",\n\t\t\t\"tint60\": \"#f5f2f9\"\n\t\t},\n\t\t\"darkRed\": {\n\t\t\t\"primary\": \"#750b1c\",\n\t\t\t\"shade10\": \"#690a19\",\n\t\t\t\"shade20\": \"#590815\",\n\t\t\t\"shade30\": \"#420610\",\n\t\t\t\"shade40\": \"#230308\",\n\t\t\t\"shade50\": \"#130204\",\n\t\t\t\"tint10\": \"#861b2c\",\n\t\t\t\"tint20\": \"#962f3f\",\n\t\t\t\"tint30\": \"#ac4f5e\",\n\t\t\t\"tint40\": \"#d69ca5\",\n\t\t\t\"tint50\": \"#e9c7cd\",\n\t\t\t\"tint60\": \"#f9f0f2\"\n\t\t},\n\t\t\"darkTeal\": {\n\t\t\t\"primary\": \"#006666\",\n\t\t\t\"shade10\": \"#005c5c\",\n\t\t\t\"shade20\": \"#004e4e\",\n\t\t\t\"shade30\": \"#003939\",\n\t\t\t\"shade40\": \"#001f1f\",\n\t\t\t\"shade50\": \"#001010\",\n\t\t\t\"tint10\": \"#0e7878\",\n\t\t\t\"tint20\": \"#218b8b\",\n\t\t\t\"tint30\": \"#41a3a3\",\n\t\t\t\"tint40\": \"#92d1d1\",\n\t\t\t\"tint50\": \"#c2e7e7\",\n\t\t\t\"tint60\": \"#eff9f9\"\n\t\t},\n\t\t\"excel\": {\n\t\t\t\"primary\": \"#107c41\",\n\t\t\t\"shade10\": \"#0f703b\",\n\t\t\t\"shade20\": \"#0c5f32\",\n\t\t\t\"shade30\": \"#094624\",\n\t\t\t\"shade40\": \"#094624\",\n\t\t\t\"shade50\": \"#052912\",\n\t\t\t\"shade60\": \"#03160a\",\n\t\t\t\"tint10\": \"#218d51\",\n\t\t\t\"tint20\": \"#55b17e\",\n\t\t\t\"tint30\": \"#a0d8b9\",\n\t\t\t\"tint40\": \"#caead8\",\n\t\t\t\"tint50\": \"#a0d8b9\",\n\t\t\t\"tint60\": \"#caead8\"\n\t\t},\n\t\t\"forest\": {\n\t\t\t\"primary\": \"#498205\",\n\t\t\t\"shade10\": \"#427505\",\n\t\t\t\"shade20\": \"#376304\",\n\t\t\t\"shade30\": \"#294903\",\n\t\t\t\"shade40\": \"#162702\",\n\t\t\t\"shade50\": \"#0c1501\",\n\t\t\t\"tint10\": \"#599116\",\n\t\t\t\"tint20\": \"#6ba02b\",\n\t\t\t\"tint30\": \"#85b44c\",\n\t\t\t\"tint40\": \"#bdd99b\",\n\t\t\t\"tint50\": \"#dbebc7\",\n\t\t\t\"tint60\": \"#f6faf0\"\n\t\t},\n\t\t\"gold\": {\n\t\t\t\"primary\": \"#c19c00\",\n\t\t\t\"shade10\": \"#ae8c00\",\n\t\t\t\"shade20\": \"#937700\",\n\t\t\t\"shade30\": \"#6c5700\",\n\t\t\t\"shade40\": \"#3a2f00\",\n\t\t\t\"shade50\": \"#1f1900\",\n\t\t\t\"tint10\": \"#c8a718\",\n\t\t\t\"tint20\": \"#d0b232\",\n\t\t\t\"tint30\": \"#dac157\",\n\t\t\t\"tint40\": \"#ecdfa5\",\n\t\t\t\"tint50\": \"#f5eece\",\n\t\t\t\"tint60\": \"#fdfbf2\"\n\t\t},\n\t\t\"grape\": {\n\t\t\t\"primary\": \"#881798\",\n\t\t\t\"shade10\": \"#7a1589\",\n\t\t\t\"shade20\": \"#671174\",\n\t\t\t\"shade30\": \"#4c0d55\",\n\t\t\t\"shade40\": \"#29072e\",\n\t\t\t\"shade50\": \"#160418\",\n\t\t\t\"tint10\": \"#952aa4\",\n\t\t\t\"tint20\": \"#a33fb1\",\n\t\t\t\"tint30\": \"#b55fc1\",\n\t\t\t\"tint40\": \"#d9a7e0\",\n\t\t\t\"tint50\": \"#eaceef\",\n\t\t\t\"tint60\": \"#faf2fb\"\n\t\t},\n\t\t\"green\": {\n\t\t\t\"primary\": \"#107c10\",\n\t\t\t\"shade10\": \"#0e700e\",\n\t\t\t\"shade20\": \"#0c5e0c\",\n\t\t\t\"shade30\": \"#094509\",\n\t\t\t\"shade40\": \"#052505\",\n\t\t\t\"shade50\": \"#031403\",\n\t\t\t\"tint10\": \"#218c21\",\n\t\t\t\"tint20\": \"#359b35\",\n\t\t\t\"tint30\": \"#54b054\",\n\t\t\t\"tint40\": \"#9fd89f\",\n\t\t\t\"tint50\": \"#c9eac9\",\n\t\t\t\"tint60\": \"#f1faf1\"\n\t\t},\n\t\t\"grey10\": \"#1a1a1a\",\n\t\t\"grey10Alpha10\": \"#1a1a1a1a\",\n\t\t\"grey10Alpha20\": \"#1a1a1a33\",\n\t\t\"grey10Alpha30\": \"#1a1a1a4d\",\n\t\t\"grey10Alpha40\": \"#1a1a1a66\",\n\t\t\"grey10Alpha5\": \"#1a1a1a0d\",\n\t\t\"grey10Alpha50\": \"#1a1a1a80\",\n\t\t\"grey10Alpha60\": \"#1a1a1a99\",\n\t\t\"grey10Alpha70\": \"#1a1a1ab3\",\n\t\t\"grey10Alpha80\": \"#1a1a1acc\",\n\t\t\"grey10Alpha90\": \"#1a1a1ae6\",\n\t\t\"grey12\": \"#1f1f1f\",\n\t\t\"grey12Alpha10\": \"#1f1f1f1a\",\n\t\t\"grey12Alpha20\": \"#1f1f1f33\",\n\t\t\"grey12Alpha30\": \"#1f1f1f4d\",\n\t\t\"grey12Alpha40\": \"#1f1f1f66\",\n\t\t\"grey12Alpha5\": \"#1f1f1f0d\",\n\t\t\"grey12Alpha50\": \"#1f1f1f80\",\n\t\t\"grey12Alpha60\": \"#1f1f1f99\",\n\t\t\"grey12Alpha70\": \"#1f1f1fb3\",\n\t\t\"grey12Alpha80\": \"#1f1f1fcc\",\n\t\t\"grey12Alpha90\": \"#1f1f1fe6\",\n\t\t\"grey14\": \"#242424\",\n\t\t\"grey14Alpha10\": \"#2424241a\",\n\t\t\"grey14Alpha20\": \"#24242433\",\n\t\t\"grey14Alpha30\": \"#2424244d\",\n\t\t\"grey14Alpha40\": \"#24242466\",\n\t\t\"grey14Alpha5\": \"#2424240d\",\n\t\t\"grey14Alpha50\": \"#24242480\",\n\t\t\"grey14Alpha60\": \"#24242499\",\n\t\t\"grey14Alpha70\": \"#242424b3\",\n\t\t\"grey14Alpha80\": \"#242424cc\",\n\t\t\"grey14Alpha90\": \"#242424e6\",\n\t\t\"grey16\": \"#292929\",\n\t\t\"grey18\": \"#2e2e2e\",\n\t\t\"grey2\": \"#050505\",\n\t\t\"grey20\": \"#333333\",\n\t\t\"grey22\": \"#383838\",\n\t\t\"grey24\": \"#3d3d3d\",\n\t\t\"grey26\": \"#424242\",\n\t\t\"grey28\": \"#474747\",\n\t\t\"grey30\": \"#4d4d4d\",\n\t\t\"grey32\": \"#525252\",\n\t\t\"grey34\": \"#575757\",\n\t\t\"grey36\": \"#5c5c5c\",\n\t\t\"grey38\": \"#616161\",\n\t\t\"grey4\": \"#0a0a0a\",\n\t\t\"grey40\": \"#666666\",\n\t\t\"grey42\": \"#6b6b6b\",\n\t\t\"grey44\": \"#707070\",\n\t\t\"grey46\": \"#757575\",\n\t\t\"grey48\": \"#7a7a7a\",\n\t\t\"grey50\": \"#808080\",\n\t\t\"grey52\": \"#858585\",\n\t\t\"grey54\": \"#8a8a8a\",\n\t\t\"grey56\": \"#8f8f8f\",\n\t\t\"grey58\": \"#949494\",\n\t\t\"grey6\": \"#0f0f0f\",\n\t\t\"grey60\": \"#999999\",\n\t\t\"grey62\": \"#9e9e9e\",\n\t\t\"grey64\": \"#a3a3a3\",\n\t\t\"grey66\": \"#a8a8a8\",\n\t\t\"grey68\": \"#adadad\",\n\t\t\"grey70\": \"#b3b3b3\",\n\t\t\"grey72\": \"#b8b8b8\",\n\t\t\"grey74\": \"#bdbdbd\",\n\t\t\"grey76\": \"#c2c2c2\",\n\t\t\"grey78\": \"#c7c7c7\",\n\t\t\"grey8\": \"#141414\",\n\t\t\"grey80\": \"#cccccc\",\n\t\t\"grey82\": \"#d1d1d1\",\n\t\t\"grey84\": \"#d6d6d6\",\n\t\t\"grey86\": \"#dbdbdb\",\n\t\t\"grey88\": \"#e0e0e0\",\n\t\t\"grey90\": \"#e6e6e6\",\n\t\t\"grey92\": \"#ebebeb\",\n\t\t\"grey94\": \"#f0f0f0\",\n\t\t\"grey96\": \"#f5f5f5\",\n\t\t\"grey98\": \"#fafafa\",\n\t\t\"hotPink\": {\n\t\t\t\"primary\": \"#e3008c\",\n\t\t\t\"shade10\": \"#cc007e\",\n\t\t\t\"shade20\": \"#ad006a\",\n\t\t\t\"shade30\": \"#7f004e\",\n\t\t\t\"shade40\": \"#44002a\",\n\t\t\t\"shade50\": \"#240016\",\n\t\t\t\"tint10\": \"#e61c99\",\n\t\t\t\"tint20\": \"#ea38a6\",\n\t\t\t\"tint30\": \"#ee5fb7\",\n\t\t\t\"tint40\": \"#f7adda\",\n\t\t\t\"tint50\": \"#fbd2eb\",\n\t\t\t\"tint60\": \"#fef4fa\"\n\t\t},\n\t\t\"lavender\": {\n\t\t\t\"primary\": \"#7160e8\",\n\t\t\t\"shade10\": \"#6656d1\",\n\t\t\t\"shade20\": \"#5649b0\",\n\t\t\t\"shade30\": \"#3f3682\",\n\t\t\t\"shade40\": \"#221d46\",\n\t\t\t\"shade50\": \"#120f25\",\n\t\t\t\"tint10\": \"#8172eb\",\n\t\t\t\"tint20\": \"#9184ee\",\n\t\t\t\"tint30\": \"#a79cf1\",\n\t\t\t\"tint40\": \"#d2ccf8\",\n\t\t\t\"tint50\": \"#e7e4fb\",\n\t\t\t\"tint60\": \"#f9f8fe\"\n\t\t},\n\t\t\"lightBlue\": {\n\t\t\t\"primary\": \"#3a96dd\",\n\t\t\t\"shade10\": \"#3487c7\",\n\t\t\t\"shade20\": \"#2c72a8\",\n\t\t\t\"shade30\": \"#20547c\",\n\t\t\t\"shade40\": \"#112d42\",\n\t\t\t\"shade50\": \"#091823\",\n\t\t\t\"tint10\": \"#4fa1e1\",\n\t\t\t\"tint20\": \"#65ade5\",\n\t\t\t\"tint30\": \"#83bdeb\",\n\t\t\t\"tint40\": \"#bfddf5\",\n\t\t\t\"tint50\": \"#dcedfa\",\n\t\t\t\"tint60\": \"#f6fafe\"\n\t\t},\n\t\t\"lightGreen\": {\n\t\t\t\"primary\": \"#13a10e\",\n\t\t\t\"shade10\": \"#11910d\",\n\t\t\t\"shade20\": \"#0e7a0b\",\n\t\t\t\"shade30\": \"#0b5a08\",\n\t\t\t\"shade40\": \"#063004\",\n\t\t\t\"shade50\": \"#031a02\",\n\t\t\t\"tint10\": \"#27ac22\",\n\t\t\t\"tint20\": \"#3db838\",\n\t\t\t\"tint30\": \"#5ec75a\",\n\t\t\t\"tint40\": \"#a7e3a5\",\n\t\t\t\"tint50\": \"#cef0cd\",\n\t\t\t\"tint60\": \"#f2fbf2\"\n\t\t},\n\t\t\"lightTeal\": {\n\t\t\t\"primary\": \"#00b7c3\",\n\t\t\t\"shade10\": \"#00a5af\",\n\t\t\t\"shade20\": \"#008b94\",\n\t\t\t\"shade30\": \"#00666d\",\n\t\t\t\"shade40\": \"#00373a\",\n\t\t\t\"shade50\": \"#001d1f\",\n\t\t\t\"tint10\": \"#18bfca\",\n\t\t\t\"tint20\": \"#32c8d1\",\n\t\t\t\"tint30\": \"#58d3db\",\n\t\t\t\"tint40\": \"#a6e9ed\",\n\t\t\t\"tint50\": \"#cef3f5\",\n\t\t\t\"tint60\": \"#f2fcfd\"\n\t\t},\n\t\t\"lilac\": {\n\t\t\t\"primary\": \"#b146c2\",\n\t\t\t\"shade10\": \"#9f3faf\",\n\t\t\t\"shade20\": \"#863593\",\n\t\t\t\"shade30\": \"#63276d\",\n\t\t\t\"shade40\": \"#35153a\",\n\t\t\t\"shade50\": \"#1c0b1f\",\n\t\t\t\"tint10\": \"#ba58c9\",\n\t\t\t\"tint20\": \"#c36bd1\",\n\t\t\t\"tint30\": \"#cf87da\",\n\t\t\t\"tint40\": \"#e6bfed\",\n\t\t\t\"tint50\": \"#f2dcf5\",\n\t\t\t\"tint60\": \"#fcf6fd\"\n\t\t},\n\t\t\"lime\": {\n\t\t\t\"primary\": \"#73aa24\",\n\t\t\t\"shade10\": \"#689920\",\n\t\t\t\"shade20\": \"#57811b\",\n\t\t\t\"shade30\": \"#405f14\",\n\t\t\t\"shade40\": \"#23330b\",\n\t\t\t\"shade50\": \"#121b06\",\n\t\t\t\"tint10\": \"#81b437\",\n\t\t\t\"tint20\": \"#90be4c\",\n\t\t\t\"tint30\": \"#a4cc6c\",\n\t\t\t\"tint40\": \"#cfe5af\",\n\t\t\t\"tint50\": \"#e5f1d3\",\n\t\t\t\"tint60\": \"#f8fcf4\"\n\t\t},\n\t\t\"magenta\": {\n\t\t\t\"primary\": \"#bf0077\",\n\t\t\t\"shade10\": \"#ac006b\",\n\t\t\t\"shade20\": \"#91005a\",\n\t\t\t\"shade30\": \"#6b0043\",\n\t\t\t\"shade40\": \"#390024\",\n\t\t\t\"shade50\": \"#1f0013\",\n\t\t\t\"tint10\": \"#c71885\",\n\t\t\t\"tint20\": \"#ce3293\",\n\t\t\t\"tint30\": \"#d957a8\",\n\t\t\t\"tint40\": \"#eca5d1\",\n\t\t\t\"tint50\": \"#f5cee6\",\n\t\t\t\"tint60\": \"#fcf2f9\"\n\t\t},\n\t\t\"marigold\": {\n\t\t\t\"primary\": \"#eaa300\",\n\t\t\t\"shade10\": \"#d39300\",\n\t\t\t\"shade20\": \"#b27c00\",\n\t\t\t\"shade30\": \"#835b00\",\n\t\t\t\"shade40\": \"#463100\",\n\t\t\t\"shade50\": \"#251a00\",\n\t\t\t\"tint10\": \"#edad1c\",\n\t\t\t\"tint20\": \"#efb839\",\n\t\t\t\"tint30\": \"#f2c661\",\n\t\t\t\"tint40\": \"#f9e2ae\",\n\t\t\t\"tint50\": \"#fcefd3\",\n\t\t\t\"tint60\": \"#fefbf4\"\n\t\t},\n\t\t\"mink\": {\n\t\t\t\"primary\": \"#5d5a58\",\n\t\t\t\"shade10\": \"#54514f\",\n\t\t\t\"shade20\": \"#474443\",\n\t\t\t\"shade30\": \"#343231\",\n\t\t\t\"shade40\": \"#1c1b1a\",\n\t\t\t\"shade50\": \"#0f0e0e\",\n\t\t\t\"tint10\": \"#706d6b\",\n\t\t\t\"tint20\": \"#84817e\",\n\t\t\t\"tint30\": \"#9e9b99\",\n\t\t\t\"tint40\": \"#cecccb\",\n\t\t\t\"tint50\": \"#e5e4e3\",\n\t\t\t\"tint60\": \"#f8f8f8\"\n\t\t},\n\t\t\"navy\": {\n\t\t\t\"primary\": \"#0027b4\",\n\t\t\t\"shade10\": \"#0023a2\",\n\t\t\t\"shade20\": \"#001e89\",\n\t\t\t\"shade30\": \"#001665\",\n\t\t\t\"shade40\": \"#000c36\",\n\t\t\t\"shade50\": \"#00061d\",\n\t\t\t\"tint10\": \"#173bbd\",\n\t\t\t\"tint20\": \"#3050c6\",\n\t\t\t\"tint30\": \"#546fd2\",\n\t\t\t\"tint40\": \"#a3b2e8\",\n\t\t\t\"tint50\": \"#ccd5f3\",\n\t\t\t\"tint60\": \"#f2f4fc\"\n\t\t},\n\t\t\"neutralShadowAmbient\": \"#0000001f\",\n\t\t\"neutralShadowAmbientDarker\": \"#00000033\",\n\t\t\"neutralShadowAmbientLighter\": \"#0000000f\",\n\t\t\"neutralShadowKey\": \"#00000024\",\n\t\t\"neutralShadowKeyDarker\": \"#0000003d\",\n\t\t\"neutralShadowKeyLighter\": \"#00000012\",\n\t\t\"office\": {\n\t\t\t\"primary\": \"#d83b01\",\n\t\t\t\"shade10\": \"#c33400\",\n\t\t\t\"shade20\": \"#a52c00\",\n\t\t\t\"shade30\": \"#792000\",\n\t\t\t\"shade40\": \"#792000\",\n\t\t\t\"shade50\": \"#4d2415\",\n\t\t\t\"shade60\": \"#29130b\",\n\t\t\t\"tint10\": \"#dd4f1b\",\n\t\t\t\"tint20\": \"#e8825d\",\n\t\t\t\"tint30\": \"#f4beaa\",\n\t\t\t\"tint40\": \"#f9dcd1\",\n\t\t\t\"tint50\": \"#f4beaa\",\n\t\t\t\"tint60\": \"#f9dcd1\"\n\t\t},\n\t\t\"oneNote\": {\n\t\t\t\"primary\": \"#80397b\",\n\t\t\t\"shade10\": \"#6c2f68\",\n\t\t\t\"shade20\": \"#52254f\",\n\t\t\t\"shade30\": \"#3c1a3a\",\n\t\t\t\"shade40\": \"#430e60\",\n\t\t\t\"shade50\": \"#430e60\",\n\t\t\t\"shade60\": \"#430e60\",\n\t\t\t\"tint10\": \"#9e5499\",\n\t\t\t\"tint20\": \"#d4a9d1\",\n\t\t\t\"tint30\": \"#e0bfde\",\n\t\t\t\"tint40\": \"#f0daee\",\n\t\t\t\"tint50\": \"#e6d1f2\",\n\t\t\t\"tint60\": \"#e6d1f2\"\n\t\t},\n\t\t\"orange\": {\n\t\t\t\"primary\": \"#f7630c\",\n\t\t\t\"shade10\": \"#de590b\",\n\t\t\t\"shade20\": \"#bc4b09\",\n\t\t\t\"shade30\": \"#8a3707\",\n\t\t\t\"shade40\": \"#4a1e04\",\n\t\t\t\"shade50\": \"#271002\",\n\t\t\t\"tint10\": \"#f87528\",\n\t\t\t\"tint20\": \"#f98845\",\n\t\t\t\"tint30\": \"#faa06b\",\n\t\t\t\"tint40\": \"#fdcfb4\",\n\t\t\t\"tint50\": \"#fee5d7\",\n\t\t\t\"tint60\": \"#fff9f5\"\n\t\t},\n\t\t\"orchid\": {\n\t\t\t\"primary\": \"#8764b8\",\n\t\t\t\"shade10\": \"#795aa6\",\n\t\t\t\"shade20\": \"#674c8c\",\n\t\t\t\"shade30\": \"#4c3867\",\n\t\t\t\"shade40\": \"#281e37\",\n\t\t\t\"shade50\": \"#16101d\",\n\t\t\t\"tint10\": \"#9373c0\",\n\t\t\t\"tint20\": \"#a083c9\",\n\t\t\t\"tint30\": \"#b29ad4\",\n\t\t\t\"tint40\": \"#d7caea\",\n\t\t\t\"tint50\": \"#e9e2f4\",\n\t\t\t\"tint60\": \"#f9f8fc\"\n\t\t},\n\t\t\"outlook\": {\n\t\t\t\"primary\": \"#0078d4\",\n\t\t\t\"shade10\": \"#106ebe\",\n\t\t\t\"shade20\": \"#1664a7\",\n\t\t\t\"shade30\": \"#135995\",\n\t\t\t\"shade40\": \"#004578\",\n\t\t\t\"shade50\": \"#043862\",\n\t\t\t\"shade60\": \"#092c47\",\n\t\t\t\"tint10\": \"#2488d8\",\n\t\t\t\"tint20\": \"#69afe5\",\n\t\t\t\"tint30\": \"#b3d6f2\",\n\t\t\t\"tint40\": \"#cce3f5\",\n\t\t\t\"tint50\": \"#deecf9\",\n\t\t\t\"tint60\": \"#eff6fc\"\n\t\t},\n\t\t\"peach\": {\n\t\t\t\"primary\": \"#ff8c00\",\n\t\t\t\"shade10\": \"#e67e00\",\n\t\t\t\"shade20\": \"#c26a00\",\n\t\t\t\"shade30\": \"#8f4e00\",\n\t\t\t\"shade40\": \"#4d2a00\",\n\t\t\t\"shade50\": \"#291600\",\n\t\t\t\"tint10\": \"#ff9a1f\",\n\t\t\t\"tint20\": \"#ffa83d\",\n\t\t\t\"tint30\": \"#ffba66\",\n\t\t\t\"tint40\": \"#ffddb3\",\n\t\t\t\"tint50\": \"#ffedd6\",\n\t\t\t\"tint60\": \"#fffaf5\"\n\t\t},\n\t\t\"pink\": {\n\t\t\t\"primary\": \"#e43ba6\",\n\t\t\t\"shade10\": \"#cd3595\",\n\t\t\t\"shade20\": \"#ad2d7e\",\n\t\t\t\"shade30\": \"#80215d\",\n\t\t\t\"shade40\": \"#441232\",\n\t\t\t\"shade50\": \"#24091b\",\n\t\t\t\"tint10\": \"#e750b0\",\n\t\t\t\"tint20\": \"#ea66ba\",\n\t\t\t\"tint30\": \"#ef85c8\",\n\t\t\t\"tint40\": \"#f7c0e3\",\n\t\t\t\"tint50\": \"#fbddf0\",\n\t\t\t\"tint60\": \"#fef6fb\"\n\t\t},\n\t\t\"platinum\": {\n\t\t\t\"primary\": \"#69797e\",\n\t\t\t\"shade10\": \"#5f6d71\",\n\t\t\t\"shade20\": \"#505c60\",\n\t\t\t\"shade30\": \"#3b4447\",\n\t\t\t\"shade40\": \"#1f2426\",\n\t\t\t\"shade50\": \"#111314\",\n\t\t\t\"tint10\": \"#79898d\",\n\t\t\t\"tint20\": \"#89989d\",\n\t\t\t\"tint30\": \"#a0adb2\",\n\t\t\t\"tint40\": \"#cdd6d8\",\n\t\t\t\"tint50\": \"#e4e9ea\",\n\t\t\t\"tint60\": \"#f8f9fa\"\n\t\t},\n\t\t\"plum\": {\n\t\t\t\"primary\": \"#77004d\",\n\t\t\t\"shade10\": \"#6b0045\",\n\t\t\t\"shade20\": \"#5a003b\",\n\t\t\t\"shade30\": \"#43002b\",\n\t\t\t\"shade40\": \"#240017\",\n\t\t\t\"shade50\": \"#13000c\",\n\t\t\t\"tint10\": \"#87105d\",\n\t\t\t\"tint20\": \"#98246f\",\n\t\t\t\"tint30\": \"#ad4589\",\n\t\t\t\"tint40\": \"#d696c0\",\n\t\t\t\"tint50\": \"#e9c4dc\",\n\t\t\t\"tint60\": \"#faf0f6\"\n\t\t},\n\t\t\"powerPoint\": {\n\t\t\t\"primary\": \"#c43e1c\",\n\t\t\t\"shade10\": \"#b13719\",\n\t\t\t\"shade20\": \"#952f15\",\n\t\t\t\"shade30\": \"#6e220f\",\n\t\t\t\"shade40\": \"#6e220f\",\n\t\t\t\"shade50\": \"#3c1805\",\n\t\t\t\"shade60\": \"#200d03\",\n\t\t\t\"tint10\": \"#cb5031\",\n\t\t\t\"tint20\": \"#dc816a\",\n\t\t\t\"tint30\": \"#edbcb0\",\n\t\t\t\"tint40\": \"#f6dbd4\",\n\t\t\t\"tint50\": \"#edbcb0\",\n\t\t\t\"tint60\": \"#f6dbd4\"\n\t\t},\n\t\t\"pumpkin\": {\n\t\t\t\"primary\": \"#ca5010\",\n\t\t\t\"shade10\": \"#b6480e\",\n\t\t\t\"shade20\": \"#9a3d0c\",\n\t\t\t\"shade30\": \"#712d09\",\n\t\t\t\"shade40\": \"#3d1805\",\n\t\t\t\"shade50\": \"#200d03\",\n\t\t\t\"tint10\": \"#d06228\",\n\t\t\t\"tint20\": \"#d77440\",\n\t\t\t\"tint30\": \"#df8e64\",\n\t\t\t\"tint40\": \"#efc4ad\",\n\t\t\t\"tint50\": \"#f7dfd2\",\n\t\t\t\"tint60\": \"#fdf7f4\"\n\t\t},\n\t\t\"purple\": {\n\t\t\t\"primary\": \"#5c2e91\",\n\t\t\t\"shade10\": \"#532982\",\n\t\t\t\"shade20\": \"#46236e\",\n\t\t\t\"shade30\": \"#341a51\",\n\t\t\t\"shade40\": \"#1c0e2b\",\n\t\t\t\"shade50\": \"#0f0717\",\n\t\t\t\"tint10\": \"#6b3f9e\",\n\t\t\t\"tint20\": \"#7c52ab\",\n\t\t\t\"tint30\": \"#9470bd\",\n\t\t\t\"tint40\": \"#c6b1de\",\n\t\t\t\"tint50\": \"#e0d3ed\",\n\t\t\t\"tint60\": \"#f7f4fb\"\n\t\t},\n\t\t\"red\": {\n\t\t\t\"primary\": \"#d13438\",\n\t\t\t\"shade10\": \"#bc2f32\",\n\t\t\t\"shade20\": \"#9f282b\",\n\t\t\t\"shade30\": \"#751d1f\",\n\t\t\t\"shade40\": \"#3f1011\",\n\t\t\t\"shade50\": \"#210809\",\n\t\t\t\"tint10\": \"#d7494c\",\n\t\t\t\"tint20\": \"#dc5e62\",\n\t\t\t\"tint30\": \"#e37d80\",\n\t\t\t\"tint40\": \"#f1bbbc\",\n\t\t\t\"tint50\": \"#f8dadb\",\n\t\t\t\"tint60\": \"#fdf6f6\"\n\t\t},\n\t\t\"royalBlue\": {\n\t\t\t\"primary\": \"#004e8c\",\n\t\t\t\"shade10\": \"#00467e\",\n\t\t\t\"shade20\": \"#003b6a\",\n\t\t\t\"shade30\": \"#002c4e\",\n\t\t\t\"shade40\": \"#00172a\",\n\t\t\t\"shade50\": \"#000c16\",\n\t\t\t\"tint10\": \"#125e9a\",\n\t\t\t\"tint20\": \"#286fa8\",\n\t\t\t\"tint30\": \"#4a89ba\",\n\t\t\t\"tint40\": \"#9abfdc\",\n\t\t\t\"tint50\": \"#c7dced\",\n\t\t\t\"tint60\": \"#f0f6fa\"\n\t\t},\n\t\t\"seafoam\": {\n\t\t\t\"primary\": \"#00cc6a\",\n\t\t\t\"shade10\": \"#00b85f\",\n\t\t\t\"shade20\": \"#009b51\",\n\t\t\t\"shade30\": \"#00723b\",\n\t\t\t\"shade40\": \"#003d20\",\n\t\t\t\"shade50\": \"#002111\",\n\t\t\t\"tint10\": \"#19d279\",\n\t\t\t\"tint20\": \"#34d889\",\n\t\t\t\"tint30\": \"#5ae0a0\",\n\t\t\t\"tint40\": \"#a8f0cd\",\n\t\t\t\"tint50\": \"#cff7e4\",\n\t\t\t\"tint60\": \"#f3fdf8\"\n\t\t},\n\t\t\"silver\": {\n\t\t\t\"primary\": \"#859599\",\n\t\t\t\"shade10\": \"#78868a\",\n\t\t\t\"shade20\": \"#657174\",\n\t\t\t\"shade30\": \"#4a5356\",\n\t\t\t\"shade40\": \"#282d2e\",\n\t\t\t\"shade50\": \"#151818\",\n\t\t\t\"tint10\": \"#92a1a5\",\n\t\t\t\"tint20\": \"#a0aeb1\",\n\t\t\t\"tint30\": \"#b3bfc2\",\n\t\t\t\"tint40\": \"#d8dfe0\",\n\t\t\t\"tint50\": \"#eaeeef\",\n\t\t\t\"tint60\": \"#fafbfb\"\n\t\t},\n\t\t\"steel\": {\n\t\t\t\"primary\": \"#005b70\",\n\t\t\t\"shade10\": \"#005265\",\n\t\t\t\"shade20\": \"#004555\",\n\t\t\t\"shade30\": \"#00333f\",\n\t\t\t\"shade40\": \"#001b22\",\n\t\t\t\"shade50\": \"#000f12\",\n\t\t\t\"tint10\": \"#0f6c81\",\n\t\t\t\"tint20\": \"#237d92\",\n\t\t\t\"tint30\": \"#4496a9\",\n\t\t\t\"tint40\": \"#94c8d4\",\n\t\t\t\"tint50\": \"#c3e1e8\",\n\t\t\t\"tint60\": \"#eff7f9\"\n\t\t},\n\t\t\"teal\": {\n\t\t\t\"primary\": \"#038387\",\n\t\t\t\"shade10\": \"#037679\",\n\t\t\t\"shade20\": \"#026467\",\n\t\t\t\"shade30\": \"#02494c\",\n\t\t\t\"shade40\": \"#012728\",\n\t\t\t\"shade50\": \"#001516\",\n\t\t\t\"tint10\": \"#159195\",\n\t\t\t\"tint20\": \"#2aa0a4\",\n\t\t\t\"tint30\": \"#4cb4b7\",\n\t\t\t\"tint40\": \"#9bd9db\",\n\t\t\t\"tint50\": \"#c7ebec\",\n\t\t\t\"tint60\": \"#f0fafa\"\n\t\t},\n\t\t\"white\": \"#ffffff\",\n\t\t\"whiteAlpha10\": \"#ffffff1a\",\n\t\t\"whiteAlpha20\": \"#ffffff33\",\n\t\t\"whiteAlpha30\": \"#ffffff4d\",\n\t\t\"whiteAlpha40\": \"#ffffff66\",\n\t\t\"whiteAlpha5\": \"#ffffff0d\",\n\t\t\"whiteAlpha50\": \"#ffffff80\",\n\t\t\"whiteAlpha60\": \"#ffffff99\",\n\t\t\"whiteAlpha70\": \"#ffffffb3\",\n\t\t\"whiteAlpha80\": \"#ffffffcc\",\n\t\t\"whiteAlpha90\": \"#ffffffe6\",\n\t\t\"word\": {\n\t\t\t\"primary\": \"#185abd\",\n\t\t\t\"shade10\": \"#1651aa\",\n\t\t\t\"shade20\": \"#13458f\",\n\t\t\t\"shade30\": \"#0e336a\",\n\t\t\t\"shade40\": \"#0e336a\",\n\t\t\t\"shade50\": \"#0c2145\",\n\t\t\t\"shade60\": \"#071225\",\n\t\t\t\"tint10\": \"#2e6ac5\",\n\t\t\t\"tint20\": \"#6794d7\",\n\t\t\t\"tint30\": \"#aec6eb\",\n\t\t\t\"tint40\": \"#d2e0f4\",\n\t\t\t\"tint50\": \"#aec6eb\",\n\t\t\t\"tint60\": \"#d2e0f4\"\n\t\t},\n\t\t\"yellow\": {\n\t\t\t\"primary\": \"#fde300\",\n\t\t\t\"shade10\": \"#e4cc00\",\n\t\t\t\"shade20\": \"#c0ad00\",\n\t\t\t\"shade30\": \"#817400\",\n\t\t\t\"shade40\": \"#4c4400\",\n\t\t\t\"shade50\": \"#282400\",\n\t\t\t\"tint10\": \"#fde61e\",\n\t\t\t\"tint20\": \"#fdea3d\",\n\t\t\t\"tint30\": \"#feee66\",\n\t\t\t\"tint40\": \"#fef7b2\",\n\t\t\t\"tint50\": \"#fffad6\",\n\t\t\t\"tint60\": \"#fffef5\"\n\t\t},\n\t\t\"hcButtonFace\": \"PlatformColor(ButtonFace)\",\n\t\t\"hcButtonText\": \"PlatformColor(ButtonText)\",\n\t\t\"hcCanvas\": \"PlatformColor(Window)\",\n\t\t\"hcCanvasText\": \"PlatformColor(WindowText)\",\n\t\t\"hcDisabled\": \"PlatformColor(GrayText)\",\n\t\t\"hcHighlight\": \"PlatformColor(Highlight)\",\n\t\t\"hcHighlightText\": \"PlatformColor(HighlightText)\",\n\t\t\"hcHyperlink\": \"PlatformColor(Hotlight)\"\n\t},\n\t\"corner\": {\n\t\t\"radius120\": 12,\n\t\t\"radius20\": 2,\n\t\t\"radius40\": 4,\n\t\t\"radius60\": 6,\n\t\t\"radius80\": 8,\n\t\t\"radiusCircular\": 9999,\n\t\t\"radiusNone\": 0\n\t},\n\t\"font\": {\n\t\t\"family\": {\n\t\t\t\"base\": \"Segoe UI\",\n\t\t\t\"monospace\": \"Consolas\",\n\t\t\t\"numeric\": \"Bahnschrift\"\n\t\t},\n\t\t\"lineHeight100\": 14,\n\t\t\"lineHeight1000\": 92,\n\t\t\"lineHeight200\": 16,\n\t\t\"lineHeight300\": 20,\n\t\t\"lineHeight400\": 22,\n\t\t\"lineHeight500\": 28,\n\t\t\"lineHeight600\": 32,\n\t\t\"lineHeight700\": 36,\n\t\t\"lineHeight800\": 40,\n\t\t\"lineHeight900\": 52,\n\t\t\"size100\": 10,\n\t\t\"size1000\": 68,\n\t\t\"size200\": 12,\n\t\t\"size300\": 14,\n\t\t\"size400\": 16,\n\t\t\"size500\": 20,\n\t\t\"size600\": 24,\n\t\t\"size700\": 28,\n\t\t\"size800\": 32,\n\t\t\"size900\": 40,\n\t\t\"weight\": {\n\t\t\t\"bold\": \"700\",\n\t\t\t\"medium\": \"500\",\n\t\t\t\"regular\": \"400\",\n\t\t\t\"semibold\": \"600\"\n\t\t}\n\t},\n\t\"size100\": 10,\n\t\"size120\": 12,\n\t\"size1200\": 120,\n\t\"size160\": 16,\n\t\"size20\": 2,\n\t\"size200\": 20,\n\t\"size240\": 24,\n\t\"size280\": 28,\n\t\"size320\": 32,\n\t\"size360\": 36,\n\t\"size40\": 4,\n\t\"size400\": 40,\n\t\"size480\": 48,\n\t\"size560\": 56,\n\t\"size60\": 6,\n\t\"size640\": 64,\n\t\"size720\": 72,\n\t\"size80\": 8,\n\t\"size800\": 80,\n\t\"sizeNone\": 0,\n\t\"stroke\": {\n\t\t\"width05\": 0.5,\n\t\t\"width10\": 1,\n\t\t\"width15\": 1.5,\n\t\t\"width20\": 2,\n\t\t\"width30\": 3,\n\t\t\"width40\": 4,\n\t\t\"width60\": 6,\n\t\t\"widthNone\": 0\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1nbG9iYWwuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwiY29sb3JcIjoge1xuXHRcdFwiYW5jaG9yXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiMzOTQxNDZcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiMzMzNhM2ZcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiMyYjMxMzVcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMyMDI0MjdcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMxMTEzMTVcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwOTBhMGJcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzRkNTY1Y1wiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjNjI2YzcyXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM4MDhhOTBcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2JjYzNjN1wiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZGJkZmUxXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmNmY3ZjhcIlxuXHRcdH0sXG5cdFx0XCJiZWlnZVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjN2E3NTc0XCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNmU2OTY4XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjNWQ1OTU4XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNDQ0MjQxXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMjUyMzIzXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMTQxMzEzXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM4YTg1ODRcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzlhOTU5NFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjYWZhYmFhXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNkN2Q0ZDRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2VhZThlOFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmFmOWY5XCJcblx0XHR9LFxuXHRcdFwiYmVycnlcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2MyMzliM1wiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiI2FmMzNhMVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzkzMmI4OFwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzZkMjA2NFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzNhMTEzNlwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzFmMDkxZFwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjYzk0Y2JjXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNkMTYxYzRcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2RhN2VkMFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZWRiYmU3XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmNWRhZjJcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZkZjVmY1wiXG5cdFx0fSxcblx0XHRcImJsYWNrXCI6IFwiIzAwMDAwMFwiLFxuXHRcdFwiYmxhY2tBbHBoYTEwXCI6IFwiIzAwMDAwMDFhXCIsXG5cdFx0XCJibGFja0FscGhhMjBcIjogXCIjMDAwMDAwMzNcIixcblx0XHRcImJsYWNrQWxwaGEzMFwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFwiYmxhY2tBbHBoYTQwXCI6IFwiIzAwMDAwMDY2XCIsXG5cdFx0XCJibGFja0FscGhhNVwiOiBcIiMwMDAwMDAwZFwiLFxuXHRcdFwiYmxhY2tBbHBoYTUwXCI6IFwiIzAwMDAwMDgwXCIsXG5cdFx0XCJibGFja0FscGhhNjBcIjogXCIjMDAwMDAwOTlcIixcblx0XHRcImJsYWNrQWxwaGE3MFwiOiBcIiMwMDAwMDBiM1wiLFxuXHRcdFwiYmxhY2tBbHBoYTgwXCI6IFwiIzAwMDAwMGNjXCIsXG5cdFx0XCJibGFja0FscGhhOTBcIjogXCIjMDAwMDAwZTZcIixcblx0XHRcImJsdWVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzAwNmNiZlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzAwNWJhMVwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzAwNDM3N1wiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzAwMjQ0MFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzAwMTMyMlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMWE4NmQ5XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiMzNTk1ZGVcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzVjYWFlNVwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjYTlkM2YyXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNkMGU3ZjhcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2YzZjlmZFwiXG5cdFx0fSxcblx0XHRcImJyYW5kXCI6IHtcblx0XHRcdFwiMTBcIjogXCIjMDYxNzI0XCIsXG5cdFx0XHRcIjIwXCI6IFwiIzA4MjMzOFwiLFxuXHRcdFx0XCIzMFwiOiBcIiMwYTJlNGFcIixcblx0XHRcdFwiNDBcIjogXCIjMGMzYjVlXCIsXG5cdFx0XHRcIjUwXCI6IFwiIzBlNDc3NVwiLFxuXHRcdFx0XCI2MFwiOiBcIiMwZjU0OGNcIixcblx0XHRcdFwiNzBcIjogXCIjMTE1ZWEzXCIsXG5cdFx0XHRcIjgwXCI6IFwiIzBmNmNiZFwiLFxuXHRcdFx0XCI5MFwiOiBcIiMyODg2ZGVcIixcblx0XHRcdFwiMTAwXCI6IFwiIzQ3OWVmNVwiLFxuXHRcdFx0XCIxMTBcIjogXCIjNjJhYmY1XCIsXG5cdFx0XHRcIjEyMFwiOiBcIiM3N2I3ZjdcIixcblx0XHRcdFwiMTMwXCI6IFwiIzk2YzZmYVwiLFxuXHRcdFx0XCIxNDBcIjogXCIjYjRkNmZhXCIsXG5cdFx0XHRcIjE1MFwiOiBcIiNjZmU0ZmFcIixcblx0XHRcdFwiMTYwXCI6IFwiI2ViZjNmY1wiLFxuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzE2NTFhYVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzEzNDU4ZlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzBlMzM2YVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzA0Mzg2MlwiLFxuXHRcdFx0XCJzaGFkZTYwXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMmU2YWM1XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM2Nzk0ZDdcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2FlYzZlYlwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZDJlMGY0XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNkZWVjZjlcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2VmZjZmY1wiXG5cdFx0fSxcblx0XHRcImJyYW5kU2hhZG93QW1iaWVudFwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFwiYnJhbmRTaGFkb3dLZXlcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcImJyYXNzXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM5ODZmMGJcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM4OTY0MGFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM3NDU0MDhcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM1NTNlMDZcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMyZTIxMDNcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMxODEyMDJcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2E0N2QxZVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjYjE4YzM0XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNjMWEyNTZcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2UwY2VhMlwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZWZlNGNiXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmYmY4ZjJcIlxuXHRcdH0sXG5cdFx0XCJicm9uemVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2E3NDEwOVwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzk2M2EwOFwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzdmMzEwN1wiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzVlMjQwNVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzMyMTMwM1wiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzFiMGEwMVwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjYjI1MjFlXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNiYzY1MzVcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2NhODA1N1wiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZTViYmE0XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmMWQ5Y2NcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZiZjVmMlwiXG5cdFx0fSxcblx0XHRcImJyb3duXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM4ZTU2MmVcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM4MDRkMjlcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM2YzQxMjNcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM1MDMwMWFcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMyYjFhMGVcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMxNzBlMDdcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzljNjYzZlwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjYTk3NjUyXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNiYjhmNmZcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2RkYzNiMFwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZWRkZWQzXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmYWY3ZjRcIlxuXHRcdH0sXG5cdFx0XCJidXJndW5keVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjYTQyNjJjXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjOTQyMjI4XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjN2QxZDIxXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNWMxNTE5XCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMzEwYjBkXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMWEwNjA3XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNhZjM5M2VcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2JhNGQ1MlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjYzg2YzcwXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNlNGFmYjJcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2YwZDNkNFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmJmNGY0XCJcblx0XHR9LFxuXHRcdFwiY2hhcmNvYWxcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzM5MzkzOVwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzMzMzMzM1wiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzJiMmIyYlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzIwMjAyMFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzExMTExMVwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzA5MDkwOVwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjNTE1MTUxXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM2ODY4NjhcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzg4ODg4OFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjYzRjNGM0XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNkZmRmZGZcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2Y3ZjdmN1wiXG5cdFx0fSxcblx0XHRcImNvcm5mbG93ZXJcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzRmNmJlZFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzQ3NjBkNVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzNjNTFiNFwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzJjM2M4NVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzE4MjA0N1wiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzBkMTEyNlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjNjM3Y2VmXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM3NzhkZjFcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzkzYTRmNFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjYzhkMWZhXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNlMWU2ZmNcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2Y3ZjlmZVwiXG5cdFx0fSxcblx0XHRcImNyYW5iZXJyeVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjYzUwZjFmXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjYjEwZTFjXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjOTYwYjE4XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNmUwODExXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjM2IwNTA5XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMjAwMjA1XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNjYzI2MzVcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2QzM2Y0Y1wiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZGM2MjZkXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNlZWFjYjJcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2Y2ZDFkNVwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmRmM2Y0XCJcblx0XHR9LFxuXHRcdFwiY3lhblwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDA5OWJjXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDA4YWE5XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDA3NDhmXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDA1NjY5XCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAyZTM4XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAxODFlXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMxOGE0YzRcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzMxYWZjY1wiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNTZiZmQ3XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNhNGRlZWJcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2NkZWRmNFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjJmYWZjXCJcblx0XHR9LFxuXHRcdFwiZGFya0JsdWVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzAwMzk2NlwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzAwMzM1Y1wiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzAwMmI0ZVwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzAwMjAzOVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzAwMTExZlwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzAwMDkxMFwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMGU0YTc4XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiMyMTVjOGJcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzQxNzhhM1wiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjOTJiNWQxXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNjMmQ2ZTdcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2VmZjRmOVwiXG5cdFx0fSxcblx0XHRcImRhcmtCcm93blwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjNGQyOTFjXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNDUyNTE5XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjM2ExZjE1XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMmIxNzEwXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMTcwYzA4XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMGMwNzA0XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM2MjNhMmJcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzc4NGQzZVwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjOTQ2YjVjXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNjYWFkYTNcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2UzZDJjYlwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjhmM2YyXCJcblx0XHR9LFxuXHRcdFwiZGFya0dyZWVuXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiMwYjZhMGJcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiMwYTVmMGFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiMwODUxMDhcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMwNjNiMDZcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMwMzIwMDNcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwMjExMDJcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzFhN2MxYVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjMmQ4ZTJkXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM0ZGE2NGRcIixcblx0XHRcdFwidGludDQwXCI6IFwiIzlhZDI5YVwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjYzZlN2M2XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmMGY5ZjBcIlxuXHRcdH0sXG5cdFx0XCJkYXJrT3JhbmdlXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNkYTNiMDFcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNjNDM1MDFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNhNjJkMDFcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM3YTIxMDFcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0MTEyMDBcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyMzA5MDBcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2RlNTAxY1wiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZTM2NTM3XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNlOTgzNWVcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2Y0YmZhYlwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZjlkY2QxXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZGY2ZjNcIlxuXHRcdH0sXG5cdFx0XCJkYXJrUHVycGxlXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM0MDFiNmNcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiMzYTE4NjFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiMzMTE1NTJcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMyNDBmM2NcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMxMzA4MjBcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwYTA0MTFcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzUxMmI3ZVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjNjMzZThmXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM3ZTVjYTdcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2I5YTNkM1wiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZDhjY2U3XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmNWYyZjlcIlxuXHRcdH0sXG5cdFx0XCJkYXJrUmVkXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM3NTBiMWNcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM2OTBhMTlcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM1OTA4MTVcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM0MjA2MTBcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMyMzAzMDhcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMxMzAyMDRcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzg2MWIyY1wiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjOTYyZjNmXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNhYzRmNWVcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2Q2OWNhNVwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZTljN2NkXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmOWYwZjJcIlxuXHRcdH0sXG5cdFx0XCJkYXJrVGVhbFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDA2NjY2XCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDA1YzVjXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDA0ZTRlXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDAzOTM5XCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAxZjFmXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAxMDEwXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMwZTc4NzhcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzIxOGI4YlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNDFhM2EzXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiM5MmQxZDFcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2MyZTdlN1wiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZWZmOWY5XCJcblx0XHR9LFxuXHRcdFwiZXhjZWxcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzEwN2M0MVwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzBmNzAzYlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzBjNWYzMlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzA5NDYyNFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzA5NDYyNFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzA1MjkxMlwiLFxuXHRcdFx0XCJzaGFkZTYwXCI6IFwiIzAzMTYwYVwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMjE4ZDUxXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM1NWIxN2VcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2EwZDhiOVwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjY2FlYWQ4XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNhMGQ4YjlcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2NhZWFkOFwiXG5cdFx0fSxcblx0XHRcImZvcmVzdFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjNDk4MjA1XCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNDI3NTA1XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMzc2MzA0XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMjk0OTAzXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMTYyNzAyXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMGMxNTAxXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM1OTkxMTZcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzZiYTAyYlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjODViNDRjXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNiZGQ5OWJcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2RiZWJjN1wiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjZmYWYwXCJcblx0XHR9LFxuXHRcdFwiZ29sZFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjYzE5YzAwXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjYWU4YzAwXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjOTM3NzAwXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNmM1NzAwXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjM2EyZjAwXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMWYxOTAwXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNjOGE3MThcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2QwYjIzMlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZGFjMTU3XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNlY2RmYTVcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2Y1ZWVjZVwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmRmYmYyXCJcblx0XHR9LFxuXHRcdFwiZ3JhcGVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzg4MTc5OFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzdhMTU4OVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzY3MTE3NFwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzRjMGQ1NVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzI5MDcyZVwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzE2MDQxOFwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjOTUyYWE0XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNhMzNmYjFcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2I1NWZjMVwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZDlhN2UwXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNlYWNlZWZcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZhZjJmYlwiXG5cdFx0fSxcblx0XHRcImdyZWVuXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiMxMDdjMTBcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiMwZTcwMGVcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiMwYzVlMGNcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMwOTQ1MDlcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMwNTI1MDVcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwMzE0MDNcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzIxOGMyMVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjMzU5YjM1XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM1NGIwNTRcIixcblx0XHRcdFwidGludDQwXCI6IFwiIzlmZDg5ZlwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjYzllYWM5XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmMWZhZjFcIlxuXHRcdH0sXG5cdFx0XCJncmV5MTBcIjogXCIjMWExYTFhXCIsXG5cdFx0XCJncmV5MTBBbHBoYTEwXCI6IFwiIzFhMWExYTFhXCIsXG5cdFx0XCJncmV5MTBBbHBoYTIwXCI6IFwiIzFhMWExYTMzXCIsXG5cdFx0XCJncmV5MTBBbHBoYTMwXCI6IFwiIzFhMWExYTRkXCIsXG5cdFx0XCJncmV5MTBBbHBoYTQwXCI6IFwiIzFhMWExYTY2XCIsXG5cdFx0XCJncmV5MTBBbHBoYTVcIjogXCIjMWExYTFhMGRcIixcblx0XHRcImdyZXkxMEFscGhhNTBcIjogXCIjMWExYTFhODBcIixcblx0XHRcImdyZXkxMEFscGhhNjBcIjogXCIjMWExYTFhOTlcIixcblx0XHRcImdyZXkxMEFscGhhNzBcIjogXCIjMWExYTFhYjNcIixcblx0XHRcImdyZXkxMEFscGhhODBcIjogXCIjMWExYTFhY2NcIixcblx0XHRcImdyZXkxMEFscGhhOTBcIjogXCIjMWExYTFhZTZcIixcblx0XHRcImdyZXkxMlwiOiBcIiMxZjFmMWZcIixcblx0XHRcImdyZXkxMkFscGhhMTBcIjogXCIjMWYxZjFmMWFcIixcblx0XHRcImdyZXkxMkFscGhhMjBcIjogXCIjMWYxZjFmMzNcIixcblx0XHRcImdyZXkxMkFscGhhMzBcIjogXCIjMWYxZjFmNGRcIixcblx0XHRcImdyZXkxMkFscGhhNDBcIjogXCIjMWYxZjFmNjZcIixcblx0XHRcImdyZXkxMkFscGhhNVwiOiBcIiMxZjFmMWYwZFwiLFxuXHRcdFwiZ3JleTEyQWxwaGE1MFwiOiBcIiMxZjFmMWY4MFwiLFxuXHRcdFwiZ3JleTEyQWxwaGE2MFwiOiBcIiMxZjFmMWY5OVwiLFxuXHRcdFwiZ3JleTEyQWxwaGE3MFwiOiBcIiMxZjFmMWZiM1wiLFxuXHRcdFwiZ3JleTEyQWxwaGE4MFwiOiBcIiMxZjFmMWZjY1wiLFxuXHRcdFwiZ3JleTEyQWxwaGE5MFwiOiBcIiMxZjFmMWZlNlwiLFxuXHRcdFwiZ3JleTE0XCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwiZ3JleTE0QWxwaGExMFwiOiBcIiMyNDI0MjQxYVwiLFxuXHRcdFwiZ3JleTE0QWxwaGEyMFwiOiBcIiMyNDI0MjQzM1wiLFxuXHRcdFwiZ3JleTE0QWxwaGEzMFwiOiBcIiMyNDI0MjQ0ZFwiLFxuXHRcdFwiZ3JleTE0QWxwaGE0MFwiOiBcIiMyNDI0MjQ2NlwiLFxuXHRcdFwiZ3JleTE0QWxwaGE1XCI6IFwiIzI0MjQyNDBkXCIsXG5cdFx0XCJncmV5MTRBbHBoYTUwXCI6IFwiIzI0MjQyNDgwXCIsXG5cdFx0XCJncmV5MTRBbHBoYTYwXCI6IFwiIzI0MjQyNDk5XCIsXG5cdFx0XCJncmV5MTRBbHBoYTcwXCI6IFwiIzI0MjQyNGIzXCIsXG5cdFx0XCJncmV5MTRBbHBoYTgwXCI6IFwiIzI0MjQyNGNjXCIsXG5cdFx0XCJncmV5MTRBbHBoYTkwXCI6IFwiIzI0MjQyNGU2XCIsXG5cdFx0XCJncmV5MTZcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJncmV5MThcIjogXCIjMmUyZTJlXCIsXG5cdFx0XCJncmV5MlwiOiBcIiMwNTA1MDVcIixcblx0XHRcImdyZXkyMFwiOiBcIiMzMzMzMzNcIixcblx0XHRcImdyZXkyMlwiOiBcIiMzODM4MzhcIixcblx0XHRcImdyZXkyNFwiOiBcIiMzZDNkM2RcIixcblx0XHRcImdyZXkyNlwiOiBcIiM0MjQyNDJcIixcblx0XHRcImdyZXkyOFwiOiBcIiM0NzQ3NDdcIixcblx0XHRcImdyZXkzMFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcImdyZXkzMlwiOiBcIiM1MjUyNTJcIixcblx0XHRcImdyZXkzNFwiOiBcIiM1NzU3NTdcIixcblx0XHRcImdyZXkzNlwiOiBcIiM1YzVjNWNcIixcblx0XHRcImdyZXkzOFwiOiBcIiM2MTYxNjFcIixcblx0XHRcImdyZXk0XCI6IFwiIzBhMGEwYVwiLFxuXHRcdFwiZ3JleTQwXCI6IFwiIzY2NjY2NlwiLFxuXHRcdFwiZ3JleTQyXCI6IFwiIzZiNmI2YlwiLFxuXHRcdFwiZ3JleTQ0XCI6IFwiIzcwNzA3MFwiLFxuXHRcdFwiZ3JleTQ2XCI6IFwiIzc1NzU3NVwiLFxuXHRcdFwiZ3JleTQ4XCI6IFwiIzdhN2E3YVwiLFxuXHRcdFwiZ3JleTUwXCI6IFwiIzgwODA4MFwiLFxuXHRcdFwiZ3JleTUyXCI6IFwiIzg1ODU4NVwiLFxuXHRcdFwiZ3JleTU0XCI6IFwiIzhhOGE4YVwiLFxuXHRcdFwiZ3JleTU2XCI6IFwiIzhmOGY4ZlwiLFxuXHRcdFwiZ3JleTU4XCI6IFwiIzk0OTQ5NFwiLFxuXHRcdFwiZ3JleTZcIjogXCIjMGYwZjBmXCIsXG5cdFx0XCJncmV5NjBcIjogXCIjOTk5OTk5XCIsXG5cdFx0XCJncmV5NjJcIjogXCIjOWU5ZTllXCIsXG5cdFx0XCJncmV5NjRcIjogXCIjYTNhM2EzXCIsXG5cdFx0XCJncmV5NjZcIjogXCIjYThhOGE4XCIsXG5cdFx0XCJncmV5NjhcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJncmV5NzBcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJncmV5NzJcIjogXCIjYjhiOGI4XCIsXG5cdFx0XCJncmV5NzRcIjogXCIjYmRiZGJkXCIsXG5cdFx0XCJncmV5NzZcIjogXCIjYzJjMmMyXCIsXG5cdFx0XCJncmV5NzhcIjogXCIjYzdjN2M3XCIsXG5cdFx0XCJncmV5OFwiOiBcIiMxNDE0MTRcIixcblx0XHRcImdyZXk4MFwiOiBcIiNjY2NjY2NcIixcblx0XHRcImdyZXk4MlwiOiBcIiNkMWQxZDFcIixcblx0XHRcImdyZXk4NFwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcImdyZXk4NlwiOiBcIiNkYmRiZGJcIixcblx0XHRcImdyZXk4OFwiOiBcIiNlMGUwZTBcIixcblx0XHRcImdyZXk5MFwiOiBcIiNlNmU2ZTZcIixcblx0XHRcImdyZXk5MlwiOiBcIiNlYmViZWJcIixcblx0XHRcImdyZXk5NFwiOiBcIiNmMGYwZjBcIixcblx0XHRcImdyZXk5NlwiOiBcIiNmNWY1ZjVcIixcblx0XHRcImdyZXk5OFwiOiBcIiNmYWZhZmFcIixcblx0XHRcImhvdFBpbmtcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2UzMDA4Y1wiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiI2NjMDA3ZVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiI2FkMDA2YVwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzdmMDA0ZVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzQ0MDAyYVwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzI0MDAxNlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjZTYxYzk5XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNlYTM4YTZcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2VlNWZiN1wiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZjdhZGRhXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmYmQyZWJcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZlZjRmYVwiXG5cdFx0fSxcblx0XHRcImxhdmVuZGVyXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM3MTYwZThcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM2NjU2ZDFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM1NjQ5YjBcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMzZjM2ODJcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMyMjFkNDZcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMxMjBmMjVcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzgxNzJlYlwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjOTE4NGVlXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNhNzljZjFcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2QyY2NmOFwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZTdlNGZiXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmOWY4ZmVcIlxuXHRcdH0sXG5cdFx0XCJsaWdodEJsdWVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzNhOTZkZFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzM0ODdjN1wiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzJjNzJhOFwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzIwNTQ3Y1wiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzExMmQ0MlwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzA5MTgyM1wiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjNGZhMWUxXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM2NWFkZTVcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzgzYmRlYlwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjYmZkZGY1XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNkY2VkZmFcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2Y2ZmFmZVwiXG5cdFx0fSxcblx0XHRcImxpZ2h0R3JlZW5cIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzEzYTEwZVwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzExOTEwZFwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzBlN2EwYlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzBiNWEwOFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzA2MzAwNFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzAzMWEwMlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMjdhYzIyXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiMzZGI4MzhcIixcblx0XHRcdFwidGludDMwXCI6IFwiIzVlYzc1YVwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjYTdlM2E1XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNjZWYwY2RcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2YyZmJmMlwiXG5cdFx0fSxcblx0XHRcImxpZ2h0VGVhbFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDBiN2MzXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDBhNWFmXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDA4Yjk0XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDA2NjZkXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAzNzNhXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAxZDFmXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMxOGJmY2FcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzMyYzhkMVwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNThkM2RiXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNhNmU5ZWRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2NlZjNmNVwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjJmY2ZkXCJcblx0XHR9LFxuXHRcdFwibGlsYWNcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2IxNDZjMlwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzlmM2ZhZlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzg2MzU5M1wiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzYzMjc2ZFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzM1MTUzYVwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzFjMGIxZlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjYmE1OGM5XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNjMzZiZDFcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2NmODdkYVwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZTZiZmVkXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmMmRjZjVcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZjZjZmZFwiXG5cdFx0fSxcblx0XHRcImxpbWVcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzczYWEyNFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzY4OTkyMFwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzU3ODExYlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzQwNWYxNFwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzIzMzMwYlwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzEyMWIwNlwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjODFiNDM3XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM5MGJlNGNcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2E0Y2M2Y1wiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjY2ZlNWFmXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNlNWYxZDNcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2Y4ZmNmNFwiXG5cdFx0fSxcblx0XHRcIm1hZ2VudGFcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2JmMDA3N1wiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiI2FjMDA2YlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzkxMDA1YVwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzZiMDA0M1wiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzM5MDAyNFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzFmMDAxM1wiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjYzcxODg1XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNjZTMyOTNcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2Q5NTdhOFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZWNhNWQxXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmNWNlZTZcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZjZjJmOVwiXG5cdFx0fSxcblx0XHRcIm1hcmlnb2xkXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNlYWEzMDBcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNkMzkzMDBcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNiMjdjMDBcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM4MzViMDBcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0NjMxMDBcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyNTFhMDBcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2VkYWQxY1wiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZWZiODM5XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNmMmM2NjFcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2Y5ZTJhZVwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZmNlZmQzXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZWZiZjRcIlxuXHRcdH0sXG5cdFx0XCJtaW5rXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM1ZDVhNThcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM1NDUxNGZcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM0NzQ0NDNcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMzNDMyMzFcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMxYzFiMWFcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwZjBlMGVcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzcwNmQ2YlwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjODQ4MTdlXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM5ZTliOTlcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2NlY2NjYlwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZTVlNGUzXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmOGY4ZjhcIlxuXHRcdH0sXG5cdFx0XCJuYXZ5XCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiMwMDI3YjRcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiMwMDIzYTJcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiMwMDFlODlcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMwMDE2NjVcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMwMDBjMzZcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwMDA2MWRcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzE3M2JiZFwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjMzA1MGM2XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM1NDZmZDJcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2EzYjJlOFwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjY2NkNWYzXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmMmY0ZmNcIlxuXHRcdH0sXG5cdFx0XCJuZXV0cmFsU2hhZG93QW1iaWVudFwiOiBcIiMwMDAwMDAxZlwiLFxuXHRcdFwibmV1dHJhbFNoYWRvd0FtYmllbnREYXJrZXJcIjogXCIjMDAwMDAwMzNcIixcblx0XHRcIm5ldXRyYWxTaGFkb3dBbWJpZW50TGlnaHRlclwiOiBcIiMwMDAwMDAwZlwiLFxuXHRcdFwibmV1dHJhbFNoYWRvd0tleVwiOiBcIiMwMDAwMDAyNFwiLFxuXHRcdFwibmV1dHJhbFNoYWRvd0tleURhcmtlclwiOiBcIiMwMDAwMDAzZFwiLFxuXHRcdFwibmV1dHJhbFNoYWRvd0tleUxpZ2h0ZXJcIjogXCIjMDAwMDAwMTJcIixcblx0XHRcIm9mZmljZVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjZDgzYjAxXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjYzMzNDAwXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjYTUyYzAwXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNzkyMDAwXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjNzkyMDAwXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjNGQyNDE1XCIsXG5cdFx0XHRcInNoYWRlNjBcIjogXCIjMjkxMzBiXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNkZDRmMWJcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2U4ODI1ZFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZjRiZWFhXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNmOWRjZDFcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2Y0YmVhYVwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjlkY2QxXCJcblx0XHR9LFxuXHRcdFwib25lTm90ZVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjODAzOTdiXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNmMyZjY4XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjNTIyNTRmXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjM2MxYTNhXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjNDMwZTYwXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjNDMwZTYwXCIsXG5cdFx0XHRcInNoYWRlNjBcIjogXCIjNDMwZTYwXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM5ZTU0OTlcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2Q0YTlkMVwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZTBiZmRlXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNmMGRhZWVcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2U2ZDFmMlwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZTZkMWYyXCJcblx0XHR9LFxuXHRcdFwib3JhbmdlXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNmNzYzMGNcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNkZTU5MGJcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNiYzRiMDlcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM4YTM3MDdcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0YTFlMDRcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyNzEwMDJcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2Y4NzUyOFwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZjk4ODQ1XCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNmYWEwNmJcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2ZkY2ZiNFwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZmVlNWQ3XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZmY5ZjVcIlxuXHRcdH0sXG5cdFx0XCJvcmNoaWRcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzg3NjRiOFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzc5NWFhNlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzY3NGM4Y1wiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzRjMzg2N1wiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzI4MWUzN1wiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzE2MTAxZFwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjOTM3M2MwXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNhMDgzYzlcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2IyOWFkNFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZDdjYWVhXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNlOWUyZjRcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2Y5ZjhmY1wiXG5cdFx0fSxcblx0XHRcIm91dGxvb2tcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiIzEwNmViZVwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzE2NjRhN1wiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzEzNTk5NVwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzA0Mzg2MlwiLFxuXHRcdFx0XCJzaGFkZTYwXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjMjQ4OGQ4XCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiM2OWFmZTVcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2IzZDZmMlwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjY2NlM2Y1XCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNkZWVjZjlcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2VmZjZmY1wiXG5cdFx0fSxcblx0XHRcInBlYWNoXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNmZjhjMDBcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNlNjdlMDBcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNjMjZhMDBcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM4ZjRlMDBcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0ZDJhMDBcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyOTE2MDBcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2ZmOWExZlwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZmZhODNkXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNmZmJhNjZcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2ZmZGRiM1wiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZmZlZGQ2XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZmZhZjVcIlxuXHRcdH0sXG5cdFx0XCJwaW5rXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNlNDNiYTZcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNjZDM1OTVcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNhZDJkN2VcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM4MDIxNWRcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0NDEyMzJcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyNDA5MWJcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2U3NTBiMFwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZWE2NmJhXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNlZjg1YzhcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2Y3YzBlM1wiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZmJkZGYwXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZWY2ZmJcIlxuXHRcdH0sXG5cdFx0XCJwbGF0aW51bVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjNjk3OTdlXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNWY2ZDcxXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjNTA1YzYwXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjM2I0NDQ3XCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMWYyNDI2XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMTExMzE0XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM3OTg5OGRcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzg5OTg5ZFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjYTBhZGIyXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNjZGQ2ZDhcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2U0ZTllYVwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjhmOWZhXCJcblx0XHR9LFxuXHRcdFwicGx1bVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjNzcwMDRkXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjNmIwMDQ1XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjNWEwMDNiXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNDMwMDJiXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMjQwMDE3XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMTMwMDBjXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiM4NzEwNWRcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzk4MjQ2ZlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjYWQ0NTg5XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNkNjk2YzBcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2U5YzRkY1wiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmFmMGY2XCJcblx0XHR9LFxuXHRcdFwicG93ZXJQb2ludFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjYzQzZTFjXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjYjEzNzE5XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjOTUyZjE1XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNmUyMjBmXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjNmUyMjBmXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjM2MxODA1XCIsXG5cdFx0XHRcInNoYWRlNjBcIjogXCIjMjAwZDAzXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNjYjUwMzFcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2RjODE2YVwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZWRiY2IwXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNmNmRiZDRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2VkYmNiMFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjZkYmQ0XCJcblx0XHR9LFxuXHRcdFwicHVtcGtpblwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjY2E1MDEwXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjYjY0ODBlXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjOWEzZDBjXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjNzEyZDA5XCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjM2QxODA1XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMjAwZDAzXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiNkMDYyMjhcIixcblx0XHRcdFwidGludDIwXCI6IFwiI2Q3NzQ0MFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjZGY4ZTY0XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNlZmM0YWRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2Y3ZGZkMlwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZmRmN2Y0XCJcblx0XHR9LFxuXHRcdFwicHVycGxlXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM1YzJlOTFcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM1MzI5ODJcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM0NjIzNmVcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiMzNDFhNTFcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMxYzBlMmJcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMwZjA3MTdcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzZiM2Y5ZVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjN2M1MmFiXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiM5NDcwYmRcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2M2YjFkZVwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZTBkM2VkXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmN2Y0ZmJcIlxuXHRcdH0sXG5cdFx0XCJyZWRcIjoge1xuXHRcdFx0XCJwcmltYXJ5XCI6IFwiI2QxMzQzOFwiLFxuXHRcdFx0XCJzaGFkZTEwXCI6IFwiI2JjMmYzMlwiLFxuXHRcdFx0XCJzaGFkZTIwXCI6IFwiIzlmMjgyYlwiLFxuXHRcdFx0XCJzaGFkZTMwXCI6IFwiIzc1MWQxZlwiLFxuXHRcdFx0XCJzaGFkZTQwXCI6IFwiIzNmMTAxMVwiLFxuXHRcdFx0XCJzaGFkZTUwXCI6IFwiIzIxMDgwOVwiLFxuXHRcdFx0XCJ0aW50MTBcIjogXCIjZDc0OTRjXCIsXG5cdFx0XHRcInRpbnQyMFwiOiBcIiNkYzVlNjJcIixcblx0XHRcdFwidGludDMwXCI6IFwiI2UzN2Q4MFwiLFxuXHRcdFx0XCJ0aW50NDBcIjogXCIjZjFiYmJjXCIsXG5cdFx0XHRcInRpbnQ1MFwiOiBcIiNmOGRhZGJcIixcblx0XHRcdFwidGludDYwXCI6IFwiI2ZkZjZmNlwiXG5cdFx0fSxcblx0XHRcInJveWFsQmx1ZVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDA0ZThjXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDA0NjdlXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDAzYjZhXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDAyYzRlXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAxNzJhXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAwYzE2XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMxMjVlOWFcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzI4NmZhOFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNGE4OWJhXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiM5YWJmZGNcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2M3ZGNlZFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjBmNmZhXCJcblx0XHR9LFxuXHRcdFwic2VhZm9hbVwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDBjYzZhXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDBiODVmXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDA5YjUxXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDA3MjNiXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAzZDIwXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAyMTExXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMxOWQyNzlcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzM0ZDg4OVwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNWFlMGEwXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNhOGYwY2RcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2NmZjdlNFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjNmZGY4XCJcblx0XHR9LFxuXHRcdFwic2lsdmVyXCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiM4NTk1OTlcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiM3ODg2OGFcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiM2NTcxNzRcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM0YTUzNTZcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiMyODJkMmVcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMxNTE4MThcIixcblx0XHRcdFwidGludDEwXCI6IFwiIzkyYTFhNVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjYTBhZWIxXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNiM2JmYzJcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2Q4ZGZlMFwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZWFlZWVmXCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmYWZiZmJcIlxuXHRcdH0sXG5cdFx0XCJzdGVlbFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDA1YjcwXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDA1MjY1XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDA0NTU1XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDAzMzNmXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDAxYjIyXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAwZjEyXCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMwZjZjODFcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzIzN2Q5MlwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNDQ5NmE5XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiM5NGM4ZDRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2MzZTFlOFwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZWZmN2Y5XCJcblx0XHR9LFxuXHRcdFwidGVhbFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMDM4Mzg3XCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMDM3Njc5XCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMDI2NDY3XCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMDI0OTRjXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMDEyNzI4XCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMDAxNTE2XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMxNTkxOTVcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzJhYTBhNFwiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjNGNiNGI3XCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiM5YmQ5ZGJcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2M3ZWJlY1wiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZjBmYWZhXCJcblx0XHR9LFxuXHRcdFwid2hpdGVcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJ3aGl0ZUFscGhhMTBcIjogXCIjZmZmZmZmMWFcIixcblx0XHRcIndoaXRlQWxwaGEyMFwiOiBcIiNmZmZmZmYzM1wiLFxuXHRcdFwid2hpdGVBbHBoYTMwXCI6IFwiI2ZmZmZmZjRkXCIsXG5cdFx0XCJ3aGl0ZUFscGhhNDBcIjogXCIjZmZmZmZmNjZcIixcblx0XHRcIndoaXRlQWxwaGE1XCI6IFwiI2ZmZmZmZjBkXCIsXG5cdFx0XCJ3aGl0ZUFscGhhNTBcIjogXCIjZmZmZmZmODBcIixcblx0XHRcIndoaXRlQWxwaGE2MFwiOiBcIiNmZmZmZmY5OVwiLFxuXHRcdFwid2hpdGVBbHBoYTcwXCI6IFwiI2ZmZmZmZmIzXCIsXG5cdFx0XCJ3aGl0ZUFscGhhODBcIjogXCIjZmZmZmZmY2NcIixcblx0XHRcIndoaXRlQWxwaGE5MFwiOiBcIiNmZmZmZmZlNlwiLFxuXHRcdFwid29yZFwiOiB7XG5cdFx0XHRcInByaW1hcnlcIjogXCIjMTg1YWJkXCIsXG5cdFx0XHRcInNoYWRlMTBcIjogXCIjMTY1MWFhXCIsXG5cdFx0XHRcInNoYWRlMjBcIjogXCIjMTM0NThmXCIsXG5cdFx0XHRcInNoYWRlMzBcIjogXCIjMGUzMzZhXCIsXG5cdFx0XHRcInNoYWRlNDBcIjogXCIjMGUzMzZhXCIsXG5cdFx0XHRcInNoYWRlNTBcIjogXCIjMGMyMTQ1XCIsXG5cdFx0XHRcInNoYWRlNjBcIjogXCIjMDcxMjI1XCIsXG5cdFx0XHRcInRpbnQxMFwiOiBcIiMyZTZhYzVcIixcblx0XHRcdFwidGludDIwXCI6IFwiIzY3OTRkN1wiLFxuXHRcdFx0XCJ0aW50MzBcIjogXCIjYWVjNmViXCIsXG5cdFx0XHRcInRpbnQ0MFwiOiBcIiNkMmUwZjRcIixcblx0XHRcdFwidGludDUwXCI6IFwiI2FlYzZlYlwiLFxuXHRcdFx0XCJ0aW50NjBcIjogXCIjZDJlMGY0XCJcblx0XHR9LFxuXHRcdFwieWVsbG93XCI6IHtcblx0XHRcdFwicHJpbWFyeVwiOiBcIiNmZGUzMDBcIixcblx0XHRcdFwic2hhZGUxMFwiOiBcIiNlNGNjMDBcIixcblx0XHRcdFwic2hhZGUyMFwiOiBcIiNjMGFkMDBcIixcblx0XHRcdFwic2hhZGUzMFwiOiBcIiM4MTc0MDBcIixcblx0XHRcdFwic2hhZGU0MFwiOiBcIiM0YzQ0MDBcIixcblx0XHRcdFwic2hhZGU1MFwiOiBcIiMyODI0MDBcIixcblx0XHRcdFwidGludDEwXCI6IFwiI2ZkZTYxZVwiLFxuXHRcdFx0XCJ0aW50MjBcIjogXCIjZmRlYTNkXCIsXG5cdFx0XHRcInRpbnQzMFwiOiBcIiNmZWVlNjZcIixcblx0XHRcdFwidGludDQwXCI6IFwiI2ZlZjdiMlwiLFxuXHRcdFx0XCJ0aW50NTBcIjogXCIjZmZmYWQ2XCIsXG5cdFx0XHRcInRpbnQ2MFwiOiBcIiNmZmZlZjVcIlxuXHRcdH0sXG5cdFx0XCJoY0J1dHRvbkZhY2VcIjogXCJQbGF0Zm9ybUNvbG9yKEJ1dHRvbkZhY2UpXCIsXG5cdFx0XCJoY0J1dHRvblRleHRcIjogXCJQbGF0Zm9ybUNvbG9yKEJ1dHRvblRleHQpXCIsXG5cdFx0XCJoY0NhbnZhc1wiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93KVwiLFxuXHRcdFwiaGNDYW52YXNUZXh0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiLFxuXHRcdFwiaGNEaXNhYmxlZFwiOiBcIlBsYXRmb3JtQ29sb3IoR3JheVRleHQpXCIsXG5cdFx0XCJoY0hpZ2hsaWdodFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwiaGNIaWdobGlnaHRUZXh0XCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwiaGNIeXBlcmxpbmtcIjogXCJQbGF0Zm9ybUNvbG9yKEhvdGxpZ2h0KVwiXG5cdH0sXG5cdFwiY29ybmVyXCI6IHtcblx0XHRcInJhZGl1czEyMFwiOiAxMixcblx0XHRcInJhZGl1czIwXCI6IDIsXG5cdFx0XCJyYWRpdXM0MFwiOiA0LFxuXHRcdFwicmFkaXVzNjBcIjogNixcblx0XHRcInJhZGl1czgwXCI6IDgsXG5cdFx0XCJyYWRpdXNDaXJjdWxhclwiOiA5OTk5LFxuXHRcdFwicmFkaXVzTm9uZVwiOiAwXG5cdH0sXG5cdFwiZm9udFwiOiB7XG5cdFx0XCJmYW1pbHlcIjoge1xuXHRcdFx0XCJiYXNlXCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcdFwibW9ub3NwYWNlXCI6IFwiQ29uc29sYXNcIixcblx0XHRcdFwibnVtZXJpY1wiOiBcIkJhaG5zY2hyaWZ0XCJcblx0XHR9LFxuXHRcdFwibGluZUhlaWdodDEwMFwiOiAxNCxcblx0XHRcImxpbmVIZWlnaHQxMDAwXCI6IDkyLFxuXHRcdFwibGluZUhlaWdodDIwMFwiOiAxNixcblx0XHRcImxpbmVIZWlnaHQzMDBcIjogMjAsXG5cdFx0XCJsaW5lSGVpZ2h0NDAwXCI6IDIyLFxuXHRcdFwibGluZUhlaWdodDUwMFwiOiAyOCxcblx0XHRcImxpbmVIZWlnaHQ2MDBcIjogMzIsXG5cdFx0XCJsaW5lSGVpZ2h0NzAwXCI6IDM2LFxuXHRcdFwibGluZUhlaWdodDgwMFwiOiA0MCxcblx0XHRcImxpbmVIZWlnaHQ5MDBcIjogNTIsXG5cdFx0XCJzaXplMTAwXCI6IDEwLFxuXHRcdFwic2l6ZTEwMDBcIjogNjgsXG5cdFx0XCJzaXplMjAwXCI6IDEyLFxuXHRcdFwic2l6ZTMwMFwiOiAxNCxcblx0XHRcInNpemU0MDBcIjogMTYsXG5cdFx0XCJzaXplNTAwXCI6IDIwLFxuXHRcdFwic2l6ZTYwMFwiOiAyNCxcblx0XHRcInNpemU3MDBcIjogMjgsXG5cdFx0XCJzaXplODAwXCI6IDMyLFxuXHRcdFwic2l6ZTkwMFwiOiA0MCxcblx0XHRcIndlaWdodFwiOiB7XG5cdFx0XHRcImJvbGRcIjogXCI3MDBcIixcblx0XHRcdFwibWVkaXVtXCI6IFwiNTAwXCIsXG5cdFx0XHRcInJlZ3VsYXJcIjogXCI0MDBcIixcblx0XHRcdFwic2VtaWJvbGRcIjogXCI2MDBcIlxuXHRcdH1cblx0fSxcblx0XCJzaXplMTAwXCI6IDEwLFxuXHRcInNpemUxMjBcIjogMTIsXG5cdFwic2l6ZTEyMDBcIjogMTIwLFxuXHRcInNpemUxNjBcIjogMTYsXG5cdFwic2l6ZTIwXCI6IDIsXG5cdFwic2l6ZTIwMFwiOiAyMCxcblx0XCJzaXplMjQwXCI6IDI0LFxuXHRcInNpemUyODBcIjogMjgsXG5cdFwic2l6ZTMyMFwiOiAzMixcblx0XCJzaXplMzYwXCI6IDM2LFxuXHRcInNpemU0MFwiOiA0LFxuXHRcInNpemU0MDBcIjogNDAsXG5cdFwic2l6ZTQ4MFwiOiA0OCxcblx0XCJzaXplNTYwXCI6IDU2LFxuXHRcInNpemU2MFwiOiA2LFxuXHRcInNpemU2NDBcIjogNjQsXG5cdFwic2l6ZTcyMFwiOiA3Mixcblx0XCJzaXplODBcIjogOCxcblx0XCJzaXplODAwXCI6IDgwLFxuXHRcInNpemVOb25lXCI6IDAsXG5cdFwic3Ryb2tlXCI6IHtcblx0XHRcIndpZHRoMDVcIjogMC41LFxuXHRcdFwid2lkdGgxMFwiOiAxLFxuXHRcdFwid2lkdGgxNVwiOiAxLjUsXG5cdFx0XCJ3aWR0aDIwXCI6IDIsXG5cdFx0XCJ3aWR0aDMwXCI6IDMsXG5cdFx0XCJ3aWR0aDQwXCI6IDQsXG5cdFx0XCJ3aWR0aDYwXCI6IDYsXG5cdFx0XCJ3aWR0aE5vbmVcIjogMFxuXHR9XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFIn0=\n", "import globalTokens from '@fluentui-react-native/design-tokens-windows/light/tokens-global.json';\n\nexport default globalTokens;\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#1651aa\",\n\t\t\"hover\": \"#185abd\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#004578\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#6794d7\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#aec6eb\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#2e6ac5\",\n\t\t\"hover\": \"#aec6eb\",\n\t\t\"pressed\": \"#6794d7\",\n\t\t\"selected\": \"#2e6ac5\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#2e6ac5\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#0e336a\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#2e6ac5\",\n\t\t\"hover\": \"#6794d7\",\n\t\t\"pressed\": \"#185abd\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#2e6ac5\",\n\t\t\"hover\": \"#6794d7\",\n\t\t\"pressed\": \"#185abd\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#2e6ac5\",\n\t\t\"hover\": \"#6794d7\",\n\t\t\"pressed\": \"#185abd\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#3f1011\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#292929\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#1f1f1f\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#1f1f1f\",\n\t\t\"hover\": \"#333333\",\n\t\t\"pressed\": \"#141414\",\n\t\t\"selected\": \"#2e2e2e\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#141414\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#0a0a0a\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#0a0a0a\",\n\t\t\"hover\": \"#1f1f1f\",\n\t\t\"pressed\": \"#000000\",\n\t\t\"selected\": \"#1a1a1a\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#141414\",\n\t\t\"pressed\": \"#050505\",\n\t\t\"selected\": \"#0f0f0f\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#141414\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#d6d6d6\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"brandHover\": \"#6794d7\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#6794d7\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#d6d6d6\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"brandHover\": \"#6794d7\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#6794d7\",\n\t\t\"selected\": \"#d6d6d6\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#999999\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#5c5c5c\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#242424\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#666666\",\n\t\t\"hover\": \"#757575\",\n\t\t\"pressed\": \"#6b6b6b\",\n\t\t\"selected\": \"#707070\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#525252\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#3d3d3d\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#bdbdbd\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#6794d7\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#424242\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#3a1136\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#411200\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#383838\",\n\t\t\"pressed\": \"#2e2e2e\",\n\t\t\"selected\": \"#333333\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#052505\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#4c4400\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#817400\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE2NTFhYVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTg1YWJkXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA0NTc4XCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2Nzk0ZDdcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZWM2ZWJcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyZTZhYzVcIixcblx0XHRcImhvdmVyXCI6IFwiI2FlYzZlYlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM2Nzk0ZDdcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzJlNmFjNVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMmU2YWM1XCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwZTMzNmFcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzJlNmFjNVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNjc5NGQ3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzE4NWFiZFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMmU2YWM1XCIsXG5cdFx0XCJob3ZlclwiOiBcIiM2Nzk0ZDdcIixcblx0XHRcInByZXNzZWRcIjogXCIjMTg1YWJkXCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzJlNmFjNVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNjc5NGQ3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzE4NWFiZFwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzZjEwMTFcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzUxZDFmXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RjNWU2MlwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWJiYmNcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzI5MjkyOVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjM2QzZDNkXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzFmMWYxZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMzgzODM4XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxZjFmMWZcIixcblx0XHRcImhvdmVyXCI6IFwiIzMzMzMzM1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMxNDE0MTRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzJlMmUyZVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTQxNDE0XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMyOTI5MjlcIixcblx0XHRcInByZXNzZWRcIjogXCIjMGEwYTBhXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyNDI0MjRcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzBhMGEwYVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMWYxZjFmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMWExYTFhXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzE0MTQxNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwNTA1MDVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzBmMGYwZlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ2XCI6IHtcblx0XHRcInJlc3RcIjogXCIjMzMzMzMzXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTQxNDE0XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDZkNmQ2XCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzY3OTRkN1wiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzJlNmFjNVwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiM2Nzk0ZDdcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZDZkNmQ2XCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzY3OTRkN1wiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzJlNmFjNVwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiM2Nzk0ZDdcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2Q2ZDZkNlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQ0XCI6IHtcblx0XHRcInJlc3RcIjogXCIjOTk5OTk5XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNWM1YzVjXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMzMzMzMzXCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM1NzU3NTdcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjY2NjY2XCIsXG5cdFx0XCJob3ZlclwiOiBcIiM3NTc1NzVcIixcblx0XHRcInByZXNzZWRcIjogXCIjNmI2YjZiXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiM3MDcwNzBcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTI1MjUyXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzNkM2QzZFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZUFjY2Vzc2libGVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZGFkYWRcIixcblx0XHRcImhvdmVyXCI6IFwiI2JkYmRiZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNiM2IzYjNcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzY3OTRkN1wiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZURpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNDI0MjQyXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjM2ExMTM2XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNmQyMDY0XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxNjFjNFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTdlZDBcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTdlZDBcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZGJiZTdcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTYxYzRcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNDExMjAwXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzdhMjEwMVwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U5ODM1ZVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjRiZmFiXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U5ODM1ZVwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcInN1YnRsZUJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMzgzODM4XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzJlMmUyZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMzMzMzMzXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwNTI1MDVcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA5NDUwOVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM5ZmQ4OWZcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM1NGIwNTRcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU0YjA1NFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM5ZmQ4OWZcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50QmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50U3Ryb2tlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNGM0NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlYTNkXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVlZTY2XCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWVlNjZcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZjdiMlwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlYTNkXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0UifQ==\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#eff6fc\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#1651aa\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#1651aa\",\n\t\t\"hover\": \"#13458f\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"selected\": \"#1651aa\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#13458f\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#13458f\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#13458f\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#fdf6f6\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#bc2f32\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#fafafa\",\n\t\t\"hover\": \"#f0f0f0\",\n\t\t\"pressed\": \"#dbdbdb\",\n\t\t\"selected\": \"#e6e6e6\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#f5f5f5\",\n\t\t\"hover\": \"#ebebeb\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"selected\": \"#e0e0e0\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"hover\": \"#fafafa\",\n\t\t\"pressed\": \"#f5f5f5\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#ebebeb\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#f0f0f0\",\n\t\t\"selected\": \"#fafafa\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#f0f0f0\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#242424\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#424242\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"brandHover\": \"#185abd\",\n\t\t\"brandPressed\": \"#1651aa\",\n\t\t\"brandSelected\": \"#185abd\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#424242\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"brandHover\": \"#185abd\",\n\t\t\"brandPressed\": \"#1651aa\",\n\t\t\"brandSelected\": \"#185abd\",\n\t\t\"selected\": \"#424242\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#707070\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#bdbdbd\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#fafafa\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#d1d1d1\",\n\t\t\"hover\": \"#c7c7c7\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#bdbdbd\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#f0f0f0\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#575757\",\n\t\t\"pressed\": \"#4d4d4d\",\n\t\t\"selected\": \"#185abd\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#fdf5fc\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#af33a1\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#fdf6f3\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#c43501\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#f1faf1\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#0e700e\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#359b35\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#fffef5\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#fef7b2\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWZmNmZjXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxNjUxYWFcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxNjUxYWFcIixcblx0XHRcImhvdmVyXCI6IFwiIzEzNDU4ZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzE2NTFhYVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMmUwZjRcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzEzNDU4ZlwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxNjUxYWFcIixcblx0XHRcInByZXNzZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzEzNDU4ZlwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGY2ZjZcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjFiYmJjXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxYmJiY1wiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2JjMmYzMlwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3NTFkMWZcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYzVlNjJcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZjVmNWY1XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2UwZTBlMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZWJlYmViXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmYWZhZmFcIixcblx0XHRcImhvdmVyXCI6IFwiI2YwZjBmMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNkYmRiZGJcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2U2ZTZlNlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjVmNWY1XCIsXG5cdFx0XCJob3ZlclwiOiBcIiNlYmViZWJcIixcblx0XHRcInByZXNzZWRcIjogXCIjZDZkNmQ2XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlMGUwZTBcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmFmYWZhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlYmViZWJcIixcblx0XHRcImhvdmVyXCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmMGYwZjBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZhZmFmYVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ2XCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTZlNmU2XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjBmMGYwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjE2MTYxXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyNDI0MjRcIixcblx0XHRcImhvdmVyXCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyNDI0MjRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzI0MjQyNFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNDI0MjQyXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMyNDI0MjRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzE2NTFhYVwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiMxODVhYmRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzI0MjQyNFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjE2MTYxXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM0MjQyNDJcIixcblx0XHRcInByZXNzZWRcIjogXCIjNDI0MjQyXCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzE2NTFhYVwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiMxODVhYmRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzQyNDI0MlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQ0XCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzA3MDcwXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYmRiZGJkXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTZlNmU2XCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDFkMWQxXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNjN2M3YzdcIixcblx0XHRcInByZXNzZWRcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNiZGJkYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZUFjY2Vzc2libGVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIixcblx0XHRcImhvdmVyXCI6IFwiIzU3NTc1N1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzE4NWFiZFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZURpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNWZjXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZGJiZTdcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZjMzYTFcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2ZDIwNjRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNmYzXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmNGJmYWJcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjNDM1MDFcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjN2EyMTAxXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIlxuXHR9LFxuXHRcInN1YnRsZUJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZjVmNWY1XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2UwZTBlMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZWJlYmViXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWZhZjFcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzBlNzAwZVwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDk0NTA5XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzNTliMzVcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50QmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50U3Ryb2tlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZWY1XCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVmN2IyXCJcblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0UifQ==\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMWZcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAyNFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Helper function for exhaustive checks of discriminated unions.\n * https://basarat.gitbooks.io/typescript/docs/types/discriminated-unions.html\n *\n * @example\n *\n * type A = {type: 'a'};\n * type B = {type: 'b'};\n * type Union = A | B;\n *\n * function doSomething(arg: Union) {\n * if (arg.type === 'a') {\n * return something;\n * }\n *\n * if (arg.type === 'b') {\n * return somethingElse;\n * }\n *\n * // TS will error if there are other types in the union\n * // Will throw an Error when called at runtime.\n * // Use `assertNever(arg, true)` instead to fail silently.\n * return assertNever(arg);\n * }\n */\nfunction assertNever(value, noThrow) {\n if (noThrow) {\n return value;\n }\n throw new Error(\"Unhandled discriminated union member: \" + JSON.stringify(value));\n}\nexports.assertNever = assertNever;\nexports.default = assertNever;\n", "module.exports = {\n\t\"body1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"body2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"brandBackground\": {\n\t\t\"rest\": \"PlatformColor(ButtonFace)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"PlatformColor(ButtonFace)\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"PlatformColor(ButtonText)\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"PlatformColor(Hotlight)\",\n\t\t\"hover\": \"PlatformColor(Hotlight)\",\n\t\t\"pressed\": \"PlatformColor(Hotlight)\",\n\t\t\"selected\": \"PlatformColor(Hotlight)\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"caption1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 14,\n\t\t\"fontSize\": 10,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"display\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"largeTitle\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"PlatformColor(Window)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"PlatformColor(Window)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"PlatformColor(Window)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(HighlightText)\",\n\t\t\"pressed\": \"PlatformColor(HighlightText)\",\n\t\t\"selected\": \"PlatformColor(HighlightText)\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(HighlightText)\",\n\t\t\"pressed\": \"PlatformColor(HighlightText)\",\n\t\t\"brandHover\": \"PlatformColor(HighlightText)\",\n\t\t\"brandPressed\": \"PlatformColor(HighlightText)\",\n\t\t\"brandSelected\": \"PlatformColor(HighlightText)\",\n\t\t\"selected\": \"PlatformColor(HighlightText)\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(HighlightText)\",\n\t\t\"pressed\": \"PlatformColor(HighlightText)\",\n\t\t\"brandHover\": \"PlatformColor(HighlightText)\",\n\t\t\"brandPressed\": \"PlatformColor(HighlightText)\",\n\t\t\"brandSelected\": \"PlatformColor(HighlightText)\",\n\t\t\"selected\": \"PlatformColor(HighlightText)\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"PlatformColor(GrayText)\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"PlatformColor(Hotlight)\",\n\t\t\"hover\": \"PlatformColor(Hotlight)\",\n\t\t\"pressed\": \"PlatformColor(Hotlight)\",\n\t\t\"selected\": \"PlatformColor(Hotlight)\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"PlatformColor(ButtonText)\",\n\t\t\"hover\": \"PlatformColor(HighlightText)\",\n\t\t\"pressed\": \"PlatformColor(HighlightText)\",\n\t\t\"selected\": \"PlatformColor(HighlightText)\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#141414\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#858585\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"PlatformColor(GrayText)\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"subtitle1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtitle2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"selected\": \"PlatformColor(Highlight)\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"title1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"title1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\",\n\t\t\"hover\": \"PlatformColor(Highlight)\",\n\t\t\"pressed\": \"PlatformColor(Highlight)\",\n\t\t\"disabled\": \"PlatformColor(GrayText)\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"PlatformColor(Window)\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"PlatformColor(Highlight)\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"PlatformColor(WindowText)\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJvZHkxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJvZHkyXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkyU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihCdXR0b25GYWNlKVwiLFxuXHRcdFwiaG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcInByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEJ1dHRvbkZhY2UpXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93KVwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihCdXR0b25UZXh0KVwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihIb3RsaWdodClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIb3RsaWdodClcIixcblx0XHRcInByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhvdGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhvdGxpZ2h0KVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93KVwiXG5cdH0sXG5cdFwiY2FwdGlvbjFcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAxNCxcblx0XHRcImZvbnRTaXplXCI6IDEwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjQwMFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwiaG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcInByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwiZGlzcGxheVwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDUyLFxuXHRcdFwiZm9udFNpemVcIjogNDAsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNjAwXCJcblx0fSxcblx0XCJsYXJnZVRpdGxlXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogNTIsXG5cdFx0XCJmb250U2l6ZVwiOiA0MCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvdylcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiLFxuXHRcdFwiaG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0VGV4dClcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0VGV4dClcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodFRleHQpXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoR3JheVRleHQpXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvdylcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kSW52ZXJ0ZWRMaW5rXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhvdGxpZ2h0KVwiLFxuXHRcdFwiaG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhvdGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSG90bGlnaHQpXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSG90bGlnaHQpXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoQnV0dG9uVGV4dClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0VGV4dClcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHRUZXh0KVwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTQxNDE0XCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4NTg1ODVcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCIsXG5cdFx0XCJob3ZlclwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZUFjY2Vzc2libGVcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZURpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEdyYXlUZXh0KVwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvdylcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3cpXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czJcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoSGlnaGxpZ2h0KVwiXG5cdH0sXG5cdFwic3VidGl0bGUxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjYsXG5cdFx0XCJmb250U2l6ZVwiOiAyMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcInN1YnRpdGxlMVN0cm9uZ1wiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDI2LFxuXHRcdFwiZm9udFNpemVcIjogMjAsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNjAwXCJcblx0fSxcblx0XCJzdWJ0aXRsZTJcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyMixcblx0XHRcImZvbnRTaXplXCI6IDE2LFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjQwMFwiXG5cdH0sXG5cdFwic3VidGl0bGUyU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjIsXG5cdFx0XCJmb250U2l6ZVwiOiAxNixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcInN1YnRsZUJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcInByZXNzZWRcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93KVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvdylcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcInRpdGxlMVwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDM2LFxuXHRcdFwiZm9udFNpemVcIjogMjgsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJ0aXRsZTFTdHJvbmdcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAzNixcblx0XHRcImZvbnRTaXplXCI6IDI4LFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRCYWNrZ3JvdW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRTdHJva2VcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIixcblx0XHRcImhvdmVyXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiUGxhdGZvcm1Db2xvcihIaWdobGlnaHQpXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIlBsYXRmb3JtQ29sb3IoR3JheVRleHQpXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93KVwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvdylcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKEhpZ2hsaWdodClcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiUGxhdGZvcm1Db2xvcihXaW5kb3dUZXh0KVwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCJQbGF0Zm9ybUNvbG9yKFdpbmRvd1RleHQpXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIlBsYXRmb3JtQ29sb3IoV2luZG93VGV4dClcIlxuXHR9XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "import { PlatformColor } from 'react-native';\n\nimport aliasTokens from '@fluentui-react-native/design-tokens-win32/hc/tokens-aliases.json';\n\nexport const hcAliasTokens = processAliasTokens(aliasTokens);\n\nfunction processAliasTokens(aliasTokens: any) {\n for (const key in aliasTokens) {\n for (const innerKey in aliasTokens[key]) {\n const entry = aliasTokens[key][innerKey];\n if (typeof entry === 'string' && entry.includes('PlatformColor')) {\n const color = 'SystemColor' + entry.substring(14, entry.length - 1) + 'Color';\n // eslint-disable-next-line @react-native/platform-colors\n aliasTokens[key][innerKey] = PlatformColor(color);\n }\n }\n }\n\n return aliasTokens;\n}\n", "import hcShadowTokens from '@fluentui-react-native/design-tokens-win32/hc/tokens-shadow.json';\nimport darkAliasTokens from '@fluentui-react-native/design-tokens-windows/dark/tokens-aliases.json';\nimport darkShadowTokens from '@fluentui-react-native/design-tokens-windows/dark/tokens-shadow.json';\nimport lightAliasTokens from '@fluentui-react-native/design-tokens-windows/light/tokens-aliases.json';\nimport lightShadowTokens from '@fluentui-react-native/design-tokens-windows/light/tokens-shadow.json';\nimport type { AppearanceOptions } from '@fluentui-react-native/theme-types';\nimport { assertNever } from 'assert-never';\n\nimport { hcAliasTokens } from './highContrast/tokens-alias';\n\nexport function getAliasTokens(mode: AppearanceOptions) {\n if (mode === 'light') {\n return lightAliasTokens;\n } else if (mode === 'dark' || mode === 'darkElevated') {\n return darkAliasTokens;\n } else if (mode === 'highContrast') {\n return hcAliasTokens;\n } else {\n assertNever(mode);\n }\n\n return lightAliasTokens;\n}\n\nexport function getShadowTokens(mode: AppearanceOptions) {\n if (mode === 'light') {\n return lightShadowTokens;\n } else if (mode === 'dark') {\n return darkShadowTokens;\n }\n\n // HC mode.\n return hcShadowTokens;\n}\n", "export { default as globalTokens } from './tokens-global';\nexport { getAliasTokens, getShadowTokens } from './getTokens';\n", "import { Appearance } from 'react-native';\n\nimport type { AppearanceOptions, ThemeOptions } from '@fluentui-react-native/theme-types';\n\nexport function getCurrentAppearance(appearance: ThemeOptions['appearance'], fallback: AppearanceOptions): AppearanceOptions {\n if (appearance === undefined) {\n return fallback;\n }\n\n return appearance === 'dynamic' ? (Appearance && Appearance.getColorScheme()) || fallback : appearance;\n}\n", "import type { Theme } from '@fluentui-react-native/theme-types';\n\nlet isHighContrastEnabled = false;\n\n/**\n * Used to set isHighContrast state for FURN\n * Specifically for macOS, where you cannot ask for HC state,\n * so you have to store the value to keep track of it.\n *\n * @platform macOS\n * @param isHighContrast New value of high contrast state\n */\nexport function setIsHighContrast(isHighContrast: boolean) {\n isHighContrastEnabled = isHighContrast;\n}\n\n/**\n * Gives the state of high contrast in FURN.\n * On win32, the t parameter is required, but on other platforms\n * it's not needed.\n *\n * @param t The Theme object. Required on win32.\n */\nexport function isHighContrast(_t?: Theme): boolean {\n return isHighContrastEnabled;\n}\n", "import type { AliasColorTokens, Variants } from '@fluentui-react-native/theme-types';\n\nexport function mapPipelineToTheme(pipelineOutput: any): AliasColorTokens {\n return {\n neutralForeground1: pipelineOutput.neutralForeground1.rest,\n neutralForeground1Hover: pipelineOutput.neutralForeground1.hover,\n neutralForeground1Pressed: pipelineOutput.neutralForeground1.pressed,\n neutralForeground1Selected: pipelineOutput.neutralForeground1.selected,\n neutralForeground2: pipelineOutput.neutralForeground2.rest,\n neutralForeground2Hover: pipelineOutput.neutralForeground2.hover,\n neutralForeground2Pressed: pipelineOutput.neutralForeground2.pressed,\n neutralForeground2Selected: pipelineOutput.neutralForeground2.selected,\n neutralForeground2BrandHover: pipelineOutput.neutralForeground2.brandHover,\n neutralForeground2BrandPressed: pipelineOutput.neutralForeground2.brandPressed,\n neutralForeground2BrandSelected: pipelineOutput.neutralForeground2.brandSelected,\n neutralForeground3: pipelineOutput.neutralForeground3.rest,\n neutralForeground3Hover: pipelineOutput.neutralForeground3.hover,\n neutralForeground3Pressed: pipelineOutput.neutralForeground3.pressed,\n neutralForeground3Selected: pipelineOutput.neutralForeground3.selected,\n neutralForeground3BrandHover: pipelineOutput.neutralForeground3.brandHover,\n neutralForeground3BrandPressed: pipelineOutput.neutralForeground3.brandPressed,\n neutralForeground3BrandSelected: pipelineOutput.neutralForeground3.brandSelected,\n neutralForeground4: pipelineOutput.neutralForeground4.rest,\n neutralForegroundDisabled: pipelineOutput.neutralForegroundDisabled.rest,\n\n brandForegroundLink: pipelineOutput.brandForegroundLink.rest,\n brandForegroundLinkHover: pipelineOutput.brandForegroundLink.hover,\n brandForegroundLinkPressed: pipelineOutput.brandForegroundLink.pressed,\n brandForegroundLinkSelected: pipelineOutput.brandForegroundLink.selected,\n compoundBrandForeground1: pipelineOutput.compoundBrandForeground1.rest,\n compoundBrandForeground1Hover: pipelineOutput.compoundBrandForeground1.hover,\n compoundBrandForeground1Pressed: pipelineOutput.compoundBrandForeground1.pressed,\n brandForeground1: pipelineOutput.brandForeground1.rest,\n brandForeground1Disabled: pipelineOutput.brandForeground1.disabled,\n brandForeground1Pressed: pipelineOutput.brandForeground1.pressed,\n brandForeground2: pipelineOutput.brandForeground2.rest,\n\n neutralForegroundInverted: pipelineOutput.neutralForegroundInverted.rest,\n neutralForegroundOnBrand: pipelineOutput.neutralForegroundOnBrand.rest,\n neutralForegroundOnBrandHover: pipelineOutput.neutralForegroundOnBrand.hover,\n neutralForegroundOnBrandPressed: pipelineOutput.neutralForegroundOnBrand.pressed,\n neutralForegroundOnBrandSelected: pipelineOutput.neutralForegroundOnBrand.selected,\n neutralForegroundInvertedLink: pipelineOutput.neutralForegroundInvertedLink.rest,\n neutralForegroundInvertedLinkHover: pipelineOutput.neutralForegroundInvertedLink.hover,\n neutralForegroundInvertedLinkPressed: pipelineOutput.neutralForegroundInvertedLink.pressed,\n neutralForegroundInvertedLinkSelected: pipelineOutput.neutralForegroundInvertedLink.selected,\n\n neutralBackground1: pipelineOutput.neutralBackground1.rest,\n neutralBackground1Hover: pipelineOutput.neutralBackground1.hover,\n neutralBackground1Pressed: pipelineOutput.neutralBackground1.pressed,\n neutralBackground1Selected: pipelineOutput.neutralBackground1.selected,\n neutralBackground2: pipelineOutput.neutralBackground2.rest,\n neutralBackground2Hover: pipelineOutput.neutralBackground2.hover,\n neutralBackground2Pressed: pipelineOutput.neutralBackground2.pressed,\n neutralBackground2Selected: pipelineOutput.neutralBackground2.selected,\n neutralBackground3: pipelineOutput.neutralBackground3.rest,\n neutralBackground3Hover: pipelineOutput.neutralBackground3.hover,\n neutralBackground3Pressed: pipelineOutput.neutralBackground3.pressed,\n neutralBackground3Selected: pipelineOutput.neutralBackground3.selected,\n neutralBackground4: pipelineOutput.neutralBackground4.rest,\n neutralBackground4Hover: pipelineOutput.neutralBackground4.hover,\n neutralBackground4Pressed: pipelineOutput.neutralBackground4.pressed,\n neutralBackground4Selected: pipelineOutput.neutralBackground4.selected,\n neutralBackground5: pipelineOutput.neutralBackground5.rest,\n neutralBackground5Hover: pipelineOutput.neutralBackground5.hover,\n neutralBackground5Pressed: pipelineOutput.neutralBackground5.pressed,\n neutralBackground5Selected: pipelineOutput.neutralBackground5.selected,\n neutralBackground6: pipelineOutput.neutralBackground6.rest,\n neutralBackgroundInverted: pipelineOutput.neutralBackgroundInverted.rest,\n\n subtleBackground: pipelineOutput.subtleBackground.rest,\n subtleBackgroundHover: pipelineOutput.subtleBackground.hover,\n subtleBackgroundPressed: pipelineOutput.subtleBackground.pressed,\n subtleBackgroundSelected: pipelineOutput.subtleBackground.selected,\n\n transparentBackground: pipelineOutput.transparentBackground.rest,\n transparentBackgroundHover: pipelineOutput.transparentBackground.hover,\n transparentBackgroundPressed: pipelineOutput.transparentBackground.pressed,\n transparentBackgroundSelected: pipelineOutput.transparentBackground.selected,\n\n neutralBackgroundDisabled: pipelineOutput.neutralBackgroundDisabled.rest,\n\n neutralStencil1: pipelineOutput.neutralStencil1.rest,\n neutralStencil2: pipelineOutput.neutralStencil2.rest,\n\n brandBackground: pipelineOutput.brandBackground.rest,\n brandBackgroundHover: pipelineOutput.brandBackground.hover,\n brandBackgroundPressed: pipelineOutput.brandBackground.pressed,\n brandBackgroundDisabled: pipelineOutput.brandBackground.disabled,\n brandBackgroundSelected: pipelineOutput.brandBackground.selected,\n compoundBrandBackground1: pipelineOutput.compoundBrandBackground1.rest,\n compoundBrandBackground1Hover: pipelineOutput.compoundBrandBackground1.hover,\n compoundBrandBackground1Pressed: pipelineOutput.compoundBrandBackground1.pressed,\n\n brandBackgroundStatic: pipelineOutput.brandBackgroundStatic.rest,\n brandBackground2: pipelineOutput.brandBackground2.rest,\n\n neutralStrokeAccessible: pipelineOutput.neutralStrokeAccessible.rest,\n neutralStrokeAccessibleHover: pipelineOutput.neutralStrokeAccessible.hover,\n neutralStrokeAccessiblePressed: pipelineOutput.neutralStrokeAccessible.pressed,\n neutralStrokeAccessibleSelected: pipelineOutput.neutralStrokeAccessible.selected,\n neutralStroke1: pipelineOutput.neutralStroke1.rest,\n neutralStroke1Hover: pipelineOutput.neutralStroke1.hover,\n neutralStroke1Pressed: pipelineOutput.neutralStroke1.pressed,\n neutralStroke1Selected: pipelineOutput.neutralStroke1.selected,\n neutralStroke2: pipelineOutput.neutralStroke2.rest,\n neutralStroke3: pipelineOutput.neutralStroke3.rest,\n brandStroke1: pipelineOutput.brandStroke1.rest,\n brandStroke2: pipelineOutput.brandStroke2.rest,\n compoundBrandStroke1: pipelineOutput.compoundBrandStroke1.rest,\n compoundBrandStroke1Hover: pipelineOutput.compoundBrandStroke1.hover,\n compoundBrandStroke1Pressed: pipelineOutput.compoundBrandStroke1.pressed,\n neutralStrokeDisabled: pipelineOutput.neutralStrokeDisabled.rest,\n\n transparentStroke: pipelineOutput.transparentStroke.rest,\n transparentStrokeInteractive: pipelineOutput.transparentStroke.hover,\n transparentStrokeDisabled: pipelineOutput.transparentStroke.disabled,\n\n strokeFocus1: pipelineOutput.strokeFocus1.rest,\n strokeFocus2: pipelineOutput.strokeFocus2.rest,\n\n dangerBackground1: pipelineOutput.dangerBackground1.rest,\n dangerBackground2: pipelineOutput.dangerBackground2.rest,\n dangerBackground3: pipelineOutput.dangerBackground3.rest,\n dangerForeground1: pipelineOutput.dangerForeground1.rest,\n dangerForeground2: pipelineOutput.dangerForeground2.rest,\n dangerForeground3: pipelineOutput.dangerForeground3.rest,\n dangerForegroundInverted: pipelineOutput.dangerForegroundInverted.rest,\n dangerBorderActive: pipelineOutput.dangerBorderActive.rest,\n dangerBorder1: pipelineOutput.dangerBorder1.rest,\n dangerBorder2: pipelineOutput.dangerBorder2.rest,\n\n successBackground1: pipelineOutput.successBackground1.rest,\n successBackground2: pipelineOutput.successBackground2.rest,\n successBackground3: pipelineOutput.successBackground3.rest,\n successForeground1: pipelineOutput.successForeground1.rest,\n successForeground2: pipelineOutput.successForeground2.rest,\n successForeground3: pipelineOutput.successForeground3.rest,\n successForegroundInverted: pipelineOutput.successForegroundInverted.rest,\n successBorderActive: pipelineOutput.successBorderActive.rest,\n successBorder1: pipelineOutput.successBorder1.rest,\n successBorder2: pipelineOutput.successBorder2.rest,\n\n warningBackground1: pipelineOutput.warningBackground1.rest,\n warningBackground2: pipelineOutput.warningBackground2.rest,\n warningBackground3: pipelineOutput.warningBackground3.rest,\n warningForeground1: pipelineOutput.warningForeground1.rest,\n warningForeground2: pipelineOutput.warningForeground2.rest,\n warningForeground3: pipelineOutput.warningForeground3.rest,\n warningForegroundInverted: pipelineOutput.warningForegroundInverted.rest,\n warningBorderActive: pipelineOutput.warningBorderActive.rest,\n warningBorder1: pipelineOutput.warningBorder1.rest,\n warningBorder2: pipelineOutput.warningBorder2.rest,\n\n severeBackground1: pipelineOutput.severeBackground1.rest,\n severeBackground2: pipelineOutput.severeBackground2.rest,\n severeBackground3: pipelineOutput.severeBackground3.rest,\n severeForeground1: pipelineOutput.severeForeground1.rest,\n severeForeground2: pipelineOutput.severeForeground2.rest,\n severeForeground3: pipelineOutput.severeForeground3.rest,\n severeBorderActive: pipelineOutput.severeBorderActive.rest,\n severeBorder1: pipelineOutput.severeBorder1.rest,\n severeBorder2: pipelineOutput.severeBorder2.rest,\n\n outofofficeBackground1: pipelineOutput.outofofficeBackground1.rest,\n outofofficeBackground2: pipelineOutput.outofofficeBackground2.rest,\n outofofficeBackground3: pipelineOutput.outofofficeBackground3.rest,\n outofofficeForeground1: pipelineOutput.outofofficeForeground1.rest,\n outofofficeForeground2: pipelineOutput.outofofficeForeground2.rest,\n outofofficeForeground3: pipelineOutput.outofofficeForeground3.rest,\n outofofficeBorderActive: pipelineOutput.outofofficeBorderActive.rest,\n outofofficeBorder1: pipelineOutput.outofofficeBorder1.rest,\n outofofficeBorder2: pipelineOutput.outofofficeBorder2.rest,\n };\n}\n\nexport function mapFontPipelineToTheme(pipelineOutput: any): Partial {\n return {\n caption1: createVariantValue(pipelineOutput.caption1),\n body1: createVariantValue(pipelineOutput.body1),\n body1Strong: createVariantValue(pipelineOutput.body1Strong),\n body2: createVariantValue(pipelineOutput.body2),\n body2Strong: createVariantValue(pipelineOutput.body2Strong),\n subtitle1: createVariantValue(pipelineOutput.subtitle1),\n subtitle1Strong: createVariantValue(pipelineOutput.subtitle1Strong),\n subtitle2: createVariantValue(pipelineOutput.subtitle2),\n subtitle2Strong: createVariantValue(pipelineOutput.subtitle2Strong),\n title1: createVariantValue(pipelineOutput.title1),\n title1Strong: createVariantValue(pipelineOutput.title1Strong),\n largeTitle: createVariantValue(pipelineOutput.largeTitle),\n display: createVariantValue(pipelineOutput.display),\n };\n}\n\nfunction createVariantValue(variant: any) {\n return { face: 'primary', size: variant.fontSize, weight: variant.fontWeight };\n}\n", "import type { ThemeShadowDefinition } from '@fluentui-react-native/theme-types';\n\n/**\n * Given design token pipeline output for shadow tokens, creates an object that can be used in Theme object.\n * @param pipelineOutputShadow Assumes that this is the object in the tokens-shadow.json file of the pipeline output\n * @returns Object containing shadow tokens\n */\nexport function mapPipelineToShadow(pipelineOutputShadow: any): ThemeShadowDefinition {\n return {\n shadow2: { ambient: pipelineOutputShadow.shadow2[0], key: pipelineOutputShadow.shadow2[1] },\n shadow4: { ambient: pipelineOutputShadow.shadow4[0], key: pipelineOutputShadow.shadow4[1] },\n shadow8: { ambient: pipelineOutputShadow.shadow8[0], key: pipelineOutputShadow.shadow8[1] },\n shadow16: { ambient: pipelineOutputShadow.shadow16[0], key: pipelineOutputShadow.shadow16[1] },\n shadow28: { ambient: pipelineOutputShadow.shadow28[0], key: pipelineOutputShadow.shadow28[1] },\n shadow64: { ambient: pipelineOutputShadow.shadow64[0], key: pipelineOutputShadow.shadow64[1] },\n shadow2brand: { ambient: pipelineOutputShadow.shadowBrand2[0], key: pipelineOutputShadow.shadowBrand2[1] },\n shadow4brand: { ambient: pipelineOutputShadow.shadowBrand4[0], key: pipelineOutputShadow.shadowBrand4[1] },\n shadow8brand: { ambient: pipelineOutputShadow.shadowBrand8[0], key: pipelineOutputShadow.shadowBrand8[1] },\n shadow16brand: { ambient: pipelineOutputShadow.shadowBrand16[0], key: pipelineOutputShadow.shadowBrand16[1] },\n shadow28brand: { ambient: pipelineOutputShadow.shadowBrand28[0], key: pipelineOutputShadow.shadowBrand28[1] },\n shadow64brand: { ambient: pipelineOutputShadow.shadowBrand64[0], key: pipelineOutputShadow.shadowBrand64[1] },\n };\n}\n", "export { getCurrentAppearance } from './getCurrentAppearance';\nexport { isHighContrast, setIsHighContrast } from './isHighContrast';\nexport { mapPipelineToTheme, mapFontPipelineToTheme } from './mapPipelineToTheme';\nexport { mapPipelineToShadow } from './mapPipelineToShadow';\n", "import { memoize } from '@fluentui-react-native/framework-base';\nimport { getAliasTokens, getShadowTokens } from '@fluentui-react-native/theme-tokens';\nimport type { AliasColorTokens, AppearanceOptions, ThemeShadowDefinition } from '@fluentui-react-native/theme-types';\nimport { mapPipelineToShadow, mapPipelineToTheme } from '@fluentui-react-native/theming-utils';\n\nfunction createColorAliasTokensWorker(mode: AppearanceOptions): AliasColorTokens {\n const aliasTokens = getAliasTokens(mode);\n return mapPipelineToTheme(aliasTokens);\n}\n\nexport const createColorAliasTokens = memoize(createColorAliasTokensWorker);\n\nfunction createShadowAliasTokensWorker(mode: AppearanceOptions): ThemeShadowDefinition {\n const aliasTokens = getShadowTokens(mode);\n return mapPipelineToShadow(aliasTokens);\n}\n\nexport const createShadowAliasTokens = memoize(createShadowAliasTokensWorker);\n", "import type { Palette, FabricWebPalette, ThemeColorDefinition } from '@fluentui-react-native/theme-types';\n\nimport { createColorAliasTokens } from './createAliasTokens';\n\n/**\n * Generate a palette from a set of fabric web colors, like those output from the theme designer.\n *\n * @param palette - fabric web palette definition. This allows initializing our color values in the same\n * manner the fabric web does it\n */\nexport function paletteFromFabricColors(p: FabricWebPalette, isInverted?: boolean): Palette {\n return {\n background: p.white,\n bodyStandoutBackground: p.neutralLighterAlt,\n bodyFrameBackground: p.white,\n bodyFrameDivider: p.neutralLight,\n bodyText: p.neutralPrimary,\n bodyTextChecked: p.black,\n subText: p.neutralSecondary,\n bodyDivider: p.neutralLight,\n\n disabledBackground: isInverted ? p.neutralQuaternaryAlt : p.neutralLighter,\n disabledText: p.neutralTertiary,\n disabledBodyText: p.neutralTertiary,\n\n focusBorder: p.neutralSecondary,\n variantBorder: p.neutralLight,\n\n errorText: !isInverted ? p.redDark : '#ff5f5f',\n inputBorder: p.neutralTertiary,\n inputBackground: p.white,\n inputFocusBorderAlt: p.themePrimary,\n inputText: p.neutralPrimary,\n inputPlaceholderText: p.neutralSecondary,\n\n buttonBackground: p.neutralLighter,\n buttonBackgroundChecked: p.neutralTertiaryAlt,\n buttonBackgroundHovered: p.neutralLight,\n buttonBackgroundPressed: p.neutralLight,\n buttonBackgroundDisabled: p.neutralLighter,\n buttonBorder: p.neutralSecondaryAlt,\n buttonText: isInverted ? p.black : p.neutralPrimary,\n buttonTextHovered: isInverted ? p.neutralPrimary : p.neutralDark,\n buttonTextChecked: p.neutralDark,\n buttonTextPressed: p.neutralDark,\n buttonTextDisabled: p.neutralTertiary,\n buttonBorderDisabled: p.neutralLighter,\n buttonBorderFocused: p.neutralSecondaryAlt,\n\n primaryButtonBackground: p.themePrimary,\n primaryButtonBackgroundHovered: p.themeDarkAlt,\n primaryButtonBackgroundPressed: p.themeDark,\n primaryButtonBackgroundDisabled: p.neutralLighter,\n primaryButtonBorder: 'transparent',\n primaryButtonBorderFocused: 'transparent',\n primaryButtonText: p.white,\n primaryButtonTextHovered: p.white,\n primaryButtonTextPressed: p.white,\n primaryButtonTextDisabled: p.neutralQuaternary,\n\n accentButtonBackground: p.accent,\n\n menuBackground: isInverted ? p.neutralLighter : p.white,\n menuDivider: isInverted ? p.neutralTertiaryAlt : p.neutralTertiaryAlt,\n menuIcon: isInverted ? p.themeDarkAlt : p.themePrimary,\n menuItemBackgroundHovered: isInverted ? p.neutralQuaternaryAlt : p.neutralLighter,\n menuItemBackgroundPressed: isInverted ? p.neutralQuaternary : p.neutralLight,\n menuItemText: p.neutralPrimary,\n menuItemTextHovered: p.neutralDark,\n\n listHeaderBackgroundHovered: p.neutralLighter,\n listHeaderBackgroundPressed: p.neutralLight,\n\n actionLink: p.neutralPrimary,\n link: p.themePrimary,\n linkHovered: p.themeDarker,\n linkPressed: p.themeDark,\n\n // Control Color Tokens\n defaultBackground: p.neutralLighter,\n defaultBorder: p.neutralSecondaryAlt,\n defaultContent: isInverted ? p.black : p.neutralPrimary,\n defaultIcon: isInverted ? p.black : p.neutralPrimary,\n\n defaultHoveredBackground: p.neutralLight,\n defaultHoveredBorder: p.neutralSecondaryAlt,\n defaultHoveredContent: isInverted ? p.neutralPrimary : p.neutralDark,\n defaultHoveredIcon: isInverted ? p.neutralPrimary : p.neutralDark,\n\n defaultFocusedBackground: p.neutralLight,\n defaultFocusedBorder: p.neutralSecondaryAlt,\n defaultFocusedContent: isInverted ? p.neutralPrimary : p.neutralDark,\n defaultFocusedIcon: isInverted ? p.neutralPrimary : p.neutralDark,\n\n defaultPressedBackground: p.neutralLight,\n defaultPressedBorder: p.neutralSecondaryAlt,\n defaultPressedContent: p.neutralDark,\n defaultPressedIcon: p.neutralDark,\n\n defaultDisabledBackground: p.neutralLighter,\n defaultDisabledBorder: p.neutralLighter,\n defaultDisabledContent: p.neutralTertiary,\n defaultDisabledIcon: p.neutralTertiary,\n\n ghostBackground: p.white,\n ghostBorder: p.white,\n ghostContent: p.neutralPrimary,\n ghostIcon: p.neutralPrimary,\n\n ghostHoveredBackground: p.neutralLighter,\n ghostHoveredBorder: p.neutralLighter,\n ghostHoveredContent: p.neutralDark,\n ghostHoveredIcon: p.neutralDark,\n\n ghostFocusedBackground: p.neutralLighter,\n ghostFocusedBorder: p.neutralSecondaryAlt,\n ghostFocusedContent: p.neutralDark,\n ghostFocusedIcon: p.neutralDark,\n\n ghostPressedBackground: p.neutralLight,\n ghostPressedBorder: p.neutralLight,\n ghostPressedContent: p.neutralDark,\n ghostPressedIcon: p.neutralDark,\n\n ghostDisabledBackground: p.white,\n ghostDisabledBorder: p.white,\n ghostDisabledContent: p.neutralTertiary,\n ghostDisabledIcon: p.neutralTertiary,\n\n brandedBackground: p.themePrimary,\n\n brandedDisabledBorder: p.neutralLighter,\n\n defaultCheckedBackground: p.neutralTertiaryAlt,\n defaultCheckedContent: p.neutralDark,\n defaultCheckedHoveredBackground: p.neutralLight,\n defaultCheckedHoveredContent: isInverted ? p.neutralPrimary : p.neutralDark,\n\n ghostCheckedBackground: p.neutralLight,\n ghostCheckedContent: p.black,\n ghostCheckedHoveredBackground: p.neutralLighter,\n ghostCheckedHoveredContent: p.neutralDark,\n ghostCheckedHoveredBorder: p.neutralDark,\n\n ghostSecondaryContent: p.neutralSecondary,\n ghostFocusedSecondaryContent: p.neutralSecondary,\n ghostHoveredSecondaryContent: p.neutralSecondary,\n ghostPressedSecondaryContent: p.neutralSecondary,\n\n brandedSecondaryContent: p.neutralLighterAlt,\n brandedFocusedSecondaryContent: p.neutralLighterAlt,\n brandedHoveredSecondaryContent: p.neutralLighterAlt,\n brandedPressedSecondaryContent: p.neutralLighterAlt,\n\n defaultHoveredSecondaryContent: p.neutralTertiary,\n defaultPressedSecondaryContent: p.neutralTertiary,\n\n checkmarkColor: p.white,\n checkboxBackground: p.themePrimary,\n checkboxBackgroundDisabled: p.neutralLighter,\n checkboxBorderColor: p.neutralSecondaryAlt,\n\n personaActivityRing: p.white,\n personaActivityGlow: p.themePrimary,\n };\n}\n\nexport function getStockWebHCPalette(): ThemeColorDefinition {\n return {\n background: '#000000',\n bodyStandoutBackground: '#000000',\n bodyFrameBackground: '#000000',\n bodyFrameDivider: '#000000',\n bodyText: '#ffffff',\n bodyTextChecked: '#000000',\n subText: '#ffffff',\n bodyDivider: '#ffffff',\n\n disabledBackground: '#000000',\n disabledText: '#3ff23f',\n disabledBodyText: '#3ff23f',\n\n focusBorder: '#ffffff',\n variantBorder: '#ffffff',\n\n errorText: '#ffffff',\n\n inputBorder: '#ffffff',\n inputBackground: '#000000',\n inputFocusBorderAlt: '#ffffff',\n inputText: '#ffffff',\n inputPlaceholderText: '#ffffff',\n\n buttonBackground: '#000000',\n buttonBackgroundChecked: '#1aebff',\n buttonBackgroundHovered: '#1aebff',\n buttonBackgroundPressed: '#1aebff',\n buttonBackgroundDisabled: '#000000',\n buttonBorder: '#ffffff',\n buttonText: '#ffffff',\n buttonTextHovered: '#000000',\n buttonTextChecked: '#000000',\n buttonTextPressed: '#000000',\n buttonTextDisabled: '#3ff23f',\n buttonBorderDisabled: '#3ff23f',\n buttonBorderFocused: '#ffffff',\n\n primaryButtonBackground: '#000000',\n primaryButtonBackgroundHovered: '#1aebff',\n primaryButtonBackgroundPressed: '#1aebff',\n primaryButtonBackgroundDisabled: '#000000',\n primaryButtonBorder: '#ffffff',\n primaryButtonBorderFocused: '#ffffff',\n primaryButtonText: '#ffffff',\n primaryButtonTextHovered: '#000000',\n primaryButtonTextPressed: '#000000',\n primaryButtonTextDisabled: '#3ff23f',\n\n accentButtonBackground: '#000000',\n\n menuBackground: '#000000',\n menuDivider: '#ffffff',\n menuIcon: '#ffffff',\n menuItemBackgroundHovered: '#1aebff',\n menuItemBackgroundPressed: '#1aebff',\n menuItemText: '#ffffff',\n menuItemTextHovered: '#000000',\n\n listHeaderBackgroundHovered: '#1aebff',\n listHeaderBackgroundPressed: '#1aebff',\n\n actionLink: '#ffff00',\n link: '#ffff00',\n linkHovered: '#ffffff',\n linkPressed: '#ffffff',\n\n // Control Color Tokens\n defaultBackground: '#000000',\n defaultBorder: '#ffffff',\n defaultContent: '#ffffff',\n defaultIcon: '#ffffff',\n\n defaultHoveredBackground: '#1aebff',\n defaultHoveredBorder: '#1aebff',\n defaultHoveredContent: '#000000',\n defaultHoveredIcon: '#000000',\n\n defaultFocusedBackground: '#000000',\n defaultFocusedBorder: '#ffffff',\n defaultFocusedContent: '#ffffff',\n defaultFocusedIcon: '#ffffff',\n\n defaultPressedBackground: '#1aebff',\n defaultPressedBorder: '#1aebff',\n defaultPressedContent: '#000000',\n defaultPressedIcon: '#000000',\n\n defaultDisabledBackground: '#000000',\n defaultDisabledBorder: '#3ff23f',\n defaultDisabledContent: '#3ff23f',\n defaultDisabledIcon: '#3ff23f',\n\n ghostBackground: '#000000',\n ghostBorder: '#000000',\n ghostContent: '#ffffff',\n ghostIcon: '#ffffff',\n\n ghostHoveredBackground: '#1aebff',\n ghostHoveredBorder: '#1aebff',\n ghostHoveredContent: '#000000',\n ghostHoveredIcon: '#000000',\n\n ghostFocusedBackground: '#000000',\n ghostFocusedBorder: '#ffffff',\n ghostFocusedContent: '#ffffff',\n ghostFocusedIcon: '#ffffff',\n\n ghostPressedBackground: '#1aebff',\n ghostPressedBorder: '#1aebff',\n ghostPressedContent: '#000000',\n ghostPressedIcon: '#000000',\n\n ghostDisabledBackground: '#000000',\n ghostDisabledBorder: '#000000',\n ghostDisabledContent: '#3ff23f',\n ghostDisabledIcon: '#3ff23f',\n\n brandedBackground: '#000000',\n\n brandedDisabledBorder: '#3ff23f',\n\n defaultCheckedBackground: '#1aebff',\n defaultCheckedContent: '#000000',\n defaultCheckedHoveredBackground: '#1aebff',\n defaultCheckedHoveredContent: '#000000',\n\n ghostCheckedBackground: '#1aebff',\n ghostCheckedContent: '#000000',\n ghostCheckedHoveredBackground: '#1aebff',\n ghostCheckedHoveredContent: '#000000',\n ghostCheckedHoveredBorder: '#000000',\n\n ghostSecondaryContent: '#ffffff',\n ghostFocusedSecondaryContent: '#ffffff',\n ghostHoveredSecondaryContent: '#000000',\n ghostPressedSecondaryContent: '#000000',\n\n brandedSecondaryContent: '#ffffff',\n brandedFocusedSecondaryContent: '#ffffff',\n brandedHoveredSecondaryContent: '#000000',\n brandedPressedSecondaryContent: '#000000',\n\n defaultHoveredSecondaryContent: '#000000',\n defaultPressedSecondaryContent: '#000000',\n\n checkmarkColor: '#ffffff',\n checkboxBackground: '#000000',\n checkboxBackgroundDisabled: '#000000',\n checkboxBorderColor: '#ffffff',\n\n personaActivityRing: '#ffffff',\n personaActivityGlow: 'transparent', // glow probably doesn't make sense on HC\n ...createColorAliasTokens('highContrast'),\n };\n}\n", "/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { ThemeColorDefinition } from '@fluentui-react-native/theme-types';\n\nimport { createColorAliasTokens } from './createAliasTokens';\nimport { paletteFromFabricColors } from './defaultColors';\n\nexport function getStockWebPalette(): ThemeColorDefinition {\n return {\n ...paletteFromFabricColors({\n black: globalTokens.color.black,\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n white: globalTokens.color.white,\n // Shared Colors\n red: globalTokens.color.red.primary,\n redDark: globalTokens.color.burgundy.primary,\n\n themeDarker: globalTokens.color.brand.shade40,\n themeDark: globalTokens.color.brand.shade20,\n themeDarkAlt: globalTokens.color.brand.shade10,\n themePrimary: globalTokens.color.brand.primary,\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: globalTokens.color.brand.tint40,\n themeLighter: globalTokens.color.brand.tint50,\n themeLighterAlt: globalTokens.color.brand.tint60,\n accent: globalTokens.color.brand.primary,\n blackTranslucent40: 'rgba(0,0,0,.4)',\n }),\n ...createColorAliasTokens('light'),\n };\n}\n\nexport function getStockWebDarkPalette(): ThemeColorDefinition {\n return {\n ...paletteFromFabricColors(\n {\n // colors taken from fluentui DarkCustomizations.ts\n themeDarker: '#82c7ff',\n themeDark: globalTokens.color.brand.tint30,\n themeDarkAlt: globalTokens.color.brand.tint20,\n themePrimary: globalTokens.color.brand.tint10,\n themeSecondary: globalTokens.color.brand.primary,\n themeTertiary: '#235a85',\n themeLight: globalTokens.color.brand.shade30,\n themeLighter: globalTokens.color.brand.shade50,\n themeLighterAlt: globalTokens.color.brand.shade60,\n black: globalTokens.color.white,\n neutralDark: '#faf9f8',\n neutralPrimary: '#f3f2f1',\n neutralPrimaryAlt: '#c8c6c4',\n neutralSecondary: '#a19f9d',\n neutralSecondaryAlt: '#979693',\n neutralTertiary: '#797775',\n neutralTertiaryAlt: '#484644',\n neutralQuaternary: '#3b3a39',\n neutralQuaternaryAlt: '#323130',\n neutralLight: '#292827',\n neutralLighter: '#252423',\n neutralLighterAlt: '#201f1e',\n white: '#1b1a19',\n red: globalTokens.color.red.primary,\n accent: globalTokens.color.brand.primary,\n redDark: '#f1707b',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n },\n true,\n ),\n ...createColorAliasTokens('dark'),\n };\n}\n", "import { Platform } from 'react-native';\n\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { Theme, Typography, Spacing, FontWeightValue, FontSize, FontSizes, Variants } from '@fluentui-react-native/theme-types';\n\nimport { createShadowAliasTokens } from './createAliasTokens';\nimport { getStockWebHCPalette } from './defaultColors';\nimport { getStockWebPalette, getStockWebDarkPalette } from './stockWebPalette';\n\nfunction _defaultTypography(): Typography {\n const defaultsDict = {\n sizes: {\n caption: globalTokens.font.size100 as FontSize,\n secondary: globalTokens.font.size200 as FontSize,\n body: globalTokens.font.size300 as FontSize,\n subheader: globalTokens.font.size400 as FontSize,\n header: globalTokens.font.size500 as FontSize,\n hero: globalTokens.font.size700 as FontSize,\n heroLarge: globalTokens.font.size900 as FontSize,\n } as FontSizes,\n weights: {\n regular: globalTokens.font.weight.regular as FontWeightValue,\n semiBold: globalTokens.font.weight.semibold as FontWeightValue,\n },\n families: {\n primary: 'Segoe UI',\n secondary: 'Segoe UI',\n cursive: 'System',\n monospace: 'System',\n numeric: 'System',\n sansSerif: 'System',\n serif: 'System',\n },\n variants: {\n captionStandard: { face: 'primary', size: 'caption', weight: 'regular' },\n secondaryStandard: { face: 'primary', size: 'secondary', weight: 'regular' },\n secondarySemibold: { face: 'primary', size: 'secondary', weight: 'semiBold' },\n bodyStandard: { face: 'primary', size: 'body', weight: 'regular' },\n bodySemibold: { face: 'primary', size: 'body', weight: 'semiBold' },\n subheaderStandard: { face: 'primary', size: 'subheader', weight: 'regular' },\n subheaderSemibold: { face: 'primary', size: 'subheader', weight: 'semiBold' },\n headerStandard: { face: 'primary', size: 'header', weight: 'regular' },\n headerSemibold: { face: 'primary', size: 'header', weight: 'semiBold' },\n heroStandard: { face: 'primary', size: 'hero', weight: 'regular' },\n heroSemibold: { face: 'primary', size: 'hero', weight: 'semiBold' },\n heroLargeStandard: { face: 'primary', size: 'heroLarge', weight: 'regular' },\n heroLargeSemibold: { face: 'primary', size: 'heroLarge', weight: 'semiBold' },\n // mocked out\n caption1: { face: 'primary', size: 'caption', weight: 'regular' },\n caption1Strong: { face: 'primary', size: 'caption', weight: 'semiBold' },\n body1: { face: 'primary', size: 'secondary', weight: 'regular' },\n body1Strong: { face: 'primary', size: 'secondary', weight: 'semiBold' },\n body2: { face: 'primary', size: 'body', weight: 'regular' },\n body2Strong: { face: 'primary', size: 'body', weight: 'semiBold' },\n subtitle1: { face: 'primary', size: 'header', weight: 'regular' },\n subtitle1Strong: { face: 'primary', size: 'header', weight: 'semiBold' },\n subtitle2: { face: 'primary', size: 'subheader', weight: 'regular' },\n subtitle2Strong: { face: 'primary', size: 'subheader', weight: 'semiBold' },\n title1: { face: 'primary', size: 'hero', weight: 'regular' },\n title1Strong: { face: 'primary', size: 'hero', weight: 'semiBold' },\n largeTitle: { face: 'primary', size: 'heroLarge', weight: 'regular' },\n display: { face: 'primary', size: 'heroLarge', weight: 'semiBold' },\n } as Variants,\n };\n\n if (Platform.OS === 'macos' || Platform.OS === 'ios') {\n const familiesDictApple = {\n primary: 'System',\n secondary: 'System',\n cursive: 'System',\n monospace: 'System',\n numeric: 'System',\n sansSerif: 'System',\n serif: 'System',\n };\n defaultsDict.families = familiesDictApple;\n }\n\n return defaultsDict;\n}\n\nexport function defaultSpacing(): Spacing {\n return { s2: '4px', s1: '8px', m: '16px', l1: '20px', l2: '32px' };\n}\n\nexport const defaultFluentTheme: Theme = {\n colors: getStockWebPalette(),\n typography: _defaultTypography(),\n spacing: defaultSpacing(),\n shadows: createShadowAliasTokens('light'),\n components: {},\n host: { appearance: 'light' },\n};\n\nexport const defaultFluentDarkTheme: Theme = {\n colors: getStockWebDarkPalette(),\n typography: defaultFluentTheme.typography,\n shadows: createShadowAliasTokens('dark'),\n spacing: defaultFluentTheme.spacing,\n components: {},\n host: { appearance: 'dark' },\n};\n\nexport const defaultFluentHighConstrastTheme: Theme = {\n colors: getStockWebHCPalette(),\n typography: defaultFluentTheme.typography,\n shadows: createShadowAliasTokens('highContrast'),\n spacing: defaultFluentTheme.spacing,\n components: {},\n host: { appearance: 'highContrast' },\n};\n", "import { Appearance } from 'react-native';\n\nimport { ThemeReference } from '@fluentui-react-native/theme';\nimport type { Theme, ThemeOptions } from '@fluentui-react-native/theme-types';\nimport { getCurrentAppearance } from '@fluentui-react-native/theming-utils';\nimport assertNever from 'assert-never';\n\nimport { defaultFluentDarkTheme, defaultFluentHighConstrastTheme, defaultFluentTheme } from './defaultTheme';\n\nexport function createDefaultTheme(options: ThemeOptions = {}): ThemeReference {\n const themeRef = new ThemeReference({} as Theme, () => {\n const current = getCurrentAppearance(options.appearance, options.defaultAppearance || 'light');\n switch (current) {\n case 'light':\n return defaultFluentTheme;\n case 'dark':\n return defaultFluentDarkTheme;\n case 'darkElevated':\n return defaultFluentDarkTheme;\n case 'highContrast':\n return defaultFluentHighConstrastTheme;\n default:\n assertNever(current);\n }\n });\n\n if (Appearance && options.appearance === 'dynamic') {\n Appearance.addChangeListener(() => {\n themeRef.invalidate();\n });\n }\n\n return themeRef;\n}\n", "export { defaultFluentTheme, defaultFluentDarkTheme } from './defaultTheme';\nexport { createDefaultTheme } from './createDefaultTheme';\nexport { createColorAliasTokens as createAliasTokens } from './createAliasTokens';\n", "import type { AliasColorTokens, OfficePalette } from '@fluentui-react-native/theme-types';\n\nexport function createAliasesFromPalette(palette: OfficePalette, isHighContrast: boolean): Partial {\n // Workaround for getting checkmark to have correct color in HC\n // while native code doesn't support PlatformColor\n if (isHighContrast) {\n return {};\n }\n\n return {\n neutralForeground1: palette.Text,\n neutralForeground1Hover: palette.TextHover,\n neutralForeground1Pressed: palette.TextPressed,\n neutralForeground1Selected: palette.TextSelected,\n neutralForeground2: palette.TextSecondary,\n neutralForeground2Hover: palette.TextSecondaryHover,\n neutralForeground2Pressed: palette.TextSecondaryPressed,\n neutralForeground2Selected: palette.TextSecondarySelected,\n neutralForeground4: palette.TextCtlSubtlePlaceholder,\n neutralForegroundDisabled: palette.TextDisabled,\n\n compoundBrandForeground1: palette.TextEmphasis,\n compoundBrandForeground1Hover: palette.TextEmphasisHover,\n compoundBrandForeground1Pressed: palette.TextEmphasisPressed,\n\n neutralForegroundInverted: palette.TextCtlSubtleSelectionHighlight,\n neutralForegroundOnBrand: palette.TextCtlEmphasis,\n neutralForegroundOnBrandHover: palette.TextCtlEmphasisHover,\n neutralForegroundOnBrandPressed: palette.TextCtlEmphasisPressed,\n neutralForegroundInvertedLink: palette.BkgToggleSwitchOff,\n neutralForegroundInvertedLinkHover: palette.BkgToggleSwitchOffHover,\n neutralForegroundInvertedLinkPressed: palette.BkgToggleSwitchOffPressed,\n\n neutralBackground1: palette.Bkg,\n neutralBackground1Hover: palette.BkgHover,\n neutralBackground1Pressed: palette.BkgPressed,\n neutralBackground1Selected: palette.BkgSelected,\n neutralBackground2: palette.BkgHeader,\n neutralBackground2Hover: palette.BkgSubtle,\n neutralBackground3: palette.BkgSubtle,\n neutralBackgroundInverted: palette.BkgSelectionHighlight,\n neutralBackgroundDisabled: palette.BkgCtlDisabled,\n\n neutralStencil1: palette.SliderBuffer,\n\n brandBackground: palette.BkgCtlEmphasis,\n brandBackgroundHover: palette.BkgCtlEmphasisHover,\n brandBackgroundPressed: palette.BkgCtlEmphasisPressed,\n\n compoundBrandBackground1: palette.BkgToggleSwitchOn,\n compoundBrandBackground1Hover: palette.BkgToggleSwitchOnHover,\n compoundBrandBackground1Pressed: palette.BkgToggleSwitchOnPressed,\n\n neutralStrokeAccessible: palette.StrokeOnlySelected,\n neutralStrokeAccessibleHover: palette.StrokeOnlyHover,\n neutralStrokeAccessiblePressed: palette.StrokeOnlyPressed,\n neutralStroke1: palette.StrokeCtl,\n neutralStroke1Hover: palette.StrokeSelectedHover,\n neutralStroke1Pressed: palette.StrokeOverPressed,\n neutralStroke2: palette.SliderBuffer,\n brandStroke1: palette.AccentEmphasis,\n compoundBrandStroke1: palette.StrokeToggleSwitchOn,\n compoundBrandStroke1Hover: palette.StrokeToggleSwitchOnHover,\n compoundBrandStroke1Pressed: palette.StrokeToggleSwitchOnPressed,\n neutralStrokeDisabled: palette.StrokeCtlDisabled,\n\n strokeFocus2: palette.StrokeKeyboard,\n };\n}\n", "import type { ColorValue } from 'react-native';\n\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { Theme, PartialTheme, AliasColorTokens } from '@fluentui-react-native/theme-types';\n\nexport function createBrandedThemeWithAlias(themeName: string, theme: Theme): PartialTheme {\n if (themeName === 'HighContrast' || !theme.host.colors) {\n return {};\n }\n\n return {\n colors: getCurrentBrandAliasTokens(themeName, theme.host.colors.AppPrimary),\n };\n}\n\nexport function getCurrentBrandAliasTokens(themeName: string, appPrimary: ColorValue): Partial {\n const appColors = getAppColors(appPrimary);\n const isWhiteOrColorfulTheme = themeName === 'White' || themeName === 'Colorful';\n\n return {\n neutralForeground2BrandHover: isWhiteOrColorfulTheme ? appColors.shade10 : appColors.tint40,\n neutralForeground2BrandPressed: isWhiteOrColorfulTheme ? appColors.shade30 : appColors.tint10,\n neutralForeground2BrandSelected: isWhiteOrColorfulTheme ? appColors.shade20 : appColors.tint40,\n neutralForeground3BrandHover: isWhiteOrColorfulTheme ? appColors.shade10 : appColors.tint40,\n neutralForeground3BrandPressed: isWhiteOrColorfulTheme ? appColors.shade30 : appColors.tint10,\n neutralForeground3BrandSelected: isWhiteOrColorfulTheme ? appColors.shade20 : appColors.tint40,\n brandForegroundLink: isWhiteOrColorfulTheme ? appColors.primary : appColors.tint30,\n brandForegroundLinkHover: isWhiteOrColorfulTheme ? appColors.shade10 : appColors.tint40,\n brandForegroundLinkPressed: isWhiteOrColorfulTheme ? appColors.shade30 : appColors.tint10,\n brandForegroundLinkSelected: isWhiteOrColorfulTheme ? appColors.shade20 : appColors.tint40,\n compoundBrandForeground1: isWhiteOrColorfulTheme ? appColors.primary : appColors.tint30,\n compoundBrandForeground1Hover: isWhiteOrColorfulTheme ? appColors.shade10 : appColors.tint40,\n compoundBrandForeground1Pressed: isWhiteOrColorfulTheme ? appColors.shade30 : appColors.tint10,\n brandForeground1: isWhiteOrColorfulTheme ? appColors.primary : appColors.tint30,\n brandForeground2: isWhiteOrColorfulTheme ? appColors.shade10 : appColors.tint40,\n brandBackground: appColors.primary,\n brandBackgroundHover: appColors.shade10,\n brandBackgroundPressed: appColors.shade30,\n brandBackgroundSelected: appColors.shade20,\n compoundBrandBackground1: appColors.primary,\n compoundBrandBackground1Hover: appColors.shade10,\n compoundBrandBackground1Pressed: appColors.shade20,\n brandBackgroundStatic: appColors.primary,\n brandBackground2: appColors.tint40,\n neutralStrokeAccessibleSelected: appColors.primary,\n brandStroke1: appColors.primary,\n brandStroke2: appColors.tint40,\n compoundBrandStroke1: appColors.primary,\n compoundBrandStroke1Hover: appColors.shade10,\n compoundBrandStroke1Pressed: appColors.shade20,\n };\n}\n\nfunction getAppColors(primaryColor: ColorValue) {\n if (typeof primaryColor === 'string') {\n if (primaryColor.toLowerCase() === '#185abd') {\n return globalTokens.color.word;\n } else if (primaryColor.toLowerCase() === '#107c41') {\n return globalTokens.color.excel;\n } else if (primaryColor.toLowerCase() === '#d83b01') {\n return globalTokens.color.office;\n } else if (primaryColor.toLowerCase() === '#80397b' || primaryColor.toLowerCase() === '#7719aa') {\n return globalTokens.color.oneNote;\n } else if (primaryColor.toLowerCase() === '#0078d4') {\n return globalTokens.color.outlook;\n } else if (primaryColor.toLowerCase() === '#c43e1c') {\n return globalTokens.color.powerPoint;\n }\n }\n\n return globalTokens.color.brand;\n}\n", "module.exports = {\n\t\"body1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"body2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"brandBackground\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#aec6eb\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#aec6eb\",\n\t\t\"hover\": \"#d2e0f4\",\n\t\t\"pressed\": \"#2e6ac5\",\n\t\t\"selected\": \"#d2e0f4\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#6794d7\"\n\t},\n\t\"caption1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 14,\n\t\t\"fontSize\": 10,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#aec6eb\",\n\t\t\"hover\": \"#d2e0f4\",\n\t\t\"pressed\": \"#2e6ac5\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#3f1011\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"display\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"largeTitle\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#292929\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#1f1f1f\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#1f1f1f\",\n\t\t\"hover\": \"#333333\",\n\t\t\"pressed\": \"#141414\",\n\t\t\"selected\": \"#2e2e2e\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#141414\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#0a0a0a\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#0a0a0a\",\n\t\t\"hover\": \"#1f1f1f\",\n\t\t\"pressed\": \"#000000\",\n\t\t\"selected\": \"#1a1a1a\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#141414\",\n\t\t\"pressed\": \"#050505\",\n\t\t\"selected\": \"#0f0f0f\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#141414\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#d6d6d6\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"brandHover\": \"#d2e0f4\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#d2e0f4\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#d6d6d6\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"brandHover\": \"#d2e0f4\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#d2e0f4\",\n\t\t\"selected\": \"#d6d6d6\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#999999\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#5c5c5c\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#292929\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#292929\",\n\t\t\"selected\": \"#292929\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#666666\",\n\t\t\"hover\": \"#757575\",\n\t\t\"pressed\": \"#6b6b6b\",\n\t\t\"selected\": \"#707070\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#525252\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#3d3d3d\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#bdbdbd\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#185abd\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#424242\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#3a1136\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#411200\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"subtitle1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtitle2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#1f1f1f\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#052505\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"title1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"title1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#4c4400\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#817400\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJvZHkxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJvZHkyXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkyU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDJlMGY0XCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZWM2ZWJcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMmUwZjRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZWM2ZWJcIixcblx0XHRcImhvdmVyXCI6IFwiI2QyZTBmNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2QyZTBmNFwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2Nzk0ZDdcIlxuXHR9LFxuXHRcImNhcHRpb24xXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTQsXG5cdFx0XCJmb250U2l6ZVwiOiAxMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWVjNmViXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMmU2YWM1XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzZjEwMTFcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzUxZDFmXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RjNWU2MlwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWJiYmNcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRpc3BsYXlcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiA1Mixcblx0XHRcImZvbnRTaXplXCI6IDQwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwibGFyZ2VUaXRsZVwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDUyLFxuXHRcdFwiZm9udFNpemVcIjogNDAsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyOTI5MjlcIixcblx0XHRcImhvdmVyXCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMxZjFmMWZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMWYxZjFmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzMzMzMzNcIixcblx0XHRcInByZXNzZWRcIjogXCIjMTQxNDE0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyZTJlMmVcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE0MTQxNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBhMGEwYVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwYTBhMGFcIixcblx0XHRcImhvdmVyXCI6IFwiIzFmMWYxZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzFhMWExYVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxNDE0MTRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDUwNTA1XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwZjBmMGZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzMzMzMzM1wiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE0MTQxNFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjZDJlMGY0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2FkYWRhZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZDZkNmQ2XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjZDJlMGY0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNkNmQ2ZDZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzk5OTk5OVwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzVjNWM1Y1wiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyOTI5MjlcIixcblx0XHRcImhvdmVyXCI6IFwiIzI5MjkyOVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyOTI5MjlcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzI5MjkyOVwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRPbkJyYW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdGVuY2lsMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzMzMzMzM1wiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTc1NzU3XCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzY2NjY2NlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNzU3NTc1XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzZiNmI2YlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjNzA3MDcwXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzUyNTI1MlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZTNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzZDNkM2RcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VBY2Nlc3NpYmxlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNiZGJkYmRcIixcblx0XHRcInByZXNzZWRcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VEaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQyNDI0MlwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzNhMTEzNlwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzZkMjA2NFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTYxYzRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDE2MWM0XCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQxMTIwMFwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3YTIxMDFcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJzdWJ0aXRsZTFcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyNixcblx0XHRcImZvbnRTaXplXCI6IDIwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjQwMFwiXG5cdH0sXG5cdFwic3VidGl0bGUxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjYsXG5cdFx0XCJmb250U2l6ZVwiOiAyMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcInN1YnRpdGxlMlwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDIyLFxuXHRcdFwiZm9udFNpemVcIjogMTYsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJzdWJ0aXRsZTJTdHJvbmdcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyMixcblx0XHRcImZvbnRTaXplXCI6IDE2LFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwic3VidGxlQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzZDNkM2RcIixcblx0XHRcInByZXNzZWRcIjogXCIjMWYxZjFmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzODM4MzhcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA1MjUwNVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDk0NTA5XCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU0YjA1NFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTRiMDU0XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM5ZmQ4OWZcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwidGl0bGUxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMzYsXG5cdFx0XCJmb250U2l6ZVwiOiAyOCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcInRpdGxlMVN0cm9uZ1wiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDM2LFxuXHRcdFwiZm9udFNpemVcIjogMjgsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNjAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudEJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwMDAwMDAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudFN0cm9rZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzRjNDQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZWU2NlwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVlZTY2XCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFIn0=\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"body1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"body2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"brandBackground\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#1651aa\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#6794d7\"\n\t},\n\t\"caption1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 14,\n\t\t\"fontSize\": 10,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#fdf6f6\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#bc2f32\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"display\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"largeTitle\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#fafafa\",\n\t\t\"hover\": \"#f0f0f0\",\n\t\t\"pressed\": \"#dbdbdb\",\n\t\t\"selected\": \"#e6e6e6\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#f5f5f5\",\n\t\t\"hover\": \"#ebebeb\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"selected\": \"#e0e0e0\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"hover\": \"#fafafa\",\n\t\t\"pressed\": \"#f5f5f5\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#ebebeb\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#f0f0f0\",\n\t\t\"selected\": \"#fafafa\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#f0f0f0\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#242424\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#424242\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"brandHover\": \"#1651aa\",\n\t\t\"brandPressed\": \"#0e336a\",\n\t\t\"brandSelected\": \"#13458f\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#424242\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"brandHover\": \"#1651aa\",\n\t\t\"brandPressed\": \"#0e336a\",\n\t\t\"brandSelected\": \"#13458f\",\n\t\t\"selected\": \"#424242\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#707070\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#bdbdbd\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#fafafa\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#d1d1d1\",\n\t\t\"hover\": \"#c7c7c7\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#bdbdbd\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#f0f0f0\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#575757\",\n\t\t\"pressed\": \"#4d4d4d\",\n\t\t\"selected\": \"#185abd\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#fdf5fc\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#af33a1\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#fdf6f3\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#c43501\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"subtitle1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtitle2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#f1faf1\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#0e700e\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#359b35\"\n\t},\n\t\"title1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"title1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#fffef5\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#fef7b2\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJvZHkxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJvZHkyXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkyU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDJlMGY0XCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxNjUxYWFcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIixcblx0XHRcImhvdmVyXCI6IFwiIzE2NTFhYVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwZTMzNmFcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzEzNDU4ZlwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2Nzk0ZDdcIlxuXHR9LFxuXHRcImNhcHRpb24xXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTQsXG5cdFx0XCJmb250U2l6ZVwiOiAxMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxNjUxYWFcIixcblx0XHRcInByZXNzZWRcIjogXCIjMGUzMzZhXCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGY2ZjZcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjFiYmJjXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxYmJiY1wiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2JjMmYzMlwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3NTFkMWZcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYzVlNjJcIlxuXHR9LFxuXHRcImRpc3BsYXlcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiA1Mixcblx0XHRcImZvbnRTaXplXCI6IDQwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwibGFyZ2VUaXRsZVwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDUyLFxuXHRcdFwiZm9udFNpemVcIjogNDAsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNlMGUwZTBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ViZWJlYlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmFmYWZhXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmMGYwZjBcIixcblx0XHRcInByZXNzZWRcIjogXCIjZGJkYmRiXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlNmU2ZTZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMGYwZjBcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZhZmFmYVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjBmMGYwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U2ZTZlNlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzYxNjE2MVwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMyNDI0MjRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyNDI0MjRcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQyNDI0MlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiMxNjUxYWFcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMwZTMzNmFcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjMTM0NThmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyNDI0MjRcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzYxNjE2MVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNDI0MjQyXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzQyNDI0MlwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiMxNjUxYWFcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMwZTMzNmFcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjMTM0NThmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiM0MjQyNDJcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzcwNzA3MFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2JkYmRiZFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRPbkJyYW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdGVuY2lsMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U2ZTZlNlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmFmYWZhXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxZDFkMVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjYzdjN2M3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2IzYjNiM1wiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjYmRiZGJkXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UwZTBlMFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZTNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMGYwZjBcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VBY2Nlc3NpYmxlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjE2MTYxXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM1NzU3NTdcIixcblx0XHRcInByZXNzZWRcIjogXCIjNGQ0ZDRkXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VEaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UwZTBlMFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZjVmY1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2VkYmJlN1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWYzM2ExXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNmQyMDY0XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZjZmM1wiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmNGJmYWJcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjRiZmFiXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzQzNTAxXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzdhMjEwMVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwXCJcblx0fSxcblx0XCJzdWJ0aXRsZTFcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyNixcblx0XHRcImZvbnRTaXplXCI6IDIwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjQwMFwiXG5cdH0sXG5cdFwic3VidGl0bGUxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjYsXG5cdFx0XCJmb250U2l6ZVwiOiAyMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcInN1YnRpdGxlMlwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDIyLFxuXHRcdFwiZm9udFNpemVcIjogMTYsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJzdWJ0aXRsZTJTdHJvbmdcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyMixcblx0XHRcImZvbnRTaXplXCI6IDE2LFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwic3VidGxlQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInByZXNzZWRcIjogXCIjZTBlMGUwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlYmViZWJcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxZmFmMVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMGU3MDBlXCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTQ1MDlcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzM1OWIzNVwiXG5cdH0sXG5cdFwidGl0bGUxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMzYsXG5cdFx0XCJmb250U2l6ZVwiOiAyOCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcInRpdGxlMVN0cm9uZ1wiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDM2LFxuXHRcdFwiZm9udFNpemVcIjogMjgsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNjAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudEJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwMDAwMDAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudFN0cm9rZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmVmNVwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVmN2IyXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVmN2IyXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZjdiMlwiXG5cdH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFIn0=\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMWZcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAyNFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"body1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 16,\n\t\t\"fontSize\": 12,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"body2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"body2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 20,\n\t\t\"fontSize\": 14,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"brandBackground\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\",\n\t\t\"selected\": \"#13458f\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#aec6eb\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#d2e0f4\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#aec6eb\",\n\t\t\"hover\": \"#d2e0f4\",\n\t\t\"pressed\": \"#2e6ac5\",\n\t\t\"selected\": \"#d2e0f4\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#185abd\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#6794d7\"\n\t},\n\t\"caption1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 14,\n\t\t\"fontSize\": 10,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#aec6eb\",\n\t\t\"hover\": \"#d2e0f4\",\n\t\t\"pressed\": \"#2e6ac5\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#185abd\",\n\t\t\"hover\": \"#1651aa\",\n\t\t\"pressed\": \"#0e336a\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#3f1011\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"display\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"largeTitle\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 52,\n\t\t\"fontSize\": 40,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#4d4d4d\",\n\t\t\"hover\": \"#5c5c5c\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"selected\": \"#575757\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#424242\",\n\t\t\"hover\": \"#525252\",\n\t\t\"pressed\": \"#383838\",\n\t\t\"selected\": \"#4d4d4d\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#383838\",\n\t\t\"hover\": \"#474747\",\n\t\t\"pressed\": \"#2e2e2e\",\n\t\t\"selected\": \"#424242\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#2e2e2e\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#242424\",\n\t\t\"hover\": \"#333333\",\n\t\t\"pressed\": \"#1a1a1a\",\n\t\t\"selected\": \"#2e2e2e\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#1a1a1a\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#383838\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#e6e6e6\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"brandHover\": \"#d2e0f4\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#d2e0f4\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#cccccc\",\n\t\t\"hover\": \"#e6e6e6\",\n\t\t\"pressed\": \"#e6e6e6\",\n\t\t\"brandHover\": \"#d2e0f4\",\n\t\t\"brandPressed\": \"#2e6ac5\",\n\t\t\"brandSelected\": \"#d2e0f4\",\n\t\t\"selected\": \"#e6e6e6\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#c2c2c2\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#666666\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#4d4d4d\",\n\t\t\"hover\": \"#4d4d4d\",\n\t\t\"pressed\": \"#4d4d4d\",\n\t\t\"selected\": \"#4d4d4d\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#1a1a1a\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#424242\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#8a8a8a\",\n\t\t\"hover\": \"#999999\",\n\t\t\"pressed\": \"#8f8f8f\",\n\t\t\"selected\": \"#949494\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#757575\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#a8a8a8\",\n\t\t\"hover\": \"#b8b8b8\",\n\t\t\"pressed\": \"#adadad\",\n\t\t\"selected\": \"#185abd\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#474747\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#3a1136\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#411200\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"subtitle1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 26,\n\t\t\"fontSize\": 20,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtitle2\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"subtitle2Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 22,\n\t\t\"fontSize\": 16,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#5c5c5c\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"selected\": \"#575757\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#052505\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"title1\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"400\"\n\t},\n\t\"title1Strong\": {\n\t\t\"fontFamily\": \"Segoe UI\",\n\t\t\"fontLineHeight\": 36,\n\t\t\"fontSize\": 28,\n\t\t\"fontWeight\": \"600\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#4c4400\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#817400\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJvZHkxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTYsXG5cdFx0XCJmb250U2l6ZVwiOiAxMixcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJvZHkyXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImJvZHkyU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjAsXG5cdFx0XCJmb250U2l6ZVwiOiAxNCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMTM0NThmXCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDJlMGY0XCJcblx0fSxcblx0XCJicmFuZEJhY2tncm91bmRTdGF0aWNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZWM2ZWJcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMmUwZjRcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZWM2ZWJcIixcblx0XHRcImhvdmVyXCI6IFwiI2QyZTBmNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2QyZTBmNFwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTg1YWJkXCJcblx0fSxcblx0XCJicmFuZFN0cm9rZTJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2Nzk0ZDdcIlxuXHR9LFxuXHRcImNhcHRpb24xXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMTQsXG5cdFx0XCJmb250U2l6ZVwiOiAxMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWVjNmViXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMmU2YWM1XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzE4NWFiZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTY1MWFhXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBlMzM2YVwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzZjEwMTFcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzUxZDFmXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RjNWU2MlwiXG5cdH0sXG5cdFwiZGFuZ2VyQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWJiYmNcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTM3ZDgwXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRpc3BsYXlcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiA1Mixcblx0XHRcImZvbnRTaXplXCI6IDQwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwibGFyZ2VUaXRsZVwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDUyLFxuXHRcdFwiZm9udFNpemVcIjogNDAsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcImhvdmVyXCI6IFwiIzVjNWM1Y1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0MjQyNDJcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzU3NTc1N1wiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNDI0MjQyXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM1MjUyNTJcIixcblx0XHRcInByZXNzZWRcIjogXCIjMzgzODM4XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiM0ZDRkNGRcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzM4MzgzOFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNDc0NzQ3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzJlMmUyZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjNDI0MjQyXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyZTJlMmVcIixcblx0XHRcImhvdmVyXCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyNDI0MjRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzMzMzMzNcIixcblx0XHRcInByZXNzZWRcIjogXCIjMWExYTFhXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyZTJlMmVcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzFhMWExYVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U2ZTZlNlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjZDJlMGY0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2NjY2NjY1wiLFxuXHRcdFwiaG92ZXJcIjogXCIjZTZlNmU2XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2U2ZTZlNlwiLFxuXHRcdFwiYnJhbmRIb3ZlclwiOiBcIiNkMmUwZjRcIixcblx0XHRcImJyYW5kUHJlc3NlZFwiOiBcIiMyZTZhYzVcIixcblx0XHRcImJyYW5kU2VsZWN0ZWRcIjogXCIjZDJlMGY0XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlNmU2ZTZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kNFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyYzJjMlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzY2NjY2NlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcImhvdmVyXCI6IFwiIzRkNGQ0ZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzRkNGQ0ZFwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRPbkJyYW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdGVuY2lsMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzFhMWExYVwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNDI0MjQyXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzhhOGE4YVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjOTk5OTk5XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzhmOGY4ZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjOTQ5NDk0XCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzc1NzU3NVwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZTNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VBY2Nlc3NpYmxlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYThhOGE4XCIsXG5cdFx0XCJob3ZlclwiOiBcIiNiOGI4YjhcIixcblx0XHRcInByZXNzZWRcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMxODVhYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VEaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQ3NDc0N1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzNhMTEzNlwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzZkMjA2NFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTYxYzRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDE2MWM0XCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQxMTIwMFwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3YTIxMDFcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJzdWJ0aXRsZTFcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyNixcblx0XHRcImZvbnRTaXplXCI6IDIwLFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjQwMFwiXG5cdH0sXG5cdFwic3VidGl0bGUxU3Ryb25nXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMjYsXG5cdFx0XCJmb250U2l6ZVwiOiAyMCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI2MDBcIlxuXHR9LFxuXHRcInN1YnRpdGxlMlwiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDIyLFxuXHRcdFwiZm9udFNpemVcIjogMTYsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNDAwXCJcblx0fSxcblx0XCJzdWJ0aXRsZTJTdHJvbmdcIjoge1xuXHRcdFwiZm9udEZhbWlseVwiOiBcIlNlZ29lIFVJXCIsXG5cdFx0XCJmb250TGluZUhlaWdodFwiOiAyMixcblx0XHRcImZvbnRTaXplXCI6IDE2LFxuXHRcdFwiZm9udFdlaWdodFwiOiBcIjYwMFwiXG5cdH0sXG5cdFwic3VidGxlQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM1YzVjNWNcIixcblx0XHRcInByZXNzZWRcIjogXCIjNDI0MjQyXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiM1NzU3NTdcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA1MjUwNVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDk0NTA5XCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU0YjA1NFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTRiMDU0XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM5ZmQ4OWZcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwidGl0bGUxXCI6IHtcblx0XHRcImZvbnRGYW1pbHlcIjogXCJTZWdvZSBVSVwiLFxuXHRcdFwiZm9udExpbmVIZWlnaHRcIjogMzYsXG5cdFx0XCJmb250U2l6ZVwiOiAyOCxcblx0XHRcImZvbnRXZWlnaHRcIjogXCI0MDBcIlxuXHR9LFxuXHRcInRpdGxlMVN0cm9uZ1wiOiB7XG5cdFx0XCJmb250RmFtaWx5XCI6IFwiU2Vnb2UgVUlcIixcblx0XHRcImZvbnRMaW5lSGVpZ2h0XCI6IDM2LFxuXHRcdFwiZm9udFNpemVcIjogMjgsXG5cdFx0XCJmb250V2VpZ2h0XCI6IFwiNjAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudEJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwMDAwMDAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudFN0cm9rZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzRjNDQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZWU2NlwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVlZTY2XCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFIn0=\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "import { PlatformColor } from 'react-native';\n\nimport aliasTokens from '@fluentui-react-native/design-tokens-win32/hc/tokens-aliases.json';\n\nexport const hcAliasTokens = processAliasTokens(aliasTokens);\n\nfunction processAliasTokens(aliasTokens: any) {\n for (const key in aliasTokens) {\n for (const innerKey in aliasTokens[key]) {\n const entry = aliasTokens[key][innerKey];\n if (typeof entry === 'string' && entry.includes('PlatformColor')) {\n const color = entry.substring(14, entry.length - 1);\n // eslint-disable-next-line @react-native/platform-colors\n aliasTokens[key][innerKey] = PlatformColor(color);\n }\n }\n }\n\n return aliasTokens;\n}\n", "import blackAliasTokens from '@fluentui-react-native/design-tokens-win32/black/tokens-aliases.json';\nimport blackShadowTokens from '@fluentui-react-native/design-tokens-win32/black/tokens-shadow.json';\nimport colorfulAliasTokens from '@fluentui-react-native/design-tokens-win32/colorful/tokens-aliases.json';\nimport colorfulShadowTokens from '@fluentui-react-native/design-tokens-win32/colorful/tokens-shadow.json';\nimport darkGrayAliasTokens from '@fluentui-react-native/design-tokens-win32/darkgray/tokens-aliases.json';\nimport darkGrayShadowTokens from '@fluentui-react-native/design-tokens-win32/darkgray/tokens-shadow.json';\nimport hcShadowTokens from '@fluentui-react-native/design-tokens-win32/hc/tokens-shadow.json';\n\nimport { hcAliasTokens } from './highContrast/tokens-alias';\n\nexport function getOfficeAliasTokens(officeTheme: string) {\n if (officeTheme === 'White' || officeTheme === 'Colorful') {\n return colorfulAliasTokens;\n } else if (officeTheme === 'DarkGray') {\n return darkGrayAliasTokens;\n } else if (officeTheme === 'Black') {\n return blackAliasTokens;\n } else if (officeTheme === 'HighContrast') {\n return hcAliasTokens;\n }\n\n return colorfulAliasTokens;\n}\n\nexport function getOfficeShadowTokens(officeTheme: string) {\n if (officeTheme === 'White' || officeTheme === 'Colorful') {\n return colorfulShadowTokens;\n } else if (officeTheme === 'DarkGray') {\n return darkGrayShadowTokens;\n } else if (officeTheme === 'Black') {\n return blackShadowTokens;\n } else if (officeTheme === 'HighContrast') {\n return hcShadowTokens;\n }\n\n return colorfulAliasTokens;\n}\n", "import { memoize } from '@fluentui-react-native/framework-base';\nimport type { AliasColorTokens, ThemeShadowDefinition } from '@fluentui-react-native/theme-types';\nimport { mapPipelineToShadow, mapPipelineToTheme } from '@fluentui-react-native/theming-utils';\n\nimport { getOfficeAliasTokens, getOfficeShadowTokens } from './getOfficeTokens';\n\nfunction createOfficeColorAliasTokensWorker(officeTheme: string): AliasColorTokens {\n const aliasTokens = getOfficeAliasTokens(officeTheme);\n return mapPipelineToTheme(aliasTokens);\n}\n\nexport const createOfficeColorAliasTokens = memoize(createOfficeColorAliasTokensWorker);\n\nfunction createOfficeShadowAliasTokensWorker(officeTheme: string): ThemeShadowDefinition {\n const aliasTokens = getOfficeShadowTokens(officeTheme);\n return mapPipelineToShadow(aliasTokens);\n}\n\nexport const createOfficeShadowAliasTokens = memoize(createOfficeShadowAliasTokensWorker);\n", "var toPropertyKey = require(\"./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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "import type { Palette, OfficePalette } from '@fluentui-react-native/theme-types';\n\nexport function paletteFromOfficeColors(p: OfficePalette): Palette {\n return {\n background: p.Bkg,\n bodyStandoutBackground: p.Bkg,\n bodyFrameBackground: p.Bkg,\n bodyFrameDivider: p.AccentLight,\n bodyText: p.Text,\n bodyTextChecked: p.TextSelected,\n subText: p.TextSecondary,\n bodyDivider: p.AccentLight,\n\n disabledBackground: p.BkgCtlSubtleDisabled,\n disabledText: p.TextCtlSubtleDisabled,\n disabledBodyText: p.TextDisabled,\n\n focusBorder: p.StrokeKeyboard,\n variantBorder: p.AccentOutline,\n\n errorText: p.TextError,\n\n inputBorder: p.StrokeCtlSubtle,\n inputBackground: p.BkgCtlSubtle,\n inputFocusBorderAlt: p.StrokeCtlSubtleKeyboard,\n inputText: p.TextCtlSubtle,\n inputPlaceholderText: p.TextCtlSubtlePlaceholder,\n\n buttonBackground: p.BkgCtl,\n buttonBackgroundChecked: p.BkgCtlSelected,\n buttonBackgroundHovered: p.BkgCtlHover,\n buttonBackgroundPressed: p.BkgCtlPressed,\n buttonBackgroundDisabled: p.BkgCtlDisabled,\n buttonBorder: p.StrokeCtl,\n buttonText: p.TextCtl,\n buttonTextHovered: p.TextCtlHover,\n buttonTextChecked: p.TextCtlSelected,\n buttonTextPressed: p.TextCtlPressed,\n buttonTextDisabled: p.TextCtlDisabled,\n buttonBorderDisabled: p.StrokeCtlDisabled,\n buttonBorderFocused: p.StrokeCtlKeyboard,\n\n primaryButtonBackground: p.BkgCtlEmphasis,\n primaryButtonBackgroundHovered: p.BkgCtlEmphasisHover,\n primaryButtonBackgroundPressed: p.BkgCtlEmphasisPressed,\n primaryButtonBackgroundDisabled: p.BkgCtlEmphasisDisabled,\n primaryButtonBorder: p.StrokeCtlEmphasis,\n primaryButtonBorderFocused: p.StrokeCtlEmphasisKeyboard,\n primaryButtonText: p.TextCtlEmphasis,\n primaryButtonTextHovered: p.TextCtlEmphasisHover,\n primaryButtonTextPressed: p.TextCtlEmphasisPressed,\n primaryButtonTextDisabled: p.TextCtlEmphasisDisabled,\n\n accentButtonBackground: p.BkgCtlEmphasis,\n\n menuBackground: p.Bkg,\n menuDivider: p.AccentLight,\n menuIcon: p.Text,\n menuItemBackgroundHovered: p.BkgHover,\n menuItemBackgroundPressed: p.BkgPressed,\n menuItemText: p.Text,\n menuItemTextHovered: p.TextHover,\n\n listHeaderBackgroundHovered: p.BkgHover,\n listHeaderBackgroundPressed: p.BkgPressed,\n\n actionLink: p.TextActive,\n link: p.TextHyperlink,\n linkHovered: p.TextHyperlinkHover,\n linkPressed: p.TextHyperlinkPressed,\n\n defaultBackground: p.BkgCtl,\n defaultBorder: p.StrokeCtl,\n defaultContent: p.TextCtl,\n defaultIcon: p.TextCtl,\n\n defaultHoveredBackground: p.BkgCtlHover,\n defaultHoveredBorder: p.StrokeCtlHover,\n defaultHoveredContent: p.TextCtlHover,\n defaultHoveredIcon: p.TextCtlHover,\n\n defaultFocusedBackground: p.BkgCtlHover,\n defaultFocusedBorder: p.StrokeCtlKeyboard,\n defaultFocusedContent: p.TextCtlHover,\n defaultFocusedIcon: p.TextCtlHover,\n\n defaultPressedBackground: p.BkgCtlPressed,\n defaultPressedBorder: p.StrokeCtlPressed,\n defaultPressedContent: p.TextCtlPressed,\n defaultPressedIcon: p.TextCtlPressed,\n\n defaultDisabledBackground: p.BkgCtlDisabled,\n defaultDisabledBorder: p.StrokeCtlDisabled,\n defaultDisabledContent: p.TextCtlDisabled,\n defaultDisabledIcon: p.TextCtlDisabled,\n\n ghostBackground: p.Bkg,\n ghostBorder: p.Bkg,\n ghostContent: p.Text,\n ghostIcon: p.Text,\n\n ghostHoveredBackground: p.BkgHover,\n ghostHoveredBorder: p.BkgHover,\n ghostHoveredContent: p.TextHover,\n ghostHoveredIcon: p.TextHover,\n\n ghostFocusedBackground: p.BkgHover,\n ghostFocusedBorder: p.StrokeKeyboard,\n ghostFocusedContent: p.TextHover,\n ghostFocusedIcon: p.TextHover,\n\n ghostPressedBackground: p.BkgPressed,\n ghostPressedBorder: p.BkgPressed,\n ghostPressedContent: p.TextPressed,\n ghostPressedIcon: p.TextPressed,\n\n ghostDisabledBackground: p.Bkg,\n ghostDisabledBorder: p.Bkg,\n ghostDisabledContent: p.TextDisabled,\n ghostDisabledIcon: p.TextDisabled,\n\n brandedBackground: p.BkgCtlEmphasis,\n\n brandedDisabledBorder: p.StrokeCtlEmphasisDisabled,\n\n defaultCheckedBackground: p.BkgCtlSelected,\n defaultCheckedContent: p.TextCtlSelected,\n defaultCheckedHoveredBackground: p.BkgCtlHover,\n defaultCheckedHoveredContent: p.TextCtlHover,\n\n ghostCheckedBackground: p.BkgSelected,\n ghostCheckedContent: p.TextSelected,\n ghostCheckedHoveredBackground: p.BkgHover,\n ghostCheckedHoveredContent: p.TextHover,\n ghostCheckedHoveredBorder: p.StrokeSelectedHover,\n\n ghostSecondaryContent: p.TextSecondary,\n ghostFocusedSecondaryContent: p.TextSecondaryHover,\n ghostHoveredSecondaryContent: p.TextSecondaryHover,\n ghostPressedSecondaryContent: p.TextSecondaryPressed,\n };\n}\n", "import type { OfficePalette, PartialTheme } from '@fluentui-react-native/theme-types';\n\nimport type { OfficeThemingModule } from './NativeModule/officeThemingModule';\nimport { paletteFromOfficeColors } from './paletteFromOfficeColors';\n\ntype Colors = { [key: string]: string };\n\nconst getRamps = (module: OfficeThemingModule): Colors => {\n return Object.keys(module.getConstants().ramps).reduce((total: Colors, colorRamp: string) => {\n return Object.assign(\n total,\n ...module.getConstants().rampNames[colorRamp].map((rampValueName: string, index: number) => {\n return { [rampValueName]: module.getConstants().ramps[colorRamp][index] };\n }),\n );\n }, {});\n};\n\n/**\n * create a partial theme with overrides from the office native module\n *\n * @param module - theming native module, either the real one or a mock implementation\n * @param palette - Office palette colors, if they have been successfully retrieved\n */\nexport function createPartialOfficeTheme(module: OfficeThemingModule, themeName?: string, palette?: OfficePalette): PartialTheme {\n return {\n colors: {\n ...(palette && paletteFromOfficeColors(palette)),\n },\n typography: module.getConstants().fluentTypography,\n host: {\n // Office Semantic Colors\n palette: palette || {},\n // Office Branding Colors\n colors: getRamps(module),\n },\n ...(themeName ? { name: themeName } : undefined),\n };\n}\n", "import { memoize } from '@fluentui-react-native/framework-base';\nimport type { Variants } from '@fluentui-react-native/theme-types';\nimport { mapFontPipelineToTheme } from '@fluentui-react-native/theming-utils';\n\nimport { getOfficeAliasTokens } from './getOfficeTokens';\n\nfunction createFontAliasTokensWorker(): Partial {\n const aliasTokens = getOfficeAliasTokens('Colorful');\n return mapFontPipelineToTheme(aliasTokens);\n}\n\nexport const createFontAliasTokens = memoize(createFontAliasTokensWorker);\n", "import { defaultFluentTheme } from '@fluentui-react-native/default-theme';\nimport type { Typography, Variants } from '@fluentui-react-native/theme-types';\n\nimport { createFontAliasTokens } from './createFontAliasTokens';\n\nexport function win32Typography(): Typography {\n const win32Dict = {\n sizes: defaultFluentTheme.typography.sizes,\n weights: defaultFluentTheme.typography.weights,\n // hard coded until we support new fontFamily format\n families: {\n primary: 'Segoe UI',\n secondary: 'Segoe UI Semibold',\n cursive: 'System',\n monospace: 'Consolas',\n sansSerif: 'System',\n serif: 'System',\n numeric: 'Bahnschrift',\n },\n variants: {\n captionStandard: { face: 'primary', size: 'caption', weight: 'regular' },\n secondaryStandard: { face: 'primary', size: 'secondary', weight: 'regular' },\n secondarySemibold: { face: 'primary', size: 'secondary', weight: 'semiBold' },\n bodyStandard: { face: 'primary', size: 'body', weight: 'regular' },\n bodySemibold: { face: 'primary', size: 'body', weight: 'semiBold' },\n subheaderStandard: { face: 'primary', size: 'subheader', weight: 'regular' },\n subheaderSemibold: { face: 'primary', size: 'subheader', weight: 'semiBold' },\n headerStandard: { face: 'primary', size: 'header', weight: 'regular' },\n headerSemibold: { face: 'primary', size: 'header', weight: 'semiBold' },\n heroStandard: { face: 'primary', size: 'hero', weight: 'regular' },\n heroSemibold: { face: 'primary', size: 'hero', weight: 'semiBold' },\n heroLargeStandard: { face: 'primary', size: 'heroLarge', weight: 'regular' },\n heroLargeSemibold: { face: 'primary', size: 'heroLarge', weight: 'semiBold' },\n ...createFontAliasTokens(),\n } as Variants,\n };\n\n return win32Dict;\n}\n", "import type { OfficePalette } from '@fluentui-react-native/theme-types';\n\nimport type { OfficeThemingModule } from './officeThemingModule';\n\nconst whiteColorsPalette: OfficePalette = {\n Bkg: '#FFFFFF',\n BkgHover: '#D2D2D2',\n BkgPressed: '#B1B1B1',\n BkgSelected: '#C6C6C6',\n BkgSubtle: '#F3F3F3',\n BkgSelectionHighlight: '#737373',\n Text: '#262626',\n TextRest: '#262626',\n TextHover: '#262626',\n TextPressed: '#262626',\n TextSelected: '#262626',\n TextDisabled: '#B1B1B1',\n TextSelectionHighlight: '#FFFFFF',\n TextSecondary: '#666666',\n TextSecondaryRest: '#666666',\n TextSecondaryHover: '#505050',\n TextSecondaryPressed: '#666666',\n TextSecondarySelected: '#666666',\n TextEmphasis: '#D83B01',\n TextEmphasisRest: '#D83B01',\n TextEmphasisHover: '#EA6115',\n TextEmphasisPressed: '#A22C01',\n TextEmphasisSelected: '#D83B01',\n StrokeSelectedHover: '#969696',\n StrokeKeyboard: '#969696',\n StrokeOverRest: '#00000000',\n StrokeOverHover: '#00000000',\n StrokeOverPressed: '#00000000',\n StrokeOverSelectedRest: '#00000000',\n StrokeOverSelectedHover: '#969696',\n StrokeOverSelectedPressed: '#00000000',\n BkgCtl: '#E6E6E6',\n BkgCtlHover: '#FFF7F0',\n BkgCtlPressed: '#FBDFD0',\n BkgCtlSelected: '#E6E6E6',\n BkgCtlDisabled: '#E6E6E6',\n TextCtl: '#262626',\n TextCtlHover: '#262626',\n TextCtlPressed: '#262626',\n TextCtlSelected: '#262626',\n TextCtlDisabled: '#B1B1B1',\n StrokeCtl: '#969696',\n StrokeCtlHover: '#FBDFD0',\n StrokeCtlPressed: '#EA6115',\n StrokeCtlSelected: '#969696',\n StrokeCtlDisabled: '#D2D2D2',\n StrokeCtlKeyboard: '#FBDFD0',\n BkgCtlEmphasis: '#D83B01',\n BkgCtlEmphasisHover: '#F29F71',\n BkgCtlEmphasisPressed: '#A22C01',\n BkgCtlEmphasisDisabled: '#E6E6E6',\n TextCtlEmphasis: '#FFFFFF',\n TextCtlEmphasisHover: '#FFFFFF',\n TextCtlEmphasisPressed: '#FFFFFF',\n TextCtlEmphasisDisabled: '#B1B1B1',\n StrokeCtlEmphasis: '#A22C01',\n StrokeCtlEmphasisHover: '#D83B01',\n StrokeCtlEmphasisPressed: '#A22C01',\n StrokeCtlEmphasisDisabled: '#D2D2D2',\n StrokeCtlEmphasisKeyboard: '#A22C01',\n BkgCtlSubtle: '#FFFFFF',\n BkgCtlSubtleHover: '#FFFFFF',\n BkgCtlSubtlePressed: '#FFFFFF',\n BkgCtlSubtleDisabled: '#F3F3F3',\n BkgCtlSubtleSelectionHighlight: '#7DA3C6',\n TextCtlSubtle: '#262626',\n TextCtlSubtlePlaceholder: '#666666',\n TextCtlSubtleHover: '#262626',\n TextCtlSubtlePressed: '#262626',\n TextCtlSubtleDisabled: '#B1B1B1',\n TextCtlSubtleSelectionHighlight: '#262626',\n StrokeCtlSubtle: '#C6C6C6',\n StrokeCtlSubtleHover: '#969696',\n StrokeCtlSubtlePressed: '#969696',\n StrokeCtlSubtleDisabled: '#C6C6C6',\n StrokeCtlSubtleKeyboard: '#969696',\n TextHyperlink: '#D83B01',\n TextHyperlinkHover: '#A22C01',\n TextHyperlinkPressed: '#6C1E01',\n TextActive: '#262626',\n TextActiveHover: '#EA6115',\n TextActivePressed: '#A22C01',\n TextActiveSelected: '#D83B01',\n StrokeOnlyHover: '#B1B1B1',\n StrokeOnlyPressed: '#737373',\n StrokeOnlySelected: '#969696',\n TextError: '#A50000',\n TextErrorHover: '#A50000',\n TextErrorPressed: '#A50000',\n TextErrorSelected: '#A50000',\n ThumbToggleSwitchOff: '#505050',\n ThumbToggleSwitchOffHover: '#505050',\n ThumbToggleSwitchOffPressed: '#505050',\n ThumbToggleSwitchOffDisabled: '#D2D2D2',\n ThumbToggleSwitchOn: '#FFFFFF',\n ThumbToggleSwitchOnHover: '#FFFFFF',\n ThumbToggleSwitchOnPressed: '#FFFFFF',\n ThumbToggleSwitchOnDisabled: '#FFFFFF',\n BkgToggleSwitchOff: '#FFFFFF',\n BkgToggleSwitchOffHover: '#D2D2D2',\n BkgToggleSwitchOffPressed: '#B1B1B1',\n BkgToggleSwitchOffDisabled: '#FFFFFF',\n BkgToggleSwitchOn: '#D83B01',\n BkgToggleSwitchOnHover: '#EA6115',\n BkgToggleSwitchOnPressed: '#A22C01',\n BkgToggleSwitchOnDisabled: '#D2D2D2',\n StrokeToggleSwitchOff: '#505050',\n StrokeToggleSwitchOffHover: '#505050',\n StrokeToggleSwitchOffPressed: '#505050',\n StrokeToggleSwitchOffDisabled: '#D2D2D2',\n StrokeToggleSwitchOn: '#D83B01',\n StrokeToggleSwitchOnHover: '#EA6115',\n StrokeToggleSwitchOnPressed: '#A22C01',\n StrokeToggleSwitchOnDisabled: '#D2D2D2',\n SliderPrimary: '#444444',\n SliderPrimaryHover: '#D2D2D2',\n SliderPrimaryPressed: '#262626',\n SliderPrimaryDisabled: '#969696',\n SliderSecondary: '#D2D2D2',\n SliderBuffer: '#262626',\n SliderKeyboard: '#444444',\n SliderToolTipBorder: '#C6C6C6',\n SliderToolTipLabel: '#262626',\n SliderToolTipBkg: '#FFFFFF',\n AccentDark: '#C6C6C6',\n AccentLight: '#E6E6E6',\n AccentEmphasis: '#D83B01',\n AccentOutline: '#000000',\n BkgAccentTint: '#D2E0F4',\n TextAccentTint: '#242424',\n TextEmphasis2: '#D83B01',\n BkgCtlSubtleSelected: '#F3F3F3',\n TextCtlSubtleSelected: '#262626',\n BkgCtlEmphasisFocus: '#F3F3F3',\n BkgCtlSubtleFocus: '#F3F3F3',\n BkgCtlSubtleHoverDisabled: '#F3F3F3',\n BkgCtlSubtleSelectedDisabled: '#F3F3F3',\n BkgHeader: '#E6E6E6',\n TextHeader: '#262626',\n};\n\nexport function fallbackGetPalette(pal?: string): OfficePalette {\n return pal === 'TaskPane'\n ? {\n ...whiteColorsPalette,\n Bkg: 'antiquewhite',\n }\n : whiteColorsPalette;\n}\n\nexport const fallbackOfficeModule: OfficeThemingModule = {\n getPalette: fallbackGetPalette,\n getConstants() {\n return {\n ramps: {\n App: ['#F8F8F8', '#EFF6FC', '#BBDAF3', '#55A4E2', '#359EDD', '#0078d7', '#283E4A', '#030C13'],\n FluentGrays: ['#FAF9F8', '#797775', '#11100F'],\n ClassicGrays: ['#FFFFFF', '#737373', '#000000'],\n Sepias: ['#ECE6DE'],\n },\n typography: {},\n fluentTypography: {},\n rampNames: {\n App: ['FakeApp1', 'App2', 'App3', 'App4', 'App5', 'App6', 'App7', 'App8'],\n FluentGrays: ['FakeGray1', 'Gray2', 'Gray3'],\n ClassicGrays: ['FakeGray4', 'Gray5', 'Gray6'],\n Sepias: ['FakeSepia'],\n },\n };\n },\n} as OfficeThemingModule;\n", "// The ThemingModule currently only stores its initial host theme state\n// This state is never updated (it's a constant on the native module)\n// This can cause issues if the host theme has changed and you want to\n// query for the current state of the host theme. (i.e. you're spinning up\n// a new instance of a theme and don't have something already keeping track\n// of changes to the theme).\n// Unfortunately, native changes take a long time to roundtrip,\n// so as a workaround we store a copy of that information instead to last the\n// entire lifetime of the instance.\nlet currentHostThemeSetting: string = '';\n\nexport const getCurrentHostThemeSetting = () => {\n return currentHostThemeSetting;\n};\n\nexport const setCurrentHostThemeSetting = (newHostThemeSetting: string) => {\n currentHostThemeSetting = newHostThemeSetting;\n};\n", "import { NativeEventEmitter, TurboModuleRegistry } from 'react-native';\n\nimport { fallbackGetPalette, fallbackOfficeModule } from './fallbackOfficeModule';\nimport { setCurrentHostThemeSetting } from './hostThemeSetting';\nimport type { OfficeThemingModule } from './officeThemingModule';\n\n/**\n * If we have a userAgent string, let's assume we're web debugging. __DEV__ is for developer bundles. Currently,\n * react-native only polyfills navigator with { product: 'ReactNative', geolocation: NativeModules.Geolocation }\n */\n\nfunction disableGetPalette(): boolean {\n const disabled = __DEV__ && typeof globalThis.navigator !== 'undefined' && globalThis.navigator.userAgent !== undefined;\n disabled && console.warn(console.warn('Web Debugging forces Theming Native Module to fallback to fake color values.'));\n return disabled;\n}\n\nfunction themeGetConstants(): ReturnType {\n return themingModuleConstants;\n}\n\nlet themingModule: OfficeThemingModule = undefined;\nlet themingModuleConstants: ReturnType = undefined;\nlet themingModuleEmitter: NativeEventEmitter = undefined;\nexport function getThemingModule(): [OfficeThemingModule, NativeEventEmitter | undefined] {\n if (!themingModule) {\n const module = TurboModuleRegistry.get('Theming');\n // if the native module exists return the module + an emitter for it\n if (module) {\n if (!isInstantiated) {\n // We need to store the host theme so that when themes are created\n // they can use this information.\n setCurrentHostThemeSetting(module.getConstants().initialHostThemeSetting);\n isInstantiated = true;\n }\n\n // Cache the result of getConstants to avoid continuous Native->JS marshalling\n themingModuleConstants = module.getConstants();\n\n // mock getPalette if it should be disabled\n if (disableGetPalette()) {\n themingModule = { ...module, getPalette: fallbackGetPalette, getConstants: themeGetConstants };\n } else {\n themingModule = { ...module, getPalette: module.getPalette, getConstants: themeGetConstants };\n }\n themingModuleEmitter = new NativeEventEmitter(module);\n } else {\n themingModule = fallbackOfficeModule;\n }\n }\n\n return [themingModule, themingModuleEmitter];\n}\n\nlet isInstantiated = false;\n", "import { createDefaultTheme } from '@fluentui-react-native/default-theme';\nimport { ThemeReference } from '@fluentui-react-native/theme';\nimport type { OfficePalette, Theme, ThemeOptions } from '@fluentui-react-native/theme-types';\n\nimport { createAliasesFromPalette } from './createAliasesFromPalette';\nimport { createBrandedThemeWithAlias } from './createBrandedThemeWithAlias';\nimport { createOfficeColorAliasTokens, createOfficeShadowAliasTokens } from './createOfficeAliasTokens';\nimport { createPartialOfficeTheme } from './createPartialOfficeTheme';\nimport { win32Typography } from './getThemeTypography';\nimport { getThemingModule } from './NativeModule/getThemingModule';\nimport { getCurrentHostThemeSetting, setCurrentHostThemeSetting } from './NativeModule/hostThemeSetting';\nimport type { CxxException, PlatformDefaultsChangedArgs } from './NativeModule/officeThemingModule';\n\nfunction handlePaletteCall(palette: OfficePalette | CxxException): OfficePalette | undefined {\n const exception = palette as CxxException;\n return exception && exception.message !== undefined ? undefined : (palette as OfficePalette);\n}\n\n/**\n * create a theme reference for an Office win32 theme. This will be based upon the standard\n * fluent defaults but will attempt to use the theming native module to get information about\n * the office palette.\n *\n * This theme will also listen for native changes and reload itself when things change on the native side of things\n *\n * @param paletteName - optional specifier for the currently active office palette\n */\nexport function createOfficeTheme(options: ThemeOptions = {}): ThemeReference {\n const [module, emitter] = getThemingModule();\n const ref = { module, emitter, themeName: getCurrentHostThemeSetting() || '' };\n const { paletteName } = options;\n\n const themeRef = new ThemeReference(\n createDefaultTheme(options),\n () => {\n const name = paletteName || 'WhiteColors';\n const palette = handlePaletteCall(ref.module.getPalette(name));\n return createPartialOfficeTheme(module, ref.themeName, palette);\n },\n () => {\n if (!ref.themeName || ref.themeName === '') {\n return {};\n }\n\n return {\n shadows: { ...createOfficeShadowAliasTokens(ref.themeName) },\n typography: win32Typography(),\n };\n },\n () => {\n if (!ref.themeName || ref.themeName === '') {\n return {};\n }\n\n return {\n colors: { ...createOfficeColorAliasTokens(ref.themeName) },\n typography: win32Typography(),\n };\n },\n (theme: Theme) => {\n return createBrandedThemeWithAlias(ref.themeName, theme);\n },\n (theme: Theme) => {\n if (!theme.host.palette) {\n return {};\n }\n\n return {\n ...(paletteName !== undefined && { colors: createAliasesFromPalette(theme.host.palette, ref.themeName === 'HighContrast') }),\n typography: win32Typography(),\n };\n },\n );\n\n // set up the callback for theme changes on the native side\n const onPlatformDefaultsChanged = (args: PlatformDefaultsChangedArgs) => {\n ref.themeName = (args && args.hostThemeSetting) || ref.themeName;\n setCurrentHostThemeSetting(ref.themeName);\n themeRef.invalidate();\n };\n emitter && emitter.addListener('onPlatformDefaultsChanged', onPlatformDefaultsChanged);\n\n // now return the theme reference\n return themeRef;\n}\n", "export { fallbackOfficeModule, fallbackGetPalette } from './fallbackOfficeModule';\nexport { getThemingModule } from './getThemingModule';\nexport type {\n PlatformDefaultsChangedArgs,\n PlatformDefaultsChangedCallback,\n CxxException,\n NativeColorRamps,\n NativeColorNames,\n OfficeThemingModule,\n IEventEmitter,\n} from './officeThemingModule';\n", "export { createOfficeTheme } from './createOfficeTheme';\nexport { createPartialOfficeTheme } from './createPartialOfficeTheme';\nexport { fallbackGetPalette, fallbackOfficeModule, getThemingModule } from './NativeModule/index';\nexport type {\n CxxException,\n IEventEmitter,\n NativeColorNames,\n NativeColorRamps,\n OfficeThemingModule,\n PlatformDefaultsChangedArgs,\n PlatformDefaultsChangedCallback,\n} from './NativeModule/index';\nexport { paletteFromOfficeColors } from './paletteFromOfficeColors';\nexport { createOfficeColorAliasTokens as createOfficeAliasTokens } from './createOfficeAliasTokens';\nexport { createFontAliasTokens } from './createFontAliasTokens';\nexport { createBrandedThemeWithAlias, getCurrentBrandAliasTokens } from './createBrandedThemeWithAlias';\nexport { win32Typography } from './getThemeTypography';\n", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IconType = void 0;\r\nvar IconType;\r\n(function (IconType) {\r\n IconType[IconType[\"Error\"] = 1] = \"Error\";\r\n})(IconType = exports.IconType || (exports.IconType = {}));\r\n//# sourceMappingURL=types.js.map", "module.exports = OfficePlatformGlobal.SVG", "\r\n\r\n \r\n \r\n", "\r\n\r\n\r\n", "module.exports = OfficePlatformGlobal.SDX.StringResources", "{\r\n \"BusinessBarCloseButtonHint\":\"Close Message\",\r\n \"_BusinessBarCloseButtonHint.comment\": \"Accessibility hint for business bar close button.\"\r\n}\r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BusinessBar = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar types_1 = require(\"../types\");\r\nvar alerterror_16_svgx_1 = __importDefault(require(\"../../../../assets/BusinessBar/alerterror.16.svgx\"));\r\nvar close_16_svgx_1 = __importDefault(require(\"../../../../assets/BusinessBar/close.16.svgx\"));\r\nvar strings = require(\"../../../../assets/BusinessBar/strings.resjson\");\r\n// This was intentionally not exported out of the BusinessBar folder. Consumers must use the BusinessBarThemeWrapper to get correct themed results\r\n// so we should not expose BusinessBar to outside consumers.\r\nvar BusinessBar = function (props) {\r\n var businessBarIconStyle = {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: 15,\r\n padding: 5,\r\n };\r\n var _theme = (0, theme_types_1.useTheme)();\r\n var _a = React.useState(false), focusedHyperlink = _a[0], setFocusedHyperlink = _a[1];\r\n var _b = React.useState(false), focusedClose = _b[0], setFocusedClosed = _b[1];\r\n var _c = React.useState(false), hovered = _c[0], setHovered = _c[1];\r\n var _d = React.useState(true), visible = _d[0], setVisible = _d[1];\r\n var getLinkStyle = function () {\r\n return {\r\n color: hovered ? _theme.colors.linkHovered : _theme.colors.link,\r\n textDecorationLine: hovered ? \"underline\" : \"none\",\r\n textAlign: \"center\",\r\n };\r\n };\r\n var onKeyDown = function (ev) {\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n ev.stopPropagation();\r\n props.hyperlinkLink();\r\n }\r\n };\r\n var getPressableStyle = function () {\r\n return {\r\n borderWidth: 2,\r\n borderRadius: 4,\r\n borderColor: focusedHyperlink ? _theme.colors.focusBorder : \"transparent\",\r\n flexGrow: 5,\r\n flexShrink: 1,\r\n };\r\n };\r\n var getViewStyle = function () {\r\n return {\r\n backgroundColor: _theme.colors.background,\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n flexWrap: \"nowrap\",\r\n padding: 10,\r\n };\r\n };\r\n var getCloseButtonStyle = function () {\r\n return {\r\n borderWidth: 2,\r\n borderRadius: 4,\r\n borderColor: focusedClose ? _theme.colors.focusBorder : \"transparent\",\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: 15,\r\n paddingRight: 5,\r\n paddingTop: 5,\r\n };\r\n };\r\n var getTextStyle = function () {\r\n return {\r\n color: _theme.colors.bodyText,\r\n flexWrap: \"wrap\",\r\n fontSize: _theme.typography.sizes.secondary,\r\n fontWeight: _theme.typography.weights.regular,\r\n marginRight: 10,\r\n };\r\n };\r\n var toggleBusinessBarOnKeydown = function (ev) {\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n ev.stopPropagation();\r\n setVisible(!visible);\r\n }\r\n };\r\n var toggleBusinessBarOnClick = function (ev) {\r\n ev.stopPropagation();\r\n setVisible(!visible);\r\n };\r\n if (!visible) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n return (React.createElement(react_native_1.View, { style: getViewStyle() },\r\n props.iconType === types_1.IconType.Error && (React.createElement(react_native_1.View, { style: businessBarIconStyle },\r\n React.createElement(alerterror_16_svgx_1.default, { width: 15, height: 15 }))),\r\n React.createElement(react_native_1.Pressable, __assign({}, {\r\n cursor: \"pointer\",\r\n onKeyDown: onKeyDown,\r\n }, { accessibilityRole: \"link\", style: getPressableStyle(), onPress: props.hyperlinkLink, onHoverIn: function () { return setHovered(true); }, onHoverOut: function () { return setHovered(false); }, onFocus: function () { return setFocusedHyperlink(true); }, onBlur: function () { return setFocusedHyperlink(false); } }),\r\n React.createElement(react_native_1.Text, { style: getTextStyle() },\r\n \" \",\r\n props.primaryTextOfBusinessBar,\r\n React.createElement(react_native_1.Text, { accessibilityRole: \"link\", style: getLinkStyle() }, props.hyperlinkContentText))),\r\n React.createElement(react_native_1.Pressable, __assign({}, {\r\n cursor: \"pointer\",\r\n onKeyDown: toggleBusinessBarOnKeydown,\r\n }, { onPress: toggleBusinessBarOnClick, accessibilityRole: \"button\", accessibilityHint: strings.getString(\"BusinessBarCloseButtonHint\"), style: getCloseButtonStyle(), onFocus: function () { return setFocusedClosed(true); }, onBlur: function () { return setFocusedClosed(false); } }),\r\n React.createElement(close_16_svgx_1.default, { width: 10, height: 10 }))));\r\n};\r\nexports.BusinessBar = BusinessBar;\r\n//# sourceMappingURL=BusinessBar.native.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BusinessBarThemeWrapper = void 0;\r\nvar theme_1 = require(\"@fluentui-react-native/theme\");\r\nvar win32_theme_1 = require(\"@fluentui-react-native/win32-theme\");\r\nvar React = __importStar(require(\"react\"));\r\nvar BusinessBar_1 = require(\"./internal/BusinessBar\");\r\nvar BusinessBarThemeWrapper = function (props) {\r\n return (\r\n // VSO#7230732 This theme will likely break for Mac and we will need to add overrides for the theming to work for Mac\r\n React.createElement(theme_1.ThemeProvider, { theme: new theme_1.ThemeReference((0, win32_theme_1.createOfficeTheme)({ paletteName: \"BusinessBar\" })) },\r\n React.createElement(BusinessBar_1.BusinessBar, __assign({}, props))));\r\n};\r\nexports.BusinessBarThemeWrapper = BusinessBarThemeWrapper;\r\n//# sourceMappingURL=BusinessBarThemeWrapper.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IconType = exports.BusinessBarThemeWrapper = void 0;\r\nvar BusinessBarThemeWrapper_1 = require(\"./BusinessBarThemeWrapper\");\r\nObject.defineProperty(exports, \"BusinessBarThemeWrapper\", { enumerable: true, get: function () { return BusinessBarThemeWrapper_1.BusinessBarThemeWrapper; } });\r\nvar types_1 = require(\"./types\");\r\nObject.defineProperty(exports, \"IconType\", { enumerable: true, get: function () { return types_1.IconType; } });\r\n//# sourceMappingURL=index.js.map", "import type * as React from 'react';\nimport type { PressableProps, ViewProps, ColorValue } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IconProps, IconSourcesType } from '@fluentui-react-native/icon';\nimport type { IFocusable, IPressableState } from '@fluentui-react-native/interactive-hooks';\nimport type { IPressableProps } from '@fluentui-react-native/pressable';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport const buttonName = 'Button';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonInfo extends IPressableState {\n /**\n * Disables the button.\n * @default false\n * @deprecated\n */\n disabled?: boolean;\n\n /**\n * Button start icon.\n */\n startIcon?: boolean;\n\n /**\n * Button text.\n */\n content?: boolean;\n /**\n * End icon.\n */\n endIcon?: boolean;\n}\n\n/*\n * Because state updates are coming from the touchable and will cause a child render the button doesn't use\n * changes in state value to trigger re-render. The values inside inner are effectively mutable and are used\n * for per-component storage\n *\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonState {\n info: IButtonInfo;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens {\n /**\n * The amount of padding between the border and the contents.\n */\n contentPadding?: number | string;\n\n /**\n * The amount of padding between the border and the contents when the Button has focus.\n */\n contentPaddingFocused?: number | string;\n\n /**\n * The icon color.\n */\n iconColor?: ColorValue;\n\n /**\n * The icon color when hovering over the Button.\n */\n iconColorHovered?: ColorValue;\n\n /**\n * The icon color when the Button is being pressed.\n */\n iconColorPressed?: ColorValue;\n\n /**\n * The size of the icon.\n */\n iconSize?: number | string;\n\n /**\n * The weight of the lines used when drawing the icon.\n */\n iconWeight?: number;\n\n /**\n * Text to show on the Button.\n */\n content?: string;\n\n /**\n * Source URL or name of the icon to show on the Button.\n */\n startIcon?: IconSourcesType;\n endIcon?: IconSourcesType;\n wrapperBorderColor?: ColorValue;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonProps extends Omit {\n /**\n * Text to show on the Button.\n */\n content?: string;\n\n /**\n * Source URL or name of the start icon to show on the Button.\n * @deprecated Use startIcon instead.\n */\n icon?: IconSourcesType;\n /**\n * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n /**\n * A callback to call on button click event\n */\n onClick?: () => void;\n\n testID?: string;\n tooltip?: string;\n startIcon?: IconSourcesType;\n endIcon?: IconSourcesType;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonSlotProps {\n root: React.PropsWithRef;\n ripple?: PressableProps; // This slot exists to enable ripple-effect in android. It does not affect other platforms.\n stack: ViewProps;\n borderWrapper: ViewProps;\n startIcon: IconProps;\n content: ITextProps;\n endIcon: IconProps;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport type IButtonRenderData = IRenderData;\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport interface IButtonType {\n props: IButtonProps;\n tokens: IButtonTokens;\n slotProps: IButtonSlotProps;\n state: IButtonState;\n}\n", "import type { ImageProps, TextProps, ViewProps } from 'react-native-macos';\n\nimport type { IFilterMask } from './filter.types';\n\n// export core interface types\nexport type ITextProps = TextProps;\nexport type IViewProps = ViewProps;\nexport type IImageProps = ImageProps;\n\nconst _viewMask: IFilterMask = {\n children: true,\n acceptsFirstMouse: true,\n accessibilityActions: true,\n accessibilityElementsHidden: true,\n accessibilityHint: true,\n accessibilityIgnoresInvertColors: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLanguage: true,\n accessibilityLiveRegion: true,\n accessibilityRole: true,\n accessibilityState: true,\n accessibilityValue: true,\n accessibilityViewIsModal: true,\n accessible: true,\n allowsVibrancy: true,\n collapsable: true,\n draggedTypes: true,\n enableFocusRing: true,\n focusable: true,\n hasTVPreferredFocus: false,\n hitSlop: true,\n id: true,\n importantForAccessibility: true,\n isTVSelectable: false,\n keyDownEvents: true,\n keyUpEvents: true,\n nativeID: true,\n needsOffscreenAlphaCompositing: true,\n onAccessibilityAction: true,\n onAccessibilityEscape: true,\n onAccessibilityTap: true,\n onDragEnter: true,\n onDragLeave: true,\n onDrop: true,\n onKeyDown: true,\n onKeyUp: true,\n onLayout: true,\n onMagicTap: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMoveShouldSetResponder: true,\n onMoveShouldSetResponderCapture: true,\n onPointerCancel: true,\n onPointerCancelCapture: true,\n onPointerDown: true,\n onPointerDownCapture: true,\n onPointerEnter: true,\n onPointerEnterCapture: true,\n onPointerLeave: true,\n onPointerLeaveCapture: true,\n onPointerMove: true,\n onPointerMoveCapture: true,\n onPointerUp: true,\n onPointerUpCapture: true,\n onResponderEnd: true,\n onResponderGrant: true,\n onResponderMove: true,\n onResponderReject: true,\n onResponderRelease: true,\n onResponderStart: true,\n onResponderTerminate: true,\n onResponderTerminationRequest: true,\n onStartShouldSetResponder: true,\n onStartShouldSetResponderCapture: true,\n onTouchCancel: true,\n onTouchEnd: true,\n onTouchEndCapture: true,\n onTouchMove: true,\n onTouchStart: true,\n passthroughAllKeyEvents: true,\n pointerEvents: true,\n removeClippedSubviews: true,\n renderToHardwareTextureAndroid: false,\n role: true,\n shouldRasterizeIOS: true,\n style: true,\n tabIndex: true,\n testID: true,\n tvParallaxMagnification: false,\n tvParallaxProperties: false,\n tvParallaxShiftDistanceX: false,\n tvParallaxShiftDistanceY: false,\n tvParallaxTiltAngle: false,\n validKeysDown: true,\n validKeysUp: true,\n 'aria-busy': true,\n 'aria-checked': true,\n 'aria-disabled': true,\n 'aria-expanded': true,\n 'aria-hidden': true,\n 'aria-label': true,\n 'aria-labelledby': true,\n 'aria-live': true,\n 'aria-modal': true,\n 'aria-selected': true,\n 'aria-valuemax': true,\n 'aria-valuemin': true,\n 'aria-valuenow': true,\n 'aria-valuetext': true,\n // Use spread for mac specific properties until rn-macos TS type definitions are fixed\n ...{\n onBlur: true,\n onFocus: true,\n onPreferredScrollerStyleDidChange: true,\n tooltip: true,\n mouseDownCanMoveWindow: true,\n },\n};\n\nconst _textMask: IFilterMask = {\n accessibilityActions: true,\n accessibilityElementsHidden: true,\n accessibilityHint: true,\n accessibilityIgnoresInvertColors: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLanguage: true,\n accessibilityLiveRegion: true,\n accessibilityRole: true,\n accessibilityState: true,\n accessibilityValue: true,\n accessibilityViewIsModal: true,\n accessible: true,\n adjustsFontSizeToFit: true,\n allowFontScaling: true,\n android_hyphenationFrequency: false,\n children: true,\n dataDetectorType: true,\n disabled: true,\n dynamicTypeRamp: true,\n ellipsizeMode: true,\n focusable: true,\n id: true,\n importantForAccessibility: true,\n lineBreakMode: true,\n lineBreakStrategyIOS: true,\n maxFontSizeMultiplier: true,\n minimumFontScale: true,\n nativeID: true,\n numberOfLines: true,\n onAccessibilityAction: true,\n onAccessibilityEscape: true,\n onAccessibilityTap: true,\n onLayout: true,\n onLongPress: true,\n onMagicTap: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onPress: true,\n onPressIn: true,\n onPressOut: true,\n onTextLayout: true,\n role: true,\n selectable: true,\n selectionColor: true,\n style: true,\n suppressHighlighting: true,\n testID: true,\n textBreakStrategy: true,\n 'aria-busy': true,\n 'aria-checked': true,\n 'aria-disabled': true,\n 'aria-expanded': true,\n 'aria-hidden': true,\n 'aria-label': true,\n 'aria-labelledby': true,\n 'aria-live': true,\n 'aria-modal': true,\n 'aria-selected': true,\n 'aria-valuemax': true,\n 'aria-valuemin': true,\n 'aria-valuenow': true,\n 'aria-valuetext': true,\n // Use spread for mac specific properties until rn-macos TS type definitions are fixed\n ...{\n enableFocusRing: true,\n tooltip: true,\n },\n};\n\nconst _imageMask: IFilterMask = {\n accessibilityActions: true,\n accessibilityElementsHidden: true,\n accessibilityHint: true,\n accessibilityIgnoresInvertColors: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLanguage: true,\n accessibilityLiveRegion: true,\n accessibilityRole: true,\n accessibilityState: true,\n accessibilityValue: true,\n accessibilityViewIsModal: true,\n accessible: true,\n alt: true,\n blurRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n borderRadius: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n capInsets: true,\n children: true,\n crossOrigin: true,\n defaultSource: true,\n fadeDuration: true,\n height: true,\n id: true,\n importantForAccessibility: true,\n loadingIndicatorSource: true,\n nativeID: true,\n onAccessibilityAction: true,\n onAccessibilityEscape: true,\n onAccessibilityTap: true,\n onError: true,\n onLayout: true,\n onLoad: true,\n onLoadEnd: true,\n onLoadStart: true,\n onMagicTap: true,\n onPartialLoad: true,\n onProgress: true,\n progressiveRenderingEnabled: true,\n referrerPolicy: true,\n resizeMethod: true,\n resizeMode: true,\n role: true,\n source: true,\n src: true,\n srcSet: true,\n style: true,\n testID: true,\n tintColor: true,\n tooltip: true,\n width: true,\n 'aria-busy': true,\n 'aria-checked': true,\n 'aria-disabled': true,\n 'aria-expanded': true,\n 'aria-hidden': true,\n 'aria-label': true,\n 'aria-labelledby': true,\n 'aria-live': true,\n 'aria-modal': true,\n 'aria-selected': true,\n 'aria-valuemax': true,\n 'aria-valuemin': true,\n 'aria-valuenow': true,\n 'aria-valuetext': true,\n};\n\nexport function filterViewProps(propName: string): boolean {\n return _viewMask[propName];\n}\n\nexport function filterTextProps(propName: string): boolean {\n return _textMask[propName];\n}\n\nexport function filterImageProps(propName: string): boolean {\n return _imageMask[propName];\n}\n", "export { filterImageProps, filterTextProps, filterViewProps } from './adapters';\nexport type { IImageProps, ITextProps, IViewProps } from './adapters';\n", "import type { ColorValue } from 'react-native';\n\nimport type { Theme, ThemeColorDefinition } from '@fluentui-react-native/theme-types';\n\nimport type { OperationSet } from './token.types';\n\nexport interface IForegroundColorTokens {\n color?: ColorValue;\n}\n\nexport const getPaletteFromTheme = (theme: Theme): ThemeColorDefinition => {\n return theme.colors;\n};\n\nexport const foregroundColorTokens: OperationSet = [{ source: 'color', lookup: getPaletteFromTheme }];\n\nexport interface IBackgroundColorTokens {\n backgroundColor?: ColorValue;\n}\n\nexport const backgroundColorTokens: OperationSet = [\n { source: 'backgroundColor', lookup: getPaletteFromTheme },\n];\n\nexport type IColorTokens = IForegroundColorTokens & IBackgroundColorTokens;\nexport const colorTokens = [...foregroundColorTokens, ...backgroundColorTokens];\n", "import type { ViewStyle, TextStyle, ImageStyle } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/theme-types';\n\nexport type TokenBuilder = {\n from: (tokens: TTokens, theme: Theme) => ViewStyle | TextStyle | ImageStyle;\n keys: (keyof TTokens)[];\n};\n\nexport function tokenBuilder(...keys: (keyof TTokens)[]): TokenBuilder {\n const from = (tokens: TTokens) => {\n const style = {};\n keys\n .filter((key) => tokens[key] !== undefined)\n .forEach((key) => {\n style[key as string] = tokens[key];\n });\n return style;\n };\n return { from, keys };\n}\n", "import type { ViewStyle, ColorValue, AnimatableNumericValue } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/theme-types';\n\nimport { getPaletteFromTheme } from './color-tokens';\nimport type { OperationSet } from './token.types';\nimport { tokenBuilder } from './tokenBuilder';\n\nexport interface IBorderTokens {\n borderColor?: ColorValue;\n borderWidth?: number;\n borderRadius?: AnimatableNumericValue;\n borderStyle?: ViewStyle['borderStyle'];\n}\n\nexport const borderTokens: OperationSet = [\n { source: 'borderColor', lookup: getPaletteFromTheme },\n { source: 'borderWidth' },\n { source: 'borderRadius' },\n { source: 'borderStyle' },\n];\n\nexport const borderStyles = tokenBuilder('borderColor', 'borderRadius', 'borderStyle', 'borderWidth');\n", "import type { StyleFactoryFunction, StyleFactoryFunctionRaw } from './token.types';\n\n/**\n * Helper to make it easy to create a style factory function. Function statics are super convenient\n * but kind of annoying to set up\n *\n * @param fn - function to decorate with keys\n * @param keys - keys to append as a static to the function\n */\nexport function styleFunction(\n fn: StyleFactoryFunctionRaw,\n keys: (keyof TTokens)[],\n): StyleFactoryFunction {\n (fn as StyleFactoryFunction)._keys = keys;\n return fn as StyleFactoryFunction;\n}\n", "import type { TextProps, TextStyle } from 'react-native';\n\nimport type { ITextProps } from '@fluentui-react-native/adapters';\nimport type { Theme, Typography } from '@fluentui-react-native/theme-types';\n\nimport { styleFunction } from './token.function';\nimport type { TokenBuilder } from './tokenBuilder';\n\nexport interface FontVariantTokens {\n variant?: keyof Typography['variants'];\n}\n\nexport interface FontStyleTokens {\n fontFamily?: keyof Typography['families'] | TextStyle['fontFamily'];\n fontSize?: keyof Typography['sizes'] | TextStyle['fontSize'];\n fontWeight?: keyof Typography['weights'] | TextStyle['fontWeight'];\n fontLineHeight?: TextStyle['lineHeight'];\n fontLetterSpacing?: TextStyle['letterSpacing'];\n fontStyle?: TextStyle['fontStyle'];\n // Props below are used on iOS only\n fontDynamicTypeRamp?: TextProps['dynamicTypeRamp'];\n fontMaximumSize?: number;\n}\n\nexport interface FontDecorationTokens {\n textDecorationLine?: TextStyle['textDecorationLine'];\n}\n\nexport type FontTokens = FontStyleTokens & FontVariantTokens & FontDecorationTokens;\n\nexport const fontStyles: TokenBuilder = {\n from: (\n {\n fontDynamicTypeRamp,\n fontFamily,\n fontLetterSpacing,\n fontLineHeight,\n fontMaximumSize,\n fontSize,\n fontStyle,\n fontWeight,\n textDecorationLine,\n variant,\n }: FontTokens,\n { typography }: Theme,\n ) => {\n const { families, sizes, weights, variants } = typography;\n if (\n fontDynamicTypeRamp !== undefined ||\n fontFamily !== undefined ||\n fontLetterSpacing !== undefined ||\n fontLineHeight !== undefined ||\n fontMaximumSize !== undefined ||\n fontSize !== undefined ||\n fontWeight !== undefined ||\n variant !== undefined\n ) {\n return {\n fontFamily: families[fontFamily] ?? fontFamily ?? families[variants[variant]?.face] ?? variants[variant]?.face,\n fontSize: sizes[fontSize] ?? fontSize ?? sizes[variants[variant]?.size] ?? variants[variant]?.size,\n fontStyle: fontStyle,\n fontWeight: weights[fontWeight] ?? fontWeight ?? weights[variants[variant]?.weight] ?? variants[variant]?.weight,\n lineHeight: fontLineHeight ?? variants[variant]?.lineHeight,\n letterSpacing: fontLetterSpacing ?? variants[variant]?.letterSpacing,\n dynamicTypeRamp: fontDynamicTypeRamp ?? variants[variant]?.dynamicTypeRamp,\n maximumFontSize: fontMaximumSize,\n textDecorationLine,\n };\n }\n\n return {};\n },\n keys: [\n 'fontDynamicTypeRamp',\n 'fontFamily',\n 'fontLineHeight',\n 'fontLetterSpacing',\n 'fontMaximumSize',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'variant',\n 'textDecorationLine',\n ],\n};\n\nfunction _buildTextStyles(tokens: FontTokens, theme: Theme): ITextProps {\n return {\n style: fontStyles.from(tokens, theme),\n };\n}\n\nexport const textTokens = styleFunction(_buildTextStyles, fontStyles.keys);\n", "import type { ViewStyle } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/theme-types';\n\nimport type { OperationSet } from './token.types';\nimport { tokenBuilder } from './tokenBuilder';\n\nexport interface LayoutTokens {\n width?: ViewStyle['width'];\n height?: ViewStyle['height'];\n minWidth?: ViewStyle['minWidth'];\n maxWidth?: ViewStyle['maxWidth'];\n minHeight?: ViewStyle['minHeight'];\n maxHeight?: ViewStyle['maxHeight'];\n padding?: ViewStyle['padding'];\n paddingHorizontal?: ViewStyle['paddingHorizontal'];\n paddingVertical?: ViewStyle['paddingVertical'];\n paddingStart?: ViewStyle['paddingStart'];\n paddingEnd?: ViewStyle['paddingEnd'];\n}\n\nexport const layoutTokens: OperationSet = [\n { source: 'width' },\n { source: 'height' },\n { source: 'minWidth' },\n { source: 'maxWidth' },\n { source: 'minHeight' },\n { source: 'maxHeight' },\n { source: 'padding' },\n { source: 'paddingHorizontal' },\n { source: 'paddingVertical' },\n { source: 'paddingStart' },\n { source: 'paddingEnd' },\n];\n\nexport const layoutStyles = tokenBuilder(\n 'width',\n 'height',\n 'minWidth',\n 'maxWidth',\n 'minHeight',\n 'maxHeight',\n 'padding',\n 'paddingHorizontal',\n 'paddingVertical',\n 'paddingStart',\n 'paddingEnd',\n);\n", "import type { ColorValue } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/theme-types';\n\nimport type { OperationSet } from './token.types';\nimport { tokenBuilder } from './tokenBuilder';\n\nexport interface IShadowTokens {\n shadowColor?: ColorValue;\n shadowOffset?: {\n width: number;\n height: number;\n };\n shadowOpacity?: number;\n shadowRadius?: number;\n elevation?: number;\n}\n\nexport const shadowTokens: OperationSet = [\n { source: 'shadowColor' },\n { source: 'shadowOffset' },\n { source: 'shadowOpacity' },\n { source: 'shadowRadius' },\n { source: 'elevation' },\n];\n\nexport const shadowStyles = tokenBuilder('shadowColor', 'shadowOffset', 'shadowOpacity', 'shadowRadius');\n", "export { borderStyles, borderTokens } from './border-tokens';\nexport type { IBorderTokens } from './border-tokens';\nexport { backgroundColorTokens, colorTokens, foregroundColorTokens, getPaletteFromTheme } from './color-tokens';\nexport type { IBackgroundColorTokens, IColorTokens, IForegroundColorTokens } from './color-tokens';\nexport { fontStyles, textTokens } from './text-tokens';\nexport type { FontDecorationTokens, FontStyleTokens, FontTokens, FontVariantTokens } from './text-tokens';\nexport { layoutStyles, layoutTokens } from './layout-tokens';\nexport type { LayoutTokens } from './layout-tokens';\nexport { shadowStyles, shadowTokens } from './shadow-tokens';\nexport type { IShadowTokens } from './shadow-tokens';\nexport { tokenBuilder } from './tokenBuilder';\nexport type { TokenBuilder } from './tokenBuilder';\nexport type { LookupThemePart, OperationSet, StyleFactoryOperation, StyleFactoryFunction, StyleFactoryFunctionRaw } from './token.types';\nexport { styleFunction } from './token.function';\n", "import * as React from 'react';\n\nimport { mergeProps } from '@fluentui-react-native/framework-base';\n\nimport type { SlotFn, NativeReactType } from '@fluentui-react-native/framework-base';\nimport type { ComposableFunction, StagedRender } from '@fluentui-react-native/framework-base';\n\n/**\n *\n * @param slot - component which may or may not be built using the staged pattern\n * @returns - the staged function or undefined\n */\nfunction getStagedRender(slot: NativeReactType | ComposableFunction): StagedRender | undefined {\n return (typeof slot === 'function' && (slot as ComposableFunction)._staged) || undefined;\n}\n\n/**\n * useSlot hook function, allows authoring against pluggable slots as well as allowing components to be called as functions rather than\n * via createElement if they support it.\n *\n * @param component - any kind of component that can be rendered as part of the tree\n * @param props - props, particularly the portion that includes styles, that should be passed to the component. These will be merged with what are specified in the JSX tree\n * @param filter - optional filter that will prune the props before forwarding to the component\n * @returns\n */\nexport function useSlot(\n component: NativeReactType | ComposableFunction,\n props: TProps,\n filter?: (propName: string) => boolean,\n): React.FunctionComponent {\n // some types to make things cleaner\n type ResultHolder = { result: React.FunctionComponent | TProps };\n type MemoTuple = [SlotFn, ResultHolder];\n\n // extract the staged component function if that pattern is being used, will be undefined if it is a standard component\n const stagedComponent = getStagedRender(component);\n\n // build the secondary processing function and the result holder, done via useMemo so the function identity stays the same. Rebuilding the closure every time would invalidate render\n const [fn, results] = React.useMemo(() => {\n // create a holder object so values can be passed to the closure\n const resultHolder = {} as ResultHolder;\n\n // create a function that is in the right format for rendering in JSX/TSX, this has children split out\n const slotFn: SlotFn = (extraProps: TProps, ...children: React.ReactNode[]) => {\n const result = resultHolder.result;\n\n // result is either a function (if a staged component) or a set of props passed to useSlot (and sent here via resultHolder)\n let props: TProps = typeof result === 'function' ? extraProps : mergeProps(result, extraProps);\n\n // if we have a filter specified, run it creating a prop collection of { [key]: undefined } which will end up deleting the values via mergeStyles\n const propsToRemove = filter ? Object.keys(props).filter((key) => !filter(key)) : undefined;\n if (propsToRemove?.length > 0) {\n props = mergeProps(props, Object.assign({}, ...propsToRemove.map((prop) => ({ [prop]: undefined }))) as unknown as TProps);\n }\n\n // now if result was a function then call it directly, if not go through the standard React.createElement process\n return typeof result === 'function'\n ? (result as React.FunctionComponent)(props, ...children)\n : React.createElement(component, props, ...children);\n };\n // mark the slotFn so that withSlots knows to handle it differently\n slotFn._canCompose = true;\n return [slotFn, resultHolder];\n }, [component, filter]);\n\n // if it is a staged component executre the first part with the props, otherwise just remember the props\n results.result = stagedComponent ? stagedComponent(props) : props;\n\n // return the function\n return fn;\n}\n", "export { useSlot } from './useSlot';\n\n// re-export functions and types from framework-base that used to be here to not break existing imports\nexport { renderSlot, stagedComponent, withSlots } from '@fluentui-react-native/framework-base';\nexport type { ComposableFunction, FinalRender, NativeReactType, SlotFn, StagedRender } from '@fluentui-react-native/framework-base';\n", "import type { ComposableFunction, SlotFn, NativeReactType } from '@fluentui-react-native/framework-base';\nimport { useSlot } from '@fluentui-react-native/use-slot';\n\n// type AsObject = T extends object ? T : never\n\n/**\n * Signature for the use styling hook\n */\ntype UseStyling = (...props: unknown[]) => TSlotProps;\n\nexport type Slots = { [K in keyof TSlotProps]: SlotFn };\n\nexport type UseSlotOptions = {\n slots: { [K in keyof TSlotProps]: NativeReactType | ComposableFunction };\n filters?: { [K in keyof TSlotProps]?: (propName: string) => boolean };\n useStyling?: TSlotProps | GetSlotProps;\n};\n\nexport type GetSlotProps = (...args: any[]) => TSlotProps;\n\nexport type UseSlotsBase = (...args: any[]) => Slots;\n\nexport function buildUseSlots(options: UseSlotOptions): UseSlotsBase {\n const { slots, filters = {}, useStyling } = options;\n return (...args: any[]) => {\n // get the baseline slot props to render with the slots\n const slotProps: TSlotProps =\n typeof useStyling === 'function' ? (useStyling as UseStyling)(...args) : ((useStyling || {}) as TSlotProps);\n\n // build up a set of slots closures and store them in props\n const builtSlots: Slots = {} as Slots;\n\n // for each slot go through and either cache the slot props or call part one render if it is staged\n Object.keys(slots).forEach((slotName) => {\n builtSlots[slotName] = useSlot(slots[slotName], slotProps[slotName], filters[slotName]);\n });\n\n // return the prebuilt closures, these will have internal references to state.results\n return builtSlots;\n };\n}\n", "export { buildUseSlots } from './buildUseSlots';\nexport type { GetSlotProps, Slots, UseSlotOptions, UseSlotsBase } from './buildUseSlots';\n", "import type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\n\nexport function applyPropsToTokens(\n props: TProps,\n tokens: TTokens,\n cache: GetTypedMemoValue,\n keys: (keyof TTokens)[],\n): [TTokens, GetTypedMemoValue] {\n for (const key of keys) {\n const sourceValue = props[key as string];\n const setValue = sourceValue === tokens[key] ? undefined : sourceValue;\n [tokens, cache] = cache(() => (setValue === undefined ? tokens : { ...tokens, [key]: setValue }), [setValue]);\n }\n return [tokens, cache];\n}\n", "import { immutableMerge } from '@fluentui-react-native/framework-base';\nimport type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\n\n/**\n * alternatively look them up with a passed in function\n */\nexport type HasLayer = (name: string) => boolean;\n\n/**\n * Apply token layers, building them up applied layer by applied layer, using the cache to store intermediate\n * values\n *\n * @param tokens - input tokens which may have layers to apply\n * @param states - array of states to check for, ordered by precedence\n * @param subCache - cache scoped to the root object with no layers applied\n * @param hasLayer - a function which returns whether a given layer should be applied\n */\nexport function applyTokenLayers(\n tokens: TTokens,\n states: string[],\n subCache: GetTypedMemoValue,\n hasLayer: HasLayer,\n): [TTokens, GetTypedMemoValue] {\n type TokensAndCache = { tokens: TTokens; subCache: GetTypedMemoValue };\n let final: TokensAndCache = { tokens, subCache };\n if (states && states.length > 0) {\n // now walk the overrides that are set, merging in props, caching results, and getting a new sub cache\n final = states\n .filter((val) => hasLayer(val))\n .reduce((previous: TokensAndCache, layerName: string) => {\n const layer = previous.tokens[layerName];\n const [tokens, subCache] = previous.subCache(\n () => (layer && typeof layer === 'object' ? immutableMerge(previous.tokens, layer) : previous.tokens),\n [layer],\n );\n return { tokens, subCache };\n }, final);\n }\n return [final.tokens, final.subCache];\n}\n", "import { immutableMerge } from '@fluentui-react-native/framework-base';\nimport type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\nimport { getMemoCache } from '@fluentui-react-native/framework-base';\n\n/** A function to generate tokens based on a theme */\nexport type TokensFromTheme = (theme: TTheme) => TTokens;\n\n/**\n * Types of tokens, can be:\n * - string - will lookup the name in the theme\n * - Tokens - will merge the tokens in directly\n * - Function - will run against the theme once for each unique theme encountered\n */\nexport type TokenSettings = string | TTokens | TokensFromTheme;\n\n/**\n * The main signature of a useTokens hook is to take the theme and produce a set of resolved tokens,\n * as well as a sub-cache, specific to this particular theme, that can be used for caching various styles\n * or values that are theme specific\n */\nexport type UseTokensCore = (theme: TTheme) => [TTokens, GetTypedMemoValue];\n\n/**\n * The full signature also includes a customize function that returns an updated version of useTokens\n * that captures both the previous values, and layers in the new values specified\n */\nexport type UseTokens = UseTokensCore & {\n customize: (...tokens: TokenSettings[]) => UseTokens;\n};\n\n/**\n * Helper function that knows how to try to look up token information from the theme\n */\nexport type GetComponentInfo = (theme: TTheme, name: string) => TTokens | TokensFromTheme;\n\n/**\n * Tokens are defined as either:\n * TTokens - an object\n * string - a name to look up in the theme\n * function - a function to run against the theme to produce tokens\n *\n * This function maps any of these types into a specific TTokens object. A string is first lookup up in the theme, returning a function\n * or object. If the type is a function this will be invoked with the theme to generate the tokens object.\n *\n * @param tokenEntry - token entry to start with\n * @param theme - theme to use for queries\n * @param getComponentInfo - helper to use to lookup the component in the theme\n */\nfunction mapToTokens(\n tokenEntry: TTokens | string | TokensFromTheme,\n theme: TTheme,\n getComponentInfo: GetComponentInfo | undefined,\n): TTokens {\n if (typeof tokenEntry === 'string') {\n tokenEntry = (getComponentInfo && (getComponentInfo(theme, tokenEntry) as TTokens)) || ({} as TTokens);\n }\n if (typeof tokenEntry === 'function') {\n tokenEntry = (tokenEntry as TokensFromTheme)(theme);\n }\n return tokenEntry;\n}\n\n/**\n * Construct a useStyling hook which returns styled slot props based on props and tokens defined in options and in the theme\n *\n * @param options - options which drive behavior for the generated styling hook\n * @param themeHelper - injected theme functionality\n */\nexport function buildUseTokens(\n getComponentInfo: GetComponentInfo | undefined,\n ...tokens: TokenSettings[]\n): UseTokens {\n // create a cache instance for use in this particular call to buildUseTokens\n const cache = getMemoCache();\n\n // the core function simply merges layers together, looking up component definitions in the theme as well as executing any\n // theme functions. This turns the tokens into an array of token objects that then get merged together\n const useTokensCore = (theme: TTheme) => {\n // get the base styles all merged together, these will only depend on internal tokens and theme\n return cache(() => immutableMerge(...tokens.map((value) => mapToTokens(value, theme, getComponentInfo))), [theme]);\n };\n\n // attach a customize function to generate a new use\n useTokensCore.customize = (...newTokens: TokenSettings[]) => {\n const mergedTokens = [...tokens, ...newTokens];\n return buildUseTokens(getComponentInfo, ...mergedTokens);\n };\n\n return useTokensCore;\n}\n", "import type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\n\n/**\n * Take a set of tokens (and a memo-cache) and apply changes to those tokens from an additional set of tokens. Only keys which are\n * not undefined will be applied and if no changes are detected the token object will be unchanged.\n *\n * @param tokens - base set of tokens to apply changes to, this will not be modified\n * @param cache - cache corresponding to this set of tokens\n * @param patchValues - new values to apply, values will be obtained via keys in the object\n * @returns - a tuple consisting of a new tokens object and a new memo-cache\n */\nexport function patchTokens(\n tokens: TTokens,\n cache: GetTypedMemoValue,\n patchValues: TTokens,\n): [TTokens, GetTypedMemoValue] {\n // reduce the patch values to the set of keys that are defined, and sort them to ensure consistent ordering\n const keys = Object.keys(patchValues)\n .filter((v) => patchValues[v] !== undefined)\n .sort();\n\n // for each key get an updated tokens collection based on key + value. Value alone isn't sufficient as the values\n // are not necessarily unique. i.e. { a: 'blue' } and { b: 'blue' } would cache to the same without the key\n for (const key of keys) {\n [tokens, cache] = cache(() => ({ ...tokens, [key]: patchValues[key] }), [key, patchValues[key]]);\n }\n\n // return the updated tokens and cache (if there were any keys applied)\n return [tokens, cache];\n}\n", "export { applyPropsToTokens } from './applyPropsToTokens';\nexport { applyTokenLayers } from './applyTokenLayers';\nexport type { HasLayer } from './applyTokenLayers';\nexport { buildUseTokens } from './buildUseTokens';\nexport type { GetComponentInfo, TokenSettings, TokensFromTheme, UseTokens, UseTokensCore } from './buildUseTokens';\nexport { customizable } from './customizable';\nexport type { CustomizableComponent, InjectableComponent } from './customizable';\nexport { patchTokens } from './patchTokens';\n", "import type { GetMemoValue } from '@fluentui-react-native/framework-base';\n\n/**\n * Informs the framework of any tokens that also appear as props for the component.\n * - 'none' | undefined : this means no properties should be treated as tokens, the tokens that will be passed in to buildProps\n * will not be patched from props. This also means that for a given theme + state the tokens will not\n * change. As a result this is the most efficient mode.\n * - 'all' : treat all props as tokens. Props will be spread into the tokens before the slot functions are called\n * - array of keys : this is the discrete list of tokens which also appear in props\n */\nexport type TokensThatAreAlsoProps = (keyof TTokens)[] | 'all' | 'none';\n\n/**\n * Raw format for producing styles in a functional manner. These can only depend on tokens or theme as inputs.\n * - tokens: these will be produced from the theme and component constants, then they will be potentially\n * be modified by the props. See the TokensThatAreAlsoProps type for more details.\n * - theme: the theme is provided for reference\n * The provided\n * cache will be scoped to the theme, slot, and tokens that are coming out of the theme.\n */\nexport type BuildPropsBase = (tokens: TTokens, theme: TTheme, cache: GetMemoValue) => Partial;\n\n/**\n * A refine function allows style functions to be updated based on tokens that are also props. Only those tokens that are also\n * props need to be considered as a key for caching\n */\nexport type RefineFunctionBase = (\n mask?: TokensThatAreAlsoProps,\n) => BuildPropsBase;\n\n/**\n * Signature for a style function which can be optionally refined by the styling hook if prop masks are provided\n */\nexport type RefinableBuildPropsBase = BuildPropsBase & {\n refine?: RefineFunctionBase;\n};\n\n/**\n * Style functions can be plain functions, refinable functions, or just raw props\n */\nexport type BuildSlotProps = {\n [K in keyof TSlotProps]?: RefinableBuildPropsBase | TSlotProps[K];\n};\n\nfunction cacheStyleClosure(\n fn: (tokens: TTokens, theme: TTheme) => TProps,\n keys?: (keyof TTokens)[],\n): RefinableBuildPropsBase {\n return (tokens: TTokens, theme: TTheme, cache: GetMemoValue) =>\n cache(\n () => fn(tokens, theme),\n (keys || []).map((key) => tokens[key]),\n )[0];\n}\n\nfunction refineKeys(keys: (keyof TTokens)[], mask?: TokensThatAreAlsoProps): (keyof TTokens)[] {\n return typeof mask === 'object' && Array.isArray(mask)\n ? keys.filter((key) => mask.findIndex((val) => val === key) !== -1)\n : mask\n ? keys\n : [];\n}\n\n/**\n * Standard wrapper for a function that provides props for a component based on tokens and theme.\n *\n * @param fn - function which does the work of producing props for the tokens and theme provided\n * @param keys - which token properties are used by this style, this determines the keys to use for caching\n */\nexport function buildProps(\n fn: (tokens: TTokens, theme: TTheme) => TProps,\n keys?: (keyof TTokens)[],\n): RefinableBuildPropsBase {\n // wrap the provided function in the standard caching layer, basing it upon the provided keys\n const result = cacheStyleClosure(fn, keys);\n\n // if results are being cached on keys, provide the ability to refine the function if a prop mask is specified\n result.refine =\n keys && keys.length > 0\n ? (mask?: TokensThatAreAlsoProps) => {\n return cacheStyleClosure(fn, refineKeys(keys, mask));\n }\n : undefined;\n\n // return the style function decorated with the refine function\n return result;\n}\n\n/**\n * Utility function to check the type and refinement capabilities of a styleFunction and refine it if appropriate\n *\n * @param fn - function or props to potentially refine\n * @param mask - prop mask to use for refinement\n */\nexport function refinePropsFunctions(\n styles: BuildSlotProps,\n mask: TokensThatAreAlsoProps,\n): BuildSlotProps {\n const result = {};\n Object.keys(styles).forEach((key) => {\n const refine =\n typeof styles[key] === 'function' && (styles[key] as RefinableBuildPropsBase).refine;\n result[key] = refine ? refine(mask) : styles[key];\n });\n return result;\n}\n", "import type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\nimport type { HasLayer, TokenSettings } from '@fluentui-react-native/use-tokens';\nimport { applyPropsToTokens, applyTokenLayers, buildUseTokens } from '@fluentui-react-native/use-tokens';\n\nimport type { TokensThatAreAlsoProps, BuildSlotProps } from './buildProps';\nimport { refinePropsFunctions } from './buildProps';\n\n/**\n * Options used to build up a useStyling hook\n */\nexport type UseStylingOptions = {\n /**\n * Baseline tokens for this component\n */\n tokens?: TokenSettings[];\n\n /**\n * States that might be applied for the component like disabled or hovered, these should be listed\n * in the order that they should be applied\n */\n states?: (keyof TTokens)[];\n\n /**\n * Functions which build up the props for each slot\n */\n slotProps?: BuildSlotProps;\n\n /**\n * Which props should be considered to be tokens.\n * - If an array of keys this will ensure these props are promoted to tokens\n * - If true all props will be added to tokens, if false or not specified no props will be treated as tokens\n */\n tokensThatAreAlsoProps?: TokensThatAreAlsoProps;\n\n /** purely used to make type inferencing work correctly so the hook builder can pick up TProps from this type */\n _propsType?: TProps;\n};\n\n/**\n * Signature for the use styling hook\n */\nexport type UseStyling = (props: TProps, lookup?: HasLayer) => TSlotProps;\n\n/**\n * Helper object which injects theme specific functionality\n */\nexport type ThemeHelper = {\n /** query the theme from the context, or from a global if your system doesn't use theming */\n useTheme: () => TTheme;\n\n /** lookup info for the component in the theme */\n getComponentInfo: (theme: TTheme, name: string) => any;\n};\n\n/**\n * Produce the final slot props for the styled hook\n *\n * @param styles - refined style functions or props to use for processing\n * @param tokens - token inputs for the style functions\n * @param theme - theme to resolve against\n * @param cache - cache to use for the base of slot caching\n */\nfunction resolveToSlotProps(\n styles: BuildSlotProps,\n tokens: TTokens,\n theme: TTheme,\n cache: GetTypedMemoValue,\n): TSlotProps {\n const slotProps = {};\n Object.keys(styles).forEach((key) => {\n const style = styles[key];\n slotProps[key] = typeof style === 'function' ? style(tokens, theme, cache(null, [key])[1]) : style;\n });\n return slotProps as TSlotProps;\n}\n\n/**\n * Construct a useStyling hook which returns styled slot props based on props and tokens defined in options and in the theme\n *\n * @param options - options which drive behavior for the generated styling hook\n * @param themeHelper - injected theme functionality\n */\nexport function buildUseStyling(\n options: UseStylingOptions,\n themeHelper: ThemeHelper,\n): UseStyling {\n // create a cache instance for this use styling implementation\n const { useTheme, getComponentInfo } = themeHelper;\n const { tokens, tokensThatAreAlsoProps: tokenProps } = options;\n const styles = refinePropsFunctions(options.slotProps || {}, tokenProps);\n const useTokens = buildUseTokens(getComponentInfo, ...tokens);\n\n return (props: TProps, lookup?: HasLayer) => {\n // query the theme\n const theme = useTheme();\n\n // get the merged tokens from the theme\n let [mergedTokens, cache] = useTokens(theme);\n\n // resolve overrides as appropriate\n if (options.states) {\n [mergedTokens, cache] = applyTokenLayers(mergedTokens, options.states as string[], cache, lookup || ((val) => props[val]));\n }\n\n // now resolve tokens\n if (typeof tokenProps === 'object' && Array.isArray(tokenProps)) {\n [mergedTokens, cache] = applyPropsToTokens(props, mergedTokens, cache, tokenProps);\n } else if (tokenProps === 'all') {\n mergedTokens = { ...mergedTokens, ...props };\n }\n\n // finally produce slotProps from calling the style functions on each entry\n return resolveToSlotProps(styles, mergedTokens, theme, cache);\n };\n}\n", "export { buildUseStyling } from './buildUseStyling';\nexport type { ThemeHelper, UseStyling, UseStylingOptions } from './buildUseStyling';\nexport { buildProps, refinePropsFunctions } from './buildProps';\nexport type { BuildPropsBase, BuildSlotProps, RefinableBuildPropsBase, RefineFunctionBase, TokensThatAreAlsoProps } from './buildProps';\nexport type { HasLayer, TokenSettings, TokensFromTheme } from '@fluentui-react-native/use-tokens';\nexport { applyTokenLayers } from '@fluentui-react-native/use-tokens';\n", "import type { MergeOptions } from '@fluentui-react-native/framework-base';\nimport { immutableMergeCore } from '@fluentui-react-native/framework-base';\nimport type { ComposableFunction } from '@fluentui-react-native/framework-base';\nimport { stagedComponent } from '@fluentui-react-native/framework-base';\nimport type { UseSlotOptions, Slots } from '@fluentui-react-native/use-slots';\nimport { buildUseSlots } from '@fluentui-react-native/use-slots';\nimport { buildUseStyling } from '@fluentui-react-native/use-styling';\nimport type { UseStylingOptions, TokenSettings, ThemeHelper, HasLayer } from '@fluentui-react-native/use-styling';\n\nexport type UseStyledSlots = (props: TProps, lookup?: HasLayer) => Slots;\n\nexport type ComposeFactoryOptions = UseStylingOptions<\n TProps,\n TSlotProps,\n TTokens,\n TTheme\n> &\n UseSlotOptions & {\n /**\n * Includes from UseStylingOptions:\n *\n */\n displayName?: string;\n\n /**\n * staged render function that takes props and a useSlots hook as an input\n */\n useRender: (props: TProps, useSlots: UseStyledSlots) => React.FunctionComponent;\n\n /**\n * optional statics to attach to the component\n */\n statics?: TStatics;\n };\n\nexport type ComposeFactoryComponent = ComposableFunction & {\n __options: ComposeFactoryOptions;\n customize: (...tokens: TokenSettings[]) => ComposeFactoryComponent;\n compose: (\n options: Partial>,\n ) => ComposeFactoryComponent;\n} & TStatics;\n\n/**\n * options get deep merged except the tokens array gets appended\n */\nconst mergeOptions: MergeOptions = {\n tokens: 'appendArray',\n object: true,\n};\n\nexport function composeFactory(\n options: ComposeFactoryOptions,\n themeHelper: ThemeHelper,\n base?: ComposeFactoryComponent,\n): ComposeFactoryComponent {\n type LocalComponent = ComposeFactoryComponent;\n type LocalOptions = ComposeFactoryOptions;\n\n // merge options together if a base is specified\n const baseOptions: LocalOptions = base?.__options as LocalOptions;\n options = baseOptions ? immutableMergeCore(mergeOptions, baseOptions, options) : { ...options };\n\n // build styling if styling options are specified\n options.useStyling = options.slotProps || options.tokens ? buildUseStyling(options, themeHelper) : () => ({} as TSlotProps);\n\n // build the slots hook, which will use the styling hook if it has been built\n const useSlots = buildUseSlots(options) as UseStyledSlots;\n\n // build the staged component\n const component = stagedComponent((props) => options.useRender(props, useSlots)) as LocalComponent;\n\n // attach additional props to the returned component\n component.displayName = options.displayName;\n component.__options = options;\n component.customize = (...tokens: LocalOptions['tokens']) =>\n composeFactory(\n immutableMergeCore(mergeOptions, options, { tokens: tokens } as LocalOptions),\n themeHelper,\n );\n\n component.compose = (customOptions: Partial) =>\n composeFactory(\n immutableMergeCore(mergeOptions, options, customOptions) as LocalOptions,\n themeHelper,\n );\n\n // attach statics if specified\n if (options.statics) {\n Object.assign(component, options.statics);\n }\n\n return component;\n}\n", "export { composeFactory } from './composeFactory';\nexport type { ComposeFactoryComponent, ComposeFactoryOptions, UseStyledSlots } from './composeFactory';\n", "import { defaultFluentTheme } from '@fluentui-react-native/default-theme';\nimport type { Theme } from '@fluentui-react-native/theme-types';\nimport { useTheme } from '@fluentui-react-native/theme-types';\n\n/**\n * Attempts to obtain a theme via the react context, failing that the default fluent theme will be returned. Used to ensure some theme\n * object is provided for looking up color (and other) theme values\n * @returns - a valid Theme object\n */\nexport function useFluentTheme(): Theme {\n return useTheme() || defaultFluentTheme;\n}\n", "import type { Theme } from '@fluentui-react-native/theme-types';\nimport type { ThemeHelper } from '@fluentui-react-native/use-styling';\n\nimport { useFluentTheme } from './useFluentTheme';\n\nexport const themeHelper: ThemeHelper = {\n useTheme: () => useFluentTheme(),\n getComponentInfo: (theme: Theme, name: string) => {\n const components = theme.components || {};\n return components[name];\n },\n};\n", "import type { ComposeFactoryOptions, ComposeFactoryComponent, UseStyledSlots } from '@fluentui-react-native/composition';\nimport { composeFactory } from '@fluentui-react-native/composition';\nimport type { Theme } from '@fluentui-react-native/theme-types';\nimport type { ObjectBase } from '@fluentui-react-native/framework-base';\n\nimport { themeHelper } from './themeHelper';\n\n/**\n * This is an object used purely for configuring the typings on composable. It is not necessary to define\n * the type via the IComposableType interface, this is simply the format used to extract the type info.\n */\nexport interface ComposeType {\n props: TProps;\n slotProps: TSlotProps;\n tokens: TTokens;\n statics: TStatics;\n}\n\n/** fragments used in type extraction */\ntype PropsFragment = { props: TProps };\ntype SlotPropsFragment = { slotProps: TSlotProps };\ntype TokensFragment = { tokens: TTokens };\n\ntype StaticsFragment = { statics: TStatics };\n\n/** Extraction types that get the various interface types from IComposableType */\nexport type ExtractProps = T extends PropsFragment ? U : never;\nexport type ExtractSlotProps = T extends SlotPropsFragment ? U : never;\n\nexport type ExtractTokens = T extends TokensFragment ? U : ObjectBase;\n\nexport type ExtractStatics = T extends StaticsFragment ? U : ObjectBase;\n\nexport type ComposeOptions = ComposeFactoryOptions<\n TProps,\n TSlotProps,\n TTokens,\n Theme,\n TStatics\n>;\n\nexport type ComposableComponent = ComposeFactoryComponent<\n TProps,\n TSlotProps,\n TTokens,\n Theme,\n TStatics\n>;\n\nexport type UseSlots = UseStyledSlots, ExtractSlotProps>;\n\nexport function compose(\n options: ComposeOptions, ExtractSlotProps, ExtractTokens, ExtractStatics>,\n base?: ComposableComponent, ExtractSlotProps, ExtractTokens, ExtractStatics>,\n): ComposableComponent, ExtractSlotProps, ExtractTokens, ExtractStatics> {\n return composeFactory(options, themeHelper, base);\n}\n", "import type { Theme } from '@fluentui-react-native/theme-types';\nimport type { StagedRender } from '@fluentui-react-native/framework-base';\nimport { stagedComponent } from '@fluentui-react-native/framework-base';\nimport type { CustomizableComponent } from '@fluentui-react-native/use-tokens';\n\nimport type { TokenSettings } from './useStyling';\nimport type { UseTokens } from './useTokens';\n\n/**\n * Utility function which can create function components that can be tree compressed (using the stagedRender pattern),\n * and also have customize functionality.\n * @param fn StagedRender function that defines your component\n * @param useTokens a hook function to build a set of tokens from a passed in theme as well as a cache object\n * @returns A tree compressed function component with the `.customize` method exposed to it\n */\nexport function compressible(\n fn: StagedRender,\n useTokens: UseTokens,\n): CustomizableComponent {\n type ThisComponent = CustomizableComponent;\n\n const injectedWrapper = (props: TProps) => fn(props, useTokens);\n const component = stagedComponent(injectedWrapper) as ThisComponent;\n\n component.customize = (...tokens: TokenSettings[]) => {\n const useTokensNew = useTokens.customize(...tokens);\n return compressible(fn, useTokensNew);\n };\n\n return component;\n}\n", "/**\n * Many of the types from use-styling take a theme as a type parameter. This re-exports them in such a way\n * as to be dependent on the core theme type\n */\nexport type { TokensThatAreAlsoProps, HasLayer, UseStyling } from '@fluentui-react-native/use-styling';\nimport type { Theme } from '@fluentui-react-native/theme-types';\nimport type {\n TokensFromTheme as TokensFromThemeBase,\n TokenSettings as TokenSettingsBase,\n UseStylingOptions as UseStylingOptionsBase,\n UseStyling,\n BuildPropsBase,\n} from '@fluentui-react-native/use-styling';\nimport { buildUseStyling as buildUseStylingBase, buildProps as buildPropsBase } from '@fluentui-react-native/use-styling';\n\nimport { themeHelper } from './themeHelper';\n\nexport type BuildProps = BuildPropsBase;\n\nexport function buildProps(\n fn: (tokens: TTokens, theme: Theme) => TProps,\n keys?: (keyof TTokens)[],\n): BuildProps {\n return buildPropsBase(fn, keys);\n}\n\nexport type TokensFromTheme = TokensFromThemeBase;\nexport type TokenSettings = TokenSettingsBase;\nexport type UseStylingOptions = UseStylingOptionsBase;\n\n/**\n * Construct a useStyling hook which returns styled slot props based on props and tokens defined in options and in the theme\n *\n * @param options - options which drive behavior for the generated styling hook\n */\nexport function buildUseStyling(\n options: UseStylingOptions,\n): UseStyling {\n // create a cache instance for this use styling implementation\n return buildUseStylingBase(options, themeHelper);\n}\n", "import type { Theme } from '@fluentui-react-native/theme-types';\nimport type { UseTokens as UseTokensCore } from '@fluentui-react-native/use-tokens';\nimport { buildUseTokens as buildUseTokensCore } from '@fluentui-react-native/use-tokens';\n\nimport { themeHelper } from './themeHelper';\nimport type { TokenSettings } from './useStyling';\n\nexport { applyTokenLayers, applyPropsToTokens, customizable, patchTokens } from '@fluentui-react-native/use-tokens';\n\n// A hook function to build a set of tokens from a passed in theme as well as a cache object\nexport type UseTokens = UseTokensCore;\nexport type { CustomizableComponent } from '@fluentui-react-native/use-tokens';\n\nexport function buildUseTokens(...tokens: TokenSettings[]): UseTokens {\n return buildUseTokensCore(themeHelper.getComponentInfo, ...tokens);\n}\n", "export type { GetMemoValue, GetTypedMemoValue } from '@fluentui-react-native/framework-base';\nexport { getMemoCache, getTypedMemoCache, memoize } from '@fluentui-react-native/framework-base';\n\nexport type { StyleProp } from '@fluentui-react-native/framework-base';\nexport { mergeProps, mergeStyles } from '@fluentui-react-native/framework-base';\n\nexport {\n backgroundColorTokens,\n borderStyles,\n borderTokens,\n colorTokens,\n fontStyles,\n foregroundColorTokens,\n getPaletteFromTheme,\n layoutStyles,\n layoutTokens,\n shadowStyles,\n shadowTokens,\n textTokens,\n tokenBuilder,\n} from '@fluentui-react-native/tokens';\nexport type {\n FontStyleTokens,\n FontTokens,\n FontVariantTokens,\n IBackgroundColorTokens,\n IBorderTokens,\n IColorTokens,\n IForegroundColorTokens,\n IShadowTokens,\n LayoutTokens,\n TokenBuilder,\n} from '@fluentui-react-native/tokens';\n\nexport { useSlot } from '@fluentui-react-native/use-slot';\nexport { renderSlot, stagedComponent, withSlots } from '@fluentui-react-native/framework-base';\nexport type { ComposableFunction, FinalRender, NativeReactType, SlotFn, StagedRender } from '@fluentui-react-native/framework-base';\n\nexport { buildUseSlots } from '@fluentui-react-native/use-slots';\nexport type { GetSlotProps, Slots, UseSlotOptions, UseSlotsBase } from '@fluentui-react-native/use-slots';\n\nexport { immutableMerge, immutableMergeCore, processImmutable } from '@fluentui-react-native/framework-base';\nexport type {\n BuiltinRecursionHandlers,\n CustomRecursionHandler,\n MergeOptions,\n ObjectBase,\n RecursionHandler,\n RecursionOption,\n} from '@fluentui-react-native/framework-base';\n\nexport { ThemeContext, useTheme } from '@fluentui-react-native/theme-types';\nexport type {\n AliasColorTokens,\n AppearanceOptions,\n Color,\n FontFamilies,\n FontFamily,\n FontFamilyValue,\n FontSize,\n FontSizeValuePoints,\n FontSizes,\n FontWeight,\n FontWeightValue,\n FontWeights,\n OfficePalette,\n Palette,\n PaletteBackgroundColors,\n PaletteTextColors,\n PartialPalette,\n PartialTheme,\n PartialTypography,\n Spacing,\n TextStyling,\n Theme,\n ThemeColorDefinition,\n ThemeOptions,\n Typography,\n Variant,\n VariantValue,\n Variants,\n} from '@fluentui-react-native/theme-types';\n\nexport { compose } from './compose';\nexport type {\n ComposableComponent,\n ComposeOptions,\n ComposeType,\n ExtractProps,\n ExtractSlotProps,\n ExtractStatics,\n ExtractTokens,\n UseSlots,\n} from './compose';\nexport { compressible } from './compressible';\nexport { useFluentTheme } from './useFluentTheme';\nexport type { HasLayer, TokensThatAreAlsoProps, UseStyling } from './useStyling';\nexport { buildProps, buildUseStyling } from './useStyling';\nexport type { BuildProps, TokenSettings, TokensFromTheme, UseStylingOptions } from './useStyling';\nexport { applyPropsToTokens, applyTokenLayers, buildUseTokens, customizable, patchTokens } from './useTokens';\nexport type { UseTokens, CustomizableComponent } from './useTokens';\n", "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 type { AccessibilityActionEvent, GestureResponderEvent, MouseEvent } from 'react-native';\n\nimport type { KeyPressEvent } from './useKeyProps.types';\n\nexport type InteractionEvent = GestureResponderEvent | MouseEvent | KeyPressEvent | AccessibilityActionEvent;\n\nexport const isGestureResponderEvent = (e: InteractionEvent): e is GestureResponderEvent => {\n if ('touches' in e.nativeEvent) {\n return true;\n }\n\n return false;\n};\n\nexport const isMouseEvent = (e: InteractionEvent): e is MouseEvent => {\n if ('pageX' in e.nativeEvent) {\n return true;\n }\n\n return false;\n};\n\nexport const isKeyPressEvent = (e: InteractionEvent): e is KeyPressEvent => {\n if ('key' in e.nativeEvent) {\n return true;\n }\n\n return false;\n};\n\nexport const isAccessibilityActionEvent = (e: InteractionEvent): e is AccessibilityActionEvent => {\n if ('actionName' in e.nativeEvent) {\n return true;\n }\n\n return false;\n};\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'use strict';\n\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\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport { Platform } from 'react-native';\n\nlet isEnabled = false;\n\nif (Platform.OS === 'web') {\n const canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n if (canUseDOM) {\n /**\n * Web browsers emulate mouse events (and hover states) after touch events.\n * This code infers when the currently-in-use modality supports hover\n * (including for multi-modality devices) and considers \"hover\" to be enabled\n * if a mouse movement occurs more than 1 second after the last touch event.\n * This threshold is long enough to account for longer delays between the\n * browser firing touch and mouse events on low-powered devices.\n */\n const HOVER_THRESHOLD_MS = 1000;\n let lastTouchTimestamp = 0;\n\n const enableHover = () => {\n if (isEnabled || Date.now() - lastTouchTimestamp < HOVER_THRESHOLD_MS) {\n return;\n }\n isEnabled = true;\n };\n\n const disableHover = () => {\n lastTouchTimestamp = Date.now();\n if (isEnabled) {\n isEnabled = false;\n }\n };\n\n document.addEventListener('touchstart', disableHover, true);\n document.addEventListener('touchmove', disableHover, true);\n document.addEventListener('mousemove', enableHover, true);\n }\n} else if (Platform.OS === 'windows' || Platform.OS === ('win32' as any) || Platform.OS === 'macos') {\n isEnabled = true;\n}\n\nexport function isHoverEnabled(): boolean {\n return isEnabled;\n}\n", "/**\n * A collection of internal types from react-native that are not currently exposed in TypeScript\n */\n\nimport type * as React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype ObjectBase = {};\n\nexport type Rect = Readonly<{\n bottom?: number;\n left?: number;\n right?: number;\n top?: number;\n}>;\n\nexport type RectOrSize = Rect | number;\n\nexport function normalizeRect(size: RectOrSize): Rect {\n return typeof size === 'number' ? { bottom: size, left: size, right: size, top: size } : size;\n}\n\nexport type MeasureOnSuccessCallback = (x: number, y: number, width: number, height: number, pageX: number, pageY: number) => void;\n\nexport type MeasureInWindowOnSuccessCallback = (x: number, y: number, width: number, height: number) => void;\n\nexport type MeasureLayoutOnSuccessCallback = (left: number, top: number, width: number, height: number) => void;\n\n/**\n * temporary port of changes that are in flight for the react and react-native types definition\n */\nexport interface ComponentMethods {\n context: any;\n props: Props;\n state: any;\n refs: {\n [key: string]: React.ReactInstance;\n };\n setState(state: any, cb?: () => void): void;\n render(): React.ReactNode;\n forceUpdate(callback?: () => void): void;\n}\n\n/**\n * temporary port of changes that are in flight for the react and react-native types definition\n */\nexport type AbstractComponent =\n // Either a function component that has a specific return type:\n | (React.FunctionComponent & ((props: React.PropsWithChildren, context?: any) => Instance))\n // ...or a class component that has the required Component methods and the Instance methods\n | { new (props: Config, context?: any): Instance & ComponentMethods };\n\n/**\n * internal definitions from RN project\n */\nexport type NativeMethods = {\n blur(): void;\n focus(): void;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n measureLayout(\n relativeToNativeNode: number | React.ElementRef>,\n onSuccess: MeasureLayoutOnSuccessCallback,\n onFail?: () => void,\n ): void;\n setNativeProps(nativeProps: ObjectBase): void;\n};\n\nexport type HostComponent = AbstractComponent>;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type * as React from 'react';\nimport { Platform, UIManager } from 'react-native';\n\nimport invariant from 'invariant';\n\nimport type { BlurEvent, FocusEvent, MouseEvent, PressEvent } from './CoreEventTypes';\nimport { isHoverEnabled } from './HoverState';\nimport type { HostComponent, Rect } from './InternalTypes';\nimport { normalizeRect } from './InternalTypes';\nimport type { PressabilityConfig, PressabilityEventHandlers } from './Pressability.types';\n\ntype TouchState =\n | 'NOT_RESPONDER'\n | 'RESPONDER_INACTIVE_PRESS_IN'\n | 'RESPONDER_INACTIVE_PRESS_OUT'\n | 'RESPONDER_ACTIVE_PRESS_IN'\n | 'RESPONDER_ACTIVE_PRESS_OUT'\n | 'RESPONDER_ACTIVE_LONG_PRESS_IN'\n | 'RESPONDER_ACTIVE_LONG_PRESS_OUT'\n | 'ERROR';\n\ntype TouchSignal =\n | 'DELAY'\n | 'RESPONDER_GRANT'\n | 'RESPONDER_RELEASE'\n | 'RESPONDER_TERMINATED'\n | 'ENTER_PRESS_RECT'\n | 'LEAVE_PRESS_RECT'\n | 'LONG_PRESS_DETECTED';\n\nconst Transitions: { [K in TouchState]: { [T in TouchSignal]: TouchState } } = {\n NOT_RESPONDER: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'ERROR',\n RESPONDER_TERMINATED: 'ERROR',\n ENTER_PRESS_RECT: 'ERROR',\n LEAVE_PRESS_RECT: 'ERROR',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_IN',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: 'RESPONDER_ACTIVE_PRESS_OUT',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: 'ERROR',\n RESPONDER_GRANT: 'ERROR',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n LONG_PRESS_DETECTED: 'ERROR',\n },\n ERROR: {\n DELAY: 'NOT_RESPONDER',\n RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n RESPONDER_RELEASE: 'NOT_RESPONDER',\n RESPONDER_TERMINATED: 'NOT_RESPONDER',\n ENTER_PRESS_RECT: 'NOT_RESPONDER',\n LEAVE_PRESS_RECT: 'NOT_RESPONDER',\n LONG_PRESS_DETECTED: 'NOT_RESPONDER',\n },\n};\n\nconst isActiveSignal = (signal) => signal === 'RESPONDER_ACTIVE_PRESS_IN' || signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isActivationSignal = (signal) => signal === 'RESPONDER_ACTIVE_PRESS_OUT' || signal === 'RESPONDER_ACTIVE_PRESS_IN';\n\nconst isPressInSignal = (signal) =>\n signal === 'RESPONDER_INACTIVE_PRESS_IN' || signal === 'RESPONDER_ACTIVE_PRESS_IN' || signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isTerminalSignal = (signal) => signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';\n\nconst DEFAULT_LONG_PRESS_DELAY_MS = 370; // 500 - 130\nconst DEFAULT_PRESS_DELAY_MS = 130;\nconst DEFAULT_PRESS_RECT_OFFSETS: Rect = {\n bottom: 30,\n left: 20,\n right: 20,\n top: 20,\n};\n\nfunction normalizeDelay(delay?: number, min: number = 0, fallback: number = 0): number {\n return Math.max(min, delay ?? fallback);\n}\n\nconst getTouchFromPressEvent = (event: PressEvent) => {\n const { changedTouches, touches } = event.nativeEvent;\n\n if (touches != null && touches.length > 0) {\n return touches[0];\n }\n if (changedTouches != null && changedTouches.length > 0) {\n return changedTouches[0];\n }\n return event.nativeEvent;\n};\n\n/**\n * Pressability implements press handling capabilities.\n *\n * =========================== Pressability Tutorial ===========================\n *\n * The `Pressability` class helps you create press interactions by analyzing the\n * geometry of elements and observing when another responder (e.g. ScrollView)\n * has stolen the touch lock. It offers hooks for your component to provide\n * interaction feedback to the user:\n *\n * - When a press has activated (e.g. highlight an element)\n * - When a press has deactivated (e.g. un-highlight an element)\n * - When a press sould trigger an action, meaning it activated and deactivated\n * while within the geometry of the element without the lock being stolen.\n *\n * A high quality interaction isn't as simple as you might think. There should\n * be a slight delay before activation. Moving your finger beyond an element's\n * bounds should trigger deactivation, but moving the same finger back within an\n * element's bounds should trigger reactivation.\n *\n * In order to use `Pressability`, do the following:\n *\n * 1. Instantiate `Pressability` and store it on your component's state.\n *\n * state = {\n * pressability: new Pressability({\n * // ...\n * }),\n * };\n *\n * 2. Choose the rendered component who should collect the press events. On that\n * element, spread `pressability.getEventHandlers()` into its props.\n *\n * return (\n * \n * );\n *\n * 3. Reset `Pressability` when your component unmounts.\n *\n * componentWillUnmount() {\n * this.state.pressability.reset();\n * }\n *\n * ==================== Pressability Implementation Details ====================\n *\n * `Pressability` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * # Geometry\n *\n * ┌────────────────────────┐\n * │ ┌──────────────────┐ │ - Presses start anywhere within `HitRect`, which\n * │ │ ┌────────────┐ │ │ is expanded via the prop `hitSlop`.\n * │ │ │ VisualRect │ │ │\n * │ │ └────────────┘ │ │ - When pressed down for sufficient amount of time\n * │ │ HitRect │ │ before letting up, `VisualRect` activates for\n * │ └──────────────────┘ │ as long as the press stays within `PressRect`.\n * │ PressRect o │\n * └────────────────────│───┘\n * Out Region └────── `PressRect`, which is expanded via the prop\n * `pressRectOffset`, allows presses to move\n * beyond `HitRect` while maintaining activation\n * and being eligible for a \"press\".\n *\n * # State Machine\n *\n * ┌───────────────┐ ◀──── RESPONDER_RELEASE\n * │ NOT_RESPONDER │\n * └───┬───────────┘ ◀──── RESPONDER_TERMINATED\n * │\n * │ RESPONDER_GRANT (HitRect)\n * │\n * ▼\n * ┌─────────────────────┐ ┌───────────────────┐ ┌───────────────────┐\n * │ RESPONDER_INACTIVE_ │ DELAY │ RESPONDER_ACTIVE_ │ T + DELAY │ RESPONDER_ACTIVE_ │\n * │ PRESS_IN ├────────▶ │ PRESS_IN ├────────────▶ │ LONG_PRESS_IN │\n * └─┬───────────────────┘ └─┬─────────────────┘ └─┬─────────────────┘\n * │ ▲ │ ▲ │ ▲\n * │LEAVE_ │ │LEAVE_ │ │LEAVE_ │\n * │PRESS_RECT │ENTER_ │PRESS_RECT │ENTER_ │PRESS_RECT │ENTER_\n * │ │PRESS_RECT │ │PRESS_RECT │ │PRESS_RECT\n * ▼ │ ▼ │ ▼ │\n * ┌─────────────┴───────┐ ┌─────────────┴─────┐ ┌─────────────┴─────┐\n * │ RESPONDER_INACTIVE_ │ DELAY │ RESPONDER_ACTIVE_ │ │ RESPONDER_ACTIVE_ │\n * │ PRESS_OUT ├────────▶ │ PRESS_OUT │ │ LONG_PRESS_OUT │\n * └─────────────────────┘ └───────────────────┘ └───────────────────┘\n *\n * T + DELAY => LONG_PRESS_DELAY + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the invocation of `onPress` and `onLongPress` that occur when a\n * responder is release while in the \"press in\" states.\n */\nexport class Pressability {\n private _config: PressabilityConfig;\n private _eventHandlers: PressabilityEventHandlers = null;\n private _hoverInDelayTimeout: any /* TimeoutID */ = null;\n private _hoverOutDelayTimeout: any /* TimeoutID */ = null;\n private _isHovered: boolean = false;\n private _longPressDelayTimeout: any /* TimeoutID */ = null;\n private _pressDelayTimeout: any /* TimeoutID */ = null;\n private _pressOutDelayTimeout: any /* TimeoutID */ = null;\n private _responderID: number | React.ElementRef> = null;\n private _responderRegion: Rect = null;\n private _touchActivatePosition: Readonly<{\n pageX: number;\n pageY: number;\n }>;\n private _touchState: TouchState = 'NOT_RESPONDER';\n\n constructor(config: PressabilityConfig) {\n this.configure(config);\n }\n\n public configure(config: PressabilityConfig): void {\n this._config = config;\n }\n\n /**\n * Resets any pending timers. This should be called on unmount.\n */\n public reset(): void {\n this._cancelHoverInDelayTimeout();\n this._cancelHoverOutDelayTimeout();\n this._cancelLongPressDelayTimeout();\n this._cancelPressDelayTimeout();\n this._cancelPressOutDelayTimeout();\n }\n\n /**\n * Returns a set of props to spread into the interactive element.\n */\n public getEventHandlers(): PressabilityEventHandlers {\n if (this._eventHandlers == null) {\n this._eventHandlers = this._createEventHandlers();\n }\n return this._eventHandlers;\n }\n\n private _createEventHandlers(): PressabilityEventHandlers {\n const focusEventHandlers = {\n onBlur: (event: BlurEvent): void => {\n const { onBlur } = this._config;\n if (onBlur != null) {\n onBlur(event);\n }\n },\n onFocus: (event: FocusEvent): void => {\n const { onFocus } = this._config;\n if (onFocus != null) {\n onFocus(event);\n }\n },\n };\n\n const responderEventHandlers = {\n onStartShouldSetResponder: (): boolean => {\n const { disabled } = this._config;\n if (disabled == null) {\n return true;\n }\n return !disabled;\n },\n\n onResponderGrant: (event: PressEvent): void => {\n event.persist();\n\n this._cancelPressOutDelayTimeout();\n\n this._responderID = event.currentTarget;\n this._touchState = 'NOT_RESPONDER';\n this._receiveSignal('RESPONDER_GRANT', event);\n\n const delayPressIn = normalizeDelay(this._config.delayPressIn, 0, DEFAULT_PRESS_DELAY_MS);\n\n if (delayPressIn > 0) {\n this._pressDelayTimeout = setTimeout(() => {\n this._receiveSignal('DELAY', event);\n }, delayPressIn);\n } else {\n this._receiveSignal('DELAY', event);\n }\n\n const delayLongPress = normalizeDelay(this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);\n this._longPressDelayTimeout = setTimeout(() => {\n this._handleLongPress(event);\n }, delayLongPress + delayPressIn);\n },\n\n onResponderMove: (event: PressEvent): void => {\n if (this._config.onPressMove != null) {\n this._config.onPressMove(event);\n }\n\n // Region may not have finished being measured, yet.\n const responderRegion = this._responderRegion;\n if (responderRegion == null) {\n return;\n }\n\n const touch = getTouchFromPressEvent(event);\n if (touch == null) {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal('LEAVE_PRESS_RECT', event);\n return;\n }\n\n if (this._touchActivatePosition != null) {\n const deltaX = this._touchActivatePosition.pageX - touch.pageX;\n const deltaY = this._touchActivatePosition.pageY - touch.pageY;\n if (Math.hypot(deltaX, deltaY) > 10) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n if (this._isTouchWithinResponderRegion(touch, responderRegion)) {\n this._receiveSignal('ENTER_PRESS_RECT', event);\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal('LEAVE_PRESS_RECT', event);\n }\n },\n\n onResponderRelease: (event: PressEvent): void => {\n this._receiveSignal('RESPONDER_RELEASE', event);\n },\n\n onResponderTerminate: (event: PressEvent): void => {\n this._receiveSignal('RESPONDER_TERMINATED', event);\n },\n\n onResponderTerminationRequest: (): boolean => {\n const { cancelable } = this._config;\n return cancelable || true;\n },\n\n onClick: (event): void => {\n const { onPress } = this._config;\n if (onPress != null) {\n onPress(event);\n }\n },\n };\n\n const mouseEventHandlers =\n Platform.OS === 'ios' || Platform.OS === 'android'\n ? null\n : {\n onMouseEnter: (event: MouseEvent): void => {\n if (isHoverEnabled()) {\n this._isHovered = true;\n this._cancelHoverOutDelayTimeout();\n const { onHoverIn } = this._config;\n if (onHoverIn != null) {\n const delayHoverIn = normalizeDelay(this._config.delayHoverIn);\n if (delayHoverIn > 0) {\n this._hoverInDelayTimeout = setTimeout(() => {\n onHoverIn(event);\n }, delayHoverIn);\n } else {\n onHoverIn(event);\n }\n }\n }\n },\n\n onMouseLeave: (event: MouseEvent): void => {\n if (this._isHovered) {\n this._isHovered = false;\n this._cancelHoverInDelayTimeout();\n const { onHoverOut } = this._config;\n if (onHoverOut != null) {\n const delayHoverOut = normalizeDelay(this._config.delayHoverOut);\n if (delayHoverOut > 0) {\n this._hoverInDelayTimeout = setTimeout(() => {\n onHoverOut(event);\n }, delayHoverOut);\n } else {\n onHoverOut(event);\n }\n }\n }\n },\n };\n\n return {\n ...focusEventHandlers,\n ...responderEventHandlers,\n ...mouseEventHandlers,\n };\n }\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n */\n private _receiveSignal(signal: TouchSignal, event: PressEvent): void {\n const prevState = this._touchState;\n const nextState: TouchState = Transitions[prevState][signal];\n if (this._responderID == null && signal === 'RESPONDER_RELEASE') {\n return;\n }\n invariant(\n nextState != null && nextState !== 'ERROR',\n 'Pressability: Invalid signal `%s` for state `%s` on responder: %s',\n signal,\n prevState,\n typeof this._responderID === 'number' ? this._responderID : '<>',\n );\n if (prevState !== nextState) {\n this._performTransitionSideEffects(prevState, nextState, signal, event);\n this._touchState = nextState;\n }\n }\n\n /**\n * Performs a transition between touchable states and identify any activations\n * or deactivations (and callback invocations).\n */\n private _performTransitionSideEffects(prevState: TouchState, nextState: TouchState, signal: TouchSignal, event): void {\n if (isTerminalSignal(signal)) {\n this._touchActivatePosition = null;\n this._cancelLongPressDelayTimeout();\n }\n\n const isInitialTransition = prevState === 'NOT_RESPONDER' && nextState === 'RESPONDER_INACTIVE_PRESS_IN';\n\n const isActivationTransiton = !isActivationSignal(prevState) && isActivationSignal(nextState);\n\n if (isInitialTransition || isActivationTransiton) {\n this._measureResponderRegion();\n }\n\n if (isPressInSignal(prevState) && signal === 'LONG_PRESS_DETECTED') {\n const { onLongPress } = this._config;\n if (onLongPress != null) {\n onLongPress(event);\n }\n }\n\n const isPrevActive = isActiveSignal(prevState);\n const isNextActive = isActiveSignal(nextState);\n\n if (!isPrevActive && isNextActive) {\n this._activate(event);\n } else if (isPrevActive && !isNextActive) {\n this._deactivate(event);\n }\n\n if (isPressInSignal(prevState) && signal === 'RESPONDER_RELEASE') {\n const { onLongPress, onPress /*, android_disableSound */ } = this._config;\n if (onPress != null) {\n const isPressCanceledByLongPress =\n onLongPress != null && prevState === 'RESPONDER_ACTIVE_LONG_PRESS_IN' && this._shouldLongPressCancelPress();\n if (!isPressCanceledByLongPress) {\n // If we never activated (due to delays), activate and deactivate now.\n if (!isNextActive && !isPrevActive) {\n this._activate(event);\n this._deactivate(event);\n }\n /*\n if (Platform.OS === 'android' && android_disableSound !== true) {\n SoundManager.playTouchSound();\n }\n */\n onPress(event);\n }\n }\n }\n\n this._cancelPressDelayTimeout();\n }\n\n private _activate(event): void {\n const { onPressIn } = this._config;\n const touch = getTouchFromPressEvent(event);\n this._touchActivatePosition = {\n pageX: touch.pageX,\n pageY: touch.pageY,\n };\n if (onPressIn != null) {\n onPressIn(event);\n }\n }\n\n private _deactivate(event): void {\n const { onPressOut } = this._config;\n if (onPressOut != null) {\n const delayPressOut = normalizeDelay(this._config.delayPressOut);\n if (delayPressOut > 0) {\n this._pressOutDelayTimeout = setTimeout(() => {\n onPressOut(event);\n }, delayPressOut);\n } else {\n onPressOut(event);\n }\n }\n }\n\n private _measureResponderRegion(): void {\n if (this._responderID == null) {\n return;\n }\n\n if (typeof this._responderID === 'number') {\n UIManager.measure(this._responderID, this._measureCallback);\n } else {\n const measure = (this as any)?._responderID?.measure;\n\n if (typeof measure === 'function' && this._measureCallback) {\n (this as any)?._responderID?.measure(this._measureCallback);\n }\n }\n }\n\n private _measureCallback = (left, top, width, height, pageX, pageY) => {\n if (!left && !top && !width && !height && !pageX && !pageY) {\n return;\n }\n this._responderRegion = {\n bottom: pageY + height,\n left: pageX,\n right: pageX + width,\n top: pageY,\n };\n };\n\n private _isTouchWithinResponderRegion(touch: any /* PropertyType */, responderRegion: Rect): boolean {\n const hitSlop = normalizeRect(this._config.hitSlop);\n const pressRectOffset = normalizeRect(this._config.pressRectOffset);\n\n let regionBottom = responderRegion.bottom;\n let regionLeft = responderRegion.left;\n let regionRight = responderRegion.right;\n let regionTop = responderRegion.top;\n\n if (hitSlop != null) {\n if (hitSlop.bottom != null) {\n regionBottom += hitSlop.bottom;\n }\n if (hitSlop.left != null) {\n regionLeft -= hitSlop.left;\n }\n if (hitSlop.right != null) {\n regionRight += hitSlop.right;\n }\n if (hitSlop.top != null) {\n regionTop -= hitSlop.top;\n }\n }\n\n regionBottom += pressRectOffset?.bottom ?? DEFAULT_PRESS_RECT_OFFSETS.bottom;\n regionLeft -= pressRectOffset?.left ?? DEFAULT_PRESS_RECT_OFFSETS.left;\n regionRight += pressRectOffset?.right ?? DEFAULT_PRESS_RECT_OFFSETS.right;\n regionTop -= pressRectOffset?.top ?? DEFAULT_PRESS_RECT_OFFSETS.top;\n\n return touch.pageX > regionLeft && touch.pageX < regionRight && touch.pageY > regionTop && touch.pageY < regionBottom;\n }\n\n private _handleLongPress(event: PressEvent): void {\n if (this._touchState === 'RESPONDER_ACTIVE_PRESS_IN' || this._touchState === 'RESPONDER_ACTIVE_LONG_PRESS_IN') {\n this._receiveSignal('LONG_PRESS_DETECTED', event);\n }\n }\n\n private _shouldLongPressCancelPress(): boolean {\n return true;\n }\n\n private _cancelHoverInDelayTimeout(): void {\n if (this._hoverInDelayTimeout != null) {\n clearTimeout(this._hoverInDelayTimeout);\n this._hoverInDelayTimeout = null;\n }\n }\n\n private _cancelHoverOutDelayTimeout(): void {\n if (this._hoverOutDelayTimeout != null) {\n clearTimeout(this._hoverOutDelayTimeout);\n this._hoverOutDelayTimeout = null;\n }\n }\n\n private _cancelLongPressDelayTimeout(): void {\n if (this._longPressDelayTimeout != null) {\n clearTimeout(this._longPressDelayTimeout);\n this._longPressDelayTimeout = null;\n }\n }\n\n private _cancelPressDelayTimeout(): void {\n if (this._pressDelayTimeout != null) {\n clearTimeout(this._pressDelayTimeout);\n this._pressDelayTimeout = null;\n }\n }\n\n private _cancelPressOutDelayTimeout(): void {\n if (this._pressOutDelayTimeout != null) {\n clearTimeout(this._pressOutDelayTimeout);\n this._pressOutDelayTimeout = null;\n }\n }\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport { useEffect, useRef } from 'react';\n\nimport { Pressability } from './Pressability/Pressability';\nimport type { PressabilityConfig, PressabilityEventHandlers } from './Pressability/Pressability.types';\n\nexport function usePressability(config: PressabilityConfig): PressabilityEventHandlers {\n const pressabilityRef = useRef(null);\n if (pressabilityRef.current == null) {\n pressabilityRef.current = new Pressability(config);\n }\n const pressability = pressabilityRef.current;\n\n // On the initial mount, this is a no-op. On updates, `pressability` will be\n // re-configured to use the new configuration.\n useEffect(() => {\n pressability.configure(config);\n }, [config, pressability]);\n\n // On unmount, reset pending state and timers inside `pressability`. This is\n // a separate effect because we do not want to reset when `config` changes.\n useEffect(() => {\n return () => {\n pressability.reset();\n };\n }, [pressability]);\n\n return pressability.getEventHandlers();\n}\n", "import * as React from 'react';\n\nimport type { PressableFocusProps, PressableHoverProps, PressablePressProps } from './Pressability/Pressability.types';\nimport type {\n IPressableHooks,\n IWithPressableOptions,\n IPressState,\n IHoverState,\n IFocusState,\n IWithPressableEvents,\n} from './useAsPressable.types';\nimport { usePressability } from './usePressability';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype ObjectBase = {};\n\n/**\n * hover specific state and callback helper\n */\nfunction useHoverHelper(props: PressableHoverProps): [PressableHoverProps, IHoverState] {\n const [hoverState, setHoverState] = React.useState({ hovered: false });\n\n const onHoverIn = React.useCallback(\n (e) => {\n setHoverState({ hovered: true });\n if (props.onHoverIn) {\n props.onHoverIn(e);\n }\n },\n [setHoverState, props.onHoverIn],\n );\n\n const onHoverOut = React.useCallback(\n (e) => {\n setHoverState({ hovered: false });\n if (props.onHoverOut) {\n props.onHoverOut(e);\n }\n },\n [setHoverState, props.onHoverOut],\n );\n return [{ onHoverIn, onHoverOut }, hoverState];\n}\n\n/**\n * focus specific state and callback helper\n */\nfunction useFocusHelper(props: PressableFocusProps): [PressableFocusProps, IFocusState] {\n const [focusState, setFocusState] = React.useState({ focused: false });\n const onFocus = React.useCallback(\n (e) => {\n setFocusState({ focused: true });\n if (props.onFocus) {\n props.onFocus(e);\n }\n },\n [setFocusState, props.onFocus],\n );\n\n const onBlur = React.useCallback(\n (e) => {\n setFocusState({ focused: false });\n if (props.onBlur) {\n props.onBlur(e);\n }\n },\n [setFocusState, props.onBlur],\n );\n return [{ onFocus, onBlur }, focusState];\n}\n\n/**\n * press specific state and callback helper\n */\nfunction usePressHelper(props: PressablePressProps): [PressablePressProps, IPressState] {\n const [pressState, setPressState] = React.useState({ pressed: false });\n\n const onPressIn = React.useCallback(\n (e) => {\n setPressState({ pressed: true });\n if (props.onPressIn) {\n props.onPressIn(e);\n }\n },\n [setPressState, props.onPressIn],\n );\n\n const onPressOut = React.useCallback(\n (e) => {\n setPressState({ pressed: false });\n if (props.onPressOut) {\n props.onPressOut(e);\n }\n },\n [setPressState, props.onPressOut],\n );\n\n return [{ onPressIn, onPressOut }, pressState];\n}\n\n/**\n * A more focused version of useAsPressable, if only one state is needed. Note that if two or more states are needed then useAsPressable is better\n * as each of these calls will create a new instance of the Pressability class.\n * @param props - input props for the component\n */\nexport function useFocusState(props: IWithPressableOptions): [IWithPressableEvents, IFocusState] {\n const [focusProps, focusState] = useFocusHelper(props);\n return [{ ...props, ...usePressability({ ...props, ...focusProps }) }, focusState];\n}\n\n/**\n * A more focused version of useAsPressable, if only one state is needed. Note that if two or more states are needed then useAsPressable is better\n * as each of these calls will create a new instance of the Pressability class.\n * @param props - input props for the component\n */\nexport function usePressState(props: IWithPressableOptions): [IWithPressableEvents, IPressState] {\n const [pressProps, pressState] = usePressHelper(props);\n return [{ ...props, ...usePressability({ ...props, ...pressProps }) }, pressState];\n}\n\n/**\n * A more focused version of useAsPressable, if only one state is needed. Note that if two or more states are needed then useAsPressable is better\n * as each of these calls will create a new instance of the Pressability class.\n * @param props - input props for the component\n */\nexport function useHoverState(props: IWithPressableOptions): [IWithPressableEvents, IHoverState] {\n const [hoverProps, hoverState] = useHoverHelper(props);\n return [{ ...props, ...usePressability({ ...props, ...hoverProps }) }, hoverState];\n}\n\n/**\n * useAsPressable wraps the usePressability hook that will be available in RN 0.63 and beyond. Once this library is on a recent enough\n * version of react-native this implementation can switch to using the official version.\n *\n * The useAsPressable hook adds a simple state change function for listening to hover, press, and focus events on the base pressability implementation\n * @param props - input props for the component, mixed in with pressable and pressability options\n */\nexport function useAsPressable(props: IWithPressableOptions): IPressableHooks {\n const [hoverProps, hoverState] = useHoverHelper(props);\n const [focusProps, focusState] = useFocusHelper(props);\n const [pressProps, pressState] = usePressHelper(props);\n const pressabilityProps = usePressability({ ...props, ...hoverProps, ...focusProps, ...pressProps });\n\n return {\n props: { ...props, ...pressabilityProps },\n state: { ...hoverState, ...focusState, ...pressState },\n };\n}\n", "import * as React from 'react';\n\nimport type {\n HoverState,\n FocusState,\n PressState,\n PressableState,\n PressableFocusProps,\n PressableHoverProps,\n PressablePressProps,\n PressablePropsExtended,\n} from './usePressableState.types';\n\n/**\n * hover specific state and callback helper\n */\nexport function useHoverHelper(props: PressableHoverProps): [PressableHoverProps, HoverState] {\n const [hoverState, setHoverState] = React.useState({ hovered: false });\n const { onHoverIn, onHoverOut } = props;\n\n const _onHoverIn = React.useCallback(\n (e) => {\n setHoverState({ hovered: true });\n onHoverIn?.(e);\n },\n [setHoverState, onHoverIn],\n );\n\n const _onHoverOut = React.useCallback(\n (e) => {\n setHoverState({ hovered: false });\n onHoverOut?.(e);\n },\n [setHoverState, onHoverOut],\n );\n return [{ onHoverIn: _onHoverIn, onHoverOut: _onHoverOut }, hoverState];\n}\n\n/**\n * focus specific state and callback helper\n */\nexport function useFocusHelper(props: PressableFocusProps): [PressableFocusProps, FocusState] {\n const [focusState, setFocusState] = React.useState({ focused: false });\n const { onFocus, onBlur } = props;\n const _onFocus = React.useCallback(\n (e) => {\n setFocusState({ focused: true });\n onFocus?.(e);\n },\n [setFocusState, onFocus],\n );\n\n const _onBlur = React.useCallback(\n (e) => {\n setFocusState({ focused: false });\n onBlur?.(e);\n },\n [setFocusState, onBlur],\n );\n return [{ onFocus: _onFocus, onBlur: _onBlur }, focusState];\n}\n\n/**\n * press specific state and callback helper\n */\nexport function usePressHelper(props: PressablePressProps): [PressablePressProps, PressState] {\n const [pressState, setPressState] = React.useState({ pressed: false });\n const { onPressIn, onPressOut } = props;\n\n const _onPressIn = React.useCallback(\n (e) => {\n setPressState({ pressed: true });\n onPressIn?.(e);\n },\n [setPressState, onPressIn],\n );\n\n const _onPressOut = React.useCallback(\n (e) => {\n setPressState({ pressed: false });\n onPressOut?.(e);\n },\n [setPressState, onPressOut],\n );\n\n return [{ onPressIn: _onPressIn, onPressOut: _onPressOut }, pressState];\n}\n\n/**\n * This routine hooks the props to pass to a Pressable component to obtain the current state of the Pressable as well as generating\n * state change updates when those props change. This allows a parent component to control the render of the whole component rather than having\n * to split the code between a child function or style function.\n *\n * @param props - props to pass to a Pressable component\n * @returns - modified props to pass into the Pressable as well as the current state with regards to hover, focus, and press\n */\nexport function usePressableState(props: PressablePropsExtended): { props: PressablePropsExtended; state: PressableState } {\n const { onPressIn, onPressOut, onHoverIn, onHoverOut, onFocus, onBlur, ...rest } = props;\n const [hoverProps, hoverState] = useHoverHelper({ onHoverIn, onHoverOut });\n const [focusProps, focusState] = useFocusHelper({ onFocus, onBlur });\n const [pressProps, pressState] = usePressHelper({ onPressIn, onPressOut });\n\n return { props: { ...hoverProps, ...focusProps, ...pressProps, ...rest }, state: { ...hoverState, ...focusState, ...pressState } };\n}\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type { ElementRef, MutableRefObject, RefCallback } from 'react';\n\ntype Args = {\n getForwardedRef: () => RefCallback | MutableRefObject | null | undefined;\n setLocalRef: (ref: ElementRef) => unknown;\n};\n\n/**\n * This is a helper function for when a component needs to be able to forward a ref\n * to a child component, but still needs to have access to that component as part of\n * its implementation.\n *\n * Its main use case is in wrappers for native components.\n *\n * Usage:\n *\n * class MyView extends React.Component {\n * _nativeRef = null;\n *\n * _setNativeRef = setAndForwardRef({\n * getForwardedRef: () => this.props.forwardedRef,\n * setLocalRef: ref => {\n * this._nativeRef = ref;\n * },\n * });\n *\n * render() {\n * return ;\n * }\n * }\n *\n * export const MyViewWithRef = React.forwardRef((props, ref) => (\n * \n * ));\n */\n\nexport function setAndForwardRef({ getForwardedRef, setLocalRef }: Args): (ref: ElementRef) => void {\n return function forwardRef(ref: ElementRef) {\n const forwardedRef = getForwardedRef();\n\n setLocalRef(ref);\n\n // Forward to user ref prop (if one has been specified)\n if (typeof forwardedRef === 'function') {\n // Handle function-based refs. String-based refs are handled as functions.\n forwardedRef(ref);\n } else if (typeof forwardedRef === 'object' && forwardedRef != null) {\n // Handle createRef-based refs\n forwardedRef.current = ref;\n }\n };\n}\n", "import * as React from 'react';\nimport type { View } from 'react-native';\n\nimport { setAndForwardRef } from './setAndForwardRef';\n\nexport type IFocusable = View;\n/**\n * We need the win32 version of this hook to work around an lack of a UIManager.focus implementation.\n * On other platforms this hook is unnecessary.\n * @param forwardRef - The componentRef from your component's props where you're exposing a imperative focus method.\n * @returns The inner View-type you're rendering that you want to dispatch to & focus on.\n */\nexport function useViewCommandFocus(\n forwardedRef: React.Ref | undefined,\n // initialValue?: React.Component\n): (ref: React.ElementRef) => void {\n /**\n * Set up the forwarding ref to enable adding the focus method.\n */\n const focusRef = React.useRef();\n\n const _setNativeRef = setAndForwardRef({\n getForwardedRef: () => forwardedRef,\n setLocalRef: (localRef: any) => {\n focusRef.current = localRef;\n },\n });\n return _setNativeRef;\n}\n", "import * as React from 'react';\n\nexport type onKeySelectCallback = (key: string) => void;\n\n// This hook updates the selected button and calls the client's onChange callback with the new button\nexport function useSelectedKey(defaultSelectedKey: string | null, userCallback?: onKeySelectCallback) {\n const [selectedKey, setSelectedKey] = React.useState(defaultSelectedKey);\n\n const onKeySelect = React.useCallback(\n (key: string) => {\n setSelectedKey(key);\n userCallback && userCallback(key);\n },\n [setSelectedKey, userCallback],\n );\n\n return { onKeySelect, selectedKey };\n}\n", "import * as React from 'react';\n\nexport type OnToggleCallback = (value?: boolean) => void;\nexport type OnChangeCallback = () => void;\n\n/* Re-usable hook for toggle components.\n * This hook configures the checked state, the callback to toggle the component\n * It handles the controlled/uncontrolled functionality of the toggle component.\n *\n * PROPS: defaultChecked - Default checked state. Mutually exclusive to ‘checked’. This should come from userProps\n * checked - Checked state. Mutually exclusive to 'defaultChecked'. This should come from userProps\n * userCallback() - Callback provided by userProps when the checked (toggle) state changes\n * RETURNS:\n * onChange() - Callback to toggle the component\n * state.isChecked - Whether or not component is currently checked or selected\n */\nexport function useAsToggle(defaultChecked?: boolean, checked?: boolean, userCallback?: OnToggleCallback): [boolean, OnChangeCallback] {\n const [isChecked, setChecked] = React.useState(defaultChecked ?? checked);\n\n const onChange = React.useCallback(() => {\n userCallback && userCallback(!isChecked);\n setChecked(!isChecked);\n }, [isChecked, setChecked]);\n\n return [checked ?? isChecked, onChange];\n}\n", "import * as React from 'react';\n\ntype FunctionToValue = () => T;\n\n/**\n * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to\n * always return the same value (and if the initializer is a function, only call it once).\n * This is similar to setting a private member in a class constructor.\n *\n * If the value should ever change based on dependencies, use `React.useMemo` instead.\n *\n * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`,\n * only the value/function passed in the first time this is called is respected.\n * @returns The value. The identity of this value will always be the same.\n */\nexport function useConst(initialValue: T | FunctionToValue): T {\n // Use useRef to store the value because it's the least expensive built-in hook that works here\n // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive\n // internally due to reducer handling which we don't need)\n const ref = React.useRef<{ value: T }>();\n if (ref.current === undefined) {\n // Box the value in an object so we can tell if it's initialized even if the initializer\n // returns/is undefined\n ref.current = {\n value: typeof initialValue === 'function' ? (initialValue as FunctionToValue)() : initialValue,\n };\n }\n return ref.current.value;\n}\n", "import * as React from 'react';\n\nimport { useConst } from './useConst';\n\nexport type ValueChangeCallback | undefined> = (\n ev: TEvent,\n newValue: TValue | undefined,\n) => void;\n\ntype ConvertToValue = (current: unknown) => TValue;\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function useControllableValue(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n): Readonly<[TValue | undefined, (update: React.SetStateAction) => void]>;\n\nexport function useControllableValue | undefined>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange: ValueChangeCallback | undefined,\n): Readonly<[TValue | undefined, (update: React.SetStateAction, ev?: React.FormEvent) => void]>;\n\nexport function useControllableValue | undefined>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: ValueChangeCallback,\n) {\n const [value, setValue] = React.useState(defaultUncontrolledValue);\n const isControlled = useConst(controlledValue !== undefined);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = React.useRef(currentValue);\n const onChangeRef = React.useRef(onChange);\n React.useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useConst(() => (update: React.SetStateAction, ev?: TEvent) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === 'function' ? (update as ConvertToValue)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(ev!, newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n });\n\n return [currentValue, setValueOrCallOnChange] as const;\n}\n", "import * as React from 'react';\n\nimport type { InteractionEvent } from './events.types';\nimport { useControllableValue } from './useControllableValue';\n\nexport type OnToggleWithEventCallback = (e: InteractionEvent, value?: boolean) => void;\nexport type OnChangeWithEventCallback = (e: InteractionEvent) => void;\n\n/* Re-usable hook for toggle components.\n * This hook configures the checked state, the callback to toggle the component\n * It handles the controlled/uncontrolled functionality of the toggle component.\n *\n * PROPS: defaultChecked - Default checked state. Mutually exclusive to ‘checked’. This should come from userProps\n * checked - Checked state. Mutually exclusive to 'defaultChecked'. This should come from userProps\n * userCallback() - Callback provided by userProps when the checked (toggle) state changes\n * RETURNS:\n * onChange() - Callback to toggle the component\n * state.isChecked - Whether or not component is currently checked or selected\n */\nexport function useAsToggleWithEvent(\n defaultChecked?: boolean,\n checked?: boolean,\n userCallback?: OnToggleWithEventCallback,\n): [boolean, OnChangeWithEventCallback] {\n const [isChecked, setChecked] = useControllableValue(checked, defaultChecked);\n\n const onChange = React.useCallback(\n (e: any) => {\n userCallback && userCallback(e, !isChecked);\n setChecked(!isChecked);\n },\n [isChecked, setChecked, userCallback],\n );\n\n return [isChecked, onChange];\n}\n", "import * as React from 'react';\nimport { Platform } from 'react-native';\n\nimport { memoize } from '@fluentui-react-native/framework-base';\n\nimport type { KeyCallback, KeyPressEvent, KeyPressProps } from './useKeyProps.types';\n\nconst shouldAllowShiftCtrlKeys = Platform.OS === ('win32' as any);\n\n/**\n * Verifies if nativeEvent contains modifier key. The modifier keys that should\n * be taken into account differ based on platform\n * @param nativeEvent\n * @returns `true` if one or more of modifier keys are `true`\n */\nconst isModifierKey = (nativeEvent: any): boolean => {\n if (shouldAllowShiftCtrlKeys) {\n return nativeEvent && (nativeEvent.alt || nativeEvent.altKey || nativeEvent.meta || nativeEvent.metaKey);\n } else {\n return (\n nativeEvent &&\n (nativeEvent.alt ||\n nativeEvent.altKey ||\n nativeEvent.ctrl ||\n nativeEvent.ctrlKey ||\n nativeEvent.meta ||\n nativeEvent.metaKey ||\n nativeEvent.shift ||\n nativeEvent.shiftKey)\n );\n }\n};\n\nfunction keyPressCallback(userCallback?: KeyCallback, ...keys: string[]) {\n const onKeyEvent = (e: KeyPressEvent) => {\n if (userCallback !== undefined && !isModifierKey(e.nativeEvent) && (keys === undefined || keys.includes(e.nativeEvent.key))) {\n userCallback(e);\n e.stopPropagation();\n }\n };\n return onKeyEvent;\n}\n\nfunction getKeyUpPropsWorker(userCallback: KeyCallback, ...keys: string[]): KeyPressProps {\n const keyboardProps = Platform.select({\n ios: undefined,\n android: undefined,\n macos: {\n onKeyUp: keyPressCallback(userCallback, ...keys),\n validKeysUp: keys,\n },\n windows: {\n /**\n * https://github.com/microsoft/react-native-windows/issues/11049\n * Windows doesn't filter on `key` but on `code`, which is quite different ('A' vs 'KeyA' or 'GamepadA').\n * While this discrepancy is present, let's not specify `keyUpEvents`.\n */\n onKeyUp: keyPressCallback(userCallback, ...keys),\n },\n // win32\n default: {\n onKeyUp: keyPressCallback(userCallback, ...keys),\n keyUpEvents: keys.map((keyCode) => {\n return { key: keyCode };\n }),\n },\n });\n return keyboardProps;\n}\n\nfunction getKeyDownPropsWorker(userCallback: KeyCallback, ...keys: string[]): KeyPressProps {\n const keyboardProps = Platform.select({\n ios: undefined,\n android: undefined,\n macos: {\n onKeyDown: keyPressCallback(userCallback, ...keys),\n validKeysDown: keys,\n },\n windows: {\n /**\n * https://github.com/microsoft/react-native-windows/issues/11049\n * Windows doesn't filter on `key` but on `code`, which is quite different ('A' vs 'KeyA' or 'GamepadA').\n * While this discrepancy is present, let's not specify `keyDownEvents`.\n */\n onKeyDown: keyPressCallback(userCallback, ...keys),\n },\n // win32\n default: {\n onKeyDown: keyPressCallback(userCallback, ...keys),\n keyDownEvents: keys.map((keyCode) => {\n return { key: keyCode };\n }),\n },\n });\n return keyboardProps;\n}\n\n/**\n * Re-usable hook for an onKeyUp event.\n * @param userCallback The function you want to be called once the key has been activated on key up\n * @param keys A string of the key you want to perform some action on. If undefined, always invokes userCallback\n * @returns KeyPressProps: An object containing the correct platform specific props to handle key press\n */\nexport const useKeyUpProps = memoize(getKeyUpPropsWorker);\n\n/**\n * Re-usable hook for an onKeyDown event.\n * @param userCallback The function you want to be called once the key has been activated on key down\n * @param keys A string of the key you want to perform some action on. If undefined, always invokes userCallback\n * @returns KeyPressProps: An object containing the correct platform specific props to handle key press\n */\nexport const useKeyDownProps = memoize(getKeyDownPropsWorker);\n\n/** Exposes the behavior of useKeyProps for the current platform as a boolean */\nexport const preferKeyDownForKeyEvents = Platform.select({\n macos: true,\n default: false,\n});\n\n/**\n * Re-usable hook for keyboard events. on macOS, this is onKeyDown, while on windows this is onKeyUp.\n * @param userCallback The function you want to be called once the key has been activated on key down\n * @param keys A string of the key you want to perform some action on. If undefined, always invokes userCallback\n * @returns KeyPressProps: An object containing the correct platform specific props to handle key press\n */\nexport const useKeyProps = preferKeyDownForKeyEvents ? useKeyDownProps : useKeyUpProps;\n\n/**\n * Re-usable hook for an onKeyDown event.\n * @param userCallback The function you want to be called once the key has been activated on key up\n * @param keys A string of the key you want to perform some action on. If undefined, always invokes userCallback\n * @returns onKeyEvent() - Callback to determine if key was pressed, if so, call userCallback\n * @deprecated use the hook `useKeyProps` instead\n */\nexport function useKeyCallback(userCallback?: KeyCallback, ...keys: string[]) {\n const onKeyEvent = React.useCallback(\n (e: KeyPressEvent) => {\n if (userCallback !== undefined && (keys === undefined || keys.includes(e.nativeEvent.key))) {\n userCallback(e);\n e.stopPropagation();\n }\n },\n [keys, userCallback],\n );\n\n return onKeyEvent;\n}\n", "import * as React from 'react';\nimport type { GestureResponderEvent } from 'react-native';\nimport { Platform } from 'react-native';\n\nexport type OnPressCallback = (args: GestureResponderEvent) => void;\nexport type OnPressWithFocusCallback = (args: GestureResponderEvent) => void;\n\n/**\n * Sets focus on the focusRef after calling the userCallback for onPress, if that is an expected behavior on the platform\n * @param focusRef the ref used to set focus, generally the ref of the component that is being pressed\n * @param userCallback user-provided callback for onPress behavior\n * @returns Hook that sets focus, then calls the user callback\n */\nexport function useOnPressWithFocus(focusRef: React.RefObject, userCallback: OnPressCallback): OnPressWithFocusCallback {\n const onPressWithFocus = React.useCallback(\n (args?: any) => {\n const platformSupportsFocus = ['windows', 'win32', 'macos'].includes(Platform.OS as string);\n const takesFocusOnClick = ['windows', 'win32'].includes(Platform.OS as string);\n if (platformSupportsFocus && takesFocusOnClick) {\n focusRef?.current?.focus();\n }\n\n userCallback?.(args);\n },\n [userCallback, focusRef],\n );\n\n return onPressWithFocus;\n}\n", "import type { AccessibilityState } from 'react-native';\n\nimport { memoize } from '@fluentui-react-native/framework-base';\n\nexport const getAccessibilityState = memoize(getAccessibilityStateWorker);\nexport function getAccessibilityStateWorker(disabled: boolean, accessibilityState?: AccessibilityState) {\n if (accessibilityState) {\n return { disabled: disabled, ...accessibilityState };\n }\n return { disabled: disabled };\n}\n", "export { isAccessibilityActionEvent, isGestureResponderEvent, isKeyPressEvent, isMouseEvent } from './events.types';\nexport type { InteractionEvent } from './events.types';\nexport type {\n IFocusState,\n IHoverState,\n IPressState,\n IPressableHooks,\n IPressableOptions,\n IPressableState,\n IWithPressableEvents,\n IWithPressableOptions,\n} from './useAsPressable.types';\nexport { useAsPressable, useFocusState, useHoverState, usePressState } from './useAsPressable';\nexport type { PressablePropsExtended, PressableState, FocusState } from './usePressableState.types';\nexport { usePressableState } from './usePressableState';\nexport { usePressability } from './usePressability';\nexport { useViewCommandFocus } from './useViewCommandFocus';\nexport type { IFocusable } from './useViewCommandFocus';\nexport { useSelectedKey } from './useSelectedKey.hooks';\nexport type { onKeySelectCallback } from './useSelectedKey.hooks';\nexport { useAsToggle } from './useAsToggle';\nexport type { OnChangeCallback, OnToggleCallback } from './useAsToggle';\nexport { useAsToggleWithEvent } from './useAsToggleWithEvent';\nexport type { ValueChangeCallback } from './useControllableValue';\nexport { useControllableValue } from './useControllableValue';\nexport type { OnChangeWithEventCallback, OnToggleWithEventCallback } from './useAsToggleWithEvent';\nexport type {\n PressabilityConfig,\n PressabilityEventHandlers,\n PressableFocusProps,\n PressableHoverEventProps,\n PressableHoverProps,\n PressablePressProps,\n} from './Pressability/Pressability.types';\nexport { normalizeRect } from './Pressability/InternalTypes';\nexport type {\n AbstractComponent,\n ComponentMethods,\n HostComponent,\n MeasureInWindowOnSuccessCallback,\n MeasureLayoutOnSuccessCallback,\n MeasureOnSuccessCallback,\n NativeMethods,\n Rect,\n RectOrSize,\n} from './Pressability/InternalTypes';\nexport type {\n BlurEvent,\n FocusEvent,\n Layout,\n LayoutEvent,\n MouseEvent,\n PressEvent,\n ResponderSyntheticEvent,\n ScrollEvent,\n SyntheticEvent,\n TextLayout,\n TextLayoutEvent,\n} from './Pressability/CoreEventTypes';\nexport type { KeyPressEvent, KeyCallback, KeyPressProps } from './useKeyProps.types';\nexport { preferKeyDownForKeyEvents, useKeyCallback, useKeyDownProps, useKeyProps, useKeyUpProps } from './useKeyProps';\nexport { useOnPressWithFocus } from './useOnPressWithFocus';\nexport type { OnPressCallback, OnPressWithFocusCallback } from './useOnPressWithFocus';\nexport { getAccessibilityState } from './getAccessibilityState';\n", "import type { ColorValue, Text, TextStyle } from 'react-native';\n\nimport type { ITextProps } from '@fluentui-react-native/adapters';\nimport type { FontTokens, FontVariantTokens, IForegroundColorTokens } from '@fluentui-react-native/framework';\n\nexport const textName = 'Text';\n\n/**\n * Text tokens, these are the internally configurable values for Text elements. In particular these\n * drive decisions on how to build the styles\n */\nexport type TextTokens = Omit &\n IForegroundColorTokens &\n Omit & {\n /**\n * (iOS only) The Dynamic Type ramp that a Text element should follow as the user changes their\n * preferred content size.\n */\n dynamicTypeRamp?: TextProps['dynamicTypeRamp'];\n\n /**\n * (iOS only) The maximum font size that a Text element will grow to as the user changes their\n * preferred content size.\n */\n maximumFontSize?: number;\n };\n\nexport type TextAlign = 'start' | 'center' | 'end' | 'justify';\nexport type TextFont = 'base' | 'monospace' | 'numeric';\nexport type TextSize = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000;\nexport type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';\n\n/**\n * Text props, based off of the standard react-native TextProps with some new extensions\n */\nexport type TextProps = TBase &\n FontVariantTokens & {\n /**\n * foreground text color\n */\n color?: ColorValue;\n\n /**\n * Aligns text based on the parent container.\n *\n * @defaultValue start\n */\n align?: TextAlign;\n\n /**\n * Applies a block display for the content.\n *\n * @defaultValue false\n */\n block?: boolean;\n\n /**\n * A RefObject to the Text object. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * Applies the font family to the content.\n *\n * @defaultValue base\n */\n font?: TextFont;\n\n /**\n * Applies the italic font style to the content.\n *\n * @defaultValue false\n */\n italic?: boolean;\n\n /**\n * Applies the strikethrough text decoration to the content.\n *\n * @defaultValue false\n */\n strikethrough?: boolean;\n\n /**\n * Applies font size and line height based on the theme tokens.\n *\n * @defaultValue 300\n */\n size?: TextSize;\n\n /**\n * Truncate overflowing text for block displays.\n *\n * @defaultValue false\n */\n truncate?: boolean;\n\n /**\n * Applies the underline text decoration to the content.\n *\n * @defaultValue false\n */\n underline?: boolean;\n\n /**\n * Applies font weight to the content.\n *\n * @defaultValue regular\n */\n weight?: TextWeight;\n\n /**\n * Wraps the text content on white spaces.\n *\n * @defaultValue true\n */\n wrap?: boolean;\n };\n", "import { buildUseTokens } from '@fluentui-react-native/framework';\n\nimport type { TextTokens } from './Text.types';\nimport { textName } from './Text.types';\n\nexport const useTextTokens = buildUseTokens(\n (t) => ({\n variant: 'secondaryStandard',\n color: t.colors.bodyText,\n }),\n textName,\n);\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport React from 'react';\nimport { I18nManager, Platform, Text as RNText } from 'react-native';\n\nimport type { UseTokens, FontWeightValue } from '@fluentui-react-native/framework';\nimport { fontStyles, withSlots, useFluentTheme, mergeStyles, compressible, patchTokens } from '@fluentui-react-native/framework';\nimport { useKeyProps } from '@fluentui-react-native/interactive-hooks';\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\n\nimport type { TextProps, TextTokens } from './Text.types';\nimport { textName } from './Text.types';\nimport { useTextTokens } from './TextTokens';\n\nconst emptyProps = {};\nexport const Text = compressible((props: TextProps, useTokens: UseTokens) => {\n if (props === undefined) {\n props = emptyProps;\n }\n\n // split out color and variant from props\n const {\n align = undefined,\n block,\n color,\n componentRef,\n font,\n italic,\n numberOfLines,\n onAccessibilityTap,\n onKeyUp,\n onKeyDown,\n keyUpEvents,\n keyDownEvents,\n onPress,\n size,\n strikethrough,\n style,\n truncate = false,\n underline,\n variant,\n weight,\n wrap = true,\n ...rest\n } = props;\n const theme = useFluentTheme();\n // get the tokens from the theme\n let [tokens, cache] = useTokens(theme);\n\n const textAlign = I18nManager.isRTL\n ? align === 'start'\n ? 'right'\n : align === 'end'\n ? 'left'\n : align\n : align === 'start'\n ? 'left'\n : align === 'end'\n ? 'right'\n : align;\n\n const textOnPress = React.useCallback(\n (e) => {\n if (onPress) {\n onPress(e);\n }\n e.stopPropagation();\n },\n [onPress],\n );\n const keyProps = useKeyProps(textOnPress, ' ', 'Enter');\n\n const onAccTap = React.useCallback(\n (event?) => {\n onAccessibilityTap ? onAccessibilityTap() : onPress(event);\n },\n [onPress, onAccessibilityTap],\n );\n\n // override tokens from props\n [tokens, cache] = patchTokens(tokens, cache, {\n color,\n variant,\n fontFamily: font == 'base' ? 'primary' : font,\n fontMaximumSize: tokens.maximumFontSize,\n fontSize: globalTokens.font['size' + size],\n fontWeight: globalTokens.font.weight[weight] as FontWeightValue,\n // leave it undefined for tokens to be set by user\n fontStyle: italic ? 'italic' : undefined,\n textAlign: textAlign,\n textDecorationLine:\n underline && strikethrough ? 'underline line-through' : underline ? 'underline' : strikethrough ? 'line-through' : undefined,\n });\n\n // now build the text style from tokens that can be shared between different Text instances\n const [tokenStyle] = cache(\n () => ({\n margin: 0,\n color: tokens.color,\n fontStyle: tokens.fontStyle,\n textAlign: tokens.textAlign,\n textDecorationLine: tokens.textDecorationLine,\n ...fontStyles.from(tokens, theme),\n }),\n ['color', 'fontStyle', 'textAlign', 'textDecorationLine', ...fontStyles.keys],\n );\n\n // Safety measure: Dynamic Type is an iOS-specific thing\n const dynamicTypeVariant = Platform.OS === 'ios' ? tokenStyle.dynamicTypeRamp : undefined;\n\n let maxFontSizeScaleAdjustment: TextProps = emptyProps;\n // tokenStyle.fontSize can also be a string (e.g., \"14px\").\n // Therefore, we only support scaling for number-based size values in order to avoid any messy calculations.\n if (dynamicTypeVariant !== undefined && typeof tokenStyle.fontSize === 'number' && tokenStyle.maximumFontSize !== undefined) {\n maxFontSizeScaleAdjustment = {\n maxFontSizeMultiplier: tokenStyle.maximumFontSize / tokenStyle.fontSize,\n };\n }\n\n const isWinPlatform = Platform.OS === (('win32' as any) || 'windows');\n const filteredProps = {\n onKeyUp: isWinPlatform ? onKeyUp : undefined,\n keyUpEvents: isWinPlatform ? keyUpEvents : undefined,\n validKeysUp: undefined,\n onKeyDown: isWinPlatform ? onKeyDown : undefined,\n keyDownEvents: isWinPlatform ? keyDownEvents : undefined,\n validKeysDown: undefined,\n onAccessibilityTap: isWinPlatform ? onAccTap : undefined,\n };\n\n // return a continuation function that allows this text to be compressed\n return (extra: TextProps, children: React.ReactNode) => {\n const mergedProps = {\n ...rest,\n ...keyProps,\n ...filteredProps,\n ...extra,\n ...maxFontSizeScaleAdjustment,\n onPress,\n numberOfLines: numberOfLines ?? (truncate || !wrap ? 1 : 0),\n style: mergeStyles(tokenStyle, props.style, extra?.style),\n };\n\n // RN TextStyle doesn't recognize these properties.\n // Don't let them leak through or RN will complain about invalid props.\n delete (mergedProps.style as TextTokens).dynamicTypeRamp;\n delete (mergedProps.style as TextTokens).maximumFontSize;\n\n return (\n \n {children}\n \n );\n };\n}, useTextTokens);\nText.displayName = textName;\n\nexport default Text;\n", "import { Text } from './Text';\n\n// stubbed out for other platforms for which variant alias tokens aren't defined\nexport const Caption1 = Text;\nexport const Caption1Strong = Text;\nexport const Caption2 = Text;\nexport const Body1 = Text;\nexport const Body1Strong = Text;\nexport const Body2 = Text;\nexport const Body2Strong = Text;\nexport const Subtitle1 = Text;\nexport const Subtitle1Strong = Text;\nexport const Subtitle2 = Text;\nexport const Subtitle2Strong = Text;\nexport const Title1 = Text;\nexport const Title1Strong = Text;\nexport const Title2 = Text;\nexport const Title3 = Text;\nexport const LargeTitle = Text;\nexport const Display = Text;\n", "import type { ITextProps as INativeTextProps } from '@fluentui-react-native/adapters';\nimport type { FontTokens, FontVariantTokens, IForegroundColorTokens, IColorTokens } from '@fluentui-react-native/tokens';\n\nexport const textName = 'RNFText';\n\n/**\n * Properties for fabric native text field, these extend the default props for text\n */\nexport type ITextProps = TBase &\n FontVariantTokens &\n IForegroundColorTokens & {\n disabled?: boolean;\n };\n\nexport type ITextType = {\n props: ITextProps;\n tokens: FontTokens & IColorTokens;\n slotProps: {\n root: TBase;\n };\n};\n", "/* eslint-disable */\n\nimport { MergeOptions, immutableMergeCore } from '@fluentui-react-native/framework-base';\nimport { IComponentSettingsCollection, IComponentSettings, ISlotProps, IOverrideLookup } from './Settings.types';\nimport { mergeProps } from '@fluentui-react-native/framework-base';\n\n/**\n * an individual settings block is a set of slotProps, with an additional collection of tokens.\n */\nconst _mergeSettingsOptions: MergeOptions = {\n // tokens should be merged but not recurse\n tokens: 0,\n\n // all other objects should be treated as props\n object: mergeProps,\n\n // overrides have a collection of objects which each are treated as settings\n get _overrides() {\n return { object: this };\n },\n};\n\n/**\n * A collection of settings simply applies settings down one level\n */\nconst _mergeCollectionOptions: MergeOptions = {\n object: _mergeSettingsOptions,\n};\n\n/**\n * Merge settings together. This routine should work for IComponentSettings types or ISlotProps\n * @param settings - settings to merge together\n */\nexport function mergeSettings(...settings: (object | undefined)[]): TSettings {\n return immutableMergeCore(_mergeSettingsOptions, ...settings) as TSettings;\n}\n\n/**\n * Merge collections of settings together. This can handle theme resolution or merging sets of overrides\n * @param collections - the settings collections to merge\n */\nexport function mergeSettingsCollection(\n ...collections: object[]\n): TCollection {\n return immutableMergeCore(_mergeCollectionOptions, ...collections) as TCollection;\n}\n\nexport function getActiveOverrides(target: IComponentSettings, lookup?: IOverrideLookup): string[] {\n const hasOverride = typeof lookup === 'function' ? lookup : (o) => lookup[o];\n return (target && target._precedence && target._precedence.filter((o) => hasOverride(o))) || [];\n}\n\n/**\n * Apply overrides to `target`, producing a new settings object if any need to be applied.\n *\n * `overrideLookup` is an object where keys will be looked up in the order specified by the precedence array.\n * The values inside this structure can be any type but will cause the override to apply if they are truthy\n */\nexport function resolveSettingsOverrides(target: IComponentSettings, overrideLookup?: IOverrideLookup): IComponentSettings {\n let result = target;\n const { _overrides, _precedence } = target;\n if (overrideLookup && _overrides && _precedence) {\n const overrides = getActiveOverrides(target, overrideLookup);\n for (const override of overrides) {\n result = mergeSettings(result, result._overrides[override]);\n }\n }\n return result;\n}\n\n/**\n * Turn a settings object into a slot props object.\n * @param target - settings block to strip the settings specific information from\n */\nexport function slotPropsFromSettings(target: IComponentSettings): ISlotProps {\n const { _overrides, _precedence, ...slotProps } = target;\n return slotProps as ISlotProps;\n}\n", "export type {\n IComponentSettings,\n IComponentSettingsCollection,\n IOverrideFunction,\n IOverrideLookup,\n IOverrideMask,\n IPartialSlotProps,\n ISlotProps,\n IWithTokens,\n} from './Settings.types';\nexport { getActiveOverrides, mergeSettings, mergeSettingsCollection, resolveSettingsOverrides, slotPropsFromSettings } from './Settings';\n", "/* eslint-disable */\n\nimport * as React from 'react';\nimport { IRenderData, ISlotWithFilter, IComposable, IWithComposable, ISlots, IPropFilter, INativeSlotType } from './Composable.types';\nimport { mergeSettings, ISlotProps } from '@uifabricshared/foundation-settings';\nimport { mergeProps } from '@fluentui-react-native/framework-base';\n\nexport type ISlotFn = React.FunctionComponent & {\n _canCompose?: boolean;\n};\n\ninterface ISlotRenderInfo {\n composable: IComposable;\n renderData?: IRenderData;\n slotInfo?: ISlotWithFilter;\n childInfo?: { [key: string]: ISlotRenderInfo };\n Slots?: ISlots;\n}\n\nfunction _mergeAndFilterProps(propsBase: TProps, propsExtra: TProps, filter?: IPropFilter): TProps {\n // do a basic merge, not mutating if nothing changed\n let props = mergeProps(propsBase, propsExtra);\n if (filter && props) {\n const removeMask = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n if (!filter(key)) {\n removeMask[key] = undefined;\n }\n });\n props = mergeProps(props, removeMask as TProps);\n }\n return props;\n}\n\n/**\n * Helper function to add the _canCompose settings to a given render function\n * @param fn - function to decorate with _canCompose\n */\nfunction _createSlotRenderFunction(fn: React.FunctionComponent): React.FunctionComponent {\n (fn as ISlotFn)._canCompose = true;\n return fn;\n}\n\nfunction createSlotRenderInfo(\n composable: IComposable,\n slotInfo?: ISlotWithFilter,\n): ISlotRenderInfo {\n const renderInfo: ISlotRenderInfo = { composable, slotInfo };\n const slots = composable && composable.slots;\n if (slots) {\n const Slots = (renderInfo.Slots = {} as ISlots);\n const childInfo = (renderInfo.childInfo = {});\n\n Object.getOwnPropertyNames(slots).forEach((slot: string) => {\n const { slotType, filter } = slots[slot];\n const composable =\n (typeof slotType !== 'string' && (slotType as IWithComposable>).__composable) ||\n undefined;\n const childRenderInfo = (childInfo[slot as string] = createSlotRenderInfo(composable, slots[slot]));\n if (composable) {\n // create the actual closure for rendering handing it a reference to the render info\n Slots[slot] = _createSlotRenderFunction((extraProps: object, ...children: React.ReactNode[]) => {\n const { renderData, Slots } = childRenderInfo;\n if (filter || extraProps) {\n const toMerge = { root: _mergeAndFilterProps(renderData.slotProps.root, extraProps, filter) };\n renderData.slotProps = mergeSettings(renderData.slotProps, toMerge as TSlotProps);\n }\n return composable.render(Slots, renderData, ...children);\n });\n } else {\n // non-composable components should just render directly\n Slots[slot] = _createSlotRenderFunction((extraProps: object, ...children: React.ReactNode[]) => {\n const props = _mergeAndFilterProps(childRenderInfo.renderData.slotProps.root, extraProps, filter);\n return React.createElement(slotType as INativeSlotType, props, ...children);\n });\n }\n });\n }\n return renderInfo;\n}\n\nfunction useUpdateRenderData(\n props: TProps,\n info: ISlotRenderInfo,\n): { renderData: IRenderData; Slots: ISlots } {\n // update the render data for this level of the hierarchy\n if (info.composable) {\n const { usePrepareProps, useStyling } = info.composable;\n info.renderData = usePrepareProps(props, useStyling) || {};\n } else {\n info.renderData = { slotProps: { root: props } as unknown as TSlotProps };\n }\n\n // now traverse to children if needed\n const childInfo = info.childInfo;\n if (childInfo) {\n const slotProps = info.renderData.slotProps || {};\n Object.getOwnPropertyNames(childInfo).forEach((child) => {\n useUpdateRenderData(slotProps[child], childInfo[child]);\n });\n }\n\n // return the updated renderData and cached Slots\n return { renderData: info.renderData, Slots: info.Slots };\n}\n\n/**\n * Driver function for the prop preparation phase of rendering a composable control\n *\n * @param props - user props send to prepare props\n * @param composable - composable for this component\n */\nexport function useCompoundPrepare(\n props: TProps,\n composable: IComposable,\n): { renderData: IRenderData; Slots: ISlots } {\n // create the slot render info (which may be a tree) and store it into state once. Note that this will also create any\n // needed closures for the slots to ensure they don't get recreated over the lifetime of the component\n const renderInfo = React.useMemo(() => createSlotRenderInfo(composable), []);\n\n // process the props of the tree using the created/retrieved renderInfo\n return useUpdateRenderData(props, renderInfo);\n}\n", "/* eslint-disable */\n\nimport * as React from 'react';\nimport {\n IComposable,\n IPropFilter,\n INativeSlotType,\n IWithComposable,\n IRenderData,\n ISlots,\n IComposableDefinition,\n IExtractProps,\n IExtractSlotProps,\n IExtractState,\n IDefineUseStyling,\n IComposableType,\n ISlotWithFilter,\n} from './Composable.types';\nimport { useCompoundPrepare } from './Composable.slots';\nimport { renderSlot } from '@fluentui-react-native/framework-base';\nimport { ISlotProps, mergeSettings } from '@uifabricshared/foundation-settings';\n\nexport function atomicRender(\n Slots: ISlots>,\n _renderData: IRenderData, TState>,\n ...children: React.ReactNode[]\n): JSX.Element | null {\n return renderSlot(Slots.root, undefined, ...children);\n}\n\nexport function atomicUsePrepareProps, TState = object>(\n props: TProps,\n useStyling: IDefineUseStyling,\n): IRenderData {\n const slotProps = mergeSettings(useStyling(props), { root: props } as unknown as TSlotProps);\n return { slotProps };\n}\n\n/**\n * Ensure the composable is set up correctly, fill in missing functions and turn slots into\n * object format rather than the shorthand format.\n *\n * @param options - partial options definition to turn into full options\n */\nfunction _validateOptions(\n options: IComposableDefinition,\n): IComposable {\n const numSlots = (options.slots && Object.getOwnPropertyNames(options.slots).length) || 0;\n if (!numSlots) {\n throw 'A composable component must have at least one slot specified';\n } else if (numSlots > 1) {\n if (!options.render) {\n throw 'A composable component with multiple slots cannot use the default render implementation';\n }\n }\n // ensure slots are in slot with filter format\n for (const key in options.slots) {\n const slot = options.slots[key];\n if (slot && (typeof slot !== 'object' || !(slot as ISlotWithFilter).slotType)) {\n options.slots[key] = { slotType: slot } as ISlotWithFilter;\n }\n }\n if (!options.useStyling) {\n options.useStyling = () => {\n return {} as TSlotProps;\n };\n }\n // use atomic handlers for usePrepareProps / render if necessary\n options.render = options.render || atomicRender;\n options.usePrepareProps = options.usePrepareProps || atomicUsePrepareProps;\n\n // return options as the full type rather than a partial\n return options as IComposable;\n}\n\n/**\n * Create a component that can be composed into other objects to remove extra levels from the tree\n *\n * @param options - composable options which define the behavior of the component\n */\nexport function composable(\n definition: IComposableDefinition, IExtractSlotProps, IExtractState>,\n): IWithComposable<\n React.FunctionComponent>,\n IComposable, IExtractSlotProps, IExtractState>\n> {\n // type aliases\n type IProps = IExtractProps;\n type IThisSlotProps = IExtractSlotProps;\n type IState = IExtractState;\n\n // ensure we are correctly configured\n const options = _validateOptions(definition);\n\n // create the actual implementation\n const render = (userProps: IProps) => {\n // split out children, they will be excluded from the prop preparation phase\n const { children, ...props } = userProps as React.PropsWithChildren;\n\n // prepare the props, all the way down the tree, also build the slots\n const { renderData, Slots } = useCompoundPrepare(\n props as IProps,\n options as IComposable,\n );\n\n // now do the render, adding the children back in\n return options.render(Slots, renderData, children);\n };\n render.displayName = options.displayName;\n\n // set the options onto the new functional component and return it\n type IReturnType = IWithComposable, IComposable>;\n (render as IReturnType).__composable = options;\n return render as IReturnType;\n}\n\n/**\n * Helper to create a composable implementation of a simple atomic component\n *\n * @param target - slot type to create an atomic component from\n * @param usePrepareProps - prop processing implementation.\n * @param filter - optional filter. If set it allows stripping properties before they are passed to target\n */\nexport function atomic(\n target: INativeSlotType,\n usePrepareProps: IComposable, TState>['usePrepareProps'],\n filter?: IPropFilter,\n): React.FunctionComponent {\n return composable, TState>>({\n usePrepareProps,\n slots: { root: { slotType: target, filter } },\n render: atomicRender,\n });\n}\n", "export type {\n AsObject,\n IComposable,\n IComposableDefinition,\n IComposableType,\n IComposableTypecast,\n IDefineUsePrepareProps,\n IDefineUseStyling,\n IExtractProps,\n IExtractSlotProps,\n IExtractState,\n INativeSlotType,\n IPartialSlotDefinitions,\n IPropFilter,\n IRenderData,\n ISlotDefinitions,\n ISlotWithFilter,\n ISlots,\n IUsePrepareProps,\n IUseStyling,\n IWithComposable,\n RequireObject,\n} from './Composable.types';\nexport { atomic, atomicRender, atomicUsePrepareProps, composable } from './Composable';\nexport { renderSlot, withSlots } from '@fluentui-react-native/framework-base';\n", "import type { GetMemoValue } from '@fluentui-react-native/framework-base';\nimport type { IComponentSettings, IOverrideLookup } from '@uifabricshared/foundation-settings';\nimport { mergeSettings, getActiveOverrides, resolveSettingsOverrides } from '@uifabricshared/foundation-settings';\n\nimport type { IGetSettingsFromTheme, ISettingsEntry } from './CustomSettings.types';\n\n/**\n * Merges the various settings for a component together\n * @param customSettings - the array of settings to apply for this object\n * @param theme - the theme to use for value lookups and component definitions\n * @param getFromTheme - helper function to retrieve settings from a theme\n */\nexport function mergeBaseSettings(\n customSettings: ISettingsEntry[],\n theme: TTheme,\n getFromTheme?: IGetSettingsFromTheme,\n): TSettings {\n return customSettings\n ? mergeSettings(\n ...customSettings.map((entry) => {\n if (typeof entry === 'string') {\n return (getFromTheme && getFromTheme(theme, entry)) || undefined;\n } else if (typeof entry === 'function') {\n return entry(theme);\n }\n return entry;\n }),\n )\n : undefined;\n}\n\n/**\n * Resolve the stack of settings, applying any applicable overrides, while caching the results. Also returns the cache key\n * so it can be used as a prefix for additional caching layers\n *\n * @param customSettings - array of settings entries to merge\n * @param theme - theme used to look up named settings\n * @param memoValue - a GetMemoValue function to use as the root of caching\n * @param hasOverride - override lookup type for looking up whether an override should be applied to the settings\n * @param getFromTheme - routine to look up the named entries in the theme. They will be skipped if not specified.\n */\nexport function getThemedSettings(\n customSettings: ISettingsEntry[],\n theme: TTheme,\n memoValue: GetMemoValue,\n hasOverride?: IOverrideLookup,\n getFromTheme?: IGetSettingsFromTheme,\n): { settings: TSettings | undefined; getMemoValue: GetMemoValue } {\n // resolve the settings for this component, keyed on the theme\n let [settings, getMemoValue] = memoValue(() => mergeBaseSettings(customSettings, theme, getFromTheme), [theme]);\n\n // if overrides are set, resolve the override settings, keyed on the applied overrides\n const overrides = getActiveOverrides(settings, hasOverride);\n if (overrides.length > 0) {\n [settings, getMemoValue] = getMemoValue(() => resolveSettingsOverrides(settings, hasOverride) as TSettings, overrides);\n }\n\n // return the merged settings and a query routine to go deeper in the cache\n return { settings, getMemoValue };\n}\n", "export type { IGetSettingsFromTheme, ISettingsEntry, ISettingsFromTheme } from './CustomSettings.types';\nexport { getThemedSettings, mergeBaseSettings } from './CustomSettings';\n", "import type { Theme } from '@fluentui-react-native/theme-types';\nimport type { IComponentSettings } from '@uifabricshared/foundation-settings';\n\n/** helper to strip out the component settings specific bits from the returned structure */\nexport function returnAsSlotProps(target: IComponentSettings): IComponentSettings {\n if (target) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _overrides, _precedence, ...settings } = target;\n return settings;\n }\n return target;\n}\n\n/**\n *\n * @param theme - theme used to retrieve settings\n * @param name - name of the settings entry to retrieve\n * @param overrides - optional override lookup object to conditionally apply overrides\n */\nexport function getSettings(theme: Theme, name: string): IComponentSettings {\n return (theme.components && theme.components[name]) || undefined;\n}\n", "/* eslint-disable */\n\nimport { Theme, PartialTheme } from '@fluentui-react-native/theme-types';\nimport { mergeSettingsCollection } from '@uifabricshared/foundation-settings';\nimport { MergeOptions, immutableMergeCore } from '@fluentui-react-native/framework-base';\n\nfunction _settingsHandler(...objs: (object | undefined)[]): object | undefined {\n return mergeSettingsCollection(...objs);\n}\n\nconst _themeMergeOptions: MergeOptions = {\n object: true,\n settings: _settingsHandler,\n};\n\n/**\n * Resolve `partialTheme` into a fully specified theme, using `theme` to fill\n * in any missing values.\n */\nexport function resolvePartialTheme(theme: Theme, partialTheme?: PartialTheme): Theme {\n let newTheme = immutableMergeCore(_themeMergeOptions, theme, partialTheme) as Theme;\n if (newTheme === theme) {\n newTheme = { ...newTheme };\n }\n return newTheme;\n}\n", "export { getSettings, returnAsSlotProps } from './SettingsWorker';\nexport { resolvePartialTheme } from './Theme';\nexport type {\n OfficePalette,\n Palette as IPalette,\n PartialPalette as IPartialPalette,\n PartialTheme as IPartialTheme,\n Theme as ITheme,\n ThemeColorDefinition as IThemeColorDefinition,\n Typography as ITypography,\n} from '@fluentui-react-native/theme-types';\nexport { ThemeContext, useTheme } from '@fluentui-react-native/theme-types';\n", "import type { GetMemoValue } from '@fluentui-react-native/framework-base';\nimport type { ISlotProps, IComponentSettings } from '@uifabricshared/foundation-settings';\n\nimport type { ITokenPropInfo } from './Token.internal';\nimport type { IComponentTokens } from './Token.types';\n\n/**\n * Take the input props and props from settings and return a merged set of token props (a single source\n * of truth) as well as an abbreviated collection with tokens that have been overridden from the user\n * props\n *\n * @param props - user props passed in to render\n * @param rootSlotProps - props for the root slot, this will have any tokens loaded from settings\n * @param tokenKeys - an object that contains the set of keys we care about for tokens on this component\n */\nfunction _getTokenPropInfo(props: TTokens, tokensSlot: TTokens, tokenKeys: { [key: string]: undefined }): ITokenPropInfo {\n const tokens = { ...tokensSlot };\n const deltas = {} as TTokens;\n for (const key in tokenKeys) {\n if (props[key] !== undefined && props[key] !== tokens[key]) {\n deltas[key] = tokens[key] = props[key];\n }\n }\n return { tokens, deltas, tokenKeys };\n}\n\n/**\n * Run through the end to end token workflow for render. This will resolve the tokens and attempt to preempt style creation\n * by referencing values in the cache\n *\n * @param props - user props passed in and copied into a mutable object, these have precedence\n * @param theme - theme to get styling info from\n * @param slotProps - starting slotProps, the root entry may have token defaults filled in\n * @param tokenInfo - the set of token props as well as the shortened set that have been overridden\n * @param prefix - cache key to append token info to, this generally refers to the settings\n * @param cache - cache which holds the slotProps if they have been built before\n * @param displayName - optional component display name, used for class building\n * @param finalizer - optional function to process styles before caching happens\n */\nexport function processTokens(\n props: TTokens,\n theme: TTheme,\n slotProps: IComponentSettings,\n tokenInfo: IComponentTokens,\n cache: GetMemoValue,\n): ISlotProps {\n // merge in tokens and build up the cache key which are the tokens overridden by the user\n slotProps = slotProps || {};\n const rootSlotProps = slotProps.tokens || {};\n const { handlers, tokenKeys } = tokenInfo;\n const tokenPropInfo = _getTokenPropInfo(props, rootSlotProps, tokenKeys);\n const resolvedSlotProps = { tokens: tokenPropInfo.tokens || {} };\n\n Object.getOwnPropertyNames(handlers).forEach((slotName) => {\n const handler = handlers[slotName];\n resolvedSlotProps[slotName] = handler(slotProps[slotName] || {}, tokenPropInfo as any, theme, slotName, cache);\n });\n\n // return the cache entry\n return resolvedSlotProps as unknown as ISlotProps;\n}\n", "import type { GetTypedMemoValue } from '@fluentui-react-native/framework-base';\nimport { mergeProps } from '@fluentui-react-native/framework-base';\nimport type { ISlotProps } from '@uifabricshared/foundation-settings';\n\nimport type { ITokenPropInfo, ICachedPropHandlers } from './Token.internal';\nimport type {\n ITargetHasToken,\n IStyleFactoryOperation,\n IComponentTokens,\n IStyleFactories,\n IStyleFinalizer,\n IStyleFactoryFunction,\n} from './Token.types';\n\ninterface ITokensForSlot {\n toStyle: IStyleFactoryOperation[];\n toTokens: IStyleFactoryOperation[];\n functions: IStyleFactoryFunction[];\n}\n\nfunction _copyToken(props: TTokens, key: string, target: string | undefined, targetObj: object): void {\n if (props[key] !== undefined) {\n targetObj[target || key] = props[key];\n }\n}\n\nfunction _lookupOrCopyToken(\n props: TTokens,\n theme: TTheme,\n entry: IStyleFactoryOperation,\n style: object,\n): void {\n const { source: key, lookup } = entry;\n if (props[key] !== undefined) {\n const lookupResult = lookup && lookup(theme);\n let val = props[key];\n if (typeof val === 'string' && lookupResult && lookupResult[val as string] !== undefined) {\n val = lookupResult[val as string];\n }\n style[entry.target || (key as string)] = val;\n }\n}\n\nfunction _processSlotEntries(\n props: TTokens,\n theme: TTheme,\n mapping: ITokensForSlot,\n): TProps {\n const slotProps: { style?: object } = {};\n if (mapping.toStyle.length > 0) {\n const slotStyle = {};\n for (const entry of mapping.toStyle) {\n _lookupOrCopyToken(props, theme, entry, slotStyle);\n }\n if (Object.keys(slotStyle).length > 0) {\n slotProps.style = slotStyle;\n }\n }\n for (const entry of mapping.toTokens) {\n _copyToken(props, entry.source as string, entry.target, slotProps);\n }\n return slotProps as TProps;\n}\n\nfunction _processStyleFunctions(\n functions: IStyleFactoryFunction[],\n tokenProps: TTokens,\n theme: TTheme,\n): TProps | undefined {\n if (functions && functions.length > 0) {\n return mergeProps(...functions.map((fn) => fn(tokenProps, theme)));\n }\n return undefined;\n}\n\n/**\n * This is the worker function that does the work of either retrieving a cached props/style from the cache\n * or building up the new props/style set\n */\nfunction _getCachedPropsForSlot(\n props: TProps,\n tokenProps: ITokenPropInfo,\n theme: TTheme,\n slotName: string,\n getMemoValue: GetTypedMemoValue,\n keys: string[],\n mappings: ITokensForSlot,\n finalizer?: IStyleFinalizer,\n): TProps {\n // get the cache key for this entry\n const { tokens, tokenKeys, deltas } = tokenProps;\n return getMemoValue(() => {\n let newProps: TProps = mergeProps(\n props as unknown as object,\n slotName === 'root' ? tokenKeys : undefined,\n _processSlotEntries(tokens, theme, mappings) as unknown as object,\n _processStyleFunctions(mappings.functions, tokens, theme),\n );\n if (finalizer) {\n newProps = finalizer(newProps, slotName);\n }\n return newProps;\n }, [slotName, ...keys.map((val) => (deltas[val] !== undefined ? deltas[val] : ''))])[0];\n}\n\n/**\n * This function runs at component definition time (once for every component type) and\n * processes the styleFactories on each of the slots and builds up handler functions that\n * obtain or build the cached props.\n *\n * @param factories - collection of slot style factories\n * @param hasToken - a function that returns whether or not a slot supports a given token\n */\nexport function buildComponentTokens(\n factories: IStyleFactories,\n hasToken?: ITargetHasToken,\n): IComponentTokens {\n const tokenKeys: { [key: string]: undefined } = {};\n const handlers: ICachedPropHandlers = {} as ICachedPropHandlers;\n\n // iterate through each factory and generate a handler for it. Note that even if no styleFactories\n // are provided within it will still generate the handler to do style caching and finalization\n Object.getOwnPropertyNames(factories).forEach((slot) => {\n type IPropsForSlot = TSlotProps[keyof TSlotProps];\n const factoriesBase = factories[slot];\n const mappings: ITokensForSlot = { toStyle: [], toTokens: [], functions: [] };\n const { toStyle, toTokens, functions } = mappings;\n const slotKeys = {};\n\n // if there are style factories provided split them into ones that target tokens and ones that target styles\n if (factoriesBase) {\n const factorySet = Array.isArray(factoriesBase) ? factoriesBase : [factoriesBase];\n for (const set of factorySet) {\n if (typeof set === 'function') {\n functions.push(set);\n set._keys.forEach((key) => {\n slotKeys[key as string] = undefined;\n });\n } else {\n const setArray = Array.isArray(set) ? set : [set as IStyleFactoryOperation];\n for (const operation of setArray) {\n slotKeys[operation.source as string] = undefined;\n const target = operation.target || operation.source;\n if (hasToken && hasToken(slot, target as string)) {\n toTokens.push(operation);\n } else {\n toStyle.push(operation);\n }\n }\n }\n }\n }\n\n // add the collected keys to the root token keys\n Object.assign(tokenKeys, slotKeys);\n\n // create the closure for the handler and return that in the object\n handlers[slot as keyof TSlotProps] = (\n props: IPropsForSlot,\n tokenProps: ITokenPropInfo,\n theme: TTheme,\n slotName: string,\n getValue: GetTypedMemoValue,\n ) => {\n const keys = Object.getOwnPropertyNames(slotKeys);\n return _getCachedPropsForSlot(props, tokenProps, theme, slotName, getValue, keys, mappings);\n };\n });\n return { tokenKeys, handlers };\n}\n", "export type {\n IComponentTokens,\n ILookupThemePart,\n IOperationSet,\n IStyleFactories,\n IStyleFactoryEntry,\n IStyleFactoryFunction,\n IStyleFactoryFunctionRaw,\n IStyleFactoryOperation,\n IStyleFinalizer,\n ITargetHasToken,\n} from './Token.types';\nexport { processTokens } from './Token';\nexport { buildComponentTokens } from './Token.function';\nexport { styleFunction } from '@fluentui-react-native/tokens';\n", "/* eslint-disable */\n\nimport { ISlotProps, IComponentSettings, IOverrideLookup, IWithTokens } from '@uifabricshared/foundation-settings';\nimport { getThemedSettings } from '@uifabricshared/themed-settings';\nimport { ITheme, getSettings, returnAsSlotProps } from '@uifabricshared/theming-ramp';\nimport { IComponentTokens, processTokens, ITargetHasToken, buildComponentTokens } from '@uifabricshared/foundation-tokens';\nimport { useTheme } from '@fluentui-react-native/theme-types';\nimport { defaultFluentTheme } from '@fluentui-react-native/default-theme';\nimport { IWithComposable, AsObject, IComposableDefinition, INativeSlotType } from '@uifabricshared/foundation-composable';\nimport { IComposeOptions, IStylingSettings, IDefineUseComposeStyling } from './compose.types';\nimport { getMemoCache, GetMemoValue } from '@fluentui-react-native/framework-base';\n\n/* tslint:disable-next-line no-any */\nexport function getOptionsFromObj(obj: any): TComponent | undefined {\n const objType = obj && typeof obj;\n return ((objType === 'object' || objType === 'function') && (obj as IWithComposable).__composable) || undefined;\n}\n\nfunction _getSettingsFromTheme(theme: ITheme, name: string): IComponentSettings {\n return getSettings(theme, name);\n}\n\nfunction _getHasToken(\n slots: IComposableDefinition['slots'],\n): ITargetHasToken {\n const slotTokens: { [key: string]: IComponentTokens['tokenKeys'] | undefined } = {};\n Object.keys(slots).forEach((slotName) => {\n const slot = slots[slotName];\n const slotType = (typeof slot !== 'object' ? slot : slot.slotType) as INativeSlotType;\n const options = , TSlotProps>>getOptionsFromObj(slotType);\n slotTokens[slotName] = (options && options.resolvedTokens && options.resolvedTokens.tokenKeys) || undefined;\n });\n return (target: string, key: string) => {\n return slotTokens[target] && slotTokens[target].hasOwnProperty(key);\n };\n}\n\nfunction useStylingCore(\n props: TProps,\n options: IStylingSettings,\n instanceMemoCache: GetMemoValue,\n lookupOverride?: IOverrideLookup,\n): IWithTokens {\n // get the theme value from the context (or the default theme if it is not set)\n const theme = useTheme() || defaultFluentTheme;\n\n // resolve the array of settings for these options\n lookupOverride = lookupOverride || props;\n type ILocalSettings = IComponentSettings>;\n const { settings, getMemoValue } = getThemedSettings(\n options.settings,\n theme,\n instanceMemoCache as GetMemoValue,\n lookupOverride,\n _getSettingsFromTheme as any,\n );\n\n // finish by processing the tokens and turning IComponentSettings into ISlotProps (this removes things like _overrides)\n return returnAsSlotProps(\n processTokens(props as unknown as TTokens, theme, settings as any, options.resolvedTokens, getMemoValue),\n ) as IWithTokens;\n}\n\n/**\n * return a useStyling implementation, in the form of IUseComposeStyling, based on the passed in styleSettings. The\n * styleSettings will be captured in the created closure and will be set up to enable the appropriate levels of caching.\n *\n * @param options - style settings to configure this function. Note that this should be scoped to a single component.\n * @param name - optional base name to use as a cache key\n */\nexport function initializeStyling<\n TProps extends object,\n TSlotProps extends ISlotProps,\n TTokens extends object,\n TState extends object,\n TStatics extends object,\n>(options: IComposeOptions): IDefineUseComposeStyling {\n // process the tokens and get them ready to render\n const { styles, slots } = options;\n options.resolvedTokens = buildComponentTokens(styles, _getHasToken(slots));\n\n // memo cache root for this component, keyed on options\n const getMemoValue = getMemoCache(options);\n\n // create a useStyling implementation for this component type (per type, not per instance)\n return (props: TProps, lookupOverride?: IOverrideLookup) => {\n return useStylingCore(props, options, getMemoValue, lookupOverride);\n };\n}\n", "/* eslint-disable */\n\nimport { IComposeOptions, IComposeReturnType, IExtractStatics, IExtractTokens, IDefineComposeSettings } from './compose.types';\nimport {\n composable,\n INativeSlotType,\n IComposableType,\n IExtractProps,\n IExtractSlotProps,\n IExtractState,\n} from '@uifabricshared/foundation-composable';\nimport { initializeStyling, getOptionsFromObj } from './useStyling';\nimport { immutableMerge } from '@fluentui-react-native/framework-base';\nimport { ISlotProps } from '@uifabricshared/foundation-settings';\n\n/**\n * Merge current and base options together to form the new object definition. These objects will merge with the\n * exception of settings which will be appended\n *\n * @param inputComponent - input component\n * @param base - component to use as a baseline (if it exists)\n */\nfunction _getComponentOptions<\n TProps extends object,\n TSlotProps extends ISlotProps,\n TTokens extends object,\n TState extends object,\n TStatics extends object,\n>(\n inputComponent: Partial>,\n base?: IComposeOptions,\n): IComposeOptions {\n if (base) {\n const mergedSettings = { settings: [].concat(base.settings || [], inputComponent.settings || []).filter((v) => v) };\n return immutableMerge(base, inputComponent, mergedSettings) as IComposeOptions;\n }\n return inputComponent as IComposeOptions;\n}\n\n/**\n * Assembles a higher order component, optionally composing a base HOC or base primitive control. The compose pattern\n * allows a greater degree of customization than is available via props and allows for customization without adding\n * additional layers to the react hierarchy.\n *\n * @param inputComponent - component definition for the component to be created. See IComposeOptions for more details.\n * @param base - optional base component to compose, this can be an intrinsic, a stock element, or another composable\n */\nexport function compose(\n inputComponent: Partial<\n IComposeOptions, IExtractSlotProps, IExtractTokens, IExtractState, IExtractStatics>\n >,\n base?: INativeSlotType,\n): IComposeReturnType, IExtractSlotProps, IExtractTokens, IExtractState, IExtractStatics> {\n // extract the real types from TType\n type ITProps = IExtractProps;\n type ITSlotProps = IExtractSlotProps;\n type ITState = IExtractState;\n type ITStatics = IExtractStatics;\n type ITTokens = IExtractTokens;\n type IReturnType = IComposeReturnType;\n\n // get merged options for the component\n const options = _getComponentOptions(inputComponent, base && getOptionsFromObj(base));\n\n // set up the styling injection function\n options.useStyling = initializeStyling(options);\n\n // use composable to create the function implementation\n const Component = composable>(options as any) as IReturnType;\n\n // attach extra information to the returned function component\n Component.displayName = options.displayName;\n Object.assign(Component, options.statics);\n\n // set up the customize handler\n Component.customize = (...settings: IDefineComposeSettings) => {\n return compose({ settings }, Component);\n };\n\n // set up the compose handler\n Component.compose = (newOptions: Partial>) => {\n return compose(newOptions, Component);\n };\n\n // now return the newly created component\n return Component;\n}\n", "export type {\n IComposeOptions,\n IComposeReturnType,\n IComposeSettings,\n IComposeType,\n IComposeTypecast,\n IDefineComposeSettings,\n IDefineUseComposeStyling,\n IExtractStatics,\n IExtractTokens,\n IStylingSettings,\n IUseComposeStyling,\n} from './compose.types';\nexport { compose } from './compose';\nexport { initializeStyling } from './useStyling';\n", "import type { TextStyle } from 'react-native';\n\nimport type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ITextType } from './Text.types';\nimport { textName } from './Text.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n variant: 'secondaryStandard',\n color: 'bodyText',\n },\n root: {\n style: {\n margin: 0,\n } as TextStyle,\n },\n _overrides: {\n disabled: {\n tokens: {\n color: 'disabledText',\n },\n },\n },\n _precedence: ['disabled'],\n },\n textName,\n];\n", "import { Text as RNText } from 'react-native';\n\nimport { filterTextProps } from '@fluentui-react-native/adapters';\nimport { foregroundColorTokens, textTokens } from '@fluentui-react-native/tokens';\nimport { compose } from '@uifabricshared/foundation-compose';\n\nimport { settings } from './Text.settings';\nimport { textName } from './Text.types';\nimport type { ITextType } from './Text.types';\n\nexport const Text = compose({\n displayName: textName,\n settings,\n slots: {\n root: { slotType: RNText, filter: filterTextProps },\n },\n styles: {\n root: [textTokens, foregroundColorTokens],\n },\n});\n\nexport default Text;\n", "export { Text as TextV1 } from './Text';\nexport type { TextProps, TextTokens } from './Text.types';\nexport { textName as textNameV1 } from './Text.types';\nexport {\n Caption1,\n Caption1Strong,\n Caption2,\n Body1,\n Body1Strong,\n Body2,\n Body2Strong,\n Subtitle1,\n Subtitle1Strong,\n Subtitle2,\n Subtitle2Strong,\n Title1,\n Title1Strong,\n Title2,\n Title3,\n LargeTitle,\n Display,\n} from './Variants';\n\n/* deprecated */\nexport { textName } from './deprecated/Text.types';\nexport type { ITextProps, ITextType } from './deprecated/Text.types';\nexport { Text } from './deprecated/Text';\n", "import * as React from 'react';\nimport { Image, Platform, View } from 'react-native';\nimport type { ImageStyle, TextStyle } from 'react-native';\n\nimport { mergeStyles, useFluentTheme } from '@fluentui-react-native/framework';\nimport { stagedComponent, mergeProps, getMemoCache, getTypedMemoCache } from '@fluentui-react-native/framework';\nimport { Text } from '@fluentui-react-native/text';\nimport type { SvgProps } from 'react-native-svg';\nimport { SvgUri } from 'react-native-svg';\n\nimport type { IconProps, SvgIconProps, FontIconProps } from './Icon.types';\n\nconst rasterImageStyleCache = getTypedMemoCache();\n\nfunction renderRasterImage(iconProps: IconProps) {\n const { width, height, color } = iconProps;\n const style = mergeStyles(\n iconProps.style,\n rasterImageStyleCache({ width: width, height: height, tintColor: color }, [width, height, color])[0],\n );\n\n return (\n \n );\n}\n\nfunction fontFamilyFromFontSrcFile(fontSrcFile: string, fontFamily: string): string {\n if (Platform.OS == 'windows') {\n // This `${family}#${path}` notation is specific to WPF\n const asset = Image.resolveAssetSource(+fontSrcFile);\n return `${fontFamily}#${asset.uri}`;\n } else {\n return fontFamily;\n }\n}\n\nconst fontStyleMemoCache = getMemoCache();\n\nfunction renderFontIcon(iconProps: IconProps) {\n const fontSource: FontIconProps = iconProps.fontSource;\n\n const style: TextStyle = fontStyleMemoCache(\n {\n fontSrcFile: fontSource.fontSrcFile,\n fontFamily:\n fontSource.fontSrcFile != undefined\n ? fontFamilyFromFontSrcFile(fontSource.fontSrcFile, fontSource.fontFamily)\n : fontSource.fontFamily,\n fontSize: fontSource.fontSize,\n color: iconProps.color,\n },\n [iconProps.color, fontSource.fontSrcFile, fontSource.fontFamily, fontSource.fontSize],\n )[0];\n\n const char = String.fromCharCode(fontSource.codepoint);\n return (\n \n {char}\n \n );\n}\n\nfunction renderSvg(iconProps: IconProps) {\n const svgIconProps: SvgIconProps = iconProps.svgSource;\n const { accessible, accessibilityLabel, width, height, color } = iconProps;\n const style = mergeStyles(iconProps.style, rasterImageStyleCache({ width, height }, [width, height])[0]);\n\n const svgProps: SvgProps = { width, height, color };\n if (svgIconProps.viewBox) {\n svgProps.viewBox = svgIconProps.viewBox;\n }\n\n if (svgIconProps.src) {\n return (\n \n \n \n );\n } else if (svgIconProps.uri) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n}\n\nexport const Icon = stagedComponent((props: IconProps) => {\n const theme = useFluentTheme();\n\n return (rest: IconProps) => {\n const color = props.color || theme.colors.buttonText;\n const accessible = props.accessible ?? true;\n\n const baseProps: IconProps = {\n color: color,\n accessible,\n };\n\n const newProps = mergeProps(baseProps, props, rest);\n\n if (newProps.svgSource) {\n return renderSvg(newProps);\n } else if (newProps.fontSource) {\n return renderFontIcon(newProps);\n } else if (newProps.rasterImageSource) {\n return renderRasterImage(newProps);\n } else {\n return null;\n }\n };\n});\n\nexport default Icon;\n", "import { Image } from 'react-native';\n\nimport type { RasterImageIconProps, IconProps } from './Icon.types';\n\n// this hook creates icon props from given source\nexport function createIconProps(src: number | string | IconProps): IconProps {\n if (src === undefined) return null;\n\n if (typeof src === 'number') {\n const rasterProps: RasterImageIconProps = { src: src };\n const asset = Image.resolveAssetSource(+src);\n\n return {\n rasterImageSource: rasterProps,\n width: asset.width,\n height: asset.height,\n };\n } else if (typeof src === 'string') {\n const rasterProps: RasterImageIconProps = { src: { uri: src as string } };\n return { rasterImageSource: rasterProps };\n } else {\n return src as IconProps;\n }\n}\n", "import type { AccessibilityProps, ColorValue, TextStyle, StyleProp } from 'react-native';\n\nexport const fontIconName = 'FontIcon';\n\nexport interface FontIconProps extends AccessibilityProps {\n /**\n * Unicode codepoint.\n */\n codepoint: number;\n /**\n * Icon color.\n */\n color?: ColorValue;\n /**\n * Font name.\n */\n fontFamily?: string;\n /**\n * Font size in points.\n */\n fontSize?: number;\n /**\n * Path to Font file.\n */\n fontSrcFile?: string;\n /**\n * Style object which contains TextStyle props.\n */\n style?: StyleProp;\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID?: string | undefined;\n}\n", "import type { ColorValue, ImageStyle, StyleProp } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { SvgProps } from 'react-native-svg';\n\nexport const svgIconName = 'SvgIcon';\n\nexport interface SvgIconProps extends IViewProps {\n /**\n * Icon color.\n */\n color?: ColorValue;\n /**\n * Icon height.\n */\n height?: number;\n /**\n * Path to a local icon.\n */\n src?: React.FC;\n /**\n * Style object which contains ImageStyle props.\n */\n style?: StyleProp;\n /**\n * URI of a remote icon.\n */\n uri?: string;\n /**\n * Viewbox defines the position and dimension of an SVG viewport.\n */\n viewBox?: string;\n /**\n * Icon width.\n */\n width?: number;\n}\n", "import type { TextStyle } from 'react-native';\nimport { Image, Platform } from 'react-native';\n\nimport { getMemoCache, mergeStyles } from '@fluentui-react-native/framework';\n\nimport type { FontIconProps } from './FontIcon.types';\n\nexport const useFontIcon = (props: FontIconProps): FontIconProps => {\n const { accessible, color, fontSrcFile, fontFamily, fontSize, style: styleOrig, ...rest } = props;\n\n const style: TextStyle = fontStyleMemoCache(\n { fontFamily: fontSrcFile != undefined ? fontFamilyFromFontSrcFile(fontSrcFile, fontFamily) : fontFamily, fontSize, color },\n [color, fontSize, fontFamily],\n )[0];\n\n const mergedStyle = mergeStyles(style, styleOrig);\n\n return {\n accessible: accessible ?? true,\n style: mergedStyle,\n ...rest,\n };\n};\n\nfunction fontFamilyFromFontSrcFile(fontSrcFile: string, fontFamily: string): string {\n if (Platform.OS == 'windows') {\n // This `${family}#${path}` notation is specific to WPF\n const asset = Image.resolveAssetSource(+fontSrcFile);\n return `${fontFamily}#${asset.uri}`;\n } else {\n return fontFamily;\n }\n}\n\nconst fontStyleMemoCache = getMemoCache();\n", "import * as React from 'react';\nimport { Text } from 'react-native';\n\nimport { mergeProps, stagedComponent } from '@fluentui-react-native/framework';\n\nimport type { FontIconProps } from './FontIcon.types';\nimport { fontIconName } from './FontIcon.types';\nimport { useFontIcon } from './useFontIcon';\n\nexport const FontIcon = stagedComponent((props: FontIconProps) => {\n const fontIconProps = useFontIcon(props);\n return (final: FontIconProps) => {\n const newProps = mergeProps(fontIconProps, final);\n const { codepoint, ...rest } = newProps;\n\n const char = String.fromCharCode(codepoint);\n return {char};\n };\n});\n\nFontIcon.displayName = fontIconName;\n\nexport default FontIcon;\n", "import { getMemoCache, mergeStyles } from '@fluentui-react-native/framework';\n\nimport type { SvgIconProps } from './SvgIcon.types';\n\nconst rasterImageStyleCache = getMemoCache();\n\nexport const useSvgIcon = (props: SvgIconProps): SvgIconProps => {\n const { accessible, style, height, width, ...rest } = props;\n return {\n accessible: accessible ?? true,\n height,\n style: mergeStyles(style, rasterImageStyleCache({ width, height }, [width, height])[0]),\n width,\n ...rest,\n };\n};\n", "import * as React from 'react';\nimport { Platform, View } from 'react-native';\n\nimport { mergeProps, stagedComponent } from '@fluentui-react-native/framework';\nimport { SvgUri } from 'react-native-svg';\n\nimport type { SvgIconProps } from './SvgIcon.types';\nimport { svgIconName } from './SvgIcon.types';\nimport { useSvgIcon } from './useSvgIcon';\n\nexport const SvgIcon = stagedComponent((props: SvgIconProps) => {\n const svgProps = useSvgIcon(props);\n return (final: SvgIconProps) => {\n const { style, height, width, src, uri, viewBox, color, ...rest } = mergeProps(svgProps, final);\n const svgIconsSupported = Platform.OS !== 'windows';\n\n return svgIconsSupported && (src || uri) ? (\n \n {src ? (\n \n ) : (\n \n )}\n \n ) : null;\n };\n});\n\nSvgIcon.displayName = svgIconName;\n\nexport default SvgIcon;\n", "import * as React from 'react';\n\nimport { FontIcon } from './FontIcon/FontIcon';\nimport type { IconProps } from './Icon.types';\nimport { SvgIcon } from './SvgIcon/SvgIcon';\n\nexport const Icon = (props: IconProps) => {\n return props.svgSource ? (\n \n ) : props.fontSource ? (\n \n ) : null;\n};\n", "export type { FontIconProps, SvgIconProps, RasterImageIconProps, IconProps, IconSourcesType } from './legacy/Icon.types';\nexport { Icon } from './legacy/Icon';\nexport { createIconProps } from './legacy/useIconProps.hooks';\n\nexport type { FontIconProps as FontIconPropsV1 } from './FontIcon/FontIcon.types';\nexport type { SvgIconProps as SvgIconPropsV1 } from './SvgIcon/SvgIcon.types';\nexport type { IconProps as IconPropsV1 } from './Icon.types';\nexport { fontIconName } from './FontIcon/FontIcon.types';\nexport { svgIconName } from './SvgIcon/SvgIcon.types';\nexport { Icon as IconV1 } from './Icon';\nexport { FontIcon } from './FontIcon/FontIcon';\nexport { SvgIcon } from './SvgIcon/SvgIcon';\n", "import type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { IButtonType } from './Button.types';\nimport { buttonName } from './Button.types';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'buttonBackground',\n color: 'buttonText',\n borderColor: 'buttonBorder',\n borderWidth: 1,\n borderRadius: 4,\n },\n root: {\n accessible: true,\n focusable: true,\n accessibilityRole: 'button',\n style: {\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n },\n } as IViewProps,\n endIcon: {\n style: {\n marginStart: 2,\n },\n },\n startIcon: {\n style: {\n marginEnd: 2,\n },\n },\n content: {\n style: {\n marginStart: 2,\n marginEnd: 2,\n },\n },\n stack: {\n style: {\n display: 'flex',\n paddingStart: 6,\n paddingEnd: 6,\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n minHeight: 24,\n minWidth: 32,\n justifyContent: 'center',\n },\n },\n _precedence: ['hovered', 'focused', 'pressed', 'disabled'],\n _overrides: {\n disabled: {\n tokens: {\n backgroundColor: 'buttonBackgroundDisabled',\n color: 'buttonTextDisabled',\n borderColor: 'buttonBorderDisabled',\n },\n },\n hovered: {\n tokens: {\n backgroundColor: 'buttonBackgroundHovered',\n color: 'buttonTextHovered',\n borderColor: 'buttonBorderHovered',\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'buttonBackgroundPressed',\n color: 'buttonTextPressed',\n borderColor: 'buttonPressedBorder',\n },\n },\n focused: {\n tokens: {\n borderColor: 'buttonBorderFocused',\n color: 'buttonTextHovered',\n backgroundColor: 'buttonBackgroundHovered',\n },\n },\n },\n },\n buttonName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View } from 'react-native';\n\nimport { filterViewProps } from '@fluentui-react-native/adapters';\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport { useAsPressable, useKeyProps, useViewCommandFocus, useOnPressWithFocus } from '@fluentui-react-native/interactive-hooks';\nimport { Text } from '@fluentui-react-native/text';\nimport { backgroundColorTokens, borderTokens, textTokens, foregroundColorTokens, getPaletteFromTheme } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './Button.settings';\nimport type { IButtonSlotProps, IButtonState, IButtonProps, IButtonRenderData, IButtonType } from './Button.types';\nimport { buttonName } from './Button.types';\n\n/**\n * @deprecated This component is deprecated in favor of ButtonV1. This Button will be removed when the package moves to 1.0.0.\n * At that point, ButtonV1 will be renamed to Button. Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport const Button = compose({\n displayName: buttonName,\n usePrepareProps: (userProps: IButtonProps, useStyling: IUseComposeStyling) => {\n const defaultComponentRef = React.useRef(null);\n const {\n icon,\n startIcon,\n endIcon,\n content,\n onAccessibilityTap = userProps.onClick,\n accessibilityLabel = userProps.content,\n componentRef = defaultComponentRef,\n testID,\n onClick,\n ...rest\n } = userProps;\n\n // Ensure focus is placed on button after click\n const onPressWithFocus = useOnPressWithFocus(componentRef, onClick);\n // attach the pressable state handlers\n const pressable = useAsPressable({ ...rest, onPress: onPressWithFocus });\n const onKeyProps = useKeyProps(onClick, ' ', 'Enter');\n // set up state\n const state: IButtonState = {\n info: {\n ...pressable.state,\n disabled: !!userProps.disabled,\n content: !!content,\n startIcon: !!startIcon || !!icon,\n endIcon: !!endIcon,\n },\n };\n\n const buttonRef = useViewCommandFocus(componentRef);\n // grab the styling information, referencing the state as well as the props\n const styleProps = useStyling(userProps, (override: string) => state.info[override] || userProps[override]);\n // create the merged slot props\n\n const slotProps = mergeSettings(styleProps, {\n root: {\n ...pressable.props,\n ref: buttonRef,\n onAccessibilityTap: onAccessibilityTap,\n accessibilityLabel: accessibilityLabel,\n accessibilityState: { disabled: state.info.disabled },\n ...onKeyProps,\n testID,\n },\n content: { children: content },\n startIcon: createIconProps(startIcon || icon),\n endIcon: createIconProps(endIcon),\n });\n\n return { slotProps, state };\n },\n settings,\n render: (Slots: ISlots, renderData: IButtonRenderData, ...children: React.ReactNode[]) => {\n const info = renderData.state!.info;\n\n return (\n \n \n \n {info.startIcon && }\n {info.content && }\n {children}\n {info.endIcon && }\n \n \n \n );\n },\n slots: {\n root: View,\n stack: { slotType: View, filter: filterViewProps },\n borderWrapper: { slotType: View, filter: filterViewProps },\n startIcon: { slotType: Icon as React.ComponentType },\n content: Text,\n endIcon: { slotType: Icon as React.ComponentType },\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n stack: [],\n borderWrapper: [{ source: 'wrapperBorderColor', lookup: getPaletteFromTheme, target: 'borderColor' }],\n startIcon: [{ source: 'iconColor', lookup: getPaletteFromTheme, target: 'color' }],\n content: [textTokens, foregroundColorTokens],\n endIcon: [{ source: 'iconColor', lookup: getPaletteFromTheme, target: 'color' }],\n },\n});\n\nexport default Button;\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { IButtonType } from '../Button.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'primaryButtonBackground',\n color: 'primaryButtonText',\n borderColor: 'primaryButtonBorder',\n },\n _overrides: {\n disabled: {\n tokens: {\n backgroundColor: 'primaryButtonBackgroundDisabled',\n color: 'primaryButtonTextDisabled',\n borderColor: 'primaryButtonBackgroundDisabled',\n },\n },\n hovered: {\n tokens: {\n backgroundColor: 'primaryButtonBackgroundHovered',\n color: 'primaryButtonTextHovered',\n borderColor: 'primaryButtonBorderHovered',\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'primaryButtonBackgroundPressed',\n color: 'primaryButtonTextPressed',\n borderColor: 'primaryButtonBorderPressed',\n },\n },\n focused: {\n tokens: {\n borderColor: 'primaryButtonBorderFocused',\n backgroundColor: 'primaryButtonBackgroundHovered',\n color: 'primaryButtonTextHovered',\n },\n },\n },\n },\n 'PrimaryButton',\n];\n", "import { settings } from './PrimaryButton.settings';\nimport { Button } from '../Button';\n\n/**\n * @deprecated This component is deprecated in favor of ButtonV1. The PrimaryButton will be removed when the package moves to 1.0.0.\n * At that point, ButtonV1 will be renamed to Button. Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport const PrimaryButton = Button.compose({ displayName: 'PrimaryButton', settings });\n", "export * from './PrimaryButton';\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { IButtonType } from '../Button.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'menuBackground',\n color: 'menuItemText',\n borderColor: 'menuBackground',\n },\n _overrides: {\n disabled: {\n tokens: {\n color: 'disabledBodyText',\n borderColor: 'menuBackground',\n backgroundColor: 'background',\n },\n },\n hovered: {\n tokens: {\n backgroundColor: 'menuItemBackgroundHovered',\n color: 'menuItemTextHovered',\n borderColor: 'menuItemBackgroundHovered',\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'menuItemBackgroundPressed',\n borderColor: 'menuItemBackgroundPressed',\n },\n },\n focused: {\n tokens: {\n borderColor: 'focusBorder',\n backgroundColor: 'menuItemBackgroundHovered',\n color: 'menuItemTextHovered',\n },\n },\n },\n },\n 'StealthButton',\n];\n", "import { settings } from './StealthButton.settings';\nimport { Button } from '../Button';\n\n/**\n * @deprecated This component is deprecated in favor of ButtonV1. The StealthButton will be removed when the package moves to 1.0.0.\n * At that point, ButtonV1 will be renamed to Button. Please see MIGRATION.md for details on how to move to the new Button.\n */\nexport const StealthButton = Button.compose({ displayName: 'StealthButton', settings });\n", "export * from './StealthButton';\n", "import type * as React from 'react';\nimport type { ViewStyle, ColorValue } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IconProps, IconSourcesType } from '@fluentui-react-native/icon';\nimport type { IFocusable, InteractionEvent, PressablePropsExtended, PressableState } from '@fluentui-react-native/interactive-hooks';\nimport type { TextProps } from '@fluentui-react-native/text';\nimport type { ShadowToken } from '@fluentui-react-native/theme-types';\nimport type { FontTokens, IBorderTokens, IColorTokens, IShadowTokens, LayoutTokens } from '@fluentui-react-native/tokens';\n\nexport const buttonName = 'Button';\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonAppearance = 'primary' | 'subtle' | 'accent' | 'outline';\nexport type ButtonShape = 'rounded' | 'circular' | 'square';\n\n// Core Props/Tokens are shared between FAB and Buttons\nexport interface ButtonCoreTokens extends LayoutTokens, FontTokens, IBorderTokens, IShadowTokens, IColorTokens {\n /**\n * The icon color.\n */\n iconColor?: ColorValue;\n\n /**\n * Ripple color for Android.\n *\n * A ripple animation is shown on click for Android. This sets the color of the ripple.\n * @platform android\n */\n rippleColor?: ColorValue;\n\n /**\n * The size of the icon.\n */\n iconSize?: number;\n\n /**\n * The weight of the lines used when drawing the icon.\n */\n iconWeight?: number;\n\n /**\n * The width of the button.\n */\n width?: ViewStyle['width'];\n\n /**\n * The amount of spacing between an icon and the content when iconPosition is set to 'before', in pixels.\n */\n spacingIconContentBefore?: number;\n\n /**\n * The amount of spacing between an icon and the content when iconPosition is set to 'after', in pixels.\n */\n spacingIconContentAfter?: number;\n\n /**\n * An object describing the shadow of the button.\n */\n shadowToken?: ShadowToken;\n\n /**\n * Focused State on Android and win32 primary has inner and outer borders.\n * Outer Border is equivalent to the border tokens from IBorders.\n */\n borderInnerColor?: ColorValue;\n borderInnerWidth?: number;\n borderInnerRadius?: number;\n borderInnerStyle?: ViewStyle['borderStyle'];\n}\n\nexport interface ButtonTokens extends ButtonCoreTokens {\n /**\n * States that can be applied to a button.\n */\n hovered?: ButtonTokens;\n focused?: ButtonTokens;\n pressed?: ButtonTokens;\n disabled?: ButtonTokens;\n hasContent?: ButtonTokens;\n hasIconBefore?: ButtonTokens;\n primary?: ButtonTokens;\n subtle?: ButtonTokens;\n outline?: ButtonTokens;\n block?: ButtonTokens;\n small?: ButtonTokens;\n medium?: ButtonTokens;\n large?: ButtonTokens;\n rounded?: ButtonTokens;\n circular?: ButtonTokens;\n square?: ButtonTokens;\n hasIconAfter?: ButtonTokens;\n}\n\nexport interface ButtonCoreProps extends Omit {\n /*\n * Source URL or name of the icon to show on the Button.\n */\n icon?: IconSourcesType;\n\n /**\n * Button contains only icon, there's no content.\n * Must be set for button to style correctly when button has no content.\n */\n iconOnly?: boolean;\n\n /**\n * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * A callback to call on button click event.\n */\n onClick?: (e: InteractionEvent) => void;\n\n /**\n * Text that should show in a tooltip when the user hovers over a button.\n */\n tooltip?: string;\n}\n\nexport interface ButtonProps extends ButtonCoreProps {\n /**\n * A button can have its content and borders styled for greater emphasis or to be subtle.\n * - 'primary' or 'accent': Emphasizes the button as a primary action. 'Accent' added to support Mobile platform naming convention, maps to 'primary'.\n * - 'subtle': Minimizes emphasis to blend into the background until hovered or focused.\n * - 'outline': Similar to subtle but has a border. Implemented for mobile endpoints only. Maps to default on other platforms.\n * @default 'primary' on mobile endpoints, other platform have a separate style when no appearance is passed.\n */\n appearance?: ButtonAppearance;\n\n /**\n * A button can fill the width of its container.\n * @default false\n */\n block?: boolean;\n\n /**\n * Whether to use native focus visuals for the component.\n * @default true\n */\n enableFocusRing?: boolean;\n\n /** Sets style of button to a preset size style.\n * @default 'small' on win32, 'medium' elsewhere\n */\n size?: ButtonSize;\n\n /**\n * Button shape: 'rounded' | 'circular' | 'square'\n * @default 'rounded'\n */\n shape?: ButtonShape;\n\n /**\n * Icon can be placed before or after Button's content.\n * @default 'before'\n */\n iconPosition?: 'before' | 'after';\n\n /**\n * A button can show a loading indicator if it is waiting for another action to happen before allowing itself to\n * be interacted with.\n * @default false\n */\n loading?: boolean;\n}\n\ninterface ButtonState extends PressableState {\n measuredHeight?: number;\n measuredWidth?: number;\n\n // win32 only. Whether the component should use a tone-tone focus border instead of single-tone\n shouldUseTwoToneFocusBorder?: boolean;\n}\n\nexport interface ButtonInfo {\n props: ButtonProps & React.ComponentPropsWithRef;\n state: ButtonState;\n}\n\nexport interface ButtonSlotProps {\n root: React.PropsWithRef;\n rippleContainer?: IViewProps; // Android only\n focusInnerBorder?: IViewProps; // Win32 only\n icon: IconProps;\n content: TextProps;\n}\n\nexport interface ButtonType {\n props: ButtonProps;\n tokens: ButtonTokens;\n slotProps: ButtonSlotProps;\n}\n", "import type { Animated, ActivityIndicatorProps as CoreActivityIndicatorProps } from 'react-native';\n\nimport type { SvgProps } from 'react-native-svg';\n\nexport const activityIndicatorName = 'ActivityIndicator';\n/**\n * Specifies the possible sizes of the ActivityIndicator.\n */\nexport type ActivityIndicatorSize = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge';\n\nexport interface ActivityIndicatorTokens {\n /**\n * ActivityIndicator element color\n * @defaultValue 'BDBDBD' for light mode, '666666' for dark mode\n */\n activityIndicatorColor?: string;\n /**\n * Line thickness of the ActivityIndicator\n * @defaultValue 'medium' or what size is set to\n */\n lineThickness?: ActivityIndicatorSize;\n /**\n * Size of the ActivityIndicator view\n * @defaultValue 'medium'\n */\n size?: ActivityIndicatorSize;\n}\n\nexport interface ActivityIndicatorProps extends ActivityIndicatorTokens, Omit {\n /**\n * ActivityIndicator animating or not\n * @defaultValue 'true'\n */\n animating?: boolean;\n /**\n * ActivityIndicator hidden when not animating or not hidden\n * @defaultValue 'true'\n */\n hidesWhenStopped?: boolean;\n}\n\nexport interface FluentActivityIndicatorSlotProps {\n root: ActivityIndicatorProps;\n svg: Animated.AnimatedProps;\n}\nexport interface FluentActivityIndicatorType {\n props: ActivityIndicatorProps;\n slotProps: FluentActivityIndicatorSlotProps;\n tokens: ActivityIndicatorTokens;\n}\n\nexport interface CoreActivityIndicatorSlotProps {\n root: CoreActivityIndicatorProps;\n}\n\nexport interface CoreActivityIndicatorType {\n props: ActivityIndicatorProps;\n slotProps: CoreActivityIndicatorSlotProps;\n tokens: ActivityIndicatorTokens;\n}\n", "import type { ActivityIndicatorProps as CoreActivityIndicatorProps } from 'react-native';\nimport { Appearance } from 'react-native';\n\nimport type { UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\nimport assertNever from 'assert-never';\n\nimport type {\n ActivityIndicatorProps,\n FluentActivityIndicatorSlotProps,\n ActivityIndicatorTokens,\n CoreActivityIndicatorSlotProps,\n ActivityIndicatorSize,\n} from './ActivityIndicator.types';\nimport { activityIndicatorName } from './ActivityIndicator.types';\n\nexport const diameterSizeMap: { [key: string]: number } = {\n xSmall: 12,\n small: 16,\n medium: 24,\n large: 32,\n xLarge: 36,\n};\nexport const lineThicknessSizeMap: { [key: string]: number } = {\n xSmall: 1,\n small: 1,\n medium: 2,\n large: 3,\n xLarge: 4,\n};\n\n// Size coversion ramp from the Fluent ActivityIndicator size to the RN ActivityIndicator.\nexport function coreSizeFromFluentSize(fluentSize: ActivityIndicatorSize): CoreActivityIndicatorProps['size'] {\n if (typeof fluentSize === 'undefined') {\n return fluentSize;\n }\n\n switch (fluentSize) {\n case 'xSmall':\n return 'small';\n case 'small':\n return 'small';\n case 'medium':\n return 'small';\n case 'large':\n return 'large';\n case 'xLarge':\n return 'large';\n default:\n assertNever(fluentSize);\n }\n}\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [\n () => ({\n activityIndicatorColor: Appearance.getColorScheme() === 'light' ? '#BDBDBD' : '#666666',\n lineThickness: 'medium',\n size: 'medium',\n }),\n activityIndicatorName,\n ],\n tokensThatAreAlsoProps: 'all',\n slotProps: {\n root: buildProps(\n (tokens: ActivityIndicatorTokens) => ({\n activityIndicatorColor: tokens.activityIndicatorColor,\n size: tokens.size,\n lineThickness: tokens.lineThickness != 'medium' ? tokens.lineThickness : tokens.size,\n accessibilityLabel: 'progressbar',\n accessible: true,\n style: {\n width: diameterSizeMap[tokens.size],\n height: diameterSizeMap[tokens.size],\n },\n }),\n ['activityIndicatorColor', 'lineThickness', 'size'],\n ),\n svg: buildProps(\n (tokens: ActivityIndicatorTokens) => ({\n width: diameterSizeMap[tokens.size],\n height: diameterSizeMap[tokens.size],\n }),\n ['size'],\n ),\n },\n};\n\n// Minimal styling settings for the RN Core ActivityIndicator\nexport const coreStylingSettings: UseStylingOptions = {\n tokens: [\n () => ({\n size: 'small',\n }),\n activityIndicatorName,\n ],\n tokensThatAreAlsoProps: 'all',\n slotProps: {\n root: buildProps(\n (tokens: ActivityIndicatorTokens) => ({\n color: tokens.activityIndicatorColor,\n ...(tokens.size && { size: coreSizeFromFluentSize(tokens.size) }), // Only pass in the prop if defined\n }),\n ['activityIndicatorColor', 'size'],\n ),\n },\n};\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\n\nimport { ActivityIndicator as CoreActivityIndicator } from 'react-native';\n\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, withSlots } from '@fluentui-react-native/framework';\n\nimport { coreStylingSettings } from './ActivityIndicator.styling';\nimport type { CoreActivityIndicatorType, ActivityIndicatorProps } from './ActivityIndicator.types';\nimport { activityIndicatorName } from './ActivityIndicator.types';\n\n/**\n * Wrapper around React Native Core's ActivityIndicator for platforms we do not\n * have a custom FluentUI React Native ActivityIndicator defined.\n */\nexport const ActivityIndicator = compose({\n displayName: activityIndicatorName,\n ...coreStylingSettings,\n slots: {\n root: CoreActivityIndicator,\n },\n useRender: (props: ActivityIndicatorProps, useSlots: UseSlots) => {\n const Slots = useSlots(props);\n return () => ;\n },\n});\n", "import { ActivityIndicator } from './CoreActivityIndicator';\nexport { ActivityIndicator } from './CoreActivityIndicator';\nexport default ActivityIndicator;\n", "export { ActivityIndicator } from './ActivityIndicator';\n", "const margins = { marginTop: 0, marginBottom: 0, marginStart: 0, marginEnd: 0 };\n\n/**\n * Adjusts the margin of text so that it's centered within the layout area of the text.\n * Be default, there is no adjustment, but some platforms may need adjustments due to\n * their font.\n * @returns Adjustment necessary for text\n */\nexport function getTextMarginAdjustment() {\n return margins;\n}\n", "export { getTextMarginAdjustment } from './getMarginAdjustment';\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport { isHighContrast } from '@fluentui-react-native/theming-utils';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { ButtonTokens } from './Button.types';\n\n// https://github.com/microsoft/fluentui-react-native/issues/3782\n// The macOS brand ramps from the token package use blue from Fluent V1,\n// instead of communication blue. Update the packages to use the newly\n// defined Fluent 2 brand ramp.\n\nexport const defaultButtonColorTokens: TokenSettings = (t: Theme) =>\n ({\n backgroundColor: t.colors.neutralBackground2,\n color: t.colors.neutralForeground2,\n borderColor: t.colors.neutralStroke2,\n iconColor: t.colors.neutralForeground2,\n disabled: {\n backgroundColor: t.colors.neutralBackground2,\n color: t.colors.neutralForegroundDisabled,\n borderColor: t.colors.neutralStrokeDisabled,\n iconColor: t.colors.neutralForegroundDisabled,\n },\n hovered: {\n backgroundColor: t.colors.neutralBackground2,\n color: t.colors.neutralForeground2,\n borderColor: t.colors.neutralStroke2,\n iconColor: t.colors.neutralForeground2,\n },\n pressed: {\n backgroundColor: t.colors.neutralBackground2Pressed,\n color: t.colors.neutralForeground2,\n borderColor: t.colors.neutralStroke2,\n iconColor: t.colors.neutralForeground2,\n },\n focused: {\n backgroundColor: t.colors.neutralBackground2,\n color: t.colors.neutralForeground2,\n borderColor: t.colors.neutralStroke2,\n icon: t.colors.neutralForeground2,\n },\n primary: {\n backgroundColor: t.colors.brandBackground,\n color: t.colors.neutralForegroundOnBrand,\n borderColor: t.colors.brandStroke1,\n iconColor: t.colors.neutralForegroundOnBrand,\n disabled: {\n backgroundColor: t.colors.neutralBackgroundDisabled,\n color: t.colors.neutralForegroundDisabled,\n borderColor: t.colors.neutralStrokeDisabled,\n iconColor: t.colors.neutralForegroundDisabled,\n },\n hovered: {\n // https://github.com/microsoft/fluentui-react-native/issues/3780\n // brandBackgroundHover should match brandBackground, but does not. Update\n // `backgroundColor` and `borderColor` here when fixed in design token package.\n backgroundColor: t.colors.brandBackground,\n color: t.colors.neutralForegroundOnBrandHover,\n borderColor: t.colors.brandBackground,\n iconColor: t.colors.neutralForegroundOnBrandHover,\n },\n pressed: {\n backgroundColor: t.colors.brandBackgroundPressed,\n color: t.colors.neutralForegroundOnBrandPressed,\n borderColor: t.colors.brandBackgroundPressed,\n iconColor: t.colors.neutralForegroundOnBrandPressed,\n },\n focused: {\n backgroundColor: t.colors.brandBackground,\n color: t.colors.neutralForegroundOnBrand,\n borderColor: t.colors.brandBackground,\n iconColor: t.colors.neutralForegroundOnBrand,\n },\n },\n // https://github.com/microsoft/fluentui-react-native/issues/3781\n // Subtle Button should match Titlebar buttons on macOS, which:\n // - Have a hover state (unlike most buttons in macOS)...\n // - Except in High Contrast, where instead they have a border around them\n // While the alias tokens aren't updated, manually check for High Contrast.\n subtle: {\n backgroundColor: t.colors.subtleBackground,\n color: t.colors.brandForeground1,\n borderColor: t.colors.transparentStroke,\n iconColor: t.colors.brandForeground1,\n disabled: {\n backgroundColor: t.colors.subtleBackground,\n color: t.colors.brandForeground1Disabled,\n borderColor: t.colors.transparentStrokeDisabled,\n iconColor: t.colors.brandForeground1Disabled,\n },\n hovered: {\n backgroundColor: isHighContrast(t) ? t.colors.subtleBackground : t.colors.subtleBackgroundHover,\n color: isHighContrast(t) ? t.colors.brandForeground1 : t.colors.brandForeground1Hover,\n borderColor: t.colors.transparentStroke,\n iconColor: isHighContrast(t) ? t.colors.brandForeground1 : t.colors.brandForeground1Hover,\n },\n pressed: {\n backgroundColor: t.colors.subtleBackgroundPressed,\n color: t.colors.brandForeground1Pressed,\n borderColor: t.colors.transparentStroke,\n iconColor: t.colors.brandForeground1Pressed,\n },\n focused: {\n backgroundColor: t.colors.subtleBackground,\n color: t.colors.brandForeground1,\n borderColor: t.colors.transparentStroke,\n iconColor: t.colors.brandForeground1,\n },\n },\n } as ButtonTokens);\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { ButtonTokens } from './Button.types';\n\nexport const defaultButtonFontTokens: TokenSettings = (_t: Theme) =>\n ({\n medium: {\n hasContent: {\n variant: 'bodyStandard',\n },\n },\n small: {\n hasContent: {\n variant: 'secondaryStandard',\n },\n },\n large: {\n variant: 'subheaderSemibold',\n },\n } as ButtonTokens);\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { ButtonTokens } from './Button.types';\n\nexport const defaultButtonTokens: TokenSettings = () =>\n ({\n block: {\n width: '100%',\n },\n medium: {\n padding: globalTokens.size60 - globalTokens.stroke.width10,\n borderWidth: globalTokens.stroke.width10,\n iconSize: 16,\n focused: {\n borderWidth: 0,\n padding: globalTokens.size60,\n },\n hasContent: {\n minWidth: 96,\n paddingHorizontal: globalTokens.size120 - globalTokens.stroke.width10,\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size60,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size60,\n },\n focused: {\n paddingHorizontal: globalTokens.size120,\n },\n },\n },\n small: {\n padding: globalTokens.size40 - globalTokens.stroke.width10,\n borderWidth: globalTokens.stroke.width10,\n iconSize: 16,\n focused: {\n borderWidth: 0,\n padding: globalTokens.size40,\n },\n hasContent: {\n minWidth: 64,\n minHeight: 24,\n paddingHorizontal: globalTokens.size80 - globalTokens.stroke.width10,\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size40,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size40,\n },\n focused: {\n paddingHorizontal: globalTokens.size80,\n },\n },\n },\n large: {\n padding: globalTokens.size80 - globalTokens.stroke.width10,\n borderWidth: globalTokens.stroke.width10,\n iconSize: 20,\n focused: {\n borderWidth: 0,\n padding: globalTokens.size80,\n },\n hasContent: {\n minWidth: 96,\n paddingHorizontal: globalTokens.size160 - globalTokens.stroke.width10,\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size60,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size60,\n },\n focused: {\n paddingHorizontal: globalTokens.size160,\n },\n },\n },\n rounded: {\n borderRadius: globalTokens.corner.radius40,\n },\n circular: {\n borderRadius: globalTokens.corner.radiusCircular,\n },\n square: {\n borderRadius: globalTokens.corner.radiusNone,\n },\n } as ButtonTokens);\n", "import type { ColorValue } from 'react-native';\nimport { Platform } from 'react-native';\n\nimport type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\nimport { getTextMarginAdjustment } from '@fluentui-react-native/styling-utils';\nimport { borderStyles, layoutStyles, fontStyles } from '@fluentui-react-native/tokens';\nimport type { FontTokens } from '@fluentui-react-native/tokens';\n\nimport { buttonName } from './Button.types';\nimport type { ButtonTokens, ButtonSlotProps, ButtonProps, ButtonSize, ButtonAppearance } from './Button.types';\nimport { defaultButtonColorTokens } from './ButtonColorTokens';\nimport { defaultButtonFontTokens } from './ButtonFontTokens';\nimport { defaultButtonTokens } from './ButtonTokens';\n\nexport const buttonStates: (keyof ButtonTokens)[] = [\n 'block',\n 'small',\n 'medium',\n 'large',\n 'hasContent',\n 'hasIconAfter',\n 'hasIconBefore',\n 'primary',\n 'subtle',\n 'outline',\n 'rounded',\n 'circular',\n 'square',\n 'hovered',\n 'focused',\n 'pressed',\n 'disabled',\n];\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [defaultButtonTokens, defaultButtonFontTokens, defaultButtonColorTokens, buttonName],\n states: buttonStates,\n slotProps: {\n ...(Platform.OS === 'android' && {\n rippleContainer: buildProps(\n (tokens: ButtonTokens) => {\n return {\n style: {\n flexDirection: 'row',\n alignSelf: 'baseline',\n borderColor: tokens.borderInnerColor,\n borderWidth: tokens.borderInnerWidth,\n borderRadius: tokens.borderRadius,\n overflow: 'hidden',\n },\n };\n },\n ['borderRadius'],\n ),\n }),\n root: buildProps(\n (tokens: ButtonTokens, theme: Theme) => ({\n style: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n justifyContent: 'center',\n width: tokens.width,\n backgroundColor: tokens.backgroundColor,\n ...borderStyles.from(tokens, theme),\n ...layoutStyles.from(tokens, theme),\n },\n android_ripple: {\n color: tokens.rippleColor,\n },\n }),\n ['backgroundColor', 'width', 'rippleColor', ...borderStyles.keys, ...layoutStyles.keys],\n ),\n content: buildProps(\n (tokens: ButtonTokens, theme: Theme) => {\n return {\n style: {\n ...contentStyling(tokens, theme, tokens.color, tokens),\n },\n };\n },\n ['color', 'spacingIconContentAfter', 'spacingIconContentBefore', ...fontStyles.keys],\n ),\n icon: buildProps(\n (tokens: ButtonTokens) => ({\n color: tokens.iconColor,\n height: tokens.iconSize,\n width: tokens.iconSize,\n }),\n ['iconColor', 'iconSize'],\n ),\n focusInnerBorder: buildProps(\n (tokens: ButtonTokens) => ({\n style: {\n position: 'absolute',\n borderWidth: tokens.borderInnerWidth,\n borderColor: tokens.borderInnerColor,\n borderRadius: tokens.borderInnerRadius,\n },\n }),\n ['borderInnerWidth', 'borderInnerColor', 'borderInnerRadius'],\n ),\n },\n};\n\nexport const getDefaultSize = (): ButtonSize => {\n if (Platform.OS === 'windows') {\n return 'medium';\n } else if ((Platform.OS as any) === 'win32') {\n return 'small';\n } else if (Platform.OS === 'macos') {\n return 'small';\n }\n return 'medium';\n};\n\nexport const getPlatformSpecificAppearance = (appearance: ButtonAppearance): ButtonAppearance => {\n // Mobile platforms do not have seperate styling when no appearance is passed.\n const hasDifferentDefaultAppearance = !(Platform.OS === 'android' || Platform.OS === 'ios');\n\n switch (appearance) {\n case 'accent': // Included to cover Mobile platform naming guidelines, maps to 'primary'.\n return 'primary';\n\n case 'primary':\n case 'subtle':\n case 'outline': // 'Outline' exists only for Mobile platforms, default picked on other platforms.\n return appearance;\n\n default:\n if (hasDifferentDefaultAppearance) {\n return null;\n } else {\n return 'primary';\n }\n }\n};\n\nexport const contentStyling = (tokens: ButtonTokens, theme: Theme, contentColor: ColorValue, fontStylesTokens: FontTokens) => {\n const textAdjustment = getTextMarginAdjustment();\n const spacingIconContentBefore = tokens.spacingIconContentBefore\n ? {\n marginStart: textAdjustment.marginStart + tokens.spacingIconContentBefore,\n }\n : {};\n const spacingIconContentAfter = tokens.spacingIconContentAfter\n ? {\n marginEnd: textAdjustment.marginEnd + tokens.spacingIconContentAfter,\n }\n : {};\n return {\n color: contentColor,\n ...getTextMarginAdjustment(),\n ...spacingIconContentBefore,\n ...spacingIconContentAfter,\n ...fontStyles.from(fontStylesTokens, theme),\n };\n};\n", "import * as React from 'react';\nimport { Platform } from 'react-native';\nimport type { LayoutChangeEvent } from 'react-native';\n\nimport { useFluentTheme } from '@fluentui-react-native/framework';\nimport { usePressableState, useKeyProps, useOnPressWithFocus, useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\nimport { isHighContrast } from '@fluentui-react-native/theming-utils';\n\nimport type { ButtonProps, ButtonInfo } from './Button.types';\n\n// On win32 we don't want to fire the onClick event if the Button\n// hasn't received a key down event first. This prevents behavior\n// like the button firing after you tab to it white Enter is pressed\n// and then releasing Enter, or the Menu reopening since it closes\n// onKeyDown while the Button operates onKeyUp.\nconst shouldOnlyFireIfPressed = Platform.OS === ('win32' as any);\nlet isProcessingKeyboardInvocation = false;\n\nexport const useButton = (props: ButtonProps): ButtonInfo => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessible,\n accessibilityRole,\n componentRef = defaultComponentRef,\n disabled,\n onBlur,\n onClick,\n onLayout,\n loading,\n enableFocusRing,\n focusable,\n ...rest\n } = props;\n\n const isDisabled = !!disabled || !!loading;\n\n // GH #1336: Set focusRef to null if button is disabled to prevent getting keyboard focus.\n const focusRef = isDisabled ? null : componentRef;\n const onClickWithFocus = useOnPressWithFocus(focusRef, onClick);\n const onBlurInner = React.useCallback(\n (e) => {\n isProcessingKeyboardInvocation = false;\n onBlur?.(e);\n },\n [onBlur],\n );\n const pressable = usePressableState({ ...rest, onPress: onClickWithFocus, onBlur: shouldOnlyFireIfPressed ? onBlurInner : onBlur });\n\n const onKeyDown = React.useCallback(\n (e) => {\n if (!disabled && (e.nativeEvent.key === 'Enter' || e.nativeEvent.key === ' ')) {\n isProcessingKeyboardInvocation = true;\n }\n },\n [disabled],\n );\n const onKeyPress = React.useCallback(\n (e) => {\n if (shouldOnlyFireIfPressed) {\n if (isProcessingKeyboardInvocation) {\n onClick?.(e);\n isProcessingKeyboardInvocation = false;\n }\n } else {\n if (Platform.OS === 'macos') {\n // Do nothing as macOS's pressable already calls onPress with onKeyDown\n } else {\n onClick?.(e);\n }\n }\n },\n [onClick],\n );\n const onKeyProps = useKeyProps(onKeyPress, ' ', 'Enter');\n\n const hasTogglePattern = props.accessibilityActions && !!props.accessibilityActions.find((action) => action.name === 'Toggle');\n\n const theme = useFluentTheme();\n const shouldUseTwoToneFocusBorder = Platform.OS === ('win32' as any) && props.appearance === 'primary' && !isHighContrast(theme);\n const [baseHeight, setBaseHeight] = React.useState(undefined);\n const [baseWidth, setBaseWidth] = React.useState(undefined);\n const onLayoutInner = React.useCallback(\n (e: LayoutChangeEvent) => {\n // Only run when shouldUseTwoToneFocusBorder so that state update doesn't\n // affect platforms that don't need it.\n if (shouldUseTwoToneFocusBorder) {\n setBaseHeight(e.nativeEvent.layout.height);\n setBaseWidth(e.nativeEvent.layout.width);\n }\n\n onLayout && onLayout(e);\n },\n [onLayout, setBaseHeight, setBaseWidth, shouldUseTwoToneFocusBorder],\n );\n\n return {\n props: {\n ...onKeyProps,\n ...(Platform.OS === ('win32' as any) && { onKeyDown: onKeyDown }),\n ...pressable.props, // allow user key events to override those set by us\n /**\n * https://github.com/facebook/react-native/issues/34986\n * Due to a bug in React Native, unconditionally passing this may cause unnecessary re-renders.\n * Therefore, let's only pass it in if it's defined to limit this issue.\n */\n ...(isDisabled !== undefined && { disabled: isDisabled }),\n accessible: accessible ?? true,\n accessibilityRole: accessibilityRole || 'button',\n onAccessibilityTap: props.onAccessibilityTap || (!hasTogglePattern ? props.onClick : undefined),\n accessibilityLabel: props.accessibilityLabel,\n enableFocusRing: enableFocusRing ?? !shouldUseTwoToneFocusBorder,\n focusable: focusable ?? !isDisabled,\n ref: useViewCommandFocus(componentRef),\n iconPosition: props.iconPosition || 'before',\n loading,\n onLayout: onLayoutInner,\n },\n state: {\n ...pressable.state,\n pressed: pressable.state.pressed,\n measuredWidth: baseWidth,\n measuredHeight: baseHeight,\n shouldUseTwoToneFocusBorder: shouldUseTwoToneFocusBorder,\n },\n };\n};\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { Platform, Pressable, View } from 'react-native';\n\nimport { ActivityIndicator } from '@fluentui-react-native/experimental-activity-indicator';\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, memoize, mergeProps, withSlots } from '@fluentui-react-native/framework';\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport type { IPressableState } from '@fluentui-react-native/interactive-hooks';\nimport { TextV1 as Text } from '@fluentui-react-native/text';\n\nimport { stylingSettings, getDefaultSize, getPlatformSpecificAppearance } from './Button.styling';\nimport { buttonName } from './Button.types';\nimport type { ButtonType, ButtonProps } from './Button.types';\nimport { extractOuterStylePropsAndroid } from './ExtractStyle.android';\nimport { useButton } from './useButton';\n\n/**\n * A function which determines if a set of styles should be applied to the component given the current state and props of the button.\n *\n * @param layer The name of the state that is being checked for\n * @param state The current state of the button\n * @param userProps The props that were passed into the button\n * @returns Whether the styles that are assigned to the layer should be applied to the button\n */\nexport const buttonLookup = (layer: string, state: IPressableState, userProps: ButtonProps): boolean => {\n return (\n state[layer] ||\n userProps[layer] ||\n layer === getPlatformSpecificAppearance(userProps['appearance']) ||\n layer === userProps['size'] ||\n (!userProps['size'] && layer === getDefaultSize()) ||\n layer === userProps['shape'] ||\n (!userProps['shape'] && layer === 'rounded') ||\n (layer === 'hovered' && state[layer] && !userProps.loading) ||\n (layer === 'hasContent' && !userProps.iconOnly) ||\n (layer === 'hasIconAfter' && (userProps.icon || userProps.loading) && userProps.iconPosition === 'after') ||\n (layer === 'hasIconBefore' && (userProps.icon || userProps.loading) && (!userProps.iconPosition || userProps.iconPosition === 'before'))\n );\n};\n\nexport const Button = compose({\n displayName: buttonName,\n ...stylingSettings,\n slots: {\n root: Pressable,\n rippleContainer: Platform.OS === 'android' && View,\n focusInnerBorder: Platform.OS === ('win32' as any) && View,\n icon: Icon,\n content: Text,\n },\n useRender: (userProps: ButtonProps, useSlots: UseSlots) => {\n const button = useButton(userProps);\n\n const iconProps = createIconProps(userProps.icon);\n // grab the styled slots\n const Slots = useSlots(userProps, (layer) => buttonLookup(layer, button.state, userProps));\n\n // now return the handler for finishing render\n return (final: ButtonProps, ...children: React.ReactNode[]) => {\n const { icon, iconOnly, iconPosition, loading, accessibilityLabel, ...mergedProps } = mergeProps(button.props, final);\n\n const shouldShowIcon = !loading && icon;\n if (__DEV__ && iconOnly) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n console.warn('iconOnly should not be set when Button has content.');\n }\n });\n }\n\n let childText = '';\n if (accessibilityLabel === undefined) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n childText = child; // We only automatically support the one child string.\n }\n });\n }\n\n const label = accessibilityLabel ?? childText;\n const buttonContent = (\n \n {loading && }\n {shouldShowIcon && iconPosition === 'before' && }\n {React.Children.map(children, (child) =>\n typeof child === 'string' ? (\n \n {child}\n \n ) : (\n child\n ),\n )}\n {shouldShowIcon && iconPosition === 'after' && }\n \n );\n\n const hasRipple = Platform.OS === 'android';\n if (hasRipple) {\n const [outerStyleProps, innerStyleProps] = extractOuterStylePropsAndroid(mergedProps.style);\n return (\n \n {/* RN Pressable needs to be wrapped with a root view to support curved edges */}\n \n {buttonContent}\n \n \n );\n } else {\n return (\n \n {buttonContent}\n {button.state.focused &&\n !!button.state.measuredHeight &&\n !!button.state.measuredWidth &&\n button.state.shouldUseTwoToneFocusBorder && (\n \n )}\n \n );\n }\n };\n },\n});\n\nconst getFocusBorderStyleWorker = (height: number, width: number) => {\n const adjustment = 2; // width of border * 2\n\n return {\n height: height - adjustment,\n width: width - adjustment,\n };\n};\nexport const getFocusBorderStyle = memoize(getFocusBorderStyleWorker);\n", "import type { ViewProps, ColorValue } from 'react-native';\n\nimport type { TextProps } from '@fluentui-react-native/text';\nimport type { FontTokens } from '@fluentui-react-native/tokens';\n\nimport type { ButtonSlotProps, ButtonTokens, ButtonProps } from '../Button.types';\n\nexport const compoundButtonName = 'CompoundButton';\n\nexport interface CompoundButtonTokens extends ButtonTokens {\n /**\n * Font of the second line of text on the button.\n */\n secondaryContentFont?: FontTokens;\n\n /**\n * Color of the second line of text on the button.\n */\n secondaryContentColor?: ColorValue;\n\n /**\n * States that can be applied to a button\n * These can be used to modify styles of the button when under the specified state.\n */\n hovered?: CompoundButtonTokens;\n focused?: CompoundButtonTokens;\n pressed?: CompoundButtonTokens;\n disabled?: CompoundButtonTokens;\n primary?: CompoundButtonTokens;\n subtle?: CompoundButtonTokens;\n small?: CompoundButtonTokens;\n medium?: CompoundButtonTokens;\n large?: CompoundButtonTokens;\n hasContent?: CompoundButtonTokens;\n}\n\nexport interface CompoundButtonProps extends ButtonProps {\n /**\n * Second line of text that describes the action this button takes.\n */\n secondaryContent?: string;\n}\n\nexport interface CompoundButtonSlotProps extends ButtonSlotProps {\n contentContainer: ViewProps;\n secondaryContent: TextProps;\n}\n\nexport interface CompoundButtonType {\n props: CompoundButtonProps;\n tokens: CompoundButtonTokens;\n slotProps: CompoundButtonSlotProps;\n}\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { CompoundButtonTokens } from './CompoundButton.types';\n\nexport const defaultCompoundButtonColorTokens: TokenSettings = (t: Theme): CompoundButtonTokens => ({\n secondaryContentColor: t.colors.defaultSecondaryContent,\n hovered: {\n secondaryContentColor: t.colors.defaultHoveredSecondaryContent,\n },\n focused: {\n secondaryContentColor: t.colors.defaultFocusedSecondaryContent,\n },\n pressed: {\n secondaryContentColor: t.colors.defaultPressedSecondaryContent,\n },\n primary: {\n secondaryContentColor: t.colors.brandedSecondaryContent,\n hovered: {\n secondaryContentColor: t.colors.brandedHoveredSecondaryContent,\n },\n focused: {\n secondaryContentColor: t.colors.brandedFocusedSecondaryContent,\n },\n pressed: {\n secondaryContentColor: t.colors.brandedPressedSecondaryContent,\n },\n },\n subtle: {\n secondaryContentColor: t.colors.ghostSecondaryContent,\n hovered: {\n secondaryContentColor: t.colors.ghostHoveredSecondaryContent,\n },\n focused: {\n secondaryContentColor: t.colors.ghostFocusedSecondaryContent,\n },\n pressed: {\n secondaryContentColor: t.colors.ghostPressedSecondaryContent,\n },\n },\n});\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { CompoundButtonTokens } from './CompoundButton.types';\n\nexport const defaultCompoundButtonFontTokens: TokenSettings = (_t: Theme): CompoundButtonTokens => ({\n medium: {\n hasContent: {\n variant: 'bodySemibold',\n secondaryContentFont: { variant: 'secondaryStandard' },\n },\n },\n small: {\n hasContent: {\n variant: 'bodyStandard',\n secondaryContentFont: { variant: 'secondaryStandard' },\n },\n },\n large: {\n hasContent: {\n variant: 'subheaderSemibold',\n secondaryContentFont: { variant: 'bodyStandard' },\n },\n },\n});\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { CompoundButtonTokens } from './CompoundButton.types';\n\nexport const defaultCompoundButtonTokens: TokenSettings = (): CompoundButtonTokens => ({\n medium: {\n padding: globalTokens.size120 - globalTokens.stroke.width10,\n focused: {\n padding: globalTokens.size120,\n },\n hasContent: {\n paddingHorizontal: globalTokens.size120 - globalTokens.stroke.width10,\n minWidth: 96,\n focused: {\n paddingHorizontal: globalTokens.size120,\n },\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size120,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size120,\n },\n circular: {\n paddingHorizontal: globalTokens.size160 - globalTokens.stroke.width10,\n focused: {\n paddingHorizontal: globalTokens.size160,\n },\n },\n },\n },\n small: {\n padding: globalTokens.size80 - globalTokens.stroke.width10,\n focused: {\n padding: globalTokens.size80,\n },\n hasContent: {\n paddingHorizontal: globalTokens.size80 - globalTokens.stroke.width10,\n minWidth: 64,\n focused: {\n paddingHorizontal: globalTokens.size80,\n },\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size80,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size80,\n },\n circular: {\n paddingHorizontal: globalTokens.size120 - globalTokens.stroke.width10,\n focused: {\n paddingHorizontal: globalTokens.size120,\n },\n },\n },\n },\n large: {\n padding: globalTokens.size160 - globalTokens.stroke.width10,\n focused: {\n padding: globalTokens.size160,\n },\n hasContent: {\n paddingHorizontal: globalTokens.size160 - globalTokens.stroke.width10,\n minWidth: 96,\n focused: {\n paddingHorizontal: globalTokens.size160,\n },\n hasIconAfter: {\n spacingIconContentAfter: globalTokens.size160,\n },\n hasIconBefore: {\n spacingIconContentBefore: globalTokens.size160,\n },\n circular: {\n paddingHorizontal: globalTokens.size200 - globalTokens.stroke.width10,\n focused: {\n paddingHorizontal: globalTokens.size200,\n },\n },\n },\n },\n});\n", "import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\nimport { borderStyles, fontStyles, layoutStyles } from '@fluentui-react-native/tokens';\n\nimport { compoundButtonName } from './CompoundButton.types';\nimport type { CompoundButtonTokens, CompoundButtonSlotProps, CompoundButtonProps } from './CompoundButton.types';\nimport { defaultCompoundButtonColorTokens } from './CompoundButtonColorTokens';\nimport { defaultCompoundButtonFontTokens } from './CompoundButtonFontTokens';\nimport { defaultCompoundButtonTokens } from './CompoundButtonTokens';\nimport { buttonStates, contentStyling } from '../Button.styling';\nimport { defaultButtonColorTokens } from '../ButtonColorTokens';\nimport { defaultButtonTokens } from '../ButtonTokens';\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [\n defaultButtonTokens,\n defaultButtonColorTokens,\n defaultCompoundButtonTokens,\n defaultCompoundButtonFontTokens,\n defaultCompoundButtonColorTokens,\n compoundButtonName,\n ],\n states: buttonStates,\n slotProps: {\n root: buildProps(\n (tokens: CompoundButtonTokens, theme: Theme) => ({\n style: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n justifyContent: 'center',\n width: tokens.width,\n backgroundColor: tokens.backgroundColor,\n ...borderStyles.from(tokens, theme),\n ...layoutStyles.from(tokens, theme),\n },\n }),\n ['backgroundColor', 'width', ...borderStyles.keys, ...layoutStyles.keys],\n ),\n contentContainer: {\n style: {\n display: 'flex',\n flexDirection: 'column',\n },\n },\n content: buildProps(\n (tokens: CompoundButtonTokens, theme: Theme) => {\n return {\n style: {\n ...contentStyling(tokens, theme, tokens.color, tokens),\n },\n };\n },\n ['color', 'spacingIconContentAfter', 'spacingIconContentBefore', ...fontStyles.keys],\n ),\n secondaryContent: buildProps(\n (tokens: CompoundButtonTokens, theme: Theme) => {\n return {\n style: {\n ...contentStyling(tokens, theme, tokens.secondaryContentColor, tokens.secondaryContentFont),\n },\n };\n },\n ['secondaryContentColor', 'secondaryContentFont', ...fontStyles.keys],\n ),\n icon: buildProps(\n (tokens: CompoundButtonTokens) => ({\n style: {\n tintColor: tokens.iconColor,\n },\n height: tokens.iconSize,\n width: tokens.iconSize,\n }),\n ['iconColor', 'iconSize'],\n ),\n focusInnerBorder: buildProps(\n (tokens: CompoundButtonTokens) => ({\n style: {\n position: 'absolute',\n borderWidth: tokens.borderInnerWidth,\n borderColor: tokens.borderInnerColor,\n borderRadius: tokens.borderInnerRadius,\n },\n }),\n ['borderInnerWidth', 'borderInnerColor', 'borderInnerRadius'],\n ),\n },\n};\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { Platform, Pressable, View } from 'react-native';\n\nimport { ActivityIndicator } from '@fluentui-react-native/experimental-activity-indicator';\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, mergeProps, withSlots } from '@fluentui-react-native/framework';\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport { TextV1 as Text } from '@fluentui-react-native/text';\n\nimport { stylingSettings } from './CompoundButton.styling';\nimport type { CompoundButtonProps, CompoundButtonType } from './CompoundButton.types';\nimport { compoundButtonName } from './CompoundButton.types';\nimport { buttonLookup, getFocusBorderStyle } from '../Button';\nimport { useButton } from '../useButton';\n\nexport const CompoundButton = compose({\n displayName: compoundButtonName,\n ...stylingSettings,\n slots: {\n root: Pressable,\n icon: Icon,\n content: Text,\n secondaryContent: Text,\n contentContainer: View,\n focusInnerBorder: Platform.OS === ('win32' as any) && View,\n },\n useRender: (userProps: CompoundButtonProps, useSlots: UseSlots) => {\n const button = useButton(userProps);\n const iconProps = createIconProps(userProps.icon);\n\n // grab the styled slots\n const Slots = useSlots(userProps, (layer) => buttonLookup(layer, button.state, userProps));\n\n // now return the handler for finishing render\n return (final: CompoundButtonProps, ...children: React.ReactNode[]) => {\n const { icon, iconOnly, secondaryContent, iconPosition, loading, accessibilityLabel, ...mergedProps } = mergeProps(\n button.props,\n final,\n );\n\n const shouldShowIcon = !loading && icon;\n if (__DEV__ && iconOnly) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n console.warn('iconOnly should not be set when Button has content.');\n }\n });\n }\n\n let childText = '';\n if (accessibilityLabel === undefined) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n childText = child; // We only automatically support the one child string.\n }\n });\n\n if (secondaryContent) {\n childText += ' ' + secondaryContent;\n }\n }\n const label = accessibilityLabel ?? childText;\n\n return (\n \n {loading && }\n {shouldShowIcon && iconPosition === 'before' && }\n \n {React.Children.map(children, (child) =>\n typeof child === 'string' ? (\n \n {child}\n \n ) : (\n child\n ),\n )}\n {secondaryContent && (\n \n {secondaryContent}\n \n )}\n \n {shouldShowIcon && iconPosition === 'after' && }\n {button.state.focused &&\n !!button.state.measuredHeight &&\n !!button.state.measuredWidth &&\n button.state.shouldUseTwoToneFocusBorder && (\n \n )}\n \n );\n };\n },\n});\n", "export * from './CompoundButton.types';\nexport * from './CompoundButton';\n", "import type { ShadowProps } from '@fluentui-react-native/experimental-shadow';\nimport type { IconSourcesType } from '@fluentui-react-native/icon';\n\nimport type { ButtonSlotProps, ButtonCoreTokens, ButtonCoreProps } from '../Button.types';\n\nexport const fabName = 'FAB';\nexport type FABSize = 'small' | 'large';\nexport type FABAppearance = 'primary' | 'subtle' | 'accent';\n\nexport interface FABSlotProps extends ButtonSlotProps {\n shadow?: ShadowProps;\n}\n\nexport interface FABProps extends ButtonCoreProps {\n /**\n * A FAB can have its content and borders styled for greater emphasis or to be subtle.\n * - 'primary' or 'accent': Emphasizes the button as a primary action.\n * 'accent' is mobile naming convention, 'primary' included here to maintain parity with Button.\n * - 'subtle': Minimizes emphasis to blend into the background until hovered or focused.\n * @default 'primary' (or 'accent')\n */\n appearance?: FABAppearance;\n\n /*\n * Source URL or name of the icon to show on the Button.\n * 'icon' already exists in ButtonCoreProps. This overrides its optionality.\n */\n icon: IconSourcesType;\n\n /**\n * FAB text and other content can be hidden with this prop.\n * @default 'true'\n */\n showContent?: boolean;\n\n /** Sets style of FAB to a preset size style.\n * @default 'large'\n */\n size?: FABSize;\n}\n\nexport interface FABTokens extends Omit {\n /**\n * States that can be applied to FAB.\n */\n focused?: FABTokens;\n pressed?: FABTokens;\n subtle?: FABTokens;\n disabled?: FABTokens;\n large?: FABTokens;\n small?: FABTokens;\n hasContent?: FABTokens;\n}\n\nexport interface FABType {\n props: FABProps;\n tokens: FABTokens;\n slotProps: FABSlotProps;\n}\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport type * as React from 'react';\nimport { Pressable } from 'react-native';\n\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose } from '@fluentui-react-native/framework';\nimport { Icon } from '@fluentui-react-native/icon';\nimport { TextV1 as Text } from '@fluentui-react-native/text';\n\nimport type { FABProps, FABType } from './FAB.types';\nimport { fabName } from './FAB.types';\n\nexport const FAB = compose({\n displayName: fabName,\n slots: {\n root: Pressable,\n icon: Icon,\n content: Text,\n },\n useRender: (_userProps: FABProps, _useSlots: UseSlots) => {\n return (_final: FABProps, ..._children: React.ReactNode[]) => {\n return null; // Only implemented for mobile endpoints\n };\n },\n});\n", "export * from './FAB.types';\nexport * from './FAB';\n", "import type { ButtonInfo } from '..';\nimport type { ButtonSlotProps, ButtonTokens, ButtonProps } from '../Button.types';\n\nexport const toggleButtonName = 'ToggleButton';\n\nexport interface ToggleButtonTokens extends ButtonTokens {\n checked?: ToggleButtonTokens;\n}\n\nexport interface ToggleButtonProps extends ButtonProps {\n /**\n * Defines the controlled checked state of the `ToggleButton`.\n * Mutually exclusive to `defaultChecked`.\n * This should only be used if the checked state is to be controlled at a higher level and there is a plan to pass the\n * correct value based on handling `onClick` events and re-rendering.\n */\n checked?: boolean;\n /**\n * Defines whether the `ToggleButton` is inititally in a checked state or not when rendered.\n * Mutually exclusive to `checked`.\n */\n defaultChecked?: boolean;\n}\n\nexport interface ToggleButtonInfo extends ButtonInfo {\n state: ButtonInfo['state'] & {\n /**\n * Whether the ToggleButton is toggled or not\n */\n checked?: boolean;\n };\n}\n\nexport type ToggleButtonSlotProps = ButtonSlotProps;\n\nexport interface ToggleButtonType {\n props: ToggleButtonProps;\n tokens: ToggleButtonTokens;\n slotProps: ToggleButtonSlotProps;\n}\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { ToggleButtonTokens } from './ToggleButton.types';\n\nexport const defaultToggleButtonColorTokens: TokenSettings = (t: Theme): ToggleButtonTokens => ({\n checked: {\n color: t.colors.defaultCheckedContent,\n backgroundColor: t.colors.defaultCheckedBackground,\n hovered: {\n color: t.colors.defaultCheckedHoveredContent,\n backgroundColor: t.colors.defaultCheckedHoveredBackground,\n },\n subtle: {\n color: t.colors.ghostCheckedContent,\n backgroundColor: t.colors.ghostCheckedBackground,\n hovered: {\n color: t.colors.ghostCheckedHoveredContent,\n backgroundColor: t.colors.ghostCheckedHoveredBackground,\n borderColor: t.colors.ghostCheckedHoveredBorder,\n },\n },\n },\n});\n", "import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\nimport { borderStyles, layoutStyles, fontStyles } from '@fluentui-react-native/tokens';\n\nimport { toggleButtonName } from './ToggleButton.types';\nimport type { ToggleButtonTokens, ToggleButtonSlotProps, ToggleButtonProps } from './ToggleButton.types';\nimport { defaultToggleButtonColorTokens } from './ToggleButtonColorTokens';\nimport { buttonStates, contentStyling } from '../Button.styling';\nimport { defaultButtonColorTokens } from '../ButtonColorTokens';\nimport { defaultButtonFontTokens } from '../ButtonFontTokens';\nimport { defaultButtonTokens } from '../ButtonTokens';\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [defaultButtonTokens, defaultButtonFontTokens, defaultButtonColorTokens, defaultToggleButtonColorTokens, toggleButtonName],\n states: ['checked', ...buttonStates],\n slotProps: {\n root: buildProps(\n (tokens: ToggleButtonTokens, theme: Theme) => ({\n style: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n justifyContent: 'center',\n width: tokens.width,\n backgroundColor: tokens.backgroundColor,\n ...borderStyles.from(tokens, theme),\n ...layoutStyles.from(tokens, theme),\n },\n }),\n ['backgroundColor', 'width', ...borderStyles.keys, ...layoutStyles.keys],\n ),\n content: buildProps(\n (tokens: ToggleButtonTokens, theme: Theme) => ({\n style: {\n ...contentStyling(tokens, theme, tokens.color, tokens),\n },\n }),\n ['color', 'spacingIconContentAfter', 'spacingIconContentBefore', ...fontStyles.keys],\n ),\n icon: buildProps(\n (tokens: ToggleButtonTokens) => ({\n style: {\n tintColor: tokens.iconColor,\n },\n height: tokens.iconSize,\n width: tokens.iconSize,\n }),\n ['iconColor', 'iconSize'],\n ),\n focusInnerBorder: buildProps(\n (tokens: ToggleButtonTokens) => ({\n style: {\n position: 'absolute',\n borderWidth: tokens.borderInnerWidth,\n borderColor: tokens.borderInnerColor,\n borderRadius: tokens.borderInnerRadius,\n },\n }),\n ['borderInnerWidth', 'borderInnerColor', 'borderInnerRadius'],\n ),\n },\n};\n", "import * as React from 'react';\nimport type { AccessibilityState } from 'react-native';\n\nimport { memoize } from '@fluentui-react-native/framework';\nimport { useAsToggleWithEvent } from '@fluentui-react-native/interactive-hooks';\n\nimport type { ToggleButtonProps, ToggleButtonInfo } from './ToggleButton.types';\nimport { useButton } from '../useButton';\n\nconst defaultAccessibilityActions = [{ name: 'Toggle' }];\n\nexport const useToggleButton = (props: ToggleButtonProps): ToggleButtonInfo => {\n const { accessibilityActions, accessibilityState, defaultChecked, checked, onAccessibilityAction, onClick, ...rest } = props;\n // Warns defaultChecked and checked being mutually exclusive.\n if (defaultChecked != undefined && checked != undefined) {\n console.warn('defaultChecked and checked are mutually exclusive to one another. Use one or the other.');\n }\n const [checkedValue, toggle] = useAsToggleWithEvent(defaultChecked, checked, onClick);\n const accessibilityActionsProp = accessibilityActions\n ? [...defaultAccessibilityActions, ...accessibilityActions]\n : defaultAccessibilityActions;\n const onAccessibilityActionProp = React.useCallback(\n (event) => {\n switch (event.nativeEvent.actionName) {\n case 'Toggle':\n toggle(event);\n break;\n }\n onAccessibilityAction && onAccessibilityAction(event);\n },\n [toggle, onAccessibilityAction],\n );\n\n const button = useButton({\n onClick: toggle,\n accessibilityActions: accessibilityActionsProp,\n accessibilityState: getAccessibilityState(checkedValue, accessibilityState),\n onAccessibilityAction: onAccessibilityActionProp,\n ...rest,\n });\n\n return {\n props: button.props,\n state: { ...button.state, checked: checkedValue },\n };\n};\n\nconst getAccessibilityState = memoize(getAccessibilityStateWorker);\nfunction getAccessibilityStateWorker(toggled: boolean, accessibilityState?: AccessibilityState) {\n if (accessibilityState) {\n return { checked: toggled, ...accessibilityState };\n }\n return { checked: toggled };\n}\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { Platform, Pressable, View } from 'react-native';\n\nimport { ActivityIndicator } from '@fluentui-react-native/experimental-activity-indicator';\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, mergeProps, withSlots } from '@fluentui-react-native/framework';\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport { TextV1 as Text } from '@fluentui-react-native/text';\n\nimport { stylingSettings } from './ToggleButton.styling';\nimport type { ToggleButtonProps, ToggleButtonType } from './ToggleButton.types';\nimport { toggleButtonName } from './ToggleButton.types';\nimport { useToggleButton } from './useToggleButton';\nimport { buttonLookup, getFocusBorderStyle } from '../Button';\n\nexport const ToggleButton = compose({\n displayName: toggleButtonName,\n ...stylingSettings,\n slots: {\n root: Pressable,\n icon: Icon,\n content: Text,\n focusInnerBorder: Platform.OS === ('win32' as any) && View,\n },\n useRender: (userProps: ToggleButtonProps, useSlots: UseSlots) => {\n const iconProps = createIconProps(userProps.icon);\n const toggleButton = useToggleButton(userProps);\n\n // grab the styled slots\n const Slots = useSlots(userProps, (layer) => buttonLookup(layer, toggleButton.state, userProps));\n\n // now return the handler for finishing render\n return (final: ToggleButtonProps, ...children: React.ReactNode[]) => {\n const { icon, iconPosition, iconOnly, loading, accessibilityLabel, ...mergedProps } = mergeProps(toggleButton.props, final);\n const shouldShowIcon = !loading && icon;\n\n if (__DEV__ && iconOnly) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n console.warn('iconOnly should not be set when Button has content.');\n }\n });\n }\n\n let childText = '';\n if (accessibilityLabel === undefined) {\n React.Children.forEach(children, (child) => {\n if (typeof child === 'string') {\n childText = child; // We only automatically support the one child string.\n }\n });\n }\n const label = accessibilityLabel ?? childText;\n\n return (\n \n {loading && }\n {shouldShowIcon && iconPosition === 'before' && }\n {React.Children.map(children, (child) =>\n typeof child === 'string' ? (\n \n {child}\n \n ) : (\n child\n ),\n )}\n {shouldShowIcon && iconPosition === 'after' && }\n {toggleButton.state.focused &&\n !!toggleButton.state.measuredHeight &&\n !!toggleButton.state.measuredWidth &&\n toggleButton.state.shouldUseTwoToneFocusBorder && (\n \n )}\n \n );\n };\n },\n});\n", "export * from './ToggleButton.types';\nexport * from './ToggleButton';\nexport { useToggleButton } from './useToggleButton';\n", "export { buttonName } from './deprecated/Button.types';\nexport type {\n IButtonInfo,\n IButtonProps,\n IButtonRenderData,\n IButtonSlotProps,\n IButtonState,\n IButtonTokens,\n IButtonType,\n} from './deprecated/Button.types';\nexport { Button } from './deprecated/Button';\nexport { PrimaryButton } from './deprecated/PrimaryButton';\nexport { StealthButton } from './deprecated/StealthButton';\nexport type {\n ButtonSize,\n ButtonAppearance,\n ButtonShape,\n ButtonCoreTokens,\n ButtonTokens,\n ButtonCoreProps,\n ButtonProps,\n ButtonInfo,\n ButtonSlotProps,\n ButtonType,\n} from './Button.types';\nexport { buttonName as buttonNameV1 } from './Button.types';\nexport { Button as ButtonV1 } from './Button';\nexport { useButton } from './useButton';\nexport { CompoundButton, compoundButtonName } from './CompoundButton';\nexport type { CompoundButtonProps, CompoundButtonSlotProps, CompoundButtonTokens, CompoundButtonType } from './CompoundButton';\nexport { FAB, fabName } from './FAB';\nexport type { FABSize, FABSlotProps, FABProps, FABTokens, FABType } from './FAB';\nexport { ToggleButton, toggleButtonName, useToggleButton } from './ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonSlotProps, ToggleButtonInfo, ToggleButtonTokens, ToggleButtonType } from './ToggleButton';\n", "import type * as React from 'react';\nimport type { KeyboardMetrics, ViewStyle } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nimport type { CalloutNativeCommands } from './CalloutNativeCommands.types';\nexport const calloutName = 'Callout';\n\n/**\n * Properties and Tokens for FluentUI React Native Callout\n */\n\nexport type DirectionalHint =\n | 'leftTopEdge'\n | 'leftCenter'\n | 'leftBottomEdge'\n | 'topLeftEdge'\n | 'topAutoEdge'\n | 'topCenter'\n | 'topRightEdge'\n | 'rightTopEdge'\n | 'rightCenter'\n | 'rightBottomEdge'\n | 'bottonLeftEdge'\n | 'bottomAutoEdge'\n | 'bottomCenter'\n | 'bottomRightEdge';\n\nexport type DismissBehaviors = 'preventDismissOnKeyDown' | 'preventDismissOnClickOutside';\n\nexport interface RestoreFocusEvent {\n nativeEvent: {\n /**\n * containsFocus is true if the Callout had focus while being dismissed.\n */\n containsFocus: boolean;\n };\n}\n\ninterface OmittedBorderTokens {\n borderStyle?: ViewStyle['borderStyle'];\n}\n\ntype CalloutBorderTokens = Omit;\n\nexport interface ICalloutTokens extends IBackgroundColorTokens, CalloutBorderTokens {\n /**\n * AnchorRect arbitrary anchor rectangle; coordinate system is in DIPs, relative\n * to the React surface origin.\n */\n anchorRect?: KeyboardMetrics;\n\n /**\n * Width of the beak on the Callout indicating its anchor.\n */\n beakWidth?: number;\n\n /**\n * Defines the suggested drop direction and alignment for the Callout to use, relative\n * to the anchor information.\n */\n directionalHint?: DirectionalHint;\n\n /**\n * Defines variations on how the callout dismissal may be controlled. the async eventing\n * of React-Native makes passing some aspects of dismissal control over to JS difficult.\n * Moreover, the native platform or host may have competing priorities with regards to transient UI\n * that generate bi-directional lifetime management between JS (which mounts and unmounts the\n * component) and native (which may tear down the transient UI without JS input).\n *\n * This property provides control over the latter issue, enabling relevant native platform\n * interactions with transient UI to be managed from JS.\n *\n * These behaviors should generally be orthogonal, and therefore combinable.\n */\n dismissBehaviors?: DismissBehaviors[];\n\n /**\n * Defines the size of the gap between the anchor and the Callout. Not used if\n * no anchor information is provided.\n */\n gapSpace?: number;\n\n /**\n * Defines a maximum height for the Callout.\n */\n maxHeight?: number | `${number}%`;\n\n /**\n * Defines a maximum width for the Callout.\n */\n maxWidth?: number | `${number}%`;\n\n /**\n * Defines a minimum width for the Callout.\n */\n minWidth?: number | `${number}%`;\n\n /**\n * Defines the minimum padding between the Callout and the display edges.\n */\n minPadding?: number;\n}\n\nexport interface ICalloutProps extends IViewProps, ICalloutTokens {\n /**\n * A string that should be announced when the callout is shown.\n * @platform win32\n */\n accessibilityOnShowAnnouncement?: string;\n\n /**\n * A RefObject to access the IFocusable interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * Defines event redirection behaviors for pointer events relative to the Callout control.\n *\n * Pointer events (i.e. mouse, pen, touch) often have the effect of initiating and dismissing Callout controls.\n * Typically the instigating events are click events, but when using a mouse may also include pointer enter\n * and leave events i.e. hover. Once opened, many Callout scenarios desire modal-like interactions, where\n * the user must interact with or relative to the Callout before interacting with other controls again. A common\n * example is context menus, where pointer events away from the menu may dismiss the context menu. Such an interaction\n * can initiate unintended actions such as invoking a button or otherwise pointer-responsive surface. The modal-like\n * behavior is the most common case of Callout usage, and having \"safe\" areas to press-dismiss the Callout without\n * invoking additional actions is useful.\n *\n * This modal-like behavior, where true modal behavior would specifically require interacting with the modal component until\n * it is dismissed, has implications for canonical event routing in React-Native. Canonically all pointer events are passed in\n * a Capture phase from the root element to the target element, then bubbled back from the target element to the root element.\n * This structure allows many interaction patterns to be implemented that may include stopping event routing in each phase.\n * This event routing can disrupt the modal-like behavior desired by a Callout control, which in native frameworks may take\n * advantage of a \"take event capture\" feature -- making the Callout the first handler of the pointer event. The event may optionally\n * be forwarded afterwards to the canonical event routing pattern for further handling (and often is not forwarded).\n *\n * One impact of \"taking event capture\" is the implicit behavior for mouse events on the parent surface of the Callout -- if\n * event capture is taken by the Callout, paired events may fire such as a mouse leave event. This makes sense if we think about\n * the event behavior after the Callout has taken capture; mouse enter and mouse leave events would only propagate to the parent surface\n * if the Callout event handling decided to forward said events (often not). As paired events, however, there should not be a\n * mouse enter event without a corresponding mouse leave event (or vice versa). Since mouse enter and mouse leave events would not\n * naturally fire on the parent surface when the Callout has pointer capture, the parent surface should receive a mouse leave event when\n * the Callout takes capture.\n *\n * Coming back to the start of this comment, some Callout scenarios may be initiated by mouse enter/leave events. A common example is\n * tooltips, which are supported on lower-level React-Native components, but such behavior is not exclusive to tooltips.\n * The Callout control is generally used for more advanced scenarios, as mentioned before often desiring modal-like behavior and accordingly\n * the default behavior of the Callout control is to take pointer capture. Accounting for the paired mouse enter/leave events in the paragraph\n * above, it is difficult to have a mouse enter/leave-invoked Callout that takes pointer capture -- without significant workarounds,\n * the Callout would open and close cyclically from repeated mouse enter/leave events. There are other scenarios where taking pointer capture\n * is not desirable, such as a semi-persistent Callout; to support these scenarios the doNotTakePointerCapture property is offered to\n * specify if the Callout should not take pointer capture when it opens.\n *\n * While pointer capture is generally managed in native frameworks via imperative APIs, managing pointer capture is offered as a property that\n * only affects the Callout's on-show behavior when it would typically take pointer capture. This design implies that changing this property after\n * the Callout has been shown has no effect -- similar to the Callout's onShow callback. Doing so simplifies Callout usage for developers,\n * not needing to mind native platform pointer capture that may be complex particularly when React-Native is integrated into a larger app.\n * Pointer capture may be lost (and regained) but is otherwise abstracted away from the developer. More advanced control of pointer capture\n * would need to be provided by a native module independent of any particular control.\n *\n * When the Callout is closed, pointer capture is released by the Callout and further handled by the native platform -- generally returning\n * pointer capture to the parent surface.\n * @platform win32\n */\n doNotTakePointerCapture?: boolean;\n\n /**\n * Adds a beak to the Callout, pointing to the anchor target.\n * Notable Win32 limitation: Beak rendering currently limits the border width to its default, and the\n * border width prop will not be honored.\n * @platform win32\n */\n isBeakVisible?: boolean;\n\n /**\n * Callback invoked when the callout has been dismissed.\n */\n onDismiss?: () => void;\n\n /**\n * Callback invoked during callout dismissal; if set, focus will not be restored by the callout and onRestoreFocus must\n * result in focus being moved to the appropriate focusable target.\n *\n * The callee should carefully consider their scenarios to avoid dropping focus, or inappropriately\n * moving focus from another component. Focus is not guaranteed to have entered the React-Native surface at all, and\n * this callback is most appropriate for components strictly controlling focus.\n *\n * restoreFocusEvent.nativeEvent.containsFocus is true if the Callout had focus while being dismissed.\n * @platform win32\n */\n onRestoreFocus?: (restoreFocusEvent: RestoreFocusEvent) => void;\n\n /**\n * Callback invoked when the callout has been shown.\n */\n onShow?: () => void;\n\n /**\n * Determines whether the Callout sets focus when displayed.\n * On macOS: this determines whether the Callout becomes the key window.\n * On win32: If true then the callout will attempt to focus the first focusable element that it contains.\n * If it doesn't find an element, no focus will be set. This means that it's the contents responsibility\n * to either set focus or have focusable items.\n */\n setInitialFocus?: boolean;\n\n /**\n * Target node the callout uses for relative positioning; the anchor of the callout.\n * A ref is the typical usage; certain components may proffer a string as an anchor target, such as\n * anchoring to a point inside the component.\n */\n target?: React.RefObject | string;\n}\n\nexport type ICalloutSlotProps = {\n root: ICalloutProps;\n};\n\nexport type ICalloutRenderData = IRenderData;\n\nexport interface ICalloutType {\n props: ICalloutProps;\n slotProps: ICalloutSlotProps;\n tokens: ICalloutTokens;\n}\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ICalloutType } from './Callout.types';\nimport { calloutName } from './Callout.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'bodyStandoutBackground',\n borderColor: 'transparent',\n borderWidth: 0,\n borderRadius: 5,\n directionalHint: 'bottonLeftEdge',\n },\n root: {\n style: {\n position: 'absolute',\n },\n },\n },\n calloutName,\n];\n", "module.exports = OfficePlatformGlobal.ReactNative.codegenNativeCommands", "module.exports = OfficePlatformGlobal.ReactNative.codegenNativeComponent", "module.exports = OfficePlatformGlobal.ReactNative.NativeComponentRegistry", "module.exports = OfficePlatformGlobal.ReactNative.ViewConfigIgnore", "module.exports = OfficePlatformGlobal.ReactNative.RendererProxy", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport type { WithDefault, DirectEventHandler, Double, Int32 } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nimport type { UnsafeMixed } from './codegenTypes';\n// Should be:\n// import type {UnsafeMixed} from 'react-native/Libraries/Types/CodegenTypes';\n\ntype AnchorRect = {\n screenX: Double;\n screenY: Double;\n width: Double;\n height: Double;\n};\n\nexport interface NativeProps extends ViewProps {\n accessibilityLabel?: string;\n accessibilityOnShowAnnouncement?: string;\n anchorRect?: AnchorRect;\n directionalHint?: WithDefault<\n | 'leftTopEdge'\n | 'leftCenter'\n | 'leftBottomEdge'\n | 'topLeftEdge'\n | 'topAutoEdge'\n | 'topCenter'\n | 'topRightEdge'\n | 'rightTopEdge'\n | 'rightCenter'\n | 'rightBottomEdge'\n | 'bottonLeftEdge'\n | 'bottomAutoEdge'\n | 'bottomCenter'\n | 'bottomRightEdge',\n 'bottonLeftEdge'\n >;\n dismissBehaviors?: string[];\n doNotTakePointerCapture?: boolean;\n focusable?: boolean;\n isBeakVisible?: boolean;\n maxHeight?: Int32;\n maxWidth?: Int32;\n setInitialFocus?: boolean;\n target?: UnsafeMixed;\n // targetAnchor?: string; // Win32 only Callout can target an anchor registered in the anchor registry // Can be a node id or an anchor ID - This need to be reworked as Mixed types are not supported going forward\n testID?: string;\n\n onRestoreFocus?: DirectEventHandler<{ target: Int32; containsFocus: boolean }>;\n onDismiss?: DirectEventHandler<{ target: Int32 }>;\n onShow?: DirectEventHandler<{ target: Int32 }>;\n}\n\nexport type CalloutComponentType = HostComponent;\nexport interface CalloutNativeCommands {\n focusWindow: (viewRef: React.ElementRef) => void;\n blurWindow: (viewRef: React.ElementRef) => void;\n}\n\nexport const Commands: CalloutNativeCommands = codegenNativeCommands({\n supportedCommands: ['blurWindow', 'focusWindow'],\n});\n\nexport default codegenNativeComponent('RCTCallout') as CalloutComponentType;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport type { DirectEventHandler, Double, Int32, WithDefault } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\ntype AnchorRect = {\n screenX: Double;\n screenY: Double;\n width: Double;\n height: Double;\n};\n\nexport interface NativeProps extends ViewProps {\n accessibilityLabel?: string;\n accessibilityOnShowAnnouncement?: string;\n anchorRect?: AnchorRect;\n directionalHint?: WithDefault<\n | 'leftTopEdge'\n | 'leftCenter'\n | 'leftBottomEdge'\n | 'topLeftEdge'\n | 'topAutoEdge'\n | 'topCenter'\n | 'topRightEdge'\n | 'rightTopEdge'\n | 'rightCenter'\n | 'rightBottomEdge'\n | 'bottonLeftEdge'\n | 'bottomAutoEdge'\n | 'bottomCenter'\n | 'bottomRightEdge',\n 'topLeftEdge'\n >;\n dismissBehaviors?: string[];\n doNotTakePointerCapture?: boolean;\n focusable?: boolean;\n isBeakVisible?: boolean;\n maxHeight?: Int32;\n maxWidth?: Int32;\n setInitialFocus?: boolean;\n target?: Int32;\n testID?: string;\n\n onRestoreFocus?: DirectEventHandler<{ target: Int32; containsFocus: boolean }>;\n onDismiss?: DirectEventHandler<{ target: Int32 }>;\n onShow?: DirectEventHandler<{ target: Int32 }>;\n}\n\nexport type CalloutComponentType = HostComponent;\nexport interface CalloutNativeCommands {\n focusWindow: (viewRef: React.ElementRef) => void;\n blurWindow: (viewRef: React.ElementRef) => void;\n}\n\nexport const Commands: CalloutNativeCommands = codegenNativeCommands({\n supportedCommands: ['blurWindow', 'focusWindow'],\n});\n\nexport default codegenNativeComponent('FRNCallout') as CalloutComponentType;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport * as React from 'react';\nimport { findNodeHandle, Platform } from 'react-native';\nimport type { HostComponent } from 'react-native';\n\nimport { backgroundColorTokens, borderTokens } from '@fluentui-react-native/tokens';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './Callout.settings';\nimport type { ICalloutProps, ICalloutSlotProps, ICalloutType } from './Callout.types';\nimport { calloutName } from './Callout.types';\nimport type { NativeProps as CalloutNativeProps } from './CalloutNativeComponent';\nimport CalloutNativeComponent from './CalloutNativeComponent';\nimport type { NativeProps as FRNCalloutNativeProps } from './MacOSCalloutNativeComponent';\nimport FRNCalloutNativeComponent from './MacOSCalloutNativeComponent';\nimport { Commands } from './MacOSCalloutNativeComponent';\n\nconst NativeCalloutView = Platform.select | HostComponent>({\n macos: FRNCalloutNativeComponent,\n default: CalloutNativeComponent, // win32\n});\n\nexport const Callout = compose({\n displayName: calloutName,\n usePrepareProps: (props: ICalloutProps, useStyling: IUseComposeStyling) => {\n const { componentRef, target, ...rest } = props;\n React.useImperativeHandle(\n componentRef,\n () => ({\n blurWindow() {\n if (componentRef.current != null) {\n Commands.blurWindow(nativeComponentRef.current);\n }\n },\n focusWindow() {\n if (componentRef.current != null) {\n Commands.focusWindow(nativeComponentRef.current);\n }\n },\n }),\n [componentRef],\n );\n const nativeComponentRef = React.useRef | null>(null);\n const [nativeTarget, setNativeTarget] = React.useState(null);\n\n React.useLayoutEffect(() => {\n if (typeof target === 'string') {\n // Pass string type `target` directly\n setNativeTarget(target);\n } else if (target?.current) {\n // Pass the tagID for a valid ref `target`\n setNativeTarget(findNodeHandle(target.current));\n } else {\n // Clear `target` so we may fall back on `anchorRect` if provided\n setNativeTarget(null);\n }\n }, [target]);\n\n const slotProps = mergeSettings(useStyling(props), {\n root: {\n ref: nativeComponentRef,\n ...(nativeTarget && { target: nativeTarget }),\n ...rest,\n },\n });\n\n return { slotProps };\n },\n settings: settings,\n slots: {\n root: NativeCalloutView,\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n },\n});\n\nexport default Callout;\n", "export { calloutName } from './Callout.types';\nexport type {\n DirectionalHint,\n DismissBehaviors,\n ICalloutProps,\n ICalloutRenderData,\n ICalloutSlotProps,\n ICalloutTokens,\n ICalloutType,\n RestoreFocusEvent,\n} from './Callout.types';\nexport type { CalloutNativeCommands } from './CalloutNativeCommands.types';\nexport { Callout } from './Callout';\n", "import type * as React from 'react';\nimport type { ColorValue } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IPressableState, IFocusable } from '@fluentui-react-native/interactive-hooks';\n// import { IPressableProps } from '@fluentui-react-native/pressable';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport const checkboxName = 'Checkbox';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport interface ICheckboxState extends IPressableState {\n /**\n * Whether the Checkbox is checked or not\n */\n checked?: boolean;\n\n /**\n * Whether the Checkbox is disabled or not\n */\n disabled?: boolean;\n\n /**\n * Determines position of Checkbox. True if boxSide='end'\n */\n boxAtEnd?: boolean;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport interface ICheckboxProps extends Omit {\n /**\n * An string for screen readers to read. If not provided, this will be set to the Checkbox label\n * @deprecated Use accessibilityLabel instead.\n */\n ariaLabel?: string;\n\n /**\n * Checked state. Mutually exclusive to “defaultChecked”. Use this if you control the checked state at a higher level\n * and plan to pass in the correct value based on handling onChange events and re-rendering.\n */\n checked?: boolean;\n\n /**\n * Default checked state. Mutually exclusive to ‘checked’. Use this if you want an uncontrolled component, and\n * want the Checkbox instance to maintain its own state.\n */\n defaultChecked?: boolean;\n\n /**\n * Allows you to set the checkbox to be at the before (start) or after (end) the label\n */\n boxSide?: 'start' | 'end';\n\n /**\n * Disabled state of the checkbox.\n */\n disabled?: boolean;\n\n /**\n * Label to display next to the checkbox.\n */\n label?: string;\n\n /**\n * A RefObject to access the IFocusable interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * Callback that is called when the checked value has changed.\n */\n onChange?: (isChecked: boolean) => void;\n\n testID?: string;\n\n /**\n * Provides a tooltip while hovering over Checkbox component\n */\n tooltip?: string;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport interface ICheckboxTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens {\n checkboxBackgroundColor?: ColorValue;\n checkboxBorderColor?: ColorValue;\n checkmarkColor?: ColorValue;\n checkmarkVisibility?: number;\n textBorderColor?: ColorValue;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport interface ICheckboxSlotProps {\n root: React.PropsWithRef;\n checkbox: IViewProps;\n checkmark?: ITextProps;\n content: ITextProps;\n}\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport type ICheckboxRenderData = IRenderData;\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport interface ICheckboxType {\n props: ICheckboxProps;\n tokens: ICheckboxTokens;\n slotProps: ICheckboxSlotProps;\n state: ICheckboxState;\n}\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ICheckboxType } from './Checkbox.types';\nimport { checkboxName } from './Checkbox.types';\n\nexport const checkboxSelectActionLabel = 'Toggle the Checkbox';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'transparent',\n textBorderColor: 'transparent',\n borderColor: 'checkboxBorderColor',\n checkmarkColor: 'checkmarkColor',\n checkmarkVisibility: 0,\n },\n root: {\n style: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: 20,\n marginTop: 0,\n position: 'relative',\n },\n },\n checkbox: {\n style: {\n borderStyle: 'solid',\n borderWidth: 1,\n borderRadius: 2,\n minHeight: 16,\n minWidth: 16,\n marginEnd: 4,\n },\n },\n checkmark: {\n style: {\n position: 'relative',\n opacity: 0,\n fontSize: 10,\n marginStart: 2,\n top: -1,\n },\n },\n content: {\n variant: 'bodyStandard',\n style: {\n borderStyle: 'solid',\n borderWidth: 1,\n marginTop: 3,\n },\n },\n _precedence: ['disabled', 'boxAtEnd', 'hovered', 'focused', 'pressed', 'checked'],\n _overrides: {\n focused: {\n tokens: {\n backgroundColor: 'checkboxBackground',\n checkmarkColor: 'checkboxBackground',\n },\n },\n checked: {\n tokens: {\n borderColor: 'checkboxBackground',\n backgroundColor: 'checkboxBackground',\n checkmarkVisibility: 1,\n },\n checkmark: {\n style: {\n opacity: 1,\n },\n },\n },\n hovered: {\n tokens: {\n backgroundColor: 'checkboxBackground',\n checkmarkColor: 'checkboxBackground',\n },\n },\n disabled: {\n tokens: {\n backgroundColor: 'checkboxBackgroundDisabled',\n },\n checkbox: {\n style: {\n opacity: 0.38,\n },\n },\n },\n boxAtEnd: {\n checkbox: {\n style: {\n marginStart: 4,\n marginEnd: 0,\n },\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'checkboxBackground',\n },\n },\n },\n },\n checkboxName,\n];\n", "export * from './Checkbox.settings.android';\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View } from 'react-native';\n\nimport { filterViewProps } from '@fluentui-react-native/adapters';\nimport {\n useAsToggle,\n useAsPressable,\n useViewCommandFocus,\n useKeyProps,\n useOnPressWithFocus,\n} from '@fluentui-react-native/interactive-hooks';\nimport type { IPressableProps } from '@fluentui-react-native/pressable';\nimport { Text } from '@fluentui-react-native/text';\nimport { foregroundColorTokens, textTokens, borderTokens, getPaletteFromTheme } from '@fluentui-react-native/tokens';\nimport { backgroundColorTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings, checkboxSelectActionLabel } from './Checkbox.settings';\nimport type { ICheckboxState, ICheckboxProps, ICheckboxSlotProps, ICheckboxRenderData, ICheckboxType } from './Checkbox.types';\nimport { checkboxName } from './Checkbox.types';\n\n/**\n * @deprecated This will be removed when the package moves to 1.0.0.\n * Please see MIGRATION.md for details on how to move to the new Checkbox.\n */\nexport const Checkbox = compose({\n displayName: checkboxName,\n\n usePrepareProps: (userProps: ICheckboxProps, useStyling: IUseComposeStyling) => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessible,\n accessibilityLabel,\n accessibilityRole,\n ariaLabel,\n checked,\n defaultChecked,\n boxSide,\n label,\n onChange,\n componentRef = defaultComponentRef,\n focusable,\n ...rest\n } = userProps;\n\n // Warns defaultChecked and checked being mutually exclusive.\n if (defaultChecked != undefined && checked != undefined) {\n console.warn('defaultChecked and checked are mutually exclusive to one another. Use one or the other.');\n }\n\n // Re-usable hook for toggle components.\n const [isChecked, toggleChecked] = useAsToggle(defaultChecked, checked, onChange);\n\n // Ensure focus is placed on checkbox after click\n const toggleCheckedWithFocus = useOnPressWithFocus(componentRef, toggleChecked);\n\n const pressable = useAsPressable({ onPress: toggleCheckedWithFocus, ...(rest as IPressableProps) });\n\n const buttonRef = useViewCommandFocus(componentRef);\n\n // Handles the \"Space\" key toggling the Checkbox\n const onKeyProps = useKeyProps(toggleChecked, ' ');\n\n const state: ICheckboxState = {\n ...pressable.state,\n disabled: !!userProps.disabled,\n checked: isChecked,\n boxAtEnd: boxSide == undefined || boxSide == 'start' ? false : true,\n };\n\n // Grab the styling information from the userProps, referencing the state as well as the props.\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n\n // Used when creating accessibility properties in mergeSettings below\n const onAccessibilityAction = React.useCallback(\n (event: { nativeEvent: { actionName: any } }) => {\n switch (event.nativeEvent.actionName) {\n case 'Toggle':\n toggleChecked();\n break;\n }\n },\n [toggleChecked, userProps, state, pressable.props],\n );\n\n const slotProps = mergeSettings(styleProps, {\n root: {\n rest,\n ref: buttonRef,\n ...pressable.props,\n accessible: accessible ?? true,\n accessibilityRole: accessibilityRole ?? 'checkbox',\n accessibilityLabel: accessibilityLabel ?? label,\n accessibilityState: { disabled: state.disabled, checked: state.checked },\n accessibilityActions: [{ name: 'Toggle', label: checkboxSelectActionLabel }],\n focusable: focusable ?? !state.disabled,\n onAccessibilityAction: onAccessibilityAction,\n enableFocusRing: false,\n ...onKeyProps,\n },\n // Temporary checkmark until SVG functionality\n checkmark: { children: '✓' },\n content: { children: label },\n });\n\n return { slotProps, state };\n },\n\n render: (Slots: ISlots, renderData: ICheckboxRenderData, ...children: React.ReactNode[]) => {\n return (\n \n {renderData?.state.boxAtEnd && }\n \n \n \n {!renderData?.state.boxAtEnd && }\n {children}\n \n );\n },\n\n settings,\n slots: {\n root: View,\n checkbox: { slotType: View, filter: filterViewProps },\n checkmark: Text,\n content: Text,\n },\n styles: {\n root: [],\n checkbox: [\n backgroundColorTokens,\n borderTokens,\n [\n { source: 'checkboxBackgroundColor', lookup: getPaletteFromTheme, target: 'backgroundColor' },\n { source: 'checkboxBorderColor', lookup: getPaletteFromTheme, target: 'borderColor' },\n ],\n ],\n checkmark: [\n foregroundColorTokens,\n [\n { source: 'checkmarkColor', lookup: getPaletteFromTheme, target: 'color' },\n { source: 'checkmarkVisibility', target: 'opacity' },\n ],\n ],\n content: [foregroundColorTokens, textTokens, [{ source: 'textBorderColor', lookup: getPaletteFromTheme, target: 'borderColor' }]],\n },\n});\n\nexport default Checkbox;\n", "import type * as React from 'react';\nimport type { ColorValue, ViewStyle } from 'react-native';\n\nimport type { ITextProps, IViewProps } from '@fluentui-react-native/adapters';\nimport type { IFocusable, InteractionEvent, PressablePropsExtended, PressableState } from '@fluentui-react-native/interactive-hooks';\nimport type {\n FontTokens,\n IBorderTokens,\n IForegroundColorTokens,\n IBackgroundColorTokens,\n LayoutTokens,\n} from '@fluentui-react-native/tokens';\nimport type { SvgProps } from 'react-native-svg';\n\nexport const checkboxName = 'Checkbox';\nexport type CheckboxSize = 'medium' | 'large';\nexport type CheckboxShape = 'circular' | 'square';\n\nexport interface CheckboxTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens, LayoutTokens {\n /**\n * Color of the background of the box containing the checkmark.\n */\n checkboxBackgroundColor?: ColorValue;\n\n /**\n * Color of the border of the box containing the checkmark.\n */\n checkboxBorderColor?: ColorValue;\n\n /**\n * Border radius of the box containing the checkmark.\n */\n checkboxBorderRadius?: number;\n\n /**\n * Width of the border around the box containing the checkmark.\n */\n checkboxBorderWidth?: number;\n\n /**\n * Height and width of the box containing the checkmark.\n */\n checkboxSize?: number;\n\n /**\n * Color of the checkmark icon.\n * Note: Due to upstream limitations this currently does not support PlatformColors.\n */\n checkmarkColor?: ColorValue;\n\n /**\n * The opacity of checkmark as a number between 0 and 1.\n */\n checkmarkOpacity?: number;\n\n /**\n * Height and width of the checkmark icon.\n */\n checkmarkSize?: number;\n\n /**\n * Color of the text that denotes that the checkbox is required\n */\n requiredColor?: ColorValue;\n\n /**\n * Amount of padding between the end of the label and the start of the required text\n */\n requiredPadding?: ViewStyle['padding'];\n\n /**\n * The amount of spacing between an icon and the content when iconPosition is set to 'before', in pixels\n */\n spacingLabelAfter?: number;\n\n /**\n * The amount of spacing between an icon and the content when iconPosition is set to 'after', in pixels\n */\n spacingLabelBefore?: number;\n\n /**\n * States that can be applied to a checkbox\n * These can be used to modify styles of the Checkbox when under the specified state.\n * Note: 'hovered','focused','circular','labelIsBefore','large' are not supported for Android\n */\n disabled?: CheckboxTokens;\n label?: CheckboxTokens;\n labelIsBefore?: CheckboxTokens;\n hovered?: CheckboxTokens;\n focused?: CheckboxTokens;\n pressed?: CheckboxTokens;\n checked?: CheckboxTokens;\n circular?: CheckboxTokens;\n medium?: CheckboxTokens;\n large?: CheckboxTokens;\n\n /**\n * Ripple color for Android.\n *\n * A ripple animation is shown on click for Android. This sets the color of the ripple.\n * @platform android\n */\n rippleColor?: ColorValue;\n}\n\nexport interface CheckboxProps extends Omit {\n /**\n * Checked state. Mutually exclusive to “defaultChecked”. Use this if you control the checked state at a higher level\n * and plan to pass in the correct value based on handling onChange events and re-rendering.\n */\n checked?: boolean;\n\n /**\n * A RefObject to access the IFocusable interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * Default checked state. Mutually exclusive to ‘checked’. Use this if you want an uncontrolled component, and\n * want the Checkbox instance to maintain its own state.\n */\n defaultChecked?: boolean;\n\n /**\n * Disabled state of the checkbox.\n */\n disabled?: boolean;\n\n /**\n * Whether to use native focus visuals for the component\n * @default true\n */\n enableFocusRing?: boolean;\n\n /**\n * Label to display next to the checkbox.\n */\n label?: string;\n\n /**\n * Allows you to set the checkbox to be at the before (start) or after (end) the label\n * Note: 'before' is not supported for Android\n * @default after\n */\n labelPosition?: 'before' | 'after';\n\n /**\n * Callback that is called when the checked value has changed.\n */\n onChange?: (e: InteractionEvent, isChecked: boolean) => void;\n\n /**\n * If true, adds an asterisk which denotes that this checkbox is required. Can also be set a custom string.\n * Also sets accessibility state to have screen reader announce required state.\n */\n required?: boolean | string;\n\n /**\n * The shape of the checkbox. Can be either (rounded) square or circular.\n *\n * @default square\n * @platform iOS, windows, win32\n * Note : 'circular' is not supported on Android\n */\n shape?: CheckboxShape;\n\n /**\n * Sets style of checkbox to a preset size style.\n * @default 'medium'\n */\n size?: CheckboxSize;\n\n /**\n * Provides a tooltip while hovering over Checkbox component\n * Note: Not supported for Android\n */\n tooltip?: string;\n}\n\nexport interface CheckboxState extends PressableState {\n /**\n * Whether the Checkbox is checked or not\n */\n checked?: boolean;\n\n /**\n * Whether the Checkbox is disabled or not\n */\n disabled?: boolean;\n\n /**\n * Determines position of Checkbox. True if labelPosition is set to 'before'\n * Note : Not supported on Android\n */\n labelIsBefore?: boolean;\n}\n\nexport interface CheckboxInfo {\n props: CheckboxProps & React.ComponentPropsWithRef;\n state: CheckboxState;\n}\n\nexport interface CheckboxSlotProps {\n root: React.PropsWithRef;\n checkbox: PressablePropsExtended;\n checkmark: SvgProps;\n label: ITextProps;\n required: ITextProps;\n}\n\nexport interface CheckboxType {\n props: CheckboxProps;\n tokens: CheckboxTokens;\n slotProps: CheckboxSlotProps;\n state: CheckboxState;\n}\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport { View } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose } from '@fluentui-react-native/framework';\n\nimport type { CheckboxTokens, CheckboxProps, CheckboxState } from './Checkbox.types';\nimport { checkboxName } from './Checkbox.types';\n\ninterface CheckboxSlotPropsMacOS {\n root: React.PropsWithRef;\n}\n\ninterface CheckboxTypeMacOS {\n props: CheckboxProps;\n tokens: CheckboxTokens;\n slotProps: CheckboxSlotPropsMacOS;\n state: CheckboxState;\n}\n\nexport const Checkbox = compose({\n displayName: checkboxName,\n slots: { root: View },\n useRender: (_props: CheckboxProps, _useSlots: UseSlots) => {\n console.warn('Use deprecated checkbox or experimental-checkbox for MacOS');\n return (_rest: CheckboxProps) => {\n return null;\n };\n },\n});\nexport default Checkbox;\n", "import * as React from 'react';\nimport type { AccessibilityActionEvent, AccessibilityState } from 'react-native';\n\nimport { memoize } from '@fluentui-react-native/framework';\nimport {\n usePressableState,\n useKeyProps,\n useOnPressWithFocus,\n useViewCommandFocus,\n useAsToggleWithEvent,\n} from '@fluentui-react-native/interactive-hooks';\n\nimport type { CheckboxProps, CheckboxInfo, CheckboxState } from './Checkbox.types';\n\nconst defaultAccessibilityActions = [{ name: 'Toggle' }];\n\n/**\n * Re-usable hook for FURN Checkbox.\n * This hook configures checkbox props and state for FURN Checkbox.\n *\n * @param props user props sent to FURN Checkbox\n * @returns configured props and state for FURN Checkbox\n */\nexport const useCheckbox = (props: CheckboxProps): CheckboxInfo => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessible,\n accessibilityActions,\n accessibilityLabel,\n accessibilityRole,\n accessibilityState,\n componentRef = defaultComponentRef,\n checked,\n defaultChecked,\n enableFocusRing,\n focusable,\n labelPosition,\n label,\n onAccessibilityAction,\n onChange,\n required,\n ...rest\n } = props;\n\n // Warns defaultChecked and checked being mutually exclusive.\n if (defaultChecked != undefined && checked != undefined) {\n console.warn('defaultChecked and checked are mutually exclusive to one another. Use one or the other.');\n }\n\n // Re-usable hook for toggle components.\n const [isChecked, toggleChecked] = useAsToggleWithEvent(defaultChecked, checked, onChange);\n\n // Ensure focus is placed on checkbox after click\n const toggleCheckedWithFocus = useOnPressWithFocus(componentRef, toggleChecked);\n\n // attach the pressable state handlers\n const pressable = usePressableState({ onPress: toggleCheckedWithFocus, ...rest });\n\n const buttonRef = useViewCommandFocus(componentRef);\n\n // Handles the \"Space\" key toggling the Checkbox\n const onKeyUpProps = useKeyProps(toggleChecked, ' ');\n const accessibilityActionsProp = accessibilityActions\n ? [...defaultAccessibilityActions, ...accessibilityActions]\n : defaultAccessibilityActions;\n\n const state: CheckboxState = {\n ...pressable.state,\n disabled: !!props.disabled,\n checked: isChecked,\n labelIsBefore: labelPosition === 'before' ? true : false,\n };\n\n const onAccessibilityActionProp = React.useCallback(\n (event: AccessibilityActionEvent) => {\n switch (event.nativeEvent.actionName) {\n case 'Toggle':\n toggleChecked(event);\n break;\n }\n onAccessibilityAction && onAccessibilityAction(event);\n },\n [toggleChecked, onAccessibilityAction],\n );\n\n return {\n props: {\n ref: buttonRef,\n ...pressable.props,\n accessible: accessible ?? true,\n accessibilityRole: accessibilityRole ?? 'checkbox',\n accessibilityLabel: accessibilityLabel ?? label,\n accessibilityState: getAccessibilityState(state.disabled, state.checked, !!required, accessibilityState),\n accessibilityActions: accessibilityActionsProp,\n focusable: focusable ?? !state.disabled,\n onAccessibilityAction: onAccessibilityActionProp,\n enableFocusRing: enableFocusRing ?? true,\n ...onKeyUpProps,\n ...props,\n },\n state: {\n ...pressable.state,\n ...state,\n },\n };\n};\n\nconst getAccessibilityState = memoize(getAccessibilityStateWorker);\nfunction getAccessibilityStateWorker(disabled: boolean, checked: boolean, required: boolean, accessibilityState?: AccessibilityState) {\n checked = checked ?? false; // Make the value of checked as false when checked is undefined or null for screen reader to announce 'unchecked'\n if (accessibilityState) {\n return { disabled, checked, required, ...accessibilityState };\n }\n return { disabled, checked, required };\n}\n", "export { checkboxName } from './deprecated/Checkbox.types';\nexport type {\n ICheckboxProps,\n ICheckboxRenderData,\n ICheckboxSlotProps,\n ICheckboxState,\n ICheckboxTokens,\n ICheckboxType,\n} from './deprecated/Checkbox.types';\nexport { Checkbox } from './deprecated/Checkbox';\nexport { checkboxName as checkboxNameV1 } from './Checkbox.types';\nexport type {\n CheckboxInfo,\n CheckboxProps,\n CheckboxSize,\n CheckboxShape,\n CheckboxSlotProps,\n CheckboxState,\n CheckboxTokens,\n CheckboxType,\n} from './Checkbox.types';\nexport { Checkbox as CheckboxV1 } from './Checkbox';\nexport { useCheckbox } from './useCheckbox';\n", "import type { ScrollViewProps } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { ICalloutProps, ICalloutTokens } from '@fluentui-react-native/callout';\nimport type { FocusZoneProps } from '@fluentui-react-native/focus-zone';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const contextualMenuName = 'ContextualMenu';\nexport interface ContextualMenuContext {\n /**\n * The currently selected ContextualMenu's key\n */\n selectedKey: string | null;\n\n /**\n * Updates the clicked menu item and calls the client’s onItemClick callback\n */\n onItemClick?: (key: string) => void;\n\n /**\n * Parent menu's onDismiss callback that is passed into submenu to call when submenu item is clicked\n */\n onDismissMenu?: () => void;\n\n /**\n * Checks if any child menus are open\n */\n isSubmenuOpen?: boolean;\n\n /**\n * ContextualMenuItems will call this submenu dismissal when they are hovered\n */\n dismissSubmenu?: () => void;\n}\n\nexport interface ContextualMenuState {\n context: ContextualMenuContext;\n}\n\nexport type ContextualMenuTokens = ICalloutTokens;\n\nexport interface ContextualMenuProps extends IViewProps, Omit {\n /**\n * Whether to set initial focus on the contextual menu container, as opposed to the first menu item.\n * @platform win32\n */\n shouldFocusOnContainer?: boolean;\n\n /**\n * Whether to focus on the menu when mounted\n */\n shouldFocusOnMount?: boolean;\n\n /**\n * Callback for when menu item is clicked\n */\n onItemClick?: (key: string) => void;\n\n /**\n * Callback to toggle showContextualMenu to false and close menu on item click\n */\n setShowMenu?: (showMenu: boolean) => void;\n}\n\nexport type ContextualMenuSlotProps = {\n root: ContextualMenuProps;\n container: IViewProps;\n scrollView: ScrollViewProps;\n focusZone?: FocusZoneProps; // macOS only\n};\n\nexport type ContextualMenuRenderData = IRenderData;\n\nexport interface ContextualMenuType {\n props: ContextualMenuProps;\n slotProps: ContextualMenuSlotProps;\n tokens: ContextualMenuTokens;\n state: ContextualMenuState;\n}\n", "import type * as React from 'react';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IFocusable } from '@fluentui-react-native/interactive-hooks';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const focusZoneName = 'FocusZone';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype EmptyInterface = {};\nexport type FocusZoneState = EmptyInterface;\n\nexport type FocusZoneProps = IViewProps & {\n /**\n * A RefObject to access the IFocusable interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n /**\n * Optionally defines the initial tabbable element inside the FocusZone\n */\n defaultTabbableElement?: React.RefObject | string;\n\n /**\n ** Defines which arrows to react to\n */\n focusZoneDirection?: FocusZoneDirection;\n\n /**\n ** If set, the FocusZone will not be tabbable and keyboard navigation will be disabled\n */\n disabled?: boolean;\n\n /* Circular Navigation prop */\n isCircularNavigation?: boolean;\n\n /**\n *Allows for 2D navigation. This navigation strategy takes into account the position of elements\n on screen, and navigates in the direction the user selects to the nearest element.\n */\n use2DNavigation?: boolean;\n\n /**\n * By default, pressing Tab within a FocusZone moves focus out of the FocusZone.\n * This prop allows you to change that behavior.\n *\n * \"None\" : Default\n * \"NavigateWrap\" : Tab allowed within FZ with circular navigation behavior\n * \"NavigateStopAtEnds\" : Tab allowed within FZ and stops at ends\n * \"Normal\" : Tab allowed within FZ, and focus is not trapped. Tabbing at the last element bring you out of the FZ.\n *\n * Recommended Usage - Moving focus OUT of the FocusZone - Custom Key Handlers\n * Example: Subscribe to key events. On the pressing of \"Escape\", move focus out of the FocusZone.\n *\n * Recommended Usage - Moving focus INTO the FocusZone\n * Let's take a CardList, for example. If a user is navigating through elements of the List, we don't want\n * focus to land within the FocusZone on initial focus. If it does, it will trap focus within the FocusZone and\n * ruin the user's workflow.\n * Instead, once focus lands on the parent of the FocusZone, implement a custom key handler that will enable\n * the FocusZone.\n */\n tabKeyNavigation?: FocusZoneTabNavigation;\n\n /**\n * Callback called when “focus” event triggered in FocusZone\n */\n onFocus?: (e?: any) => void;\n\n /**\n * @platform macos\n * By default, the Apple KeyView loop is calculated based on the UI tree hierarchy, accessibility properties,\n * custom element overrides of navigation order, and positions in layout.\n *\n * Normally this produces the appropriate accessible experience for users, but occasionally we may need to\n * clarify the intended order of navigation. The navigationOrderInRenderOrder prop will have the FocusZone\n * establish the navigation order of its children according to their order in the UI tree\n * (i.e. as returned by accessibilityChildren).\n *\n * Note that to participate in the KeyView loop calculation, the FocusZone itself must be part of the\n * accessibility tree (i.e. 'accessible') with an appropriate role, e.g. 'group'.\n *\n * Extra note: This property is unlikely to perform well if changed from its initial value due to finer details\n * of the MacOS KeyView loop mechanics.\n */\n navigationOrderInRenderOrder?: boolean;\n};\n\nexport interface NativeProps extends Omit {\n navigateAtEnd?: NavigateAtEnd;\n tabKeyNavigation?: FocusZoneTabNavigation;\n}\n\nexport type FocusZoneDirection =\n | 'bidirectional' /** React to all arrows. */\n | 'vertical' /** Only react to up/down arrows. */\n | 'horizontal' /** Only react to left/right arrows. */\n | 'none'; /** Doesn't respond to any arrow keys. */\n\nexport type NavigateAtEnd =\n | 'NavigateStopAtEnds' /* Focus will stay on the last element in the FocusZone. Only way to navigate out is Tab. For macOS, this is the only available option. */\n | 'NavigateWrap' /* Circular Navigation Functionality */\n | 'NavigateContinue'; /* At the last element of the FocusZone, focus will move to the first focusable element outside the FocusZone */\n\nexport type FocusZoneTabNavigation =\n | 'None' /* Tab navigates you out of the FocusZone. This is Default */\n | 'NavigateWrap' /* Navigate the FZ with Tab. Circular navigation at ends */\n | 'NavigateStopAtEnds' /* Navigate the FZ with Tab. Stop navigation at ends */\n | 'Normal'; /* Navigate the FZ with Tab. Don't trap focus, tabbing at ends moves you out */\n\nexport type FocusZoneTokens = EmptyInterface;\n\nexport interface FocusZoneSlotProps {\n root: NativeProps;\n}\n\nexport type FocusZoneRenderData = IRenderData;\n\nexport interface FocusZoneType {\n props: FocusZoneProps;\n tokens: FocusZoneTokens;\n slotProps: FocusZoneSlotProps;\n state: FocusZoneState;\n}\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nimport type { UnsafeMixed } from './codegenTypes';\n// Should be:\n// import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport interface NativeProps extends ViewProps {\n navigateAtEnd?: WithDefault<'NavigateStopAtEnds' | 'NavigateWrap' | 'NavigateContinue', 'NavigateStopAtEnds'>;\n defaultTabbableElement?: UnsafeMixed;\n focusZoneDirection?: WithDefault<'bidirectional' | 'vertical' | 'horizontal' | 'none', 'bidirectional'>;\n use2DNavigation?: boolean;\n tabKeyNavigation?: WithDefault<'None' | 'NavigateWrap' | 'NavigateStopAtEnds' | 'Normal', 'None'>;\n disabled?: boolean;\n isTabNavigation?: boolean;\n}\n\nexport default codegenNativeComponent('RCTFocusZone') as HostComponent;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport * as React from 'react';\nimport { findNodeHandle } from 'react-native';\n\nimport { useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\nimport type { IUseStyling } from '@uifabricshared/foundation-composable';\nimport { composable } from '@uifabricshared/foundation-composable';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport type { FocusZoneProps, FocusZoneSlotProps, FocusZoneType } from './FocusZone.types';\nimport RCTFocusZone from './FocusZoneNativeComponent';\n\nconst filterOutComponentRef = (propName) => propName !== 'componentRef';\n\nexport const FocusZone = composable({\n usePrepareProps: (userProps: FocusZoneProps, useStyling: IUseStyling) => {\n const { componentRef, defaultTabbableElement, isCircularNavigation, ...rest } = userProps;\n\n const ftzRef = useViewCommandFocus(componentRef);\n\n const [targetFirstFocus, setTargetFirstFocus] = React.useState(undefined);\n React.useLayoutEffect(() => {\n if (typeof defaultTabbableElement === 'string') {\n setTargetFirstFocus(defaultTabbableElement);\n } else if (defaultTabbableElement?.current) {\n setTargetFirstFocus(findNodeHandle(defaultTabbableElement.current));\n } else {\n setTargetFirstFocus(undefined);\n }\n }, [defaultTabbableElement]);\n\n return {\n slotProps: mergeSettings(useStyling(userProps), {\n root: {\n navigateAtEnd: isCircularNavigation ? 'NavigateWrap' : 'NavigateStopAtEnds', // let rest override\n ...rest,\n defaultTabbableElement: targetFirstFocus,\n ref: ftzRef,\n },\n }),\n };\n },\n slots: {\n root: { slotType: RCTFocusZone, filter: filterOutComponentRef },\n },\n});\n", "export { focusZoneName } from './FocusZone.types';\nexport type {\n FocusZoneDirection,\n FocusZoneProps,\n FocusZoneRenderData,\n FocusZoneSlotProps,\n FocusZoneState,\n FocusZoneTabNavigation,\n FocusZoneTokens,\n FocusZoneType,\n NativeProps,\n NavigateAtEnd,\n} from './FocusZone.types';\nexport { FocusZone } from './FocusZone';\n", "import { I18nManager } from 'react-native';\n\nimport type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ContextualMenuType } from './ContextualMenu.types';\nimport { contextualMenuName } from './ContextualMenu.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n directionalHint: I18nManager.isRTL ? 'bottomRightEdge' : 'bottonLeftEdge',\n },\n container: {\n style: {\n padding: 5,\n },\n },\n },\n contextualMenuName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View, ScrollView, Platform } from 'react-native';\n\nimport { Callout } from '@fluentui-react-native/callout';\nimport { FocusZone } from '@fluentui-react-native/focus-zone';\nimport type { IFocusable } from '@fluentui-react-native/interactive-hooks';\nimport { useSelectedKey } from '@fluentui-react-native/interactive-hooks';\nimport { backgroundColorTokens, borderTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './ContextualMenu.settings';\nimport type {\n ContextualMenuProps,\n ContextualMenuSlotProps,\n ContextualMenuType,\n ContextualMenuRenderData,\n ContextualMenuContext,\n ContextualMenuState,\n} from './ContextualMenu.types';\nimport { contextualMenuName } from './ContextualMenu.types';\n\nexport const CMContext = React.createContext({\n selectedKey: null,\n onItemClick: (/* key: string */) => {\n return;\n },\n onDismissMenu: () => {\n return;\n },\n});\n\nexport const ContextualMenu = compose({\n displayName: contextualMenuName,\n usePrepareProps: (userProps: ContextualMenuProps, useStyling: IUseComposeStyling) => {\n const { setShowMenu, maxHeight, maxWidth, shouldFocusOnMount = true, shouldFocusOnContainer = false, ...rest } = userProps;\n\n /**\n * On macOS, focus isn't placed by default on the first focusable element. We get around this by focusing on the inner FocusZone\n * hosting the menu. For whatever reason, to get the timing _just_ right to actually focus, we need an additional `setTimeout`\n * on top of the `useLayoutEffect` hook.\n */\n const focusZoneRef = React.useRef(null);\n\n React.useLayoutEffect(() => {\n if (Platform.OS === 'macos' && shouldFocusOnMount) {\n setTimeout(() => {\n focusZoneRef.current?.focus();\n }, 0);\n }\n }, [shouldFocusOnMount]);\n\n // This hook updates the Selected Button and calls the customer's onClick function. This gets called after a button is pressed.\n const data = useSelectedKey(null, userProps.onItemClick);\n\n const dismissCallback = React.useCallback(() => {\n userProps.onDismiss();\n setShowMenu?.(false);\n }, [setShowMenu, userProps.onDismiss]);\n\n const [containerFocus, setContainerFocus] = React.useState(true);\n const toggleContainerFocus = React.useCallback(() => {\n setContainerFocus(false);\n }, [setContainerFocus]);\n\n const state: ContextualMenuState = {\n context: {\n selectedKey: data.selectedKey,\n onItemClick: data.onKeySelect,\n onDismissMenu: dismissCallback,\n },\n };\n\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n\n const slotProps = mergeSettings(styleProps, {\n root: {\n accessibilityRole: 'menu',\n setInitialFocus: shouldFocusOnMount,\n ...rest,\n },\n container: {\n accessible: shouldFocusOnContainer,\n focusable: shouldFocusOnContainer && containerFocus,\n onBlur: toggleContainerFocus,\n style: { maxHeight: maxHeight, maxWidth: maxWidth },\n },\n scrollView: {\n contentContainerStyle: {\n flexDirection: 'column',\n flexGrow: 1,\n },\n showsVerticalScrollIndicator: maxHeight != undefined,\n showsHorizontalScrollIndicator: maxWidth != undefined,\n },\n focusZone: {\n enableFocusRing: false,\n componentRef: focusZoneRef,\n defaultTabbableElement: focusZoneRef,\n focusZoneDirection: 'vertical',\n },\n });\n\n return { slotProps, state };\n },\n settings: settings,\n slots: {\n root: Callout,\n container: View,\n scrollView: ScrollView,\n focusZone: FocusZone,\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n container: [],\n },\n render: (Slots: ISlots, renderData: ContextualMenuRenderData, ...children: React.ReactNode[]) => {\n if (renderData.state == undefined) {\n return null;\n }\n\n // On macOS, wrap the children in a FocusZone to allow you to arrow-key through the menu items.\n // Duplicating the JSX trees was the only way I could find to correctly render the optional slot.\n if (Platform.OS === 'macos') {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n } else {\n return (\n \n \n \n {children}\n \n \n \n );\n }\n },\n});\n\nexport default ContextualMenu;\n", "import type * as React from 'react';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IconProps } from '@fluentui-react-native/icon';\nimport type { IFocusable, IPressableState, PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const contextualMenuItemName = 'ContextualMenuItem';\n\nexport interface ContextualMenuItemState extends IPressableState {\n selected?: boolean;\n /**\n * Whether the menu item is disabled or not\n */\n disabled?: boolean;\n\n content?: boolean;\n icon?: boolean;\n}\n\nexport interface ContextualMenuItemTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens {\n /**\n * The icon color.\n */\n iconColor?: string;\n\n /**\n * The icon color when hovering over the Button.\n */\n iconColorHovered?: string;\n\n /**\n * The icon color when the Button is being pressed.\n */\n iconColorPressed?: string;\n\n /**\n * The size of the icon.\n */\n iconSize?: number | string;\n\n /**\n * The weight of the lines used when drawing the icon.\n */\n iconWeight?: number;\n}\n\nexport interface ContextualMenuItemProps extends Omit {\n /*\n ** A unique key-identifier for each menu item\n */\n itemKey: string;\n /*\n * Text to show on the ContextualMenuItem.\n */\n text?: string;\n\n /**\n * Source URL or name of the icon to show on the Button.\n */\n icon?: number | string | IconProps;\n /**\n * A RefObject to access the IContextualMenuItem interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n /**\n * A callback to call on ContextualMenuItem click event\n */\n onClick?: () => void;\n\n testID?: string;\n /**\n * Title (tooltip) text displayed when hovering over an item.\n */\n title?: string;\n\n dismissMenu?: (e?: any, dismissAll?: boolean) => void;\n}\n\nexport interface ContextualMenuItemSlotProps {\n root: React.PropsWithRef;\n stack: IViewProps;\n icon: IconProps;\n content: ITextProps;\n}\n\nexport type ContextualMenuItemRenderData = IRenderData;\n\nexport interface ContextualMenuItemType {\n props: ContextualMenuItemProps;\n tokens: ContextualMenuItemTokens;\n slotProps: ContextualMenuItemSlotProps;\n state: ContextualMenuItemState;\n}\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ContextualMenuItemType } from './ContextualMenuItem.types';\nimport { contextualMenuItemName } from './ContextualMenuItem.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n color: 'menuItemText',\n },\n root: {\n enableFocusRing: false,\n style: {\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n width: '100%',\n borderRadius: 5,\n },\n },\n content: {},\n icon: { style: { marginEnd: 5 } },\n stack: {\n style: {\n display: 'flex',\n paddingHorizontal: 5,\n paddingVertical: 3,\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n\n justifyContent: 'flex-start',\n },\n },\n _precedence: ['focused', 'hovered', 'pressed', 'disabled'],\n _overrides: {\n disabled: {\n tokens: {\n backgroundColor: 'menuBackground',\n color: 'disabledText',\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'menuItemBackgroundPressed',\n color: 'menuItemTextHovered',\n },\n },\n focused: {\n tokens: {\n color: 'menuItemTextHovered',\n backgroundColor: 'menuItemBackgroundHovered',\n },\n },\n },\n },\n contextualMenuItemName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport { useAsPressable, useKeyProps, useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\nimport { Text } from '@fluentui-react-native/text';\nimport { backgroundColorTokens, borderTokens, textTokens, foregroundColorTokens, getPaletteFromTheme } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { CMContext } from './ContextualMenu';\nimport { settings } from './ContextualMenuItem.settings';\nimport type {\n ContextualMenuItemSlotProps,\n ContextualMenuItemState,\n ContextualMenuItemProps,\n ContextualMenuItemRenderData,\n ContextualMenuItemType,\n} from './ContextualMenuItem.types';\nimport { contextualMenuItemName } from './ContextualMenuItem.types';\n\nexport const ContextualMenuItem = compose({\n displayName: contextualMenuItemName,\n usePrepareProps: (userProps: ContextualMenuItemProps, useStyling: IUseComposeStyling) => {\n const defaultComponentRef = React.useRef(null);\n const {\n disabled,\n itemKey,\n icon,\n text,\n accessibilityLabel = userProps.text,\n onAccessibilityTap,\n onClick,\n testID,\n componentRef = defaultComponentRef,\n ...rest\n } = userProps;\n\n // Grabs the context information from ContextualMenu (currently selected menuItem and client's onItemClick callback)\n const context = React.useContext(CMContext);\n\n const onItemClick = React.useCallback(\n (e) => {\n if (!disabled) {\n context?.onDismissMenu();\n onClick && onClick();\n context?.onItemClick && context.onItemClick(itemKey);\n e.stopPropagation();\n }\n },\n [context, disabled, itemKey, onClick],\n );\n\n const cmRef = useViewCommandFocus(componentRef);\n\n const onItemHoverIn = React.useCallback(() => {\n if (!disabled) {\n componentRef.current.focus();\n // dismiss submenu\n if (context?.isSubmenuOpen) {\n context?.dismissSubmenu && context.dismissSubmenu();\n }\n }\n }, [componentRef, disabled, context]);\n\n const pressable = useAsPressable({ ...rest, onPress: onItemClick, onHoverIn: onItemHoverIn });\n\n const onKeyUpProps = useKeyProps(onItemClick, ' ', 'Enter');\n\n // set up state\n const state: ContextualMenuItemState = {\n ...pressable.state,\n selected: context.selectedKey === userProps.itemKey,\n disabled: userProps.disabled,\n content: !!text,\n icon: !!icon,\n };\n\n /**\n * On Desktop, focus gets moved to the root of the menu, so hovering off the menu does not automatically call onBlur as we expect it to.\n * onMouseLeave is overridden to explicitly call onBlur to simulate removing focus\n * To achieve this, we override the onMouseLeave handler returned by useAsPressable, and replace it with our own. Inside our own\n * onMouseLeave handler, we call useAsPressable's onMouseLEave handler,\n */\n const { onBlur, onMouseLeave, ...restPressableProps } = pressable.props;\n const onMouseLeaveModified = React.useCallback(\n (e) => {\n onBlur(e);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does\n onMouseLeave && onMouseLeave(e);\n },\n [onBlur, onMouseLeave],\n );\n const pressablePropsModified = {\n onBlur: onBlur,\n onMouseLeave: onMouseLeaveModified,\n ...restPressableProps,\n };\n const onAccTap = onAccessibilityTap ?? onItemClick;\n\n // grab the styling information, referencing the state as well as the props\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n // create the merged slot props\n const slotProps = mergeSettings(styleProps, {\n root: {\n ref: cmRef,\n ...pressablePropsModified,\n ...onKeyUpProps,\n accessible: true,\n accessibilityLabel: accessibilityLabel,\n accessibilityRole: 'menuitem',\n accessibilityState: { disabled: state.disabled ?? false, selected: state.selected },\n accessibilityValue: { text: itemKey },\n onAccessibilityTap: onAccTap,\n disabled,\n focusable: !disabled,\n testID,\n ...rest,\n },\n content: {\n accessible: false,\n children: text,\n },\n icon: {\n ...createIconProps(icon),\n accessible: false,\n },\n });\n\n return { slotProps, state };\n },\n settings,\n render: (Slots: ISlots, renderData: ContextualMenuItemRenderData, ...children: React.ReactNode[]) => {\n // We shouldn't have to specify the source prop on Slots.icon, here, but we need another drop from @uifabricshared\n return (\n \n \n {renderData!.state.icon && }\n {renderData!.state.content && }\n {children}\n \n \n );\n },\n slots: {\n root: View,\n stack: { slotType: View },\n icon: { slotType: Icon as React.ComponentType },\n content: Text,\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n stack: [],\n icon: [{ source: 'iconColor', lookup: getPaletteFromTheme, target: 'color' }],\n content: [textTokens, foregroundColorTokens],\n },\n});\n\nexport default ContextualMenuItem;\n", "import type { ScrollViewProps, ViewProps } from 'react-native';\n\nimport type { FocusZoneProps } from '@fluentui-react-native/focus-zone';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nimport type { ContextualMenuProps, ContextualMenuTokens, ContextualMenuState } from './ContextualMenu.types';\n\nexport const submenuName = 'Submenu';\n\nexport type SubmenuState = ContextualMenuState;\nexport type SubmenuTokens = ContextualMenuTokens;\nexport type SubmenuProps = ContextualMenuProps;\n\nexport type SubmenuSlotProps = {\n root: SubmenuProps;\n container: ViewProps;\n scrollView: ScrollViewProps;\n focusZone?: FocusZoneProps; // macOS only\n};\n\nexport type SubmenuRenderData = IRenderData;\n\nexport interface SubmenuType {\n props: SubmenuProps;\n slotProps: SubmenuSlotProps;\n tokens: SubmenuTokens;\n state: SubmenuState;\n}\n", "import { I18nManager } from 'react-native';\n\nimport type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { SubmenuType } from './Submenu.types';\nimport { submenuName } from './Submenu.types';\n\nexport const settings: IComposeSettings = [\n {\n root: {\n accessibilityRole: 'menu',\n directionalHint: I18nManager.isRTL ? 'leftTopEdge' : 'rightTopEdge',\n },\n container: {\n style: {\n padding: 5,\n flex: 1,\n },\n },\n },\n submenuName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View, ScrollView, Platform, I18nManager } from 'react-native';\n\nimport { Callout } from '@fluentui-react-native/callout';\nimport { FocusZone } from '@fluentui-react-native/focus-zone';\nimport type { IFocusable } from '@fluentui-react-native/interactive-hooks';\nimport { useKeyDownProps, useSelectedKey } from '@fluentui-react-native/interactive-hooks';\nimport { backgroundColorTokens, borderTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { CMContext } from './ContextualMenu';\nimport { settings } from './Submenu.settings';\nimport type { SubmenuProps, SubmenuSlotProps, SubmenuType, SubmenuRenderData, SubmenuState } from './Submenu.types';\nimport { submenuName } from './Submenu.types';\n\nexport const Submenu = compose({\n displayName: submenuName,\n usePrepareProps: (userProps: SubmenuProps, useStyling: IUseComposeStyling) => {\n const { setShowMenu, maxWidth, maxHeight, shouldFocusOnMount = true, shouldFocusOnContainer = true, ...rest } = userProps;\n\n /**\n * On macOS, focus isn't placed by default on the first focusable element. We get around this by focusing on the inner FocusZone\n * hosting the menu. For whatever reason, to get the timing _just_ right to actually focus, we need an additional `setTimeout`\n * on top of the `useLayoutEffect` hook.\n */\n const focusZoneRef = React.useRef(null);\n\n React.useLayoutEffect(() => {\n if (Platform.OS === 'macos') {\n setTimeout(() => {\n focusZoneRef.current?.focus();\n }, 0);\n }\n }, []);\n\n // Grabs the context information from ContextualMenu (onDismissMenu callback)\n const context = React.useContext(CMContext);\n\n // This hook updates the Selected Button and calls the customer's onClick function. This gets called after a button is pressed.\n const data = useSelectedKey(null, userProps.onItemClick);\n\n const onShow = React.useCallback(() => {\n userProps?.onShow && userProps.onShow();\n context.isSubmenuOpen = true;\n }, [context]);\n\n const onDismiss = React.useCallback(() => {\n userProps?.onDismiss();\n setShowMenu(false);\n context.isSubmenuOpen = false;\n }, [context, setShowMenu]);\n\n const dismissCallback = React.useCallback(() => {\n onDismiss();\n context?.onDismissMenu();\n }, [onDismiss, context]);\n\n context.dismissSubmenu = onDismiss;\n\n const [containerFocus, setContainerFocus] = React.useState(true);\n const toggleContainerFocus = React.useCallback(() => {\n setContainerFocus(false);\n }, [setContainerFocus]);\n\n const state: SubmenuState = {\n context: {\n selectedKey: data.selectedKey,\n onItemClick: data.onKeySelect,\n onDismissMenu: dismissCallback,\n },\n };\n\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n\n const dismissWithArrowKey = React.useCallback(\n (e: any) => {\n const arrowKey = I18nManager.isRTL ? 'ArrowRight' : 'ArrowLeft';\n if (e.nativeEvent.key === arrowKey) {\n onDismiss();\n }\n },\n [onDismiss],\n );\n\n // Explicitly override onKeyDown to override the native windows behavior of moving focus with arrow keys.\n const onKeyDownProps = useKeyDownProps(dismissWithArrowKey, 'ArrowLeft', 'ArrowRight');\n\n const slotProps = mergeSettings(styleProps, {\n root: {\n ...rest,\n onShow: onShow,\n onDismiss: onDismiss,\n setInitialFocus: shouldFocusOnMount,\n },\n container: {\n ...onKeyDownProps,\n accessible: shouldFocusOnContainer,\n focusable: shouldFocusOnContainer && containerFocus,\n onBlur: toggleContainerFocus,\n style: { maxHeight: maxHeight, maxWidth: maxWidth },\n },\n scrollView: {\n contentContainerStyle: {\n flexDirection: 'column',\n flexGrow: 1,\n },\n showsVerticalScrollIndicator: maxHeight != undefined,\n showsHorizontalScrollIndicator: maxWidth != undefined,\n },\n focusZone: {\n componentRef: focusZoneRef,\n focusZoneDirection: 'vertical',\n },\n });\n\n return { slotProps, state };\n },\n settings: settings,\n slots: {\n root: Callout,\n container: View,\n scrollView: ScrollView,\n focusZone: FocusZone,\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n container: [],\n },\n render: (Slots: ISlots, renderData: SubmenuRenderData, ...children: React.ReactNode[]) => {\n if (renderData.state == undefined) {\n return null;\n }\n\n // On macOS, wrap the children in a FocusZone to allow you to arrow-key through the menu items.\n // Duplicating the JSX trees was the only way I could find to correctly render the optional slot.\n if (Platform.OS === 'macos') {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n } else {\n return (\n \n \n \n {children}\n \n \n \n );\n }\n },\n});\n\nexport default Submenu;\n", "import type * as React from 'react';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IconProps } from '@fluentui-react-native/icon';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nimport type { ContextualMenuItemProps, ContextualMenuItemTokens, ContextualMenuItemState } from './ContextualMenuItem.types';\n\nexport const submenuItemName = 'SubmenuItem';\nexport interface SubmenuItemTokens extends ContextualMenuItemTokens {\n chevronColor?: string;\n}\nexport interface SubmenuItemProps extends ContextualMenuItemProps {\n /**\n * Whether the submenu is currently expanded/visible\n */\n expanded?: boolean;\n}\n\nexport type SubmenuItemState = ContextualMenuItemState;\n\nexport interface SubmenuItemSlotProps {\n root: React.PropsWithRef;\n startstack: IViewProps;\n icon: IconProps;\n content: ITextProps;\n endstack: IViewProps;\n chevron: IconProps;\n}\n\nexport type SubmenuItemRenderData = IRenderData;\n\nexport interface SubmenuItemType {\n props: SubmenuItemProps;\n tokens: SubmenuItemTokens;\n slotProps: SubmenuItemSlotProps;\n state: SubmenuItemState;\n}\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { SubmenuItemType } from './SubmenuItem.types';\nimport { submenuItemName } from './SubmenuItem.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n backgroundColor: 'menuBackground',\n borderColor: 'transparent',\n borderWidth: 2,\n chevronColor: 'black',\n color: 'menuItemText',\n },\n root: {\n enableFocusRing: false,\n style: {\n display: 'flex',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n width: '100%',\n borderRadius: 5,\n },\n },\n icon: {\n style: {\n marginEnd: 5,\n color: 'menuIcon',\n },\n },\n startstack: {\n style: {\n display: 'flex',\n flexGrow: 1,\n paddingStart: 5,\n alignItems: 'center',\n flexDirection: 'row',\n alignSelf: 'flex-start',\n justifyContent: 'flex-start',\n },\n },\n endstack: {\n style: {\n display: 'flex',\n paddingEnd: 5,\n alignItems: 'center',\n flexDirection: 'row',\n width: 12,\n justifyContent: 'flex-end',\n },\n },\n _precedence: ['focused', 'hovered', 'pressed', 'disabled'],\n _overrides: {\n disabled: {\n tokens: {\n backgroundColor: 'menuBackground',\n color: 'disabledText',\n },\n },\n pressed: {\n tokens: {\n backgroundColor: 'menuItemBackgroundPressed',\n },\n },\n focused: {\n tokens: {\n backgroundColor: 'menuItemBackgroundHovered',\n chevronColor: 'white',\n color: 'white',\n },\n },\n },\n },\n submenuItemName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { I18nManager, Platform, View } from 'react-native';\n\nimport type { SvgIconProps } from '@fluentui-react-native/icon';\nimport { Icon, createIconProps } from '@fluentui-react-native/icon';\nimport { useKeyDownProps, useViewCommandFocus, useAsPressable } from '@fluentui-react-native/interactive-hooks';\nimport { Text } from '@fluentui-react-native/text';\nimport { backgroundColorTokens, borderTokens, textTokens, foregroundColorTokens, getPaletteFromTheme } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\nimport type { SvgProps } from 'react-native-svg';\nimport { Svg, G, Path } from 'react-native-svg';\n\nimport { CMContext } from './ContextualMenu';\nimport { settings } from './SubmenuItem.settings';\nimport type { SubmenuItemSlotProps, SubmenuItemState, SubmenuItemProps, SubmenuItemRenderData, SubmenuItemType } from './SubmenuItem.types';\nimport { submenuItemName } from './SubmenuItem.types';\n\nexport const SubmenuItem = compose({\n displayName: submenuItemName,\n usePrepareProps: (userProps: SubmenuItemProps, useStyling: IUseComposeStyling) => {\n const defaultComponentRef = React.useRef(null);\n const {\n disabled,\n expanded,\n itemKey,\n icon,\n text,\n accessibilityLabel = userProps.text,\n onAccessibilityTap,\n onClick,\n componentRef = defaultComponentRef,\n ...rest\n } = userProps;\n\n // Grabs the context information from Submenu (currently selected menuItem and client's onItemClick callback)\n const context = React.useContext(CMContext);\n\n const cmRef = useViewCommandFocus(componentRef);\n\n const onItemHoverIn = React.useCallback((e) => {\n componentRef.current.focus();\n userProps.onHoverIn && userProps.onHoverIn(e);\n }, []);\n\n const onHoverInDelay = Platform.select({\n macos: 100,\n default: 500, // win32\n });\n\n const onItemHoverOut = React.useCallback((e) => {\n context?.dismissSubmenu && context.dismissSubmenu();\n userProps.onHoverOut && userProps.onHoverOut(e);\n }, []);\n\n const onItemPress = React.useCallback(() => {\n if (!disabled) {\n onClick && onClick();\n context?.onItemClick && context.onItemClick(itemKey);\n }\n }, [context, disabled, itemKey, onClick]);\n\n const pressable = useAsPressable({\n ...rest,\n onPress: onItemPress,\n onHoverIn: onItemHoverIn,\n delayHoverIn: onHoverInDelay,\n onHoverOut: onItemHoverOut,\n });\n\n /**\n * GH #1267\n * We want onMouseEnter to fire right away to set focus, and then Pressable's onHoverIn to fire after a delay to show the submenu.\n * To achieve this, we override the onMouseEnter handler returned by useAsPressable, and replace it with our own. Inside our own\n * onMouseEnter handler, we call useAsPressable's onMouseEnter handler, which incorporates the delay passed to delayHoverIn\n * In the future, we can avoid needing to override onMouseEnter by handling submenu rendering internally rather than depending on the\n * client to conditionally render it with onHoverIn.\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore onMouseLeave not in PressableProps but is supported on desktop\n const { onBlur, onMouseEnter, onMouseLeave, ...restPressableProps } = pressable.props;\n const onMouseEnterModified = React.useCallback(\n (e) => {\n componentRef.current.focus();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does\n onMouseEnter && onMouseEnter(e);\n },\n [componentRef, onMouseEnter],\n );\n const onMouseLeaveModified = React.useCallback(\n (e) => {\n onBlur(e);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does\n onMouseLeave && onMouseLeave(e);\n },\n [onBlur, onMouseLeave],\n );\n const pressablePropsModified = {\n onBlur: onBlur,\n onMouseEnter: onMouseEnterModified,\n onMouseLeave: onMouseLeaveModified,\n ...restPressableProps,\n };\n\n const state: SubmenuItemState = {\n ...pressable.state,\n selected: context.selectedKey === userProps.itemKey,\n disabled: userProps.disabled,\n content: !!text,\n icon: !!icon,\n };\n\n const showSubmenuOnKeyDown = React.useCallback(\n (e: any) => {\n const rtlAwareOpenArrowKey = I18nManager.isRTL ? 'ArrowLeft' : 'ArrowRight';\n\n if (e.nativeEvent.key === rtlAwareOpenArrowKey || e.nativeEvent.key === ' ' || e.nativeEvent.key === 'Enter') {\n onItemHoverIn(e);\n }\n },\n [onItemHoverIn],\n );\n\n const chevronSvg: React.FunctionComponent = (props: SvgProps) => {\n return (\n \n \n \n \n \n );\n };\n const svgProps: SvgIconProps = {\n src: chevronSvg,\n };\n\n /**\n * SubmenuItem launches the submenu onMouseEnter event. Submenu should be launched with Spacebar, Enter, or right arrow (flipped for RTL).\n * Explicitly override onKeyDown to override the native windows behavior of moving focus with arrow keys.\n */\n const onKeyDownProps = useKeyDownProps(showSubmenuOnKeyDown, ' ', 'Enter', 'ArrowLeft', 'ArrowRight');\n const onAccTap = onAccessibilityTap ?? onItemPress;\n\n // Default accessibility actions to help screen readers announce expanded/collapsed state\n // Only provide on win32 to follow platform-specific accessibility patterns\n const defaultAccessibilityActions = React.useMemo(() => {\n if (Platform.OS === ('win32' as any)) {\n return [\n { name: 'Expand', label: 'Expand submenu' },\n { name: 'Collapse', label: 'Collapse submenu' },\n ];\n }\n return [];\n }, []);\n\n // Merge user accessibility actions with defaults\n const finalAccessibilityActions = React.useMemo(() => {\n const userActions = userProps.accessibilityActions;\n if (userActions && userActions.length > 0) {\n return [...defaultAccessibilityActions, ...userActions];\n }\n return defaultAccessibilityActions;\n }, [userProps.accessibilityActions, defaultAccessibilityActions]);\n\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n // create the merged slot props\n const slotProps = mergeSettings(styleProps, {\n root: {\n ref: cmRef,\n ...pressablePropsModified,\n ...onKeyDownProps,\n ...rest,\n accessible: true,\n accessibilityLabel: accessibilityLabel,\n accessibilityRole: 'menuitem',\n accessibilityState: { disabled: state.disabled ?? false, expanded: expanded ?? false, selected: state.selected },\n accessibilityValue: { text: itemKey },\n accessibilityActions: finalAccessibilityActions,\n disabled,\n focusable: !disabled,\n onAccessibilityTap: onAccTap,\n },\n content: {\n accessible: false,\n children: text,\n },\n icon: {\n ...createIconProps(icon),\n accessible: false,\n },\n chevron: {\n ...createIconProps({ svgSource: svgProps, width: 12, height: 12 }),\n accessible: false,\n },\n });\n\n return { slotProps, state };\n },\n settings,\n render: (Slots: ISlots, renderData: SubmenuItemRenderData, ...children: React.ReactNode[]) => {\n // We shouldn't have to specify the source prop on Slots.icon, here, but we need another drop from @uifabricshared\n return (\n \n \n {renderData!.state.icon && }\n {renderData!.state.content && }\n {children}\n \n \n \n \n \n );\n },\n slots: {\n root: View,\n startstack: View,\n icon: Icon as React.ComponentType,\n content: Text,\n endstack: View,\n chevron: Icon as React.ComponentType,\n },\n styles: {\n root: [backgroundColorTokens, borderTokens],\n startstack: [],\n icon: [{ source: 'iconColor', lookup: getPaletteFromTheme, target: 'color' }],\n content: [textTokens, foregroundColorTokens],\n endstack: [],\n chevron: [{ source: 'chevronColor', lookup: getPaletteFromTheme, target: 'color' }],\n },\n});\n\nexport default SubmenuItem;\n", "export { contextualMenuName } from './ContextualMenu.types';\nexport type {\n ContextualMenuContext,\n ContextualMenuProps,\n ContextualMenuRenderData,\n ContextualMenuSlotProps,\n ContextualMenuState,\n ContextualMenuTokens,\n ContextualMenuType,\n} from './ContextualMenu.types';\nexport { CMContext, ContextualMenu } from './ContextualMenu';\nexport { contextualMenuItemName } from './ContextualMenuItem.types';\nexport type {\n ContextualMenuItemProps,\n ContextualMenuItemRenderData,\n ContextualMenuItemSlotProps,\n ContextualMenuItemState,\n ContextualMenuItemTokens,\n ContextualMenuItemType,\n} from './ContextualMenuItem.types';\nexport { ContextualMenuItem } from './ContextualMenuItem';\nexport { submenuName } from './Submenu.types';\nexport type { SubmenuProps, SubmenuRenderData, SubmenuSlotProps, SubmenuState, SubmenuTokens, SubmenuType } from './Submenu.types';\nexport { Submenu } from './Submenu';\nexport { submenuItemName } from './SubmenuItem.types';\nexport type {\n SubmenuItemProps,\n SubmenuItemRenderData,\n SubmenuItemSlotProps,\n SubmenuItemState,\n SubmenuItemTokens,\n SubmenuItemType,\n} from './SubmenuItem.types';\nexport { SubmenuItem } from './SubmenuItem';\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nexport interface NativeProps extends ViewProps {\n /**\n * Specifies whether the FocusTrapZone's focus trapping behavior is disabled. True, if disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Specifies whether the FocusTrapZone takes focus on render. True, if taking focus is disabled.\n * @default false\n */\n disableFirstFocus?: boolean;\n /**\n * Determines which element receives focus when focus moves into the FocusTrapZone. If false, the first focusable descendant gets focus.\n * If true, the element that was focused when the FocusTrapZone last had a focused descendant is chosen. If it has never had a focused\n * descendant before, then the first focusable descendant gets focus.\n * @default false\n */\n focusPreviouslyFocusedInnerElement?: boolean;\n /**\n * By default, when the FocusTrapZone is unmounted or disabled focus returns to the element outside the FocusTrapZone that last had\n * focus. Setting this to true disables this behavior, so the UI behaves as it normally would: If the FocusTrapZone is disabled, focus\n * remains on the control inside the FocusTrapZone. If the FocusTrapZone is unmounted, focus usually moves to the nearest focusable\n * control, but this can vary.\n * @default false\n */\n ignoreExternalFocusing?: boolean;\n\n forceFocusInsideTrap?: boolean;\n}\n\nexport default codegenNativeComponent('RCTFocusTrapZone') as HostComponent;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport { useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\nimport type { IUseStyling } from '@uifabricshared/foundation-composable';\nimport { composable } from '@uifabricshared/foundation-composable';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport type { IFocusTrapZoneProps, IFocusTrapZoneSlotProps, IFocusTrapZoneType } from './FocusTrapZone.types';\nimport RCTFocusTrapZone from './FocusTrapZoneNativeComponent';\n\nexport function filterOutComponentRef(propName: string): boolean {\n return propName !== 'componentRef';\n}\n\nexport const FocusTrapZone = composable({\n usePrepareProps: (userProps: IFocusTrapZoneProps, useStyling: IUseStyling) => {\n const ftzRef = useViewCommandFocus(userProps.componentRef);\n return {\n slotProps: mergeSettings(useStyling(userProps), { root: { ...userProps, ref: ftzRef } }),\n };\n },\n slots: {\n root: { slotType: RCTFocusTrapZone, filter: filterOutComponentRef },\n },\n});\n", "export type { IFocusTrapZoneProps, IFocusTrapZoneSlotProps, IFocusTrapZoneType } from './FocusTrapZone.types';\nexport { FocusTrapZone, filterOutComponentRef } from './FocusTrapZone';\n", "import type { ViewProps } from 'react-native';\n\nimport type { IFocusable, IPressableState, IWithPressableEvents, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';\nimport type { TextTokens, TextProps } from '@fluentui-react-native/text';\n\nexport const linkName = 'Link';\n\nexport type LinkState = IPressableState & {\n /**\n * Specifies whether the link has been visited.\n * Note: Not supported for Android\n * @default false\n */\n visited?: boolean;\n /**\n * Specifies whether the link is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Specifies whether the link is inline.\n * Note: Not supported for win32\n *\n * @default false\n */\n inline?: boolean;\n /**\n * Specifies whether the link is subtle.\n * Note: Not supported for Android\n * @default false\n */\n subtle?: boolean;\n};\n\n/**\n * Link tokens, these are the internally configurable values for Link elements. In particular these\n * drive decisions on how to build the styles\n * Note: 'hovered','focused','visited','subtle' are not supported for Android\n */\nexport interface LinkTokens extends TextTokens {\n hovered?: LinkTokens;\n pressed?: LinkTokens;\n focused?: LinkTokens;\n visited?: LinkTokens;\n disabled?: LinkTokens;\n inline?: LinkTokens;\n subtle?: LinkTokens;\n}\n\nexport type LinkAppearance = 'default' | 'subtle';\n\n/**\n * Link props, extending Text props with Pressable options\n */\nexport interface LinkProps extends IWithPressableOptions {\n /**\n * The appearance of the link, either `default` or `subtle`\n * Note: 'subtle' is not supported for Android\n * @default default\n */\n appearance?: LinkAppearance;\n /**\n * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n /**\n * Whether to use native focus visuals for the component\n * @default true\n */\n enableFocusRing?: boolean;\n /**\n * Whether the link is inline with text\n * @default false\n */\n inline?: boolean;\n /**\n * The URL that is opened when the link is clicked. This value supersedes the 'onPress' callback when both are present.\n * @default undefined\n */\n url?: string;\n /**\n * Text that should show in a tooltip when the user hovers over a button.\n * Note: Not supported for Android\n */\n tooltip?: string;\n}\n\nexport type LinkInfo = {\n props: IWithPressableEvents>;\n state: LinkState;\n};\n\nexport interface LinkSlotProps {\n root: ViewProps;\n content: TextProps;\n}\n\nexport interface LinkType {\n props: LinkProps;\n tokens: LinkTokens;\n slotProps: LinkSlotProps;\n}\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { LinkTokens } from './Link.types';\n\nexport const defaultLinkTokens: TokenSettings = (t: Theme) =>\n ({\n color: t.colors.brandForegroundLink,\n alignSelf: 'flex-start',\n variant: 'body1',\n textDecorationLine: 'underline',\n disabled: {\n color: t.colors.neutralForegroundDisabled,\n textDecorationLine: 'none',\n focused: {\n borderColor: t.colors.strokeFocus2,\n },\n },\n hovered: {\n color: t.colors.brandForegroundLinkHover,\n },\n pressed: {\n color: t.colors.brandForegroundLinkPressed,\n },\n visited: {\n color: t.colors.brandForegroundLink,\n },\n focused: {\n color: t.colors.brandForegroundLink,\n borderColor: t.colors.strokeFocus2,\n },\n subtle: {\n color: t.colors.neutralForeground2,\n hovered: {\n color: t.colors.neutralForeground2Hover,\n },\n pressed: {\n color: t.colors.neutralForeground2Pressed,\n },\n visited: {\n color: t.colors.neutralForeground2,\n },\n focused: {\n color: t.colors.neutralForeground2,\n borderColor: t.colors.strokeFocus2,\n },\n },\n brand: {\n color: t.colors.neutralForegroundInvertedLink,\n hovered: {\n color: t.colors.neutralForegroundInvertedLinkHover,\n },\n pressed: {\n color: t.colors.neutralForegroundInvertedLinkPressed,\n },\n visited: {\n color: t.colors.neutralForegroundInvertedLink,\n },\n focused: {\n color: t.colors.neutralForegroundInvertedLink,\n borderColor: t.colors.strokeFocus2,\n },\n },\n } as LinkTokens);\n", "import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\nimport { borderStyles, fontStyles } from '@fluentui-react-native/tokens';\n\nimport { linkName } from './Link.types';\nimport type { LinkState, LinkTokens, LinkSlotProps, LinkProps } from './Link.types';\nimport { defaultLinkTokens } from './LinkTokens';\n\nexport const linkStates: (keyof LinkState)[] = ['inline', 'subtle', 'hovered', 'focused', 'pressed', 'disabled'];\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [defaultLinkTokens, linkName],\n states: linkStates,\n slotProps: {\n root: buildProps(\n (tokens: LinkTokens) => ({\n style: {\n alignSelf: tokens.alignSelf,\n },\n }),\n ['alignSelf'],\n ),\n content: buildProps(\n (tokens: LinkTokens, theme: Theme) => ({\n style: {\n alignSelf: tokens.alignSelf,\n textDecorationLine: tokens.textDecorationLine,\n color: tokens.color,\n fontStyle: tokens.fontStyle,\n textAlign: tokens.textAlign,\n ...fontStyles.from(tokens, theme),\n ...borderStyles.from(tokens, theme),\n },\n variant: tokens.variant,\n }),\n ['alignSelf', 'color', 'textDecorationLine', 'textAlign', ...fontStyles.keys, ...borderStyles.keys],\n ),\n },\n};\n", "import * as React from 'react';\nimport { Linking, Platform } from 'react-native';\n\nimport {\n useAsPressable,\n useKeyProps,\n useOnPressWithFocus,\n useViewCommandFocus,\n getAccessibilityState,\n} from '@fluentui-react-native/interactive-hooks';\n\nimport type { LinkProps, LinkInfo } from './Link.types';\n\n/*These callbacks are not implemented on iOS/macOS, and cause Redboxes if passed in. Limit to only windows/win32 for now*/\nconst isWinPlatform = Platform.OS === (('win32' as any) || 'windows');\nconst filteredProps = isWinPlatform\n ? {}\n : {\n onKeyUp: undefined,\n keyUpEvents: undefined,\n validKeysUp: undefined,\n onKeyDown: undefined,\n keyDownEvents: undefined,\n validKeysDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n onAccessibilityTap: undefined,\n };\n\nexport const useLink = (props: LinkProps): LinkInfo => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessible = true,\n accessibilityRole,\n onKeyUp,\n onKeyDown,\n keyUpEvents,\n keyDownEvents,\n onPress,\n onAccessibilityTap,\n tooltip,\n url,\n accessibilityState,\n componentRef = defaultComponentRef,\n disabled,\n enableFocusRing,\n focusable = true,\n ...rest\n } = props;\n const isDisabled = !!disabled;\n\n const [visitedState, setVisitedState] = React.useState(false);\n const linkOnPress = React.useCallback(\n (e) => {\n setVisitedState(true);\n if (url) {\n Linking.openURL(url as string);\n } else if (onPress) {\n onPress(e);\n }\n e.stopPropagation();\n },\n [setVisitedState, url, onPress],\n );\n\n // GH #1336: Set focusRef to null if link is disabled to prevent getting keyboard focus.\n const focusRef = isDisabled || !focusable ? null : componentRef;\n const onPressWithFocus = useOnPressWithFocus(focusRef, linkOnPress);\n const pressable = useAsPressable({ ...rest, disabled: isDisabled, onPress: onPressWithFocus });\n const onKeyUpProps = useKeyProps(linkOnPress, ' ', 'Enter');\n\n const newState = {\n ...pressable.state,\n visited: visitedState,\n };\n const onAccTap = React.useCallback(\n (e?) => {\n onAccessibilityTap ? onAccessibilityTap() : linkOnPress(e);\n },\n [linkOnPress, onAccessibilityTap],\n );\n\n const linkTooltip = tooltip ?? url ?? undefined;\n\n return {\n props: {\n ...rest,\n ...onKeyUpProps,\n ...pressable.props, // allow user key events to override those set by us\n onAccessibilityTap: onAccTap, // Place here so it can be overridden by filteredProps if needed\n ...filteredProps,\n accessible: accessible,\n accessibilityRole: 'link',\n accessibilityState: getAccessibilityState(isDisabled, accessibilityState),\n enableFocusRing: enableFocusRing ?? true,\n focusable: focusable && !isDisabled,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n ref: useViewCommandFocus(componentRef),\n tooltip: linkTooltip,\n },\n state: newState,\n };\n};\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport React from 'react';\nimport { Platform, View } from 'react-native';\n\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, mergeProps, withSlots } from '@fluentui-react-native/framework';\nimport { TextV1 as Text } from '@fluentui-react-native/text';\n\nimport { stylingSettings } from './Link.styling';\nimport type { LinkType, LinkProps, LinkState } from './Link.types';\nimport { linkName } from './Link.types';\nimport { useLink } from './useLink';\n\n/**\n * A function which determines if a set of styles should be applied to the component given the current state and props of the link.\n *\n * @param layer The name of the state that is being checked for\n * @param state The current state of the link\n * @param userProps The props that were passed into the link\n * @returns Whether the styles that are assigned to the layer should be applied to the link\n */\nexport const linkLookup = (layer: string, state: LinkState, userProps: LinkProps): boolean => {\n return state[layer] || userProps[layer] || layer === userProps['appearance'];\n};\n\nexport const Link = compose({\n displayName: linkName,\n ...stylingSettings,\n slots: {\n root: View,\n content: Text,\n },\n useRender: (userProps: LinkProps, useSlots: UseSlots) => {\n const link = useLink(userProps);\n // grab the styled slots\n const Slots = useSlots(userProps, (layer) => linkLookup(layer, link.state, userProps));\n // now return the handler for finishing render\n return (final: LinkProps, ...children: React.ReactNode[]) => {\n // the event fires twice due to native's implementation of inline link\n const { inline, ...mergedProps } = mergeProps(link.props, final);\n\n // RN Core has a bug where Text in Text is not keyboard accessible. Issues - #32004, #35194.\n // This is a workaround for the issue. Once those issues are resolved, supportsA11yTextInText can be removed.\n const supportsA11yTextInText = Platform.OS !== 'android';\n\n // MacOS Text component doesn't handle interaction events like hover etc.\n // which are needed to style links correctly. Since macOS can handle\n // Views in Text, we use that to handle interactions instead.\n const supportsInteractionOnText = Platform.OS !== 'macos';\n\n // Find the first child that's a string (if it exists) and save it to set as the link's\n // accessibilityLabel if one isn't defined.\n const linkA11yLabel = React.Children.toArray(children).find((child) => typeof child === 'string');\n\n return supportsA11yTextInText && supportsInteractionOnText && (inline || mergedProps.selectable) ? (\n {children}\n ) : (\n \n \n {children}\n \n \n );\n };\n },\n});\n", "import type * as React from 'react';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IFocusable, IPressableState, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { IForegroundColorTokens, FontTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype ObjectBase = {};\n\nexport const linkName = 'RNFLink';\n\n/**\n * Properties for fabric native Link\n */\n\nexport type ILinkTokens = IForegroundColorTokens & FontTokens & IBorderTokens;\n\n/**\n * Because style state updates are coming from the touchable and will cause a child render the link doesn't use\n * changes in state value to trigger re-render. The values inside inner are effectively mutable and are used\n * for per-component storage.\n */\nexport type ILinkState = IPressableState & {\n /**\n * Specifies whether the link has been visited.\n * @default false\n */\n visited?: boolean;\n};\n\nexport interface ILinkInfo {\n /**\n * Specifies whether the link has clickable text to display.\n * @default false\n */\n content?: boolean;\n}\n\nexport interface ILinkOptions {\n /**\n * The URL that is opened when the link is clicked. This value supersedes the 'onPress' callback when both are present.\n * @default undefined\n */\n url?: string;\n}\n\nexport type IWithLinkOptions = ILinkOptions & IWithPressableOptions;\n\nexport interface ILinkProps extends IWithLinkOptions {\n /**\n * The visible text of the link that the user sees.\n * @default undefined\n */\n content?: string;\n /**\n * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n}\n\nexport type ILinkSlotProps = {\n root: React.PropsWithRef;\n content: ITextProps;\n};\n\nexport type ILinkRenderData = IRenderData;\n\nexport interface ILinkType {\n props: ILinkProps;\n slotProps: ILinkSlotProps;\n tokens: ILinkTokens;\n state: ILinkState & ILinkInfo;\n}\n", "import type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { ILinkType } from './Link.types';\nimport { linkName } from './Link.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n variant: 'secondaryStandard',\n color: 'link',\n borderColor: 'transparent',\n borderStyle: 'solid',\n borderWidth: 2,\n borderRadius: 4,\n textDecorationLine: 'underline',\n },\n root: {\n accessible: true,\n focusable: true,\n enableFocusRing: false,\n ...{ cursor: 'pointer' },\n accessibilityRole: 'link',\n style: {\n display: 'flex',\n alignItems: 'flex-start',\n } as IViewProps['style'],\n },\n content: {\n style: {\n textDecorationLine: 'underline',\n textAlign: 'center',\n },\n },\n _precedence: ['visited', 'hovered', 'focused', 'pressed', 'disabled'],\n _overrides: {\n disabled: {\n tokens: {\n color: 'link',\n },\n },\n hovered: {\n tokens: {\n color: 'linkHovered',\n },\n },\n pressed: {\n tokens: {\n color: 'linkPressed',\n },\n },\n visited: {\n tokens: {\n color: 'link',\n },\n },\n focused: {\n tokens: {\n borderColor: 'focusBorder',\n },\n },\n },\n },\n linkName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { Linking, View } from 'react-native';\n\nimport type { ITextProps } from '@fluentui-react-native/adapters';\nimport { useAsPressable, useKeyProps, useOnPressWithFocus, useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\nimport { Text } from '@fluentui-react-native/text';\nimport { foregroundColorTokens, textTokens, borderTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './Link.settings';\nimport type { ILinkProps, ILinkSlotProps, ILinkState, ILinkRenderData, IWithLinkOptions, ILinkType } from './Link.types';\nimport { linkName } from './Link.types';\n\nexport type ILinkHooks = [IWithLinkOptions, ILinkState];\n\nexport function useAsLink(userProps: IWithLinkOptions, ref: React.RefObject): ILinkHooks {\n const { url, onPress, ...rest } = userProps;\n\n const [linkState, setLinkState] = React.useState({ visited: false });\n const linkOnPress = React.useCallback(\n (e) => {\n setLinkState({ visited: true });\n if (url) {\n Linking.openURL(url as string);\n } else if (onPress) {\n onPress(e);\n }\n },\n [setLinkState, url, onPress],\n );\n\n // Ensure focus is placed on link after click\n const linkOnPressWithFocus = useOnPressWithFocus(ref, linkOnPress);\n\n const pressable = useAsPressable({ onPress: linkOnPressWithFocus, ...rest });\n const onKeyUpProps = useKeyProps(linkOnPress, ' ', 'Enter');\n\n const newState = {\n ...pressable.state,\n ...linkState,\n };\n\n const newProps = {\n ...userProps,\n ...pressable.props,\n ...onKeyUpProps,\n };\n\n return [newProps, newState];\n}\n\nexport const Link = compose({\n displayName: linkName,\n settings,\n usePrepareProps: (userProps: ILinkProps, useStyling: IUseComposeStyling): ILinkRenderData => {\n const defaultComponentRef = React.useRef(null);\n const { content, onAccessibilityTap, componentRef = defaultComponentRef, ...rest } = userProps;\n\n const [linkProps, linkState] = useAsLink(rest, componentRef);\n const onAccTap = onAccessibilityTap ? onAccessibilityTap : linkProps.onPress;\n\n const info = { content: !!content };\n\n const linkRef = useViewCommandFocus(componentRef);\n\n // grab the styling information, referencing the state as well as the props\n const styleProps = useStyling(userProps, (override: string) => linkState[override] || userProps[override]);\n\n // create the merged slot props\n const slotProps = mergeSettings(styleProps, {\n root: { ...linkProps, ref: linkRef, onAccessibilityTap: onAccTap },\n content: { children: content },\n });\n\n return { slotProps, state: { ...linkState, ...info } };\n },\n render: (Slots: ISlots, renderData: ILinkRenderData, ...children: React.ReactNode[]) => {\n const content = renderData.state && renderData.state.content;\n\n return children && children.length && children.length === 1 && children[0] !== undefined ? (\n \n {content && }\n {children}\n \n ) : (\n {content && }\n );\n },\n slots: {\n root: View,\n content: Text,\n },\n styles: {\n root: [],\n content: [foregroundColorTokens, textTokens, borderTokens],\n },\n});\n\nexport default Link;\n", "export { linkName as linkNameV1 } from './Link.types';\nexport type { LinkTokens, LinkProps, LinkAppearance, LinkState, LinkSlotProps, LinkType } from './Link.types';\nexport { defaultLinkTokens } from './LinkTokens';\nexport { linkStates, stylingSettings as linkStylingSettings } from './Link.styling';\nexport { useLink } from './useLink';\nexport { Link as LinkV1, linkLookup } from './Link';\n\nexport { linkName } from './legacy/Link.types';\nexport type {\n ILinkInfo,\n ILinkOptions,\n ILinkProps,\n ILinkRenderData,\n ILinkSlotProps,\n ILinkState,\n ILinkTokens,\n ILinkType,\n IWithLinkOptions,\n} from './legacy/Link.types';\nexport { Link, useAsLink } from './legacy/Link';\nexport type { ILinkHooks } from './legacy/Link';\n", "import type { ImageURISource } from 'react-native';\n\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\n\nimport type {\n PersonaSize,\n PersonaCoinColor,\n PersonaCoinFluentColor,\n PersonaPresence,\n IPersonaCoinTokens,\n RingThickness,\n} from './PersonaCoin.types';\n\nconst presenceIconCache: { [key in PersonaPresence]: ImageURISource } = {\n none: { uri: '' },\n offline: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAANlBMVEUAAACoxM+oxM+oxM+oxM+oxM+oxM+oxM+oxM////+oxM/W5OmzzNX5+/z3+vvu9Pbt8/Xj7PAAKKEtAAAACXRSTlMA6bWcZQpiXgXWfJCWAAAAeElEQVQoz52RSQ7EIAwEx0AWymT7/2dHYpgoPvQldeySsGl/XjOVZGCpTDFfjIEtj3jN0Pzc99Mb5PUWGbwOHPI/n+GqNxfMY67h9YFjvw0KrQYapYuER+GkLowjigPrArYoNpBCPiWHy3XlB1UlqkRZuziUPO1bvszLC8V87ko/AAAAAElFTkSuQmCC',\n },\n online: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAWlBMVEUAAABusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAVusAX////N4bi61517tivn8d3e7NL3+vTE3Kux0o6nzH6GvEWFZ26xAAAAEnRSTlMA8eNrEQj6syHTeXrKshzZ19JHa6QpAAAApUlEQVQoz4WS6w7CIAyFBwwGbE5th87b+7+mCDXcIp4/NN9J2tJ2+KdRTFyx0yTGAkvLgMRmmbg2kMnoL185FOIr5Vmg0hKzWWhkQz+sNdinN1Eg9wyP8MYh5xvewjt5gxcct9iYN1SIXvsj46C8EWvfEZ0jTsYxRJcrYuLAqTg5xKm4AHL2xEH8/GBvJIM819xIWkc9dt1ZFEnO+WrbY1CcjqGnN0xiGcyuKFtcAAAAAElFTkSuQmCC',\n },\n away: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAP1BMVEUAAAD6yRT6yRT6yRT6yRT6yRT6yRT6yRT6yRT6yRT6yRT6yRT////6zCP95pH95Yv++OL84Hn822T72FT71EUen9LHAAAAC3RSTlMA6rVlCuWgmGJeBd4LCPMAAAB8SURBVCjPnZFLDoAgDERtQUUH/97/rCYNJUITTXjLeYu2064Z75gAYufLfOqR6KdXPI94Mc5ZDCgYNA8piHGBENJcqgV5EQ61gBPBVrAIsoJEwArUYi0EIbFlQ+VwHGpY11XOGDdZVw/MXPstB2olFeGnRFv796Psa1t5ANwFDZEW8B8sAAAAAElFTkSuQmCC',\n },\n dnd: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAQlBMVEUAAADpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABv////wfYT86errJjiR9OLxAAAAEXRSTlMA4/CzeQj602seEhEk89jKakfnNfsAAACKSURBVCjPhZFbDoQgDEWBQkHBR2d0/1udEppR0cbzeU9SSq95I69gcZphzZc4eEeC8+HIh0gn4vDPLV2wYsJCHUub5umGr/no7sKNLBI9kFjAkwAWbaX9K+xtMRZIle0jbFRBFpMmZmWU8ri+rv5B/SQmxD6PUknpz16MUJSi9GqZnMAiWkjZvPADxcoYalVfnOMAAAAASUVORK5CYII=',\n },\n blocked: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAe1BMVEUAAADpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABv////pABv83uHqCiTsJz7rGjP7zNHvRVj/+vv+8vP6x83sIzv2mqXsKD/7zNL5v8b3oqz2maTuP1P82Nz819vtKUDrGjLrGTK2dyGvAAAAEXRSTlMA8dSzeQj64mseEhHkJMpq5T3coEAAAADSSURBVCjPhdHZFoIgFAVQGQRLGzhQiaLNw/9/YZRk4IvncZ+17uJys7mUGyYFoWxTJpxzghDC878vKFBftLX6UgN0MXqF/qRCTg5VaPI1ro36Re+MWQ/TOPrEXw7840uCNvb9oQVZ+qJAnbpSNQpfMHQTVx2YLyT0xJWG9IWAnbiyEL4gaCKPCopb7P9RDOeJqzNYeG7i3+eGBVMPC2Yczpn9cfTmAT58IoV5Rn4FDSdZbY1rxzk9qpXHofkcqtO2uXfhUHOn9SkLJoWQrCizmbwBa5IbuX8ugpIAAAAASUVORK5CYII=',\n },\n busy: {\n uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAANlBMVEUAAADpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvpABvsgIdoAAAAEXRSTlMA8eLUEQj6s2sheXrlyrJqHBqb3nMAAAB/SURBVCjPhZFRDsQgCEQFEdS223L/yy7JummtGN/nvASUCSvoFGSIclIXpwragC3deYn6IJZ/fqF24NXmHPri+E2rOlCDQTAKIBNZHbKJjyfEBHoCTbAn2ATMRPRHzZfPn+t/cH4SIw3rY2p17H2+l0VRRtr8ag3KgswomcKCL1NmGBp9lqsZAAAAAElFTkSuQmCC',\n },\n};\n\n// TODO: Need icons for the OOF statues\nconst presenceOOFIconCache = presenceIconCache;\n\nexport function getPresenceIconSource(presence: PersonaPresence, isOutOfOffice: boolean): ImageURISource {\n return isOutOfOffice ? presenceOOFIconCache[presence] : presenceIconCache[presence];\n}\n\nexport type PersonaSizeConfig = {\n physicalSize: number;\n iconSize: number;\n iconStrokeWidth: number;\n initialsSize: number;\n};\n\nconst sizeTable: { [P in PersonaSize]: PersonaSizeConfig } = {\n size8: { physicalSize: 8, iconSize: 0, iconStrokeWidth: 0, initialsSize: 4 },\n size24: { physicalSize: 24, iconSize: 8, iconStrokeWidth: 2, initialsSize: 10 },\n size32: { physicalSize: 32, iconSize: 8, iconStrokeWidth: 2, initialsSize: 12 },\n size40: { physicalSize: 40, iconSize: 12, iconStrokeWidth: 2, initialsSize: 14 },\n size48: { physicalSize: 48, iconSize: 12, iconStrokeWidth: 2, initialsSize: 16 },\n size56: { physicalSize: 56, iconSize: 16, iconStrokeWidth: 3, initialsSize: 18 },\n size72: { physicalSize: 72, iconSize: 20, iconStrokeWidth: 3, initialsSize: 20 },\n size100: { physicalSize: 100, iconSize: 28, iconStrokeWidth: 4, initialsSize: 36 },\n size120: { physicalSize: 120, iconSize: 32, iconStrokeWidth: 4, initialsSize: 40 },\n};\n\nexport function getSizeConfig(size: PersonaSize): PersonaSizeConfig {\n return sizeTable[size];\n}\n\nconst colorTable: { [P in PersonaCoinColor]: string } = {\n lightBlue: globalTokens.color.cornflower.primary,\n blue: globalTokens.color.blue.primary,\n darkBlue: globalTokens.color.royalBlue.primary,\n teal: globalTokens.color.teal.primary,\n green: globalTokens.color.forest.primary,\n darkGreen: globalTokens.color.darkGreen.primary,\n lightPink: globalTokens.color.berry.primary,\n pink: globalTokens.color.hotPink.primary,\n magenta: globalTokens.color.grape.primary,\n purple: globalTokens.color.purple.primary,\n orange: globalTokens.color.pumpkin.primary,\n lightRed: globalTokens.color.red.primary,\n darkRed: globalTokens.color.burgundy.primary,\n violet: globalTokens.color.orchid.primary,\n gold: globalTokens.color.brass.primary,\n burgundy: globalTokens.color.darkRed.primary,\n warmGray: globalTokens.color.beige.primary,\n cyan: globalTokens.color.steel.primary,\n rust: globalTokens.color.brown.primary,\n coolGray: globalTokens.color.platinum.primary,\n};\n\n/**\n * Converts the PersonaCoinColor into a hex color value\n * @deprecated Use convertCoinColorFluent instead.\n */\nexport function convertCoinColor(coinColor: PersonaCoinColor): string {\n return colorTable[coinColor];\n}\n\nconst colorTableFluent: { [P in PersonaCoinFluentColor]: string } = {\n cornflower: globalTokens.color.cornflower.primary,\n blue: globalTokens.color.blue.primary,\n royalBlue: globalTokens.color.royalBlue.primary,\n teal: globalTokens.color.teal.primary,\n forest: globalTokens.color.forest.primary,\n darkGreen: globalTokens.color.darkGreen.primary,\n berry: globalTokens.color.berry.primary,\n hotPink: globalTokens.color.hotPink.primary,\n grape: globalTokens.color.grape.primary,\n purple: globalTokens.color.purple.primary,\n pumpkin: globalTokens.color.pumpkin.primary,\n red: globalTokens.color.red.primary,\n burgundy: globalTokens.color.burgundy.primary,\n orchid: globalTokens.color.orchid.primary,\n brass: globalTokens.color.brass.primary,\n darkRed: globalTokens.color.darkRed.primary,\n beige: globalTokens.color.beige.primary,\n platinum: globalTokens.color.platinum.primary,\n steel: globalTokens.color.steel.primary,\n brown: globalTokens.color.brown.primary,\n};\n\n/**\n * Converts the PersonaCoinFluentColor into a hex color value\n */\nexport function convertCoinColorFluent(coinColor: PersonaCoinFluentColor): string {\n return colorTableFluent[coinColor];\n}\n\nexport function calculateEffectiveSizes(tokens: IPersonaCoinTokens): PersonaSizeConfig {\n const { size, coinSize, iconSize, iconStrokeWidth, initialsSize } = tokens;\n\n if (size) {\n return sizeTable[size];\n } else {\n const {\n physicalSize: defaultPhysicalSize,\n iconSize: defaultIconSize,\n iconStrokeWidth: defaultIconStrokeWidth,\n initialsSize: defaultInitialsSize,\n } = sizeTable['size40'];\n\n return {\n physicalSize: coinSize || defaultPhysicalSize,\n iconSize: iconSize || defaultIconSize,\n iconStrokeWidth: iconStrokeWidth || defaultIconStrokeWidth,\n initialsSize: initialsSize || defaultInitialsSize,\n };\n }\n}\n\nexport function getRingThickness(thickness: RingThickness): number {\n switch (thickness) {\n case 'xSmall':\n return 1;\n case 'small':\n return 1;\n case 'medium':\n return 2;\n case 'large':\n return 2;\n case 'xlarge':\n return 2;\n case 'xxlarge':\n return 4;\n default:\n return thickness < 0 ? 4 : thickness;\n }\n}\n", "import type { ImageProps, ViewProps, ImageURISource, TextProps, ColorValue } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IBackgroundColorTokens, IForegroundColorTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const personaCoinName = 'RNFPersonaCoin';\n\nexport type PersonaSize = 'size8' | 'size24' | 'size32' | 'size40' | 'size48' | 'size56' | 'size72' | 'size100' | 'size120';\n\n/**\n * Sets color of the coin when there is no picture\n * @deprecated Use PersonaCoinFluentColor instead.\n */\nexport type PersonaCoinColor =\n | 'lightBlue'\n | 'blue'\n | 'darkBlue'\n | 'teal'\n | 'green'\n | 'darkGreen'\n | 'lightPink'\n | 'pink'\n | 'magenta'\n | 'purple'\n | 'orange'\n | 'darkRed'\n | 'violet'\n | 'lightRed'\n | 'gold'\n | 'burgundy'\n | 'warmGray'\n | 'coolGray'\n | 'cyan'\n | 'rust';\n\n/**\n * Sets color of the coin when there is no picture. Uses fluent color names\n */\nexport type PersonaCoinFluentColor =\n | 'cornflower'\n | 'blue'\n | 'royalBlue'\n | 'teal'\n | 'forest'\n | 'darkGreen'\n | 'berry'\n | 'hotPink'\n | 'grape'\n | 'purple'\n | 'pumpkin'\n | 'red'\n | 'burgundy'\n | 'orchid'\n | 'brass'\n | 'darkRed'\n | 'beige'\n | 'platinum'\n | 'steel'\n | 'brown';\n\nexport type PersonaPresence = 'none' | 'offline' | 'online' | 'away' | 'dnd' | 'blocked' | 'busy';\n\nexport type RingThickness = number | 'xSmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge';\n\nexport interface RingConfig {\n accent?: boolean;\n transparent?: boolean;\n ringColor?: ColorValue; // glow\n ringBackgroundColor?: ColorValue; // inner/outer rings\n ringThickness?: RingThickness;\n innerGap?: RingThickness;\n}\n\nexport interface IPersonaConfigurableProps {\n size?: PersonaSize;\n\n /**\n * Sets color of the coin when there is no picture\n * @deprecated Use coinColorFluent instead\n */\n coinColor?: PersonaCoinColor;\n ring?: RingConfig;\n coinColorFluent?: PersonaCoinFluentColor;\n}\n\nexport interface IPersonaCoinProps extends IViewProps, IPersonaConfigurableProps {\n imageUrl?: string;\n imageDescription?: string;\n initials?: string;\n presence?: PersonaPresence;\n isOutOfOffice?: boolean;\n}\n\nexport interface IPersonaCoinSlotProps {\n root: ViewProps;\n photo: ImageProps;\n initials: TextProps;\n initialsBackground: ViewProps;\n icon: ImageProps;\n ring: ViewProps;\n glow: ViewProps;\n}\n\nexport type IconAlignment = 'start' | 'center' | 'end';\n\nexport interface IPersonaCoinTokens extends IBackgroundColorTokens, IForegroundColorTokens, IPersonaConfigurableProps {\n coinSize?: number;\n iconSize?: number;\n iconStrokeWidth?: number;\n iconStrokeColor?: string;\n initialsSize?: number;\n horizontalIconAlignment?: IconAlignment;\n verticalIconAlignment?: IconAlignment;\n}\n\nexport interface IPersonaCoinState {\n personaPhotoSource: ImageURISource | undefined;\n iconSource: ImageURISource | undefined;\n showRing: boolean;\n transparentRing: boolean;\n}\n\nexport interface IPersonaCoinType {\n props: IPersonaCoinProps;\n slotProps: IPersonaCoinSlotProps;\n tokens: IPersonaCoinTokens;\n state: IPersonaCoinState;\n}\n\nexport type IPersonaCoinRenderData = IRenderData;\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport { convertCoinColorFluent } from './PersonaCoin.helpers';\nimport type { IPersonaCoinType } from './PersonaCoin.types';\nimport { personaCoinName } from './PersonaCoin.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n horizontalIconAlignment: 'end',\n verticalIconAlignment: 'end',\n color: 'white', // initials is always 'white', unless overriden by token\n iconStrokeColor: 'white', // icon stroke color is always 'white', unless overriden by token\n backgroundColor: convertCoinColorFluent('cornflower'),\n },\n },\n personaCoinName,\n];\n", "import type { ImageProps } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst _iconKeyProps: (keyof IPersonaCoinTokens)[] = ['iconSize', 'size', 'coinSize'];\n\nfunction _buildIconStyles(tokenProps: IPersonaCoinTokens, theme: Theme): ImageProps {\n const { iconSize, iconStrokeWidth } = calculateEffectiveSizes(tokenProps);\n const iconSizeAdjusted = iconSize + iconStrokeWidth * 2;\n const iconStrokeColor = tokenProps.iconStrokeColor || theme.colors.background;\n\n return {\n source: {},\n style: {\n position: 'absolute',\n width: iconSizeAdjusted,\n height: iconSizeAdjusted,\n bottom: -iconStrokeWidth,\n end: -iconStrokeWidth,\n borderRadius: iconSizeAdjusted / 2,\n borderWidth: iconStrokeWidth,\n borderColor: iconStrokeColor,\n },\n };\n}\n\nexport const buildIconStyles = styleFunction(_buildIconStyles, _iconKeyProps);\n", "import type { TextProps } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst _initialsKeyProps: (keyof IPersonaCoinTokens)[] = ['coinSize', 'initialsSize', 'size'];\n\nfunction _buildInitialsStyles(tokenProps: IPersonaCoinTokens /*, theme: ITheme */): TextProps {\n const { initialsSize } = calculateEffectiveSizes(tokenProps);\n\n return {\n style: {\n fontSize: initialsSize,\n },\n };\n}\n\nexport const buildInitialsStyles = styleFunction(_buildInitialsStyles, _initialsKeyProps);\n", "import type { ViewProps } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { convertCoinColor, convertCoinColorFluent, calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst _initialsBackgroundKeyProps: (keyof IPersonaCoinTokens)[] = ['coinSize', 'size', 'coinColor', 'coinColorFluent', 'backgroundColor'];\n\nfunction _buildInitialsBackgroundStyles(tokenProps: IPersonaCoinTokens /*, theme: ITheme*/): ViewProps {\n const { physicalSize } = calculateEffectiveSizes(tokenProps);\n\n const { backgroundColor, coinColor, coinColorFluent } = tokenProps;\n let effectiveBackgroundColor = backgroundColor;\n if (coinColorFluent) {\n effectiveBackgroundColor = convertCoinColorFluent(coinColorFluent);\n } else if (coinColor) {\n effectiveBackgroundColor = convertCoinColor(coinColor);\n }\n\n return {\n style: {\n borderRadius: physicalSize / 2,\n width: physicalSize,\n height: physicalSize,\n flexGrow: 1,\n alignSelf: 'stretch',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: effectiveBackgroundColor,\n },\n };\n}\n\nexport const buildInitialsBackgroundStyles = styleFunction(\n _buildInitialsBackgroundStyles,\n _initialsBackgroundKeyProps,\n);\n", "import type { ImageProps } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst _photoKeyProps: (keyof IPersonaCoinTokens)[] = ['coinSize', 'size'];\n\nfunction _buildPhotoStyles(tokenProps: IPersonaCoinTokens /*, theme: ITheme */): ImageProps {\n const { physicalSize } = calculateEffectiveSizes(tokenProps);\n\n return {\n source: {},\n style: {\n borderRadius: physicalSize / 2,\n width: physicalSize,\n height: physicalSize,\n },\n resizeMode: 'cover',\n };\n}\n\nexport const buildPhotoStyles = styleFunction(_buildPhotoStyles, _photoKeyProps);\n", "import type { ViewProps } from 'react-native';\n\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { getRingThickness, calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst _ringProps: (keyof IPersonaCoinTokens)[] = ['coinSize', 'size', 'ring'];\n\nfunction _buildRingStyles(tokenProps: IPersonaCoinTokens, theme: Theme): ViewProps {\n const { physicalSize } = calculateEffectiveSizes(tokenProps);\n const { ring } = tokenProps;\n\n if (!ring) return {};\n\n const innerGap = ring.innerGap != undefined ? getRingThickness(ring.innerGap) : getRingThickness(ring.ringThickness || 'xxlarge');\n\n const effectiveRingThickness = 2 * getRingThickness(ring.ringThickness || 'xxlarge') + innerGap;\n const effectiveSize = physicalSize + 2 * effectiveRingThickness;\n const ringColor = ring.ringBackgroundColor || theme.colors.personaActivityRing;\n\n return {\n style: {\n borderStyle: 'solid',\n borderColor: ringColor,\n borderWidth: effectiveRingThickness,\n borderRadius: effectiveSize / 2,\n width: effectiveSize,\n height: effectiveSize,\n position: 'absolute',\n top: -effectiveRingThickness,\n left: -effectiveRingThickness,\n },\n };\n}\n\nfunction _buildGlowStyles(tokenProps: IPersonaCoinTokens, theme: Theme): ViewProps {\n const { physicalSize } = calculateEffectiveSizes(tokenProps);\n const { ring } = tokenProps;\n\n if (!ring) return {};\n\n const innerGap = ring.innerGap != undefined ? getRingThickness(ring.innerGap) : getRingThickness(ring.ringThickness || 'xxlarge');\n\n const effectiveRingThickness = getRingThickness(ring.ringThickness || 'xxlarge') + innerGap;\n const effectiveSize = physicalSize + 2 * effectiveRingThickness;\n const glowColor = ring.accent ? theme.colors.accentButtonBackground : ring.ringColor || theme.colors.personaActivityGlow;\n\n return {\n style: {\n borderStyle: 'solid',\n borderColor: glowColor,\n borderWidth: effectiveRingThickness - innerGap,\n borderRadius: effectiveSize / 2,\n width: effectiveSize,\n height: effectiveSize,\n position: 'absolute',\n top: -effectiveRingThickness,\n left: -effectiveRingThickness,\n },\n };\n}\n\nexport const buildRingStyles = styleFunction(_buildRingStyles, _ringProps);\nexport const buildGlowStyles = styleFunction(_buildGlowStyles, _ringProps);\n", "import type { ViewStyle } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { calculateEffectiveSizes } from './PersonaCoin.helpers';\nimport type { IPersonaCoinTokens } from './PersonaCoin.types';\n\nconst nameMap: { [key: string]: string } = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n};\n\nconst _rootKeyProps: (keyof IPersonaCoinTokens)[] = ['coinSize', 'size', 'horizontalIconAlignment', 'verticalIconAlignment'];\n\nfunction _buildRootStyles(tokenProps: IPersonaCoinTokens /*, theme: ITheme */): IViewProps {\n const rootStyle: ViewStyle = {\n flexDirection: 'row',\n };\n\n const { physicalSize } = calculateEffectiveSizes(tokenProps);\n rootStyle.width = physicalSize;\n rootStyle.height = physicalSize;\n\n const { horizontalIconAlignment, verticalIconAlignment } = tokenProps;\n rootStyle.justifyContent = nameMap[horizontalIconAlignment || 'end'] as ViewStyle['justifyContent'];\n rootStyle.alignItems = nameMap[verticalIconAlignment || 'end'] as ViewStyle['alignItems'];\n\n return { style: rootStyle };\n}\n\nexport const buildRootStyles = styleFunction(_buildRootStyles, _rootKeyProps);\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport { Image, View, Text } from 'react-native';\n\nimport { filterViewProps, filterImageProps } from '@fluentui-react-native/adapters';\nimport { foregroundColorTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots, IRenderData } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { getPresenceIconSource } from './PersonaCoin.helpers';\nimport { settings } from './PersonaCoin.settings';\nimport { buildIconStyles } from './PersonaCoin.tokens.icon';\nimport { buildInitialsStyles } from './PersonaCoin.tokens.initials';\nimport { buildInitialsBackgroundStyles } from './PersonaCoin.tokens.initialsBackground';\nimport { buildPhotoStyles } from './PersonaCoin.tokens.photo';\nimport { buildGlowStyles, buildRingStyles } from './PersonaCoin.tokens.ring';\nimport { buildRootStyles } from './PersonaCoin.tokens.root';\nimport { personaCoinName } from './PersonaCoin.types';\nimport type {\n IPersonaCoinProps,\n IPersonaCoinType,\n IPersonaCoinSlotProps,\n IPersonaCoinRenderData,\n IPersonaCoinState,\n} from './PersonaCoin.types';\n\nfunction usePrepareForProps(\n props: IPersonaCoinProps,\n useStyling: IUseComposeStyling,\n): IRenderData {\n const { imageUrl, imageDescription, initials, presence, isOutOfOffice, ring, ...rest } = props;\n\n const personaPhotoSource =\n imageUrl === undefined\n ? undefined\n : {\n uri: imageUrl,\n };\n\n const iconSource = presence === undefined ? undefined : getPresenceIconSource(presence, isOutOfOffice || false);\n const showRing = !!ring;\n const transparentRing = !!ring?.transparent;\n\n return {\n slotProps: mergeSettings(useStyling(props), {\n root: { ...rest },\n initials: {\n children: initials,\n },\n photo: {\n accessibilityLabel: imageDescription,\n },\n }),\n state: {\n iconSource,\n personaPhotoSource,\n showRing,\n transparentRing,\n },\n };\n}\n\nconst render = (Slots: ISlots, renderData: IPersonaCoinRenderData): JSX.Element | null => {\n if (!renderData.state) {\n return null;\n }\n\n const { personaPhotoSource, iconSource, showRing, transparentRing } = renderData.state;\n\n return (\n \n {personaPhotoSource ? (\n \n ) : (\n \n \n \n )}\n {showRing && !transparentRing && }\n {showRing && }\n {!!iconSource && !!iconSource.uri && }\n \n );\n};\n\nexport const PersonaCoin = compose({\n displayName: personaCoinName,\n usePrepareProps: usePrepareForProps,\n settings: settings,\n slots: {\n root: {\n slotType: View,\n filter: filterViewProps,\n },\n photo: {\n slotType: Image,\n filter: filterImageProps,\n },\n initials: Text,\n initialsBackground: {\n slotType: View,\n filter: filterViewProps,\n },\n icon: {\n slotType: Image,\n filter: filterImageProps,\n },\n ring: {\n slotType: View,\n filter: filterViewProps,\n },\n glow: {\n slotType: View,\n filter: filterViewProps,\n },\n },\n render: render,\n styles: {\n root: [buildRootStyles],\n initials: [foregroundColorTokens, buildInitialsStyles],\n initialsBackground: [buildInitialsBackgroundStyles],\n photo: [buildPhotoStyles],\n icon: [buildIconStyles],\n ring: [buildRingStyles],\n glow: [buildGlowStyles],\n },\n});\n", "export { PersonaCoin } from './PersonaCoin';\nexport { personaCoinName } from './PersonaCoin.types';\nexport type {\n IPersonaCoinProps,\n IPersonaCoinRenderData,\n IPersonaCoinSlotProps,\n IPersonaCoinState,\n IPersonaCoinTokens,\n IPersonaCoinType,\n IPersonaConfigurableProps,\n IconAlignment,\n PersonaCoinColor,\n PersonaCoinFluentColor,\n PersonaPresence,\n PersonaSize,\n RingConfig,\n RingThickness,\n} from './PersonaCoin.types';\nexport { buildRootStyles } from './PersonaCoin.tokens.root';\n", "import type { ColorValue } from 'react-native';\n\nimport type { IViewProps, ITextProps } from '@fluentui-react-native/adapters';\nimport type { IPersonaCoinProps, IPersonaCoinTokens } from '@fluentui-react-native/persona-coin';\nimport type { FontTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const personaName = 'RNFPersona';\n\nexport interface IPersonaState {\n text?: string;\n secondaryText?: string;\n tertiaryText?: string;\n optionalText?: string;\n}\n\nexport interface IPersonaProps extends IPersonaCoinProps, IPersonaState {}\n\nexport interface IPersonaSlotProps {\n root: IViewProps;\n coin: IPersonaCoinProps;\n stack: IViewProps;\n text: ITextProps;\n secondary: ITextProps;\n tertiary: ITextProps;\n optional: ITextProps;\n}\n\nexport interface IPersonaTokens extends Omit {\n verticalGap?: number;\n horizontalGap?: number;\n\n coinBackgroundColor?: ColorValue;\n\n textFont?: FontTokens;\n secondaryFont?: FontTokens;\n tertiaryFont?: FontTokens;\n optionalFont?: FontTokens;\n}\n\nexport interface IPersonaType {\n props: IPersonaProps;\n slotProps: IPersonaSlotProps;\n tokens: IPersonaTokens;\n state: IPersonaState;\n}\n\nexport type IPersonaRenderData = IRenderData;\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { IPersonaType } from './Persona.types';\nimport { personaName } from './Persona.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n verticalGap: 4,\n },\n },\n personaName,\n];\n", "import type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport type { IPersonaCoinTokens } from '@fluentui-react-native/persona-coin';\nimport { buildRootStyles as buildPersonaCoinRootStyle } from '@fluentui-react-native/persona-coin';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport type { IPersonaTokens } from './Persona.types';\n\nconst _coinStyleKeys: (keyof IPersonaTokens)[] = [\n 'coinSize',\n 'size',\n 'horizontalIconAlignment',\n 'verticalIconAlignment',\n 'coinBackgroundColor',\n];\n\nfunction _buildCoinStyle(tokenProps: IPersonaTokens, theme: Theme): IViewProps {\n const { coinBackgroundColor, ...rest } = tokenProps;\n\n const personaCoinTokens: IPersonaCoinTokens = {\n ...rest,\n backgroundColor: coinBackgroundColor,\n };\n\n return buildPersonaCoinRootStyle(personaCoinTokens, theme);\n}\n\nexport const buildCoinStyle = styleFunction(_buildCoinStyle, _coinStyleKeys);\n", "import type { ViewStyle } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport type { IPersonaTokens } from './Persona.types';\n\nconst _rootKeyProps: (keyof IPersonaTokens)[] = ['coinSize', 'size'];\n\nfunction _buildRootStyle(tokenProps: IPersonaTokens): IViewProps {\n const rootStyle: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n };\n\n const { coinSize } = tokenProps;\n if (coinSize && coinSize > 0) {\n rootStyle.height = coinSize;\n rootStyle.minWidth = coinSize;\n }\n\n return { style: rootStyle };\n}\n\nexport const buildRootStyle = styleFunction(_buildRootStyle, _rootKeyProps);\n", "import type { PersonaSize } from '@fluentui-react-native/persona-coin';\nimport type { FontTokens } from '@fluentui-react-native/tokens';\n\ntype IPersonaFontTable = { [key in PersonaSize]: FontTokens };\n\nconst textFontTable: IPersonaFontTable = {\n size8: { fontSize: 'caption' },\n size24: { fontSize: 'secondary' },\n size32: { fontSize: 'secondary' },\n size40: { fontSize: 'secondary' },\n size48: { fontSize: 'secondary' },\n size56: { fontSize: 'subheader' },\n size72: { fontSize: 'subheader' },\n size100: { fontSize: 'subheader' },\n size120: { fontSize: 'subheader' },\n};\n\nconst secondaryFontTable: IPersonaFontTable = {\n size8: { fontSize: 0 },\n size24: { fontSize: 0 },\n size32: { fontSize: 0 },\n size40: { fontSize: 'caption' },\n size48: { fontSize: 'caption' },\n size56: { fontSize: 'secondary' },\n size72: { fontSize: 'secondary' },\n size100: { fontSize: 'secondary' },\n size120: { fontSize: 'secondary' },\n};\n\nconst tertiaryFontTable: IPersonaFontTable = {\n size8: { fontSize: 0 },\n size24: { fontSize: 0 },\n size32: { fontSize: 0 },\n size40: { fontSize: 0 },\n size48: { fontSize: 0 },\n size56: { fontSize: 0 },\n size72: { fontSize: 'secondary' },\n size100: { fontSize: 'secondary' },\n size120: { fontSize: 'secondary' },\n};\n\nconst optionalFontTable: IPersonaFontTable = {\n size8: { fontSize: 0 },\n size24: { fontSize: 0 },\n size32: { fontSize: 0 },\n size40: { fontSize: 0 },\n size48: { fontSize: 0 },\n size56: { fontSize: 0 },\n size72: { fontSize: 0 },\n size100: { fontSize: 'secondary' },\n size120: { fontSize: 'secondary' },\n};\n\nexport function getTextFont(size: PersonaSize): FontTokens {\n return textFontTable[size];\n}\n\nexport function getSecondaryFont(size: PersonaSize): FontTokens {\n return secondaryFontTable[size];\n}\n\nexport function getTertiaryFont(size: PersonaSize): FontTokens {\n return tertiaryFontTable[size];\n}\n\nexport function getOptionalFont(size: PersonaSize): FontTokens {\n return optionalFontTable[size];\n}\n\nconst horizontalGapTable: { [P in PersonaSize]: number } = {\n size8: 17,\n size24: 8,\n size32: 8,\n size40: 12,\n size48: 12,\n size56: 16,\n size72: 16,\n size100: 16,\n size120: 16,\n};\n\nexport function getHorizontalGap(size: PersonaSize | undefined): number {\n return horizontalGapTable[size || 'size40'];\n}\n", "import type { ViewStyle } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { getHorizontalGap } from './Persona.helpers';\nimport type { IPersonaTokens } from './Persona.types';\n\nconst _stackKeyProps: (keyof IPersonaTokens)[] = ['size', 'horizontalGap'];\n\nfunction _buildStackStyle(tokenProps: IPersonaTokens): IViewProps {\n const { size, horizontalGap } = tokenProps;\n\n const stackStyle: ViewStyle = {\n flexDirection: 'column',\n justifyContent: 'space-around',\n paddingLeft: horizontalGap || getHorizontalGap(size),\n };\n\n return { style: stackStyle };\n}\n\nexport const buildStackStyle = styleFunction(_buildStackStyle, _stackKeyProps);\n", "import type { TextStyle } from 'react-native';\n\nimport type { ITextProps } from '@fluentui-react-native/adapters';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport type { PersonaSize } from '@fluentui-react-native/persona-coin';\nimport type { FontTokens } from '@fluentui-react-native/tokens';\nimport { styleFunction } from '@uifabricshared/foundation-tokens';\n\nimport { getTextFont, getSecondaryFont, getTertiaryFont, getOptionalFont } from './Persona.helpers';\nimport type { IPersonaTokens } from './Persona.types';\n\nfunction buildTextStyleHelper(\n verticalGap: number | undefined,\n size: PersonaSize | undefined,\n getFontAttributes: (size: PersonaSize) => FontTokens,\n fontTokens: FontTokens | undefined,\n theme: Theme,\n) {\n const textStyle: TextStyle = {};\n\n if (verticalGap !== undefined) {\n textStyle.marginBottom = verticalGap;\n }\n\n const { fontFamily, fontSize, fontWeight } = fontTokens || getFontAttributes(size || 'size40');\n textStyle.fontFamily = fontFamily && (theme.typography.families[fontFamily] || fontFamily);\n textStyle.fontSize = fontSize && (typeof fontSize === 'string' ? theme.typography.sizes[fontSize] : fontSize);\n textStyle.fontWeight = fontWeight && (theme.typography.weights[fontWeight] || fontWeight);\n\n if (textStyle.fontSize === 0) {\n textStyle.display = 'none';\n textStyle.fontSize = undefined;\n }\n\n return textStyle;\n}\n\nfunction _buildTextStyle(tokenProps: IPersonaTokens, theme: Theme): ITextProps {\n const { verticalGap, textFont, size } = tokenProps;\n return { style: buildTextStyleHelper(verticalGap, size, getTextFont, textFont, theme) };\n}\n\nfunction _buildSecondaryStyle(tokenProps: IPersonaTokens, theme: Theme): ITextProps {\n const { verticalGap, secondaryFont, size } = tokenProps;\n return { style: buildTextStyleHelper(verticalGap, size, getSecondaryFont, secondaryFont, theme) };\n}\n\nfunction _buildTertiaryStyle(tokenProps: IPersonaTokens, theme: Theme): ITextProps {\n const { verticalGap, tertiaryFont, size } = tokenProps;\n return { style: buildTextStyleHelper(verticalGap, size, getTertiaryFont, tertiaryFont, theme) };\n}\n\nfunction _buildOptionalStyle(tokenProps: IPersonaTokens, theme: Theme): ITextProps {\n const { optionalFont, size } = tokenProps;\n return { style: buildTextStyleHelper(undefined, size, getOptionalFont, optionalFont, theme) };\n}\n\nexport const buildTextStyle = styleFunction(_buildTextStyle, ['size', 'textFont', 'verticalGap']);\nexport const buildSecondaryStyle = styleFunction(_buildSecondaryStyle, [\n 'size',\n 'secondaryFont',\n 'verticalGap',\n]);\nexport const buildTertiaryStyle = styleFunction(_buildTertiaryStyle, [\n 'size',\n 'tertiaryFont',\n 'verticalGap',\n]);\nexport const buildOptionalStyle = styleFunction(_buildOptionalStyle, ['size', 'optionalFont']);\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport { View, Text } from 'react-native';\n\nimport { filterViewProps } from '@fluentui-react-native/adapters';\nimport { PersonaCoin } from '@fluentui-react-native/persona-coin';\nimport { foregroundColorTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots, IRenderData } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './Persona.settings';\nimport { buildCoinStyle } from './Persona.tokens.coin';\nimport { buildRootStyle } from './Persona.tokens.root';\nimport { buildStackStyle } from './Persona.tokens.stack';\nimport { buildTextStyle, buildTertiaryStyle, buildOptionalStyle, buildSecondaryStyle } from './Persona.tokens.texts';\nimport { personaName } from './Persona.types';\nimport type { IPersonaType, IPersonaSlotProps, IPersonaProps, IPersonaRenderData } from './Persona.types';\n\nfunction usePrepareForProps(props: IPersonaProps, useStyling: IUseComposeStyling): IRenderData {\n const {\n text,\n secondaryText,\n tertiaryText,\n optionalText,\n size,\n coinColor,\n imageUrl,\n imageDescription,\n initials,\n presence,\n isOutOfOffice,\n ...rootProps\n } = props;\n\n const slotProps = mergeSettings(useStyling(props), {\n root: { ...rootProps },\n coin: { size, coinColor, imageUrl, imageDescription, initials, presence, isOutOfOffice },\n });\n\n return {\n slotProps,\n state: {\n text,\n secondaryText,\n tertiaryText,\n optionalText,\n },\n };\n}\n\nconst render = (Slots: ISlots, renderData: IPersonaRenderData): JSX.Element | null => {\n if (!renderData.state) {\n return null;\n }\n const { text, secondaryText, tertiaryText, optionalText } = renderData.state;\n\n return (\n \n \n \n {!!text && {text}}\n {!!secondaryText && {secondaryText}}\n {!!tertiaryText && {tertiaryText}}\n {!!optionalText && {optionalText}}\n \n \n );\n};\n\nexport const Persona = compose({\n displayName: personaName,\n settings: settings,\n render: render,\n usePrepareProps: usePrepareForProps,\n slots: {\n root: {\n slotType: View,\n filter: filterViewProps,\n },\n coin: PersonaCoin,\n stack: View,\n text: Text,\n secondary: Text,\n tertiary: Text,\n optional: Text,\n },\n styles: {\n root: [buildRootStyle],\n coin: [foregroundColorTokens, { source: 'coinBackgroundColor', target: 'backgroundColor' }, buildCoinStyle],\n text: [buildTextStyle],\n secondary: [buildSecondaryStyle],\n tertiary: [buildTertiaryStyle],\n optional: [buildOptionalStyle],\n stack: [buildStackStyle],\n },\n});\n", "export { Persona } from './Persona';\nexport { personaName } from './Persona.types';\nexport type { IPersonaProps, IPersonaRenderData, IPersonaSlotProps, IPersonaState, IPersonaTokens, IPersonaType } from './Persona.types';\n", "/**\n * This is primarily a fork of React Native's Touchable Mixin.\n * It has been repurposed as it's own standalone control for win32,\n * as it needs to support a richer set of functionality on the desktop.\n * The touchable variants can be rewritten as wrappers around TouchableWin32\n * by passing the correct set of props down and managing state correctly.\n *\n * React Native's Touchable.js file (https://github.com/facebook/react-native/blob/master/Libraries/Components/Touchable/Touchable.js)\n * provides an overview over how touchables work and interact with the gesture responder system.\n */\n'use strict';\n\nimport { View } from 'react-native';\n\nimport { useAsPressable } from '@fluentui-react-native/interactive-hooks';\nimport type { IUseStyling } from '@uifabricshared/foundation-composable';\nimport { composable } from '@uifabricshared/foundation-composable';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport type { IPressableProps, IPressableType } from './Pressable.props';\n\nexport const Pressable = composable({\n slots: { root: View },\n usePrepareProps: (userProps: IPressableProps, useStyling: IUseStyling) => {\n const { renderStyle, ...rest } = userProps;\n const { props, state } = useAsPressable(rest);\n const styleProps = useStyling(props);\n renderStyle && (props.style = renderStyle(state));\n return {\n slotProps: mergeSettings(styleProps, { root: props }),\n state: { state },\n };\n },\n});\n\nexport default Pressable;\n", "export type { IChildAsFunction, IPressableProps, IPressableType, IRenderChild, IRenderStyle } from './Pressable.props';\nexport { Pressable } from './Pressable';\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport type { BubblingEventHandler } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nexport interface NativeProps extends ViewProps {\n content?: string;\n disabled?: boolean;\n buttonKey?: string;\n selected?: boolean;\n onPress?: BubblingEventHandler;\n}\n\nexport default codegenNativeComponent('FRNRadioButtonView') as HostComponent;\n", "import type * as React from 'react';\nimport type { ViewProps } from 'react-native';\n\nimport type { IFocusable } from '@fluentui-react-native/interactive-hooks';\nimport type { IPressableProps } from '@fluentui-react-native/pressable';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IViewWin32Props } from '@office-iss/react-native-win32';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const radioButtonName = 'RadioButton';\n\nexport interface IRadioButtonProps extends IPressableProps {\n /**\n * The text string for the option\n */\n content: string;\n\n /**\n * A unique key-identifier for each option\n */\n buttonKey: string;\n\n /**\n * Whether or not the radio button is selectable\n */\n disabled?: boolean;\n\n /**\n * An optional string for the Narrator to read for each RadioButton. If not provided, this will be set to the button's content.\n * @deprecated Use accessibilityLabel instead.\n */\n ariaLabel?: string;\n\n /**\n * Defines the current radio button's position in the radio group for accessibility purposes. It's recommended to set this value\n * if radio buttons are not direct children of radio group. This value is auto-generated if radio buttons are direct children of\n * radio group.\n * @deprecated Use accessibilityPositionInSet instead.\n */\n ariaPosInSet?: number;\n\n /**\n * Defines the number of radio buttons in the group for accessibility purposes.It's recommended to set this value if radio\n * buttons are not direct children of radio group. This value is auto-generated if radio buttons are direct children of\n * radio group.\n * @deprecated Use accessibilitySetSize instead.\n */\n ariaSetSize?: number;\n\n /**\n * A RefObject to access the IFocusable interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n}\n\nexport interface IRadioButtonTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens {\n textBorderColor?: string;\n}\n\nexport interface IRadioButtonSlotProps {\n root: React.PropsWithRef;\n button: ViewProps;\n innerCircle: ViewProps;\n content: ITextProps;\n}\n\nexport type IRadioButtonRenderData = IRenderData;\n\nexport interface IRadioButtonType {\n props: IRadioButtonProps;\n tokens: IRadioButtonTokens;\n slotProps: IRadioButtonSlotProps;\n}\n", "import type * as React from 'react';\nimport type { ViewProps } from 'react-native';\n\nimport type { FocusZoneProps } from '@fluentui-react-native/focus-zone';\nimport type { ITextProps } from '@fluentui-react-native/text';\nimport type { IForegroundColorTokens, FontTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\n\nexport const radioGroupName = 'RadioGroup';\n\nexport interface IRadioGroupContext {\n /**\n * The currently selected RadioButton's key\n */\n selectedKey: string | null;\n\n /**\n * Updates the selected button and calls the client’s onChange callback\n */\n onChange?: (key: string) => void;\n\n /**\n * Updates the selected button's ref to set as the default tabbable element\n */\n updateSelectedButtonRef?: (ref: React.RefObject) => void;\n\n /**\n * Array of radio button keys in the group\n */\n buttonKeys?: string[];\n\n /**\n * Populate the buttonKeys array (all RadioButton keys) at mount and un-mount\n */\n addRadioButtonKey?: (value: string) => void;\n removeRadioButtonKey?: (value: string) => void;\n\n /**\n * Array of enabled Radio keys in the RadioGroup\n * @platform win32\n */\n enabledButtonKeys?: string[];\n\n /**\n * Populate the enabledButtonKeys array (only enabled/valid RadioButton keys) at mount and un-mount\n * @platform win32\n */\n addRadioButtonEnabledKey?: (value: string) => void;\n removeRadioButtonEnabledKey?: (value: string) => void;\n\n /**\n * Updates invoked to signal that arrow key has been pressed and focus needs to be set\n * @platform win32\n */\n updateInvoked?: (check: boolean) => void;\n\n /**\n * Signals whether arrow key has been pressed\n * @platform win32\n */\n invoked?: boolean;\n}\n\nexport interface IRadioGroupState {\n context: IRadioGroupContext;\n}\n\nexport type IRadioGroupProps = React.PropsWithChildren<{\n /**\n * Descriptive label for the RadioGroup. This will be displayed as the title of the radio group to the user.\n */\n label: string;\n\n /**\n * The key of the RadioButton that will initially be selected\n */\n defaultSelectedKey?: string;\n\n /**\n * A label for screen readers. If not provided, it will be set to the label of the radio group.\n * @deprecated Use accessibilityLabel instead.\n */\n ariaLabel?: string;\n\n /*\n ** An accessibility label for screen readers. If not provided, it will be set to the label of the radio group.\n */\n accessibilityLabel?: string;\n\n /**\n * The key of the selected option. If you provide this, you must maintain selection state by observing\n * onChange events and passing a new value in when changed. This overrides defaultSelectedKey\n * and makes the RadioGroup a controlled component.\n */\n selectedKey?: string;\n\n /**\n * Callback for receiving a notification when the choice has been changed\n */\n onChange?: (key: string) => void;\n\n testID?: string;\n}>;\n\nexport interface IRadioGroupTokens extends IForegroundColorTokens, FontTokens {}\n\nexport interface IRadioGroupSlotProps {\n root: React.PropsWithRef;\n label: ITextProps;\n container: FocusZoneProps;\n}\n\nexport type IRadioGroupRenderData = IRenderData;\n\nexport interface IRadioGroupType {\n props: IRadioGroupProps;\n tokens: IRadioGroupTokens;\n slotProps: IRadioGroupSlotProps;\n state: IRadioGroupState;\n}\n", "import type { IComposeSettings } from '@uifabricshared/foundation-compose';\n\nimport type { IRadioGroupType } from './RadioGroup.types';\nimport { radioGroupName } from './RadioGroup.types';\n\nexport const settings: IComposeSettings = [\n {\n tokens: {\n color: 'menuItemText',\n },\n root: {\n accessible: true,\n accessibilityRole: 'radio',\n style: {\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'column',\n },\n },\n label: {\n style: {\n fontSize: 16,\n fontWeight: '600',\n },\n },\n },\n radioGroupName,\n];\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View } from 'react-native';\n\nimport { FocusZone } from '@fluentui-react-native/focus-zone';\nimport { useSelectedKey } from '@fluentui-react-native/interactive-hooks';\nimport { Text } from '@fluentui-react-native/text';\nimport { foregroundColorTokens, textTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport { settings } from './RadioGroup.settings';\nimport type {\n IRadioGroupType,\n IRadioGroupProps,\n IRadioGroupState,\n IRadioGroupSlotProps,\n IRadioGroupRenderData,\n IRadioGroupContext,\n} from './RadioGroup.types';\nimport { radioGroupName } from './RadioGroup.types';\n\nexport const RadioGroupContext = React.createContext({\n selectedKey: null,\n onChange: (/* key: string */) => {\n return;\n },\n updateSelectedButtonRef: (/* ref: React.RefObject*/) => {\n return;\n },\n buttonKeys: [],\n});\n\nexport const RadioGroup = compose({\n displayName: radioGroupName,\n\n usePrepareProps: (userProps: IRadioGroupProps, useStyling: IUseComposeStyling) => {\n const { label, ariaLabel, accessibilityLabel, selectedKey, defaultSelectedKey, ...rest } = userProps;\n\n // This hook updates the Selected Button and calls the customer's onClick function. This gets called after a button is pressed.\n const data = useSelectedKey(selectedKey || defaultSelectedKey || null, userProps.onChange);\n\n const [selectedButtonRef, setSelectedButtonRef] = React.useState(React.useRef(null));\n\n const onSelectButtonRef = React.useCallback(\n (ref: React.RefObject) => {\n setSelectedButtonRef(ref);\n },\n [setSelectedButtonRef],\n );\n\n const [invoked, setInvoked] = React.useState(false);\n\n const onInvoked = React.useCallback(\n (check: boolean) => {\n setInvoked(check);\n },\n [setInvoked],\n );\n\n const [buttonKeys, setButtonKeys] = React.useState([]);\n\n const onAddRadioButtonKey = React.useCallback(\n (buttonKey: string) => {\n buttonKeys.push(buttonKey);\n setButtonKeys(buttonKeys);\n },\n [setButtonKeys],\n );\n\n const onRemoveRadioButtonKey = React.useCallback(\n (buttonKey: string) => {\n buttonKeys.filter((item) => item !== buttonKey);\n setButtonKeys(buttonKeys);\n },\n [setButtonKeys],\n );\n\n const [enabledButtonKeys, setEnabledButtonKeys] = React.useState([]);\n\n const onAddRadioButtonEnabledKey = React.useCallback(\n (buttonKey: string) => {\n enabledButtonKeys.push(buttonKey);\n setEnabledButtonKeys(enabledButtonKeys);\n },\n [setEnabledButtonKeys],\n );\n\n const onRemoveRadioButtonEnabledKey = React.useCallback(\n (buttonKey: string) => {\n enabledButtonKeys.filter((item) => item !== buttonKey);\n setEnabledButtonKeys(enabledButtonKeys);\n },\n [setEnabledButtonKeys],\n );\n\n const state: IRadioGroupState = {\n context: {\n selectedKey: selectedKey ?? data.selectedKey,\n onChange: data.onKeySelect,\n updateSelectedButtonRef: onSelectButtonRef,\n invoked: invoked,\n updateInvoked: onInvoked,\n buttonKeys: buttonKeys,\n enabledButtonKeys: enabledButtonKeys,\n addRadioButtonKey: onAddRadioButtonKey,\n removeRadioButtonKey: onRemoveRadioButtonKey,\n addRadioButtonEnabledKey: onAddRadioButtonEnabledKey,\n removeRadioButtonEnabledKey: onRemoveRadioButtonEnabledKey,\n },\n };\n\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n\n const slotProps = mergeSettings(styleProps, {\n root: { accessibilityLabel: accessibilityLabel ?? ariaLabel ?? label, accessibilityRole: 'radiogroup', ...rest },\n label: { children: label },\n container: { isCircularNavigation: true, defaultTabbableElement: selectedButtonRef },\n });\n\n return { slotProps, state };\n },\n\n render: (Slots: ISlots, renderData: IRadioGroupRenderData, ...children: React.ReactNode[]) => {\n if (renderData.state == undefined) {\n return null;\n }\n\n return (\n \n \n \n {children}\n \n \n );\n },\n\n settings,\n slots: {\n root: View,\n label: Text,\n container: FocusZone,\n },\n styles: {\n root: [],\n label: [foregroundColorTokens, textTokens],\n container: [],\n },\n});\n\nexport default RadioGroup;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\n\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport NativeRadioButtonView from './MacOSRadioButtonNativeComponent';\nimport type { IRadioButtonProps, IRadioButtonSlotProps, IRadioButtonType } from './RadioButton.types';\nimport { radioButtonName } from './RadioButton.types';\nimport { RadioGroupContext } from './RadioGroup';\n\nexport const RadioButton = compose({\n displayName: radioButtonName,\n usePrepareProps: (userProps: IRadioButtonProps, useStyling: IUseComposeStyling) => {\n const defaultComponentRef = React.useRef(null);\n const { content, buttonKey, disabled, componentRef = defaultComponentRef } = userProps;\n const info = React.useContext(RadioGroupContext);\n\n // Reroute the native component's onPress event to RadioGroup's onChange\n const onPressRerouted = () => {\n // Prevent calls to RadioGroup's onChange on the currently selected button\n if (buttonKey != info.selectedKey) {\n info.onChange && info.onChange(buttonKey);\n info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);\n }\n };\n\n /* We use the componentRef of the currently selected button to maintain the default tabbable\n element in a RadioGroup. Since the componentRef isn't generated until after initial render,\n we must update it once here. */\n React.useEffect(() => {\n if (buttonKey === info.selectedKey) {\n info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);\n }\n }, []);\n\n const styleProps = useStyling(userProps);\n const isSelected = info.selectedKey === buttonKey;\n const slotProps = mergeSettings(styleProps, {\n root: {\n ref: componentRef,\n buttonKey: buttonKey,\n content: content,\n disabled: disabled,\n onPress: onPressRerouted,\n selected: isSelected,\n style: {\n minWidth: '100%',\n minHeight: 20,\n },\n },\n });\n\n return { slotProps };\n },\n slots: {\n root: NativeRadioButtonView,\n },\n styles: {\n root: [],\n },\n render: (Slots: ISlots) => {\n return ;\n },\n});\n\nexport default RadioButton;\n", "export { RadioGroup as RadioGroupV1 } from './RadioGroup/RadioGroup';\nexport type {\n RadioGroupInfo,\n RadioGroupProps,\n RadioGroupSlotProps,\n RadioGroupState,\n RadioGroupTokens,\n RadioGroupType,\n} from './RadioGroup/RadioGroup.types';\nexport { radioGroupName as radioGroupNameV1 } from './RadioGroup/RadioGroup.types';\nexport type { RadioGroupContextValue } from './RadioGroup/radioGroupContext';\nexport { RadioGroupContext as RadioGroupContextV1, RadioGroupProvider, useRadioGroupContext } from './RadioGroup/radioGroupContext';\nexport { useRadioGroup } from './RadioGroup/useRadioGroup';\nexport { useRadioGroupContextValue } from './RadioGroup/useRadioGroupContextValue';\nexport { Radio, radioLookup } from './Radio/Radio';\nexport type { RadioProps, RadioSlotProps, RadioInfo, RadioTokens, RadioType } from './Radio/Radio.types';\nexport { radioName } from './Radio/Radio.types';\nexport { useRadio } from './Radio/useRadio';\n\nexport { RadioButton } from './legacy/RadioButton';\nexport { radioButtonName } from './legacy/RadioButton.types';\nexport type {\n IRadioButtonProps,\n IRadioButtonRenderData,\n IRadioButtonSlotProps,\n IRadioButtonTokens,\n IRadioButtonType,\n} from './legacy/RadioButton.types';\nexport { RadioGroup, RadioGroupContext } from './legacy/RadioGroup';\nexport { radioGroupName } from './legacy/RadioGroup.types';\nexport type {\n IRadioGroupContext,\n IRadioGroupProps,\n IRadioGroupRenderData,\n IRadioGroupSlotProps,\n IRadioGroupState,\n IRadioGroupTokens,\n IRadioGroupType,\n} from './legacy/RadioGroup.types';\n", "import type { ViewProps, ColorValue } from 'react-native';\n\nexport const separatorName = 'Separator';\n\nexport const SeparatorInsetSpacings = [0, 16, 56, 68, 72, 108] as const;\n\nexport type SeparatorInsetSpacing = (typeof SeparatorInsetSpacings)[number];\n\nexport interface SeparatorPropTokens {\n /**\n * Specifies whether the separator is vertical or horizontal. If true, then it's vertical.\n * @defaultValue 'false'\n */\n vertical?: boolean;\n\n /**\n * Inset Spacing in 'dp' (density-independent pixels) on Android and 'points' on iOS.\n *\n * Inset Spacing is restricted to a limited set of supported values recommended for most uses (see `SeparatorInsetSpacing`) and\n * based on design guidelines for the Separator control.\n * @platform Android iOS\n * @defaultvalue 0\n */\n insetSpacing?: SeparatorInsetSpacing;\n}\n\nexport interface SeparatorTokens extends SeparatorPropTokens {\n /**\n * Specifies the width of the separator. This will be interpreted as DIPs on Windows and Android, but as points on Mac and iOS.\n * @defaultValue 1\n */\n separatorWidth?: number;\n\n /**\n * Specifies the color of the separator\n */\n color?: ColorValue;\n}\n\nexport interface SeparatorProps extends ViewProps, SeparatorPropTokens {\n /**\n * Specifies where the text or image should be aligned in the separator, when the separator has a text or image label.\n * @defaultValue 'center'\n * Not yet supported\n */\n // alignContent?: 'start' | 'center' | 'end';\n}\n\nexport interface SeperatorSlotProps {\n root: ViewProps;\n}\n\nexport interface SeparatorType {\n props: SeparatorProps;\n slotProps: SeperatorSlotProps;\n tokens: SeparatorTokens;\n}\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport { globalTokens } from '@fluentui-react-native/theme-tokens';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { SeparatorTokens } from './Separator.types';\n\nexport const defaultSeparatorTokens: TokenSettings = () =>\n ({\n separatorWidth: globalTokens.stroke.width10,\n } as SeparatorTokens);\n", "import { Platform } from 'react-native';\n\nimport type { UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps } from '@fluentui-react-native/framework';\n\nimport type { SeparatorProps, SeparatorPropTokens, SeparatorTokens, SeperatorSlotProps } from './Separator.types';\nimport { separatorName } from './Separator.types';\nimport { defaultSeparatorTokens } from './SeparatorTokens';\n\nconst isMobile = Platform.OS === 'android' || Platform.OS === 'ios';\nconst tokensThatAreAlsoProps: (keyof SeparatorPropTokens)[] = ['vertical', 'insetSpacing'];\nexport const stylingSettings: UseStylingOptions = {\n tokens: [defaultSeparatorTokens, separatorName],\n tokensThatAreAlsoProps,\n slotProps: {\n root: buildProps(\n (tokens: SeparatorTokens) => {\n return {\n style: {\n ...(tokens.vertical ? { borderLeftWidth: tokens.separatorWidth } : { borderTopWidth: tokens.separatorWidth }),\n ...(tokens.color && { borderColor: tokens.color }),\n ...(isMobile && { marginStart: tokens.insetSpacing }),\n },\n };\n },\n ['color', 'vertical', 'separatorWidth', 'insetSpacing'],\n ),\n },\n};\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport { View } from 'react-native';\n\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, withSlots, mergeProps } from '@fluentui-react-native/framework';\n\nimport { stylingSettings } from './Separator.styling';\nimport type { SeparatorProps, SeparatorType } from './Separator.types';\nimport { separatorName } from './Separator.types';\n\nconst propMask = { vertical: undefined };\n\nexport const Separator = compose({\n displayName: separatorName,\n ...stylingSettings,\n slots: { root: View },\n useRender: (props: SeparatorProps, useSlots: UseSlots) => {\n const Root = useSlots(props).root;\n return (rest: SeparatorProps, children: React.ReactNode) => {children};\n },\n});\n\nexport default Separator;\n", "export type { SeparatorProps, SeparatorTokens, SeparatorType } from './Separator.types';\nexport { separatorName } from './Separator.types';\nexport { Separator } from './Separator';\n", "import type { ButtonProps } from '@fluentui-react-native/button';\nimport type { ContextualMenuItemProps, ContextualMenuProps, SubmenuProps } from '@fluentui-react-native/contextual-menu';\nimport type { IconSourcesType } from '@fluentui-react-native/icon';\nimport type { FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens } from '@fluentui-react-native/tokens';\nimport type { IRenderData } from '@uifabricshared/foundation-composable';\nimport type { XmlProps } from 'react-native-svg';\n\nexport const MenuButtonName = 'MenuButton';\n\nexport interface MenuButtonContext {\n showContextualMenu?: boolean;\n primary?: boolean;\n}\n\nexport interface MenuButtonState {\n context: MenuButtonContext;\n}\n\nexport interface MenuButtonTokens extends FontTokens, IForegroundColorTokens, IBackgroundColorTokens, IBorderTokens {}\n\nexport interface MenuButtonItemProps extends ContextualMenuItemProps {\n hasSubmenu?: boolean;\n submenuItems?: ContextualMenuItemProps[];\n submenuProps?: SubmenuProps;\n showSubmenu?: boolean;\n}\n\nexport interface MenuButtonProps extends Omit {\n startIcon?: IconSourcesType;\n endIcon?: IconSourcesType;\n content?: string;\n menuItems?: MenuButtonItemProps[];\n onItemClick?: (key: string) => void;\n contextualMenu?: ContextualMenuProps;\n primary?: boolean;\n}\n\nexport type MenuButtonSlotProps = {\n root: MenuButtonProps;\n button: ButtonProps & MenuButtonTokens & { content?: string };\n primaryButton: ButtonProps & MenuButtonTokens & { content?: string };\n contextualMenu: React.PropsWithRef;\n contextualMenuItems: React.PropsWithChildren>;\n contextualMenuItem: MenuButtonItemProps;\n chevronSvg: XmlProps;\n};\n\nexport type MenuButtonRenderData = IRenderData;\n\nexport interface MenuButtonType {\n props: MenuButtonProps;\n slotProps: MenuButtonSlotProps;\n state: MenuButtonState;\n tokens: MenuButtonTokens;\n}\n", "module.exports = OfficePlatformGlobal.ReactNative.resolveAssetSource", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport type { HostComponent, ViewProps } from 'react-native';\n\nimport type { BubblingEventHandler, Int32 } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nimport type { ImageSource, UnsafeMixed } from './codegenTypes';\n\n/*\ninterface MenuItem {\n title?: string;\n image?: UnsafeMixed;\n enabled?: boolean;\n identifier?: string;\n hasSubmenu?: boolean;\n submenu: MenuItem[];\n}\n*/\n\nexport interface NativeProps extends ViewProps {\n content?: string;\n image?: ImageSource;\n enabled?: boolean;\n menu?: UnsafeMixed;\n\n onItemClick?: BubblingEventHandler<{ key: string }>;\n onSubmenuItemClick?: BubblingEventHandler<{ index: Int32; key: string }>;\n}\n\nexport default codegenNativeComponent('FRNMenuButton') as HostComponent;\n", "/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport { Image } from 'react-native';\nimport type { ImageResolvedAssetSource } from 'react-native';\n\nimport type { IconProps } from '@fluentui-react-native/icon';\nimport { createIconProps } from '@fluentui-react-native/icon';\nimport { backgroundColorTokens, borderTokens } from '@fluentui-react-native/tokens';\nimport type { ISlots } from '@uifabricshared/foundation-composable';\nimport { withSlots } from '@uifabricshared/foundation-composable';\nimport type { IUseComposeStyling } from '@uifabricshared/foundation-compose';\nimport { compose } from '@uifabricshared/foundation-compose';\nimport { mergeSettings } from '@uifabricshared/foundation-settings';\n\nimport NativeMenuButton from './MacOSMenuButtonNativeComponent';\nimport type {\n MenuButtonProps,\n MenuButtonSlotProps,\n MenuButtonType,\n MenuButtonRenderData,\n MenuButtonState,\n MenuButtonItemProps,\n} from './MenuButton.types';\nimport { MenuButtonName } from './MenuButton.types';\n\n// Represents the props available on a native NSMenuItem\n// https://developer.apple.com/documentation/appkit/nsmenuitem\ntype NativeMenuItem = {\n title: string;\n image: ImageResolvedAssetSource;\n enabled: boolean;\n tooltip: string;\n identifier: string;\n hasSubmenu: boolean;\n submenu: NativeMenuItem[];\n};\n\nexport const MenuButton = compose({\n displayName: MenuButtonName,\n usePrepareProps: (userProps: MenuButtonProps, useStyling: IUseComposeStyling) => {\n const { content, menuItems, tooltip, startIcon, disabled, onItemClick, style } = userProps;\n\n function extractResolvedImageSourceFromIcon(icon?: number | string | IconProps): ImageResolvedAssetSource {\n if (!icon) {\n return null;\n }\n // GH #931, only PNG images are supported on the macOS MenuButton\n const iconProps = createIconProps(icon);\n const imageSource = Image.resolveAssetSource(iconProps?.rasterImageSource?.src);\n return imageSource;\n }\n\n const imageSource = extractResolvedImageSourceFromIcon(startIcon);\n\n // reroute the native component's OnItemClick event to MenuButtons's onItemClick\n const OnItemClickRerouted = (event: any) => {\n if (onItemClick != null) {\n onItemClick(event.nativeEvent.key);\n }\n };\n\n // reroute the native component's onSubmenuItemClick event to each MenuButtonItem's onItemClick\n const OnSubmenuItemClickRerouted = (event: any) => {\n // Grab the index of the menu item that hosts the submenu to look up the correct callback\n const menuItemIndex = event.nativeEvent.index;\n\n const onSubmenuItemClick = menuItems[menuItemIndex].submenuProps?.onItemClick;\n if (onSubmenuItemClick != null) {\n onSubmenuItemClick(event.nativeEvent.key);\n }\n };\n\n // Transform the menuItem props to match the native props of NSMenuItem\n function transformMenuItems(menuItems: MenuButtonItemProps[]): NativeMenuItem[] {\n const nativeMenuItems: NativeMenuItem[] = [];\n menuItems.forEach((item) => {\n const imageSource = extractResolvedImageSourceFromIcon(item.icon);\n\n // Recursively parse submenus\n const submenu = item.hasSubmenu ? transformMenuItems(item.submenuItems) : null;\n\n const transformedItem: NativeMenuItem = {\n title: item.text,\n ...(imageSource && { image: imageSource }), // Only pass in the prop if defined\n enabled: !item.disabled,\n tooltip: item.title,\n identifier: item.itemKey,\n hasSubmenu: item.hasSubmenu,\n submenu: submenu,\n };\n nativeMenuItems.push(transformedItem);\n });\n return nativeMenuItems;\n }\n\n // Default style if none from user props\n const rootStyleProp = style ?? {\n width: 160,\n height: 32,\n };\n\n const styleProps = useStyling(userProps, (override: string) => state[override] || userProps[override]);\n\n const slotProps = mergeSettings(styleProps, {\n root: {\n content: content,\n enabled: !disabled,\n ...(imageSource && { image: imageSource }), // Only pass in the prop if defined\n tooltip: tooltip,\n menu: transformMenuItems(menuItems),\n onItemClick: OnItemClickRerouted,\n onSubmenuItemClick: OnSubmenuItemClickRerouted,\n style: rootStyleProp,\n },\n });\n\n const state: MenuButtonState = {\n context: {},\n };\n\n return { slotProps, state };\n },\n slots: {\n root: NativeMenuButton,\n },\n styles: {\n contextualMenu: [backgroundColorTokens, borderTokens],\n button: [backgroundColorTokens, borderTokens],\n },\n render: (Slots: ISlots, renderData: MenuButtonRenderData) => {\n if (!(renderData.state && renderData.slotProps)) {\n return null;\n }\n return ;\n },\n});\n\nexport default MenuButton;\n", "export { MenuButtonName } from './MenuButton.types';\nexport type {\n MenuButtonContext,\n MenuButtonItemProps,\n MenuButtonProps,\n MenuButtonRenderData,\n MenuButtonSlotProps,\n MenuButtonState,\n MenuButtonTokens,\n MenuButtonType,\n} from './MenuButton.types';\nexport { MenuButton } from './MenuButton';\n", "import type * as React from 'react';\nimport type { ViewStyle, ColorValue } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { IconPropsV1 as IconProps } from '@fluentui-react-native/icon';\nimport type { IFocusable, PressableState, PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';\nimport type { TextProps } from '@fluentui-react-native/text';\nimport type {\n FontTokens,\n IBackgroundColorTokens,\n IBorderTokens,\n IForegroundColorTokens,\n LayoutTokens,\n} from '@fluentui-react-native/tokens';\n\nexport const tabName = 'Tab';\n\nexport interface TabTokens extends FontTokens, IBorderTokens, IForegroundColorTokens, IBackgroundColorTokens, LayoutTokens {\n /**\n * Horizontal start margin of the tab text. If an icon and text are both rendered, this is the margin beween the icon and text.\n */\n contentMarginStart?: number;\n\n /**\n * Horizontal end margin of the tab text.\n */\n contentMarginEnd?: number;\n\n /**\n * Controls order and direction of tab content and indicator.\n */\n flexDirection?: ViewStyle['flexDirection'];\n\n /**\n * The indicator color.\n */\n indicatorColor?: ColorValue;\n\n /**\n * The horizontal / vertical margin of the indicator, depending on its orientation.\n */\n indicatorMargin?: number;\n\n /**\n * The direction the indicator is laying.\n */\n indicatorOrientation?: 'horizontal' | 'vertical';\n\n /**\n * Border radius of the indicator.\n */\n indicatorRadius?: number;\n\n /**\n * Thickness of the indicator line.\n */\n indicatorThickness?: number;\n\n /**\n * The icon color.\n */\n iconColor?: string;\n\n /**\n * The size of the icon.\n */\n iconSize?: number;\n\n /**\n * Horizontal margin of the icon + content.\n */\n stackMarginHorizontal?: number;\n\n /**\n * Vertical margin of the icon + content.\n */\n stackMarginVertical?: number;\n\n /**\n * Controls the max # of lines rendered in the Text component. Set to 0 for no limit.\n */\n numberOfLines?: number;\n\n /**\n * States that can be applied to a button\n */\n small?: TabTokens;\n medium?: TabTokens;\n large?: TabTokens;\n vertical?: TabTokens;\n transparent?: TabTokens;\n subtle?: TabTokens;\n hovered?: TabTokens;\n focused?: TabTokens;\n pressed?: TabTokens;\n disabled?: TabTokens;\n selected?: TabTokens;\n hasIcon?: TabTokens;\n}\n\nexport interface TabProps extends Omit {\n /**\n * A unique key-identifier for each option\n */\n tabKey: string;\n\n /**\n * Whether or not the tab is selectable\n */\n disabled?: boolean;\n\n /**\n * Source URL or name of the icon to show on the Button.\n */\n icon?: IconProps;\n\n /**\n * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.\n */\n componentRef?: React.RefObject;\n\n testID?: string;\n}\n\nexport interface TabState extends PressableState {\n selected?: boolean;\n}\n\nexport interface TabInfo {\n props: TabProps & React.ComponentPropsWithRef;\n state: TabState;\n}\n\nexport interface TabSlotProps {\n root: React.PropsWithRef;\n icon: IconProps;\n stack: IViewProps;\n indicatorContainer: IViewProps;\n indicator: IViewProps;\n contentContainer: IViewProps;\n content: TextProps;\n}\n\nexport interface TabType {\n props: TabProps;\n tokens: TabTokens;\n slotProps: TabSlotProps;\n state: TabState;\n}\n", "import React from 'react';\nimport { Platform } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport { borderStyles, fontStyles } from '@fluentui-react-native/framework';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport type { IconPropsV1 as IconProps } from '@fluentui-react-native/icon';\nimport type { PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';\nimport type { TextProps } from '@fluentui-react-native/text';\n\nimport type { TabProps, TabSlotProps, TabTokens } from './Tab.types';\nimport type { TabListState } from '../TabList/TabList.types';\n\n/**\n * Hook to get the style props for each Tab slot.\n */\nexport const useTabSlotProps = (props: TabProps, tokens: TabTokens, theme: Theme, context: TabListState): TabSlotProps => {\n const { canShowAnimatedIndicator, selectedKey, vertical } = context;\n\n // Get each slot's props using our final tokens\n const root = React.useMemo(\n () => ({\n style: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: tokens.flexDirection,\n alignSelf: 'flex-start',\n justifyContent: 'center',\n padding: 1,\n backgroundColor: tokens.backgroundColor,\n ...(!vertical ? Platform.select({ macos: {}, default: { height: '100%' } }) : {}),\n ...borderStyles.from(tokens, theme),\n },\n }),\n [tokens, theme, vertical],\n );\n\n const contentContainer = React.useMemo(\n () => ({\n style: {\n flexDirection: 'row',\n paddingStart: tokens.contentMarginStart,\n paddingEnd: tokens.contentMarginEnd,\n },\n }),\n [tokens.contentMarginStart, tokens.contentMarginEnd],\n );\n\n const content = React.useMemo(\n () => ({\n numberOfLines: tokens.numberOfLines,\n style: {\n color: tokens.color,\n ...fontStyles.from(tokens, theme),\n },\n }),\n [tokens, theme],\n );\n\n const icon = React.useMemo(() => {\n if (props.icon) {\n return { ...props.icon, color: tokens.iconColor, size: tokens.iconSize };\n }\n return {};\n }, [props.icon, tokens.iconColor, tokens.iconSize]);\n\n const stack = React.useMemo(\n () => ({\n style: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n flex: 0,\n alignSelf: 'flex-start',\n justifyContent: 'center',\n marginHorizontal: tokens.stackMarginHorizontal,\n marginVertical: tokens.stackMarginVertical,\n },\n }),\n [tokens.stackMarginHorizontal, tokens.stackMarginVertical],\n );\n\n const indicatorContainer = React.useMemo(\n () => ({\n style: {\n backgroundColor: theme.colors.transparentBackground,\n ...(vertical\n ? {\n height: '100%',\n width: tokens.indicatorThickness,\n paddingVertical: tokens.indicatorMargin,\n }\n : {\n width: '100%',\n height: tokens.indicatorThickness,\n paddingHorizontal: tokens.indicatorMargin,\n }),\n },\n }),\n [vertical, tokens.indicatorThickness, tokens.indicatorMargin, theme],\n );\n\n const indicator = React.useMemo(\n // if we're the selected tab and we've generated styles for the animated indicator, render the static tab indicator as transparent.\n // The animated indicator will receive styling instead via useTabAnimation hook.\n () => {\n const hideStaticIndicator = props.tabKey === selectedKey && canShowAnimatedIndicator;\n return {\n style: {\n flex: 1,\n borderRadius: tokens.indicatorRadius,\n backgroundColor: hideStaticIndicator ? theme.colors.transparentBackground : tokens.indicatorColor,\n },\n };\n },\n [canShowAnimatedIndicator, props.tabKey, selectedKey, tokens.indicatorColor, tokens.indicatorRadius, theme],\n );\n\n return { root, contentContainer, content, icon, stack, indicatorContainer, indicator };\n};\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { TabTokens } from '..';\n\nexport const tabStates: (keyof TabTokens)[] = [\n 'small',\n 'medium',\n 'large',\n 'vertical',\n 'hovered',\n 'disabled',\n 'selected',\n 'focused',\n 'pressed',\n 'transparent',\n 'subtle',\n 'hasIcon',\n];\n\nexport const defaultTabColorTokens: TokenSettings = (t: Theme) =>\n ({\n borderColor: t.colors.transparentBackground,\n color: t.colors.neutralForeground2,\n iconColor: t.colors.neutralForeground2,\n indicatorColor: t.colors.transparentBackground,\n transparent: {\n backgroundColor: t.colors.transparentBackground,\n },\n subtle: {\n backgroundColor: t.colors.subtleBackground,\n },\n selected: {\n color: t.colors.neutralForeground1,\n iconColor: t.colors.compoundBrandForeground1,\n indicatorColor: t.colors.compoundBrandStroke1,\n pressed: {\n color: t.colors.neutralForeground1Pressed,\n iconColor: t.colors.compoundBrandForeground1Pressed,\n indicatorColor: t.colors.compoundBrandStroke1Pressed,\n },\n },\n disabled: {\n color: t.colors.neutralForegroundDisabled,\n iconColor: t.colors.neutralForegroundDisabled,\n selected: {\n color: t.colors.neutralForegroundDisabled,\n iconColor: t.colors.neutralForegroundDisabled,\n indicatorColor: t.colors.neutralForegroundDisabled,\n },\n },\n hovered: {\n color: t.colors.neutralForeground2Hover,\n iconColor: t.colors.neutralForeground2Hover,\n indicatorColor: t.colors.neutralStroke1Hover,\n selected: {\n color: t.colors.neutralForeground1Hover,\n iconColor: t.colors.compoundBrandForeground1Hover,\n indicatorColor: t.colors.compoundBrandStroke1Hover,\n subtle: {\n indicatorColor: t.colors.compoundBrandStroke1Hover,\n },\n },\n disabled: {\n indicatorColor: t.colors.transparentBackground,\n },\n transparent: {\n backgroundColor: t.colors.transparentBackgroundHover,\n },\n subtle: {\n backgroundColor: t.colors.subtleBackgroundHover,\n indicatorColor: t.colors.neutralStroke1Hover,\n },\n },\n pressed: {\n color: t.colors.neutralForeground2Pressed,\n iconColor: t.colors.neutralForeground2Pressed,\n indicatorColor: t.colors.neutralStroke1Pressed,\n transparent: {\n backgroundColor: t.colors.transparentBackgroundPressed,\n },\n subtle: {\n backgroundColor: t.colors.subtleBackgroundPressed,\n },\n },\n focused: {\n borderColor: t.colors.neutralForeground1,\n },\n } as TabTokens);\n", "import { buildUseTokens } from '@fluentui-react-native/framework';\nimport type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { TabTokens } from './Tab.types';\nimport { tabName } from './Tab.types';\nimport { defaultTabColorTokens } from './TabColorTokens';\n\nexport const tabStates: (keyof TabTokens)[] = [\n 'small',\n 'medium',\n 'large',\n 'vertical',\n 'hovered',\n 'disabled',\n 'selected',\n 'focused',\n 'pressed',\n 'transparent',\n 'subtle',\n 'hasIcon',\n];\n\nexport const defaultTabTokens: TokenSettings = {\n indicatorOrientation: 'horizontal',\n indicatorThickness: 2,\n borderWidth: 2,\n borderRadius: 4,\n contentMarginStart: 2,\n contentMarginEnd: 2,\n flexDirection: 'column',\n indicatorRadius: 99,\n numberOfLines: 1,\n small: {\n iconSize: 20,\n iconMargin: 2,\n indicatorMargin: 8,\n stackMarginHorizontal: 6,\n stackMarginVertical: 8,\n variant: 'body1',\n selected: {\n variant: 'body1Strong',\n },\n },\n medium: {\n iconSize: 20,\n iconMargin: 6,\n indicatorMargin: 12,\n stackMarginHorizontal: 10,\n stackMarginVertical: 12,\n variant: 'body1',\n selected: {\n variant: 'body1Strong',\n },\n },\n large: {\n iconSize: 24,\n iconMargin: 6,\n indicatorMargin: 12,\n stackMarginHorizontal: 10,\n stackMarginVertical: 16,\n variant: 'body2',\n selected: {\n variant: 'subtitle2',\n },\n },\n vertical: {\n flexDirection: 'row-reverse',\n indicatorOrientation: 'vertical',\n small: {\n indicatorMargin: 4,\n stackMarginHorizontal: 6,\n stackMarginVertical: 2,\n },\n medium: {\n indicatorMargin: 8,\n stackMarginHorizontal: 10,\n stackMarginVertical: 6,\n },\n large: {\n indicatorMargin: 10,\n stackMarginHorizontal: 10,\n stackMarginVertical: 8,\n },\n },\n hasIcon: {\n contentMarginStart: 8,\n },\n} as TabTokens;\n\nexport const useTabTokens = buildUseTokens(defaultTabTokens, defaultTabColorTokens, tabName);\n", "import * as React from 'react';\n\nimport type { TabListState } from './TabList.types';\n\nconst nullFunction = () => null;\n\nexport const TabListContext = React.createContext({\n addTabKey: nullFunction,\n appearance: 'transparent',\n canShowAnimatedIndicator: false,\n disabled: false,\n onTabSelect: nullFunction,\n removeTabKey: nullFunction,\n selectedKey: '',\n setFocusedTabRef: nullFunction,\n size: 'small',\n tabKeys: [],\n vertical: false,\n updateDisabledTabs: nullFunction,\n updateTabRef: nullFunction,\n});\n", "import * as React from 'react';\nimport type { AccessibilityActionEvent, AccessibilityState } from 'react-native';\n\nimport { memoize } from '@fluentui-react-native/framework';\nimport type { IFocusable } from '@fluentui-react-native/interactive-hooks';\nimport { usePressableState, useKeyProps, useOnPressWithFocus, useViewCommandFocus } from '@fluentui-react-native/interactive-hooks';\n\nimport type { TabProps, TabInfo } from './Tab.types';\nimport { TabListContext } from '../TabList/TabListContext';\n\nconst defaultAccessibilityActions = [{ name: 'Select' }];\n\n/**\n * Re-usable hook for Tab.\n * This hook configures tabs item props and state for Tab.\n *\n * @param props user props sent to Tab\n * @returns configured props and state for Tab\n */\nexport const useTab = (props: TabProps): TabInfo => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessibilityActions,\n accessibilityPositionInSet,\n accessibilitySetSize,\n accessibilityState,\n accessible,\n componentRef = defaultComponentRef,\n disabled,\n icon,\n onAccessibilityAction,\n tabKey,\n ...rest\n } = props;\n // Grabs the context information from Tabs (currently selected Tab and client's onTabSelect callback).\n const { addTabKey, invoked, onTabSelect, removeTabKey, setInvoked, setFocusedTabRef, selectedKey, tabKeys, ...tablist } =\n React.useContext(TabListContext);\n\n const isDisabled = disabled || tablist.disabled;\n\n const changeSelection = React.useCallback(() => {\n if (tabKey !== selectedKey) {\n onTabSelect(tabKey);\n componentRef && setFocusedTabRef(componentRef);\n }\n }, [componentRef, setFocusedTabRef, onTabSelect, selectedKey, tabKey]);\n\n const changeSelectionWithFocus = useOnPressWithFocus(componentRef, changeSelection);\n\n const pressable = usePressableState({\n ...rest,\n onPress: changeSelectionWithFocus,\n });\n\n const onKeyProps = useKeyProps(changeSelection, ' ', 'Enter');\n\n /**\n * This runs on initial render. Here we do two things:\n * - We update the global TabList context to populate its list of all tabKeys.\n * - If a selected key is initially set, we update the initial defaultTabbableElement ref to be the selected element.\n * This is because the componentRef is not generated until after the initial render.\n */\n React.useEffect(() => {\n // Add tab key to the global TabList context.\n addTabKey(tabKey);\n // Set a defaultTabbableElement if we're the initial selectedKey.\n if (selectedKey === tabKey) {\n componentRef && setFocusedTabRef(componentRef);\n }\n return () => removeTabKey(tabKey);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Used when creating accessibility properties in mergeSettings below.\n const onAccessibilityActionProp = React.useCallback(\n (event: AccessibilityActionEvent) => {\n if (!isDisabled) {\n switch (event.nativeEvent.actionName) {\n case 'Select':\n changeSelection();\n break;\n }\n onAccessibilityAction && onAccessibilityAction(event);\n }\n },\n [changeSelection, isDisabled, onAccessibilityAction],\n );\n\n const accessibilityActionsProp = React.useMemo(\n () => (accessibilityActions ? [...defaultAccessibilityActions, ...accessibilityActions] : defaultAccessibilityActions),\n [accessibilityActions],\n );\n\n return {\n props: {\n ...props,\n ...pressable.props,\n accessible: accessible ?? true,\n accessibilityRole: 'tab',\n accessibilityActions: accessibilityActionsProp,\n accessibilityPositionInSet: accessibilityPositionInSet ?? tabKeys.findIndex((key) => key === tabKey) + 1,\n accessibilityState: getAccessibilityState(isDisabled, selectedKey === tabKey, accessibilityState),\n accessibilitySetSize: accessibilitySetSize ?? tabKeys.length,\n disabled: isDisabled,\n focusable: !isDisabled,\n icon: icon,\n onAccessibilityAction: onAccessibilityActionProp,\n ref: useViewCommandFocus(componentRef),\n tabKey: tabKey,\n ...onKeyProps,\n },\n state: {\n ...pressable.state,\n selected: tabKey === selectedKey,\n },\n };\n};\n\nconst getAccessibilityState = memoize(getAccessibilityStateWorker);\nfunction getAccessibilityStateWorker(disabled: boolean, selected: boolean, accessibilityState?: AccessibilityState): AccessibilityState {\n if (accessibilityState) {\n return { disabled, selected, ...accessibilityState };\n }\n return { disabled, selected };\n}\n", "import React from 'react';\nimport { I18nManager, Platform } from 'react-native';\nimport type { LayoutChangeEvent } from 'react-native';\n\nimport type { PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';\n\nimport type { TabProps, TabTokens } from './Tab.types';\nimport type { TabListState } from '../TabList/TabList.types';\n\n/**\n * On win32, when a vertical tablist initially lays out, we sometimes get odd, large height values that cause the\n * indicator to noticably take up the entire screen height before getting a correct layout value that makes sense. This is\n * an arbitrary limit we'll set to keep the indicator from looking weird.\n */\nconst RENDERING_HEIGHT_LIMIT = 20_000;\n\n/**\n * This hook handles the logic on the tab side to correctly style and animate the TabListAnimatedIndicator.\n *\n * We save the layout information (width, height, x, y) of the Tab component by returning the root's slot props with a\n * LayoutEventHandler attached to track layout info of the tab, and we color the animated indicator using the user\n * defined tab indicator color token.\n */\nexport function useTabAnimation(\n props: TabProps,\n context: TabListState,\n tokens: TabTokens,\n rootProps: PressablePropsExtended,\n): PressablePropsExtended {\n const { addTabLayout, selectedKey, layout, updateAnimatedIndicatorStyles, vertical } = context;\n const { tabKey, onLayout } = props;\n\n // If we're the selected tab, we style the TabListAnimatedIndicator with the correct token value set by the user\n React.useEffect(() => {\n if (tabKey === selectedKey && updateAnimatedIndicatorStyles) {\n updateAnimatedIndicatorStyles({ backgroundColor: tokens.indicatorColor, borderRadius: tokens.indicatorRadius });\n }\n // Disabling warning because effect does not need to fire on `updateAnimatedIndicatorStyles` being changed\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tabKey, selectedKey, tokens.indicatorColor, tokens.indicatorRadius]);\n\n /**\n * This checks to see if we have relevant info to calculate the layout position and dimensions of the indicator. If this check fails, we don't\n * want to trigger a re-render by needlessly updating the TabList state.\n *\n * We also check if the info is good. Info can be bad in some weird cases on win32:\n * - Check if width > 0 because there is an on-going issue caused by ScrollViews initially laying out its childrens' width to 0 and height to be a bigger than expected value.\n * - ScrollView also negatively affects the initial height values. For vertical TabLists, the initial height value will lay out incorrectly. Sometimes, the styling of the parent\n * component combined with the ScrollView issues causes the initial height layout value to be completely unreasonable. Exactly which style that causes this issue isn't known;\n * more investigation has to be done.\n *\n * Once we finish these checks, for each tab, we calculate the layout information of its indicator consisting of (1) its dimensions and (2) its position (x,y) relative to the tablist.\n * Afterwards, we save these to feed into the Animated Indicator's layout styles.\n */\n const onTabLayout = React.useCallback(\n (e: LayoutChangeEvent) => {\n if (\n (e.nativeEvent.layout &&\n // Following checks are for win32 only, will be removed after addressing scrollview layout bug\n Platform.OS !== ('win32' as any)) ||\n (layout?.tablist &&\n layout.tablist.width > 0 &&\n e.nativeEvent.layout.height <= layout.tablist.height &&\n e.nativeEvent.layout.height < RENDERING_HEIGHT_LIMIT)\n ) {\n const { width: tabWidth, height: tabHeight, x: tabX, y: tabY } = e.nativeEvent.layout;\n let indicatorWidth: number, indicatorHeight: number, indicatorX: number, indicatorY: number;\n // Total Indicator inset consists of the horizontal/vertical margin of the indicator, the space taken up by the tab's focus border, and the\n // existing padding between the focus border and the tab itself.\n const focusBorderPadding = 1;\n const totalIndicatorInset = tokens.indicatorMargin + tokens.borderWidth + focusBorderPadding;\n if (vertical) {\n indicatorWidth = tokens.indicatorThickness;\n indicatorHeight = tabHeight - totalIndicatorInset * 2; // multiply inset by 2 to subtract height from top and bottom\n indicatorY = tabY + totalIndicatorInset;\n if (I18nManager.isRTL) {\n // On RTL, the vertical tab indicator should appear to the right of the text\n indicatorX = tabX + tabWidth - (tokens.borderWidth + focusBorderPadding + indicatorWidth);\n } else {\n indicatorX = tabX + tokens.borderWidth + focusBorderPadding;\n }\n } else {\n indicatorWidth = tabWidth - totalIndicatorInset * 2; // multiply inset by 2 to subtract width from left and right\n indicatorHeight = tokens.indicatorThickness;\n indicatorX = tabX + totalIndicatorInset;\n indicatorY = tabHeight + tabY - indicatorHeight - tokens.borderWidth - focusBorderPadding;\n }\n addTabLayout(tabKey, {\n x: indicatorX,\n y: indicatorY,\n width: indicatorWidth,\n height: indicatorHeight,\n });\n }\n\n onLayout && onLayout(e);\n },\n [addTabLayout, layout, onLayout, tabKey, tokens.borderWidth, tokens.indicatorMargin, tokens.indicatorThickness, vertical],\n );\n\n return React.useMemo(() => ({ ...rootProps, onLayout: onTabLayout }), [rootProps, onTabLayout]);\n}\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\n/** @jsxFrag */\n\nimport React from 'react';\nimport { View, Pressable } from 'react-native';\nimport type { ViewProps } from 'react-native';\n\nimport type { UseTokens } from '@fluentui-react-native/framework';\nimport { withSlots, compressible, useSlot, useFluentTheme, applyTokenLayers, mergeProps } from '@fluentui-react-native/framework';\nimport { IconV1 as Icon } from '@fluentui-react-native/icon';\nimport type { IconPropsV1 as IconProps } from '@fluentui-react-native/icon';\nimport type { PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';\nimport type { TextProps } from '@fluentui-react-native/text';\nimport { Text } from '@fluentui-react-native/text';\n\nimport { useTabSlotProps } from './Tab.styling';\nimport { tabName } from './Tab.types';\nimport type { TabProps, TabState, TabTokens } from './Tab.types';\nimport { tabStates, useTabTokens } from './TabTokens';\nimport { useTab } from './useTab';\nimport { useTabAnimation } from './useTabAnimation';\nimport type { TabListState } from '../TabList/TabList.types';\nimport { TabListContext } from '../TabList/TabListContext';\n\nconst tabLookup = (layer: string, state: TabState, props: TabProps, tablistContext: TabListState): boolean => {\n return (\n state[layer] ||\n props[layer] ||\n tablistContext[layer] ||\n layer === tablistContext.appearance ||\n layer === tablistContext.size ||\n (layer === 'hasIcon' && props.icon)\n );\n};\n\nexport const Tab = compressible((props: TabProps, useTokens: UseTokens) => {\n const tablist = React.useContext(TabListContext);\n const tab = useTab(props);\n\n const theme = useFluentTheme();\n let [tokens, cache] = useTokens(theme);\n\n // Calculate component states to get the correct tokens here (this happens in useSlots for compose components)\n [tokens, cache] = applyTokenLayers(tokens, tabStates, cache, (layer) => tabLookup(layer, tab.state, tab.props, tablist));\n\n // Get styling props for each Tab slot\n const slotProps = useTabSlotProps(tab.props, tokens, theme, tablist);\n\n const rootProps = useTabAnimation(props, tablist, tokens, slotProps.root);\n\n const RootSlot = useSlot(Pressable, rootProps);\n const StackSlot = useSlot(View, slotProps.stack as ViewProps);\n const IndicatorContainerSlot = useSlot(View, slotProps.indicatorContainer as ViewProps);\n const IndicatorSlot = useSlot(View, slotProps.indicator as ViewProps);\n const ContentContainerSlot = useSlot(View, slotProps.contentContainer as ViewProps);\n const ContentSlot = useSlot(Text, slotProps.content);\n const IconSlot = useSlot(Icon, slotProps.icon);\n\n return (final: TabProps, ...children: React.ReactNode[]) => {\n if (!tab.state) {\n return null;\n }\n\n // Get label for Tab to use if there's no accessibilityLabel prop passed in.\n let label = '';\n let hasChildren = false;\n React.Children.forEach(children, (child) => {\n if (child !== null) {\n hasChildren = true;\n if (typeof child === 'string') {\n label = child;\n }\n }\n });\n\n // `onLayout` is unused and excluded from the rest of the mergedProps to be passed into the RootSlot.\n // This is to ensure that the chained layout callback created in useTabAnimation isn't overwritten.\n const {\n icon,\n tabKey,\n onLayout: _,\n ...mergedProps\n } = mergeProps(tab.props, final, {\n accessibilityLabel: tab.props.accessibilityLabel || final.accessibilityLabel || label,\n });\n\n if (__DEV__ && !hasChildren && !icon) {\n console.warn('A Tab component must render content. Children, an icon, or both should be passed in.');\n }\n\n return (\n \n \n {icon && }\n {hasChildren && (\n \n {React.Children.map(children, (child, i) =>\n typeof child === 'string' ? (\n \n {child}\n \n ) : (\n child\n ),\n )}\n \n )}\n \n \n \n \n \n );\n };\n}, useTabTokens);\nTab.displayName = tabName;\n\nexport default Tab;\n", "import type * as React from 'react';\nimport type { LayoutRectangle, View } from 'react-native';\n\nimport type { IViewProps } from '@fluentui-react-native/adapters';\nimport type { FocusZoneProps } from '@fluentui-react-native/focus-zone';\nimport type { LayoutTokens } from '@fluentui-react-native/tokens';\n\nimport type { AnimatedIndicatorStyles } from '../TabListAnimatedIndicator/TabListAnimatedIndicator.types';\n\nexport const tabListName = 'TabList';\n\nexport type TabListAppearance = 'transparent' | 'subtle';\nexport type TabListSize = 'small' | 'medium' | 'large';\nexport interface TabListLayoutInfo {\n tablist: LayoutRectangle;\n tabs: { [key: string]: LayoutRectangle };\n}\n\nexport interface TabListState {\n /**\n * Method to add tabKey to context's `tabKeys` list. Run once on a tab mounting.\n */\n addTabKey: (tabKey: string) => void;\n\n /**\n * Method to add Tab's layout information for animating the tab indicator\n */\n addTabLayout?: (tabKey: string, layout: LayoutRectangle) => void;\n\n /**\n * Global state both TabList and Tab use for tracking styling of the animated indicator.\n *\n * This is the styling of each of the slots, excluding layout-set styles calculated in `useAnimatedIndicatorStyles`.\n */\n animatedIndicatorStyles?: AnimatedIndicatorStyles;\n\n /**\n * TabList's `appearance` prop passed to its children.\n */\n appearance: TabListAppearance;\n\n /**\n * Flag indicating whether the animated indicator has correct layout styles such that we can render it.\n */\n canShowAnimatedIndicator: boolean;\n\n /**\n * TabList's `disabled` prop\n */\n disabled: boolean;\n\n /**\n * Flag to indicate whether a Tab has been clicked and selected.\n * @platform win32\n */\n invoked?: boolean;\n\n /**\n * Stores the layout rect of the tablist and the layout rects + some tokens of each tab. Used to style the animated indicator.\n */\n layout?: TabListLayoutInfo;\n\n /**\n * Updates the selected Tab and calls the client’s onTabSelect callback\n */\n onTabSelect: (key: string) => void;\n\n /**\n * Method to remove a tabKey from a context's `tabKeys` list. Run once when the tab unmounts.\n */\n removeTabKey: (tabKey: string) => void;\n\n /**\n * The currently selected Tab's key.\n */\n selectedKey: string;\n\n /**\n * Setter for the context's `invoked` flag.\n * @platform win32\n */\n setInvoked?: (invoked: boolean) => void;\n\n /**\n * Setter for the focused Tab's ref to set as the default tabbable element in the FocusZone\n */\n setFocusedTabRef: (ref: React.RefObject) => void;\n\n /**\n * TabList's `size` prop.\n */\n size: TabListSize;\n\n /**\n * Array of Tab values in the group\n */\n tabKeys: string[];\n\n /**\n * Directly update the animated indicator's styles with styles the user supplies for each slot.\n */\n updateAnimatedIndicatorStyles?: (updates: AnimatedIndicatorStyles) => void;\n\n /**\n * Updates internal map that keeps track of each of this tablist's tabs disabled state\n */\n updateDisabledTabs: (tabKey: string, isDisabled: boolean) => void;\n\n /**\n * Updates internal map that keeps track of each of this tablist's tabs' refs.\n */\n updateTabRef: (tabKey: string, ref: React.RefObject) => void;\n\n /**\n * TabList's `vertical` prop.\n */\n vertical: boolean;\n}\n\nexport interface TabListTokens extends LayoutTokens {\n /**\n * Controls direction of TabList items, controlled by 'vertical' prop\n */\n direction?: 'row' | 'column';\n /**\n * States\n */\n vertical?: TabListTokens;\n}\n\nexport interface TabListProps extends Pick, IViewProps {\n /**\n * Visual appearance of the TabList, affecting header hover / selection background.\n */\n appearance?: TabListAppearance;\n\n /**\n * A RefObject to access TabList.\n */\n componentRef?: React.RefObject;\n\n /**\n * The key of the Tab that will initially be selected\n */\n defaultSelectedKey?: string;\n\n /**\n * Flag to disable all tabs\n */\n disabled?: boolean;\n\n /**\n * Callback for receiving a notification when the choice has been changed\n */\n onTabSelect?: (key: string) => void;\n\n /**\n * The value of the selected option. If you provide this, you must maintain selection state by observing\n * onTabSelect events and passing a new value in when changed. This overrides defaultSelectedKey\n * and makes the TabList a controlled component. This prop is mutually exclusive to defaultSelectedKey.\n */\n selectedKey?: string;\n\n /**\n * Flag to change the size of the tabs.\n */\n size?: TabListSize;\n\n testID?: string;\n\n /**\n * Flag to render the list of tabs horizontally or vertically\n */\n vertical?: boolean;\n}\nexport interface TabListInfo {\n props: TabListProps;\n state: TabListState;\n}\nexport interface TabListSlotProps {\n container?: FocusZoneProps;\n stack: IViewProps;\n root: React.PropsWithRef;\n}\n\nexport interface TabListType {\n props: TabListProps;\n tokens: TabListTokens;\n slotProps: TabListSlotProps;\n state: TabListState;\n}\n", "import type { Theme } from '@fluentui-react-native/framework';\nimport type { TokenSettings } from '@fluentui-react-native/use-styling';\n\nimport type { TabListTokens } from './TabList.types';\n\nexport const defaultTabListTokens: TokenSettings = () =>\n ({\n direction: 'row',\n vertical: {\n direction: 'column',\n },\n } as TabListTokens);\n", "import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';\nimport { buildProps, layoutStyles } from '@fluentui-react-native/framework';\n\nimport { tabListName } from './TabList.types';\nimport type { TabListTokens, TabListSlotProps, TabListProps } from './TabList.types';\nimport { defaultTabListTokens } from './TabListTokens';\n\nexport const stylingSettings: UseStylingOptions = {\n tokens: [defaultTabListTokens, tabListName],\n states: ['vertical'],\n slotProps: {\n stack: buildProps(\n (tokens: TabListTokens) => ({\n style: {\n display: 'flex',\n flexDirection: tokens.direction,\n flex: 0,\n },\n }),\n ['direction'],\n ),\n root: buildProps(\n (tokens: TabListTokens, theme: Theme) => ({\n style: {\n display: 'flex',\n alignItems: 'flex-start',\n ...layoutStyles.from(tokens, theme),\n },\n }),\n layoutStyles.keys,\n ),\n },\n};\n", "import * as React from 'react';\nimport { Platform } from 'react-native';\nimport type { View, AccessibilityState, LayoutRectangle } from 'react-native';\n\nimport { memoize, mergeStyles } from '@fluentui-react-native/framework';\nimport type { LayoutEvent } from '@fluentui-react-native/interactive-hooks';\nimport { useSelectedKey } from '@fluentui-react-native/interactive-hooks';\nimport type { IKeyboardEvent } from '@office-iss/react-native-win32';\n\nimport type { TabListInfo, TabListProps } from './TabList.types';\nimport type { AnimatedIndicatorStyles } from '../TabListAnimatedIndicator/TabListAnimatedIndicator.types';\n\n/**\n * Re-usable hook for TabList.\n * This hook configures props and state for TabList.\n *\n * @param props user props sent to TabList\n * @returns configured props and state for TabList\n */\nexport const useTabList = (props: TabListProps): TabListInfo => {\n const defaultComponentRef = React.useRef(null);\n const {\n accessible,\n appearance = 'transparent',\n accessibilityState,\n componentRef = defaultComponentRef,\n defaultSelectedKey,\n disabled = false,\n isCircularNavigation,\n onTabSelect,\n selectedKey,\n size = 'medium',\n vertical = false,\n } = props;\n\n const data = useSelectedKey(selectedKey || defaultSelectedKey || null, onTabSelect);\n const selectedTabKey = selectedKey ?? data.selectedKey;\n\n // focusedTabRef should be set to default tabbable element.\n const [focusedTabRef, setFocusedTabRef] = React.useState(React.useRef(null));\n const [invoked, setInvoked] = React.useState(false);\n const [tabKeys, setTabKeys] = React.useState([]);\n const [allTabsDisabled, setAllTabsDisabled] = React.useState(false);\n\n // These maps are used to switch tab focus in the event the selected tab is disabled. React refs are used as storage because updating the maps shouldn't trigger a re-render.\n const tabRefMap = React.useRef<{ [key: string]: React.RefObject }>({}).current;\n const disabledStateMap = React.useRef<{ [key: string]: boolean }>({}).current;\n\n const updateTabRef = React.useCallback((key: string, ref: React.RefObject) => (tabRefMap[key] = ref), [tabRefMap]);\n const updateDisabledTabs = React.useCallback(\n (key: string, isDisabled: boolean) => {\n disabledStateMap[key] = isDisabled;\n if (allTabsDisabled && !isDisabled) {\n setAllTabsDisabled(false);\n }\n },\n [allTabsDisabled, disabledStateMap],\n );\n\n const addTabKey = React.useCallback(\n (tabKey: string) => {\n if (__DEV__ && tabKeys.includes(tabKey)) {\n console.warn(`Tab Key \"${tabKey}\" already exists in the TabList. Duplicate keys are not supported.`);\n }\n setTabKeys((keys) => [...keys, tabKey]);\n },\n [tabKeys, setTabKeys],\n );\n\n const removeTabKey = React.useCallback(\n (tabKey: string) => {\n setTabKeys((keys) => keys.filter((key) => key !== tabKey));\n },\n [setTabKeys],\n );\n\n const incrementSelectedTab = React.useCallback(\n (goBackward: boolean) => {\n const currentIndex = tabKeys.indexOf(selectedTabKey);\n\n const direction = goBackward ? -1 : 1;\n let increment = 1;\n let newTabKey: string;\n\n // We want to only switch selection to non-disabled tabs. This loop allows us to skip over disabled ones.\n while (increment <= tabKeys.length) {\n let newIndex = (currentIndex + direction * increment) % tabKeys.length;\n\n if (newIndex < 0) {\n newIndex = tabKeys.length + newIndex;\n }\n\n newTabKey = tabKeys[newIndex];\n\n if (disabledStateMap[newTabKey]) {\n increment += 1;\n } else {\n break;\n }\n }\n\n // Unable to find a non-disabled next tab, early return\n if (increment > tabKeys.length) {\n return;\n }\n\n data.onKeySelect(newTabKey);\n },\n [data, disabledStateMap, selectedTabKey, tabKeys],\n );\n\n // State variables and functions for saving layout info and other styling information to style the animated indicator.\n const [listLayoutMap, setListLayoutMap] = React.useState<{ [key: string]: LayoutRectangle }>({});\n const [tabListLayout, setTabListLayout] = React.useState();\n const [userDefinedAnimatedIndicatorStyles, setUserDefinedAnimatedIndicatorStyles] = React.useState({});\n\n const addTabLayout = React.useCallback(\n (tabKey: string, layoutInfo: LayoutRectangle) => {\n setListLayoutMap((prev) => ({ ...prev, [tabKey]: layoutInfo }));\n },\n [setListLayoutMap],\n );\n\n const updateStyles = React.useCallback(\n (update: AnimatedIndicatorStyles) => {\n setUserDefinedAnimatedIndicatorStyles((prev) => mergeStyles(prev, update));\n },\n [setUserDefinedAnimatedIndicatorStyles],\n );\n\n // TabList layout callback used to style the animated indicator.\n const onTabListLayout = React.useCallback(\n (e: LayoutEvent) => {\n if (e.nativeEvent.layout) {\n setTabListLayout(e.nativeEvent.layout);\n }\n },\n [setTabListLayout],\n );\n\n // If the current selected tab becomes disabled, the following useEffect sets the default focused element to the next non-disabled tab key.\n // Without this, keyboard navigation gets stuck when attempting to tab towards the tablist and every following element after\n const isSelectedTabDisabled = disabledStateMap[selectedTabKey];\n\n React.useEffect(() => {\n if (isSelectedTabDisabled) {\n // switch focus to the next available tab key\n let tabIndex = tabKeys.indexOf(selectedTabKey);\n for (let i = 0; i < tabKeys.length; i++) {\n tabIndex = (tabIndex + 1) % tabKeys.length;\n if (!disabledStateMap[tabKeys[tabIndex]]) {\n break;\n }\n }\n if (tabKeys[tabIndex] === selectedTabKey) {\n // In the very rare edge case of all tabs somehow being disabled, we need to set this tablist to become disabled to prevent users from keyboarding in\n setAllTabsDisabled(true);\n } else {\n const ref = tabRefMap[tabKeys[tabIndex]];\n setFocusedTabRef(ref);\n }\n }\n // Disable exhaustive-deps warning because this hook should only run once 'isSelectedTabDisabled' dependency changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSelectedTabDisabled]);\n\n // win32 only prop used to implemement CTRL + TAB shortcut native to windows tab components\n const onRootKeyDown = React.useCallback(\n (e: IKeyboardEvent) => {\n if ((Platform.OS as string) === 'win32' && e.nativeEvent.key === 'Tab' && e.nativeEvent.ctrlKey) {\n incrementSelectedTab(e.nativeEvent.shiftKey);\n setInvoked(true); // on win32, set focus on the new tab without triggering narration twice\n }\n\n props.onKeyDown?.(e);\n },\n [incrementSelectedTab, props],\n );\n\n return {\n props: {\n ...props,\n accessible: accessible ?? true,\n accessibilityState: getAccessibilityState(disabled || allTabsDisabled, accessibilityState),\n accessibilityRole: 'tablist',\n appearance: appearance,\n componentRef: componentRef,\n defaultTabbableElement: focusedTabRef,\n isCircularNavigation: isCircularNavigation ?? false,\n onKeyDown: onRootKeyDown,\n onLayout: onTabListLayout,\n size: size,\n vertical: vertical,\n },\n state: {\n addTabKey: addTabKey,\n addTabLayout: addTabLayout,\n animatedIndicatorStyles: userDefinedAnimatedIndicatorStyles,\n appearance: appearance,\n canShowAnimatedIndicator: !!(userDefinedAnimatedIndicatorStyles && listLayoutMap && listLayoutMap[selectedTabKey]),\n disabled: disabled || allTabsDisabled,\n invoked: invoked,\n layout: {\n tablist: tabListLayout,\n tabs: listLayoutMap,\n },\n onTabSelect: data.onKeySelect,\n removeTabKey: removeTabKey,\n selectedKey: selectedTabKey,\n setFocusedTabRef: setFocusedTabRef,\n setInvoked: setInvoked,\n size: size,\n tabKeys: tabKeys,\n vertical: vertical,\n updateAnimatedIndicatorStyles: updateStyles,\n updateDisabledTabs,\n updateTabRef,\n },\n };\n};\n\nconst getAccessibilityState = memoize(getAccessibilityStateWorker);\nfunction getAccessibilityStateWorker(disabled: boolean, accessibilityState?: AccessibilityState): AccessibilityState {\n if (accessibilityState) {\n return { disabled, ...accessibilityState };\n }\n return { disabled };\n}\n", "import type { Animated, LayoutRectangle, ViewStyle } from 'react-native';\n\nexport const tablistAnimatedIndicatorName = 'TabListAnimatedIndicator';\nexport type AnimatedIndicatorStyles = Animated.AnimatedProps;\n\nexport interface AnimatedIndicatorProps {\n animatedIndicatorStyles?: AnimatedIndicatorStyles;\n selectedKey?: string;\n tabLayout?: { [key: string]: LayoutRectangle };\n vertical?: boolean;\n}\n", "import React from 'react';\nimport { Animated, Easing, I18nManager } from 'react-native';\n\nimport type { AnimatedIndicatorProps, AnimatedIndicatorStyles } from './TabListAnimatedIndicator.types';\n\n/**\n * This hook handles logic for generating the styles for the TabList's Animated Indicator. Child Tabs add layout update events to state\n * variables here, which we use to either directly update the layout values of the animated indicator (on win32) or generate the transforms\n * to move the indicator (on non-win32 platforms).\n */\nexport function useAnimatedIndicatorStyles(props: AnimatedIndicatorProps): AnimatedIndicatorStyles {\n const { animatedIndicatorStyles: additionalStyles, selectedKey, tabLayout, vertical } = props;\n\n // animated values\n const indicatorTranslate = React.useRef(new Animated.Value(0)).current;\n const indicatorScale = React.useRef(new Animated.Value(1)).current;\n\n // Save the initial selected layout, this shouldn't update after the first render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const startingKey = React.useMemo(() => selectedKey, []);\n\n React.useEffect(() => {\n const startingIndicatorLayout = tabLayout[startingKey];\n const selectedIndicatorLayout = tabLayout[selectedKey];\n if (startingIndicatorLayout && selectedIndicatorLayout) {\n /**\n * Calculate transforms. Because the scale transform's origin is at the center, we need to calculate an extra offset to add to the\n * translate transform to place the indicator at the correct location on screen.\n */\n let scaleValue: number, translateValue: number, translateOffset: number;\n if (vertical) {\n scaleValue = selectedIndicatorLayout.height / startingIndicatorLayout.height;\n translateOffset = (selectedIndicatorLayout.height - startingIndicatorLayout.height) / 2;\n translateValue = selectedIndicatorLayout.y - startingIndicatorLayout.y;\n } else {\n scaleValue = selectedIndicatorLayout.width / startingIndicatorLayout.width;\n translateOffset = (selectedIndicatorLayout.width - startingIndicatorLayout.width) / 2;\n translateValue = selectedIndicatorLayout.x - startingIndicatorLayout.x;\n }\n Animated.parallel([\n Animated.timing(indicatorScale, {\n toValue: scaleValue,\n duration: 300,\n easing: Easing.bezier(0, 0, 0, 1),\n useNativeDriver: true,\n }),\n Animated.timing(indicatorTranslate, {\n toValue: translateValue + translateOffset,\n duration: 300,\n easing: Easing.bezier(0, 0, 0, 1),\n useNativeDriver: true,\n }),\n ]).start();\n }\n // This hook should only run when (1) the selected key / vertical prop changes and (2) whenever the tabLayout map changes because that implies an\n // extent change among the tabs: specifically whenever the selected tab is bolded and previously selected tab is unbolded. Without checking for #2,\n // the animation for scaling and translating the indicator uses outdated layout info, resulting in a unaligned, small indicator. All other dependencies\n // are irrelevant.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedKey, tabLayout, vertical]);\n\n // Calculate styles using both layout information and user defined styles\n const styles = React.useMemo(() => {\n const { x, y, width, height } = tabLayout[startingKey];\n /**\n * Currently the behavior of layout style props and RTL differs between mac and win32. On mac, RTL = true simply swaps `right` and `left`. This should have been\n * removed per this: https://reactnative.dev/blog/2017/11/06/react-native-monthly-5#:~:text=The%20meaning%20of,opt%20into%20them.\n *\n * Because this is still in place, we account for the swap with the ternary operator below.\n * TODO: once mac RTL styling is fixed, remove the ternary operator.\n */\n const indicatorStyles: AnimatedIndicatorStyles = {\n ...additionalStyles,\n position: 'absolute',\n height: height,\n width: width,\n top: y,\n [I18nManager.isRTL ? 'right' : 'left']: x,\n };\n if (vertical) {\n indicatorStyles.transform = [{ translateY: indicatorTranslate }, { scaleY: indicatorScale }];\n } else {\n indicatorStyles.transform = [{ translateX: indicatorTranslate }, { scaleX: indicatorScale }];\n }\n return indicatorStyles;\n }, [additionalStyles, indicatorScale, indicatorTranslate, startingKey, tabLayout, vertical]);\n\n return styles;\n}\n", "/** @jsxRuntime classic */\nimport React from 'react';\nimport { Animated } from 'react-native';\n\nimport { stagedComponent } from '@fluentui-react-native/framework';\n\nimport type { AnimatedIndicatorProps } from './TabListAnimatedIndicator.types';\nimport { tablistAnimatedIndicatorName } from './TabListAnimatedIndicator.types';\nimport { useAnimatedIndicatorStyles } from './useAnimatedIndicatorStyles';\n\nexport const TabListAnimatedIndicator = stagedComponent((props) => {\n const styles = useAnimatedIndicatorStyles(props);\n return () => {\n return ;\n };\n});\nTabListAnimatedIndicator.displayName = tablistAnimatedIndicatorName;\n\nexport default TabListAnimatedIndicator;\n", "/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { View } from 'react-native';\n\nimport { FocusZone } from '@fluentui-react-native/focus-zone';\nimport type { UseSlots } from '@fluentui-react-native/framework';\nimport { compose, mergeProps, withSlots } from '@fluentui-react-native/framework';\n\nimport { stylingSettings } from './TabList.styling';\nimport type { TabListType, TabListProps } from './TabList.types';\nimport { tabListName } from './TabList.types';\nimport { TabListContext } from './TabListContext';\nimport { useTabList } from './useTabList';\nimport TabListAnimatedIndicator from '../TabListAnimatedIndicator/TabListAnimatedIndicator';\n\nexport const TabList = compose({\n displayName: tabListName,\n ...stylingSettings,\n slots: {\n container: FocusZone,\n stack: View,\n root: View,\n },\n useRender: (userProps: TabListProps, useSlots: UseSlots) => {\n // configure props and state for tabs based on user props\n const tablist = useTabList(userProps);\n\n // Grab the styled slots.\n const Slots = useSlots(userProps);\n\n // Return the handler to finish render.\n return (final: TabListProps, ...children: React.ReactNode[]) => {\n if (!tablist.state) {\n return null;\n }\n\n const { disabled, defaultTabbableElement, isCircularNavigation, vertical, ...mergedProps } = mergeProps(tablist.props, final);\n\n const { animatedIndicatorStyles, canShowAnimatedIndicator, disabled: tablistDisabledState, layout, selectedKey } = tablist.state;\n\n return (\n \n \n \n {children}\n {canShowAnimatedIndicator && (\n \n )}\n \n \n \n );\n };\n },\n});\n\nexport default TabList;\n", "export { tabName } from './Tab/Tab.types';\nexport type { TabType, TabInfo, TabProps, TabSlotProps, TabState, TabTokens } from './Tab/Tab.types';\nexport { Tab } from './Tab/Tab';\nexport { tabListName } from './TabList/TabList.types';\nexport type { TabListInfo, TabListProps, TabListSlotProps, TabListState, TabListTokens, TabListType } from './TabList/TabList.types';\nexport { TabList } from './TabList/TabList';\nexport { TabListContext } from './TabList/TabListContext';\n", "export {\n buttonNameV1,\n ButtonV1,\n ToggleButton,\n CompoundButton,\n FAB,\n Button,\n PrimaryButton,\n StealthButton,\n buttonName,\n compoundButtonName,\n fabName,\n toggleButtonName,\n useButton,\n useToggleButton,\n} from '@fluentui-react-native/button';\nexport type {\n ButtonAppearance,\n ButtonCoreTokens,\n ButtonCoreProps,\n ButtonProps,\n ButtonShape,\n ButtonSize,\n ButtonSlotProps,\n ButtonInfo,\n ButtonTokens,\n ButtonType,\n CompoundButtonProps,\n CompoundButtonSlotProps,\n CompoundButtonTokens,\n CompoundButtonType,\n FABSize,\n FABSlotProps,\n FABProps,\n FABTokens,\n FABType,\n IButtonInfo,\n IButtonProps,\n IButtonRenderData,\n IButtonSlotProps,\n IButtonState,\n IButtonTokens,\n IButtonType,\n ToggleButtonProps,\n ToggleButtonSlotProps,\n ToggleButtonInfo,\n ToggleButtonTokens,\n ToggleButtonType,\n} from '@fluentui-react-native/button';\n\nexport { Callout, calloutName } from '@fluentui-react-native/callout';\nexport type {\n CalloutNativeCommands,\n DirectionalHint,\n DismissBehaviors,\n ICalloutProps,\n ICalloutRenderData,\n ICalloutSlotProps,\n ICalloutTokens,\n ICalloutType,\n RestoreFocusEvent,\n} from '@fluentui-react-native/callout';\n\nexport { Checkbox, checkboxName, CheckboxV1, checkboxNameV1, useCheckbox } from '@fluentui-react-native/checkbox';\nexport type {\n CheckboxInfo,\n CheckboxProps,\n CheckboxSize,\n CheckboxShape,\n CheckboxSlotProps,\n CheckboxState,\n CheckboxTokens,\n CheckboxType,\n ICheckboxProps,\n ICheckboxRenderData,\n ICheckboxSlotProps,\n ICheckboxState,\n ICheckboxTokens,\n ICheckboxType,\n} from '@fluentui-react-native/checkbox';\n\nexport {\n CMContext,\n ContextualMenu,\n ContextualMenuItem,\n Submenu,\n SubmenuItem,\n contextualMenuItemName,\n contextualMenuName,\n submenuItemName,\n submenuName,\n} from '@fluentui-react-native/contextual-menu';\nexport type {\n ContextualMenuContext,\n ContextualMenuItemProps,\n ContextualMenuItemRenderData,\n ContextualMenuItemSlotProps,\n ContextualMenuItemState,\n ContextualMenuItemTokens,\n ContextualMenuItemType,\n ContextualMenuProps,\n ContextualMenuRenderData,\n ContextualMenuSlotProps,\n ContextualMenuState,\n ContextualMenuTokens,\n ContextualMenuType,\n SubmenuItemProps,\n SubmenuItemRenderData,\n SubmenuItemSlotProps,\n SubmenuItemState,\n SubmenuItemTokens,\n SubmenuItemType,\n SubmenuProps,\n SubmenuRenderData,\n SubmenuSlotProps,\n SubmenuState,\n SubmenuTokens,\n SubmenuType,\n} from '@fluentui-react-native/contextual-menu';\n\nexport { FocusTrapZone, filterOutComponentRef } from '@fluentui-react-native/focus-trap-zone';\nexport type { IFocusTrapZoneProps, IFocusTrapZoneSlotProps, IFocusTrapZoneType } from '@fluentui-react-native/focus-trap-zone';\n\nexport { FocusZone, focusZoneName } from '@fluentui-react-native/focus-zone';\nexport type {\n FocusZoneDirection,\n FocusZoneProps,\n FocusZoneRenderData,\n FocusZoneSlotProps,\n FocusZoneState,\n FocusZoneTabNavigation,\n FocusZoneTokens,\n FocusZoneType,\n NativeProps,\n NavigateAtEnd,\n} from '@fluentui-react-native/focus-zone';\n\nexport {\n Link,\n linkName,\n useAsLink,\n linkNameV1,\n linkStylingSettings,\n useLink,\n LinkV1,\n linkLookup,\n linkStates,\n defaultLinkTokens,\n} from '@fluentui-react-native/link';\nexport type {\n ILinkHooks,\n ILinkInfo,\n ILinkOptions,\n ILinkProps,\n ILinkRenderData,\n ILinkSlotProps,\n ILinkState,\n ILinkTokens,\n ILinkType,\n IWithLinkOptions,\n LinkTokens,\n LinkProps,\n LinkAppearance,\n LinkState,\n LinkSlotProps,\n LinkType,\n} from '@fluentui-react-native/link';\n\nexport { Persona, personaName } from '@fluentui-react-native/persona';\nexport type {\n IPersonaProps,\n IPersonaRenderData,\n IPersonaSlotProps,\n IPersonaState,\n IPersonaTokens,\n IPersonaType,\n} from '@fluentui-react-native/persona';\n\nexport { PersonaCoin, buildRootStyles, personaCoinName } from '@fluentui-react-native/persona-coin';\nexport type {\n IPersonaCoinProps,\n IPersonaCoinRenderData,\n IPersonaCoinSlotProps,\n IPersonaCoinState,\n IPersonaCoinTokens,\n IPersonaCoinType,\n IPersonaConfigurableProps,\n IconAlignment,\n PersonaCoinColor,\n PersonaCoinFluentColor,\n PersonaPresence,\n PersonaSize,\n RingConfig,\n RingThickness,\n} from '@fluentui-react-native/persona-coin';\n\nexport { Pressable } from '@fluentui-react-native/pressable';\nexport type { IChildAsFunction, IPressableProps, IPressableType, IRenderChild, IRenderStyle } from '@fluentui-react-native/pressable';\n\nexport { RadioButton, RadioGroup, RadioGroupContext, radioButtonName, radioGroupName } from '@fluentui-react-native/radio-group';\nexport type {\n IRadioButtonProps,\n IRadioButtonRenderData,\n IRadioButtonSlotProps,\n IRadioButtonTokens,\n IRadioButtonType,\n IRadioGroupContext,\n IRadioGroupProps,\n IRadioGroupRenderData,\n IRadioGroupSlotProps,\n IRadioGroupState,\n IRadioGroupTokens,\n IRadioGroupType,\n} from '@fluentui-react-native/radio-group';\n\nexport { Separator, separatorName } from '@fluentui-react-native/separator';\nexport type { SeparatorProps, SeparatorTokens, SeparatorType } from '@fluentui-react-native/separator';\n\nexport { Text, textName, TextV1, textNameV1 } from '@fluentui-react-native/text';\n\nexport type {\n TextProps,\n TextTokens,\n Caption1,\n Caption1Strong,\n Caption2,\n Body1,\n Body1Strong,\n Body2,\n Body2Strong,\n Subtitle1,\n Subtitle1Strong,\n Subtitle2,\n Subtitle2Strong,\n Title1,\n Title1Strong,\n Title2,\n Title3,\n LargeTitle,\n Display,\n ITextProps,\n ITextType,\n} from '@fluentui-react-native/text';\n\nexport {\n getAccessibilityState,\n isAccessibilityActionEvent,\n isGestureResponderEvent,\n isKeyPressEvent,\n isMouseEvent,\n normalizeRect,\n preferKeyDownForKeyEvents,\n useAsPressable,\n useAsToggle,\n useFocusState,\n useHoverState,\n useKeyProps,\n useKeyUpProps,\n useKeyDownProps,\n useOnPressWithFocus,\n usePressState,\n usePressability,\n usePressableState,\n useSelectedKey,\n useViewCommandFocus,\n} from '@fluentui-react-native/interactive-hooks';\nexport type {\n AbstractComponent,\n BlurEvent,\n ComponentMethods,\n FocusEvent,\n HostComponent,\n IFocusState,\n IFocusable,\n IHoverState,\n InteractionEvent,\n IPressState,\n IPressableHooks,\n IPressableOptions,\n IPressableState,\n IWithPressableEvents,\n IWithPressableOptions,\n KeyPressEvent,\n KeyCallback,\n Layout,\n LayoutEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureLayoutOnSuccessCallback,\n MeasureOnSuccessCallback,\n MouseEvent,\n NativeMethods,\n OnChangeCallback,\n OnPressCallback,\n OnPressWithFocusCallback,\n OnToggleCallback,\n PressEvent,\n PressabilityConfig,\n PressabilityEventHandlers,\n PressableFocusProps,\n PressableHoverEventProps,\n PressableHoverProps,\n PressablePressProps,\n PressablePropsExtended,\n Rect,\n RectOrSize,\n ResponderSyntheticEvent,\n ScrollEvent,\n SyntheticEvent,\n TextLayout,\n TextLayoutEvent,\n onKeySelectCallback,\n} from '@fluentui-react-native/interactive-hooks';\n\nexport { MenuButton, MenuButtonName } from '@fluentui-react-native/menu-button';\nexport type {\n MenuButtonContext,\n MenuButtonItemProps,\n MenuButtonProps,\n MenuButtonRenderData,\n MenuButtonSlotProps,\n MenuButtonState,\n MenuButtonTokens,\n MenuButtonType,\n} from '@fluentui-react-native/menu-button';\n\nexport { TabList, tabListName, Tab, tabName } from '@fluentui-react-native/tablist';\nexport type {\n TabListInfo,\n TabListProps,\n TabListSlotProps,\n TabListState,\n TabListTokens,\n TabListType,\n TabInfo,\n TabProps,\n TabSlotProps,\n TabState,\n TabTokens,\n TabType,\n} from '@fluentui-react-native/tablist';\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ButtonGroup = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar ButtonGroup = function (props) {\r\n if (!props.arrayOfIExcelButtonProps) {\r\n return null;\r\n }\r\n var buttonArray = [];\r\n for (var i = 0; i < props.arrayOfIExcelButtonProps.length; i++) {\r\n var currentProp = props.arrayOfIExcelButtonProps[i];\r\n buttonArray.push(React.createElement(react_native_2.Button, __assign({ key: i }, currentProp)));\r\n }\r\n return (React.createElement(react_native_1.View, __assign({ style: props.buttonGroupStyle }, { flex: 1 }), buttonArray));\r\n};\r\nexports.ButtonGroup = ButtonGroup;\r\n//# sourceMappingURL=ButtonGroup.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ButtonGroup = void 0;\r\nvar ButtonGroup_1 = require(\"./ButtonGroup\");\r\nObject.defineProperty(exports, \"ButtonGroup\", { enumerable: true, get: function () { return ButtonGroup_1.ButtonGroup; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Link = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\n/*\r\n FURN Link component always underlines text, this custom Link component underlines text only on mouse hover.\r\n Use FURN Link component for links that open URL outside of Excel app.\r\n For Links that navigate within Excel app, use this this component as in-app links should not be underlined by default as per fluent design.\r\n */\r\nvar Link = function (props) {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var _a = React.useState(false), hovered = _a[0], setHovered = _a[1];\r\n var _b = React.useState(false), focused = _b[0], setFocused = _b[1];\r\n var getTextStyle = function () {\r\n return {\r\n fontSize: 12,\r\n fontWeight: \"400\",\r\n color: hovered ? theme.colors.linkHovered : theme.colors.link,\r\n textDecorationLine: hovered ? \"underline\" : \"none\",\r\n textAlign: \"center\",\r\n };\r\n };\r\n var getViewStyle = function () {\r\n return {\r\n borderWidth: 2,\r\n borderRadius: 4,\r\n borderColor: focused ? theme.colors.focusBorder : \"transparent\",\r\n };\r\n };\r\n var onKeyDown = function (ev) {\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n ev.stopPropagation();\r\n props.onPress();\r\n }\r\n };\r\n return (React.createElement(react_native_1.Pressable, __assign({}, { cursor: \"pointer\", onKeyDown: onKeyDown }, { accessibilityRole: \"link\", style: getViewStyle(), onPress: props.onPress, onHoverIn: function () { return setHovered(true); }, onHoverOut: function () { return setHovered(false); }, onFocus: function () { return setFocused(true); }, onBlur: function () { return setFocused(false); } }),\r\n React.createElement(react_native_2.Text, { style: getTextStyle() }, props.content)));\r\n};\r\nexports.Link = Link;\r\n//# sourceMappingURL=Link.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Link = void 0;\r\nvar Link_1 = require(\"./Link\");\r\nObject.defineProperty(exports, \"Link\", { enumerable: true, get: function () { return Link_1.Link; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.footerTextStyle = exports.footerStyle = exports.separatorStyle = void 0;\r\nexports.separatorStyle = {\r\n width: \"100%\",\r\n borderWidth: 1,\r\n borderColor: \"#D2D0CE\",\r\n borderStyle: \"solid\",\r\n borderBottomWidth: 0,\r\n borderRightWidth: 0,\r\n borderLeftWidth: 0,\r\n};\r\nexports.footerStyle = {\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n marginBottom: \"2%\",\r\n marginTop: \"2%\",\r\n};\r\nexports.footerTextStyle = {\r\n marginBottom: \"2%\",\r\n textAlign: \"center\",\r\n};\r\n//# sourceMappingURL=Footer.styles.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Footer = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar Link_1 = require(\"../Link\");\r\nvar Footer_styles_1 = require(\"./Footer.styles\");\r\nvar Footer = function (props) {\r\n return (React.createElement(react_native_1.View, null,\r\n React.createElement(react_native_1.View, { style: Footer_styles_1.separatorStyle }),\r\n React.createElement(react_native_1.View, { style: Footer_styles_1.footerStyle },\r\n React.createElement(react_native_2.Text, { style: Footer_styles_1.footerTextStyle }, props.titleText),\r\n React.createElement(Link_1.Link, { onPress: props.onLearnMoreLinkClicked, content: props.linkText }))));\r\n};\r\nexports.Footer = Footer;\r\n//# sourceMappingURL=Footer.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Footer = void 0;\r\nvar Footer_1 = require(\"./Footer\");\r\nObject.defineProperty(exports, \"Footer\", { enumerable: true, get: function () { return Footer_1.Footer; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FontScaledSvg = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar FontScaledSvg = function (props) {\r\n var SvgIcon = props.src;\r\n var fontScale = (0, react_native_1.useWindowDimensions)().fontScale;\r\n return (React.createElement(SvgIcon, { width: props.width * fontScale, height: props.height * fontScale, color: props.fill, style: props.style }));\r\n};\r\nexports.FontScaledSvg = FontScaledSvg;\r\n//# sourceMappingURL=FontScaledSvg.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FontScaledSvg = void 0;\r\nvar FontScaledSvg_1 = require(\"./FontScaledSvg\");\r\nObject.defineProperty(exports, \"FontScaledSvg\", { enumerable: true, get: function () { return FontScaledSvg_1.FontScaledSvg; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FontScaledIconButton = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar button_1 = require(\"@fluentui-react-native/button\");\r\nvar react_native_1 = require(\"react-native\");\r\nvar FontScaledIconButton = function (props) {\r\n var width = props.width, height = props.height, style = props.style, iconOnly = props.iconOnly, baseButtonProps = __rest(props, [\"width\", \"height\", \"style\", \"iconOnly\"]);\r\n var fontScale = (0, react_native_1.useWindowDimensions)().fontScale;\r\n return (React.createElement(button_1.ButtonV1, __assign({}, baseButtonProps, { iconOnly: true, style: __assign(__assign({}, style), { width: width * fontScale, height: height * fontScale }) })));\r\n};\r\nexports.FontScaledIconButton = FontScaledIconButton;\r\n//# sourceMappingURL=FontScaledIconButton.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FontScaledIconButton = void 0;\r\nvar FontScaledIconButton_1 = require(\"./FontScaledIconButton\");\r\nObject.defineProperty(exports, \"FontScaledIconButton\", { enumerable: true, get: function () { return FontScaledIconButton_1.FontScaledIconButton; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.displayRangeStyles = exports.displayFilterStyles = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nexports.displayFilterStyles = {\r\n flex: 1,\r\n alignItems: \"center\",\r\n flexDirection: \"row\",\r\n};\r\nexports.displayRangeStyles = {\r\n paddingLeft: 4,\r\n paddingRight: 3,\r\n marginTop: react_native_1.Platform.OS === \"macos\" ? 0 : -1,\r\n borderRadius: 3,\r\n};\r\n//# sourceMappingURL=DisplayLocation.styles.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DisplayLocation = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar DisplayLocation_styles_1 = require(\"./DisplayLocation.styles\");\r\n/**\r\n * This component is used to display the range location(s) in the grid.\r\n * For example: A1,C1:D3.\r\n */\r\nvar DisplayRange = function (props) {\r\n if (!props.rangeText) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n var theme = (0, theme_types_1.useTheme)();\r\n var getBackgroundColor = function () {\r\n return props.isForFilter\r\n ? theme.colors.displayRangeBackground\r\n : theme.colors.taskPaneBackground;\r\n };\r\n return (React.createElement(react_native_1.View, { style: __assign(__assign({}, DisplayLocation_styles_1.displayRangeStyles), { backgroundColor: getBackgroundColor() }) },\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, style: { fontSize: 14 }, tooltip: props.rangeText }, props.rangeText)));\r\n};\r\n/**\r\n * This component is used to display the location in the grid.\r\n * For example: Sheet1 A1,C1:D3. The ranges part is rendered by DisplayRange.\r\n */\r\nvar DisplayLocation = function (props) {\r\n var tooltipText = props.isForFilter ? props.sheetName : undefined;\r\n return (React.createElement(react_native_1.View, { style: DisplayLocation_styles_1.displayFilterStyles },\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", style: { fontSize: 14, paddingRight: 2, flexShrink: 1 }, tooltip: tooltipText }, props.sheetName),\r\n React.createElement(DisplayRange, __assign({}, props))));\r\n};\r\nexports.DisplayLocation = DisplayLocation;\r\n//# sourceMappingURL=DisplayLocation.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DisplayLocation = void 0;\r\nvar DisplayLocation_1 = require(\"./DisplayLocation\");\r\nObject.defineProperty(exports, \"DisplayLocation\", { enumerable: true, get: function () { return DisplayLocation_1.DisplayLocation; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.commitButtonStyles = exports.rangeViewStyle = exports.rangeContentStyles = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nexports.rangeContentStyles = react_native_1.StyleSheet.create({\r\n inputBackground: {\r\n borderWidth: 1,\r\n borderRightWidth: 1,\r\n paddingRight: react_native_1.Platform.OS === \"macos\" ? 0 : 4,\r\n },\r\n input: {\r\n fontSize: 12,\r\n marginTop: 2,\r\n marginLeft: react_native_1.Platform.OS === \"macos\" ? 0 : 5,\r\n paddingTop: react_native_1.Platform.OS === \"macos\" ? 2 : 0,\r\n paddingBottom: 5,\r\n },\r\n errorText: {\r\n fontSize: 12,\r\n marginTop: 5,\r\n },\r\n});\r\nexports.rangeViewStyle = {\r\n flex: 1,\r\n marginTop: 3,\r\n};\r\nexports.commitButtonStyles = {\r\n borderWidth: 0,\r\n marginLeft: react_native_1.Platform.OS === \"macos\" ? 0 : -2,\r\n marginTop: react_native_1.Platform.OS === \"macos\" ? 4 : 3,\r\n backgroundColor: \"none\",\r\n borderRadius: 0,\r\n};\r\n//# sourceMappingURL=RangeInput.styles.js.map", "{\r\n \"filterTooltip\": \"Filters\",\r\n \"_filterTooltip.comment\": \"Tooltip text for the Filter dropdown. It is a Verb.\",\r\n\r\n \"invalidRangeText\": \"Please enter a valid range.\",\r\n \"_invalidRangeText.comment\": \"Text for invalid range filter.\",\r\n\r\n \"filterInputPlaceholderText\": \"Select a range to filter.\",\r\n \"_filterInputPlaceholderText.comment\": \"Placeholder text for the filter input field.\",\r\n\r\n \"defaultFilterText\": \"This workbook\",\r\n \"_defaultFilterText.comment\": \"Default filter value for the Filter is the current workbook.\",\r\n\r\n \"filterByRangeText\": \"Range\",\r\n \"_filterByRangeText.comment\": \"Option to apply filter based on range in an excel sheet.\",\r\n\r\n \"filterBySheetText\": \"Sheet\",\r\n \"_filterBySheetText.comment\": \"Option to apply filter based on sheet name in a workbook.\",\r\n\r\n \"clearFilterText\": \"Clear Filter\",\r\n \"_clearFilterText.comment\": \"Clear the filter applied. Clear represents an action.\",\r\n\r\n \"commitFilterText\": \"Commit\",\r\n \"_commitFilterText.comment\": \"Tooltip text for filter commit button.\"\r\n}\r\n", "\r\n \r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RangeInput = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar RangeInput_styles_1 = require(\"./RangeInput.styles\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar FontScaledIconButton_1 = require(\"../../FontScaledIconButton\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar stringResource = require(\"../../../../assets/Filter/strings.resjson\");\r\nvar commit_svgx_1 = __importDefault(require(\"../../../../assets/Filter/commit.svgx\"));\r\n/**\r\n * Contains textbox to input a new grid range. Used by grid filter in FilterSection.\r\n */\r\nvar RangeInput = function (props) {\r\n var escKey = react_native_1.Platform.OS === \"macos\" ? \"Escape\" : \"\\u001b\";\r\n var textInputRef = props.textInputTestOnlyProp\r\n ? undefined\r\n : React.useRef();\r\n var focusRef = (0, react_native_2.useViewCommandFocus)(textInputRef);\r\n var _a = React.useState(\"\"), rangeValue = _a[0], setRangeValue = _a[1];\r\n var _b = React.useState(false), buttonHovered = _b[0], setButtonHovered = _b[1];\r\n React.useEffect(function () {\r\n setRangeValue(props.rangeFilterPending\r\n ? \"'\" +\r\n props.rangeFilterPending.sheetName +\r\n \"'\" +\r\n \"!\" +\r\n props.rangeFilterPending.ranges\r\n : \"\");\r\n }, [props.rangeFilterPending]);\r\n React.useEffect(function () {\r\n var _a;\r\n // Pressing commit button will take focus away from textinput.\r\n // So place focus back on text input for empty rangeValue (invalid range filter committed)\r\n if (!rangeValue) {\r\n (_a = textInputRef === null || textInputRef === void 0 ? void 0 : textInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n }, [rangeValue]);\r\n var onKeyPress = function (e) {\r\n if (e.nativeEvent.key === \"Enter\") {\r\n onRangeFilterCommit();\r\n }\r\n else if (e.nativeEvent.key === escKey) {\r\n props.onRangeFilterInputEnabled(false);\r\n }\r\n };\r\n var onRangeFilterCommit = function () {\r\n var _a;\r\n // Retain focus on textinput after pressing 'Enter' key\r\n (_a = textInputRef === null || textInputRef === void 0 ? void 0 : textInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n if (!rangeValue) {\r\n return;\r\n }\r\n props.onRangeFilterCommit(rangeValue);\r\n setRangeValue(\"\");\r\n };\r\n var getButtonBackgroundColor = function () {\r\n return buttonHovered\r\n ? theme.colors.primaryButtonBackgroundHovered\r\n : theme.colors.primaryButtonBackground;\r\n };\r\n var getIconFillColor = function () {\r\n return buttonHovered\r\n ? theme.colors.primaryButtonTextHovered\r\n : theme.colors.primaryButtonText;\r\n };\r\n var theme = (0, theme_types_1.useTheme)();\r\n var isRangeBoxEmpty = rangeValue ? false : true;\r\n var accessibilityLabel = props.isRangeCommittedInvalid\r\n ? stringResource.getString(\"invalidRangeText\") +\r\n \", \" +\r\n stringResource.getString(\"filterInputPlaceholderText\")\r\n : stringResource.getString(\"filterInputPlaceholderText\");\r\n return (\r\n /*\r\n VSO 6013914: Keeping commit button in the same view as container causes commit button to be unresponsive to mouse clicks.\r\n If updating RangeInput component, please validate all scenarios in R2L (arabic) locale in addition to regular validation.\r\n */\r\n React.createElement(React.Fragment, null,\r\n React.createElement(react_native_1.View, { style: RangeInput_styles_1.rangeViewStyle },\r\n React.createElement(react_native_1.View, { style: __assign(__assign({}, RangeInput_styles_1.rangeContentStyles.inputBackground), { backgroundColor: theme.colors.inputBackground, borderColor: props.isRangeCommittedInvalid\r\n ? theme.colors.errorText\r\n : theme.colors.inputBorder }) },\r\n React.createElement(react_native_1.TextInput, { testID: \"RangeFilterInput\", style: __assign(__assign({}, RangeInput_styles_1.rangeContentStyles.input), { color: theme.colors.defaultContent }), onChangeText: setRangeValue, value: props.textInputTestOnlyProp ? \"\" : rangeValue, placeholder: stringResource.getString(\"filterInputPlaceholderText\"), placeholderTextColor: theme.colors.inputPlaceholderText, accessibilityLabel: accessibilityLabel, onKeyPress: onKeyPress, onSubmitEditing: onRangeFilterCommit, ref: focusRef, autoFocus: props.textInputTestOnlyProp ? false : true, maxLength: 256 })),\r\n props.isRangeCommittedInvalid && (React.createElement(react_native_1.View, { style: { borderColor: \"blue\" } },\r\n React.createElement(react_native_2.Text, { style: __assign(__assign({}, RangeInput_styles_1.rangeContentStyles.errorText), { color: theme.colors.errorText }) }, stringResource.getString(\"invalidRangeText\"))))),\r\n !isRangeBoxEmpty && (React.createElement(FontScaledIconButton_1.FontScaledIconButton, { style: __assign(__assign({}, RangeInput_styles_1.commitButtonStyles), { backgroundColor: getButtonBackgroundColor(), borderLeftWidth: 1, borderColor: theme.colors.commitIconLeftBorderColor }), width: 32, height: 25, onClick: onRangeFilterCommit, tooltip: stringResource.getString(\"commitFilterText\"), onHoverIn: function () { return setButtonHovered(true); }, onHoverOut: function () { return setButtonHovered(false); }, onFocus: function () { return setButtonHovered(true); }, onBlur: function () { return setButtonHovered(false); } },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: commit_svgx_1.default, width: 20, height: 16, fill: getIconFillColor() })))));\r\n};\r\nexports.RangeInput = RangeInput;\r\n//# sourceMappingURL=RangeInput.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isDefaultFilter = exports.generateFilterInfoToDisplay = exports.FilterMenuItemKeys = exports.FilterControlTestId = exports.FilterAnchorUID = void 0;\r\nexports.FilterAnchorUID = \"4c0b61e8-7d76-43f0-aefd-b9d2c3891b43\";\r\nexports.FilterControlTestId = \"TestFilterControl\";\r\nexports.FilterMenuItemKeys = {\r\n RangeMenuItemKey: \"Range\",\r\n SheetMenuItemKey: \"Sheet\",\r\n ClearMenuItemKey: \"Clear\",\r\n};\r\n/**\r\n * Creates the strings shown for filter UI.\r\n **/\r\nfunction generateFilterInfoToDisplay(diagnosticsFilter) {\r\n var maxRowValue = \"1048576\"; // should be kept in sync with RWMAX in xlshared\\src\\inc\\cellblock.h\r\n if (isDefaultFilter(diagnosticsFilter)) {\r\n // Filter information is not present, show default.\r\n return undefined;\r\n }\r\n var sheetNameInfo = diagnosticsFilter === null || diagnosticsFilter === void 0 ? void 0 : diagnosticsFilter.sheetName;\r\n var rangesInfo = diagnosticsFilter === null || diagnosticsFilter === void 0 ? void 0 : diagnosticsFilter.ranges;\r\n if (rangesInfo === undefined || rangesInfo === null) {\r\n // Show sheetName only.\r\n return {\r\n sheetName: sheetNameInfo,\r\n rangeValue: undefined,\r\n };\r\n }\r\n var splitStartAndEndRange = rangesInfo.split(\":\");\r\n if (splitStartAndEndRange.length === 2) {\r\n if (splitStartAndEndRange[0] === splitStartAndEndRange[1]) {\r\n // Entire row or column selection. Show sheetName!Row or sheetName!Column.\r\n return {\r\n sheetName: sheetNameInfo,\r\n rangeValue: splitStartAndEndRange[0],\r\n };\r\n }\r\n if (splitStartAndEndRange[0] === \"1\" &&\r\n splitStartAndEndRange[1] === maxRowValue) {\r\n // Entire sheet selection. Show only sheetName.\r\n return {\r\n sheetName: sheetNameInfo,\r\n rangeValue: undefined,\r\n };\r\n }\r\n }\r\n return {\r\n sheetName: sheetNameInfo,\r\n rangeValue: rangesInfo,\r\n };\r\n}\r\nexports.generateFilterInfoToDisplay = generateFilterInfoToDisplay;\r\n// Utility to check if there's no filter applied.\r\nfunction isDefaultFilter(filterApplied) {\r\n return (filterApplied === undefined ||\r\n filterApplied === null ||\r\n ((filterApplied.sheetName === undefined ||\r\n filterApplied.sheetName === null) &&\r\n (filterApplied.ranges === undefined || filterApplied.ranges === null)));\r\n}\r\nexports.isDefaultFilter = isDefaultFilter;\r\n//# sourceMappingURL=Filter.helper.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DisplayFilter = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar Filter_helper_1 = require(\"./Filter.helper\");\r\nvar DisplayLocation_1 = require(\"../DisplayLocation\");\r\nvar stringResource = require(\"../../../../assets/Filter/strings.resjson\");\r\n/**\r\n * This component is used to display applied filter settings.\r\n */\r\nvar DisplayFilter = function (props) {\r\n var filterInfoToDisplay = (0, Filter_helper_1.generateFilterInfoToDisplay)(props.filterApplied);\r\n var filterInfoString = filterInfoToDisplay === undefined ||\r\n filterInfoToDisplay.sheetName === undefined\r\n ? stringResource.getString(\"defaultFilterText\")\r\n : filterInfoToDisplay.sheetName;\r\n return (React.createElement(DisplayLocation_1.DisplayLocation, { sheetName: filterInfoString, rangeText: filterInfoToDisplay && filterInfoToDisplay.rangeValue, isForFilter: true }));\r\n};\r\nexports.DisplayFilter = DisplayFilter;\r\n//# sourceMappingURL=DisplayFilter.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.chevronStyles = exports.filterButtonStyle = void 0;\r\nexports.filterButtonStyle = {\r\n borderWidth: 0,\r\n marginRight: 4,\r\n};\r\nexports.chevronStyles = {\r\n paddingStart: 6,\r\n};\r\n//# sourceMappingURL=Filter.styles.js.map", "\r\n \r\n\r\n", "\r\n \r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterButton = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar Filter_styles_1 = require(\"./Filter.styles\");\r\nvar Filter_helper_1 = require(\"./Filter.helper\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar Anchor_1 = require(\"../../Anchor\");\r\nvar FontScaledIconButton_1 = require(\"../../FontScaledIconButton\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar stringResource = require(\"../../../../assets/Filter/strings.resjson\");\r\nvar filter_svgx_1 = __importDefault(require(\"../../../../assets/Filter/filter.svgx\"));\r\nvar chevron_svgx_1 = __importDefault(require(\"../../../../assets/Filter/chevron.svgx\"));\r\n/**\r\n * The button to open sub-menu with filter controls.\r\n */\r\nvar FilterButton = function (props) {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var _a = React.useState(false), buttonPressed = _a[0], setButtonPressed = _a[1];\r\n var _b = React.useState(false), buttonHovered = _b[0], setButtonHovered = _b[1];\r\n React.useEffect(function () {\r\n var _a, _b;\r\n if (!props.disabled) {\r\n (_b = (_a = props.refObject) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.focus();\r\n }\r\n }, [props.disabled]);\r\n var getButtonBackgroundColor = function () {\r\n if (props.expanded || buttonPressed) {\r\n return theme.colors.buttonBackgroundPressed;\r\n }\r\n return buttonHovered\r\n ? theme.colors.buttonBackgroundHovered\r\n : theme.colors.taskPaneBackground;\r\n };\r\n var getIconFillColor = function () {\r\n if (props.expanded || buttonPressed) {\r\n return theme.colors.defaultPressedIcon;\r\n }\r\n return buttonHovered\r\n ? theme.colors.defaultHoveredIcon\r\n : theme.colors.defaultIcon;\r\n };\r\n return (React.createElement(Anchor_1.Anchor, { anchorID: Filter_helper_1.FilterAnchorUID },\r\n React.createElement(FontScaledIconButton_1.FontScaledIconButton, { testID: \"TestFilterButton\", accessibilityState: { expanded: props.expanded }, accessibilityActions: [{ name: \"Expand\" }, { name: \"Collapse\" }], style: __assign(__assign({}, Filter_styles_1.filterButtonStyle), { backgroundColor: getButtonBackgroundColor(), justifyContent: \"space-evenly\" }), onClick: props.disabled ? undefined : props.onClick, tooltip: stringResource.getString(\"filterTooltip\"), componentRef: props.refObject, onPressIn: function () { return setButtonPressed(true); }, onPressOut: function () { return setButtonPressed(false); }, onHoverIn: function () { return setButtonHovered(true); }, onHoverOut: function () { return setButtonHovered(false); }, height: 30, width: 48 },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: filter_svgx_1.default, width: 12, height: 12, fill: getIconFillColor() }),\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: chevron_svgx_1.default, width: 11, height: 7, style: Filter_styles_1.chevronStyles, fill: getIconFillColor() }))));\r\n};\r\nexports.FilterButton = FilterButton;\r\n//# sourceMappingURL=FilterButton.native.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterSubmenuItem = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar FilterSubmenuItem = function (props) {\r\n return (React.createElement(react_native_1.SubmenuItem, { text: props.text, itemKey: props.itemKey, onHoverIn: props.onHoverIn, componentRef: props.componentRef }));\r\n};\r\nexports.FilterSubmenuItem = FilterSubmenuItem;\r\n//# sourceMappingURL=FilterSubmenuItem.macos.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterSection = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar RangeInput_1 = require(\"../RangeInput/RangeInput\");\r\nvar Filter_helper_1 = require(\"./Filter.helper\");\r\nvar DisplayFilter_1 = require(\"./DisplayFilter\");\r\nvar FilterButton_1 = require(\"./FilterButton\");\r\nvar FilterSubmenuItem_1 = require(\"./FilterSubmenuItem\");\r\nvar stringResource = require(\"../../../../assets/Filter/strings.resjson\");\r\n/**\r\n * The main component containing grid filter controls and showing applied filter settings.\r\n * The sub-components:\r\n * - FilterButton which opens sub-menu to configure the filter.\r\n * - DisplayFilter shows applied filter setting.\r\n * - RangeInput is shown when range input is activated from sub-menu. It replaces DisplayFilter\r\n * component until apply button is clicked.\r\n */\r\nvar FilterSection = function (props) {\r\n var filterRef = props.filterSectionTestOnlyProp\r\n ? undefined\r\n : React.useRef(null);\r\n var _a = React.useState(false), showContextualMenu = _a[0], setShowContextualMenu = _a[1];\r\n var _b = React.useState(false), isContextualMenuVisible = _b[0], setIsContextualMenuVisible = _b[1];\r\n var toggleShowContextualMenu = React.useCallback(function () {\r\n setShowContextualMenu(!showContextualMenu);\r\n setIsContextualMenuVisible(!isContextualMenuVisible);\r\n }, [\r\n showContextualMenu,\r\n isContextualMenuVisible,\r\n setShowContextualMenu,\r\n setIsContextualMenuVisible,\r\n ]);\r\n var onShowContextualMenu = React.useCallback(function () {\r\n setIsContextualMenuVisible(true);\r\n }, [setIsContextualMenuVisible]);\r\n var onDismissContextualMenu = React.useCallback(function () {\r\n setShowContextualMenu(false);\r\n setIsContextualMenuVisible(false);\r\n }, [setShowContextualMenu]);\r\n var stdMenuItemRef = React.useRef(null);\r\n var _c = React.useState(false), showSubmenu = _c[0], setShowSubmenu = _c[1];\r\n var _d = React.useState(false), isSubmenuVisible = _d[0], setIsSubmenuVisible = _d[1];\r\n var toggleShowSubmenu = React.useCallback(function () {\r\n setShowSubmenu(!showSubmenu);\r\n setIsSubmenuVisible(!isSubmenuVisible);\r\n }, [showSubmenu, isSubmenuVisible, setShowSubmenu, setIsSubmenuVisible]);\r\n var onShowSubmenu = React.useCallback(function () {\r\n setIsSubmenuVisible(true);\r\n }, [setIsSubmenuVisible]);\r\n var onDismissSubmenu = React.useCallback(function () {\r\n setShowSubmenu(false);\r\n }, [setShowSubmenu]);\r\n var onSheetFilterSubMenuClick = React.useCallback(function (filterSheet) {\r\n var newFilter = {\r\n sheetName: filterSheet,\r\n ranges: undefined,\r\n dateTimeRangeSetting: undefined,\r\n };\r\n props.onUserFilterChanged(newFilter);\r\n }, []);\r\n var onRangeFilterMenuClicked = React.useCallback(function () {\r\n // Enable the range filter selection updates.\r\n props.onRangeFilterInputEnabled(true /* isEnabled */);\r\n }, []);\r\n var onClearFilterMenuClicked = React.useCallback(function () {\r\n // Remove the filter applied.\r\n props.onUserFilterChanged(undefined /* newFilter */);\r\n }, []);\r\n var renderSheetFilterSubMenu = function () {\r\n var _a;\r\n var sheetFilterMenu = [];\r\n (_a = props.filterSheetList) === null || _a === void 0 ? void 0 : _a.forEach(function (filterSheet) {\r\n sheetFilterMenu.push(React.createElement(react_native_2.ContextualMenuItem, { text: filterSheet, itemKey: filterSheet, key: filterSheet, onClick: function () { return onSheetFilterSubMenuClick(filterSheet); } }));\r\n });\r\n return sheetFilterMenu;\r\n };\r\n return (React.createElement(react_native_1.View, { accessible: true, testID: Filter_helper_1.FilterControlTestId, style: { flex: 1 } },\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\" } },\r\n React.createElement(FilterButton_1.FilterButton, { expanded: showContextualMenu, onClick: toggleShowContextualMenu, refObject: filterRef }),\r\n props.isRangeInputActive && React.createElement(RangeInput_1.RangeInput, __assign({}, props)),\r\n !props.isRangeInputActive && React.createElement(DisplayFilter_1.DisplayFilter, __assign({}, props))),\r\n showContextualMenu && (React.createElement(react_native_2.ContextualMenu, { target: filterRef, onDismiss: onDismissContextualMenu, onShow: onShowContextualMenu, accessibilityLabel: \"Filter Contextual Menu\", setShowMenu: toggleShowContextualMenu, testID: \"FilterContextualMenu\" },\r\n React.createElement(react_native_2.ContextualMenuItem, { text: stringResource.getString(\"filterByRangeText\"), itemKey: Filter_helper_1.FilterMenuItemKeys.RangeMenuItemKey, onClick: onRangeFilterMenuClicked }),\r\n React.createElement(FilterSubmenuItem_1.FilterSubmenuItem, { text: stringResource.getString(\"filterBySheetText\"), itemKey: Filter_helper_1.FilterMenuItemKeys.SheetMenuItemKey, onHoverIn: toggleShowSubmenu, componentRef: stdMenuItemRef }),\r\n showSubmenu && (React.createElement(react_native_2.Submenu, { target: stdMenuItemRef, onDismiss: onDismissSubmenu, onShow: onShowSubmenu, setShowMenu: toggleShowSubmenu, maxHeight: 200, style: { width: react_native_1.Platform.OS === \"macos\" ? 180 : undefined } }, renderSheetFilterSubMenu())),\r\n React.createElement(react_native_2.ContextualMenuItem, { text: stringResource.getString(\"clearFilterText\"), itemKey: Filter_helper_1.FilterMenuItemKeys.ClearMenuItemKey, onClick: onClearFilterMenuClicked, disabled: (0, Filter_helper_1.isDefaultFilter)(props.filterApplied) })))));\r\n};\r\nexports.FilterSection = FilterSection;\r\n//# sourceMappingURL=FilterSection.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterSection = void 0;\r\nvar FilterSection_1 = require(\"./FilterSection\");\r\nObject.defineProperty(exports, \"FilterSection\", { enumerable: true, get: function () { return FilterSection_1.FilterSection; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterSection = exports.DisplayLocation = void 0;\r\nvar DisplayLocation_1 = require(\"./DisplayLocation\");\r\nObject.defineProperty(exports, \"DisplayLocation\", { enumerable: true, get: function () { return DisplayLocation_1.DisplayLocation; } });\r\nvar FilterSection_1 = require(\"./FilterSection\");\r\nObject.defineProperty(exports, \"FilterSection\", { enumerable: true, get: function () { return FilterSection_1.FilterSection; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RangePicker = void 0;\r\n/**\r\n * Manages the rangePicker running ants marquee selection\r\n */\r\nvar RangePicker = /** @class */ (function () {\r\n function RangePicker() {\r\n // TODO: Replace any with Excel.RangePickerSelectionChangedEventArgs once the type is available in OfficeJS\r\n this.rangePickerSelectionChangedHandle = null;\r\n this.activeWorksheetName = null;\r\n this.activeWorksheetId = null;\r\n }\r\n RangePicker.getRangePicker = function () {\r\n return this.rangePicker;\r\n };\r\n /**\r\n * This function calls the rangePicker API to move the rangePicker running-ants selection with keys\r\n * @param hasCtrl Whether the user is holding the ctrl key, replicates behavior of keyboard grid selection with ctrl in excel\r\n * @param hasShift Whether the user is holding the shift key, replicates behavior of keyboard grid selection with shift in excel\r\n * @param direction The direction of movement, up, down, left or right\r\n */\r\n RangePicker.adjustRangePickerWithKeyboard = function (hasCtrl, hasShift, direction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, Excel.run(function (context) { return __awaiter(_this, void 0, void 0, function () {\r\n var workbook;\r\n return __generator(this, function (_a) {\r\n workbook = context.workbook;\r\n workbook.rangePicker.updateSelectionWithNavigation(hasCtrl, hasShift, direction);\r\n return [2 /*return*/, Promise.resolve()];\r\n });\r\n }); })];\r\n case 1:\r\n _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This function calls the rangePicker API to move the rangePicker running-ants selection to a specific range\r\n * @param range The range to update the selection to\r\n */\r\n RangePicker.adjustRangePickerFromRange = function (range) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, Excel.run(function (context) { return __awaiter(_this, void 0, void 0, function () {\r\n var workbook;\r\n return __generator(this, function (_a) {\r\n workbook = context.workbook;\r\n workbook.rangePicker.updateSelection(range);\r\n return [2 /*return*/, Promise.resolve()];\r\n });\r\n }); })];\r\n case 1:\r\n _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n RangePicker.prototype.isRangePickerMode = function () {\r\n return this.rangePickerSelectionChangedHandle !== null;\r\n };\r\n /**\r\n * This function activates the rangePicker running-ants selection mode\r\n * @param initialRange The range to set the running-ants marquee to on activation\r\n */\r\n RangePicker.prototype.activateRangePicker = function (onSelectionChanged, includeSheetName, initialRange) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, Excel.run(function (context) { return __awaiter(_this, void 0, void 0, function () {\r\n var workbook;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n workbook = context.workbook;\r\n workbook.rangePicker.activate(initialRange);\r\n this.rangePickerSelectionChangedHandle =\r\n workbook.rangePicker.onSelectionChanged.add(function (args) { return __awaiter(_this, void 0, void 0, function () {\r\n var newWorksheet;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(args.worksheetId !== this.activeWorksheetId ||\r\n this.activeWorksheetName === null)) return [3 /*break*/, 2];\r\n this.activeWorksheetId = args.worksheetId;\r\n newWorksheet = context.workbook.worksheets.getItemOrNullObject(args.worksheetId);\r\n newWorksheet.load([\"isNullObject\", \"name\"]);\r\n return [4 /*yield*/, context.sync()];\r\n case 1:\r\n _a.sent();\r\n this.activeWorksheetName = newWorksheet.isNullObject\r\n ? null\r\n : newWorksheet.name;\r\n if (this.activeWorksheetName !== null) {\r\n onSelectionChanged(includeSheetName\r\n ? \"\".concat(this.activeWorksheetName, \"!\").concat(args.address)\r\n : args.address);\r\n }\r\n return [3 /*break*/, 3];\r\n case 2: return [2 /*return*/, Promise.resolve(onSelectionChanged(includeSheetName\r\n ? \"\".concat(this.activeWorksheetName, \"!\").concat(args.address)\r\n : args.address))];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n return [2 /*return*/, Promise.resolve()];\r\n });\r\n }); })];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This function deactivates the rangePicker running-ants selection mode\r\n */\r\n RangePicker.prototype.deactivateRangePicker = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.activeWorksheetId = null;\r\n this.activeWorksheetName = null;\r\n return [4 /*yield*/, Excel.run(function (context) {\r\n // TODO: Remove the local variable with type any once rangePicker is available in the OfficeJS package.\r\n var workbook = context.workbook;\r\n workbook.rangePicker.deactivate();\r\n return Promise.resolve();\r\n })];\r\n case 1:\r\n _a.sent();\r\n if (this.rangePickerSelectionChangedHandle !== null) {\r\n this.rangePickerSelectionChangedHandle.remove();\r\n this.rangePickerSelectionChangedHandle = null;\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n RangePicker.rangePicker = new RangePicker();\r\n return RangePicker;\r\n}());\r\nexports.RangePicker = RangePicker;\r\n//# sourceMappingURL=RangePicker.js.map", "\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RangePickerSelectionInput = void 0;\r\nvar React = __importStar(require(\"react\"));\r\n/**\r\n * Stub class\r\n *\r\n * A \"ref edit\" component that wraps OfficeJS range picker functionality along with a text input box.\r\n * Note that this requires the consuming package or component to include OfficeJS in order to work.\r\n */\r\nvar RangePickerSelectionInput = /** @class */ (function (_super) {\r\n __extends(RangePickerSelectionInput, _super);\r\n function RangePickerSelectionInput(props) {\r\n return _super.call(this, props) || this;\r\n }\r\n RangePickerSelectionInput.prototype.render = function () {\r\n return null;\r\n };\r\n return RangePickerSelectionInput;\r\n}(React.Component));\r\nexports.RangePickerSelectionInput = RangePickerSelectionInput;\r\n//# sourceMappingURL=RangePickerSelectionInput.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RangePickerSelectionInput = exports.RangePicker = void 0;\r\nvar RangePicker_1 = require(\"./RangePicker\");\r\nObject.defineProperty(exports, \"RangePicker\", { enumerable: true, get: function () { return RangePicker_1.RangePicker; } });\r\nvar RangePickerSelectionInput_1 = require(\"./native-common/RangePickerSelectionInput\");\r\nObject.defineProperty(exports, \"RangePickerSelectionInput\", { enumerable: true, get: function () { return RangePickerSelectionInput_1.RangePickerSelectionInput; } });\r\n//# sourceMappingURL=index.native.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExcelScrollableList = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\n/**\r\n * ExcelScrollableList provides a generic list functionality that can take an array of objects + render function\r\n * It will call render for each item and display the content in a vertical list\r\n */\r\nvar ExcelScrollableList = function (props) {\r\n var listRef = React.useRef();\r\n return (\r\n // Stolen from LineageScrollableSection\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"column\", flex: 1 } },\r\n React.createElement(react_native_1.FlatList, { ref: listRef, ListHeaderComponent: props.provider.renderListHeader, ListFooterComponent: props.provider.renderListFooter, style: {\r\n marginTop: 10,\r\n width: \"100%\",\r\n flexGrow: 1,\r\n flexDirection: \"column\",\r\n }, data: props.provider.data, keyExtractor: props.provider.keyExtractor, renderItem: props.provider.renderItem, onEndReachedThreshold: 0.05, onEndReached: props.provider.onEndReached })));\r\n};\r\nexports.ExcelScrollableList = ExcelScrollableList;\r\n//# sourceMappingURL=ExcelScrollableList.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExcelScrollableList = void 0;\r\nvar ExcelScrollableList_1 = require(\"./native-common/ExcelScrollableList\");\r\nObject.defineProperty(exports, \"ExcelScrollableList\", { enumerable: true, get: function () { return ExcelScrollableList_1.ExcelScrollableList; } });\r\n//# sourceMappingURL=index.native.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LoadingSpinner = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nvar React = __importStar(require(\"react\"));\r\nvar LoadingSpinner = function () {\r\n return React.createElement(react_native_1.ActivityIndicator, { color: \"#107c41\" });\r\n};\r\nexports.LoadingSpinner = LoadingSpinner;\r\n//# sourceMappingURL=LoadingSpinner.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LoadingSpinner = void 0;\r\nvar LoadingSpinner_1 = require(\"./LoadingSpinner\");\r\nObject.defineProperty(exports, \"LoadingSpinner\", { enumerable: true, get: function () { return LoadingSpinner_1.LoadingSpinner; } });\r\n//# sourceMappingURL=index.js.map", "{\r\n \"SeeChangesButtonText\": \"See changes\",\r\n \"_SeeChangesButtonText.comment\": \"See changes button to see value changes.\",\r\n \"HideChangesButtonText\": \"Hide changes\",\r\n \"_HideChangesButtonText.comment\": \"Hide changes button to hide value changes.\",\r\n \"MissingOldValueText\": \"Previous value unavailable\",\r\n \"_MissingOldValueText.comment\": \"UI treatment for older values unavailable to display in card.\",\r\n \"BulkEditOverflowText\": \"There are too many changes to show. Try selecting a smaller range.\",\r\n \"_BulkEditOverflowText.comment\": \"UI treatment for oveflow in case of bulk edit.\",\r\n \"LoadingSpinnerText\": \"Getting changes...\",\r\n \"_LoadingSpinnerText.comment\": \"Text on the Loading spinner.\",\r\n \"ActivityTypeEdit\": \"Edited\",\r\n \"_ActivityTypeEdit.comment\": \"Activity type edit for Cell Lineage feature.\",\r\n \"ActivityTypeRename\": \"Renamed\",\r\n \"_ActivityTypeRename.comment\": \"Activity type rename for Cell Lineage feature.\",\r\n \"ActivityTypeMove\": \"Moved\",\r\n \"_ActivityTypeMove.comment\": \"Activity type move for Cell Lineage feature.\",\r\n \"ActivityTypeRenameSheet\": \"Renamed sheet\",\r\n \"_ActivityTypeRenameSheet.comment\": \"Activity type rename sheet for Cell Lineage feature.\",\r\n \"ActivityTypeInsertSheet\": \"Inserted sheet\",\r\n \"_ActivityTypeInsertSheet.comment\": \"Activity type insert sheet for Cell Lineage feature.\",\r\n \"ActivityTypeDeleteSheet\": \"Deleted sheet\",\r\n \"_ActivityTypeDeleteSheet.comment\": \"Activity type delete sheet for Cell Lineage feature.\",\r\n \"ActivityTypeMergeCells\": \"Merged\",\r\n \"_ActivityTypeMergeCells.comment\": \"Activity type merge cells for Cell Lineage feature.\",\r\n \"ActivityTypeUnmergeCells\": \"Unmerged\",\r\n \"_ActivityTypeUnmergeCells.comment\": \"Activity type unmerge cells for Cell Lineage feature.\",\r\n \"ActivityTypeSort\": \"Sorted\",\r\n \"_ActivityTypeSort.comment\": \"Activity type sort for Cell Lineage feature.\",\r\n \"ActivityTypeFullRowInsert\": \"Inserted row\",\r\n \"_ActivityTypeFullRowInsert.comment\": \"Activity type full row insert for Cell Lineage feature.\",\r\n \"ActivityTypeFullColInsert\": \"Inserted column\",\r\n \"_ActivityTypeFullColInsert.comment\": \"Activity type full column insert for Cell Lineage feature.\",\r\n \"ActivityTypeFullRowDelete\": \"Deleted row\",\r\n \"_ActivityTypeFullRowDelete.comment\": \"Activity type full row delete for Cell Lineage feature.\",\r\n \"ActivityTypeFullColDelete\": \"Deleted column\",\r\n \"_ActivityTypeFullColDelete.comment\": \"Activity type full col delete for Cell Lineage feature.\",\r\n \"ActivityTypePartialRowInsert\": \"Inserted cells (shift down)\",\r\n \"_ActivityTypePartialRowInsert.comment\": \"Activity type partial row insert for Cell Lineage feature.\",\r\n \"ActivityTypePartialColInsert\": \"Inserted cells (shift right)\",\r\n \"_ActivityTypePartialColInsert.comment\": \"Activity type partial col insert for Cell Lineage feature.\",\r\n \"ActivityTypePartialColInsertRTL\": \"Inserted cells (shift left)\",\r\n \"_ActivityTypePartialColInsertRTL.comment\": \"Activity type partial col insert rtl for Cell Lineage feature.\",\r\n \"ActivityTypePartialRowDelete\": \"Deleted cells (shift up)\",\r\n \"_ActivityTypePartialRowDelete.comment\": \"Activity type partial row delete for Cell Lineage feature.\",\r\n \"ActivityTypePartialColDelete\": \"Deleted cells (shift left)\",\r\n \"_ActivityTypePartialColDelete.comment\": \"Activity type partial col delete for Cell Lineage feature.\",\r\n \"ActivityTypePartialColDeleteRTL\": \"Deleted cells (shift right)\",\r\n \"_ActivityTypePartialColDeleteRTL.comment\": \"Activity type partial col delete rtl for Cell Lineage feature.\",\r\n \"JustNow\": \"Just now\",\r\n \"_JustNow.comment\": \"Describes when a recent event occurred, within the last two minutes.\",\r\n \"MinAgo\": \"{0} min ago\",\r\n \"_MinAgo.comment\": \"{0} is a number such as '11'. 'min' is a short form representational string for minutes(CLDR logic minute-short). This string refers to some time minutes ago.\",\r\n \"HrAgo\": \"{0} hr ago\",\r\n \"_HrAgo.comment\": \"{0} is a number such as '11'. 'hr' is a short form representational string for 'hours'(CLDR logic hour-short). This string refers to some time hours ago.\",\r\n \"YesterdayAt\": \"Yesterday at {0}\",\r\n \"_YesterdayAt.comment\": \"{0} is a system-localized time string such as '11:59 PM'. This string refers generally to some time yesterday (before last midnight).\",\r\n \"DateTimeCombo\": \"{0} at {1}\",\r\n \"_DateTimeCombo.comment\": \"{0} is a system-localized date string such as 'Wednesday' or 'January 4'. {1} is a system-localized time string such as '4:22 PM'.\",\r\n \"ShowChangesCardRole\": \"Changes card \",\r\n \"_ShowChangesCardRole.comment\": \"Role of the lineage cards for accessibility. 'Changes' is a noun.\",\r\n \"ShowChangesNewValueInfo\": \"New value. \",\r\n \"_ShowChangesNewValueInfo.comment\": \"Information about the cell value change.\",\r\n \"ShowChangesPreviousValueInfo\": \"Previous value. \",\r\n \"_ShowChangesPreviousValueInfo.comment\": \"Information about the cell value change.\",\r\n \"SeeChangesButtonAccessibilityHint\": \"Use enter key to expand.\",\r\n \"_SeeChangesButtonAccessibilityHint.comment\": \"Information about the action on bulk edit button click.\",\r\n \"HideChangesButtonAccessibilityHint\": \"Use enter key to collapse.\",\r\n \"_HideChangesButtonAccessibilityHint.comment\": \"Information about the action on bulk edit button click.\",\r\n \"EmptyValueChange\": \"Empty.\",\r\n \"_EmptyValueChange.comment\": \"Empty = property. Information to read out when value change is empty or blank. For example, an empty box.\",\r\n \"UserActivityCardSelected\": \"Selected.\",\r\n \"_UserActivityCardSelected.comment\": \"Selected = property. Information to read out when user selects a card element.\",\r\n \"ListItemLevel\": \"{0} of {1}.\",\r\n \"_ListItemLevel.comment\": \"Information about the rank or level of an item in a list. For example, '1 of 12', or '5 of 30'.\",\r\n \"CellLocation\": \"Cell\",\r\n \"_CellLocation.comment\": \"Cell location of each card in a bulk edit card\",\r\n \"UserMessageEmptyPaneTitle\": \"New changes appear here\",\r\n \"_UserMessageEmptyPaneTitle.comment\": \"Title text for Success_EndOfLine response from server with empty pane.\",\r\n \"LearnMoreText\": \"Why are some changes not shown?\",\r\n \"_LearnMoreText.comment\": \"Link to know more about missing changes in cell lineage.\",\r\n \"BusinessBarChangesNotSaved\": \"These changes aren't saved to the cloud file and will be lost if discarded\",\r\n \"_BusinessBarChangesNotSaved.comment\":\"SDX business bar error message informing the user changes will be lost if they press the Discard button in the SA/D business bar above.\",\r\n \"FooterWhySomeChangesCantBeShown\": \"Why are some changes not shown?\",\r\n \"_FooterWhySomeChangesCantBeShown.comment\": \"Open a help article explaining why some changes/workbook edits can't be shown.\",\r\n \"UnviewableUnmergedChanges\":\"Your unmerged changes can’t be displayed.\",\r\n \"UnviewableUnmergedChanges.comment\":\"Some edits to the workbook won't be viewable in this pane. This string informs the user that some changes are present but we cannot display them\",\r\n \"LocationDeletedTooltip\":\"Deleted location\",\r\n \"_LocationDeletedTooltip.comment\":\"The tooltip shown when hovered over degraded card with deleted location's info icon.\",\r\n \"LocationDeletedInfo\":\"This change belongs to a deleted location\",\r\n \"_LocationDeletedInfo.comment\":\"The tooltip shown when hovered over degraded card with deleted location's info icon.\",\r\n \"SummaryCardLabel\":\"Other Changes\",\r\n \"_SummaryCardLabel.comment\":\"Some edits to the workbook can't be displayed in a full card, so they will be listed in a summary card. This string is a label for that card.\"\r\n}\r\n", "\"use strict\";\r\n// Type definitions for objects used as part of all components using UserActivity for rendering user actions\r\n// See xlshared/src/Api/UserActivity.cpp and xlshared/xlslib/CoauthUI/Lineage/app/lib/XlsUserActivity.cpp\r\n// for RichAPI and native corresponding elements respectively\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UserActivityType = void 0;\r\nvar UserActivityType;\r\n(function (UserActivityType) {\r\n UserActivityType[UserActivityType[\"None\"] = 0] = \"None\";\r\n UserActivityType[UserActivityType[\"InsertSheet\"] = 1] = \"InsertSheet\";\r\n UserActivityType[UserActivityType[\"DeleteSheet\"] = 2] = \"DeleteSheet\";\r\n UserActivityType[UserActivityType[\"RenameSheet\"] = 3] = \"RenameSheet\";\r\n UserActivityType[UserActivityType[\"ChangeCell\"] = 4] = \"ChangeCell\";\r\n UserActivityType[UserActivityType[\"InsertRow\"] = 5] = \"InsertRow\";\r\n UserActivityType[UserActivityType[\"InsertColumn\"] = 6] = \"InsertColumn\";\r\n UserActivityType[UserActivityType[\"DeleteRow\"] = 7] = \"DeleteRow\";\r\n UserActivityType[UserActivityType[\"DeleteColumn\"] = 8] = \"DeleteColumn\";\r\n UserActivityType[UserActivityType[\"InsertPartialRow\"] = 9] = \"InsertPartialRow\";\r\n UserActivityType[UserActivityType[\"InsertPartialColumn\"] = 10] = \"InsertPartialColumn\";\r\n UserActivityType[UserActivityType[\"InsertPartialColumnRightToLeft\"] = 11] = \"InsertPartialColumnRightToLeft\";\r\n UserActivityType[UserActivityType[\"DeletePartialRow\"] = 12] = \"DeletePartialRow\";\r\n UserActivityType[UserActivityType[\"DeletePartialColumn\"] = 13] = \"DeletePartialColumn\";\r\n UserActivityType[UserActivityType[\"DeletePartialColumnRightToLeft\"] = 14] = \"DeletePartialColumnRightToLeft\";\r\n UserActivityType[UserActivityType[\"Move\"] = 15] = \"Move\";\r\n UserActivityType[UserActivityType[\"Sort\"] = 16] = \"Sort\";\r\n UserActivityType[UserActivityType[\"MergeCells\"] = 17] = \"MergeCells\";\r\n UserActivityType[UserActivityType[\"UnmergeCells\"] = 18] = \"UnmergeCells\";\r\n UserActivityType[UserActivityType[\"UnknownOperation\"] = 19] = \"UnknownOperation\";\r\n UserActivityType[UserActivityType[\"GenericEdit\"] = 20] = \"GenericEdit\";\r\n})(UserActivityType = exports.UserActivityType || (exports.UserActivityType = {}));\r\n//# sourceMappingURL=types.js.map", "//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n", "\r\n \r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n", "\r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n", "\r\n \r\n \r\n \r\n \r\n", "\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getPersonaSize = exports.trimPath = exports.generateAccessibilityInformation = exports.generateSummaryCardAccessibilityLabel = exports.generateActivityInformationFromType = exports.fetchLocationTokensForMoveCards = exports.isActivityTypeNavigable = exports.fetchInitialsFromName = exports.getFriendlyTimeStamp = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nvar moment_1 = __importDefault(require(\"moment\"));\r\nvar types_1 = require(\"../../Components/UserActivityUX/types\");\r\nvar deleteCellsShiftLeft_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/deleteCellsShiftLeft.16.svgx\"));\r\nvar deleteCellsShiftUp_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/deleteCellsShiftUp.16.svgx\"));\r\nvar deleteColumns_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/deleteColumns.16.svgx\"));\r\nvar deleteRows_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/deleteRows.16.svgx\"));\r\nvar deleteSheet_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/deleteSheet.16.svgx\"));\r\nvar editIcon_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/editIcon.16.svgx\"));\r\nvar insertCellsShiftDown_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/insertCellsShiftDown.16.svgx\"));\r\nvar insertCellsShiftRight_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/insertCellsShiftRight.16.svgx\"));\r\nvar insertColumns_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/insertColumns.16.svgx\"));\r\nvar insertRows_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/insertRows.16.svgx\"));\r\nvar insertWorksheet_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/insertWorksheet.16.svgx\"));\r\nvar mergeCells_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/mergeCells.16.svgx\"));\r\nvar rangeDrag_32_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/rangeDrag.32.svgx\"));\r\nvar sortUp_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/sortUp.16.svgx\"));\r\nvar splitCells_16_svgx_1 = __importDefault(require(\"../../../assets/UserActivityUX/splitCells.16.svgx\"));\r\nvar strings = require(\"../../../assets/UserActivityUX/strings.resjson\");\r\n/**\r\n * Convert the passed date to a friendly string, relative to the current time.\r\n * @param displayTimeStamp date to be converted to a string.\r\n * @param contentLanguage optional param about locale information. Defaults to en-US if nothing is passed.\r\n * @param showLocaleBasedDateTimeFormat boolean value to format the timestamp based on locale or not.\r\n * @param testTime optional date for unit testing. production use should not include this parameter.\r\n */\r\nfunction getFriendlyTimeStamp(displayTimeStamp, contentLanguage, showLocaleBasedDateTimeFormat, testTime) {\r\n if (contentLanguage === void 0) { contentLanguage = \"en-US\"; }\r\n if (showLocaleBasedDateTimeFormat === void 0) { showLocaleBasedDateTimeFormat = false; }\r\n var now = testTime\r\n ? (0, moment_1.default)(testTime).locale(contentLanguage)\r\n : (0, moment_1.default)().locale(contentLanguage);\r\n var timeStamp = showLocaleBasedDateTimeFormat\r\n ? (0, moment_1.default)(displayTimeStamp).locale(contentLanguage)\r\n : (0, moment_1.default)(displayTimeStamp);\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(2, \"minute\"))) {\r\n return strings.getString(\"JustNow\");\r\n }\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(1, \"hour\"))) {\r\n return strings\r\n .getString(\"MinAgo\")\r\n .replace(\"{0}\", now.diff(timeStamp, \"minute\").toString());\r\n }\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(1, \"day\"))) {\r\n return strings\r\n .getString(\"HrAgo\")\r\n .replace(\"{0}\", now.diff(timeStamp, \"hour\").toString());\r\n }\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(2, \"day\"))) {\r\n return showLocaleBasedDateTimeFormat\r\n ? strings.getString(\"YesterdayAt\").replace(\"{0}\", timeStamp.format(\"LT\"))\r\n : strings\r\n .getString(\"YesterdayAt\")\r\n .replace(\"{0}\", timeStamp.format(\"h:mm A\"));\r\n }\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(1, \"week\"))) {\r\n return showLocaleBasedDateTimeFormat\r\n ? strings\r\n .getString(\"DateTimeCombo\")\r\n .replace(\"{0}\", timeStamp.format(\"ddd\"))\r\n .replace(\"{1}\", timeStamp.format(\"LT\"))\r\n : strings\r\n .getString(\"DateTimeCombo\")\r\n .replace(\"{0}\", timeStamp.format(\"ddd\"))\r\n .replace(\"{1}\", timeStamp.format(\"h:mm A\"));\r\n }\r\n if (showLocaleBasedDateTimeFormat) {\r\n return strings\r\n .getString(\"DateTimeCombo\")\r\n .replace(\"{0}\", timeStamp.format(\"ll\"))\r\n .replace(\"{1}\", timeStamp.format(\"LT\"));\r\n }\r\n if (timeStamp.isSameOrAfter(now.clone().subtract(1, \"year\"))) {\r\n return strings\r\n .getString(\"DateTimeCombo\")\r\n .replace(\"{0}\", timeStamp.format(\"MMM D\"))\r\n .replace(\"{1}\", timeStamp.format(\"h:mm A\"));\r\n }\r\n return strings\r\n .getString(\"DateTimeCombo\")\r\n .replace(\"{0}\", timeStamp.format(\"MMM D YYYY\"))\r\n .replace(\"{1}\", timeStamp.format(\"h:mm A\"));\r\n}\r\nexports.getFriendlyTimeStamp = getFriendlyTimeStamp;\r\n/**\r\n * Utility function to generate initials from displayName.\r\n * @param displayName name of author as string.\r\n */\r\nfunction fetchInitialsFromName(displayName) {\r\n var initialTokens = displayName.split(\" \");\r\n var initials = \"\";\r\n if (initialTokens.length === 1) {\r\n initials += initialTokens[0].charAt(0).toUpperCase();\r\n }\r\n else {\r\n initials += initialTokens[0].charAt(0).toUpperCase();\r\n initials += initialTokens[initialTokens.length - 1].charAt(0).toUpperCase();\r\n }\r\n return initials;\r\n}\r\nexports.fetchInitialsFromName = fetchInitialsFromName;\r\n/**\r\n * Checks if activity is navigable or not based on type\r\n * @param activityType - Activity type.\r\n */\r\nfunction isActivityTypeNavigable(activityType) {\r\n switch (activityType) {\r\n case types_1.UserActivityType.DeleteSheet:\r\n case types_1.UserActivityType.DeleteColumn:\r\n case types_1.UserActivityType.DeleteRow:\r\n case types_1.UserActivityType.DeletePartialColumn:\r\n case types_1.UserActivityType.DeletePartialRow:\r\n case types_1.UserActivityType.DeletePartialColumnRightToLeft:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n}\r\nexports.isActivityTypeNavigable = isActivityTypeNavigable;\r\n/**\r\n * Returns sheetName and gridLocation tokens for srcLocation/destLocation of move type cards.\r\n * @param locationToken - src/destLocation token string containing sheetName and gridLocation.\r\n */\r\nfunction fetchLocationTokensForMoveCards(locationToken) {\r\n var delimiterIndex = locationToken.lastIndexOf(\"!\");\r\n var sheetName = locationToken.substring(0, delimiterIndex);\r\n var gridLocation = locationToken.substring(delimiterIndex + 1);\r\n return { sheetName: sheetName, gridLocation: gridLocation };\r\n}\r\nexports.fetchLocationTokensForMoveCards = fetchLocationTokensForMoveCards;\r\n/**\r\n * Function that generates all related information of an activity from activity type, like activityVerb, hasAssociatedValueChange, iconType, parentCardCSS etc.\r\n * @param activityType - type of an activity.\r\n */\r\nfunction generateActivityInformationFromType(activityType) {\r\n switch (activityType) {\r\n case types_1.UserActivityType.ChangeCell:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeEdit\"),\r\n ActivityIcon: editIcon_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertRow:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeFullRowInsert\"),\r\n ActivityIcon: insertRows_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeleteRow:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeFullRowDelete\"),\r\n ActivityIcon: deleteRows_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertPartialRow:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialRowInsert\"),\r\n ActivityIcon: insertCellsShiftDown_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeletePartialRow:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialRowDelete\"),\r\n ActivityIcon: deleteCellsShiftUp_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertColumn:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeFullColInsert\"),\r\n ActivityIcon: insertColumns_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeleteColumn:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeFullColDelete\"),\r\n ActivityIcon: deleteColumns_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertPartialColumn:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialColInsert\"),\r\n ActivityIcon: insertCellsShiftRight_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertPartialColumnRightToLeft:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialColInsertRTL\"),\r\n ActivityIcon: insertCellsShiftRight_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeletePartialColumn:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialColDelete\"),\r\n ActivityIcon: deleteCellsShiftLeft_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeletePartialColumnRightToLeft:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypePartialColDeleteRTL\"),\r\n ActivityIcon: deleteCellsShiftLeft_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.DeleteSheet:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeDeleteSheet\"),\r\n ActivityIcon: deleteSheet_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.RenameSheet:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeRename\"),\r\n ActivityIcon: editIcon_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.InsertSheet:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeInsertSheet\"),\r\n ActivityIcon: insertWorksheet_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.Move:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeMove\"),\r\n ActivityIcon: rangeDrag_32_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.Sort:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeSort\"),\r\n ActivityIcon: sortUp_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.MergeCells:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeMergeCells\"),\r\n ActivityIcon: mergeCells_16_svgx_1.default,\r\n };\r\n case types_1.UserActivityType.UnmergeCells:\r\n return {\r\n activityVerb: strings.getString(\"ActivityTypeUnmergeCells\"),\r\n ActivityIcon: splitCells_16_svgx_1.default,\r\n };\r\n default:\r\n return { activityVerb: \"None\", ActivityIcon: editIcon_16_svgx_1.default };\r\n }\r\n}\r\nexports.generateActivityInformationFromType = generateActivityInformationFromType;\r\n/**\r\n * Method that generates accessibility label for a summary card.\r\n * @param summaryCardProps - summary card data and parent name.\r\n */\r\nvar generateSummaryCardAccessibilityLabel = function (summaryCardProps) {\r\n var delimiter = \", \";\r\n var data = summaryCardProps.summaryCardData;\r\n var accessibilityString = strings.getString(\"SummaryCardLabel\") + delimiter;\r\n for (var i = 0; i < data.authors.length; i++) {\r\n accessibilityString += data.authors[i].displayName + delimiter;\r\n }\r\n accessibilityString +=\r\n getFriendlyTimeStamp(data.displayTimestamp, summaryCardProps.contentLanguage, summaryCardProps.showLocaleBasedDateTimeFormat) + delimiter;\r\n for (var i = 0; i < data.summaryUnviewableData.length; i++) {\r\n accessibilityString +=\r\n data.summaryUnviewableData[i] +\r\n (i < data.summaryUnviewableData.length - 1 ? delimiter : \"\");\r\n }\r\n return accessibilityString;\r\n};\r\nexports.generateSummaryCardAccessibilityLabel = generateSummaryCardAccessibilityLabel;\r\n/**\r\n * Method that generates accessibility label from all related information of an activity.\r\n * @param activity - an activity.\r\n * @param cardExpanded - boolean flag indicating if card is expanded.\r\n * @param generateExtendedInfo - boolean flag to add more details of the card.\r\n * @param isSelected - boolean flag indicating if card is selected.\r\n * @param contentLanguage - optional param about locale information.\r\n * @param showLocaleBasedDateTimeFormat boolean value to format the timestamp based on locale or not.\r\n */\r\nvar generateAccessibilityLabel = function (activity, cardExpanded, generateExtendedInfo, isSelected, contentLanguage, showLocaleBasedDateTimeFormat) {\r\n var delimiter = \", \";\r\n var accessibilityString = strings.getString(\"ShowChangesCardRole\") + delimiter;\r\n accessibilityString += activity.author.displayName + delimiter;\r\n accessibilityString +=\r\n getFriendlyTimeStamp(activity.displayTimestamp, contentLanguage, showLocaleBasedDateTimeFormat) + delimiter;\r\n accessibilityString += generateActivityInformationFromType(activity.activityType).activityVerb;\r\n if (activity.locationDeleted) {\r\n accessibilityString +=\r\n activity.sheetName +\r\n delimiter +\r\n activity.gridLocation +\r\n delimiter +\r\n strings.getString(\"LocationDeletedTooltip\") +\r\n delimiter;\r\n }\r\n else {\r\n // For move activity type, fetch src and destination sheet name and grid location from value changes list\r\n if (activity.activityType === types_1.UserActivityType.Move) {\r\n var srcLocationTokens = fetchLocationTokensForMoveCards(activity.valueChanges[0].oldValue);\r\n var destLocationTokens = fetchLocationTokensForMoveCards(activity.valueChanges[0].newValue);\r\n accessibilityString +=\r\n srcLocationTokens.sheetName +\r\n delimiter +\r\n srcLocationTokens.gridLocation +\r\n delimiter;\r\n accessibilityString +=\r\n destLocationTokens.sheetName +\r\n delimiter +\r\n destLocationTokens.gridLocation +\r\n delimiter;\r\n }\r\n else {\r\n accessibilityString +=\r\n activity.sheetName + delimiter + activity.gridLocation + delimiter;\r\n }\r\n }\r\n if (activity.valueChanges.length > 1) {\r\n var buttonAccessabilityString = cardExpanded\r\n ? strings.getString(\"HideChangesButtonText\")\r\n : strings.getString(\"SeeChangesButtonText\");\r\n accessibilityString += buttonAccessabilityString + delimiter;\r\n }\r\n if (generateExtendedInfo &&\r\n activity.activityType === types_1.UserActivityType.ChangeCell &&\r\n (activity.valueChanges.length === 1 || cardExpanded)) {\r\n for (var i = 0; i < activity.valueChanges.length; i++) {\r\n var newValueToRead = activity.valueChanges[i].newValue &&\r\n activity.valueChanges[i].newValue.length > 0\r\n ? activity.valueChanges[i].newValue\r\n : strings.getString(\"EmptyValueChange\");\r\n var oldValueToRead = activity.valueChanges[i].oldValue &&\r\n activity.valueChanges[i].oldValue.length > 0\r\n ? activity.valueChanges[i].oldValue\r\n : strings.getString(\"EmptyValueChange\");\r\n var cellLocation = activity.valueChanges.length > 1\r\n ? strings.getString(\"\") + activity.valueChanges[i].cellLocation\r\n : \"\";\r\n accessibilityString += cellLocation;\r\n accessibilityString +=\r\n strings.getString(\"ShowChangesNewValueInfo\") +\r\n newValueToRead +\r\n delimiter;\r\n accessibilityString +=\r\n strings.getString(\"ShowChangesPreviousValueInfo\") +\r\n oldValueToRead +\r\n (i < activity.valueChanges.length - 1 ? delimiter : \"\");\r\n }\r\n }\r\n if (activity.locationDeleted && isSelected) {\r\n accessibilityString += strings.getString(\"LocationDeletedInfo\");\r\n }\r\n return accessibilityString;\r\n};\r\n/**\r\n * Method that generates entire accessibility information for a user activity card.\r\n * This is needed for macOS until the correct fix in the control is available. VSO: 5934594\r\n * @param activity - an activity.\r\n * @param cardExpanded - set when card is expanded\r\n * @param cardIndex - token about the rank/order of the card in the list.\r\n * @param activityListSize - token about the activity list size. Screen Reader uses these announce the rank/order of the card.\r\n * @param isSelected - set when card is selected.\r\n * @param contentLanguage optional param about locale information.\r\n * @param showLocaleBasedDateTimeFormat boolean value to format the timestamp based on locale or not.\r\n */\r\nvar generateAccessibilityInformation = function (activity, cardExpanded, cardIndex, activityListSize, generateExtendedInfo, isSelected, contentLanguage, showLocaleBasedDateTimeFormat) {\r\n var accessibilityString = generateAccessibilityLabel(activity, cardExpanded, generateExtendedInfo, isSelected, contentLanguage, showLocaleBasedDateTimeFormat);\r\n if (react_native_1.Platform.OS !== \"macos\") {\r\n return accessibilityString;\r\n }\r\n // Append information about the level or rank of card in the list.\r\n accessibilityString += strings\r\n .getString(\"ListItemLevel\")\r\n .replace(\"{0}\", cardIndex)\r\n .replace(\"{1}\", activityListSize);\r\n return accessibilityString;\r\n};\r\nexports.generateAccessibilityInformation = generateAccessibilityInformation;\r\n/**\r\n * Method trims a filepath URL to fit in a container width. It prioritizes the parent folder, then the root folder, then the remainder of the URL.\r\n * @param displayUrl Filepath URL, should be in MRU Friendly path format\r\n * @param containerWidth The container width the text should fit in, in px.\r\n * @param offsetNumber The number of characters to offset the end of the string by to prevent React's auto ellipse.\r\n * @param avgCharPixelWidth The average pixel width assigned to each individual character. Needed to get width of a string.\r\n * @returns Trimmed URL string of the filepath.\r\n */\r\nfunction trimPath(displayUrl, containerWidth, offsetNumber, avgCharPixelWidth) {\r\n if (displayUrl === undefined || displayUrl.length === 0) {\r\n return \"\";\r\n }\r\n if (!displayUrl.includes(\"»\")) {\r\n return displayUrl;\r\n }\r\n var currentTextWidth = displayUrl.length * avgCharPixelWidth;\r\n // offsetNumber * avgCharPixelWidth is to give buffer to string. Sometimes even if textWidth < containerWidth, react still truncates the end to ellipses.\r\n // If displayUrl already fits inside the container, no need to do any trimming. Just return displayUrl\r\n if (currentTextWidth + offsetNumber * avgCharPixelWidth < containerWidth) {\r\n return displayUrl;\r\n }\r\n var parentFolderStartIndex = displayUrl.lastIndexOf(\"»\");\r\n var originalTrimmedPathWithoutParent = displayUrl.substring(0, parentFolderStartIndex);\r\n var trimmedPath = \" ... \" + displayUrl.substring(parentFolderStartIndex); // This creates the \"... >> Parent Folder\" string\r\n currentTextWidth = trimmedPath.length * avgCharPixelWidth;\r\n // If \"... >> Parent Folder\" is already too big for the container, just return \"... >> Parent Folder\", React will truncate the end automatically\r\n if (currentTextWidth > containerWidth) {\r\n return trimmedPath;\r\n }\r\n var parentFolderStringWithEllipse = trimmedPath;\r\n var endIndex = 0;\r\n // If \"... >> Parent Folder\" fits inside the container, start appending characters from the beginning of the URL until it's too wide\r\n while (currentTextWidth + offsetNumber * avgCharPixelWidth < containerWidth) {\r\n ++endIndex;\r\n trimmedPath =\r\n originalTrimmedPathWithoutParent.substring(0, endIndex) +\r\n parentFolderStringWithEllipse;\r\n currentTextWidth = trimmedPath.length * avgCharPixelWidth;\r\n }\r\n return trimmedPath;\r\n}\r\nexports.trimPath = trimPath;\r\n/**\r\n * Method that takes the font scale and returns appropriate size for the PersonaCoin\r\n * @returns appropriate size for the PersonaCoin\r\n */\r\nfunction getPersonaSize() {\r\n var baseSize = 24;\r\n var scaledSize = baseSize * (0, react_native_1.useWindowDimensions)().fontScale;\r\n if (scaledSize < 32) {\r\n return \"size24\";\r\n }\r\n else if (scaledSize < 40) {\r\n return \"size32\";\r\n }\r\n else if (scaledSize < 48) {\r\n return \"size40\";\r\n }\r\n else if (scaledSize < 56) {\r\n return \"size48\";\r\n }\r\n else if (scaledSize < 72) {\r\n return \"size56\";\r\n }\r\n else if (scaledSize < 100) {\r\n return \"size72\";\r\n }\r\n else if (scaledSize < 120) {\r\n return \"size100\";\r\n }\r\n return \"size120\";\r\n}\r\nexports.getPersonaSize = getPersonaSize;\r\n//# sourceMappingURL=Helper.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.parentCardSelectedStyle = exports.parentCardStyle = exports.defaultBulkEditCardHeight = exports.defaultCardHeight = exports.baseCardMargin = void 0;\r\nexports.baseCardMargin = 16;\r\nexports.defaultCardHeight = 113;\r\nexports.defaultBulkEditCardHeight = 90;\r\n// Styling common to all card container\r\nexports.parentCardStyle = {\r\n marginBottom: exports.baseCardMargin,\r\n padding: 10,\r\n borderRadius: 4,\r\n borderWidth: 1,\r\n};\r\n// Styling for selected card container\r\nexports.parentCardSelectedStyle = __assign(__assign({}, exports.parentCardStyle), { borderWidth: 2, padding: 9 });\r\n//# sourceMappingURL=UserActivityCard.styles.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getOldValueIconStyle = exports.getNewOldValueSeparatorStyle = exports.valueChangeTextContainer = exports.itemValueTextBaseStyle = void 0;\r\nexports.itemValueTextBaseStyle = {\r\n fontSize: 12,\r\n};\r\nexports.valueChangeTextContainer = {\r\n marginHorizontal: 10,\r\n marginTop: -2,\r\n};\r\nfunction getNewOldValueSeparatorStyle(fontScale, borderColor) {\r\n return {\r\n borderWidth: 1,\r\n borderColor: borderColor,\r\n marginBottom: 5 * fontScale,\r\n marginTop: 15,\r\n height: \"100%\",\r\n position: \"absolute\",\r\n };\r\n}\r\nexports.getNewOldValueSeparatorStyle = getNewOldValueSeparatorStyle;\r\nfunction getOldValueIconStyle(fontScale) {\r\n return {\r\n padding: 4 * fontScale, // Set padding dynamically based on font scale to center align old value and new value icons\r\n };\r\n}\r\nexports.getOldValueIconStyle = getOldValueIconStyle;\r\n//# sourceMappingURL=NewOldValue.styles.js.map", "\r\n\t\r\n\t\r\n", "\r\n \r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NewOldValue = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar NewOldValue_styles_1 = require(\"./NewOldValue.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar newValueIcon_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/newValueIcon.svgx\"));\r\nvar oldValueIcon_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/oldValueIcon.svgx\"));\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\nvar NewOldValue = function (props) {\r\n /**\r\n * Function that handles the rendering of new-old text for an activity\r\n * @param value - value string.\r\n * @param color - font color.\r\n * @param testID - ID for testing purpose.\r\n */\r\n var renderValue = function (value, valueChangeInfo, color, testID) {\r\n var isMacOS = react_native_1.Platform.OS === \"macos\" ? true : false;\r\n var accessibilityLabel = valueChangeInfo +\r\n (value.length ? value : strings.getString(\"EmptyValueChange\"));\r\n if (props.valueChangesListSize) {\r\n accessibilityLabel +=\r\n \", \" +\r\n strings\r\n .getString(\"ListItemLevel\")\r\n .replace(\"{0}\", props.valueChangeItemIndex + 1)\r\n .replace(\"{1}\", props.valueChangesListSize);\r\n }\r\n return (React.createElement(react_native_1.Pressable, { style: NewOldValue_styles_1.valueChangeTextContainer, onPress: props.onValueChangeClicked, focusable: false, accessible: false },\r\n !props.showEllipsis && (React.createElement(react_native_2.Text, { style: __assign(__assign({}, NewOldValue_styles_1.itemValueTextBaseStyle), { color: color }), focusable: !isMacOS ? true : props.focusCardElements, accessible: !isMacOS ? true : props.focusCardElements, selectable: !isMacOS ? undefined : props.focusCardElements, accessibilityLabel: accessibilityLabel, testID: testID, tooltip: !isMacOS ? value : undefined }, value.length ? value : \" \")),\r\n props.showEllipsis && (React.createElement(react_native_2.Text, { style: __assign(__assign({}, NewOldValue_styles_1.itemValueTextBaseStyle), { color: color }), ellipsizeMode: \"tail\", numberOfLines: 1 }, value))));\r\n };\r\n var shouldRenderOldValue = props.oldValue !== undefined;\r\n var theme = (0, theme_types_1.useTheme)();\r\n var fontScale = (0, react_native_1.useWindowDimensions)().fontScale;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", marginTop: 6 } },\r\n React.createElement(react_native_1.View, { style: { alignItems: \"center\" } },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: newValueIcon_svgx_1.default, width: 16, height: 16, fill: theme.colors.defaultIcon }),\r\n shouldRenderOldValue && (React.createElement(react_native_1.View, { style: (0, NewOldValue_styles_1.getNewOldValueSeparatorStyle)(fontScale, theme.colors.defaultIcon) }))),\r\n renderValue(props.newValue, strings.getString(\"ShowChangesNewValueInfo\"), theme.colors.newValueText, \"NewValueContainer\")),\r\n shouldRenderOldValue && (React.createElement(react_native_1.View, { style: { flexDirection: \"row\", marginTop: 6 } },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: oldValueIcon_svgx_1.default, width: 16, height: 16, style: (0, NewOldValue_styles_1.getOldValueIconStyle)(fontScale), fill: theme.colors.defaultIcon }),\r\n renderValue(props.oldValue, strings.getString(\"ShowChangesPreviousValueInfo\"), theme.colors.oldValueText, \"OldValueContainer\")))));\r\n};\r\nexports.NewOldValue = NewOldValue;\r\n//# sourceMappingURL=NewOldValue.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.itemCellValueStyle = exports.newPrevValueContainer = void 0;\r\n// Styling for individual new-prev value container\r\nexports.newPrevValueContainer = {\r\n borderBottomWidth: 1,\r\n paddingBottom: 7,\r\n marginBottom: 4,\r\n};\r\nexports.itemCellValueStyle = {\r\n fontSize: 12,\r\n lineHeight: 14,\r\n margin: 0,\r\n paddingTop: 5,\r\n paddingLeft: 2,\r\n};\r\n//# sourceMappingURL=BulkEditItem.styles.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BulkEditItem = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar NewOldValue_1 = require(\"../NewOldValue/NewOldValue\");\r\nvar BulkEditItem_styles_1 = require(\"./BulkEditItem.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\n// Renders cell location, new-old values and a separator line.\r\nvar BulkEditItem = function (props) {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var changedCell = props.valueChange.cellLocation;\r\n var accessibilityLabel = strings.getString(\"CellLocation\") + changedCell;\r\n var onSubCellLocationClicked = function () {\r\n return props.onSubCellLocationClicked(changedCell);\r\n };\r\n var onKeyDown = function (event) {\r\n if (event.nativeEvent.key === \"Enter\") {\r\n event.stopPropagation();\r\n onSubCellLocationClicked();\r\n }\r\n };\r\n return (React.createElement(react_native_1.Pressable, __assign({ style: __assign(__assign({}, BulkEditItem_styles_1.newPrevValueContainer), { borderColor: theme.colors.defaultBorder }) }, { onKeyDown: onKeyDown }, { onPress: onSubCellLocationClicked, focusable: false }),\r\n changedCell && (React.createElement(react_native_2.Text, { style: BulkEditItem_styles_1.itemCellValueStyle, accessibilityRole: \"text\", selectable: react_native_1.Platform.OS === \"macos\" ? true : false, focusable: true, accessible: true, accessibilityLabel: accessibilityLabel }, changedCell)),\r\n React.createElement(NewOldValue_1.NewOldValue, { newValue: props.valueChange.newValue, oldValue: props.valueChange.oldValue, showEllipsis: false, focusCardElements: true, valueChangeItemIndex: props.valueChangeItemIndex, valueChangesListSize: props.valueChangesListSize, onValueChangeClicked: onSubCellLocationClicked })));\r\n};\r\nexports.BulkEditItem = BulkEditItem;\r\n//# sourceMappingURL=BulkEditItem.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.bulkEditOverflowTextStyle = exports.bulkEditOverflowContainer = exports.valueListContainer = void 0;\r\nexports.valueListContainer = {\r\n marginTop: 5,\r\n marginLeft: 23,\r\n};\r\nexports.bulkEditOverflowContainer = {\r\n paddingTop: 22,\r\n paddingRight: 20,\r\n paddingLeft: 10,\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n};\r\nexports.bulkEditOverflowTextStyle = {\r\n fontSize: 12,\r\n lineHeight: 14,\r\n margin: 0,\r\n paddingTop: 5,\r\n paddingLeft: 2,\r\n};\r\n//# sourceMappingURL=BulkEditList.styles.js.map", "\r\n \r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BulkEditList = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar BulkEditItem_1 = require(\"../BulkEditItem/BulkEditItem\");\r\nvar BulkEditList_styles_1 = require(\"./BulkEditList.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar bulkEditInfo_16_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/bulkEditInfo.16.svgx\"));\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\nvar BulkEditList = function (props) {\r\n // Scroll View does not resize dynamically to fit content since it takes a static height.\r\n // As a consequence, there are blank patches at the end of the Scroll View when the value changes list has fewer items.\r\n // Using a lower height value for the Scroll View in case the value changes list has fewer items.\r\n var scrollViewHeight = props.bulkEditValueChanges.length > 2 ? 240 : 160;\r\n /**\r\n * Function that handles rendering of old-new value pair, affected cell and new old icons for a bulk activity\r\n * @param valueChange - new/old value change associated with an activity.\r\n * @param index - index of valueChange\r\n */\r\n var onRenderBulkEditItem = function (valueChange, index) {\r\n return (React.createElement(BulkEditItem_1.BulkEditItem, { key: index, valueChangeItemIndex: index, valueChangesListSize: props.bulkEditValueChanges.length, valueChange: valueChange, onSubCellLocationClicked: props.onSubCellLocationClicked }));\r\n };\r\n var theme = (0, theme_types_1.useTheme)();\r\n return (React.createElement(react_native_1.ScrollView, { style: __assign(__assign({}, BulkEditList_styles_1.valueListContainer), { height: scrollViewHeight }), accessible: true, testID: props.testIdPrefix + \"BulkEditContainer\", accessibilityRole: \"tablist\" },\r\n props.bulkEditValueChanges.map(function (bulkEditItem, index) {\r\n return onRenderBulkEditItem(bulkEditItem, index);\r\n }),\r\n props.isBulkEditOverflow && (React.createElement(react_native_1.View, { style: __assign({}, BulkEditList_styles_1.bulkEditOverflowContainer), accessible: true, focusable: true },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: bulkEditInfo_16_svgx_1.default, width: 24, height: 24, fill: theme.colors.defaultIcon }),\r\n React.createElement(react_native_2.Text, { style: __assign(__assign({}, BulkEditList_styles_1.bulkEditOverflowTextStyle), { textAlign: \"center\" }) }, strings.getString(\"BulkEditOverflowText\"))))));\r\n};\r\nexports.BulkEditList = BulkEditList;\r\n//# sourceMappingURL=BulkEditList.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.buttonBorderStyle = exports.showChangesButtonStyles = void 0;\r\n// Styling for Show/Hide changes button\r\nexports.showChangesButtonStyles = {\r\n fontSize: 12,\r\n fontWeight: \"600\",\r\n};\r\nexports.buttonBorderStyle = {\r\n paddingHorizontal: 2,\r\n alignSelf: \"flex-start\",\r\n borderWidth: 1,\r\n};\r\n//# sourceMappingURL=BulkEditButton.styles.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BulkEditButton = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar react_native_2 = require(\"react-native\");\r\nvar BulkEditButton_styles_1 = require(\"./BulkEditButton.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\nvar BulkEditButton = function (props) {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var bulkEditButtonRef = props.bulkEditButtonTestOnlyProp\r\n ? undefined\r\n : React.useRef();\r\n var _a = React.useState(false), focused = _a[0], setFocused = _a[1];\r\n // RN View in win32 does not take focus when doing ref.current?.focus(). Using this hook eliminates the problem.\r\n // This is not necessary for macOS as mac doesn't have this issue.\r\n var bulkEditButtonFocusRef = (0, react_native_1.useViewCommandFocus)(bulkEditButtonRef);\r\n React.useEffect(function () {\r\n var _a;\r\n if (props.focusCardElements) {\r\n // Place focus on bulk edit button.\r\n (_a = bulkEditButtonRef === null || bulkEditButtonRef === void 0 ? void 0 : bulkEditButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n if (!props.refactorExpandChangesToggled) {\r\n // Expand the card.\r\n props.onExpandChangesToggled(true);\r\n }\r\n }\r\n }, [props.focusCardElements]);\r\n var onBulkEditButtonClick = function () {\r\n var _a;\r\n (_a = bulkEditButtonRef === null || bulkEditButtonRef === void 0 ? void 0 : bulkEditButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n props.onExpandChangesToggled(!props.isBulkEditCardExpanded);\r\n };\r\n var getButtonBorderColor = function () {\r\n if (focused) {\r\n return theme.colors.brandForeground1;\r\n }\r\n if (props.locationDeleted) {\r\n return theme.colors.degradedCardBackground;\r\n }\r\n return theme.colors.defaultCardBackground;\r\n };\r\n var onKeyDown = function (ev) {\r\n // When user presses `Enter` on See/Hide Changes button, trigger expand/collapse logic.\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n // Stop event propagation as key press is handled by props.onExpandChangesToggled().\r\n // We do not want this event to propagate to card and be handled again by onKeyDown() in UserActivityCard.\r\n ev.stopPropagation();\r\n props.onExpandChangesToggled(!props.isBulkEditCardExpanded);\r\n }\r\n };\r\n var bulkEditButtonText = props.isBulkEditCardExpanded\r\n ? strings.getString(\"HideChangesButtonText\")\r\n : strings.getString(\"SeeChangesButtonText\");\r\n return (React.createElement(react_native_2.Pressable, __assign({ ref: bulkEditButtonFocusRef, testID: props.testIdPrefix + \"BulkEditButton\", focusable: react_native_2.Platform.OS === \"macos\" ? props.focusCardElements : true, accessibilityRole: \"button\", accessibilityState: {\r\n disabled: false,\r\n expanded: props.isBulkEditCardExpanded,\r\n }, accessibilityActions: [{ name: \"Expand\" }, { name: \"Collapse\" }], onAccessibilityAction: function () {\r\n return props.onExpandChangesToggled(!props.isBulkEditCardExpanded);\r\n }, accessibilityLabel: bulkEditButtonText, accessibilityHint: props.isBulkEditCardExpanded\r\n ? strings.getString(\"HideChangesButtonAccessibilityHint\")\r\n : strings.getString(\"SeeChangesButtonAccessibilityHint\"), style: __assign(__assign({}, BulkEditButton_styles_1.buttonBorderStyle), { borderColor: getButtonBorderColor() }) }, { onKeyDown: onKeyDown }, { onPress: onBulkEditButtonClick, onFocus: function () { return setFocused(true); }, onBlur: function () { return setFocused(false); } }),\r\n React.createElement(react_native_1.Text, { style: __assign(__assign({}, BulkEditButton_styles_1.showChangesButtonStyles), { color: theme.colors.link }) }, bulkEditButtonText)));\r\n};\r\nexports.BulkEditButton = BulkEditButton;\r\n//# sourceMappingURL=BulkEditButton.native.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CellValueChangesInfo = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar types_1 = require(\"../types\");\r\nvar NewOldValue_1 = require(\"../NewOldValue/NewOldValue\");\r\nvar BulkEditList_1 = require(\"../BulkEditList/BulkEditList\");\r\nvar BulkEditButton_1 = require(\"../BulkEditButton/BulkEditButton\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\n// This component renders value changes associated with an activity in a card.\r\nvar CellValueChangesInfo = function (props) {\r\n var innerFocusZoneRef = React.createRef();\r\n React.useEffect(function () {\r\n var _a;\r\n if (props.areCardElementsNavigable) {\r\n // When right key is pressed on a card, inner elements become navigable (areCardsNavigable = true).\r\n // So, we place focus on the first focusable element inside the card.\r\n // VSO 6395428: [Feature Request win32] FURN FocusZone: Expose an API to land focus on first focusable element of FZ\r\n (_a = innerFocusZoneRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n }, [props.areCardElementsNavigable]);\r\n var onSubCellLocationClicked = function (changedCell) {\r\n return props.onCardPressed(props.activity, changedCell, undefined);\r\n };\r\n var onSingleValueChangeClicked = function () {\r\n props.onCardElementsFocused();\r\n props.onCardPressed(props.activity, undefined, undefined);\r\n };\r\n /**\r\n * Function that renders the component of an activity having one or no value change associated with it\r\n */\r\n var renderSingleValueChangeComponent = function () {\r\n var valueChange = props.activity.valueChanges[0];\r\n return (React.createElement(react_native_1.View, { style: { paddingLeft: 23 } },\r\n React.createElement(react_native_2.FocusZone, { componentRef: innerFocusZoneRef, isCircularNavigation: true, focusZoneDirection: \"vertical\", disabled: !props.areCardElementsNavigable },\r\n React.createElement(NewOldValue_1.NewOldValue, { newValue: valueChange.newValue, oldValue: valueChange.oldValue, showEllipsis: !props.isSelected, focusCardElements: props.areCardElementsNavigable, onValueChangeClicked: onSingleValueChangeClicked }))));\r\n };\r\n /**\r\n * Function that renders the description of an activity having multiple value change associated with it\r\n */\r\n var renderMultipleValueChangeComponent = function () {\r\n return (React.createElement(react_native_1.View, { style: { marginTop: 6, marginLeft: 5 } },\r\n React.createElement(react_native_2.FocusZone, { isCircularNavigation: true, focusZoneDirection: \"vertical\", disabled: !props.areCardElementsNavigable },\r\n React.createElement(BulkEditButton_1.BulkEditButton, { isBulkEditCardExpanded: props.expandUserActivityCard, onExpandChangesToggled: props.onExpandChangesToggled, focusCardElements: props.areCardElementsNavigable, locationDeleted: props.activity.locationDeleted, testIdPrefix: props.testIdPrefix, refactorExpandChangesToggled: props.refactorExpandChangesToggled }),\r\n props.expandUserActivityCard && (React.createElement(BulkEditList_1.BulkEditList, { bulkEditValueChanges: props.activity.valueChanges, isBulkEditOverflow: props.activity.isBulkEditOverflow, onSubCellLocationClicked: onSubCellLocationClicked, testIdPrefix: props.testIdPrefix })))));\r\n };\r\n // Do not render valueChanges for non cell-edit cards\r\n if (props.activity.activityType !== types_1.UserActivityType.ChangeCell) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n return (React.createElement(React.Fragment, null,\r\n props.activity.valueChanges.length === 1 &&\r\n renderSingleValueChangeComponent(),\r\n props.activity.valueChanges.length > 1 &&\r\n renderMultipleValueChangeComponent()));\r\n};\r\nexports.CellValueChangesInfo = CellValueChangesInfo;\r\n//# sourceMappingURL=CellValueChangesInfo.native.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.baseActivityDescriptionTextPadded = exports.baseActivityDescriptionText = void 0;\r\nexports.baseActivityDescriptionText = {\r\n fontSize: 12,\r\n fontWeight: \"600\",\r\n overflow: \"hidden\",\r\n};\r\nexports.baseActivityDescriptionTextPadded = __assign(__assign({}, exports.baseActivityDescriptionText), { paddingRight: 4 });\r\n//# sourceMappingURL=ActivityInfo.styles.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.globalFriendlyDateTimer = void 0;\r\n/** Utility class to manage update of all FriendlyDate controls - centralized to keep them all updating at the same time.\r\n * Update period is ~1 minute.\r\n */\r\nvar FriendlyDateTimer = /** @class */ (function () {\r\n function FriendlyDateTimer() {\r\n this._msPerMinute = 1000 * 60;\r\n this.map = new Map();\r\n }\r\n FriendlyDateTimer.prototype.register = function (key, updateFriendlyDate) {\r\n var _this = this;\r\n this.map.set(key, updateFriendlyDate);\r\n if (this.timerId === undefined) {\r\n this.timerId = window.setInterval(function () { return _this.onTimerFired(); }, this._msPerMinute);\r\n }\r\n };\r\n FriendlyDateTimer.prototype.unregister = function (key) {\r\n this.map.delete(key);\r\n if (this.map.size === 0) {\r\n window.clearInterval(this.timerId);\r\n this.timerId = undefined;\r\n }\r\n };\r\n FriendlyDateTimer.prototype.onTimerFired = function () {\r\n this.map.forEach(function (updateFriendlyDate) { return updateFriendlyDate(); });\r\n };\r\n return FriendlyDateTimer;\r\n}());\r\nexports.globalFriendlyDateTimer = new FriendlyDateTimer();\r\n//# sourceMappingURL=FriendlyDateTimer.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FriendlyDate = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar Helper_1 = require(\"../../Utilities/UserActivityUX/Helper\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar FriendlyDateTimer_1 = require(\"./FriendlyDateTimer\");\r\n/** Component to display a past date in a friendly format relative to now. */\r\nvar FriendlyDate = function (props) {\r\n var _a = React.useState((0, Helper_1.getFriendlyTimeStamp)(props.displayTimestamp, props.contentLanguage, props.showLocaleBasedDateTimeFormat)), friendlyDate = _a[0], setFriendlyDate = _a[1];\r\n var updateFriendlyDate = function () {\r\n return setFriendlyDate((0, Helper_1.getFriendlyTimeStamp)(props.displayTimestamp, props.contentLanguage, props.showLocaleBasedDateTimeFormat));\r\n };\r\n React.useEffect(function () {\r\n FriendlyDateTimer_1.globalFriendlyDateTimer.register(props.id, updateFriendlyDate);\r\n return function () { return FriendlyDateTimer_1.globalFriendlyDateTimer.unregister(props.id); };\r\n }, []);\r\n var getTextStyle = function () {\r\n var theme = (0, theme_types_1.useTheme)();\r\n return {\r\n fontSize: 12,\r\n color: theme.colors.friendlyDateText,\r\n flexGrow: 1,\r\n textAlign: \"right\",\r\n marginLeft: 4,\r\n marginTop: 3,\r\n };\r\n };\r\n return (React.createElement(react_native_1.Text, { numberOfLines: 1, tooltip: friendlyDate, style: getTextStyle() }, friendlyDate));\r\n};\r\nexports.FriendlyDate = FriendlyDate;\r\n//# sourceMappingURL=FriendlyDate.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.personaTextStyle = void 0;\r\nexports.personaTextStyle = {\r\n marginTop: 3,\r\n marginLeft: 5,\r\n fontWeight: \"600\",\r\n fontSize: 14,\r\n flexShrink: 1,\r\n};\r\n//# sourceMappingURL=PersonaInfo.styles.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getPersonImageUrl = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nvar _stubNativeModule = {\r\n getUriForPerson: function (_email) {\r\n return Promise.reject(new Error(\"No PeoplePictureModule found in host\"));\r\n },\r\n};\r\nvar PeoplePictureModule = react_native_1.TurboModuleRegistry.get(\"PeoplePictureModule\") ||\r\n _stubNativeModule;\r\nvar getPersonImageUrl = function (email) {\r\n if (!email) {\r\n return Promise.reject(new Error(\"Invalid email\"));\r\n }\r\n // PeoplePictureModule rejects promise if author image is not available. So return empty string for promise rejection.\r\n return PeoplePictureModule.getUriForPerson(email).then(function (uri) { return ({ imageUrl: uri }); }, function () { return ({ imageUrl: \"\" }); });\r\n};\r\nexports.getPersonImageUrl = getPersonImageUrl;\r\n//# sourceMappingURL=PeoplePicture.native.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PersonaInfo = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar Helper_1 = require(\"../../../Utilities/UserActivityUX/Helper\");\r\nvar PersonaInfo_styles_1 = require(\"./PersonaInfo.styles\");\r\nvar PeoplePicture_1 = require(\"../../../Utilities/PeoplePicture/PeoplePicture\");\r\nvar PersonaInfo = function (props) {\r\n if (!props.author.displayName) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n var _a = React.useState(), imageUrl = _a[0], setImageUrl = _a[1];\r\n React.useEffect(function () {\r\n var componentMounted = true;\r\n if (!props.showPersonaImage) {\r\n return;\r\n }\r\n (0, PeoplePicture_1.getPersonImageUrl)(props.author.email).then(function (avatarProps) {\r\n // Check for empty string as PersonaCoin does not show initials for empty URLs\r\n if (componentMounted && avatarProps.imageUrl) {\r\n setImageUrl(avatarProps.imageUrl);\r\n }\r\n });\r\n return function () {\r\n componentMounted = false;\r\n };\r\n }, [props.author.email]);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(react_native_1.PersonaCoin, { size: (0, Helper_1.getPersonaSize)(), imageUrl: imageUrl, initials: (0, Helper_1.fetchInitialsFromName)(props.author.displayName) }),\r\n React.createElement(react_native_1.Text, { style: PersonaInfo_styles_1.personaTextStyle, numberOfLines: 1, tooltip: props.author.displayName }, props.author.displayName)));\r\n};\r\nexports.PersonaInfo = PersonaInfo;\r\n//# sourceMappingURL=PersonaInfo.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.degradedInfoButtonStyle = exports.activityRangeInfoStyle = void 0;\r\nvar react_native_1 = require(\"react-native\");\r\nexports.activityRangeInfoStyle = {\r\n maxWidth: \"50%\",\r\n paddingLeft: 4,\r\n paddingRight: react_native_1.Platform.OS === \"macos\" ? 4 : 3,\r\n borderRadius: 2,\r\n flexDirection: \"row\",\r\n};\r\nexports.degradedInfoButtonStyle = {\r\n marginLeft: 4,\r\n backgroundColor: \"none\",\r\n borderWidth: 0,\r\n};\r\n//# sourceMappingURL=ActivityRangeInfo.styles.js.map", "\n\n\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ActivityRangeInfo = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar FontScaledIconButton_1 = require(\"../../FontScaledIconButton\");\r\nvar ActivityInfo_styles_1 = require(\"../ActivityInfo/ActivityInfo.styles\");\r\nvar ActivityRangeInfo_styles_1 = require(\"./ActivityRangeInfo.styles\");\r\nvar infoIcon_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/infoIcon.svgx\"));\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\nvar ActivityRangeInfo = function (props) {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var getRangeBackgroundColor = function () {\r\n if (props.locationDeleted) {\r\n return \"#FFFAD6\";\r\n }\r\n if (props.highlightRange) {\r\n return theme.colors.rangeBackgroundSelected;\r\n }\r\n return theme.colors.rangeBackground;\r\n };\r\n if (props.range.length === 0 && !props.locationDeleted) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n return (React.createElement(react_native_1.View, { style: __assign({ backgroundColor: getRangeBackgroundColor() }, ActivityRangeInfo_styles_1.activityRangeInfoStyle) },\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: props.range, style: __assign(__assign({}, ActivityInfo_styles_1.baseActivityDescriptionText), { color: props.locationDeleted ? \"#242424\" : theme.colors.bodyText, flexShrink: 1 }) }, props.range),\r\n props.locationDeleted && (React.createElement(FontScaledIconButton_1.FontScaledIconButton, { accessible: false, focusable: false, appearance: \"subtle\", enableFocusRing: false, disabled: true, style: ActivityRangeInfo_styles_1.degradedInfoButtonStyle, tooltip: strings.getString(\"LocationDeletedTooltip\"), width: 16, height: 16 },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: infoIcon_svgx_1.default, width: 12, height: 12, fill: \"#000000\" })))));\r\n};\r\nexports.ActivityRangeInfo = ActivityRangeInfo;\r\n//# sourceMappingURL=ActivityRangeInfo.native.js.map", "\r\n \r\n", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ActivityInfo = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar types_1 = require(\"../types\");\r\nvar Helper_1 = require(\"../../../Utilities/UserActivityUX/Helper\");\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar ActivityInfo_styles_1 = require(\"./ActivityInfo.styles\");\r\nvar FriendlyDate_1 = require(\"../../FriendlyDate/FriendlyDate\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar PersonaInfo_1 = require(\"../PersonaInfo/PersonaInfo\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar ActivityRangeInfo_1 = require(\"../ActivityRangeInfo/ActivityRangeInfo\");\r\nvar moveArrowForward_16_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/moveArrowForward.16.svgx\"));\r\n// This component renders activity information: Persona - Friendly Date - Activity Verb - Sheet Name - Range\r\nvar ActivityInfo = function (props) {\r\n var activity = props.activity;\r\n var _a = (0, Helper_1.generateActivityInformationFromType)(activity.activityType), activityVerb = _a.activityVerb, ActivityIcon = _a.ActivityIcon;\r\n var theme = (0, theme_types_1.useTheme)();\r\n var renderActivityVerb = function () {\r\n return (React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: activityVerb, style: __assign(__assign({}, ActivityInfo_styles_1.baseActivityDescriptionTextPadded), { maxWidth: \"90%\", color: theme.colors.activityVerbText }) }, activityVerb));\r\n };\r\n /**\r\n * Function that renders the description of the activity whose type is move\r\n * @param srcLocation - token string that is srcLocation in move related scenarios\r\n * @param destLocation - token string that is destLocation in move related scenarios\r\n */\r\n var renderMoveTypeCardDescription = function (srcLocation, destLocation) {\r\n var srcLocationTokens = (0, Helper_1.fetchLocationTokensForMoveCards)(srcLocation);\r\n var destLocationTokens = (0, Helper_1.fetchLocationTokensForMoveCards)(destLocation);\r\n var isSrcGridLocationPresent = srcLocationTokens.gridLocation.length > 0;\r\n var isDestGridLocationPresent = destLocationTokens.gridLocation.length > 0;\r\n return (React.createElement(react_native_1.View, { style: { flex: 1, flexDirection: \"row\", flexWrap: \"wrap\" } },\r\n renderActivityVerb(),\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: srcLocationTokens.sheetName, style: __assign(__assign({}, ActivityInfo_styles_1.baseActivityDescriptionTextPadded), { maxWidth: isSrcGridLocationPresent ? \"40%\" : \"90%\" }) }, srcLocationTokens.sheetName),\r\n React.createElement(ActivityRangeInfo_1.ActivityRangeInfo, { range: srcLocationTokens.gridLocation, locationDeleted: props.activity.locationDeleted, highlightRange: props.highlightRange }),\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: moveArrowForward_16_svgx_1.default, width: 12, height: 12, style: { marginLeft: 4, marginRight: 4, marginTop: 2 } }),\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: destLocationTokens.sheetName, style: __assign(__assign({}, ActivityInfo_styles_1.baseActivityDescriptionTextPadded), { maxWidth: isDestGridLocationPresent ? \"40%\" : \"100%\", flexShrink: 1 }) }, destLocationTokens.sheetName),\r\n React.createElement(ActivityRangeInfo_1.ActivityRangeInfo, { range: destLocationTokens.gridLocation, locationDeleted: props.activity.locationDeleted, highlightRange: props.highlightRange })));\r\n };\r\n /**\r\n * Function that renders the description of the activity whose type is other than move\r\n * @param sheetName - token string that is sheetName in non-move type cards\r\n * @param gridLocation - token string that is gridLocation in non-move type cards\r\n */\r\n var renderSimpleCardDescription = function (sheetName, gridLocation) {\r\n return (React.createElement(React.Fragment, null,\r\n renderActivityVerb(),\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", flex: 1 } },\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: sheetName, style: __assign(__assign({}, ActivityInfo_styles_1.baseActivityDescriptionTextPadded), { maxWidth: gridLocation.length > 0 ? \"50%\" : \"100%\" }) }, sheetName),\r\n React.createElement(ActivityRangeInfo_1.ActivityRangeInfo, { range: gridLocation, locationDeleted: props.activity.locationDeleted, highlightRange: props.highlightRange }))));\r\n };\r\n /**\r\n * Function that renders the description of the activity\r\n */\r\n var renderActivityDescription = function () {\r\n var _a;\r\n var isActivityTypeMove = props.activity.activityType === types_1.UserActivityType.Move;\r\n if (isActivityTypeMove) {\r\n var srcDestLocations = props.activity.valueChanges;\r\n if (srcDestLocations === undefined || srcDestLocations[0] === undefined) {\r\n return undefined;\r\n }\r\n var destLocation = srcDestLocations[0].newValue;\r\n var srcLocation = (_a = srcDestLocations[0].oldValue) !== null && _a !== void 0 ? _a : \"\";\r\n return renderMoveTypeCardDescription(srcLocation, destLocation);\r\n }\r\n var sheetName = activity.sheetName ? activity.sheetName : \"\";\r\n var gridLocation = activity.gridLocation ? activity.gridLocation : \"\";\r\n return renderSimpleCardDescription(sheetName, gridLocation);\r\n };\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", width: \"100%\", paddingBottom: 5 } },\r\n React.createElement(PersonaInfo_1.PersonaInfo, { showPersonaImage: props.showPersonaImage, author: activity.author }),\r\n React.createElement(FriendlyDate_1.FriendlyDate, { id: activity.activityGuid, displayTimestamp: activity.displayTimestamp, contentLanguage: props.contentLanguage, showLocaleBasedDateTimeFormat: props.showLocaleBasedDateTimeFormat })),\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", paddingLeft: 8 } },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: ActivityIcon, width: 16, height: 16, fill: theme.colors.activityIcon }),\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", paddingLeft: 6.5, flex: 1 } }, renderActivityDescription()))));\r\n};\r\nexports.ActivityInfo = ActivityInfo;\r\n//# sourceMappingURL=ActivityInfo.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.degradedCardInfoStyle = void 0;\r\nexports.degradedCardInfoStyle = {\r\n marginLeft: 8,\r\n marginTop: 8,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n};\r\n//# sourceMappingURL=DegradedCardInfo.styles.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DegradedCardInfo = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar FontScaledSvg_1 = require(\"../../FontScaledSvg\");\r\nvar DegradedCardInfo_styles_1 = require(\"./DegradedCardInfo.styles\");\r\nvar infoIcon_svgx_1 = __importDefault(require(\"../../../../assets/UserActivityUX/infoIcon.svgx\"));\r\nvar strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\nvar DegradedCardInfo = function () {\r\n var theme = (0, theme_types_1.useTheme)();\r\n var locationDeletedInfo = strings.getString(\"LocationDeletedInfo\");\r\n return (React.createElement(react_native_1.View, { style: DegradedCardInfo_styles_1.degradedCardInfoStyle },\r\n React.createElement(FontScaledSvg_1.FontScaledSvg, { src: infoIcon_svgx_1.default, width: 12, height: 12, fill: theme.colors.defaultIcon }),\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, tooltip: locationDeletedInfo, ellipsizeMode: \"tail\", style: { marginLeft: 6.5 } }, locationDeletedInfo)));\r\n};\r\nexports.DegradedCardInfo = DegradedCardInfo;\r\n//# sourceMappingURL=DegradedCardInfo.native.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UserActivityCard = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar Helper_1 = require(\"../../../Utilities/UserActivityUX/Helper\");\r\nvar UserActivityCard_styles_1 = require(\"./UserActivityCard.styles\");\r\nvar CellValueChangesInfo_1 = require(\"../ValueChangesInfo/CellValueChangesInfo\");\r\nvar ActivityInfo_1 = require(\"../ActivityInfo/ActivityInfo\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar DegradedCardInfo_1 = require(\"../DegradedCardInfo/DegradedCardInfo\");\r\nvar UserActivityCard = function (props) {\r\n var _a;\r\n var cardRef = React.useRef();\r\n var cardControlTestId = props.testIdPrefix + \"CardControl\" + props.activity.activityId;\r\n var theme = (0, theme_types_1.useTheme)();\r\n var contentLanguage = props.contentLanguage !== undefined ? props.contentLanguage : \"en-US\";\r\n var showLocaleBasedDateTimeFormat = (_a = props.showLocaleBasedDateTimeFormat) !== null && _a !== void 0 ? _a : false;\r\n // RN View in win32 does not take focus when doing ref.current?.focus(). Using this hook eliminates the problem.\r\n // This is not necessary for macOS as mac doesn't have this issue.\r\n var cardFocusRef = (0, react_native_2.useViewCommandFocus)(cardRef);\r\n // Left/Right arrow keys is used to navigate through list items in a FlatList.\r\n // However, we have some other handling for these keys and do not need the default native behavior of list item navigation.\r\n // For keys specified in `keyDownEvents` prop, the default native handling will not take place.\r\n var keyDownEvents = [{ key: \"ArrowLeft\" }, { key: \"ArrowRight\" }];\r\n var _b = React.useState(false), expandUserActivityCard = _b[0], toggleExpandUserActivityCard = _b[1];\r\n var _c = React.useState(false), areCardElementsNavigable = _c[0], makeCardElementsNavigable = _c[1];\r\n var _d = React.useState(false), focused = _d[0], setFocused = _d[1];\r\n var _e = React.useState(false), hovered = _e[0], setHovered = _e[1];\r\n React.useEffect(function () {\r\n // Every time the prop 'isSelected' is set to false we need to reset state.\r\n // This will be vital in removing stale state issue as our state depends on prop isSelected.\r\n // When isSelected is false it means we need to reset the states.\r\n if (!props.isSelected) {\r\n setFocused(false);\r\n toggleExpandUserActivityCard(false);\r\n makeCardElementsNavigable(false);\r\n }\r\n if (props.isSelected && focused) {\r\n react_native_1.AccessibilityInfo.announceForAccessibility((0, Helper_1.generateAccessibilityInformation)(props.activity, expandUserActivityCard, props.cardIndex + 1, props.activityListSize, props.generateExtendedInfo, props.isSelected, contentLanguage, showLocaleBasedDateTimeFormat));\r\n }\r\n return function () { return props.onCardRemoved(props.activity.activityGuid, cardRef); };\r\n }, [props.isSelected]);\r\n var onBlur = function () { return setFocused(false); };\r\n var onFocus = function () {\r\n props.setRefOfCurrentFocusedElement(cardRef);\r\n setFocused(true);\r\n };\r\n var onPress = function () {\r\n var _a;\r\n // Press event does not bring focus on the element. Hence, need to trigger focus programatically if card not already in focus.\r\n if (!focused) {\r\n (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n props.onCardSelected(props.activity, undefined /*subCellLocation*/, undefined /*isCardExpanded*/);\r\n };\r\n var onExpandChangesToggled = React.useCallback(function (shouldExpandUserActivityCard) {\r\n toggleExpandUserActivityCard(shouldExpandUserActivityCard);\r\n // If card is expanded, make card elements navigable.\r\n if (shouldExpandUserActivityCard) {\r\n makeCardElementsNavigable(true);\r\n }\r\n props.onCardSelected(props.activity, undefined /*subCellLocation*/, shouldExpandUserActivityCard /*isCardExpanded*/);\r\n }, [props.activity]);\r\n var onKeyDown = function (ev) {\r\n var _a;\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n props.onCardSelected(props.activity, undefined /*subCellLocation*/, undefined /*isCardExpanded*/);\r\n }\r\n else if (ev.nativeEvent.key === \"ArrowLeft\") {\r\n // Disable card elements navigation.\r\n makeCardElementsNavigable(false);\r\n // Collapse a bulk edit card.\r\n toggleExpandUserActivityCard(false);\r\n props.onCardSelected(props.activity, undefined /*subCellLocation*/, false /*isCardExpanded*/);\r\n // Bring focus on card. Needs to be done so that inner elements do not contain focus anymore.\r\n (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n else if (ev.nativeEvent.key === \"ArrowRight\") {\r\n // Enable card elements navigation.\r\n makeCardElementsNavigable(true);\r\n if (props.refactorExpandChangesToggled) {\r\n toggleExpandUserActivityCard(true);\r\n }\r\n // Do not expand the card here. Handle it in useEffect() of BulkEditButton component after focusing on the bulk edit button.\r\n // Expanding a bulk edit card (with many value changes) while focus is on the parent view has performance issues.\r\n props.onCardSelected(props.activity, undefined /*subCellLocation*/, true /*isCardExpanded*/);\r\n }\r\n };\r\n var onCardElementsFocused = React.useCallback(function () {\r\n // Allow navigation of inner elements.\r\n makeCardElementsNavigable(true);\r\n }, [areCardElementsNavigable]);\r\n var getBorderColor = function () {\r\n if (hovered || focused) {\r\n return react_native_1.Platform.OS === \"macos\"\r\n ? (0, react_native_1.PlatformColor)(\"controlAccentColor\")\r\n : theme.colors.borderHighlight;\r\n }\r\n return theme.colors.transparentStroke;\r\n };\r\n // This can be used to provide stylings based on hover/focus/pressed states.\r\n var renderCardStyles = function () {\r\n var cardColor = (0, Helper_1.isActivityTypeNavigable)(props.activity.activityType) &&\r\n !props.activity.locationDeleted\r\n ? theme.colors.defaultCardBackground\r\n : theme.colors.degradedCardBackground;\r\n var cardStyle = props.isSelected && focused ? UserActivityCard_styles_1.parentCardSelectedStyle : UserActivityCard_styles_1.parentCardStyle;\r\n return __assign(__assign({}, cardStyle), { borderColor: getBorderColor(), backgroundColor: cardColor });\r\n };\r\n return (React.createElement(react_native_1.Pressable, __assign({ ref: cardFocusRef, accessibilityLabel: (0, Helper_1.generateAccessibilityInformation)(props.activity, expandUserActivityCard, props.cardIndex + 1, props.activityListSize, props.generateExtendedInfo, props.isSelected, contentLanguage, showLocaleBasedDateTimeFormat), accessibilityRole: \"listitem\", accessibilityState: { selected: props.isSelected }, accessibilityActions: [{ name: \"Select\" }], onAccessibilityAction: function () {\r\n return props.onCardSelected(props.activity, undefined /*subCellLocation*/, undefined /*isCardExpanded*/);\r\n }, style: renderCardStyles(), onFocus: onFocus, onBlur: onBlur }, {\r\n keyDownEvents: keyDownEvents,\r\n onKeyDown: onKeyDown,\r\n }, { testID: cardControlTestId, onPress: onPress, onHoverIn: function () { return setHovered(true); }, onHoverOut: function () { return setHovered(false); }, onLayout: function (event) {\r\n return props.updateCardHeight(props.activity.activityGuid, event.nativeEvent.layout.height);\r\n } }),\r\n React.createElement(ActivityInfo_1.ActivityInfo, { activity: props.activity, highlightRange: focused, showPersonaImage: props.showPersonaImage, contentLanguage: contentLanguage, showLocaleBasedDateTimeFormat: showLocaleBasedDateTimeFormat }),\r\n React.createElement(CellValueChangesInfo_1.CellValueChangesInfo, { activity: props.activity, isSelected: props.isSelected, onCardPressed: props.onCardSelected, expandUserActivityCard: expandUserActivityCard, onExpandChangesToggled: onExpandChangesToggled, areCardElementsNavigable: areCardElementsNavigable, testIdPrefix: props.testIdPrefix, onCardElementsFocused: onCardElementsFocused, refactorExpandChangesToggled: props.refactorExpandChangesToggled }),\r\n props.activity.locationDeleted && props.isSelected && (React.createElement(DegradedCardInfo_1.DegradedCardInfo, null))));\r\n};\r\nexports.UserActivityCard = UserActivityCard;\r\n//# sourceMappingURL=UserActivityCard.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.parentCardStyle = exports.parentCardSelectedStyle = exports.defaultBulkEditCardHeight = exports.defaultCardHeight = exports.baseCardMargin = exports.UserActivityCard = void 0;\r\nvar UserActivityCard_1 = require(\"./UserActivityCard\");\r\nObject.defineProperty(exports, \"UserActivityCard\", { enumerable: true, get: function () { return UserActivityCard_1.UserActivityCard; } });\r\nvar UserActivityCard_styles_1 = require(\"./UserActivityCard.styles\");\r\nObject.defineProperty(exports, \"baseCardMargin\", { enumerable: true, get: function () { return UserActivityCard_styles_1.baseCardMargin; } });\r\nObject.defineProperty(exports, \"defaultCardHeight\", { enumerable: true, get: function () { return UserActivityCard_styles_1.defaultCardHeight; } });\r\nObject.defineProperty(exports, \"defaultBulkEditCardHeight\", { enumerable: true, get: function () { return UserActivityCard_styles_1.defaultBulkEditCardHeight; } });\r\nObject.defineProperty(exports, \"parentCardSelectedStyle\", { enumerable: true, get: function () { return UserActivityCard_styles_1.parentCardSelectedStyle; } });\r\nObject.defineProperty(exports, \"parentCardStyle\", { enumerable: true, get: function () { return UserActivityCard_styles_1.parentCardStyle; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.summaryCardLabelStyle = exports.summaryCardHeaderStyle = exports.scrollViewStyle = void 0;\r\nexports.scrollViewStyle = {\r\n // Matching the border radius of the card and the color of the UserMessage separator\r\n borderRadius: 4,\r\n borderWidth: 1,\r\n width: \"90%\",\r\n alignSelf: \"flex-end\",\r\n borderColor: \"#D2D0CE\",\r\n};\r\nexports.summaryCardHeaderStyle = {\r\n flex: 1,\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n};\r\nexports.summaryCardLabelStyle = {\r\n flex: 1,\r\n fontSize: 12,\r\n fontWeight: \"600\",\r\n overflow: \"hidden\",\r\n paddingRight: 4,\r\n paddingBottom: 5,\r\n};\r\n//# sourceMappingURL=SummaryCard.styles.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.personaListCoinStyle = exports.personaListTextStyle = exports.personaListStyle = void 0;\r\nexports.personaListStyle = {\r\n flexDirection: \"row\",\r\n paddingBottom: 5,\r\n flexShrink: 1,\r\n};\r\nexports.personaListTextStyle = {\r\n marginTop: 3,\r\n marginLeft: 15,\r\n fontWeight: \"600\",\r\n fontSize: 14,\r\n flexShrink: 1,\r\n};\r\nexports.personaListCoinStyle = {\r\n marginRight: -10,\r\n};\r\n//# sourceMappingURL=PersonaList.styles.js.map", "\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PersonaList = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar Helper_1 = require(\"../../../Utilities/UserActivityUX/Helper\");\r\nvar PersonaList_styles_1 = require(\"./PersonaList.styles\");\r\nvar react_native_2 = require(\"react-native\");\r\nvar PersonaList = function (props) {\r\n if (!props.authors || props.authors.length === 0) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n var maxFacePiles = 4;\r\n var numberOfAuthors = props.authors.length;\r\n var personaVisualArray = [];\r\n for (var i = 0; i < numberOfAuthors && i < maxFacePiles; i++) {\r\n if (!props.authors[i].displayName) {\r\n continue;\r\n }\r\n personaVisualArray.push(React.createElement(react_native_1.PersonaCoin, { key: i, style: PersonaList_styles_1.personaListCoinStyle, size: (0, Helper_1.getPersonaSize)(), initials: (0, Helper_1.fetchInitialsFromName)(props.authors[i].displayName) }));\r\n }\r\n return (React.createElement(react_native_2.View, { style: PersonaList_styles_1.personaListStyle },\r\n personaVisualArray,\r\n props.isSingleLine ? (React.createElement(react_native_1.Text, { style: PersonaList_styles_1.personaListTextStyle, numberOfLines: 1, ellipsizeMode: \"tail\" }, props.message)) : (React.createElement(react_native_1.Text, { style: PersonaList_styles_1.personaListTextStyle }, props.message))));\r\n};\r\nexports.PersonaList = PersonaList;\r\n//# sourceMappingURL=PersonaList.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PersonaList = void 0;\r\nvar PersonaList_1 = require(\"./PersonaList\");\r\nObject.defineProperty(exports, \"PersonaList\", { enumerable: true, get: function () { return PersonaList_1.PersonaList; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SummaryCard = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"react-native\");\r\nvar react_native_2 = require(\"@fluentui/react-native\");\r\nvar UserActivityCard_1 = require(\"../UserActivityCard\");\r\nvar SummaryCard_styles_1 = require(\"./SummaryCard.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar PersonaList_1 = require(\"../PersonaList\");\r\nvar FriendlyDate_1 = require(\"../../FriendlyDate/FriendlyDate\");\r\nvar Helper_1 = require(\"../../../Utilities/UserActivityUX/Helper\");\r\nvar SummaryCard = function (props) {\r\n var cardRef = React.useRef();\r\n var theme = (0, theme_types_1.useTheme)();\r\n var strings = require(\"../../../../assets/UserActivityUX/strings.resjson\");\r\n var summaryCardLabel = strings.getString(\"SummaryCardLabel\"); // string that is displayed above the scrollview of changes\r\n var accessibilityLabel = (0, Helper_1.generateSummaryCardAccessibilityLabel)(props);\r\n // Left/Right arrow keys is used to navigate through list items in a FlatList.\r\n // However, we have some other handling for these keys and do not need the default native behavior of list item navigation.\r\n // For keys specified in `keyDownEvents` prop, the default native handling will not take place.\r\n var keyDownEvents = [{ key: \"ArrowLeft\" }, { key: \"ArrowRight\" }];\r\n var isMacOS = react_native_1.Platform.OS === \"macos\" ? true : false;\r\n // RN View in win32 does not take focus when doing ref.current?.focus(). Using this hook eliminates the problem.\r\n // This is not necessary for macOS as mac doesn't have this issue.\r\n var cardFocusRef = (0, react_native_2.useViewCommandFocus)(cardRef);\r\n var _a = React.useState(false), navigable = _a[0], setNavigable = _a[1];\r\n var _b = React.useState(false), focused = _b[0], setFocused = _b[1];\r\n var _c = React.useState(false), hovered = _c[0], setHovered = _c[1];\r\n var _d = React.useState(false), selected = _d[0], setSelected = _d[1];\r\n var onBlur = function () {\r\n var _a;\r\n setFocused(false);\r\n (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.blur();\r\n };\r\n var onFocus = function () {\r\n setFocused(true);\r\n };\r\n var onPress = function () {\r\n var _a;\r\n // Press event does not bring focus on the element. Hence, need to trigger focus programatically if card not already in focus.\r\n if (!focused) {\r\n (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n onSelected();\r\n };\r\n var onSelected = function () {\r\n if (!selected && focused) {\r\n react_native_1.AccessibilityInfo.announceForAccessibility(accessibilityLabel);\r\n }\r\n setSelected(true);\r\n };\r\n var onKeyDown = function (ev) {\r\n var _a;\r\n if (ev.nativeEvent.key === \"Enter\") {\r\n setSelected(true);\r\n }\r\n else if (ev.nativeEvent.key === \"ArrowLeft\") {\r\n // Disable card elements navigation.\r\n setNavigable(false);\r\n // Bring focus on card. Needs to be done so that inner elements do not contain focus anymore.\r\n (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.focus();\r\n setSelected(true);\r\n }\r\n else if (ev.nativeEvent.key === \"ArrowRight\") {\r\n // Enable card elements navigation.\r\n setNavigable(true);\r\n setSelected(true);\r\n }\r\n else if (!navigable &&\r\n focused &&\r\n (ev.nativeEvent.key === \"ArrowUp\" || ev.nativeEvent.key === \"ArrowDown\")) {\r\n setSelected(false);\r\n }\r\n };\r\n // This can be used to provide stylings based on hover/focus/pressed states.\r\n var renderCardStyles = function () {\r\n var cardBackgroundColor = theme.colors.defaultCardBackground;\r\n // 1.25 scales the height of the summary card up so that there's more room for the scrollview.\r\n var cardHeight = UserActivityCard_1.defaultCardHeight * 1.25;\r\n var cardStyle = UserActivityCard_1.parentCardStyle;\r\n if (selected && focused) {\r\n cardStyle = UserActivityCard_1.parentCardSelectedStyle;\r\n }\r\n var borderColor = hovered || focused\r\n ? theme.colors.borderHighlight\r\n : theme.colors.transparentStroke;\r\n return __assign(__assign({}, cardStyle), { borderColor: borderColor, backgroundColor: cardBackgroundColor, height: cardHeight });\r\n };\r\n var onRenderUnviewableString = function (unviewableString, index) {\r\n return (React.createElement(react_native_2.Text, { focusable: !isMacOS ? true : navigable, accessible: !isMacOS ? true : navigable, selectable: !isMacOS ? undefined : navigable, key: index, ellipsizeMode: \"tail\" }, unviewableString));\r\n };\r\n var getPersonaListMessage = function () {\r\n var personaAuthorNames = [];\r\n for (var i = 0; i < props.summaryCardData.authors.length; i++) {\r\n personaAuthorNames.push(props.summaryCardData.authors[i].displayName);\r\n }\r\n return personaAuthorNames.join(\", \");\r\n };\r\n return (React.createElement(react_native_1.Pressable, __assign({ ref: cardFocusRef, accessibilityLabel: accessibilityLabel, accessibilityRole: \"listitem\", accessibilityState: { selected: selected }, accessibilityActions: [{ name: \"Select\" }], onAccessibilityAction: onSelected, style: renderCardStyles(), onFocus: onFocus, onBlur: onBlur }, {\r\n keyDownEvents: keyDownEvents,\r\n onKeyDown: onKeyDown,\r\n }, { onPress: onPress, onHoverIn: function () { return setHovered(true); }, onHoverOut: function () { return setHovered(false); } }),\r\n React.createElement(react_native_1.View, { style: {\r\n flex: 1,\r\n flexDirection: \"column\",\r\n } },\r\n React.createElement(react_native_1.View, { style: __assign({}, SummaryCard_styles_1.summaryCardHeaderStyle) },\r\n React.createElement(PersonaList_1.PersonaList, { showPersonaImage: false, authors: props.summaryCardData.authors, message: getPersonaListMessage(), isSingleLine: true }),\r\n React.createElement(FriendlyDate_1.FriendlyDate, { id: props.summaryCardParentName.concat(\"-SummaryCard\"), displayTimestamp: props.summaryCardData.displayTimestamp, contentLanguage: props.contentLanguage, showLocaleBasedDateTimeFormat: props.showLocaleBasedDateTimeFormat })),\r\n React.createElement(react_native_1.View, { style: { flexDirection: \"row\", paddingLeft: 8 } },\r\n React.createElement(react_native_2.Text, { numberOfLines: 1, ellipsizeMode: \"tail\", tooltip: summaryCardLabel, style: __assign({}, SummaryCard_styles_1.summaryCardLabelStyle) }, summaryCardLabel)),\r\n React.createElement(react_native_1.View, { style: { flex: 2 } },\r\n React.createElement(react_native_1.ScrollView, { style: __assign({}, SummaryCard_styles_1.scrollViewStyle), contentContainerStyle: {\r\n paddingHorizontal: 5,\r\n paddingVertical: 5,\r\n } },\r\n React.createElement(react_native_2.FocusZone, { isCircularNavigation: false, focusZoneDirection: \"vertical\", disabled: !navigable }, props.summaryCardData.summaryUnviewableData.map(function (unviewableString, index) {\r\n return onRenderUnviewableString(unviewableString, index);\r\n })))))));\r\n};\r\nexports.SummaryCard = SummaryCard;\r\n//# sourceMappingURL=SummaryCard.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SummaryCard = void 0;\r\nvar SummaryCard_1 = require(\"./SummaryCard\");\r\nObject.defineProperty(exports, \"SummaryCard\", { enumerable: true, get: function () { return SummaryCard_1.SummaryCard; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PersonaInfo = void 0;\r\nvar PersonaInfo_1 = require(\"./PersonaInfo\");\r\nObject.defineProperty(exports, \"PersonaInfo\", { enumerable: true, get: function () { return PersonaInfo_1.PersonaInfo; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getUserActivityStrings = exports.PersonaList = exports.PersonaInfo = exports.SummaryCard = exports.defaultCardHeight = exports.defaultBulkEditCardHeight = exports.baseCardMargin = exports.UserActivityCard = exports.UserActivityType = void 0;\r\nvar strings = require(\"../../../assets/UserActivityUX/strings.resjson\");\r\nvar types_1 = require(\"./types\");\r\nObject.defineProperty(exports, \"UserActivityType\", { enumerable: true, get: function () { return types_1.UserActivityType; } });\r\nvar UserActivityCard_1 = require(\"./UserActivityCard\");\r\nObject.defineProperty(exports, \"UserActivityCard\", { enumerable: true, get: function () { return UserActivityCard_1.UserActivityCard; } });\r\nObject.defineProperty(exports, \"baseCardMargin\", { enumerable: true, get: function () { return UserActivityCard_1.baseCardMargin; } });\r\nObject.defineProperty(exports, \"defaultBulkEditCardHeight\", { enumerable: true, get: function () { return UserActivityCard_1.defaultBulkEditCardHeight; } });\r\nObject.defineProperty(exports, \"defaultCardHeight\", { enumerable: true, get: function () { return UserActivityCard_1.defaultCardHeight; } });\r\nvar SummaryCard_1 = require(\"./SummaryCard\");\r\nObject.defineProperty(exports, \"SummaryCard\", { enumerable: true, get: function () { return SummaryCard_1.SummaryCard; } });\r\nvar PersonaInfo_1 = require(\"./PersonaInfo\");\r\nObject.defineProperty(exports, \"PersonaInfo\", { enumerable: true, get: function () { return PersonaInfo_1.PersonaInfo; } });\r\nvar PersonaList_1 = require(\"./PersonaList\");\r\nObject.defineProperty(exports, \"PersonaList\", { enumerable: true, get: function () { return PersonaList_1.PersonaList; } });\r\nfunction getUserActivityStrings() {\r\n return strings;\r\n}\r\nexports.getUserActivityStrings = getUserActivityStrings;\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.textStyle = exports.highlightedImageStyle = exports.highlightedImageViewStyle = exports.chevronButtonStyle = exports.chevronContainerViewStyle = exports.viewTopContainerStyle = exports.parentViewStyle = void 0;\r\nexports.parentViewStyle = {\r\n justifyContent: \"center\",\r\n marginBottom: \"10%\",\r\n marginTop: \"2%\",\r\n};\r\nexports.viewTopContainerStyle = {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n marginTop: 9,\r\n};\r\nexports.chevronContainerViewStyle = {\r\n flex: 1,\r\n justifyContent: \"center\",\r\n flexDirection: \"row\",\r\n};\r\nexports.chevronButtonStyle = {\r\n borderWidth: 0,\r\n};\r\nexports.highlightedImageViewStyle = {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n marginTop: 9,\r\n};\r\nexports.highlightedImageStyle = {\r\n width: \"100%\",\r\n height: undefined,\r\n aspectRatio: 394 / 178,\r\n};\r\nexports.textStyle = {\r\n fontSize: 14,\r\n fontFamily: \"Segoe UI\",\r\n fontWeight: \"400\",\r\n textAlign: \"center\",\r\n};\r\n//# sourceMappingURL=Carousel.styles.js.map", "\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Carousel = void 0;\r\nvar React = __importStar(require(\"react\"));\r\nvar react_native_1 = require(\"@fluentui/react-native\");\r\nvar react_native_2 = require(\"react-native\");\r\nvar Carousel_styles_1 = require(\"./Carousel.styles\");\r\nvar theme_types_1 = require(\"@fluentui-react-native/theme-types\");\r\nvar Carousel = function (props) {\r\n var _a = React.useState(0), carouselImageId = _a[0], setCarouselImageId = _a[1];\r\n if (!props.imageList ||\r\n !props.leftChevronIcon ||\r\n !props.rightChevronIcon ||\r\n props.imageList.length === 0 ||\r\n (props.imageDescriptionList !== undefined &&\r\n props.imageDescriptionList.length !== props.imageList.length)) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n var getCarouselId = function (num) {\r\n var result = carouselImageId + num;\r\n result =\r\n result < 0\r\n ? props.imageList.length + result\r\n : result % props.imageList.length;\r\n return result;\r\n };\r\n var onClickPrevImage = function () {\r\n setCarouselImageId(getCarouselId(-1));\r\n };\r\n var onClickNextImage = function () {\r\n setCarouselImageId(getCarouselId(1));\r\n };\r\n var getCarouselImage = function () {\r\n return props.imageList[carouselImageId];\r\n };\r\n var getChevronContainerViewStyle = function () {\r\n return props.chevronContainerStyle === undefined\r\n ? Carousel_styles_1.chevronContainerViewStyle\r\n : props.chevronContainerStyle;\r\n };\r\n var getChevronButtonStyle = function () {\r\n return props.chevronButtonStyle === undefined\r\n ? __assign(__assign({}, Carousel_styles_1.chevronButtonStyle), { backgroundColor: (0, theme_types_1.useTheme)().colors.defaultBackground }) : props.chevronButtonStyle;\r\n };\r\n var getImageDescription = function () {\r\n return props.imageDescriptionList === undefined\r\n ? null\r\n : props.imageDescriptionList[carouselImageId];\r\n };\r\n var getHighlightedImageStyle = function () {\r\n return (props.highlightedImageStyle === undefined\r\n ? Carousel_styles_1.highlightedImageStyle\r\n : props.highlightedImageStyle);\r\n };\r\n return (React.createElement(react_native_2.View, { style: Carousel_styles_1.parentViewStyle },\r\n React.createElement(react_native_2.View, { style: Carousel_styles_1.viewTopContainerStyle },\r\n props.titleComponent,\r\n React.createElement(react_native_2.View, { style: getChevronContainerViewStyle() },\r\n React.createElement(react_native_1.ButtonV1, { style: getChevronButtonStyle(), icon: props.leftChevronIcon, onClick: onClickPrevImage }),\r\n React.createElement(react_native_1.ButtonV1, { style: getChevronButtonStyle(), icon: props.rightChevronIcon, onClick: onClickNextImage }))),\r\n React.createElement(react_native_2.View, { style: Carousel_styles_1.highlightedImageViewStyle },\r\n React.createElement(react_native_2.Image, { style: getHighlightedImageStyle(), source: getCarouselImage() }),\r\n React.createElement(react_native_1.Text, { style: Carousel_styles_1.textStyle }, getImageDescription()))));\r\n};\r\nexports.Carousel = Carousel;\r\n//# sourceMappingURL=Carousel.native.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Carousel = void 0;\r\nvar Carousel_1 = require(\"./Carousel\");\r\nObject.defineProperty(exports, \"Carousel\", { enumerable: true, get: function () { return Carousel_1.Carousel; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Carousel = exports.getUserActivityStrings = exports.defaultCardHeight = exports.defaultBulkEditCardHeight = exports.baseCardMargin = exports.UserActivityType = exports.UserActivityCard = exports.SummaryCard = exports.PersonaInfo = exports.LoadingSpinner = exports.ExcelScrollableList = exports.RangePickerSelectionInput = exports.RangePicker = exports.Link = exports.FilterSection = exports.DisplayLocation = exports.FontScaledIconButton = exports.FontScaledSvg = exports.Footer = exports.ButtonGroup = exports.IconType = exports.BusinessBarThemeWrapper = exports.Anchor = void 0;\r\nvar Anchor_1 = require(\"./Anchor\");\r\nObject.defineProperty(exports, \"Anchor\", { enumerable: true, get: function () { return Anchor_1.Anchor; } });\r\nvar BusinessBar_1 = require(\"./BusinessBar\");\r\nObject.defineProperty(exports, \"BusinessBarThemeWrapper\", { enumerable: true, get: function () { return BusinessBar_1.BusinessBarThemeWrapper; } });\r\nObject.defineProperty(exports, \"IconType\", { enumerable: true, get: function () { return BusinessBar_1.IconType; } });\r\nvar ButtonGroup_1 = require(\"./ButtonGroup\");\r\nObject.defineProperty(exports, \"ButtonGroup\", { enumerable: true, get: function () { return ButtonGroup_1.ButtonGroup; } });\r\nvar Footer_1 = require(\"./Footer\");\r\nObject.defineProperty(exports, \"Footer\", { enumerable: true, get: function () { return Footer_1.Footer; } });\r\nvar FontScaledSvg_1 = require(\"./FontScaledSvg\");\r\nObject.defineProperty(exports, \"FontScaledSvg\", { enumerable: true, get: function () { return FontScaledSvg_1.FontScaledSvg; } });\r\nvar FontScaledIconButton_1 = require(\"./FontScaledIconButton\");\r\nObject.defineProperty(exports, \"FontScaledIconButton\", { enumerable: true, get: function () { return FontScaledIconButton_1.FontScaledIconButton; } });\r\nvar Filter_1 = require(\"./Filter\");\r\nObject.defineProperty(exports, \"DisplayLocation\", { enumerable: true, get: function () { return Filter_1.DisplayLocation; } });\r\nObject.defineProperty(exports, \"FilterSection\", { enumerable: true, get: function () { return Filter_1.FilterSection; } });\r\nvar Link_1 = require(\"./Link\");\r\nObject.defineProperty(exports, \"Link\", { enumerable: true, get: function () { return Link_1.Link; } });\r\nvar rangePicker_1 = require(\"./rangePicker\");\r\nObject.defineProperty(exports, \"RangePicker\", { enumerable: true, get: function () { return rangePicker_1.RangePicker; } });\r\nObject.defineProperty(exports, \"RangePickerSelectionInput\", { enumerable: true, get: function () { return rangePicker_1.RangePickerSelectionInput; } });\r\nvar ScrollableList_1 = require(\"./ScrollableList\");\r\nObject.defineProperty(exports, \"ExcelScrollableList\", { enumerable: true, get: function () { return ScrollableList_1.ExcelScrollableList; } });\r\nvar Spinner_1 = require(\"./Spinner\");\r\nObject.defineProperty(exports, \"LoadingSpinner\", { enumerable: true, get: function () { return Spinner_1.LoadingSpinner; } });\r\nvar UserActivityUX_1 = require(\"./UserActivityUX\");\r\nObject.defineProperty(exports, \"PersonaInfo\", { enumerable: true, get: function () { return UserActivityUX_1.PersonaInfo; } });\r\nObject.defineProperty(exports, \"SummaryCard\", { enumerable: true, get: function () { return UserActivityUX_1.SummaryCard; } });\r\nObject.defineProperty(exports, \"UserActivityCard\", { enumerable: true, get: function () { return UserActivityUX_1.UserActivityCard; } });\r\nObject.defineProperty(exports, \"UserActivityType\", { enumerable: true, get: function () { return UserActivityUX_1.UserActivityType; } });\r\nObject.defineProperty(exports, \"baseCardMargin\", { enumerable: true, get: function () { return UserActivityUX_1.baseCardMargin; } });\r\nObject.defineProperty(exports, \"defaultBulkEditCardHeight\", { enumerable: true, get: function () { return UserActivityUX_1.defaultBulkEditCardHeight; } });\r\nObject.defineProperty(exports, \"defaultCardHeight\", { enumerable: true, get: function () { return UserActivityUX_1.defaultCardHeight; } });\r\nObject.defineProperty(exports, \"getUserActivityStrings\", { enumerable: true, get: function () { return UserActivityUX_1.getUserActivityStrings; } });\r\nvar Carousel_1 = require(\"./Carousel\");\r\nObject.defineProperty(exports, \"Carousel\", { enumerable: true, get: function () { return Carousel_1.Carousel; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UserActivityRichApiHelper = void 0;\r\nvar types_1 = require(\"../../Components/UserActivityUX/types\");\r\nvar UserActivityRichApiHelper = /** @class */ (function () {\r\n function UserActivityRichApiHelper() {\r\n }\r\n UserActivityRichApiHelper.parseUserActivity = function (userActivity) {\r\n var _a = UserActivityRichApiHelper.parseValueChangeData(userActivity.valueChangeData), valueChanges = _a.valueChanges, bulkEditOverFlow = _a.bulkEditOverFlow;\r\n return {\r\n activityId: userActivity.activityId,\r\n activityGuid: userActivity.guid,\r\n activityType: UserActivityRichApiHelper.parseUserActivityType(userActivity.activityType),\r\n author: {\r\n displayName: userActivity.author.displayName,\r\n email: userActivity.authorEmail,\r\n },\r\n displayTimestamp: userActivity.createdDateTime,\r\n sheetName: userActivity.sheetName,\r\n gridLocation: userActivity.rangeAddress,\r\n rangeHighlightLocation: userActivity.highlightRangeAreas.address,\r\n valueChanges: valueChanges,\r\n isBulkEditOverflow: bulkEditOverFlow,\r\n locationDeleted: userActivity.locationDeleted,\r\n };\r\n };\r\n UserActivityRichApiHelper.parseValueChangeData = function (valueChangeData) {\r\n if (!valueChangeData) {\r\n // Value changes is null in case of activities with no value changes.\r\n return { valueChanges: [], bulkEditOverFlow: false };\r\n }\r\n var valueChanges = [];\r\n valueChangeData.valueChanges.forEach(function (valueChange) {\r\n var _a;\r\n valueChanges.push({\r\n cellLocation: valueChange.cellAddress,\r\n newValue: valueChange.valueAfter,\r\n oldValue: (_a = valueChange.valueBefore) !== null && _a !== void 0 ? _a : undefined,\r\n });\r\n });\r\n return {\r\n valueChanges: valueChanges,\r\n bulkEditOverFlow: !valueChangeData.allAvailable,\r\n };\r\n };\r\n // Helper private to parse UserActivityType information coming as response.\r\n UserActivityRichApiHelper.parseUserActivityType = function (activityType) {\r\n switch (activityType) {\r\n case \"ChangeCell\":\r\n case Excel.UserActivityType.changeCell:\r\n return types_1.UserActivityType.ChangeCell;\r\n case \"InsertRow\":\r\n case Excel.UserActivityType.insertRow:\r\n return types_1.UserActivityType.InsertRow;\r\n case \"InsertColumn\":\r\n case Excel.UserActivityType.insertColumn:\r\n return types_1.UserActivityType.InsertColumn;\r\n case \"DeleteRow\":\r\n case Excel.UserActivityType.deleteRow:\r\n return types_1.UserActivityType.DeleteRow;\r\n case \"DeleteColumn\":\r\n case Excel.UserActivityType.deleteColumn:\r\n return types_1.UserActivityType.DeleteColumn;\r\n case \"InsertPartialRow\":\r\n case Excel.UserActivityType.insertPartialRow:\r\n return types_1.UserActivityType.InsertPartialRow;\r\n case \"InsertPartialColumn\":\r\n case Excel.UserActivityType.insertPartialColumn:\r\n return types_1.UserActivityType.InsertPartialColumn;\r\n case \"InsertPartialColumnRightToLeft\":\r\n case Excel.UserActivityType.insertPartialColumnRightToLeft:\r\n return types_1.UserActivityType.InsertPartialColumnRightToLeft;\r\n case \"DeletePartialRow\":\r\n case Excel.UserActivityType.deletePartialRow:\r\n return types_1.UserActivityType.DeletePartialRow;\r\n case \"DeletePartialColumn\":\r\n case Excel.UserActivityType.deletePartialColumn:\r\n return types_1.UserActivityType.DeletePartialColumn;\r\n case \"DeletePartialColumnRightToLeft\":\r\n case Excel.UserActivityType.deletePartialColumnRightToLeft:\r\n return types_1.UserActivityType.DeletePartialColumnRightToLeft;\r\n case \"InsertSheet\":\r\n case Excel.UserActivityType.insertSheet:\r\n return types_1.UserActivityType.InsertSheet;\r\n case \"DeleteSheet\":\r\n case Excel.UserActivityType.deleteSheet:\r\n return types_1.UserActivityType.DeleteSheet;\r\n case \"RenameSheet\":\r\n case Excel.UserActivityType.renameSheet:\r\n return types_1.UserActivityType.RenameSheet;\r\n case \"Move\":\r\n case Excel.UserActivityType.move:\r\n return types_1.UserActivityType.Move;\r\n case \"Sort\":\r\n case Excel.UserActivityType.sort:\r\n return types_1.UserActivityType.Sort;\r\n case \"MergeCells\":\r\n case Excel.UserActivityType.mergeCells:\r\n return types_1.UserActivityType.MergeCells;\r\n case \"UnmergeCells\":\r\n case Excel.UserActivityType.unmergeCells:\r\n return types_1.UserActivityType.UnmergeCells;\r\n default:\r\n return types_1.UserActivityType.None;\r\n }\r\n };\r\n return UserActivityRichApiHelper;\r\n}());\r\nexports.UserActivityRichApiHelper = UserActivityRichApiHelper;\r\n//# sourceMappingURL=UserActivityRichApiHelper.js.map", "\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeGate = exports.FeatureGate = exports.FeatureString = exports.FeatureInteger = exports.ABFeature = exports.ABType = void 0;\r\nvar ABType;\r\n(function (ABType) {\r\n ABType[ABType[\"Number\"] = 0] = \"Number\";\r\n ABType[ABType[\"String\"] = 1] = \"String\";\r\n ABType[ABType[\"Boolean\"] = 2] = \"Boolean\";\r\n})(ABType = exports.ABType || (exports.ABType = {}));\r\nvar ABFeature = /** @class */ (function () {\r\n function ABFeature(_name, _value, _type) {\r\n this._name = _name;\r\n this._value = _value;\r\n this._type = _type;\r\n }\r\n ABFeature.prototype.getName = function () {\r\n return this._name;\r\n };\r\n ABFeature.prototype.setValue = function (value) {\r\n this._value = value;\r\n };\r\n ABFeature.prototype.getType = function () {\r\n return this._type;\r\n };\r\n return ABFeature;\r\n}());\r\nexports.ABFeature = ABFeature;\r\nvar FeatureInteger = /** @class */ (function (_super) {\r\n __extends(FeatureInteger, _super);\r\n function FeatureInteger(name, value) {\r\n return _super.call(this, name, value, ABType.Number) || this;\r\n }\r\n FeatureInteger.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n return FeatureInteger;\r\n}(ABFeature));\r\nexports.FeatureInteger = FeatureInteger;\r\nvar FeatureString = /** @class */ (function (_super) {\r\n __extends(FeatureString, _super);\r\n function FeatureString(name, value) {\r\n return _super.call(this, name, value, ABType.String) || this;\r\n }\r\n FeatureString.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n return FeatureString;\r\n}(ABFeature));\r\nexports.FeatureString = FeatureString;\r\nvar FeatureGate = /** @class */ (function (_super) {\r\n __extends(FeatureGate, _super);\r\n function FeatureGate(name, scope, value) {\r\n var _this = _super.call(this, name, value === undefined ? false : value, ABType.Boolean) || this;\r\n _this._scope = scope;\r\n return _this;\r\n }\r\n FeatureGate.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n FeatureGate.prototype.getScope = function () {\r\n return this._scope;\r\n };\r\n return FeatureGate;\r\n}(ABFeature));\r\nexports.FeatureGate = FeatureGate;\r\nvar ChangeGate = /** @class */ (function (_super) {\r\n __extends(ChangeGate, _super);\r\n function ChangeGate(_name) {\r\n return _super.call(this, _name, \"Audience::Production\", true) || this;\r\n }\r\n return ChangeGate;\r\n}(FeatureGate));\r\nexports.ChangeGate = ChangeGate;\r\n//# sourceMappingURL=ABFeature.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExperimentationRichApiHelper = void 0;\r\nvar ABFeature_1 = require(\"../Experimentation/ABFeature\");\r\n/**\r\n * RichApi helper class to initialize Experimentation ABFeatures using Office JS APIs.\r\n * Call loadExperimentationProxyObjects along with client RequestContext and featureCollection object.\r\n * After context.sync(), call setExperimentationValues to set feature values to featureCollection object.\r\n */\r\nvar ExperimentationRichApiHelper = /** @class */ (function () {\r\n function ExperimentationRichApiHelper() {\r\n this.featureCollectionRichApiTypes = {};\r\n }\r\n /**\r\n * Loads experimentation proxy objects for the given feature collection.\r\n *\r\n * @remarks\r\n * Should call context.sync, followed by setExperimentationValues.\r\n *\r\n * @param context : Excel app's request context\r\n * @param featureCollection : Object containing list of ABFeatures to query from host app\r\n */\r\n ExperimentationRichApiHelper.prototype.loadExperimentationProxyObjects = function (context, featureCollection) {\r\n var _this = this;\r\n if (featureCollection.featuresInitialized) {\r\n return;\r\n }\r\n Object.entries(featureCollection.features).forEach(function (_a) {\r\n var featureName = _a[0], _feature = _a[1];\r\n var feature = _feature;\r\n if (feature.getType() === ABFeature_1.ABType.Boolean) {\r\n _this.featureCollectionRichApiTypes[featureName] =\r\n context.flighting.getFeatureGate(feature.getName(), _feature.getScope());\r\n }\r\n else {\r\n var featureType = feature.getType() === ABFeature_1.ABType.Number\r\n ? OfficeCore.FeatureType.integer\r\n : OfficeCore.FeatureType.string;\r\n _this.featureCollectionRichApiTypes[featureName] =\r\n context.flighting.getFeature(feature.getName(), featureType, feature.getValue());\r\n }\r\n _this.featureCollectionRichApiTypes[featureName].load(\"value\");\r\n });\r\n };\r\n /**\r\n * Sets actual experimentation values to featureCollection object.\r\n *\r\n * @remarks\r\n * Should be called after context.sync.\r\n *\r\n * @param featureCollection : Object containing list of ABFeatures to be set.\r\n */\r\n ExperimentationRichApiHelper.prototype.setExperimentationValues = function (featureCollection) {\r\n var _this = this;\r\n if (featureCollection.featuresInitialized) {\r\n return;\r\n }\r\n Object.entries(featureCollection.features).forEach(function (_a) {\r\n var featureName = _a[0], _feature = _a[1];\r\n var feature = _feature;\r\n feature.setValue(_this.featureCollectionRichApiTypes[featureName].value);\r\n });\r\n featureCollection.featuresInitialized = true;\r\n };\r\n return ExperimentationRichApiHelper;\r\n}());\r\nexports.ExperimentationRichApiHelper = ExperimentationRichApiHelper;\r\n//# sourceMappingURL=ExperimentationRichApiHelper.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExperimentationRichApiHelper = exports.UserActivityRichApiHelper = void 0;\r\nvar UserActivityRichApiHelper_1 = require(\"./UserActivity/UserActivityRichApiHelper\");\r\nObject.defineProperty(exports, \"UserActivityRichApiHelper\", { enumerable: true, get: function () { return UserActivityRichApiHelper_1.UserActivityRichApiHelper; } });\r\nvar ExperimentationRichApiHelper_1 = require(\"./ExperimentationRichApiHelper\");\r\nObject.defineProperty(exports, \"ExperimentationRichApiHelper\", { enumerable: true, get: function () { return ExperimentationRichApiHelper_1.ExperimentationRichApiHelper; } });\r\n//# sourceMappingURL=index.js.map", "module.exports = OfficePlatformGlobal.ReactNative.Components", "import { isHighContrast, setIsHighContrast as setIsHighContrastCore } from '@fluentui-react-native/theming-utils';\n\nexport function setIsHighContrast(newIsHighContrast: boolean) {\n setIsHighContrastCore(newIsHighContrast);\n}\n\nexport function getIsHighContrast() {\n return isHighContrast();\n}\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#1890f1\",\n\t\t\"disabled\": \"#575757\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#092c47\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#0086f0\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\",\n\t\t\"disabled\": \"#c2c2c2\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#092c47\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#043862\",\n\t\t\"hover\": \"#092c47\",\n\t\t\"pressed\": \"#0078d4\",\n\t\t\"selected\": \"#092c47\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\",\n\t\t\"disabled\": \"#d6d6d6\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#004c87\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#043862\",\n\t\t\"hover\": \"#092c47\",\n\t\t\"pressed\": \"#0078d4\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#3f1011\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#5c5c5c\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#575757\",\n\t\t\"hover\": \"#333333\",\n\t\t\"pressed\": \"#707070\",\n\t\t\"selected\": \"#2e2e2e\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#575757\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#0a0a0a\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#1f1f1f\",\n\t\t\"hover\": \"#1f1f1f\",\n\t\t\"pressed\": \"#000000\",\n\t\t\"selected\": \"#1a1a1a\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#5c5c5c\",\n\t\t\"hover\": \"#141414\",\n\t\t\"pressed\": \"#050505\",\n\t\t\"selected\": \"#0f0f0f\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"disabled\": \"#ffffff\",\n\t\t\"brandHover\": \"#092c47\",\n\t\t\"brandPressed\": \"#0078d4\",\n\t\t\"brandSelected\": \"#092c47\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#d6d6d6\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"brandHover\": \"#092c47\",\n\t\t\"brandPressed\": \"#0078d4\",\n\t\t\"brandSelected\": \"#092c47\",\n\t\t\"selected\": \"#d6d6d6\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#858585\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#b8b8b8\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"pressed\": \"#f5f5f5\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#292929\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#292929\",\n\t\t\"selected\": \"#292929\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#3d3d3d\",\n\t\t\"hover\": \"#757575\",\n\t\t\"pressed\": \"#6b6b6b\",\n\t\t\"selected\": \"#707070\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#666666\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#bdbdbd\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#0086f0\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#525252\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#3a1136\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#411200\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#1f1f1f\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#052505\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#4c4400\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#817400\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTg5MGYxXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjNTc1NzU3XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzYWEwZjNcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTJjNDdcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFN0YXRpY1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTg5MGYxXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzZjYjhmNlwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjYzJjMmMyXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzYWEwZjNcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTJjNDdcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwNDM4NjJcIixcblx0XHRcImhvdmVyXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzA5MmM0N1wiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA4NmYwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxODkwZjFcIixcblx0XHRcInByZXNzZWRcIjogXCIjNmNiOGY2XCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzNhYTBmM1wiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA0Yzg3XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDg2ZjBcIixcblx0XHRcImhvdmVyXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM2Y2I4ZjZcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA0Mzg2MlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDkyYzQ3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNzhkNFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZFN0cm9rZTFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDg2ZjBcIixcblx0XHRcImhvdmVyXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM2Y2I4ZjZcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjM2YxMDExXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzc1MWQxZlwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYzVlNjJcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlMzdkODBcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjFiYmJjXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM1YzVjNWNcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTc1NzU3XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzMzMzMzNcIixcblx0XHRcInByZXNzZWRcIjogXCIjNzA3MDcwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyZTJlMmVcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU3NTc1N1wiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBhMGEwYVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxZjFmMWZcIixcblx0XHRcImhvdmVyXCI6IFwiIzFmMWYxZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzFhMWExYVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjNWM1YzVjXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxNDE0MTRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDUwNTA1XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwZjBmMGZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzMzMzMzM1wiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU3NTc1N1wiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiMwOTJjNDdcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZDZkNmQ2XCIsXG5cdFx0XCJicmFuZEhvdmVyXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwiYnJhbmRQcmVzc2VkXCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiYnJhbmRTZWxlY3RlZFwiOiBcIiMwOTJjNDdcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2Q2ZDZkNlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQ0XCI6IHtcblx0XHRcInJlc3RcIjogXCIjODU4NTg1XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZERpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYjhiOGI4XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Y1ZjVmNVwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRJbnZlcnRlZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMyOTI5MjlcIixcblx0XHRcImhvdmVyXCI6IFwiIzI5MjkyOVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyOTI5MjlcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzI5MjkyOVwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmRPbkJyYW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdGVuY2lsMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzMzMzMzM1wiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTc1NzU3XCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNzU3NTc1XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzZiNmI2YlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjNzA3MDcwXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU3NTc1N1wiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZTNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2NjY2NjZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VBY2Nlc3NpYmxlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNiZGJkYmRcIixcblx0XHRcInByZXNzZWRcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDg2ZjBcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2VEaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzUyNTI1MlwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzNhMTEzNlwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzZkMjA2NFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTYxYzRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGE3ZWQwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDE2MWM0XCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzQxMTIwMFwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3YTIxMDFcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlOTgzNWVcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJzdWJ0bGVCYWNrZ3JvdW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMxZjFmMWZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDUyNTA1XCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTQ1MDlcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTRiMDU0XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM1NGIwNTRcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudEJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwMDAwMDAwXCJcblx0fSxcblx0XCJ0cmFuc3BhcmVudFN0cm9rZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzRjNDQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZWU2NlwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVlZTY2XCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZWEzZFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0UifQ==\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#1890f1\",\n\t\t\"disabled\": \"#575757\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#092c47\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#0086f0\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\",\n\t\t\"disabled\": \"#c2c2c2\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#092c47\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#043862\",\n\t\t\"hover\": \"#092c47\",\n\t\t\"pressed\": \"#0078d4\",\n\t\t\"selected\": \"#092c47\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\",\n\t\t\"disabled\": \"#d6d6d6\",\n\t\t\"selected\": \"#3aa0f3\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#004c87\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#043862\",\n\t\t\"hover\": \"#092c47\",\n\t\t\"pressed\": \"#0078d4\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#0086f0\",\n\t\t\"hover\": \"#1890f1\",\n\t\t\"pressed\": \"#6cb8f6\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#3f1011\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#e37d80\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#5c5c5c\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#575757\",\n\t\t\"hover\": \"#333333\",\n\t\t\"pressed\": \"#707070\",\n\t\t\"selected\": \"#2e2e2e\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#575757\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#0a0a0a\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#1f1f1f\",\n\t\t\"hover\": \"#1f1f1f\",\n\t\t\"pressed\": \"#000000\",\n\t\t\"selected\": \"#1a1a1a\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#5c5c5c\",\n\t\t\"hover\": \"#141414\",\n\t\t\"pressed\": \"#050505\",\n\t\t\"selected\": \"#0f0f0f\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#575757\",\n\t\t\"selected\": \"#9e9e9e\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"disabled\": \"#ffffff\",\n\t\t\"brandHover\": \"#092c47\",\n\t\t\"brandPressed\": \"#0078d4\",\n\t\t\"brandSelected\": \"#092c47\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#d6d6d6\",\n\t\t\"hover\": \"#d6d6d6\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"brandHover\": \"#092c47\",\n\t\t\"brandPressed\": \"#0078d4\",\n\t\t\"brandSelected\": \"#092c47\",\n\t\t\"selected\": \"#d6d6d6\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#d6d6d6\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#b8b8b8\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"pressed\": \"#f5f5f5\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#292929\",\n\t\t\"hover\": \"#292929\",\n\t\t\"pressed\": \"#292929\",\n\t\t\"selected\": \"#292929\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#333333\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#575757\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#adadad\",\n\t\t\"hover\": \"#757575\",\n\t\t\"pressed\": \"#6b6b6b\",\n\t\t\"selected\": \"#707070\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#a8a8a8\",\n\t\t\"hover\": \"#a8a8a8\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"disabled\": \"#d6d6d6\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#adadad\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#d6d6d6\",\n\t\t\"hover\": \"#bdbdbd\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#0086f0\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#525252\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#3a1136\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#da7ed0\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#d161c4\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#411200\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#e9835e\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#3d3d3d\",\n\t\t\"pressed\": \"#1f1f1f\",\n\t\t\"selected\": \"#383838\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#052505\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#54b054\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#3aa0f3\",\n\t\t\"hover\": \"#a8a8a8\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"disabled\": \"#d6d6d6\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#4c4400\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#feee66\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fdea3d\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#817400\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTg5MGYxXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjNTc1NzU3XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzYWEwZjNcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTJjNDdcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFN0YXRpY1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwODZmMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTg5MGYxXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzZjYjhmNlwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjYzJjMmMyXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzYWEwZjNcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTJjNDdcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwNDM4NjJcIixcblx0XHRcImhvdmVyXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzA5MmM0N1wiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA4NmYwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxODkwZjFcIixcblx0XHRcInByZXNzZWRcIjogXCIjNmNiOGY2XCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzNhYTBmM1wiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA0Yzg3XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDg2ZjBcIixcblx0XHRcImhvdmVyXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM2Y2I4ZjZcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA0Mzg2MlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDkyYzQ3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNzhkNFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZFN0cm9rZTFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDg2ZjBcIixcblx0XHRcImhvdmVyXCI6IFwiIzE4OTBmMVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM2Y2I4ZjZcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjM2YxMDExXCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzc1MWQxZlwiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYzVlNjJcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlMzdkODBcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjFiYmJjXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2UzN2Q4MFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDEzNDM4XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzNkM2QzZFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM1YzVjNWNcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzM4MzgzOFwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTc1NzU3XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzMzMzMzNcIixcblx0XHRcInByZXNzZWRcIjogXCIjNzA3MDcwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMyZTJlMmVcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU3NTc1N1wiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzBhMGEwYVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxZjFmMWZcIixcblx0XHRcImhvdmVyXCI6IFwiIzFmMWYxZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzFhMWExYVwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjNWM1YzVjXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxNDE0MTRcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDUwNTA1XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwZjBmMGZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzMzMzMzM1wiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU3NTc1N1wiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjOWU5ZTllXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMDkyYzQ3XCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA3OGQ0XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcImhvdmVyXCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNkNmQ2ZDZcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMDkyYzQ3XCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA3OGQ0XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzA5MmM0N1wiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZDZkNmQ2XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkNmQ2ZDZcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNiOGI4YjhcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjVmNWY1XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzI5MjkyOVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzI5MjkyOVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjkyOTI5XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMzMzMzMzXCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM1NzU3NTdcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM3NTc1NzVcIixcblx0XHRcInByZXNzZWRcIjogXCIjNmI2YjZiXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiM3MDcwNzBcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYThhOGE4XCIsXG5cdFx0XCJob3ZlclwiOiBcIiNhOGE4YThcIixcblx0XHRcInByZXNzZWRcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNkNmQ2ZDZcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYWRhZGFkXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlQWNjZXNzaWJsZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjYmRiZGJkXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2IzYjNiM1wiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDA4NmYwXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM1MjUyNTJcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzYTExMzZcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2ZDIwNjRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDE2MWM0XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhN2VkMFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhN2VkMFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2VkYmJlN1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxNjFjNFwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM0MTEyMDBcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjN2EyMTAxXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U5ODM1ZVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U5ODM1ZVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmNGJmYWJcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTk4MzVlXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwic3VidGxlQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMzZDNkM2RcIixcblx0XHRcInByZXNzZWRcIjogXCIjMWYxZjFmXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMzODM4MzhcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzA1MjUwNVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDk0NTA5XCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzU0YjA1NFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNTRiMDU0XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM5ZmQ4OWZcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRCYWNrZ3JvdW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRTdHJva2VcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzYWEwZjNcIixcblx0XHRcImhvdmVyXCI6IFwiI2E4YThhOFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNlYmViZWJcIixcblx0XHRcImRpc2FibGVkXCI6IFwiI2Q2ZDZkNlwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNGM0NDAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGUzMDBcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlYTNkXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVlZTY2XCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWVlNjZcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZlZjdiMlwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlYTNkXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjODE3NDAwXCJcblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0UifQ==\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#106ebe\",\n\t\t\"disabled\": \"#d1d1d1\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#eff6fc\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#0078d4\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"disabled\": \"#757575\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#106ebe\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"disabled\": \"#e0e0e0\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#c7e0f4\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#fdf6f6\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#bc2f32\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f0f0f0\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"selected\": \"#e6e6e6\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#f5f5f5\",\n\t\t\"hover\": \"#ebebeb\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"selected\": \"#e0e0e0\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"hover\": \"#fafafa\",\n\t\t\"pressed\": \"#f5f5f5\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#ebebeb\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#f0f0f0\",\n\t\t\"selected\": \"#fafafa\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"pressed\": \"#d1d1d1\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#000000\",\n\t\t\"pressed\": \"#000000\",\n\t\t\"selected\": \"#000000\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"brandHover\": \"#106ebe\",\n\t\t\"brandPressed\": \"#004578\",\n\t\t\"brandSelected\": \"#005a9e\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#424242\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"brandHover\": \"#106ebe\",\n\t\t\"brandPressed\": \"#004578\",\n\t\t\"brandSelected\": \"#005a9e\",\n\t\t\"selected\": \"#424242\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#424242\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#757575\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"pressed\": \"#f5f5f5\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#fafafa\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#c7c7c7\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#bdbdbd\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#666666\",\n\t\t\"pressed\": \"#292929\",\n\t\t\"disabled\": \"#bdbdbd\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#242424\",\n\t\t\"hover\": \"#575757\",\n\t\t\"pressed\": \"#4d4d4d\",\n\t\t\"selected\": \"#0078d4\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#fdf5fc\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#af33a1\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#fdf6f3\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#c43501\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#f1faf1\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#0e700e\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#359b35\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#666666\",\n\t\t\"pressed\": \"#292929\",\n\t\t\"disabled\": \"#bdbdbd\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#fffef5\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#fef7b2\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjZDFkMWQxXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDVhOWVcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZmY2ZmNcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFN0YXRpY1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjNzU3NTc1XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDVhOWVcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDZlYmVcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA3OGQ0XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxMDZlYmVcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNlMGUwZTBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzdlMGY0XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZFN0cm9rZTFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNmY2XCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxYmJiY1wiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWJiYmNcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNiYzJmMzJcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzUxZDFmXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGM1ZTYyXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNlYmViZWJcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ViZWJlYlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmMGYwZjBcIixcblx0XHRcInByZXNzZWRcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlNmU2ZTZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMGYwZjBcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZhZmFmYVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjBmMGYwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U2ZTZlNlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNkMWQxZDFcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDAwMDAwXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyNDI0MjRcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzQyNDI0MlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0MjQyNDJcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjNDI0MjQyXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM0MjQyNDJcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3NTc1NzVcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjVmNWY1XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTZlNmU2XCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjE2MTYxXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNjN2M3YzdcIixcblx0XHRcInByZXNzZWRcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNiZGJkYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiM2NjY2NjZcIixcblx0XHRcInByZXNzZWRcIjogXCIjMjkyOTI5XCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNiZGJkYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNjE2MTYxXCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlQWNjZXNzaWJsZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjNTc1NzU3XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzRkNGQ0ZFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDA3OGQ0XCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlMGUwZTBcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGY1ZmNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZGJiZTdcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2VkYmJlN1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2FmMzNhMVwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzZkMjA2NFwiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZGY2ZjNcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjRiZmFiXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2M0MzUwMVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3YTIxMDFcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGEzYjAxXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIlxuXHR9LFxuXHRcInN0cm9rZUZvY3VzMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMFwiXG5cdH0sXG5cdFwic3VidGxlQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInByZXNzZWRcIjogXCIjZTBlMGUwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlYmViZWJcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxZmFmMVwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXIxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjOWZkODlmXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMGU3MDBlXCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwOTQ1MDlcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzEwN2MxMFwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmRJbnZlcnRlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzM1OWIzNVwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRCYWNrZ3JvdW5kXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwidHJhbnNwYXJlbnRTdHJva2VcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzY2NjY2NlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyOTI5MjlcIixcblx0XHRcImRpc2FibGVkXCI6IFwiI2JkYmRiZFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZWY1XCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVmN2IyXCJcblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000066\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000007a\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000047\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwM2RcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0N1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA2NlwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDdhXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDdcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"brandBackground\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#106ebe\",\n\t\t\"disabled\": \"#d1d1d1\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandBackground2\": {\n\t\t\"rest\": \"#eff6fc\"\n\t},\n\t\"brandBackgroundStatic\": {\n\t\t\"rest\": \"#0078d4\"\n\t},\n\t\"brandForeground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"disabled\": \"#757575\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandForeground2\": {\n\t\t\"rest\": \"#106ebe\"\n\t},\n\t\"brandForegroundLink\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandStroke1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\",\n\t\t\"disabled\": \"#e0e0e0\",\n\t\t\"selected\": \"#005a9e\"\n\t},\n\t\"brandStroke2\": {\n\t\t\"rest\": \"#c7e0f4\"\n\t},\n\t\"compoundBrandBackground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"compoundBrandForeground1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"compoundBrandStroke1\": {\n\t\t\"rest\": \"#0078d4\",\n\t\t\"hover\": \"#106ebe\",\n\t\t\"pressed\": \"#004578\"\n\t},\n\t\"dangerBackground1\": {\n\t\t\"rest\": \"#fdf6f6\"\n\t},\n\t\"dangerBackground2\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBackground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorder1\": {\n\t\t\"rest\": \"#f1bbbc\"\n\t},\n\t\"dangerBorder2\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerBorderActive\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForeground1\": {\n\t\t\"rest\": \"#bc2f32\"\n\t},\n\t\"dangerForeground2\": {\n\t\t\"rest\": \"#751d1f\"\n\t},\n\t\"dangerForeground3\": {\n\t\t\"rest\": \"#d13438\"\n\t},\n\t\"dangerForegroundInverted\": {\n\t\t\"rest\": \"#dc5e62\"\n\t},\n\t\"neutralBackground1\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"neutralBackground2\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#f0f0f0\",\n\t\t\"pressed\": \"#ebebeb\",\n\t\t\"selected\": \"#e6e6e6\"\n\t},\n\t\"neutralBackground3\": {\n\t\t\"rest\": \"#f5f5f5\",\n\t\t\"hover\": \"#ebebeb\",\n\t\t\"pressed\": \"#d6d6d6\",\n\t\t\"selected\": \"#e0e0e0\"\n\t},\n\t\"neutralBackground4\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"hover\": \"#fafafa\",\n\t\t\"pressed\": \"#f5f5f5\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralBackground5\": {\n\t\t\"rest\": \"#ebebeb\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#f0f0f0\",\n\t\t\"selected\": \"#fafafa\"\n\t},\n\t\"neutralBackground6\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralBackgroundDisabled\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"pressed\": \"#d1d1d1\"\n\t},\n\t\"neutralBackgroundInverted\": {\n\t\t\"rest\": \"#616161\"\n\t},\n\t\"neutralForeground1\": {\n\t\t\"rest\": \"#242424\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground2\": {\n\t\t\"rest\": \"#000000\",\n\t\t\"hover\": \"#242424\",\n\t\t\"pressed\": \"#242424\",\n\t\t\"brandHover\": \"#106ebe\",\n\t\t\"brandPressed\": \"#004578\",\n\t\t\"brandSelected\": \"#005a9e\",\n\t\t\"selected\": \"#242424\"\n\t},\n\t\"neutralForeground3\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#424242\",\n\t\t\"pressed\": \"#424242\",\n\t\t\"brandHover\": \"#106ebe\",\n\t\t\"brandPressed\": \"#004578\",\n\t\t\"brandSelected\": \"#005a9e\",\n\t\t\"selected\": \"#424242\"\n\t},\n\t\"neutralForeground4\": {\n\t\t\"rest\": \"#808080\"\n\t},\n\t\"neutralForegroundDisabled\": {\n\t\t\"rest\": \"#757575\"\n\t},\n\t\"neutralForegroundInverted\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"pressed\": \"#f5f5f5\"\n\t},\n\t\"neutralForegroundInvertedLink\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralForegroundOnBrand\": {\n\t\t\"rest\": \"#ffffff\",\n\t\t\"hover\": \"#ffffff\",\n\t\t\"pressed\": \"#ffffff\",\n\t\t\"selected\": \"#ffffff\"\n\t},\n\t\"neutralStencil1\": {\n\t\t\"rest\": \"#e6e6e6\"\n\t},\n\t\"neutralStencil2\": {\n\t\t\"rest\": \"#fafafa\"\n\t},\n\t\"neutralStroke1\": {\n\t\t\"rest\": \"#f0f0f0\",\n\t\t\"hover\": \"#c7c7c7\",\n\t\t\"pressed\": \"#b3b3b3\",\n\t\t\"selected\": \"#bdbdbd\"\n\t},\n\t\"neutralStroke2\": {\n\t\t\"rest\": \"#d6d6d6\"\n\t},\n\t\"neutralStroke3\": {\n\t\t\"rest\": \"#f0f0f0\"\n\t},\n\t\"neutralStrokeAccessible\": {\n\t\t\"rest\": \"#616161\",\n\t\t\"hover\": \"#575757\",\n\t\t\"pressed\": \"#4d4d4d\",\n\t\t\"selected\": \"#0078d4\"\n\t},\n\t\"neutralStrokeDisabled\": {\n\t\t\"rest\": \"#e0e0e0\"\n\t},\n\t\"outofofficeBackground1\": {\n\t\t\"rest\": \"#fdf5fc\"\n\t},\n\t\"outofofficeBackground2\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBackground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorder1\": {\n\t\t\"rest\": \"#edbbe7\"\n\t},\n\t\"outofofficeBorder2\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeBorderActive\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"outofofficeForeground1\": {\n\t\t\"rest\": \"#af33a1\"\n\t},\n\t\"outofofficeForeground2\": {\n\t\t\"rest\": \"#6d2064\"\n\t},\n\t\"outofofficeForeground3\": {\n\t\t\"rest\": \"#c239b3\"\n\t},\n\t\"severeBackground1\": {\n\t\t\"rest\": \"#fdf6f3\"\n\t},\n\t\"severeBackground2\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBackground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorder1\": {\n\t\t\"rest\": \"#f4bfab\"\n\t},\n\t\"severeBorder2\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeBorderActive\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"severeForeground1\": {\n\t\t\"rest\": \"#c43501\"\n\t},\n\t\"severeForeground2\": {\n\t\t\"rest\": \"#7a2101\"\n\t},\n\t\"severeForeground3\": {\n\t\t\"rest\": \"#da3b01\"\n\t},\n\t\"strokeFocus1\": {\n\t\t\"rest\": \"#ffffff\"\n\t},\n\t\"strokeFocus2\": {\n\t\t\"rest\": \"#000000\"\n\t},\n\t\"subtleBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#f5f5f5\",\n\t\t\"pressed\": \"#e0e0e0\",\n\t\t\"selected\": \"#ebebeb\"\n\t},\n\t\"successBackground1\": {\n\t\t\"rest\": \"#f1faf1\"\n\t},\n\t\"successBackground2\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBackground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorder1\": {\n\t\t\"rest\": \"#9fd89f\"\n\t},\n\t\"successBorder2\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successBorderActive\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForeground1\": {\n\t\t\"rest\": \"#0e700e\"\n\t},\n\t\"successForeground2\": {\n\t\t\"rest\": \"#094509\"\n\t},\n\t\"successForeground3\": {\n\t\t\"rest\": \"#107c10\"\n\t},\n\t\"successForegroundInverted\": {\n\t\t\"rest\": \"#359b35\"\n\t},\n\t\"transparentBackground\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"selected\": \"#00000000\"\n\t},\n\t\"transparentStroke\": {\n\t\t\"rest\": \"#00000000\",\n\t\t\"hover\": \"#00000000\",\n\t\t\"pressed\": \"#00000000\",\n\t\t\"disabled\": \"#00000000\"\n\t},\n\t\"warningBackground1\": {\n\t\t\"rest\": \"#fffef5\"\n\t},\n\t\"warningBackground2\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBackground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorder1\": {\n\t\t\"rest\": \"#fef7b2\"\n\t},\n\t\"warningBorder2\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningBorderActive\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForeground1\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground2\": {\n\t\t\"rest\": \"#817400\"\n\t},\n\t\"warningForeground3\": {\n\t\t\"rest\": \"#fde300\"\n\t},\n\t\"warningForegroundInverted\": {\n\t\t\"rest\": \"#fef7b2\"\n\t}\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1hbGlhc2VzLmpzb24iXSwic291cmNlc0NvbnRlbnQiOlsie1xuXHRcImJyYW5kQmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjZDFkMWQxXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDVhOWVcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZmY2ZmNcIlxuXHR9LFxuXHRcImJyYW5kQmFja2dyb3VuZFN0YXRpY1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiXG5cdH0sXG5cdFwiYnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiLFxuXHRcdFwiZGlzYWJsZWRcIjogXCIjNzU3NTc1XCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiMwMDVhOWVcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDZlYmVcIlxuXHR9LFxuXHRcImJyYW5kRm9yZWdyb3VuZExpbmtcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDA3OGQ0XCIsXG5cdFx0XCJob3ZlclwiOiBcIiMxMDZlYmVcIixcblx0XHRcInByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiNlMGUwZTBcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiXG5cdH0sXG5cdFwiYnJhbmRTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzdlMGY0XCJcblx0fSxcblx0XCJjb21wb3VuZEJyYW5kQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIlxuXHR9LFxuXHRcImNvbXBvdW5kQnJhbmRGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwNzhkNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwNDU3OFwiXG5cdH0sXG5cdFwiY29tcG91bmRCcmFuZFN0cm9rZTFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDc4ZDRcIixcblx0XHRcImhvdmVyXCI6IFwiIzEwNmViZVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDQ1NzhcIlxuXHR9LFxuXHRcImRhbmdlckJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNmY2XCJcblx0fSxcblx0XCJkYW5nZXJCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YxYmJiY1wiXG5cdH0sXG5cdFwiZGFuZ2VyQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWJiYmNcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkMTM0MzhcIlxuXHR9LFxuXHRcImRhbmdlckJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNiYzJmMzJcIlxuXHR9LFxuXHRcImRhbmdlckZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjNzUxZDFmXCJcblx0fSxcblx0XCJkYW5nZXJGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2QxMzQzOFwiXG5cdH0sXG5cdFwiZGFuZ2VyRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZGM1ZTYyXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNlYmViZWJcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ViZWJlYlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmMGYwZjBcIixcblx0XHRcInByZXNzZWRcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNlNmU2ZTZcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y1ZjVmNVwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2Q2ZDZkNlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJuZXV0cmFsQmFja2dyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMGYwZjBcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZhZmFmYVwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmQ1XCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWJlYmViXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNmNWY1ZjVcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjBmMGYwXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kNlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2U2ZTZlNlwiXG5cdH0sXG5cdFwibmV1dHJhbEJhY2tncm91bmREaXNhYmxlZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNkMWQxZDFcIlxuXHR9LFxuXHRcIm5ldXRyYWxCYWNrZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjMjQyNDI0XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzI0MjQyNFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMyNDI0MjRcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMjQyNDI0XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIixcblx0XHRcImhvdmVyXCI6IFwiIzQyNDI0MlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0MjQyNDJcIixcblx0XHRcImJyYW5kSG92ZXJcIjogXCIjMTA2ZWJlXCIsXG5cdFx0XCJicmFuZFByZXNzZWRcIjogXCIjMDA0NTc4XCIsXG5cdFx0XCJicmFuZFNlbGVjdGVkXCI6IFwiIzAwNWE5ZVwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjNDI0MjQyXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZDRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MDgwODBcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kRGlzYWJsZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM3NTc1NzVcIlxuXHR9LFxuXHRcIm5ldXRyYWxGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInByZXNzZWRcIjogXCIjZjVmNWY1XCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZEludmVydGVkTGlua1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZmZmZmZmXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJuZXV0cmFsRm9yZWdyb3VuZE9uQnJhbmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZmZmZmZcIixcblx0XHRcImhvdmVyXCI6IFwiI2ZmZmZmZlwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiNmZmZmZmZcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiI2ZmZmZmZlwiXG5cdH0sXG5cdFwibmV1dHJhbFN0ZW5jaWwxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTZlNmU2XCJcblx0fSxcblx0XCJuZXV0cmFsU3RlbmNpbDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmYWZhZmFcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZjBmMGYwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiNjN2M3YzdcIixcblx0XHRcInByZXNzZWRcIjogXCIjYjNiM2IzXCIsXG5cdFx0XCJzZWxlY3RlZFwiOiBcIiNiZGJkYmRcIlxuXHR9LFxuXHRcIm5ldXRyYWxTdHJva2UyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZDZkNmQ2XCJcblx0fSxcblx0XCJuZXV0cmFsU3Ryb2tlM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2YwZjBmMFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZUFjY2Vzc2libGVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2MTYxNjFcIixcblx0XHRcImhvdmVyXCI6IFwiIzU3NTc1N1wiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiM0ZDRkNGRcIixcblx0XHRcInNlbGVjdGVkXCI6IFwiIzAwNzhkNFwiXG5cdH0sXG5cdFwibmV1dHJhbFN0cm9rZURpc2FibGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZTBlMGUwXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNWZjXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZWRiYmU3XCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjYzIzOWIzXCJcblx0fSxcblx0XCJvdXRvZm9mZmljZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNlZGJiZTdcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlQm9yZGVyMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2MyMzliM1wiXG5cdH0sXG5cdFwib3V0b2ZvZmZpY2VCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNhZjMzYTFcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM2ZDIwNjRcIlxuXHR9LFxuXHRcIm91dG9mb2ZmaWNlRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjMjM5YjNcIlxuXHR9LFxuXHRcInNldmVyZUJhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRmNmYzXCJcblx0fSxcblx0XCJzZXZlcmVCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2Y0YmZhYlwiXG5cdH0sXG5cdFwic2V2ZXJlQmFja2dyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmNGJmYWJcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNkYTNiMDFcIlxuXHR9LFxuXHRcInNldmVyZUJvcmRlckFjdGl2ZVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic2V2ZXJlRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNjNDM1MDFcIlxuXHR9LFxuXHRcInNldmVyZUZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjN2EyMTAxXCJcblx0fSxcblx0XCJzZXZlcmVGb3JlZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2RhM2IwMVwiXG5cdH0sXG5cdFwic3Ryb2tlRm9jdXMxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZmZmXCJcblx0fSxcblx0XCJzdHJva2VGb2N1czJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDBcIlxuXHR9LFxuXHRcInN1YnRsZUJhY2tncm91bmRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwiaG92ZXJcIjogXCIjZjVmNWY1XCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiI2UwZTBlMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjZWJlYmViXCJcblx0fSxcblx0XCJzdWNjZXNzQmFja2dyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmMWZhZjFcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCYWNrZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JhY2tncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMTA3YzEwXCJcblx0fSxcblx0XCJzdWNjZXNzQm9yZGVyMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzlmZDg5ZlwiXG5cdH0sXG5cdFwic3VjY2Vzc0JvcmRlcjJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NCb3JkZXJBY3RpdmVcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kMVwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzBlNzAwZVwiXG5cdH0sXG5cdFwic3VjY2Vzc0ZvcmVncm91bmQyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDk0NTA5XCJcblx0fSxcblx0XCJzdWNjZXNzRm9yZWdyb3VuZDNcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMxMDdjMTBcIlxuXHR9LFxuXHRcInN1Y2Nlc3NGb3JlZ3JvdW5kSW52ZXJ0ZWRcIjoge1xuXHRcdFwicmVzdFwiOiBcIiMzNTliMzVcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50QmFja2dyb3VuZFwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJob3ZlclwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwicHJlc3NlZFwiOiBcIiMwMDAwMDAwMFwiLFxuXHRcdFwic2VsZWN0ZWRcIjogXCIjMDAwMDAwMDBcIlxuXHR9LFxuXHRcInRyYW5zcGFyZW50U3Ryb2tlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjMDAwMDAwMDBcIixcblx0XHRcImhvdmVyXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJwcmVzc2VkXCI6IFwiIzAwMDAwMDAwXCIsXG5cdFx0XCJkaXNhYmxlZFwiOiBcIiMwMDAwMDAwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JhY2tncm91bmQxXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmZmZWY1XCJcblx0fSxcblx0XCJ3YXJuaW5nQmFja2dyb3VuZDJcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCYWNrZ3JvdW5kM1wiOiB7XG5cdFx0XCJyZXN0XCI6IFwiI2ZkZTMwMFwiXG5cdH0sXG5cdFwid2FybmluZ0JvcmRlcjFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiNmZWY3YjJcIlxuXHR9LFxuXHRcIndhcm5pbmdCb3JkZXIyXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nQm9yZGVyQWN0aXZlXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZDFcIjoge1xuXHRcdFwicmVzdFwiOiBcIiM4MTc0MDBcIlxuXHR9LFxuXHRcIndhcm5pbmdGb3JlZ3JvdW5kMlwiOiB7XG5cdFx0XCJyZXN0XCI6IFwiIzgxNzQwMFwiXG5cdH0sXG5cdFwid2FybmluZ0ZvcmVncm91bmQzXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmRlMzAwXCJcblx0fSxcblx0XCJ3YXJuaW5nRm9yZWdyb3VuZEludmVydGVkXCI6IHtcblx0XHRcInJlc3RcIjogXCIjZmVmN2IyXCJcblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "module.exports = {\n\t\"shadow16\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadow2\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadow28\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadow4\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadow64\": [\n\t\t{\n\t\t\t\"color\": \"#00000033\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#0000003d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadow8\": [\n\t\t{\n\t\t\t\"color\": \"#0000001f\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000024\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t],\n\t\"shadowBrand16\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 8,\n\t\t\t\"blur\": 16\n\t\t}\n\t],\n\t\"shadowBrand2\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 1,\n\t\t\t\"blur\": 2\n\t\t}\n\t],\n\t\"shadowBrand28\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 14,\n\t\t\t\"blur\": 28\n\t\t}\n\t],\n\t\"shadowBrand4\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 2,\n\t\t\t\"blur\": 4\n\t\t}\n\t],\n\t\"shadowBrand64\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 8\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 32,\n\t\t\t\"blur\": 64\n\t\t}\n\t],\n\t\"shadowBrand8\": [\n\t\t{\n\t\t\t\"color\": \"#0000004d\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 0,\n\t\t\t\"blur\": 2\n\t\t},\n\t\t{\n\t\t\t\"color\": \"#00000040\",\n\t\t\t\"x\": 0,\n\t\t\t\"y\": 4,\n\t\t\t\"blur\": 8\n\t\t}\n\t]\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2Vucy1zaGFkb3cuanNvbiJdLCJzb3VyY2VzQ29udGVudCI6WyJ7XG5cdFwic2hhZG93MTZcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMWZcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAyNFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogOCxcblx0XHRcdFwiYmx1clwiOiAxNlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3cyOFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAxNCxcblx0XHRcdFwiYmx1clwiOiAyOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c0XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDIsXG5cdFx0XHRcImJsdXJcIjogNFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDAzM1wiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDNkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3c4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDFmXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwMjRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDQsXG5cdFx0XHRcImJsdXJcIjogOFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDE2XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDgsXG5cdFx0XHRcImJsdXJcIjogMTZcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQyXCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDJcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDEsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDI4XCI6IFtcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDRkXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAwLFxuXHRcdFx0XCJibHVyXCI6IDhcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNDBcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDE0LFxuXHRcdFx0XCJibHVyXCI6IDI4XG5cdFx0fVxuXHRdLFxuXHRcInNoYWRvd0JyYW5kNFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiAyXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAyLFxuXHRcdFx0XCJibHVyXCI6IDRcblx0XHR9XG5cdF0sXG5cdFwic2hhZG93QnJhbmQ2NFwiOiBbXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0ZFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogMCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImNvbG9yXCI6IFwiIzAwMDAwMDQwXCIsXG5cdFx0XHRcInhcIjogMCxcblx0XHRcdFwieVwiOiAzMixcblx0XHRcdFwiYmx1clwiOiA2NFxuXHRcdH1cblx0XSxcblx0XCJzaGFkb3dCcmFuZDhcIjogW1xuXHRcdHtcblx0XHRcdFwiY29sb3JcIjogXCIjMDAwMDAwNGRcIixcblx0XHRcdFwieFwiOiAwLFxuXHRcdFx0XCJ5XCI6IDAsXG5cdFx0XHRcImJsdXJcIjogMlxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XCJjb2xvclwiOiBcIiMwMDAwMDA0MFwiLFxuXHRcdFx0XCJ4XCI6IDAsXG5cdFx0XHRcInlcIjogNCxcblx0XHRcdFwiYmx1clwiOiA4XG5cdFx0fVxuXHRdXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RSJ9\n", "import macOSDarkAliasTokens from '@fluentui-react-native/design-tokens-macos/dark/tokens-aliases.json';\nimport macOSDarkShadowTokens from '@fluentui-react-native/design-tokens-macos/dark/tokens-shadow.json';\nimport macOSDarkHCAliasTokens from '@fluentui-react-native/design-tokens-macos/hcdark/tokens-aliases.json';\nimport macOSDarkHCShadowTokens from '@fluentui-react-native/design-tokens-macos/hcdark/tokens-shadow.json';\nimport macOSLightHCAliasTokens from '@fluentui-react-native/design-tokens-macos/hclight/tokens-aliases.json';\nimport macOSLightHCShadowTokens from '@fluentui-react-native/design-tokens-macos/hclight/tokens-shadow.json';\nimport macOSLightAliasTokens from '@fluentui-react-native/design-tokens-macos/light/tokens-aliases.json';\nimport macOSLightShadowTokens from '@fluentui-react-native/design-tokens-macos/light/tokens-shadow.json';\nimport type { AppearanceOptions } from '@fluentui-react-native/theme-types';\nimport { assertNever } from 'assert-never';\n\nexport function getMacOSAliasTokens(mode: AppearanceOptions, isHighContrast: boolean) {\n if (mode === 'light') {\n if (isHighContrast) {\n return macOSLightHCAliasTokens;\n } else {\n return macOSLightAliasTokens;\n }\n } else if (mode === 'dark' || mode === 'darkElevated') {\n if (isHighContrast) {\n return macOSDarkHCAliasTokens;\n } else {\n return macOSDarkAliasTokens;\n }\n } else if (mode === 'highContrast') {\n throw new Error('highContrast is not a valid AppearanceOptions on macOS');\n } else {\n assertNever(mode);\n }\n}\n\nexport function getMacOSShadowTokens(mode: AppearanceOptions, isHighContrast: boolean) {\n if (mode === 'light') {\n if (isHighContrast) {\n return macOSLightHCShadowTokens;\n } else {\n return macOSLightShadowTokens;\n }\n } else if (mode === 'dark' || mode === 'darkElevated') {\n if (isHighContrast) {\n return macOSDarkHCShadowTokens;\n } else {\n return macOSDarkShadowTokens;\n }\n } else if (mode === 'highContrast') {\n throw new Error('highContrast is not a valid AppearanceOptions on macOS');\n } else {\n assertNever(mode);\n }\n}\n", "import { memoize } from '@fluentui-react-native/framework-base';\nimport type { AliasColorTokens, AppearanceOptions } from '@fluentui-react-native/theme-types';\nimport type { ThemeShadowDefinition } from '@fluentui-react-native/theme-types';\nimport { mapPipelineToTheme, mapPipelineToShadow } from '@fluentui-react-native/theming-utils';\n\nimport { getMacOSAliasTokens, getMacOSShadowTokens } from './getMacOSTokens';\n\nfunction createMacOSColorAliasTokensWorker(mode: AppearanceOptions, isHighContrast: boolean): AliasColorTokens {\n const aliasTokens = getMacOSAliasTokens(mode, isHighContrast);\n return mapPipelineToTheme(aliasTokens);\n}\n\nexport const createMacOSColorAliasTokens = memoize(createMacOSColorAliasTokensWorker);\n\nfunction createMacOSShadowAliasTokensWorker(mode: AppearanceOptions, isHighContrast: boolean): ThemeShadowDefinition {\n const aliasTokens = getMacOSShadowTokens(mode, isHighContrast);\n return mapPipelineToShadow(aliasTokens);\n}\n\nexport const createMacOSShadowAliasTokens = memoize(createMacOSShadowAliasTokensWorker);\n", "import type { ThemeColorDefinition, AppearanceOptions } from '@fluentui-react-native/theme-types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { PlatformColor, DynamicColorMacOS, ColorWithSystemEffectMacOS } from 'react-native-macos';\n\nimport type { AppleSemanticPalette, FluentUIApplePalette } from './appleColors.types.macos';\nimport { getIsHighContrast } from './appleHighContrast.macos';\nimport { createMacOSColorAliasTokens } from './createMacOSAliasTokens';\n\n/** Creates a Palette of PlatformColors defined for macOS */\nfunction getAppleSemanticPalette(): AppleSemanticPalette {\n return {\n labelColor: PlatformColor('labelColor'),\n secondaryLabelColor: PlatformColor('secondaryLabelColor'),\n tertiaryLabelColor: PlatformColor('tertiaryLabelColor'),\n quaternaryLabelColor: PlatformColor('quaternaryLabelColor'),\n\n textColor: PlatformColor('textColor'),\n placeholderTextColor: PlatformColor('placeholderTextColor'),\n textBackgroundColor: PlatformColor('textBackgroundColor'),\n\n selectedTextColor: PlatformColor('selectedTexColor'),\n selectedTextBackgroundColor: PlatformColor('selectedTextBackgroundColor'),\n keyboardFocusIndicatorColor: PlatformColor('keyboardFocusIndicatorColor'),\n unemphasizedSelectedTextColor: PlatformColor('unemphasizedSelectedTextColor'),\n unemphasizedSelectedTextBackgroundColor: PlatformColor('unemphasizedSelectedTextBackgroundColor'),\n\n linkColor: PlatformColor('linkColor'),\n separatorColor: PlatformColor('separatorColor'),\n selectedContentBackgroundColor: PlatformColor('selectedContentBackgroundColor'),\n unemphasizedSelectedContentBackgroundColor: PlatformColor('unemphasizedSelectedContentBackgroundColor'),\n\n selectedMenuItemTextColor: PlatformColor('selectedMenuItemTextColor'),\n\n gridColor: PlatformColor('gridColor'),\n headerTextColor: PlatformColor('headerTextColor'),\n alternatingOddContentBackgroundColor: PlatformColor('alternatingOddContentBackgroundColor'),\n alternatingEvenContentBackgroundColor: PlatformColor('alternatingOddContentBackgroundColor'),\n\n controlAccentColor: PlatformColor('controlAccentColor'),\n controlColor: PlatformColor('controlColor'),\n controlBackgroundColor: PlatformColor('controlBackgroundColor'),\n controlTextColor: PlatformColor('controlTextColor'),\n disabledControlTextColor: PlatformColor('disabledControlTextColor'),\n selectedControlColor: PlatformColor('selectedControlColor'),\n selectedControlTextColor: PlatformColor('selectedControlTextColor'),\n alternateSelectedControlTextColor: PlatformColor('alternateSelectedControlTextColor'),\n scrubberTexturedBackground: PlatformColor('scrubberTexturedBackground'),\n\n windowBackgroundColor: PlatformColor('windowBackgroundColor'),\n windowFrameTextColor: PlatformColor('windowFrameTextColor'),\n underPageBackgroundColor: PlatformColor('underPageBackgroundColor'),\n\n findHighlightColor: PlatformColor('findHighlightColor'),\n highlightColor: PlatformColor('highlightColor'),\n shadowColor: PlatformColor('shadowColor'),\n };\n}\n\nfunction getFluentUIApplePalette(): FluentUIApplePalette {\n return {\n blue10: '#4F6BED',\n blueMagenta20: '#8764B8',\n blueMagenta30: '#5C2E91',\n communicationBlue: DynamicColorMacOS({\n light: '#0078D4',\n dark: '#1890F1',\n }),\n communicationBlueShade10: DynamicColorMacOS({\n light: '#106EBE',\n dark: '#1890F1',\n }),\n communicationBlueShade20: DynamicColorMacOS({\n light: '#005A9E',\n dark: '#3AA0F3',\n }),\n communicationBlueShade30: DynamicColorMacOS({\n light: '#004578',\n dark: '#6CB8F6',\n }),\n communicationBlueTint10: DynamicColorMacOS({\n light: '#2B88D8',\n dark: '#0078D4',\n }),\n communicationBlueTint20: DynamicColorMacOS({\n light: '#C7E0F4',\n dark: '#004C87',\n }),\n communicationBlueTint30: DynamicColorMacOS({\n light: '#DEECF9',\n dark: '#043862',\n }),\n communicationBlueTint40: DynamicColorMacOS({\n light: '#EFF6FC',\n dark: '#092C47',\n }),\n\n cyan20: '#038387',\n cyan30: '#005B70',\n cyanBlue10: '#0078D4',\n cyanBlue20: '#004E8C',\n dangerPrimary: DynamicColorMacOS({\n light: '#D92C2C',\n dark: 'transparent',\n }),\n dangerShade10: DynamicColorMacOS({\n light: '#C32727',\n dark: '#transparent',\n }),\n dangerShade20: DynamicColorMacOS({\n light: '#A52121',\n dark: 'transparent',\n }),\n dangerShade30: DynamicColorMacOS({\n light: '#791818',\n dark: 'transparent',\n }),\n dangerTint10: DynamicColorMacOS({\n light: '#DD4242',\n dark: 'transparent',\n }),\n dangerTint20: DynamicColorMacOS({\n light: '#E87979',\n dark: 'transparent',\n }),\n dangerTint30: DynamicColorMacOS({\n light: '#F4B9B9',\n dark: 'transparent',\n }),\n dangerTint40: DynamicColorMacOS({\n light: '#F9D9D9',\n dark: 'transparent',\n }),\n gray20: '#69797E',\n gray25: '#F8F8F8',\n gray30: '#7A7574',\n gray40: '#393939',\n gray50: '#F1F1F1',\n gray100: '#E1E1E1',\n gray200: '#C8C8C8',\n gray300: '#ACACAC',\n gray400: '#919191',\n gray500: '#6E6E6E',\n gray600: '#404040',\n gray700: '#303030',\n gray800: '#292929',\n gray900: '#212121',\n gray950: '#141414',\n green10: '#498205',\n green20: '#0B6A0B',\n magenta10: '#C239B3',\n magenta20: '#881798',\n magentaPink10: '#E3008C',\n orange20: '#CA5010',\n orange30: '#8E562E',\n orangeYellow20: '#986F0B',\n pinkRed10: '#750B1C',\n presenceAvailable: DynamicColorMacOS({\n light: '#6BB700',\n dark: '#92C353',\n }),\n presenceAway: DynamicColorMacOS({\n light: '#FFAA44',\n dark: '#F8D22A',\n }),\n presenceBlocked: DynamicColorMacOS({\n light: '#C50F1F',\n dark: '#D74553',\n }),\n presenceBusy: DynamicColorMacOS({\n light: '#C50F1F',\n dark: '#D74553',\n }),\n presenceDnd: DynamicColorMacOS({\n light: '#C50F1F',\n dark: '#D74553',\n }),\n presenceOffline: DynamicColorMacOS({\n light: '#8A8886',\n dark: '#979593',\n }),\n presenceOof: DynamicColorMacOS({\n light: '#B4009E',\n dark: '#E959D9',\n }),\n presenceUnknown: DynamicColorMacOS({\n light: '#8A8886',\n dark: '#979593',\n }),\n red10: '#D13438',\n red20: '#A4262C',\n successPrimary: DynamicColorMacOS({\n light: '#13A10E',\n dark: '#979593',\n }),\n successShade10: DynamicColorMacOS({\n light: '#11910D',\n dark: '#20BA53',\n }),\n successShade20: DynamicColorMacOS({\n light: '#0F7A0B',\n dark: '#3BC569',\n }),\n successShade30: DynamicColorMacOS({\n light: '#0B5A08',\n dark: '#67D48B',\n }),\n successTint10: DynamicColorMacOS({\n light: '#27AC22',\n dark: '#0D9D3D',\n }),\n successTint20: DynamicColorMacOS({\n light: '#5EC65A',\n dark: '#096B29',\n }),\n successTint30: DynamicColorMacOS({\n light: '#A7E3A5',\n dark: '#043615',\n }),\n successTint40: DynamicColorMacOS({\n light: '#CEF0CD',\n dark: '#021D0B',\n }),\n warningPrimary: DynamicColorMacOS({\n light: '#FFD335',\n dark: '#FFC328',\n }),\n warningShade10: DynamicColorMacOS({\n light: '#E6BE30',\n dark: '#FFC83E',\n }),\n warningShade20: DynamicColorMacOS({\n light: '#C2A129',\n dark: '#FFDD15',\n }),\n warningShade30: DynamicColorMacOS({\n light: '#8F761E',\n dark: '#FFDD87',\n }),\n warningTint10: DynamicColorMacOS({\n light: '#FFD94E',\n dark: '#E0AB24',\n }),\n warningTint20: DynamicColorMacOS({\n light: '#FFE586',\n dark: '#997518',\n }),\n warningTint30: DynamicColorMacOS({\n light: '#FFF2C3',\n dark: '#4D3A0C',\n }),\n warningTint40: DynamicColorMacOS({\n light: '#FFF8DF',\n dark: '#291F07',\n }),\n };\n}\n\n/** Creates a palette of colors for the apple theme, given the FluentUI Apple Palette and Apple Semantic Palette\n * The fallback palette is loaded while we wait for the native theming module to load, or if the module is not found\n */\nexport function fallbackApplePalette(mode: AppearanceOptions): ThemeColorDefinition {\n const fluentUIApple = getFluentUIApplePalette();\n const applePlatform = getAppleSemanticPalette();\n const macOSAliasColorTokens = createMacOSColorAliasTokens(mode, getIsHighContrast());\n\n return {\n ...macOSAliasColorTokens,\n\n /* PaletteBackgroundColors & PaletteTextColors */\n\n background: applePlatform.windowBackgroundColor,\n bodyStandoutBackground: applePlatform.underPageBackgroundColor,\n bodyFrameBackground: applePlatform.windowBackgroundColor,\n bodyFrameDivider: applePlatform.separatorColor,\n bodyText: applePlatform.labelColor,\n bodyTextChecked: applePlatform.labelColor,\n subText: applePlatform.secondaryLabelColor,\n bodyDivider: applePlatform.separatorColor,\n\n disabledBackground: fluentUIApple.gray100,\n disabledText: applePlatform.tertiaryLabelColor,\n disabledBodyText: applePlatform.tertiaryLabelColor,\n\n focusBorder: 'transparent',\n variantBorder: applePlatform.separatorColor,\n errorText: fluentUIApple.dangerPrimary,\n\n inputBorder: applePlatform.separatorColor,\n inputBackground: applePlatform.textBackgroundColor,\n inputFocusBorderAlt: applePlatform.keyboardFocusIndicatorColor,\n inputText: applePlatform.textColor,\n inputPlaceholderText: applePlatform.placeholderTextColor,\n\n // Set the default button tokens to match the Acrylic Button style\n buttonBackground: macOSAliasColorTokens.neutralBackground1,\n buttonBackgroundChecked: macOSAliasColorTokens.neutralBackground3,\n buttonBackgroundHovered: macOSAliasColorTokens.neutralBackground3,\n buttonBackgroundPressed: ColorWithSystemEffectMacOS(macOSAliasColorTokens.neutralBackground3, 'pressed'),\n buttonBackgroundDisabled: ColorWithSystemEffectMacOS(macOSAliasColorTokens.neutralBackground3, 'disabled'),\n buttonBorder: macOSAliasColorTokens.transparentStroke,\n buttonText: macOSAliasColorTokens.neutralForeground3,\n buttonTextHovered: macOSAliasColorTokens.neutralForeground3,\n buttonTextChecked: macOSAliasColorTokens.neutralForeground3,\n buttonTextPressed: ColorWithSystemEffectMacOS(macOSAliasColorTokens.neutralForeground3, 'pressed'),\n buttonTextDisabled: ColorWithSystemEffectMacOS(macOSAliasColorTokens.neutralForeground3, 'disabled'),\n\n buttonBorderDisabled: macOSAliasColorTokens.transparentBackground,\n buttonBorderFocused: macOSAliasColorTokens.transparentBackground,\n\n primaryButtonBackground: fluentUIApple.communicationBlue,\n primaryButtonBackgroundHovered: fluentUIApple.communicationBlue,\n primaryButtonBackgroundPressed: macOSAliasColorTokens.brandBackgroundPressed,\n primaryButtonBackgroundDisabled: macOSAliasColorTokens.neutralBackgroundDisabled,\n primaryButtonBorder: 'transparent',\n primaryButtonBorderFocused: 'transparent',\n primaryButtonText: macOSAliasColorTokens.neutralForegroundInverted,\n primaryButtonTextHovered: macOSAliasColorTokens.neutralForegroundInverted,\n primaryButtonTextPressed: macOSAliasColorTokens.neutralForegroundInverted,\n primaryButtonTextDisabled: macOSAliasColorTokens.brandForeground1Disabled,\n\n accentButtonBackground: fluentUIApple.communicationBlue,\n\n menuBackground: 'transparent',\n menuDivider: applePlatform.separatorColor,\n menuIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n menuItemBackgroundHovered: applePlatform.controlAccentColor,\n menuItemBackgroundPressed: ColorWithSystemEffectMacOS(applePlatform.controlAccentColor, 'pressed'),\n menuItemText: applePlatform.labelColor,\n menuItemTextHovered: 'white',\n\n listHeaderBackgroundHovered: applePlatform.headerTextColor,\n listHeaderBackgroundPressed: applePlatform.headerTextColor,\n\n actionLink: applePlatform.linkColor,\n link: applePlatform.linkColor,\n linkHovered: applePlatform.linkColor,\n linkPressed: applePlatform.selectedControlColor,\n\n /* ControlColorTokens */\n\n // Set the default button tokens to match the Acrylic Button style\n defaultBackground: macOSAliasColorTokens.neutralBackground2,\n defaultBorder: macOSAliasColorTokens.neutralStroke2,\n defaultContent: macOSAliasColorTokens.neutralForeground2,\n defaultIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n defaultHoveredBackground: macOSAliasColorTokens.neutralBackground3,\n defaultHoveredBorder: macOSAliasColorTokens.neutralStroke2,\n defaultHoveredContent: macOSAliasColorTokens.neutralForeground3,\n defaultHoveredIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n defaultFocusedBackground: macOSAliasColorTokens.neutralBackground2,\n defaultFocusedBorder: macOSAliasColorTokens.neutralStroke2,\n defaultFocusedContent: macOSAliasColorTokens.neutralForeground2,\n defaultFocusedIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n defaultPressedBackground: macOSAliasColorTokens.neutralBackground2Pressed,\n defaultPressedBorder: macOSAliasColorTokens.neutralStroke2,\n defaultPressedContent: macOSAliasColorTokens.neutralForeground2,\n defaultPressedIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n defaultDisabledBackground: macOSAliasColorTokens.neutralBackground2,\n defaultDisabledBorder: macOSAliasColorTokens.neutralStroke2,\n defaultDisabledContent: macOSAliasColorTokens.neutralForegroundDisabled,\n defaultDisabledIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n ghostBackground: 'transparent',\n ghostBorder: 'transparent',\n ghostContent: fluentUIApple.communicationBlue,\n ghostIcon: fluentUIApple.communicationBlue,\n\n ghostHoveredBackground: 'transparent',\n ghostHoveredBorder: 'transparent',\n ghostHoveredContent: fluentUIApple.communicationBlue,\n ghostHoveredIcon: fluentUIApple.communicationBlue,\n\n ghostFocusedBackground: 'transparent',\n ghostFocusedBorder: 'transparent',\n ghostFocusedContent: fluentUIApple.communicationBlue,\n ghostFocusedIcon: fluentUIApple.communicationBlue,\n\n ghostPressedBackground: 'transparent',\n ghostPressedBorder: 'transparent',\n ghostPressedContent: macOSAliasColorTokens.brandForeground1Pressed,\n ghostPressedIcon: macOSAliasColorTokens.neutralForeground3, //GH:728 Icon doesn't support PlatformColor\n\n ghostDisabledBackground: 'transparent',\n ghostDisabledBorder: 'transparent',\n ghostDisabledContent: macOSAliasColorTokens.brandForeground1Disabled,\n ghostDisabledIcon: macOSAliasColorTokens.brandForeground1Disabled,\n\n brandedBackground: macOSAliasColorTokens.brandBackground,\n\n brandedDisabledBorder: 'transparent',\n\n defaultCheckedBackground: fluentUIApple.communicationBlue,\n defaultCheckedContent: macOSAliasColorTokens.neutralForegroundInverted,\n defaultCheckedHoveredBackground: fluentUIApple.communicationBlue,\n defaultCheckedHoveredContent: macOSAliasColorTokens.neutralForegroundInverted,\n\n ghostCheckedBackground: 'transparent',\n ghostCheckedContent: fluentUIApple.communicationBlue,\n ghostCheckedHoveredBackground: 'transparent',\n ghostCheckedHoveredContent: fluentUIApple.communicationBlue,\n ghostCheckedHoveredBorder: 'transparent',\n\n ghostSecondaryContent: fluentUIApple.communicationBlue,\n ghostFocusedSecondaryContent: fluentUIApple.communicationBlue,\n ghostHoveredSecondaryContent: fluentUIApple.communicationBlue,\n ghostPressedSecondaryContent: ColorWithSystemEffectMacOS(fluentUIApple.communicationBlue, 'deepPressed'),\n\n brandedSecondaryContent: macOSAliasColorTokens.neutralForegroundInverted,\n brandedFocusedSecondaryContent: macOSAliasColorTokens.neutralForegroundInverted,\n brandedHoveredSecondaryContent: macOSAliasColorTokens.neutralForegroundInverted,\n brandedPressedSecondaryContent: ColorWithSystemEffectMacOS(macOSAliasColorTokens.neutralForegroundInverted, 'pressed'),\n\n defaultHoveredSecondaryContent: macOSAliasColorTokens.neutralForeground3,\n defaultPressedSecondaryContent: macOSAliasColorTokens.neutralForegroundInverted,\n\n checkboxBackground: fluentUIApple.communicationBlue,\n checkboxBackgroundDisabled: macOSAliasColorTokens.neutralBackgroundDisabled,\n checkboxBorderColor: fluentUIApple.gray600,\n checkmarkColor: macOSAliasColorTokens.neutralForegroundInverted,\n\n personaActivityRing: macOSAliasColorTokens.neutralForegroundInverted,\n personaActivityGlow: fluentUIApple.red10,\n };\n}\n", "import type { ThemeShadowDefinition, AppearanceOptions } from '@fluentui-react-native/theme-types';\n\nimport { getIsHighContrast } from './appleHighContrast.macos';\nimport { createMacOSShadowAliasTokens } from './createMacOSAliasTokens';\n\nexport function fallbackAppleShadows(mode: AppearanceOptions): ThemeShadowDefinition {\n return createMacOSShadowAliasTokens(mode, getIsHighContrast());\n}\n", "import type { FontSize, FontSizes, FontWeightValue, Typography, Variants } from '@fluentui-react-native/theme-types';\n\n/**\n * The Typography is designed to match the styles defined in the Apple HIG:\n * https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/typography/\n * These mappings and variants are subject to change as we moved to a unified cross platform Fluent typography ramp\n * Github #598 also tracks pulling these values from a Native Module rather than hardcoding the numbers in JS.\n */\n\nexport function fallbackAppleTypography(): Typography {\n const appleDict = {\n sizes: {\n caption: 10 as FontSize, // Caption 1\n secondary: 11 as FontSize, // Callout\n body: 13 as FontSize, // Body\n subheader: 16 as FontSize, // Subheadline\n header: 20 as FontSize, // Headline\n hero: 22 as FontSize, /// Title 1\n heroLarge: 26 as FontSize, // Large Title,\n } as FontSizes,\n weights: {\n ultralight: '100' as FontWeightValue,\n thin: '200' as FontWeightValue,\n light: '300' as FontWeightValue,\n regular: '400' as FontWeightValue,\n medium: '500' as FontWeightValue,\n semiBold: '600' as FontWeightValue,\n bold: '700' as FontWeightValue,\n heavy: '800' as FontWeightValue,\n black: '900' as FontWeightValue,\n },\n families: {\n primary: 'System',\n secondary: 'System',\n cursive: 'System',\n monospace: 'System',\n numeric: 'System',\n sansSerif: 'System',\n serif: 'System',\n },\n variants: {\n captionStandard: { face: 'primary', size: 'caption', weight: '500' },\n secondaryStandard: { face: 'primary', size: 'secondary', weight: '400' },\n secondarySemibold: { face: 'primary', size: 'secondary', weight: '600' },\n bodyStandard: { face: 'primary', size: 'body', weight: '400' },\n bodySemibold: { face: 'primary', size: 'body', weight: '600' },\n subheaderStandard: { face: 'primary', size: 'subheader', weight: '400' },\n subheaderSemibold: { face: 'primary', size: 'subheader', weight: '600' },\n headerStandard: { face: 'primary', size: 'header', weight: '700' },\n headerSemibold: { face: 'primary', size: 'header', weight: '800' },\n heroStandard: { face: 'primary', size: 'hero', weight: '400' },\n heroSemibold: { face: 'primary', size: 'hero', weight: '700' },\n heroLargeStandard: { face: 'primary', size: 'heroLarge', weight: '400' },\n heroLargeSemibold: { face: 'primary', size: 'heroLarge', weight: '700' },\n // mocked out\n caption1: { face: 'primary', size: 'caption', weight: '500' },\n body1: { face: 'primary', size: 'secondary', weight: '400' },\n body1Strong: { face: 'primary', size: 'secondary', weight: '600' },\n body2: { face: 'primary', size: 'body', weight: '400' },\n body2Strong: { face: 'primary', size: 'body', weight: '600' },\n subtitle1: { face: 'primary', size: 'header', weight: '700' },\n subtitle1Strong: { face: 'primary', size: 'header', weight: '800' },\n subtitle2: { face: 'primary', size: 'subheader', weight: '400' },\n subtitle2Strong: { face: 'primary', size: 'subheader', weight: '600' },\n title1: { face: 'primary', size: 'hero', weight: '400' },\n title1Strong: { face: 'primary', size: 'hero', weight: '700' },\n largeTitle: { face: 'primary', size: 'heroLarge', weight: '400' },\n display: { face: 'primary', size: 'heroLarge', weight: '700' },\n } as Variants,\n };\n\n return appleDict;\n}\n", "import { memoize } from '@fluentui-react-native/framework-base';\nimport type { Spacing, Theme, AppearanceOptions } from '@fluentui-react-native/theme-types';\n\nimport { fallbackApplePalette } from './appleColors.macos';\nimport { fallbackAppleShadows } from './appleShadows.macos';\nimport { fallbackAppleTypography } from './appleTypography.macos';\n\nexport function appleSpacing(): Spacing {\n return {\n s2: '8px',\n s1: '12px',\n m: '16px',\n l1: '20px',\n l2: '24px',\n };\n}\n\nexport const appleComponents = {\n // These values correspond to the \"Large\" Button Size values of the FluentUI Apple Button\n Button: {\n tokens: {\n borderRadius: 6,\n borderWidth: 1,\n minHeight: 28,\n minWidth: 72,\n },\n root: {\n style: {\n margin: 8, // Padding around the outside of the button\n },\n },\n stack: {\n style: {\n paddingVertical: 4.5,\n minHeight: 28,\n },\n },\n icon: {\n style: {\n marginEnd: 10,\n },\n },\n content: {\n fontSize: 15,\n },\n },\n RNFText: {\n tokens: {\n variant: 'bodyStandard',\n },\n },\n Checkbox: {\n checkbox: {\n style: {\n borderStyle: 'solid',\n borderWidth: 0.5,\n borderRadius: 3,\n minHeight: 14,\n minWidth: 14,\n marginEnd: 5,\n },\n },\n checkmarkIcon: {\n width: 10,\n height: 10,\n style: {\n marginVertical: 2,\n marginHorizontal: 2,\n },\n },\n // This disables other available states like: hovered, focused, pressed.\n _precedence: ['disabled', 'boxAtEnd', 'checked'],\n },\n};\n\nfunction getBaseAppleThemeMacOSWorker(mode: AppearanceOptions): Theme {\n return {\n colors: fallbackApplePalette(mode),\n typography: fallbackAppleTypography(),\n shadows: fallbackAppleShadows(mode),\n spacing: appleSpacing(),\n components: appleComponents,\n host: { appearance: 'dynamic' },\n };\n}\n\nexport const getBaseAppleThemeMacOS = memoize(getBaseAppleThemeMacOSWorker);\n", "import { Appearance } from 'react-native';\n\nimport { ThemeReference } from '@fluentui-react-native/theme';\nimport type { Theme } from '@fluentui-react-native/theme-types';\nimport { getCurrentAppearance } from '@fluentui-react-native/theming-utils';\nimport { AccessibilityInfo } from 'react-native-macos';\n\nimport { setIsHighContrast } from './appleHighContrast.macos';\nimport { getBaseAppleThemeMacOS } from './appleTheme.macos';\n\nlet appleThemeReference: ThemeReference;\n\nexport function createAppleTheme(): ThemeReference {\n appleThemeReference = new ThemeReference({} as Theme, () => {\n const appearance = Appearance.getColorScheme();\n const mode = getCurrentAppearance(appearance, 'light');\n return getBaseAppleThemeMacOS(mode);\n });\n // Fetch initial system settings for high contrast mode\n highContrastHandler();\n // Invalidate theme and set prop when high contrast setting changes\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n AccessibilityInfo.addEventListener('highContrastChanged', () => {\n highContrastHandler();\n });\n\n Appearance.addChangeListener(() => {\n appleThemeReference.invalidate();\n });\n return appleThemeReference;\n}\n\nfunction highContrastHandler() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n AccessibilityInfo.isHighContrastEnabled().then((isEnabled) => {\n setIsHighContrast(isEnabled);\n appleThemeReference.invalidate();\n });\n}\n", "export { createAppleTheme } from './createAppleTheme';\nexport { createMacOSColorAliasTokens as createMacOSAliasTokens } from './createMacOSAliasTokens';\nexport { getIsHighContrast, setIsHighContrast } from './appleHighContrast.macos';\n", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CreateUserActivityCardTheme = exports.CreateUserActivityTheme = void 0;\r\nvar apple_theme_1 = require(\"@fluentui-react-native/apple-theme\");\r\nvar theme_1 = require(\"@fluentui-react-native/theme\");\r\nvar theming_utils_1 = require(\"@fluentui-react-native/theming-utils\");\r\nvar fallbackTheme = \"light\";\r\n/**\r\n * FURN MacOS does not have Office color palette (TaskPaneCard_FluentSV).\r\n * So manually override the color tokens.\r\n */\r\nvar taskPaneCardFluentSVColorOverrides = function (theme) {\r\n if ((0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, fallbackTheme) === \"dark\") {\r\n return {\r\n colors: {\r\n brandForeground1: \"#A0D8B9\",\r\n neutralBackground1: \"#292929\",\r\n neutralForeground3: \"#ADADAD\",\r\n errorText: \"#F1BBBD\",\r\n link: \"#A0D8B9\",\r\n linkHovered: \"#CAEAD8\",\r\n linkPressed: \"#218D51\",\r\n primaryButtonBackground: \"#107C41\",\r\n primaryButtonBackgroundHovered: \"#0F703B\",\r\n primaryButtonBackgroundPressed: \"#094624\",\r\n },\r\n };\r\n }\r\n return {\r\n colors: {\r\n brandForeground1: \"#107C41\",\r\n neutralBackground1: \"#FFFFFF\",\r\n neutralForeground3: \"#616161\",\r\n errorText: \"#9F282C\",\r\n link: \"#107C41\",\r\n linkHovered: \"#0F703B\",\r\n linkPressed: \"#094624\",\r\n primaryButtonBackground: \"#107C41\",\r\n primaryButtonBackgroundHovered: \"#0F703B\",\r\n primaryButtonBackgroundPressed: \"#094624\",\r\n },\r\n };\r\n};\r\n/**\r\n * Override color values for components that does not have a matching color in FURN Office color palette across all themes and platforms.\r\n */\r\nvar userActivityColorOverrides = function (theme) {\r\n if ((0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, fallbackTheme) === \"dark\") {\r\n return {\r\n colors: {\r\n activityIcon: \"#A0D8B9\",\r\n rangeBackgroundSelected: \"#107C41\",\r\n taskPaneBackground: \"#323232\",\r\n borderHighlight: \"#107C41\",\r\n degradedCardBackground: \"#292929\",\r\n defaultCardBackground: \"#1F1F1F\",\r\n displayRangeBackground: \"#1E1E1E\",\r\n commitIconLeftBorderColor: \"#107C41\",\r\n rangeBackground: \"#323232\",\r\n },\r\n };\r\n }\r\n return {\r\n colors: {\r\n activityIcon: \"#107C41\",\r\n rangeBackgroundSelected: \"#CAEAD8\",\r\n taskPaneBackground: \"#ECECEC\",\r\n borderHighlight: \"#107C41\",\r\n degradedCardBackground: \"#E0E0E0\",\r\n defaultCardBackground: \"#FFFFFF\",\r\n displayRangeBackground: \"#DBDBDB\",\r\n commitIconLeftBorderColor: \"#107C41\",\r\n rangeBackground: \"#ECECEC\",\r\n },\r\n };\r\n};\r\nfunction CreateUserActivityTheme() {\r\n return new theme_1.ThemeReference((0, apple_theme_1.createAppleTheme)(), taskPaneCardFluentSVColorOverrides, userActivityColorOverrides);\r\n}\r\nexports.CreateUserActivityTheme = CreateUserActivityTheme;\r\nfunction CreateUserActivityCardTheme() {\r\n return CreateUserActivityTheme();\r\n}\r\nexports.CreateUserActivityCardTheme = CreateUserActivityCardTheme;\r\n//# sourceMappingURL=UserActivityThemeProvider.macos.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CreateUserActivityCardTheme = exports.CreateUserActivityTheme = void 0;\r\nvar UserActivityThemeProvider_1 = require(\"./UserActivityThemeProvider\");\r\nObject.defineProperty(exports, \"CreateUserActivityTheme\", { enumerable: true, get: function () { return UserActivityThemeProvider_1.CreateUserActivityTheme; } });\r\nObject.defineProperty(exports, \"CreateUserActivityCardTheme\", { enumerable: true, get: function () { return UserActivityThemeProvider_1.CreateUserActivityCardTheme; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.trimPath = exports.isActivityTypeNavigable = exports.getFriendlyTimeStamp = exports.generateActivityInformationFromType = exports.generateAccessibilityInformation = exports.generateSummaryCardAccessibilityLabel = exports.fetchLocationTokensForMoveCards = exports.fetchInitialsFromName = void 0;\r\nvar Helper_1 = require(\"./UserActivityUX/Helper\");\r\nObject.defineProperty(exports, \"fetchInitialsFromName\", { enumerable: true, get: function () { return Helper_1.fetchInitialsFromName; } });\r\nObject.defineProperty(exports, \"fetchLocationTokensForMoveCards\", { enumerable: true, get: function () { return Helper_1.fetchLocationTokensForMoveCards; } });\r\nObject.defineProperty(exports, \"generateSummaryCardAccessibilityLabel\", { enumerable: true, get: function () { return Helper_1.generateSummaryCardAccessibilityLabel; } });\r\nObject.defineProperty(exports, \"generateAccessibilityInformation\", { enumerable: true, get: function () { return Helper_1.generateAccessibilityInformation; } });\r\nObject.defineProperty(exports, \"generateActivityInformationFromType\", { enumerable: true, get: function () { return Helper_1.generateActivityInformationFromType; } });\r\nObject.defineProperty(exports, \"getFriendlyTimeStamp\", { enumerable: true, get: function () { return Helper_1.getFriendlyTimeStamp; } });\r\nObject.defineProperty(exports, \"isActivityTypeNavigable\", { enumerable: true, get: function () { return Helper_1.isActivityTypeNavigable; } });\r\nObject.defineProperty(exports, \"trimPath\", { enumerable: true, get: function () { return Helper_1.trimPath; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\n/*\r\n Class that initializes Experimentation ABFeatures. Refer to ABFeature for types of Feature gates.\r\n\r\n To use FeatureCollection, create ABFeatures class that implements IABFeatures and list of all ABFeatures.\r\n Then FeatureCollection.Create(new ABFeatures()) to create a featureCollection class.\r\n You can then access feature values using featureCollection.features.\r\n\r\n If using RichApi, you can use RichApiFeatureGateHelper class to initialize Feature values.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FeatureCollection = void 0;\r\nvar FeatureCollection = /** @class */ (function () {\r\n function FeatureCollection(_features) {\r\n this._features = _features;\r\n this.featuresInitialized = false;\r\n }\r\n FeatureCollection.Create = function (features) {\r\n return new FeatureCollection(features);\r\n };\r\n Object.defineProperty(FeatureCollection.prototype, \"features\", {\r\n get: function () {\r\n return this._features;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return FeatureCollection;\r\n}());\r\nexports.FeatureCollection = FeatureCollection;\r\n//# sourceMappingURL=FeatureCollection.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FeatureCollection = exports.FeatureString = exports.FeatureInteger = exports.FeatureGate = exports.ChangeGate = exports.ABType = exports.ABFeature = void 0;\r\nvar ABFeature_1 = require(\"./ABFeature\");\r\nObject.defineProperty(exports, \"ABFeature\", { enumerable: true, get: function () { return ABFeature_1.ABFeature; } });\r\nObject.defineProperty(exports, \"ABType\", { enumerable: true, get: function () { return ABFeature_1.ABType; } });\r\nObject.defineProperty(exports, \"ChangeGate\", { enumerable: true, get: function () { return ABFeature_1.ChangeGate; } });\r\nObject.defineProperty(exports, \"FeatureGate\", { enumerable: true, get: function () { return ABFeature_1.FeatureGate; } });\r\nObject.defineProperty(exports, \"FeatureInteger\", { enumerable: true, get: function () { return ABFeature_1.FeatureInteger; } });\r\nObject.defineProperty(exports, \"FeatureString\", { enumerable: true, get: function () { return ABFeature_1.FeatureString; } });\r\nvar FeatureCollection_1 = require(\"./FeatureCollection\");\r\nObject.defineProperty(exports, \"FeatureCollection\", { enumerable: true, get: function () { return FeatureCollection_1.FeatureCollection; } });\r\n//# sourceMappingURL=index.js.map", "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FeatureString = exports.FeatureInteger = exports.FeatureGate = exports.FeatureCollection = exports.ChangeGate = exports.ABType = exports.ABFeature = exports.trimPath = exports.isActivityTypeNavigable = exports.getFriendlyTimeStamp = exports.generateActivityInformationFromType = exports.generateAccessibilityInformation = exports.fetchLocationTokensForMoveCards = exports.fetchInitialsFromName = exports.CreateUserActivityCardTheme = exports.CreateUserActivityTheme = exports.UserActivityRichApiHelper = exports.ExperimentationRichApiHelper = exports.getUserActivityStrings = exports.defaultCardHeight = exports.defaultBulkEditCardHeight = exports.baseCardMargin = exports.UserActivityType = exports.UserActivityCard = exports.SummaryCard = exports.RangePickerSelectionInput = exports.RangePicker = exports.PersonaInfo = exports.LoadingSpinner = exports.Link = exports.IconType = exports.Footer = exports.FontScaledSvg = exports.FontScaledIconButton = exports.FilterSection = exports.ExcelScrollableList = exports.DisplayLocation = exports.Carousel = exports.ButtonGroup = exports.BusinessBarThemeWrapper = exports.Anchor = void 0;\r\nvar Components_1 = require(\"./Components\");\r\nObject.defineProperty(exports, \"Anchor\", { enumerable: true, get: function () { return Components_1.Anchor; } });\r\nObject.defineProperty(exports, \"BusinessBarThemeWrapper\", { enumerable: true, get: function () { return Components_1.BusinessBarThemeWrapper; } });\r\nObject.defineProperty(exports, \"ButtonGroup\", { enumerable: true, get: function () { return Components_1.ButtonGroup; } });\r\nObject.defineProperty(exports, \"Carousel\", { enumerable: true, get: function () { return Components_1.Carousel; } });\r\nObject.defineProperty(exports, \"DisplayLocation\", { enumerable: true, get: function () { return Components_1.DisplayLocation; } });\r\nObject.defineProperty(exports, \"ExcelScrollableList\", { enumerable: true, get: function () { return Components_1.ExcelScrollableList; } });\r\nObject.defineProperty(exports, \"FilterSection\", { enumerable: true, get: function () { return Components_1.FilterSection; } });\r\nObject.defineProperty(exports, \"FontScaledIconButton\", { enumerable: true, get: function () { return Components_1.FontScaledIconButton; } });\r\nObject.defineProperty(exports, \"FontScaledSvg\", { enumerable: true, get: function () { return Components_1.FontScaledSvg; } });\r\nObject.defineProperty(exports, \"Footer\", { enumerable: true, get: function () { return Components_1.Footer; } });\r\nObject.defineProperty(exports, \"IconType\", { enumerable: true, get: function () { return Components_1.IconType; } });\r\nObject.defineProperty(exports, \"Link\", { enumerable: true, get: function () { return Components_1.Link; } });\r\nObject.defineProperty(exports, \"LoadingSpinner\", { enumerable: true, get: function () { return Components_1.LoadingSpinner; } });\r\nObject.defineProperty(exports, \"PersonaInfo\", { enumerable: true, get: function () { return Components_1.PersonaInfo; } });\r\nObject.defineProperty(exports, \"RangePicker\", { enumerable: true, get: function () { return Components_1.RangePicker; } });\r\nObject.defineProperty(exports, \"RangePickerSelectionInput\", { enumerable: true, get: function () { return Components_1.RangePickerSelectionInput; } });\r\nObject.defineProperty(exports, \"SummaryCard\", { enumerable: true, get: function () { return Components_1.SummaryCard; } });\r\nObject.defineProperty(exports, \"UserActivityCard\", { enumerable: true, get: function () { return Components_1.UserActivityCard; } });\r\nObject.defineProperty(exports, \"UserActivityType\", { enumerable: true, get: function () { return Components_1.UserActivityType; } });\r\nObject.defineProperty(exports, \"baseCardMargin\", { enumerable: true, get: function () { return Components_1.baseCardMargin; } });\r\nObject.defineProperty(exports, \"defaultBulkEditCardHeight\", { enumerable: true, get: function () { return Components_1.defaultBulkEditCardHeight; } });\r\nObject.defineProperty(exports, \"defaultCardHeight\", { enumerable: true, get: function () { return Components_1.defaultCardHeight; } });\r\nObject.defineProperty(exports, \"getUserActivityStrings\", { enumerable: true, get: function () { return Components_1.getUserActivityStrings; } });\r\nvar RichApi_1 = require(\"./RichApi\");\r\nObject.defineProperty(exports, \"ExperimentationRichApiHelper\", { enumerable: true, get: function () { return RichApi_1.ExperimentationRichApiHelper; } });\r\nObject.defineProperty(exports, \"UserActivityRichApiHelper\", { enumerable: true, get: function () { return RichApi_1.UserActivityRichApiHelper; } });\r\nvar Theme_1 = require(\"./Theme\");\r\nObject.defineProperty(exports, \"CreateUserActivityTheme\", { enumerable: true, get: function () { return Theme_1.CreateUserActivityTheme; } });\r\nObject.defineProperty(exports, \"CreateUserActivityCardTheme\", { enumerable: true, get: function () { return Theme_1.CreateUserActivityCardTheme; } });\r\nvar Utilities_1 = require(\"./Utilities\");\r\nObject.defineProperty(exports, \"fetchInitialsFromName\", { enumerable: true, get: function () { return Utilities_1.fetchInitialsFromName; } });\r\nObject.defineProperty(exports, \"fetchLocationTokensForMoveCards\", { enumerable: true, get: function () { return Utilities_1.fetchLocationTokensForMoveCards; } });\r\nObject.defineProperty(exports, \"generateAccessibilityInformation\", { enumerable: true, get: function () { return Utilities_1.generateAccessibilityInformation; } });\r\nObject.defineProperty(exports, \"generateActivityInformationFromType\", { enumerable: true, get: function () { return Utilities_1.generateActivityInformationFromType; } });\r\nObject.defineProperty(exports, \"getFriendlyTimeStamp\", { enumerable: true, get: function () { return Utilities_1.getFriendlyTimeStamp; } });\r\nObject.defineProperty(exports, \"isActivityTypeNavigable\", { enumerable: true, get: function () { return Utilities_1.isActivityTypeNavigable; } });\r\nObject.defineProperty(exports, \"trimPath\", { enumerable: true, get: function () { return Utilities_1.trimPath; } });\r\nvar Experimentation_1 = require(\"./Experimentation\");\r\nObject.defineProperty(exports, \"ABFeature\", { enumerable: true, get: function () { return Experimentation_1.ABFeature; } });\r\nObject.defineProperty(exports, \"ABType\", { enumerable: true, get: function () { return Experimentation_1.ABType; } });\r\nObject.defineProperty(exports, \"ChangeGate\", { enumerable: true, get: function () { return Experimentation_1.ChangeGate; } });\r\nObject.defineProperty(exports, \"FeatureCollection\", { enumerable: true, get: function () { return Experimentation_1.FeatureCollection; } });\r\nObject.defineProperty(exports, \"FeatureGate\", { enumerable: true, get: function () { return Experimentation_1.FeatureGate; } });\r\nObject.defineProperty(exports, \"FeatureInteger\", { enumerable: true, get: function () { return Experimentation_1.FeatureInteger; } });\r\nObject.defineProperty(exports, \"FeatureString\", { enumerable: true, get: function () { return Experimentation_1.FeatureString; } });\r\n//# sourceMappingURL=index.js.map", "import type { TextStyle, ViewStyle } from \"react-native\";\n\nexport const userMessageContainerStyle: ViewStyle = {\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingHorizontal: 12,\n paddingTop: 20,\n};\n\nexport const emptyPaneStyle: ViewStyle = {\n flexGrow: 1,\n minHeight: 350,\n justifyContent: \"center\",\n marginBottom: \"30%\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n};\n\nexport const userMessageTextStyle: TextStyle = {\n marginHorizontal: 7,\n marginBottom: 4,\n textAlign: \"center\",\n};\n\nexport const userMessageEmptyTitleMessageStyle: TextStyle = {\n marginVertical: 12,\n fontWeight: \"600\",\n fontSize: 14,\n textAlign: \"center\",\n};\n", "import type { StyleProp, ViewStyle } from \"react-native\";\n\nexport const separatorStyle: ViewStyle = {\n width: \"100%\",\n borderWidth: 1,\n borderColor: \"#D2D0CE\",\n borderStyle: \"solid\",\n borderBottomWidth: 0,\n borderRightWidth: 0,\n borderLeftWidth: 0,\n};\n\nexport const footerStyle = {\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginBottom: \"2%\",\n marginTop: \"2%\",\n} as StyleProp;\n\nexport const footerTextStyle = {\n marginBottom: \"2%\",\n textAlign: \"center\",\n} as StyleProp;\n", "import type { IABFeatures } from \"@office-iss/excel_shared_ux\";\nimport {\n FeatureCollection,\n ChangeGate,\n FeatureGate,\n FeatureInteger,\n} from \"@office-iss/excel_shared_ux\";\n\nclass GuidedReapplyABFeatures implements IABFeatures {\n // Change gates\n public GenerateExtendedInfo = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.LineageGenerateExtendedInfo\",\n );\n public HolisticMessaging = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplyHolisticMessaging\",\n );\n public MacButtonTheming = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplyMacButtonTheming\",\n );\n public ShowGuidedReapplyV2 = new ChangeGate(\n \"Microsoft.Office.Excel.GuidedReapplyReapplyChangesToDocument\",\n );\n public ShowLocaleBasedTimestamp = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplyShowLocaleBasedTimestamp\",\n );\n public ShowPersonaImage = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplyShowPersonaImage\",\n );\n public SingleRevisionApplyForV2 = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplySingleRevisionApplyForV2\",\n );\n public ShowOnlyV2HelpArticle = new ChangeGate(\n \"Microsoft.Office.Excel.ChangeGate.GuidedReapplyShowOnlyV2HelpArticle\",\n );\n}\n\nexport const GuidedReapplyFeatureCollection = FeatureCollection.Create(\n new GuidedReapplyABFeatures(),\n);\n", "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n", "{\n \"LearnMore\":\"Learn more\",\n \"_LearnMore.comment\": \"Hyperlink to bring up more information to understand why there are unviewable changes.\",\n \"BusinessBarChangesNotSaved\": \"These changes aren't saved to the cloud file and will be lost if discarded. \",\n \"_BusinessBarChangesNotSaved.comment\":\"SDX business bar error message informing the user changes will be lost if they press the Discard button in the SA/D business bar above. Comes immediately before the learn more string so space/sentence seperation must be preserved\",\n \"FooterWhySomeChangesCantBeShown\": \"Why are some changes not shown?\",\n \"_FooterWhySomeChangesCantBeShown.comment\": \"Open a help article explaining why some changes/workbook edits can't be shown.\",\n \"MergeMyChanges\":\"Merge My Changes\",\n \"_MergeMyChanges.comment\":\"Action that allows the user to apply unsaved changes to their document when reloading with the latest version on the server during a Guided Reapply scenario\",\n \"OpenUnmergedCopy\":\"Open My Unmerged Copy\",\n \"_OpenUnmergedCopy.comment\":\"Action that allows the user to open up a backup copy of their document with the changes shown in the Guided Reapply pane\",\n \"MergedChangesList\": \"Merged Changes\",\n \"_MergedChangesList.comment\": \"Collapsible button that shows and hides the list of changes that have been applied to the document\",\n \"UnmergedChangesList\": \"Unmerged Changes\",\n \"_UnmergedChangesList.comment\": \"Collapsible button that shows and hides the list of changes that have not been applied to the document\",\n \"UnmergedChangesLabel\": \"The changes below could not be merged automatically\",\n \"_UnmergedChangesLabel.comment\": \"This string is information telling the user some changes failed to apply after clicking the 'Apply Unsaved Changes' Button\",\n \"MergedChangesLabel\": \"The changes below have been merged successfully\",\n \"_MergedChangesLabel.comment\": \"This string is information telling the user some changes applied successfully after clicking the 'Apply Unsaved Changes' Button\",\n \"FooterSomeChangesMayNotBeDisplayed\":\"Some of your changes may not be able to be displayed\",\n \"_FooterSomeChangesMayNotBeDisplayed.comment\":\"Text that shows in the footer of the Guided Reapply V2.0 pane to guide users to a link where they can find more information about the pane and how to use it to resolve merge conflicts.\",\n \"LearnMoreAboutMergeConflicts\":\"Learn more about merge conflicts\",\n \"_LearnMoreAboutMergeConflicts.comment\":\"Link in the footer of the Guided Reapply V2.0 pane which links to a help article that explains the pane and how to use it to resolve merge conflicts.\",\n \"UnmergedChanges\":\"Your unmerged changes can’t be displayed.\",\n \"_UnmergedChanges.comment\":\"Text that shows in the center of the Guided Reapply V2.0 pane when we have an empty pane. This is to indicate to the user that we could not display any of their changes in the pane.\",\n \"MergeMyChangesButtonClickAnnouncement\":\"Merging changes\",\n \"_MergeMyChangesButtonClickAnnouncement.comment\":\"Announced by screen reader when 'Merge My Changes' button has been clicked.\",\n \"MergeMyChangesCompleteAnnouncement\":\"Merging complete\",\n \"_MergeMyChangesCompleteAnnouncement.comment\":\"Announced by screen reader after the merge operation has completed.\",\n \"ExpandedState\":\"Expanded\",\n \"_ExpandedState.comment\":\"Announced by screen reader on MacOS to announce that the CollapsibleList component has expanded\",\n \"CollapsedState\":\"Collapsed\",\n \"_CollapsedState.comment\":\"Announced by screen reader on MacOS to announce that the CollapsibleList component has collapsed\"\n}\n", "import type { IGuidedReapplyUserMessageSectionProps } from \"./types\";\nimport { Text } from \"@fluentui/react-native\";\nimport { Icon } from \"@fluentui-react-native/icon\";\nimport { View } from \"react-native\";\nimport * as React from \"react\";\nimport {\n userMessageContainerStyle,\n emptyPaneStyle,\n userMessageTextStyle,\n userMessageEmptyTitleMessageStyle,\n} from \"./UserMessage.styles\";\nimport { separatorStyle } from \"@office-iss/excel_shared_ux/src/Components/Footer/Footer.styles\";\nimport { Link } from \"@office-iss/excel_shared_ux\";\nimport { GuidedReapplyFeatureCollection } from \"../../Experimentation/GuidedReapplyFeatureCollection\";\n\nimport noChangesIllustration from \"@office-iss/excel_shared_ux/assets/UserActivityUX/noChangesIllustration.160.svgx\";\nconst strings = require(\"@office-iss/excel_shared_ux/assets/UserActivityUX/strings.resjson\");\nconst guidedReapplyStrings = require(\"../../../assets/strings.resjson\");\n\nexport const UserMessage: React.FunctionComponent<\n IGuidedReapplyUserMessageSectionProps\n> = (props: IGuidedReapplyUserMessageSectionProps) => {\n const showOnlyV2HelpArticle =\n GuidedReapplyFeatureCollection.features.ShowOnlyV2HelpArticle.getValue();\n\n const getUserMessageStyles = () => {\n if (props.emptyPane) {\n return { ...emptyPaneStyle };\n } else if (props.isInPostReload && showOnlyV2HelpArticle) {\n // We exclude the separator from the bottom of User Message when we show the V2 article because it is already included in the Footer and it looks unusual to have 2 separators in the pane.\n return { ...userMessageContainerStyle };\n } else {\n return { ...userMessageContainerStyle, ...separatorStyle };\n }\n };\n\n const getEmptyPaneLogo = () => {\n return (\n \n );\n };\n\n const getEmptyPaneTitle = () => {\n if (\n props.isInPostReload &&\n (props.hasUnviewableChange || props.hasNoActivities)\n ) {\n if (showOnlyV2HelpArticle) {\n return (\n \n {guidedReapplyStrings.getString(\"UnmergedChanges\")}\n \n );\n } else {\n return (\n \n {strings.getString(\"UnviewableUnmergedChanges\")}\n \n );\n }\n } else {\n return (\n \n {strings.getString(\"UserMessageEmptyPaneTitle\")}\n \n );\n }\n };\n\n const getHelpArticleLinkAndText = (isEmptyPane: boolean) => {\n // isInPostReload == \"We are showing GMR V2.0\". So, if we are not showing GMR V2.0 (we are showing V1.0), provide the old help article for V1, otherwise return null to not render the help article for V1 in the pane\n if (!props.isInPostReload || !showOnlyV2HelpArticle) {\n if (isEmptyPane) {\n return (\n \n );\n } else {\n return (\n <>\n \n {strings.getString(\"UnviewableUnmergedChanges\")}\n \n \n \n );\n }\n }\n return null;\n };\n\n const getEmptyPaneBody = () => {\n return (\n <>\n {getEmptyPaneLogo()}\n {getEmptyPaneTitle()}\n {getHelpArticleLinkAndText(true /*isEmptyPane*/)}\n \n );\n };\n\n const getUnviewableDescription = () => {\n // If we can't show some of the changes, we should add unviewable decsription for that\n return <>{<>{getHelpArticleLinkAndText(false /*isEmptyPane*/)}};\n };\n\n const getPaneBody = () => {\n if (props.emptyPane) {\n return getEmptyPaneBody();\n } else if (props.hasUnviewableChange && !props.hasSummaryCard) {\n return getUnviewableDescription();\n }\n return null;\n };\n\n return (\n \n <>{getPaneBody()}\n \n );\n};\n", "export type { IGuidedReapplyUserMessageSectionProps } from \"./types\";\nexport { UserMessage } from \"./UserMessage\";\nexport {\n emptyPaneStyle,\n userMessageContainerStyle,\n userMessageEmptyTitleMessageStyle,\n userMessageTextStyle,\n} from \"./UserMessage.styles\";\n", "import type { StyleProp, ViewStyle } from \"react-native\";\nimport { Platform, PlatformColor } from \"react-native\";\nimport type { Theme } from \"@fluentui-react-native/framework\";\n\nconst commonButtonStyle = {\n flexShrink: 1, // Allow button to shrink when space is limited to prevent clipping\n flexGrow: 0, // Prevent button from growing, allowing it to hug its content\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderBottomRightRadius: 5,\n marginRight: \"2%\",\n marginLeft: \"2%\",\n flexWrap: \"wrap\", // Enable text wrapping within the button when text is long\n} as const;\n\nexport const applyUnsavedChangesButtonStyle = (disabled: boolean): StyleProp => {\n return {\n ...commonButtonStyle,\n ...(Platform.OS === \"macos\" &&\n !disabled && {\n backgroundColor: PlatformColor(\"controlAccentColor\"),\n borderColor: PlatformColor(\"controlAccentColor\"),\n }),\n };\n};\n\nexport const openBackupButtonStyle = (theme: Theme, disabled: boolean): StyleProp => {\n return {\n ...commonButtonStyle,\n borderStyle: \"solid\",\n borderWidth: 1,\n ...(theme.name !== \"HighContrast\" && {\n backgroundColor: disabled ? undefined : theme.colors.neutralBackground2,\n }),\n };\n};\n\nexport const buttonGroupStyle: StyleProp = {\n flex: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginBottom: \"5%\",\n marginTop: \"2%\",\n};", "import * as React from \"react\";\nimport { GuidedReapplyFeatureCollection } from \"../../Experimentation/GuidedReapplyFeatureCollection\";\nimport {\n applyUnsavedChangesButtonStyle,\n openBackupButtonStyle,\n buttonGroupStyle,\n} from \"./PostReloadButtonGroup.styles\";\nimport { IPostReloadButtonGroupProps } from \"./types\";\nimport { View, Platform } from \"react-native\";\nimport { ButtonV1 as Button } from \"@fluentui-react-native/button\";\nimport type { ButtonProps } from \"@fluentui-react-native/button\";\nimport { useTheme } from \"@fluentui-react-native/theme-types\";\n\nconst strings = require(\"../../../assets/strings.resjson\");\n\nexport const PostReloadButtonGroup: React.FunctionComponent<\n IPostReloadButtonGroupProps\n> = (props: IPostReloadButtonGroupProps) => {\n const isInPostReloadState = props.isInPostReloadState;\n if (\n !GuidedReapplyFeatureCollection.features.ShowGuidedReapplyV2.getValue() ||\n !isInPostReloadState\n ) {\n return null;\n }\n\n const [dimApplyUnsavedChangesButton, setDimApplyUnsavedChangesButton] =\n React.useState(props.dimApplyUnsavedChangesButton);\n const [dimOpenBackupButton, setDimOpenBackupButton] = React.useState(\n props.dimOpenBackupButton,\n );\n\n const theme = useTheme();\n\n // The previously named Apply Unsaved Changes button has been renamed to Merge My Changes\n const applyUnsavedChangesButtonProps: ButtonProps = {\n onClick: dimApplyUnsavedChangesButton\n ? undefined\n : () =>\n props.onApplyUnsavedChangesButtonClicked(\n setDimApplyUnsavedChangesButton,\n ),\n style: applyUnsavedChangesButtonStyle(dimApplyUnsavedChangesButton),\n testID: \"MergeMyChangesButton\",\n disabled: dimApplyUnsavedChangesButton,\n };\n const applyUnsavedChangesButtonText = strings.getString(\"MergeMyChanges\");\n const applyUnsavedChangesButtonAppereance = dimApplyUnsavedChangesButton\n ? \"subtle\"\n : \"primary\";\n\n // The previously named Open Backup button has been renamed to Open Unmerged Copy\n const openBackupButtonProps: ButtonProps = {\n onClick: () => props.onOpenBackupButtonClicked(setDimOpenBackupButton),\n style: openBackupButtonStyle(theme, dimOpenBackupButton),\n testID: \"OpenUnmergedCopyButton\",\n disabled: dimOpenBackupButton,\n };\n const openBackupButtonText = strings.getString(\"OpenUnmergedCopy\");\n\n if (Platform.OS === \"macos\") {\n return (\n \n \n \n {applyUnsavedChangesButtonText}\n \n \n );\n }\n\n return (\n \n \n {applyUnsavedChangesButtonText}\n \n \n \n );\n};\n", "import * as React from \"react\";\nimport type { ViewStyle } from \"react-native\";\nimport { View } from \"react-native\";\nimport {\n CreateUserActivityCardTheme,\n LoadingSpinner,\n ExcelScrollableList,\n BusinessBarThemeWrapper,\n Footer,\n} from \"@office-iss/excel_shared_ux\";\nimport {\n IGuidedReapplyTaskPane,\n IGuidedReapplyTaskPaneProps,\n IGuidedReapplyTaskPaneState,\n} from \"./types\";\nimport { UserMessage } from \"../UserMessage\";\nimport { PostReloadButtonGroup } from \"../PostReloadButtonGroup/PostReloadButtonGroup.native\";\nimport { ThemeProvider } from \"@fluentui-react-native/theme\";\nimport { GuidedReapplyFeatureCollection } from \"../../Experimentation/GuidedReapplyFeatureCollection\";\n\n/**\n * IGuidedReapplyTaskPaneState allows for dynamic update with a new IGuidedReapplyTaskPaneProps object (for instance via RichApi)\n * IGuidedReapplyTaskPaneProps are the properties required to populate the task pane\n */\nexport class GuidedReapplyTaskPane\n extends React.Component<\n IGuidedReapplyTaskPaneProps,\n IGuidedReapplyTaskPaneState\n >\n implements IGuidedReapplyTaskPane\n{\n constructor(props: IGuidedReapplyTaskPaneProps) {\n super(props);\n }\n\n public render(): React.ReactNode {\n if (!this.contentReady() || !this.state.content.scrollableListProps) {\n return ;\n }\n\n const isDataEmpty =\n this.state.content.scrollableListProps.provider.data.length === 0;\n\n const parentFlex: ViewStyle = {\n flex: 1, // Without flex being set to 1, the child views do not render correctly\n flexDirection: \"column\",\n };\n return (\n \n {!isDataEmpty &&\n !this.state.content.isInPostReloadState &&\n this.state.content.businessBarProps && (\n \n )}\n\n \n \n \n\n {isDataEmpty && this.state.content.userMessageProps && (\n \n )}\n {this.state.content.postReloadButtonGroupProps && (\n \n )}\n\n {GuidedReapplyFeatureCollection.features.ShowOnlyV2HelpArticle.getValue() &&\n this.state.content.footerProps &&\n this.state.content.isInPostReloadState && (\n