@khanacademy/wonder-blocks-theming 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # @khanacademy/wonder-blocks-theming
2
+
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - bad46d23: First public release of theming package
8
+
9
+ ## 0.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - b2634f7c: Add `themeName` return value to `useScopedTheme` to allow getting the name of the theme in use.
14
+
15
+ ## 0.2.0
16
+
17
+ ### Minor Changes
18
+
19
+ - 758eb872: Add useScopedTheme hook
20
+ - 0f983e19: Add useStyles hook
21
+ - 014cd622: Add mergeTheme utility to extend themes
22
+ - 016801b7: Add ThemeSwitcherContext util
23
+ - 183ab2b8: Add global tokens
24
+ - 014cd622: Add createThemeContext
25
+ - abf48091: Add withScopedTheme HOC
26
+
27
+ ## 0.1.0
28
+
29
+ ### Minor Changes
30
+
31
+ - 9f3752d4: Add theming package
32
+
33
+ ### Patch Changes
34
+
35
+ - 9f3752d4: Change package settings
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { StyleDeclaration } from "aphrodite";
3
+ import type { ThemedStylesFn } from "../types";
4
+ export type WithThemeProps = {
5
+ wbThemeStyles: StyleDeclaration;
6
+ };
7
+ export type WithoutTheme<T> = Omit<T, keyof WithThemeProps>;
8
+ /**
9
+ * A higher order component that includes the themed styles in the props of the
10
+ * wrapped component as `wbThemeStyles`.
11
+ */
12
+ export default function withScopedTheme<T>(styleSheet: ThemedStylesFn<T>, themeContext: React.Context<T>): <Props extends WithThemeProps>(WrappedComponent: React.ComponentType<Props>) => (props: WithoutTheme<Props>) => JSX.Element;
@@ -0,0 +1,122 @@
1
+ import Spacing from '@khanacademy/wonder-blocks-spacing';
2
+ import Color, { mix, fade } from '@khanacademy/wonder-blocks-color';
3
+ import * as React from 'react';
4
+ import { StyleSheet } from 'aphrodite';
5
+
6
+ function _extends() {
7
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
8
+ for (var i = 1; i < arguments.length; i++) {
9
+ var source = arguments[i];
10
+ for (var key in source) {
11
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
12
+ target[key] = source[key];
13
+ }
14
+ }
15
+ }
16
+ return target;
17
+ };
18
+ return _extends.apply(this, arguments);
19
+ }
20
+
21
+ const tokens = {
22
+ color: _extends({}, Color, {
23
+ activeBlue: mix(Color.offBlack32, Color.blue),
24
+ fadedBlue: mix(fade(Color.blue, 0.32), Color.white),
25
+ activeRed: mix(Color.offBlack32, Color.red),
26
+ fadedRed: mix(fade(Color.red, 0.32), Color.white)
27
+ }),
28
+ spacing: Spacing,
29
+ border: {
30
+ radius: {
31
+ xSmall_2: 2,
32
+ small_3: 3,
33
+ medium_4: 4,
34
+ large_6: 6,
35
+ full: "50%"
36
+ },
37
+ width: {
38
+ none: 0,
39
+ hairline: 1,
40
+ thin: 2,
41
+ thick: 4
42
+ }
43
+ },
44
+ font: {
45
+ family: {
46
+ sans: 'Lato,"Noto Sans" sans-serif',
47
+ serif: '"Noto Serif", serif',
48
+ mono: "Inconsolata, monospace"
49
+ },
50
+ size: {
51
+ xxxLarge: 36,
52
+ xxLarge: 28,
53
+ xLarge: 24,
54
+ large: 20,
55
+ medium: 16,
56
+ small: 14,
57
+ xSmall: 12
58
+ },
59
+ lineHeight: {
60
+ xxxLarge: 40,
61
+ xxLarge: 32,
62
+ xLarge: 28,
63
+ large: 24,
64
+ medium: 20,
65
+ small: 18,
66
+ xSmall: 16
67
+ },
68
+ weight: {
69
+ light: 300,
70
+ regular: 400,
71
+ bold: 700
72
+ }
73
+ }
74
+ };
75
+
76
+ function mergeTheme(source, target) {
77
+ const result = _extends({}, source, target);
78
+ const objectKeys = Object.keys(result);
79
+ for (const key of objectKeys) {
80
+ const sourceValue = source[key];
81
+ const targetValue = target[key];
82
+ result[key] = typeof targetValue === "object" && typeof sourceValue === "object" ? mergeTheme(sourceValue, targetValue) : result[key];
83
+ }
84
+ return result;
85
+ }
86
+
87
+ function createThemeContext(theme) {
88
+ return React.createContext(theme);
89
+ }
90
+
91
+ const ThemeSwitcherContext = React.createContext("default");
92
+
93
+ function useScopedTheme(themeContext) {
94
+ var _React$useContext;
95
+ const theme = React.useContext(themeContext);
96
+ const themeName = (_React$useContext = React.useContext(ThemeSwitcherContext)) != null ? _React$useContext : "default";
97
+ return {
98
+ theme,
99
+ themeName
100
+ };
101
+ }
102
+
103
+ function withScopedTheme(styleSheet, themeContext) {
104
+ return WrappedComponent => props => {
105
+ const {
106
+ theme
107
+ } = useScopedTheme(themeContext);
108
+ const wbThemeStyles = styleSheet(theme);
109
+ return React.createElement(WrappedComponent, _extends({}, props, {
110
+ wbThemeStyles: wbThemeStyles
111
+ }));
112
+ };
113
+ }
114
+
115
+ function useStyles(styles, theme) {
116
+ const styleSheet = React.useMemo(() => {
117
+ return StyleSheet.create(styles(theme));
118
+ }, [styles, theme]);
119
+ return styleSheet;
120
+ }
121
+
122
+ export { ThemeSwitcherContext, createThemeContext, mergeTheme, tokens, useScopedTheme, useStyles, withScopedTheme };
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ type ScopedTheme<T> = {
3
+ /**
4
+ * The theme object.
5
+ */
6
+ theme: T;
7
+ /**
8
+ * The theme name.
9
+ */
10
+ themeName: string;
11
+ };
12
+ export default function useScopedTheme<T>(themeContext: React.Context<T>): ScopedTheme<T>;
13
+ export {};
@@ -0,0 +1,10 @@
1
+ import { StyleDeclaration } from "aphrodite";
2
+ import { ThemedStylesFn } from "../types";
3
+ /**
4
+ * A hook that that applies styles based on a given theme.
5
+ *
6
+ * @param styles A function that returns the styles to use.
7
+ * @param theme The theme to be passed to the styles.
8
+ * @returns The styleSheet object.
9
+ */
10
+ export default function useStyles<T>(styles: ThemedStylesFn<T>, theme: T): StyleDeclaration;
@@ -0,0 +1,8 @@
1
+ export { default as tokens } from "./tokens";
2
+ export { mergeTheme } from "./utils/merge-theme";
3
+ export { default as createThemeContext } from "./utils/create-theme-context";
4
+ export { default as useScopedTheme } from "./hooks/use-scoped-theme";
5
+ export { default as withScopedTheme, type WithThemeProps, } from "./components/with-scoped-theme";
6
+ export { type ThemedStylesFn } from "./types";
7
+ export { default as useStyles } from "./hooks/use-styles";
8
+ export { ThemeSwitcherContext } from "./utils/theme-switcher-context";
package/dist/index.js ADDED
@@ -0,0 +1,156 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Spacing = require('@khanacademy/wonder-blocks-spacing');
6
+ var Color = require('@khanacademy/wonder-blocks-color');
7
+ var React = require('react');
8
+ var aphrodite = require('aphrodite');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n["default"] = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var Spacing__default = /*#__PURE__*/_interopDefaultLegacy(Spacing);
31
+ var Color__default = /*#__PURE__*/_interopDefaultLegacy(Color);
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
+
34
+ function _extends() {
35
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
36
+ for (var i = 1; i < arguments.length; i++) {
37
+ var source = arguments[i];
38
+ for (var key in source) {
39
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
40
+ target[key] = source[key];
41
+ }
42
+ }
43
+ }
44
+ return target;
45
+ };
46
+ return _extends.apply(this, arguments);
47
+ }
48
+
49
+ const tokens = {
50
+ color: _extends({}, Color__default["default"], {
51
+ activeBlue: Color.mix(Color__default["default"].offBlack32, Color__default["default"].blue),
52
+ fadedBlue: Color.mix(Color.fade(Color__default["default"].blue, 0.32), Color__default["default"].white),
53
+ activeRed: Color.mix(Color__default["default"].offBlack32, Color__default["default"].red),
54
+ fadedRed: Color.mix(Color.fade(Color__default["default"].red, 0.32), Color__default["default"].white)
55
+ }),
56
+ spacing: Spacing__default["default"],
57
+ border: {
58
+ radius: {
59
+ xSmall_2: 2,
60
+ small_3: 3,
61
+ medium_4: 4,
62
+ large_6: 6,
63
+ full: "50%"
64
+ },
65
+ width: {
66
+ none: 0,
67
+ hairline: 1,
68
+ thin: 2,
69
+ thick: 4
70
+ }
71
+ },
72
+ font: {
73
+ family: {
74
+ sans: 'Lato,"Noto Sans" sans-serif',
75
+ serif: '"Noto Serif", serif',
76
+ mono: "Inconsolata, monospace"
77
+ },
78
+ size: {
79
+ xxxLarge: 36,
80
+ xxLarge: 28,
81
+ xLarge: 24,
82
+ large: 20,
83
+ medium: 16,
84
+ small: 14,
85
+ xSmall: 12
86
+ },
87
+ lineHeight: {
88
+ xxxLarge: 40,
89
+ xxLarge: 32,
90
+ xLarge: 28,
91
+ large: 24,
92
+ medium: 20,
93
+ small: 18,
94
+ xSmall: 16
95
+ },
96
+ weight: {
97
+ light: 300,
98
+ regular: 400,
99
+ bold: 700
100
+ }
101
+ }
102
+ };
103
+
104
+ function mergeTheme(source, target) {
105
+ const result = _extends({}, source, target);
106
+ const objectKeys = Object.keys(result);
107
+ for (const key of objectKeys) {
108
+ const sourceValue = source[key];
109
+ const targetValue = target[key];
110
+ result[key] = typeof targetValue === "object" && typeof sourceValue === "object" ? mergeTheme(sourceValue, targetValue) : result[key];
111
+ }
112
+ return result;
113
+ }
114
+
115
+ function createThemeContext(theme) {
116
+ return React__namespace.createContext(theme);
117
+ }
118
+
119
+ const ThemeSwitcherContext = React__namespace.createContext("default");
120
+
121
+ function useScopedTheme(themeContext) {
122
+ var _React$useContext;
123
+ const theme = React__namespace.useContext(themeContext);
124
+ const themeName = (_React$useContext = React__namespace.useContext(ThemeSwitcherContext)) != null ? _React$useContext : "default";
125
+ return {
126
+ theme,
127
+ themeName
128
+ };
129
+ }
130
+
131
+ function withScopedTheme(styleSheet, themeContext) {
132
+ return WrappedComponent => props => {
133
+ const {
134
+ theme
135
+ } = useScopedTheme(themeContext);
136
+ const wbThemeStyles = styleSheet(theme);
137
+ return React__namespace.createElement(WrappedComponent, _extends({}, props, {
138
+ wbThemeStyles: wbThemeStyles
139
+ }));
140
+ };
141
+ }
142
+
143
+ function useStyles(styles, theme) {
144
+ const styleSheet = React__namespace.useMemo(() => {
145
+ return aphrodite.StyleSheet.create(styles(theme));
146
+ }, [styles, theme]);
147
+ return styleSheet;
148
+ }
149
+
150
+ exports.ThemeSwitcherContext = ThemeSwitcherContext;
151
+ exports.createThemeContext = createThemeContext;
152
+ exports.mergeTheme = mergeTheme;
153
+ exports.tokens = tokens;
154
+ exports.useScopedTheme = useScopedTheme;
155
+ exports.useStyles = useStyles;
156
+ exports.withScopedTheme = withScopedTheme;
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Core tokens for the Wonder Blocks design system.
3
+ * @private
4
+ *
5
+ * NOTE: This file is private for WB usage only. It's not recommended to use
6
+ * this file in consumer apps at the moment.
7
+ */
8
+ declare const tokens: {
9
+ color: {
10
+ activeBlue: string;
11
+ fadedBlue: string;
12
+ activeRed: string;
13
+ fadedRed: string;
14
+ blue: string;
15
+ purple: string;
16
+ green: string;
17
+ gold: string;
18
+ red: string;
19
+ offBlack: string;
20
+ offBlack64: string;
21
+ offBlack50: string;
22
+ offBlack32: string;
23
+ offBlack16: string;
24
+ offBlack8: string;
25
+ offWhite: string;
26
+ white: string;
27
+ white64: string;
28
+ white50: string;
29
+ darkBlue: string;
30
+ teal: string;
31
+ lightBlue: string;
32
+ pink: string;
33
+ };
34
+ spacing: {
35
+ readonly xxxxSmall_2: 2;
36
+ readonly xxxSmall_4: 4;
37
+ readonly xxSmall_6: 6;
38
+ readonly xSmall_8: 8;
39
+ readonly small_12: 12;
40
+ readonly medium_16: 16;
41
+ readonly large_24: 24;
42
+ readonly xLarge_32: 32;
43
+ readonly xxLarge_48: 48;
44
+ readonly xxxLarge_64: 64;
45
+ };
46
+ border: {
47
+ radius: {
48
+ xSmall_2: number;
49
+ small_3: number;
50
+ medium_4: number;
51
+ large_6: number;
52
+ full: string;
53
+ };
54
+ width: {
55
+ none: number;
56
+ hairline: number;
57
+ thin: number;
58
+ thick: number;
59
+ };
60
+ };
61
+ font: {
62
+ family: {
63
+ sans: string;
64
+ serif: string;
65
+ mono: string;
66
+ };
67
+ size: {
68
+ xxxLarge: number;
69
+ xxLarge: number;
70
+ xLarge: number;
71
+ large: number;
72
+ medium: number;
73
+ small: number;
74
+ xSmall: number;
75
+ };
76
+ lineHeight: {
77
+ xxxLarge: number;
78
+ xxLarge: number;
79
+ xLarge: number;
80
+ large: number;
81
+ medium: number;
82
+ small: number;
83
+ xSmall: number;
84
+ };
85
+ weight: {
86
+ light: number;
87
+ regular: number;
88
+ bold: number;
89
+ };
90
+ };
91
+ };
92
+ export default tokens;
@@ -0,0 +1,2 @@
1
+ import { StyleDeclaration } from "aphrodite";
2
+ export type ThemedStylesFn<T> = (theme: T) => StyleDeclaration;
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ /**
3
+ * A utility that allows us to create a given theme that contains the component
4
+ * tokens associated to it.
5
+ *
6
+ * @param theme The theme object to create the context.
7
+ * @returns
8
+ */
9
+ export default function createThemeContext<T>(theme: T): React.Context<T>;
@@ -0,0 +1,15 @@
1
+ type RecursivePartial<T> = {
2
+ [P in keyof T]?: RecursivePartial<T[P]> | string | number | boolean;
3
+ };
4
+ /**
5
+ * Allows us to create a new copy of the target theme by overriding some of its
6
+ * tokens with a new theme.
7
+ *
8
+ * This is useful when defining another theme for a given component.
9
+ *
10
+ * @param target The original theme object.
11
+ * @param source The theme object to merge into the original.
12
+ * @returns A new theme object with the target tokens overriding the source.
13
+ */
14
+ export declare function mergeTheme<T>(source: T | RecursivePartial<T>, target: RecursivePartial<T>): T;
15
+ export {};
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ /**
3
+ * A React Context that holds a reference to the selected theme. It should use
4
+ * default as the initial value as we expect that any theme-able component
5
+ * should define its initial theme as default.
6
+ *
7
+ * @param theme The theme name to be used. It should be one of the themes
8
+ * defined in the themes object. Defaults to `default`.
9
+ */
10
+ export declare const ThemeSwitcherContext: React.Context<string>;
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@khanacademy/wonder-blocks-theming",
3
+ "version": "1.0.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "Theming in Wonder Blocks can be set per package/component level using a theme object that defines your components's colors, spacing, fonts, and more.",
8
+ "main": "dist/index.js",
9
+ "module": "dist/es/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "test": "echo \"Error: no test specified\" && exit 1"
13
+ },
14
+ "dependencies": {
15
+ "@khanacademy/wonder-blocks-color": "^2.0.1",
16
+ "@khanacademy/wonder-blocks-spacing": "^4.0.1"
17
+ },
18
+ "peerDependencies": {
19
+ "aphrodite": "^1.2.5",
20
+ "react": "16.14.0",
21
+ "react-dom": "16.14.0"
22
+ },
23
+ "devDependencies": {
24
+ "@khanacademy/wb-dev-build-settings": "^1.0.0"
25
+ },
26
+ "author": "",
27
+ "license": "MIT"
28
+ }
@@ -0,0 +1,54 @@
1
+ import * as React from "react";
2
+ import {render, screen} from "@testing-library/react";
3
+
4
+ import {View} from "@khanacademy/wonder-blocks-core";
5
+
6
+ import createThemeContext from "../../utils/create-theme-context";
7
+ import withScopedTheme, {WithThemeProps} from "../with-scoped-theme";
8
+ import {ThemedStylesFn} from "../../types";
9
+
10
+ describe("withScopedTheme", () => {
11
+ it("should return the theme from the context", () => {
12
+ // Arrange
13
+ const theme = {
14
+ color: {
15
+ bg: {primary: "#0000f0"},
16
+ text: {primary: "#00ff00"},
17
+ },
18
+ spacing: {
19
+ medium: 8,
20
+ large: 16,
21
+ },
22
+ };
23
+
24
+ type ThemeContract = typeof theme;
25
+
26
+ function ThemedComponent(props: WithThemeProps) {
27
+ const {wbThemeStyles} = props;
28
+
29
+ return <View style={wbThemeStyles.wrapper}>This is themed!</View>;
30
+ }
31
+
32
+ const styles: ThemedStylesFn<ThemeContract> = (theme) => ({
33
+ wrapper: {
34
+ background: theme.color.bg.primary,
35
+ color: theme.color.text.primary,
36
+ },
37
+ });
38
+
39
+ const themeContext = createThemeContext(theme);
40
+
41
+ // Act
42
+ const TestComponent = withScopedTheme(
43
+ styles,
44
+ themeContext,
45
+ )(ThemedComponent);
46
+
47
+ render(<TestComponent />);
48
+
49
+ // Assert
50
+ expect(screen.getByText("This is themed!")).toHaveStyle(
51
+ "background: #0000f0",
52
+ );
53
+ });
54
+ });
@@ -0,0 +1,36 @@
1
+ import * as React from "react";
2
+ import {StyleDeclaration} from "aphrodite";
3
+
4
+ import type {ThemedStylesFn} from "../types";
5
+ import useScopedTheme from "../hooks/use-scoped-theme";
6
+
7
+ export type WithThemeProps = {
8
+ wbThemeStyles: StyleDeclaration;
9
+ };
10
+
11
+ export type WithoutTheme<T> = Omit<T, keyof WithThemeProps>;
12
+
13
+ /**
14
+ * A higher order component that includes the themed styles in the props of the
15
+ * wrapped component as `wbThemeStyles`.
16
+ */
17
+ export default function withScopedTheme<T>(
18
+ styleSheet: ThemedStylesFn<T>,
19
+ themeContext: React.Context<T>,
20
+ ) {
21
+ return <Props extends WithThemeProps>(
22
+ WrappedComponent: React.ComponentType<Props>,
23
+ ) =>
24
+ (props: WithoutTheme<Props>) => {
25
+ const {theme} = useScopedTheme(themeContext);
26
+ // Apply the current theme to the stylesheet.
27
+ const wbThemeStyles = styleSheet(theme);
28
+
29
+ return (
30
+ <WrappedComponent
31
+ {...(props as Props)}
32
+ wbThemeStyles={wbThemeStyles}
33
+ />
34
+ );
35
+ };
36
+ }
@@ -0,0 +1,75 @@
1
+ import * as React from "react";
2
+ import {renderHook} from "@testing-library/react-hooks";
3
+
4
+ import {
5
+ createThemeContext,
6
+ ThemeSwitcherContext,
7
+ } from "@khanacademy/wonder-blocks-theming";
8
+ import useScopedTheme from "../use-scoped-theme";
9
+
10
+ describe("useScopedTheme", () => {
11
+ it("should return the theme from the context", () => {
12
+ // Arrange
13
+ const theme = {
14
+ color: {
15
+ blue: "#0000f0",
16
+ green: "#00ff00",
17
+ },
18
+ spacing: {
19
+ medium: 8,
20
+ large: 16,
21
+ },
22
+ };
23
+
24
+ const themeContext = createThemeContext(theme);
25
+
26
+ // Act
27
+ const {result} = renderHook(() => useScopedTheme(themeContext));
28
+
29
+ // Assert
30
+ expect(result.current.theme).toEqual(theme);
31
+ });
32
+
33
+ it("should return the default theme name", () => {
34
+ // Arrange
35
+ const theme = {
36
+ color: {
37
+ blue: "#0000f0",
38
+ },
39
+ };
40
+
41
+ const themeContext = createThemeContext(theme);
42
+
43
+ // Act
44
+ const {result} = renderHook(() => useScopedTheme(themeContext));
45
+
46
+ // Assert
47
+ expect(result.current.themeName).toEqual("default");
48
+ });
49
+
50
+ it("should return the theme name", () => {
51
+ // Arrange
52
+ const theme = {
53
+ color: {
54
+ blue: "#0000f0",
55
+ },
56
+ };
57
+
58
+ const themeContext = createThemeContext(theme);
59
+ const themeName = "khanmigo";
60
+ // Get the theme name from ThemeSwitcherContext.
61
+ const wrapper = ({children}: {children: React.ReactNode}) => (
62
+ <ThemeSwitcherContext.Provider value={themeName}>
63
+ {children}
64
+ </ThemeSwitcherContext.Provider>
65
+ );
66
+
67
+ // Act
68
+ const {result} = renderHook(() => useScopedTheme(themeContext), {
69
+ wrapper,
70
+ });
71
+
72
+ // Assert
73
+ expect(result.current.themeName).toEqual("khanmigo");
74
+ });
75
+ });
@@ -0,0 +1,70 @@
1
+ import {renderHook} from "@testing-library/react-hooks";
2
+ import {StyleSheet} from "aphrodite";
3
+ import {ThemedStylesFn} from "../../types";
4
+
5
+ import useStyles from "../use-styles";
6
+
7
+ describe("useStyles", () => {
8
+ it("should return the stylesheet", () => {
9
+ // Arrange
10
+ const theme = {
11
+ color: {
12
+ blue: "#0000f0",
13
+ green: "#00ff00",
14
+ },
15
+ spacing: {
16
+ medium: 8,
17
+ large: 16,
18
+ },
19
+ };
20
+
21
+ const styles: ThemedStylesFn<typeof theme> = (theme) =>
22
+ StyleSheet.create({
23
+ testContainer: {
24
+ color: theme.color.blue,
25
+ },
26
+ });
27
+
28
+ // Act
29
+ const {result} = renderHook(() => useStyles(styles, theme));
30
+
31
+ // Assert
32
+ expect(result.current).toMatchObject(
33
+ expect.objectContaining({
34
+ testContainer: expect.any(Object),
35
+ }),
36
+ );
37
+ });
38
+
39
+ it("should return the theme value in the stylesheet", () => {
40
+ // Arrange
41
+ const theme = {
42
+ color: {
43
+ blue: "#0000f0",
44
+ green: "#00ff00",
45
+ },
46
+ spacing: {
47
+ medium: 8,
48
+ large: 16,
49
+ },
50
+ };
51
+
52
+ const styles: ThemedStylesFn<typeof theme> = (theme) =>
53
+ StyleSheet.create({
54
+ testContainer: {
55
+ color: theme.color.blue,
56
+ },
57
+ });
58
+
59
+ // Act
60
+ const {result} = renderHook(() => useStyles(styles, theme));
61
+
62
+ // Assert
63
+ // NOTE: Aphrodite doesn't expose the style object, so we have to access
64
+ // it through the private properties.
65
+ expect(result.current).toHaveProperty(
66
+ "testContainer._definition._definition.color",
67
+ "#0000f0",
68
+ );
69
+ });
70
+ });
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import {ThemeSwitcherContext} from "../utils/theme-switcher-context";
3
+
4
+ type ScopedTheme<T> = {
5
+ /**
6
+ * The theme object.
7
+ */
8
+ theme: T;
9
+ /**
10
+ * The theme name.
11
+ */
12
+ themeName: string;
13
+ };
14
+
15
+ export default function useScopedTheme<T>(
16
+ themeContext: React.Context<T>,
17
+ ): ScopedTheme<T> {
18
+ const theme = React.useContext(themeContext);
19
+ const themeName = React.useContext(ThemeSwitcherContext) ?? "default";
20
+ return {theme, themeName};
21
+ }
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ import {StyleDeclaration, StyleSheet} from "aphrodite";
3
+
4
+ import {ThemedStylesFn} from "../types";
5
+
6
+ /**
7
+ * A hook that that applies styles based on a given theme.
8
+ *
9
+ * @param styles A function that returns the styles to use.
10
+ * @param theme The theme to be passed to the styles.
11
+ * @returns The styleSheet object.
12
+ */
13
+ export default function useStyles<T>(
14
+ styles: ThemedStylesFn<T>,
15
+ theme: T,
16
+ ): StyleDeclaration {
17
+ const styleSheet = React.useMemo(() => {
18
+ return StyleSheet.create(styles(theme));
19
+ }, [styles, theme]);
20
+
21
+ return styleSheet;
22
+ }
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ export {default as tokens} from "./tokens";
2
+ export {mergeTheme} from "./utils/merge-theme";
3
+ export {default as createThemeContext} from "./utils/create-theme-context";
4
+ export {default as useScopedTheme} from "./hooks/use-scoped-theme";
5
+ // HOC
6
+ export {
7
+ default as withScopedTheme,
8
+ type WithThemeProps,
9
+ } from "./components/with-scoped-theme";
10
+ export {type ThemedStylesFn} from "./types";
11
+ export {default as useStyles} from "./hooks/use-styles";
12
+ export {ThemeSwitcherContext} from "./utils/theme-switcher-context";
package/src/tokens.ts ADDED
@@ -0,0 +1,70 @@
1
+ import Spacing from "@khanacademy/wonder-blocks-spacing";
2
+ import Color, {fade, mix} from "@khanacademy/wonder-blocks-color";
3
+
4
+ /**
5
+ * Core tokens for the Wonder Blocks design system.
6
+ * @private
7
+ *
8
+ * NOTE: This file is private for WB usage only. It's not recommended to use
9
+ * this file in consumer apps at the moment.
10
+ */
11
+ const tokens = {
12
+ color: {
13
+ // Wonder Blocks base colors
14
+ ...Color,
15
+ // New colors
16
+ activeBlue: mix(Color.offBlack32, Color.blue),
17
+ fadedBlue: mix(fade(Color.blue, 0.32), Color.white),
18
+ activeRed: mix(Color.offBlack32, Color.red),
19
+ fadedRed: mix(fade(Color.red, 0.32), Color.white),
20
+ // Additional colors (e.g. for use in other themes)
21
+ },
22
+ spacing: Spacing,
23
+ border: {
24
+ radius: {
25
+ xSmall_2: 2,
26
+ small_3: 3,
27
+ medium_4: 4,
28
+ large_6: 6,
29
+ full: "50%",
30
+ },
31
+ width: {
32
+ none: 0,
33
+ hairline: 1,
34
+ thin: 2,
35
+ thick: 4,
36
+ },
37
+ },
38
+ font: {
39
+ family: {
40
+ sans: 'Lato,"Noto Sans" sans-serif',
41
+ serif: '"Noto Serif", serif',
42
+ mono: "Inconsolata, monospace",
43
+ },
44
+ size: {
45
+ xxxLarge: 36,
46
+ xxLarge: 28,
47
+ xLarge: 24,
48
+ large: 20,
49
+ medium: 16,
50
+ small: 14,
51
+ xSmall: 12,
52
+ },
53
+ lineHeight: {
54
+ xxxLarge: 40,
55
+ xxLarge: 32,
56
+ xLarge: 28,
57
+ large: 24,
58
+ medium: 20,
59
+ small: 18,
60
+ xSmall: 16,
61
+ },
62
+ weight: {
63
+ light: 300,
64
+ regular: 400,
65
+ bold: 700,
66
+ },
67
+ },
68
+ };
69
+
70
+ export default tokens;
package/src/types.ts ADDED
@@ -0,0 +1,3 @@
1
+ import {StyleDeclaration} from "aphrodite";
2
+
3
+ export type ThemedStylesFn<T> = (theme: T) => StyleDeclaration;
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ import {render, screen} from "@testing-library/react";
3
+
4
+ import createThemeContext from "../create-theme-context";
5
+
6
+ describe("createThemeContext", () => {
7
+ it("should create a context with the given theme", () => {
8
+ // Arrange
9
+ const theme = {
10
+ color: {
11
+ bg: {
12
+ default: "#ffffff",
13
+ },
14
+ },
15
+ };
16
+ // Create the context with the default theme.
17
+ const ThemeContext = createThemeContext(theme);
18
+
19
+ // Act
20
+ render(
21
+ <ThemeContext.Consumer>
22
+ {(value) => <>The default color is: {value.color.bg.default}</>}
23
+ </ThemeContext.Consumer>,
24
+ );
25
+
26
+ // Assert
27
+ expect(screen.getByText("The default color is: #ffffff")).toBeTruthy();
28
+ });
29
+ });
@@ -0,0 +1,87 @@
1
+ import tokens from "../../tokens";
2
+ import {mergeTheme} from "../merge-theme";
3
+
4
+ describe("mergeTheme", () => {
5
+ it("should return the source theme if the target is empty", () => {
6
+ // Arrange
7
+ const themeDefault = {
8
+ color: {
9
+ bg: {
10
+ default: "#ffffff",
11
+ primary: "#0000ff",
12
+ },
13
+ },
14
+ spacing: {
15
+ small: 4,
16
+ medium: 8,
17
+ },
18
+ };
19
+ const themeOverride = {};
20
+
21
+ // Act
22
+ const result = mergeTheme(themeDefault, themeOverride);
23
+
24
+ // Assert
25
+ expect(result).toEqual(themeDefault);
26
+ });
27
+
28
+ it("should merge two themes", () => {
29
+ // Arrange
30
+ const themeDefault = {
31
+ color: {
32
+ blue: "#0000f0",
33
+ green: "#00ff00",
34
+ },
35
+ spacing: {
36
+ medium: 8,
37
+ large: 16,
38
+ },
39
+ };
40
+
41
+ const themeOverride = {
42
+ color: {
43
+ blue: "#0000ff",
44
+ red: "#ff0000",
45
+ },
46
+ spacing: {
47
+ small: 4,
48
+ medium: 8,
49
+ },
50
+ };
51
+
52
+ // Act
53
+ const result = mergeTheme(themeDefault, themeOverride);
54
+
55
+ // Assert
56
+ expect(result).toEqual({
57
+ color: {
58
+ blue: "#0000ff",
59
+ green: "#00ff00",
60
+ red: "#ff0000",
61
+ },
62
+ spacing: {
63
+ small: 4,
64
+ medium: 8,
65
+ large: 16,
66
+ },
67
+ });
68
+ });
69
+
70
+ it("should override the global tokens", () => {
71
+ // Arrange
72
+ const themeDefault = tokens;
73
+
74
+ // Only override the blue color
75
+ const themeOverride = {
76
+ color: {
77
+ blue: "#0000ff",
78
+ },
79
+ };
80
+
81
+ // Act
82
+ const result = mergeTheme(themeDefault, themeOverride);
83
+
84
+ // Assert
85
+ expect(result.color.blue).toEqual("#0000ff");
86
+ });
87
+ });
@@ -0,0 +1,37 @@
1
+ import * as React from "react";
2
+ import {render, screen} from "@testing-library/react";
3
+
4
+ import {ThemeSwitcherContext} from "../theme-switcher-context";
5
+
6
+ describe("ThemeSwitcherContext", () => {
7
+ it("should create a context with the 'default' theme", () => {
8
+ // Arrange
9
+
10
+ // Act
11
+ render(
12
+ <ThemeSwitcherContext.Consumer>
13
+ {(value) => <>The current theme is: {value}</>}
14
+ </ThemeSwitcherContext.Consumer>,
15
+ );
16
+
17
+ // Assert
18
+ expect(screen.getByText(/The current theme is: default/)).toBeTruthy();
19
+ });
20
+
21
+ it("should update its value", () => {
22
+ // Arrange
23
+
24
+ // Act
25
+ render(
26
+ <ThemeSwitcherContext.Provider value="dark">
27
+ <ThemeSwitcherContext.Consumer>
28
+ {(value) => <>The current theme is: {value}</>}
29
+ </ThemeSwitcherContext.Consumer>
30
+ ,
31
+ </ThemeSwitcherContext.Provider>,
32
+ );
33
+
34
+ // Assert
35
+ expect(screen.getByText(/The current theme is: dark/)).toBeTruthy();
36
+ });
37
+ });
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+
3
+ /**
4
+ * A utility that allows us to create a given theme that contains the component
5
+ * tokens associated to it.
6
+ *
7
+ * @param theme The theme object to create the context.
8
+ * @returns
9
+ */
10
+ export default function createThemeContext<T>(theme: T) {
11
+ return React.createContext(theme);
12
+ }
@@ -0,0 +1,33 @@
1
+ type RecursivePartial<T> = {
2
+ [P in keyof T]?: RecursivePartial<T[P]> | string | number | boolean;
3
+ };
4
+
5
+ /**
6
+ * Allows us to create a new copy of the target theme by overriding some of its
7
+ * tokens with a new theme.
8
+ *
9
+ * This is useful when defining another theme for a given component.
10
+ *
11
+ * @param target The original theme object.
12
+ * @param source The theme object to merge into the original.
13
+ * @returns A new theme object with the target tokens overriding the source.
14
+ */
15
+ export function mergeTheme<T>(
16
+ source: T | RecursivePartial<T>,
17
+ target: RecursivePartial<T>,
18
+ ) {
19
+ const result = {...source, ...target};
20
+ const objectKeys = Object.keys(result);
21
+ type Keys = keyof typeof result;
22
+
23
+ for (const key of objectKeys) {
24
+ const sourceValue = source[key as Keys];
25
+ const targetValue = target[key as Keys];
26
+ result[key as Keys] =
27
+ typeof targetValue === "object" && typeof sourceValue === "object"
28
+ ? mergeTheme(sourceValue, targetValue)
29
+ : result[key as Keys];
30
+ }
31
+
32
+ return result as T;
33
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+
3
+ /**
4
+ * A React Context that holds a reference to the selected theme. It should use
5
+ * default as the initial value as we expect that any theme-able component
6
+ * should define its initial theme as default.
7
+ *
8
+ * @param theme The theme name to be used. It should be one of the themes
9
+ * defined in the themes object. Defaults to `default`.
10
+ */
11
+ export const ThemeSwitcherContext = React.createContext<string>("default");
@@ -0,0 +1,13 @@
1
+ {
2
+ "exclude": ["dist"],
3
+ "extends": "../tsconfig-shared.json",
4
+ "compilerOptions": {
5
+ "outDir": "./dist",
6
+ "rootDir": "src",
7
+ },
8
+ "references": [
9
+ {"path": "../wonder-blocks-color/tsconfig-build.json"},
10
+ {"path": "../wonder-blocks-core/tsconfig-build.json"},
11
+ {"path": "../wonder-blocks-spacing/tsconfig-build.json"},
12
+ ]
13
+ }
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.es2016.full.d.ts","../wonder-blocks-spacing/dist/index.d.ts","../wonder-blocks-color/dist/util/utils.d.ts","../wonder-blocks-color/dist/index.d.ts","./src/tokens.ts","./src/utils/merge-theme.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","./src/utils/create-theme-context.ts","./src/utils/theme-switcher-context.ts","./src/hooks/use-scoped-theme.ts","./src/types.ts","./src/components/with-scoped-theme.tsx","./src/hooks/use-styles.ts","./src/index.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@testing-library/dom/types/matches.d.ts","../../node_modules/@testing-library/dom/types/wait-for.d.ts","../../node_modules/@testing-library/dom/types/query-helpers.d.ts","../../node_modules/@testing-library/dom/types/queries.d.ts","../../node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","../../node_modules/@testing-library/dom/node_modules/pretty-format/build/types.d.ts","../../node_modules/@testing-library/dom/node_modules/pretty-format/build/index.d.ts","../../node_modules/@testing-library/dom/types/screen.d.ts","../../node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","../../node_modules/@testing-library/dom/types/get-node-text.d.ts","../../node_modules/@testing-library/dom/types/events.d.ts","../../node_modules/@testing-library/dom/types/pretty-dom.d.ts","../../node_modules/@testing-library/dom/types/role-helpers.d.ts","../../node_modules/@testing-library/dom/types/config.d.ts","../../node_modules/@testing-library/dom/types/suggestions.d.ts","../../node_modules/@testing-library/dom/types/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-dom/test-utils/index.d.ts","../../node_modules/@testing-library/react/types/index.d.ts","../wonder-blocks-core/dist/util/aria-types.d.ts","../wonder-blocks-core/dist/util/types.propsfor.d.ts","../wonder-blocks-core/dist/util/types.d.ts","../wonder-blocks-core/dist/components/text.d.ts","../wonder-blocks-core/dist/components/view.d.ts","../wonder-blocks-core/dist/components/render-state-context.d.ts","../wonder-blocks-core/dist/components/with-ssr-placeholder.d.ts","../wonder-blocks-core/dist/components/id-provider.d.ts","../wonder-blocks-core/dist/components/unique-id-provider.d.ts","../wonder-blocks-core/dist/util/add-style.d.ts","../wonder-blocks-core/dist/util/server.d.ts","../wonder-blocks-core/dist/hooks/use-unique-id.d.ts","../wonder-blocks-core/dist/hooks/use-force-update.d.ts","../wonder-blocks-core/dist/hooks/use-is-mounted.d.ts","../wonder-blocks-core/dist/hooks/use-latest-ref.d.ts","../wonder-blocks-core/dist/hooks/use-on-mount-effect.d.ts","../wonder-blocks-core/dist/hooks/use-online.d.ts","../wonder-blocks-core/dist/hooks/use-render-state.d.ts","../wonder-blocks-core/dist/components/render-state-root.d.ts","../wonder-blocks-core/dist/index.d.ts","./src/components/__tests__/with-scoped-theme.test.tsx","../../node_modules/@testing-library/react-hooks/lib/types/index.d.ts","../../node_modules/@testing-library/react-hooks/lib/types/react.d.ts","../../node_modules/@testing-library/react-hooks/lib/pure.d.ts","../../node_modules/@testing-library/react-hooks/lib/index.d.ts","./src/hooks/__tests__/use-scoped-theme.test.tsx","./src/hooks/__tests__/use-styles.test.ts","./src/utils/__tests__/create-theme-context.test.tsx","./src/utils/__tests__/merge-theme.test.ts","./src/utils/__tests__/theme-switcher-context.test.tsx","./types/aphrodite.d.ts","./types/matchers.d.ts","./types/utility.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/acorn/index.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/color-name/index.d.ts","../../node_modules/@types/concat-stream/index.d.ts","../../node_modules/@types/cross-spawn/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","../../node_modules/@types/detect-port/index.d.ts","../../node_modules/@types/doctrine/index.d.ts","../../node_modules/@types/ejs/index.d.ts","../../node_modules/@types/emscripten/index.d.ts","../../node_modules/@types/escodegen/index.d.ts","../../node_modules/@types/estree-jsx/index.d.ts","../../node_modules/@types/send/node_modules/@types/mime/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/mime/Mime.d.ts","../../node_modules/@types/mime/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/find-cache-dir/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/history/DOMUtils.d.ts","../../node_modules/@types/history/createBrowserHistory.d.ts","../../node_modules/@types/history/createHashHistory.d.ts","../../node_modules/@types/history/createMemoryHistory.d.ts","../../node_modules/@types/history/LocationUtils.d.ts","../../node_modules/@types/history/PathUtils.d.ts","../../node_modules/@types/history/index.d.ts","../../node_modules/@types/http-cache-semantics/index.d.ts","../../node_modules/@types/is-ci/node_modules/ci-info/index.d.ts","../../node_modules/@types/is-ci/index.d.ts","../../node_modules/@types/is-empty/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/pretty-format/node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/pretty-format/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../node_modules/@types/parse5/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/jsdom/base.d.ts","../../node_modules/@types/jsdom/ts4.0/index.d.ts","../../node_modules/@types/jsdom/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@types/mdx/types.d.ts","../../node_modules/@types/mdx/index.d.ts","../../node_modules/@types/mime-types/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/nlcst/index.d.ts","../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/pretty-hrtime/index.d.ts","../../node_modules/@types/react-router/index.d.ts","../../node_modules/@types/react-router-dom/index.d.ts","../../node_modules/@types/react-test-renderer/index.d.ts","../../node_modules/@types/react-window/index.d.ts","../../node_modules/@types/resolve/index.d.ts","../../node_modules/@types/scheduler/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/supports-color/index.d.ts","../../node_modules/@types/testing-library__jest-dom/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"2dfbb27de6bf0db1018122b054d26cf1fc47bc1979d096aec101b08a42c63b13","77f91ce020789dd4eab88a566ce9e92ce0b64cdd3a6c3497b5866fa7873ada8b","3f5be0e5963e749265c6b99f392b38d342a52a6f94d5987e65c351dda76b4b31","0c03a180ada1c70ea75da5a37ce7d3c2c7a6e451426da82eaee74516d703eda7",{"version":"42ca6e537389fa68d367b832e077a43b8e22416578cfcb14f2a55995fc65b35a","signature":"855c286e081fa2f7ed3a0d93c80cdd135321075ef0ab9fc6c41793912dc5fef9"},{"version":"2006faa1a2d75973764d9463fcaa68183407bb05e2c071e6592033de24539cb7","signature":"b7025989f61de54222f2fd76c03e0bb9d774a0411a60d4707800f1dce96aded2"},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"5b1d4ebd62d975c7d3826202f8fac290bac0bae6e04d9e84d1707d7047e108df","a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"51da54ddc920585f6f7ad98b6ba9916dfbb42ce4b8a872fd4f9a4cc93491f404","affectsGlobalScope":true},{"version":"3b746287be5fa4142213eb1ecb53b563ee9e33cc2f505456135af01085ab2070","signature":"676eb4a201e8c494fd7f897a184cab9efcf0cd95550964bd2b16ea2213dfb114"},{"version":"6ad4a61455e4d294c2300afe2b5930d99a9efd48871116b9f3d9d88b6fd60ad5","signature":"cdbddac78e00c0c785812b9581ba10458443b8191c9e82174304d535bab41d8b"},{"version":"a90a8e882e7d50be725a53626f8c028da1d2ad2bef32b933351b441692f566a6","signature":"59348a530917e18da4c2cc040434d10ffa88ec005f3033085c913748adfa0514"},{"version":"805f139170db8553dac4e2838674400983596eb05bd4b35d491ed2f51f8d5734","signature":"bf8a5f6252b06285001cce2ea2df21f9d488857aed025f2945d7afa32e77b10e"},{"version":"f7d50a17bb8832b8f5a694cc743a9c86bf9b8225b06cad00445ae22af52c9c4b","signature":"d1bcbdbfe9206623476790b64c667a8f1fb15be1c83e86a0c03cb9140f27a9e5"},{"version":"c5a9b299d95d67273c4512b30fdefb5ffdd3b05b88686c6f02eede450152f96b","signature":"18aecee7be2850fb31f2b85d4b19cefbff7bb15142aa523eb3a881511f80cc6e"},{"version":"f0ae236f935e8f90f655e886eb9a48bef027faab5a6fb109c15b4e3b5b89855b","signature":"7b89b83397fdb4b2d4ad87c395910278348592b8f2d1e4a2324e7e0d999567c3"},"5024433f8da3a7968f6d12cffd32f2cefae4442a9ad1c965fa2d23342338b700","f70bc756d933cc38dc603331a4b5c8dee89e1e1fb956cfb7a6e04ebb4c008091","8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","d16f1c460b1ca9158e030fdf3641e1de11135e0c7169d3e8cf17cc4cc35d5e64","fbc350d1cb7543cb75fdd5f3895ab9ac0322268e1bd6a43417565786044424f3","e3c5ad476eb2fca8505aee5bdfdf9bf11760df5d0f9545db23f12a5c4d72a718","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","d0570ce419fb38287e7b39c910b468becb5b2278cf33b1000a3d3e82a46ecae2","3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","cb3aaf306b5ff2ec718359e2e2244263c0b364c35759b1467c16caa113ccb849","45785e608b3d380c79e21957a6d1467e1206ac0281644e43e8ed6498808ace72","a3ce619711ff1bcdaaf4b5187d1e3f84e76064909a7c7ecb2e2f404f145b7b5c","2a90177ebaef25de89351de964c2c601ab54d6e3a157cba60d9cd3eaf5a5ee1a","82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","b4966c503c08bbd9e834037a8ab60e5f53c5fd1092e8873c4a1c344806acdab2","b567296d1820a1e50b6522c99a4f272c70eb2cba690da6e64a25635b70b1383f","b72fe4260471b06163a05df5228c09b76472b09ea315b7a2df52343181fe906f","852babd1fbe53723547566ba74312e48f9ecd05241a9266292e7058c34016ce8","95f67633f753545b50294e21b65e412641ce57210c140b08cb96d0e5661bdb26","2dc223bbca44faa55c75c3c958763d9b13512750b30e9fc8a0190805f3d78008","83ee14d245163ae3621b9ae50198f506f14678f849a3f6b6df90d8bfd69becbf","98a33a1b8331f1494f435ae8e26a03dda26e817100e4e0840a33501a76be8f29","6da96cdc0d85dd0ea129932889d7fa0b24dc69d313ae85d7ccbf1b26f7b6a027","5683452b6b350b64c0cd31fd384ac04b8a277de34abf625dbfde158e58bf543d","35f9da518991b2db4e4f4740bcb0a0b1574fe34ba4c8f42eb9e20d34ff5ff156","6055f104386c7d62778355c2c8f3fd9a37c29c340cc3c4cbf0da23b1a2bce43d","1ec2168acad8107b990e9c19099c198f36da657f2f60662101a2234bc8afc18c","b774135aab37d47093fb4acf73c33ccf95374542b61d632656fea625d5a772f9","15b4dcbf307452ab56bf665fc4fadeea11a8201ed23098cfb9bce145fccb7139","ee0fccc1e97251e3f3aa7d4a0682b2a28bd0bbf6fae3e169368eb01d74c4e4ec","e7391aed3af92e257fc4ea6784f84aa931026a92cf36472c1e89f4279858552c","e1dd36f39936640f3f672d04af39dc00400636f5b277dbeffaa02fb9134d0581","1aae22c3bc4feb134f3abbc3e864be4049132507b1e64752a0e9137b131ceea0","ff1881c58824d49ca3442d9561c3aef2767fdb1c2b9f4b251063f4c2d5e03fc4","055e664e1288198c705162c24c89591e8f88c91a89821c5c528256b025779b26","398155e58de7e65e21c70d5d71c1fddb922681cd50477e6b62b0be5fa9bcf847","ff06ba1844b1bfdb69f04f6303109c3c17b16633e0594f2414306abb64271630","9b9f299c3ce9ca16d6137ffd251221ca483b55ac1b1d211fc0dcc3a07bb91d21",{"version":"4daced8f97fb78585fcd944f84f09a48183de81d34b732cffbb59a56b05003f8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b099d8d62ff020ecdb2ca181a96818b1a23e8de85ccbab6a81df9ff24ebcd615","61337090bd8136b17c5e5657051ea3226ea3ad28a73152be5b905f6c1f44bc0e","85e9ae257ffaf39f82090b436013b4398157f6a3f205e2e995c6977fa69356d8","15f22e0d2b12a74931641f1eea436a198bec2a710aa6a5a8402b1b01a698eb0c",{"version":"48ab8e3d260aa3dc849b8bdc2405e77ce040eadf4f5347bb70ec6dc97ddd4b35","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2905b012df0c6afa41ce3c08567d2390272c54d615b8583c85c955fc42e835a5","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"52fbab941e4ebdcc1d35abd26b84d0d43a4655127c04a1a9b2867633fca255ad","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f1c2762aa9c93cad6206d7a46a25ae656faab083ecb526b017d84a492fc6923d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2b993c0a15de41647a0d2c976fdb9916b4aa3f665ee138c5b283cd26e818e1a5","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"676b8fabad5b09ecf15564ce90e183b1204d75dbe6647addb19ecdff29d52f1a",{"version":"9be348abf5d43091876a86f9acf23927a240915f8fc6d51155dbe5bdb69ef229","affectsGlobalScope":true},{"version":"0edf50909110994834718a7582b9ceedf20b14aa9fde0351eb2ac2cf5f430feb","affectsGlobalScope":true},"946bd1737d9412395a8f24414c70f18660b84a75a12b0b448e6eb1a2161d06dd","3777eb752cef9aa8dd35bb997145413310008aa54ec44766de81a7ad891526cd","a20fc1fcd9cd7c2b79d5f00d14802c1d58c3848e09ee4f84b350591af88b7636","19fb2161edf60fbe73ee3650c1cee889df0525ed852eff2d5fa6e5480c132ae3","b4f76b34637d79cefad486127115fed843762c69512d7101b7096e1293699679","3e0a34f7207431d967dc32d593d1cda0c23975e9484bc8895b39d96ffca4a0d8","44d81327b8fbb2d7ca0701f5b7bb73e48036eb99a87356acf95f19ed96e907aa","b6ddf3a46ccfa4441d8be84d2e9bf3087573c48804196faedbd4a25b60631beb","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"ca72190df0eb9b09d4b600821c8c7b6c9747b75a1c700c4d57dc0bb72abc074c","affectsGlobalScope":true},"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f",{"version":"17a1140b90821c2c8d7064c9fc7598797c385714e6aa88b85e30b1159af8dc9b","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","dab86d9604fe40854ef3c0a6f9e8948873dc3509213418e5e457f410fd11200f","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","5eec82ac21f84d83586c59a16b9b8502d34505d1393393556682fe7e7fde9ef2","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"2c45b35f4850881ab132f80d3cb51e8a359a4d8fafdc5ff2401d260dc27862f4","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","fd93cee2621ff42dabe57b7be402783fd1aa69ece755bcba1e0290547ae60513","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","09326ae5f7e3d49be5cd9ea00eb814770e71870a438faa2efd8bdd9b4db21320",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"ed2a670a77a1b80653c5bde2d813b0ab2e92872cc9b2b611ce11050b95139be6","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","0bcda522a4bb74c79e11a2c932db88eaca087a6fb11eb3fda4aaa4d655b1783e","5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","4b4c4c74c41b52cada66c85638633d2b0fe7c43445daf877cfddb310d3f5e998","febcc45f9517827496659c229a21b058831eef4cf9b71b77fd9a364ae12c3b9e","de8877483ce1e67bced3ad1f4ac877fd5066f8465ab6a9e8b716662d727553e5",{"version":"3f547f989aa9c12dc888ae25c4afc076eb442f681ba17f50924642fe29c01da0","affectsGlobalScope":true},"9dffc5c0859e5aeba5e40b079d2f5e8047bdff91d0b3477d77b6fb66ee76c99d","f54243828d27a24d59ebf25740dfe6e7dff3931723f8ce7b658cdbe766f89da9","84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","19f1159e1fa24300e2eaf72cb53f0815f5879ec53cad3c606802f0c55f0917e9","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","ac295e0d29ca135d7dca2069a6e57943ed18800754dbe8fcb3974fb9ce497c3c",{"version":"271cde49dfd9b398ccc91bb3aaa43854cf76f4d14e10fed91cbac649aa6cbc63","affectsGlobalScope":true},"2bcecd31f1b4281710c666843fc55133a0ee25b143e59f35f49c62e168123f4b","a6273756fa05f794b64fe1aff45f4371d444f51ed0257f9364a8b25f3501915d","9c4e644fe9bf08d93c93bd892705842189fe345163f8896849d5964d21b56b78","25d91fb9ed77a828cc6c7a863236fb712dafcd52f816eec481bd0c1f589f4404","4cd14cea22eed1bfb0dc76183e56989f897ac5b14c0e2a819e5162eafdcfe243","8d32432f68ca4ce93ad717823976f2db2add94c70c19602bf87ee67fe51df48b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","6a61697f65beb341884485c695894ee1876a45c1a7190d76cb4a57a679c9d5b8","a3e5b8b86e7bd38d9afdc294875c4445c535319e288d3a13c1e2e41f9af934f2","d45d40831ccbd547e3f4ae8f326420b9e454dd27fa970f417c8e94a23e93db29","9e951ec338c4232d611552a1be7b4ecec79a8c2307a893ce39701316fe2374bd","70c61ff569aabdf2b36220da6c06caaa27e45cd7acac81a1966ab4ee2eadc4f2","905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab","6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","db25694be959314fd1e868d72e567746db1db9e2001fae545d12d2a8c1bba1b8","43883cf3635bb1846cbdc6c363787b76227677388c74f7313e3f0edb380840fa","2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","2cec1a31729b9b01e9294c33fc9425d336eff067282809761ad2e74425d6d2a5",{"version":"5bc4bb5796ce660d9869477983aac87734e19fecd1ad60fb0b13ffe1f1a450ed","affectsGlobalScope":true},"fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","fd20dfa2434a61a87e3fa9450f9de2ed2c365ea43b17b34ac6616d90d9681381","389303117a81e90897689e7adb4b53a062e68a6fe4067088fae9552907aa28c3",{"version":"d4c4fe14b23180acf25e4a68dc3bb9e5c38233dd3de12a4ab9569e636090ac9b","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"2a2e2c6463bcf3c59f31bc9ab4b6ef963bbf7dffb049cd017e2c1834e3adca63","bb5c385d6290f1ad2da7576e186810f23dce6d6bc7fb38ad565a4eb8cfed3541","6571f33cd3c23ee70fb48839c9a7486381cd3f439e17d97d10fc908e41468052","c757372a092924f5c16eaf11a1475b80b95bb4dae49fe3242d2ad908f97d5abe","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","1b23c2aae14c17f361f6fcef69be7a298f47c27724c9a1f891ea52eeea0a9f7f","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","626bccaba2f61f03abe558a39501631565389a748bc47dd52b305c80176333c1","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","9d9e658d1d5b805562749ce383ef8c67ccb796394d8734d9c138788d7dab6ee3","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","1d4bc73751d6ec6285331d1ca378904f55d9e5e8aeaa69bc45b675c3df83e778","8017277c3843df85296d8730f9edf097d68d7d5f9bc9d8124fcacf17ecfd487e","408cc7117448f4994a1f50468648a2d06eff4112a7707dbef6ceea76d2684707","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","105fa3d1b286795f9ac1b82f5a737db303dfe65ebc9830c1938a2bbe538a861f",{"version":"40bbeaccf39d6ad00da30e96553f0c4aa1b8a87535393c7fdf939170b639c95d","affectsGlobalScope":true},"e65fca93c26b09681d33dad7b3af32ae42bf0d114d859671ffed30a92691439c","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1"],"options":{"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":1,"module":99,"outDir":"./dist","rootDir":"./src","skipDefaultLibCheck":true,"skipLibCheck":false,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":3},"fileIdsList":[[119,171,234,235,236],[171,234,235,236],[70,171,234,235,236],[68,171,234,235,236],[65,66,67,68,69,72,73,74,75,76,77,78,79,171,234,235,236],[64,171,234,235,236],[71,171,234,235,236],[65,66,67,171,234,235,236],[65,66,171,234,235,236],[68,69,71,171,234,235,236],[66,171,234,235,236],[107,171,234,235,236],[105,106,171,234,235,236],[56,105,171,234,235,236],[80,81,82,171,234,235,236],[117,171,234,235,236],[119,120,121,122,123,171,234,235,236],[119,121,171,234,235,236],[144,171,178,179,234,235,236],[159,171,178,234,235,236],[144,171,178,234,235,236],[130,171,178,234,235,236],[171,184,234,235,236],[141,144,171,178,193,194,195,234,235,236],[171,180,195,196,200,234,235,236],[141,142,171,178,203,234,235,236],[142,171,178,234,235,236],[171,206,234,235,236],[171,214,234,235,236],[171,208,214,234,235,236],[171,209,210,211,212,213,234,235,236],[171,216,234,235,236],[171,219,234,235,236],[171,220,234,235,236],[171,226,229,234,235,236],[141,171,173,178,232,233,235,236],[171,234,235],[171,234,236],[171,234,235,236,239,241,242,243,244,245,246,247,248,249,250,251],[171,234,235,236,239,240,242,243,244,245,246,247,248,249,250,251],[171,234,235,236,240,241,242,243,244,245,246,247,248,249,250,251],[171,234,235,236,239,240,241,243,244,245,246,247,248,249,250,251],[171,234,235,236,239,240,241,242,244,245,246,247,248,249,250,251],[171,234,235,236,239,240,241,242,243,245,246,247,248,249,250,251],[171,234,235,236,239,240,241,242,243,244,246,247,248,249,250,251],[171,234,235,236,239,240,241,242,243,244,245,247,248,249,250,251],[171,234,235,236,239,240,241,242,243,244,245,246,248,249,250,251],[171,234,235,236,239,240,241,242,243,244,245,246,247,249,250,251],[171,234,235,236,239,240,241,242,243,244,245,246,247,248,250,251],[171,234,235,236,239,240,241,242,243,244,245,246,247,248,249,251],[171,234,235,236,239,240,241,242,243,244,245,246,247,248,249,250],[171,234,235,236,253,254],[171,198,234,235,236],[171,197,234,235,236],[144,170,171,178,234,235,236,258,259],[144,159,171,178,234,235,236],[125,171,234,235,236],[128,171,234,235,236],[129,134,162,171,234,235,236],[130,141,142,149,159,170,171,234,235,236],[130,131,141,149,171,234,235,236],[132,171,234,235,236],[133,134,142,150,171,234,235,236],[134,159,167,171,234,235,236],[135,137,141,149,171,234,235,236],[136,171,234,235,236],[137,138,171,234,235,236],[141,171,234,235,236],[139,141,171,234,235,236],[141,142,143,159,170,171,234,235,236],[141,142,143,156,159,162,171,234,235,236],[171,175,234,235,236],[137,144,149,159,170,171,234,235,236],[141,142,144,145,149,159,167,170,171,234,235,236],[144,146,159,167,170,171,234,235,236],[125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,234,235,236],[141,147,171,234,235,236],[148,170,171,234,235,236],[137,141,149,159,171,234,235,236],[150,171,234,235,236],[151,171,234,235,236],[128,152,171,234,235,236],[153,169,171,175,234,235,236],[154,171,234,235,236],[155,171,234,235,236],[141,156,157,171,234,235,236],[156,158,171,173,234,235,236],[129,141,159,160,161,162,171,234,235,236],[129,159,161,171,234,235,236],[159,160,171,234,235,236],[162,171,234,235,236],[163,171,234,235,236],[141,165,166,171,234,235,236],[165,166,171,234,235,236],[134,149,159,167,171,234,235,236],[168,171,234,235,236],[149,169,171,234,235,236],[129,144,155,170,171,234,235,236],[134,171,234,235,236],[159,171,172,234,235,236],[171,173,234,235,236],[171,174,234,235,236],[129,134,141,143,152,159,170,171,173,175,234,235,236],[159,171,176,234,235,236],[171,231,234,235,236],[171,232,234,235,236],[56,171,234,235,236],[56,82,171,234,235,236],[56,171,214,234,235,236,264],[56,171,214,234,235,236],[52,53,54,55,171,234,235,236],[171,234,235,236,270,309],[171,234,235,236,270,294,309],[171,234,235,236,309],[171,234,235,236,270],[171,234,235,236,270,295,309],[171,234,235,236,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308],[171,234,235,236,295,309],[142,159,171,178,192,234,235,236],[144,171,178,198,199,234,235,236],[171,230,234,235,236],[171,234,235,236,313],[171,222,228,234,235,236],[171,226,234,235,236],[171,223,227,234,235,236],[171,225,234,235,236],[171,224,234,235,236],[48,171,234,235,236],[56,86,171,234,235,236],[56,84,86,171,234,235,236],[56,89,171,234,235,236],[89,171,234,235,236],[86,171,234,235,236],[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,171,234,235,236],[56,84,85,114,171,234,235,236],[56,57,60,61,83,103,171,234,235,236],[56,59,60,114,171,234,235,236],[56,59,63,108,171,234,235,236],[60,62,108,114,171,234,235,236],[56,58,171,234,235,236],[56,60,114,171,234,235,236],[50,51,57,58,59,60,61,62,171,234,235,236],[47,49,171,234,235,236],[114,171,234,235,236],[56,57,83,171,234,235,236],[50,51,171,234,235,236],[56,58,83,171,234,235,236],[56,60,114],[56],[60,114],[50,51,57,58,59,60,61,62],[114]],"referencedMap":[[121,1],[119,2],[222,2],[71,3],[70,2],[78,2],[75,2],[74,2],[69,4],[80,5],[65,6],[76,7],[68,8],[67,9],[77,2],[72,10],[79,2],[73,11],[66,2],[108,12],[107,13],[105,2],[106,14],[83,15],[118,16],[64,2],[124,17],[120,1],[122,18],[123,1],[180,19],[181,2],[182,20],[179,21],[183,22],[185,23],[186,2],[187,2],[188,2],[189,2],[190,2],[191,16],[117,2],[196,24],[201,25],[202,2],[204,26],[205,27],[207,28],[208,2],[212,29],[213,29],[209,30],[210,30],[211,30],[214,31],[215,2],[199,2],[217,32],[216,2],[218,2],[219,2],[220,33],[221,34],[230,35],[234,36],[236,37],[235,38],[237,2],[238,2],[240,39],[241,40],[239,41],[242,42],[243,43],[244,44],[245,45],[246,46],[247,47],[248,48],[249,49],[250,50],[251,51],[252,28],[254,52],[253,2],[255,2],[197,53],[198,54],[203,2],[256,2],[184,2],[257,28],[259,2],[260,55],[258,56],[125,57],[126,57],[128,58],[129,59],[130,60],[131,61],[132,62],[133,63],[134,64],[135,65],[136,66],[137,67],[138,67],[140,68],[139,69],[141,68],[142,70],[143,71],[127,72],[177,2],[144,73],[145,74],[146,75],[178,76],[147,77],[148,78],[149,79],[150,80],[151,81],[152,82],[153,83],[154,84],[155,85],[156,86],[157,86],[158,87],[159,88],[161,89],[160,90],[162,91],[163,92],[164,2],[165,93],[166,94],[167,95],[168,96],[169,97],[170,98],[171,99],[172,100],[173,101],[174,102],[175,103],[176,104],[261,2],[232,105],[231,106],[262,2],[263,2],[54,2],[195,2],[194,2],[81,107],[82,108],[265,109],[264,110],[266,107],[267,107],[52,2],[56,111],[268,2],[269,2],[55,2],[294,112],[295,113],[270,114],[273,114],[292,112],[293,112],[283,112],[282,115],[280,112],[275,112],[288,112],[286,112],[290,112],[274,112],[287,112],[291,112],[276,112],[277,112],[289,112],[271,112],[278,112],[279,112],[281,112],[285,112],[296,116],[284,112],[272,112],[309,117],[308,2],[303,116],[305,118],[304,116],[297,116],[298,116],[300,116],[302,116],[306,118],[307,118],[299,118],[301,118],[193,119],[192,2],[200,120],[310,2],[311,2],[312,121],[233,2],[206,2],[313,2],[314,122],[223,2],[53,2],[229,123],[227,124],[228,125],[226,126],[225,127],[224,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[49,128],[48,2],[91,129],[89,107],[102,107],[87,130],[92,129],[88,129],[90,131],[96,2],[97,2],[98,2],[99,2],[100,2],[101,132],[95,133],[103,134],[93,129],[84,2],[94,2],[86,135],[85,107],[47,2],[104,136],[61,137],[109,138],[110,139],[59,140],[62,141],[63,142],[50,143],[60,144],[111,145],[112,146],[113,147],[57,107],[51,2],[58,107],[114,107],[115,2],[116,2]],"exportedModulesMap":[[121,1],[119,2],[222,2],[71,3],[70,2],[78,2],[75,2],[74,2],[69,4],[80,5],[65,6],[76,7],[68,8],[67,9],[77,2],[72,10],[79,2],[73,11],[66,2],[108,12],[107,13],[105,2],[106,14],[83,15],[118,16],[64,2],[124,17],[120,1],[122,18],[123,1],[180,19],[181,2],[182,20],[179,21],[183,22],[185,23],[186,2],[187,2],[188,2],[189,2],[190,2],[191,16],[117,2],[196,24],[201,25],[202,2],[204,26],[205,27],[207,28],[208,2],[212,29],[213,29],[209,30],[210,30],[211,30],[214,31],[215,2],[199,2],[217,32],[216,2],[218,2],[219,2],[220,33],[221,34],[230,35],[234,36],[236,37],[235,38],[237,2],[238,2],[240,39],[241,40],[239,41],[242,42],[243,43],[244,44],[245,45],[246,46],[247,47],[248,48],[249,49],[250,50],[251,51],[252,28],[254,52],[253,2],[255,2],[197,53],[198,54],[203,2],[256,2],[184,2],[257,28],[259,2],[260,55],[258,56],[125,57],[126,57],[128,58],[129,59],[130,60],[131,61],[132,62],[133,63],[134,64],[135,65],[136,66],[137,67],[138,67],[140,68],[139,69],[141,68],[142,70],[143,71],[127,72],[177,2],[144,73],[145,74],[146,75],[178,76],[147,77],[148,78],[149,79],[150,80],[151,81],[152,82],[153,83],[154,84],[155,85],[156,86],[157,86],[158,87],[159,88],[161,89],[160,90],[162,91],[163,92],[164,2],[165,93],[166,94],[167,95],[168,96],[169,97],[170,98],[171,99],[172,100],[173,101],[174,102],[175,103],[176,104],[261,2],[232,105],[231,106],[262,2],[263,2],[54,2],[195,2],[194,2],[81,107],[82,108],[265,109],[264,110],[266,107],[267,107],[52,2],[56,111],[268,2],[269,2],[55,2],[294,112],[295,113],[270,114],[273,114],[292,112],[293,112],[283,112],[282,115],[280,112],[275,112],[288,112],[286,112],[290,112],[274,112],[287,112],[291,112],[276,112],[277,112],[289,112],[271,112],[278,112],[279,112],[281,112],[285,112],[296,116],[284,112],[272,112],[309,117],[308,2],[303,116],[305,118],[304,116],[297,116],[298,116],[300,116],[302,116],[306,118],[307,118],[299,118],[301,118],[193,119],[192,2],[200,120],[310,2],[311,2],[312,121],[233,2],[206,2],[313,2],[314,122],[223,2],[53,2],[229,123],[227,124],[228,125],[226,126],[225,127],[224,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[46,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[45,2],[11,2],[10,2],[49,128],[48,2],[91,129],[89,107],[102,107],[87,130],[92,129],[88,129],[90,131],[96,2],[97,2],[98,2],[99,2],[100,2],[101,132],[95,133],[103,134],[93,129],[84,2],[94,2],[86,135],[85,107],[47,2],[61,148],[59,149],[62,150],[63,151],[60,152],[57,149],[58,149],[114,107],[115,2],[116,2]],"semanticDiagnosticsPerFile":[121,119,222,71,70,78,75,74,69,80,65,76,68,67,77,72,79,73,66,108,107,105,106,83,118,64,124,120,122,123,180,181,182,179,183,185,186,187,188,189,190,191,117,196,201,202,204,205,207,208,212,213,209,210,211,214,215,199,217,216,218,219,220,221,230,234,236,235,237,238,240,241,239,242,243,244,245,246,247,248,249,250,251,252,254,253,255,197,198,203,256,184,257,259,260,258,125,126,128,129,130,131,132,133,134,135,136,137,138,140,139,141,142,143,127,177,144,145,146,178,147,148,149,150,151,152,153,154,155,156,157,158,159,161,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,261,232,231,262,263,54,195,194,81,82,265,264,266,267,52,56,268,269,55,294,295,270,273,292,293,283,282,280,275,288,286,290,274,287,291,276,277,289,271,278,279,281,285,296,284,272,309,308,303,305,304,297,298,300,302,306,307,299,301,193,192,200,310,311,312,233,206,313,314,223,53,229,227,228,226,225,224,8,9,13,12,2,14,15,16,17,18,19,20,21,3,46,4,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,1,45,11,10,49,48,91,89,102,87,92,88,90,96,97,98,99,100,101,95,103,93,84,94,86,85,47,104,61,109,110,59,62,63,50,60,111,112,113,57,51,58,114,115,116],"latestChangedDtsFile":"./dist/utils/__tests__/theme-switcher-context.test.d.ts"},"version":"4.9.5"}