@tamagui/web 1.88.13 → 1.89.0-1706308641099

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.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/createComponent.js +1 -1
  3. package/dist/cjs/createComponent.js.map +1 -1
  4. package/dist/cjs/helpers/getSplitStyles.js +1 -1
  5. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  6. package/dist/cjs/helpers/getSplitStyles.native.js +1 -1
  7. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  8. package/dist/esm/Tamagui.mjs +43 -0
  9. package/dist/esm/config.mjs +51 -0
  10. package/dist/esm/constants/accessibilityDirectMap.mjs +50 -0
  11. package/dist/esm/constants/constants.mjs +16 -0
  12. package/dist/esm/constants/isDevTools.mjs +7 -0
  13. package/dist/esm/contexts/ComponentContext.mjs +13 -0
  14. package/dist/esm/createComponent.js +1 -1
  15. package/dist/esm/createComponent.js.map +1 -1
  16. package/dist/esm/createComponent.mjs +771 -0
  17. package/dist/esm/createFont.mjs +18 -0
  18. package/dist/esm/createShorthands.mjs +4 -0
  19. package/dist/esm/createTamagui.mjs +206 -0
  20. package/dist/esm/createTheme.mjs +2 -0
  21. package/dist/esm/createTokens.mjs +5 -0
  22. package/dist/esm/createVariable.mjs +48 -0
  23. package/dist/esm/createVariables.mjs +35 -0
  24. package/dist/esm/defaultComponentState.mjs +16 -0
  25. package/dist/esm/helpers/ThemeManager.mjs +156 -0
  26. package/dist/esm/helpers/ThemeManagerContext.mjs +3 -0
  27. package/dist/esm/helpers/createMediaStyle.mjs +71 -0
  28. package/dist/esm/helpers/createShallowSetState.mjs +17 -0
  29. package/dist/esm/helpers/createStyledContext.mjs +35 -0
  30. package/dist/esm/helpers/defaultOffset.mjs +5 -0
  31. package/dist/esm/helpers/expandStyle.mjs +38 -0
  32. package/dist/esm/helpers/expandStyles.mjs +15 -0
  33. package/dist/esm/helpers/getExpandedShorthands.mjs +9 -0
  34. package/dist/esm/helpers/getFontLanguage.mjs +2 -0
  35. package/dist/esm/helpers/getGroupPropParts.mjs +13 -0
  36. package/dist/esm/helpers/getSplitStyles.js +1 -1
  37. package/dist/esm/helpers/getSplitStyles.js.map +1 -1
  38. package/dist/esm/helpers/getSplitStyles.mjs +643 -0
  39. package/dist/esm/helpers/getSplitStyles.native.js +1 -1
  40. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  41. package/dist/esm/helpers/getStylesAtomic.mjs +150 -0
  42. package/dist/esm/helpers/getThemeCSSRules.mjs +87 -0
  43. package/dist/esm/helpers/getVariantExtras.mjs +43 -0
  44. package/dist/esm/helpers/insertStyleRule.mjs +177 -0
  45. package/dist/esm/helpers/isObj.mjs +2 -0
  46. package/dist/esm/helpers/isTamaguiComponent.mjs +5 -0
  47. package/dist/esm/helpers/isTamaguiElement.mjs +4 -0
  48. package/dist/esm/helpers/log.mjs +4 -0
  49. package/dist/esm/helpers/matchMedia.mjs +11 -0
  50. package/dist/esm/helpers/mergeProps.mjs +21 -0
  51. package/dist/esm/helpers/mergeVariants.mjs +16 -0
  52. package/dist/esm/helpers/normalizeColor.mjs +17 -0
  53. package/dist/esm/helpers/normalizeShadow.mjs +23 -0
  54. package/dist/esm/helpers/normalizeStyle.mjs +23 -0
  55. package/dist/esm/helpers/normalizeStylePropKeys.mjs +2 -0
  56. package/dist/esm/helpers/normalizeValueWithProperty.mjs +32 -0
  57. package/dist/esm/helpers/objectIdentityKey.mjs +15 -0
  58. package/dist/esm/helpers/propMapper.mjs +239 -0
  59. package/dist/esm/helpers/proxyThemeToParents.mjs +36 -0
  60. package/dist/esm/helpers/proxyThemeVariables.mjs +12 -0
  61. package/dist/esm/helpers/pseudoDescriptors.mjs +34 -0
  62. package/dist/esm/helpers/registerCSSVariable.mjs +7 -0
  63. package/dist/esm/helpers/themeable.mjs +33 -0
  64. package/dist/esm/helpers/themes.mjs +14 -0
  65. package/dist/esm/helpers/timer.mjs +8 -0
  66. package/dist/esm/hooks/useConfiguration.mjs +20 -0
  67. package/dist/esm/hooks/useDisableSSR.mjs +5 -0
  68. package/dist/esm/hooks/useIsTouchDevice.mjs +4 -0
  69. package/dist/esm/hooks/useMedia.mjs +146 -0
  70. package/dist/esm/hooks/useProps.mjs +40 -0
  71. package/dist/esm/hooks/useTheme.mjs +222 -0
  72. package/dist/esm/hooks/useThemeName.mjs +15 -0
  73. package/dist/esm/index.mjs +61 -0
  74. package/dist/esm/inject-styles.mjs +13 -0
  75. package/dist/esm/insertFont.mjs +44 -0
  76. package/dist/esm/interfaces/CSSColorNames.mjs +0 -0
  77. package/dist/esm/interfaces/GetRef.mjs +0 -0
  78. package/dist/esm/interfaces/KeyTypes.mjs +0 -0
  79. package/dist/esm/interfaces/RNExclusiveTypes.mjs +0 -0
  80. package/dist/esm/interfaces/Role.mjs +0 -0
  81. package/dist/esm/interfaces/TamaguiComponentEvents.mjs +0 -0
  82. package/dist/esm/interfaces/TamaguiComponentPropsBaseBase.mjs +0 -0
  83. package/dist/esm/interfaces/TamaguiComponentState.mjs +0 -0
  84. package/dist/esm/interfaces/WebOnlyPressEvents.mjs +0 -0
  85. package/dist/esm/internalWithTheme.mjs +14 -0
  86. package/dist/esm/setupHooks.mjs +5 -0
  87. package/dist/esm/setupReactNative.mjs +24 -0
  88. package/dist/esm/styled.mjs +56 -0
  89. package/dist/esm/type-utils.mjs +0 -0
  90. package/dist/esm/types.mjs +2 -0
  91. package/dist/esm/views/Configuration.mjs +12 -0
  92. package/dist/esm/views/FontLanguage.mjs +13 -0
  93. package/dist/esm/views/FontLanguage.types.mjs +0 -0
  94. package/dist/esm/views/Slot.mjs +53 -0
  95. package/dist/esm/views/Stack.mjs +10 -0
  96. package/dist/esm/views/TamaguiProvider.mjs +32 -0
  97. package/dist/esm/views/Text.mjs +64 -0
  98. package/dist/esm/views/Theme.mjs +104 -0
  99. package/dist/esm/views/ThemeDebug.mjs +57 -0
  100. package/dist/esm/views/ThemeProvider.mjs +20 -0
  101. package/dist/esm/views/View.mjs +9 -0
  102. package/package.json +10 -10
  103. package/src/createComponent.tsx +1 -1
  104. package/src/helpers/getSplitStyles.tsx +5 -0
  105. package/types/helpers/getSplitStyles.d.ts.map +1 -1
@@ -0,0 +1,64 @@
1
+ import { stylePropsTextOnly, validStyles } from "@tamagui/helpers";
2
+ import { createComponent } from "../createComponent.mjs";
3
+ const ellipseStyle = {
4
+ maxWidth: "100%",
5
+ overflow: "hidden",
6
+ textOverflow: "ellipsis",
7
+ whiteSpace: "nowrap"
8
+ },
9
+ defaultWebStyle = {
10
+ display: "inline",
11
+ boxSizing: "border-box",
12
+ wordWrap: "break-word",
13
+ margin: 0
14
+ },
15
+ ellipsisStyle = ellipseStyle,
16
+ Text = createComponent({
17
+ acceptsClassName: !0,
18
+ isText: !0,
19
+ defaultProps: {
20
+ fontFamily: "unset",
21
+ ...defaultWebStyle
22
+ },
23
+ inlineWhenUnflattened: /* @__PURE__ */new Set(["fontFamily"]),
24
+ variants: {
25
+ numberOfLines: {
26
+ 1: ellipseStyle,
27
+ ":number": numberOfLines => numberOfLines >= 1 ? {
28
+ WebkitLineClamp: numberOfLines,
29
+ WebkitBoxOrient: "vertical",
30
+ display: "-webkit-box",
31
+ overflow: "hidden"
32
+ } : null
33
+ },
34
+ // ??
35
+ ellipsizeMode: {
36
+ "...": () => null
37
+ },
38
+ selectable: {
39
+ true: {
40
+ userSelect: "text",
41
+ cursor: "text"
42
+ },
43
+ false: {
44
+ userSelect: "none",
45
+ cursor: "default"
46
+ }
47
+ },
48
+ /**
49
+ * @deprecated Use ellipsis instead
50
+ */
51
+ ellipse: {
52
+ true: ellipsisStyle
53
+ },
54
+ ellipsis: {
55
+ true: ellipsisStyle
56
+ }
57
+ },
58
+ validStyles: {
59
+ ...validStyles,
60
+ ...stylePropsTextOnly
61
+ }
62
+ });
63
+ Text.displayName = "Text";
64
+ export { Text };
@@ -0,0 +1,104 @@
1
+ import { isWeb } from "@tamagui/constants";
2
+ import React, { Children, cloneElement, forwardRef, isValidElement, useRef } from "react";
3
+ import { variableToString } from "../createVariable.mjs";
4
+ import { ThemeManagerIDContext } from "../helpers/ThemeManagerContext.mjs";
5
+ import { useChangeThemeEffect } from "../hooks/useTheme.mjs";
6
+ import { ThemeDebug } from "./ThemeDebug.mjs";
7
+ import { jsx } from "react/jsx-runtime";
8
+ const Theme = forwardRef(function ({
9
+ children,
10
+ ...props
11
+ }, ref) {
12
+ if (props.disable) return children;
13
+ const isRoot = !!props._isRoot,
14
+ themeState = useChangeThemeEffect(props, isRoot);
15
+ let finalChildren = props["disable-child-theme"] ? Children.map(children, child => cloneElement(child, {
16
+ "data-disable-theme": !0
17
+ })) : children;
18
+ if (ref) try {
19
+ React.Children.only(finalChildren), finalChildren = cloneElement(finalChildren, {
20
+ ref
21
+ });
22
+ } catch {}
23
+ return process.env.NODE_ENV === "development" && props.debug === "visualize" && (finalChildren = /* @__PURE__ */jsx(ThemeDebug, {
24
+ themeState,
25
+ themeProps: props,
26
+ children: finalChildren
27
+ })), getThemedChildren(themeState, finalChildren, props, isRoot);
28
+ });
29
+ Theme.displayName = "Theme";
30
+ Theme.avoidForwardRef = !0;
31
+ function getThemedChildren(themeState, children, props, isRoot = !1) {
32
+ const {
33
+ themeManager,
34
+ isNewTheme
35
+ } = themeState;
36
+ if (!themeManager) throw new Error(process.env.NODE_ENV === "development" ? "\u274C No theme found, either incorrect name, potential duplicate tamagui deps, or TamaguiProvider not providing themes." : "\u274C 005");
37
+ const {
38
+ shallow,
39
+ forceClassName
40
+ } = props,
41
+ hasEverThemed = useRef(!1),
42
+ shouldRenderChildrenWithTheme = isNewTheme || props.inverse || hasEverThemed.current || forceClassName || isRoot;
43
+ if (shouldRenderChildrenWithTheme && (hasEverThemed.current = !0), !shouldRenderChildrenWithTheme) return children;
44
+ let next = children;
45
+ shallow && (next = Children.toArray(children).map(child => isValidElement(child) ? cloneElement(child, void 0, /* @__PURE__ */jsx(Theme, {
46
+ name: themeManager.state.parentName,
47
+ children: child.props.children
48
+ })) : child));
49
+ const elementsWithContext = /* @__PURE__ */jsx(ThemeManagerIDContext.Provider, {
50
+ value: themeManager.id,
51
+ children: next
52
+ });
53
+ return forceClassName === !1 ? elementsWithContext : isWeb ? wrapThemeElements({
54
+ children: elementsWithContext,
55
+ themeState,
56
+ forceClassName,
57
+ isRoot
58
+ }) : elementsWithContext;
59
+ }
60
+ function wrapThemeElements({
61
+ children,
62
+ themeState,
63
+ forceClassName,
64
+ isRoot
65
+ }) {
66
+ if (isRoot && forceClassName === !1) return children;
67
+ const inverse = themeState.inversed,
68
+ requiresExtraWrapper = inverse != null || forceClassName,
69
+ {
70
+ className,
71
+ style
72
+ } = getThemeClassNameAndStyle(themeState, isRoot);
73
+ let themedChildren = /* @__PURE__ */jsx("span", {
74
+ className: `${className} _dsp_contents is_Theme`,
75
+ style,
76
+ children
77
+ });
78
+ if (requiresExtraWrapper) {
79
+ const name = themeState.state?.name || "",
80
+ inverseClassName = name.startsWith("light") ? "t_light is_inversed" : name.startsWith("dark") ? "t_dark is_inversed" : "";
81
+ themedChildren = /* @__PURE__ */jsx("span", {
82
+ className: `${inverse ? inverseClassName : ""} _dsp_contents`,
83
+ children: themedChildren
84
+ });
85
+ }
86
+ return themedChildren;
87
+ }
88
+ const emptyObj = {};
89
+ function getThemeClassNameAndStyle(themeState, isRoot = !1) {
90
+ if (!themeState.isNewTheme) return {
91
+ className: "",
92
+ style: emptyObj
93
+ };
94
+ const themeColor = themeState.state?.theme && themeState.isNewTheme ? variableToString(themeState.state.theme.color) : "",
95
+ style = themeColor ? {
96
+ color: themeColor
97
+ } : void 0;
98
+ let className = themeState.state?.className || "";
99
+ return isRoot && (className = className.replace("t_sub_theme", "")), {
100
+ style,
101
+ className
102
+ };
103
+ }
104
+ export { Theme, getThemedChildren };
@@ -0,0 +1,57 @@
1
+ import { useDidFinishSSR } from "@tamagui/use-did-finish-ssr";
2
+ import { useForceUpdate } from "@tamagui/use-force-update";
3
+ import { useEffect, useId, useState } from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ let node;
7
+ function ThemeDebug({
8
+ themeState,
9
+ themeProps,
10
+ children
11
+ }) {
12
+ if (process.env.NODE_ENV === "development") {
13
+ const isHydrated = useDidFinishSSR(),
14
+ [onChangeCount, setOnChangeCount] = useState(0),
15
+ rerender = useForceUpdate(),
16
+ id = useId();
17
+ return process.env.NODE_ENV === "development" && typeof document < "u" && (node || (node = document.createElement("div"), node.style.height = "200px", node.style.overflowY = "scroll", node.style.position = "fixed", node.style.zIndex = 1e7, node.style.bottom = "30px", node.style.left = "30px", node.style.right = "30px", node.style.display = "flex", node.style.border = "1px solid #888", node.style.flexDirection = "row", node.style.background = "var(--background)", document.body.appendChild(node))), useEffect(() => {
18
+ themeState.themeManager?.parentManager?.onChangeTheme((name, manager) => {
19
+ setOnChangeCount(p => ++p), console.warn(`theme changed for ${themeState.themeManager?.id} from parent ${themeState.themeManager?.parentManager?.id} to new name`, name);
20
+ });
21
+ }, [themeState.themeManager]), useEffect(() => {
22
+ const tm = setInterval(rerender, 1e3);
23
+ return () => clearTimeout(tm);
24
+ }, []), themeProps["disable-child-theme"] || !isHydrated ? children : /* @__PURE__ */jsxs(Fragment, {
25
+ children: [createPortal( /* @__PURE__ */jsxs("code", {
26
+ style: {
27
+ whiteSpace: "pre",
28
+ maxWidth: 250,
29
+ overflow: "auto",
30
+ padding: 5
31
+ },
32
+ children: ["<Theme ", id, " />\xA0", JSON.stringify({
33
+ propsName: themeProps.name,
34
+ name: themeState?.state?.name,
35
+ className: themeState?.state?.className,
36
+ inverse: themeProps.inverse,
37
+ forceClassName: themeProps.forceClassName,
38
+ parent: themeState.themeManager?.state.parentName,
39
+ id: themeState.themeManager?.id,
40
+ parentId: themeState.themeManager?.parentManager?.id,
41
+ isNew: themeState.isNewTheme,
42
+ onChangeCount,
43
+ listening: [...(themeState.themeManager?._listeningIds || [])].join(","),
44
+ _numChangeEventsSent: themeState.themeManager?._numChangeEventsSent
45
+ }, null, 2)]
46
+ }), node), /* @__PURE__ */jsx("div", {
47
+ style: {
48
+ color: "red"
49
+ },
50
+ children: id
51
+ }), children]
52
+ });
53
+ }
54
+ return children;
55
+ }
56
+ ThemeDebug.displayName = "ThemeDebug";
57
+ export { ThemeDebug };
@@ -0,0 +1,20 @@
1
+ import { isClient } from "@tamagui/constants";
2
+ import { useLayoutEffect } from "react";
3
+ import { THEME_CLASSNAME_PREFIX } from "../constants/constants.mjs";
4
+ import { Theme } from "./Theme.mjs";
5
+ import { jsx } from "react/jsx-runtime";
6
+ const ThemeProvider = props => (isClient && useLayoutEffect(() => {
7
+ if (props.disableRootThemeClass) return;
8
+ const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`,
9
+ target = props.themeClassNameOnRoot ? document.documentElement : document.body;
10
+ return target.classList.add(cn), () => {
11
+ target.classList.remove(cn);
12
+ };
13
+ }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot]), /* @__PURE__ */jsx(Theme, {
14
+ className: props.className,
15
+ name: props.defaultTheme,
16
+ forceClassName: !props.disableRootThemeClass,
17
+ _isRoot: !0,
18
+ children: props.children
19
+ }));
20
+ export { ThemeProvider };
@@ -0,0 +1,9 @@
1
+ import { validStyles } from "@tamagui/helpers";
2
+ import { stackDefaultStyles } from "../constants/constants.mjs";
3
+ import { createComponent } from "../createComponent.mjs";
4
+ const View = createComponent({
5
+ acceptsClassName: !0,
6
+ defaultProps: stackDefaultStyles,
7
+ validStyles
8
+ });
9
+ export { View };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "1.88.13",
3
+ "version": "1.89.0-1706308641099",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -27,19 +27,19 @@
27
27
  "reset.css"
28
28
  ],
29
29
  "dependencies": {
30
- "@tamagui/compose-refs": "1.88.13",
31
- "@tamagui/constants": "1.88.13",
32
- "@tamagui/helpers": "1.88.13",
33
- "@tamagui/normalize-css-color": "1.88.13",
34
- "@tamagui/timer": "1.88.13",
35
- "@tamagui/use-did-finish-ssr": "1.88.13",
36
- "@tamagui/use-event": "1.88.13",
37
- "@tamagui/use-force-update": "1.88.13",
30
+ "@tamagui/compose-refs": "1.89.0-1706308641099",
31
+ "@tamagui/constants": "1.89.0-1706308641099",
32
+ "@tamagui/helpers": "1.89.0-1706308641099",
33
+ "@tamagui/normalize-css-color": "1.89.0-1706308641099",
34
+ "@tamagui/timer": "1.89.0-1706308641099",
35
+ "@tamagui/use-did-finish-ssr": "1.89.0-1706308641099",
36
+ "@tamagui/use-event": "1.89.0-1706308641099",
37
+ "@tamagui/use-force-update": "1.89.0-1706308641099",
38
38
  "react": "^18.2.0",
39
39
  "react-dom": "^18.2.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "1.88.13",
42
+ "@tamagui/build": "1.89.0-1706308641099",
43
43
  "@testing-library/react": "^14.0.0",
44
44
  "csstype": "^3.0.10",
45
45
  "typescript": "^5.3.3",
@@ -1192,7 +1192,7 @@ export function createComponent<
1192
1192
  }
1193
1193
 
1194
1194
  if (process.env.TAMAGUI_TARGET === 'web') {
1195
- if (isReactNative && !asChild && !isHOC) {
1195
+ if (isReactNative && !asChild) {
1196
1196
  content = (
1197
1197
  <span
1198
1198
  {...(!isHydrated
@@ -530,6 +530,11 @@ export const getSplitStyles: StyleSplitter = (
530
530
  const shouldPassThrough = shouldPassProp || isHOCShouldPassThrough
531
531
 
532
532
  if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
533
+ // fix native group nesting issues
534
+ console.groupEnd()
535
+ console.groupEnd()
536
+ // fix native group nesting issues
537
+
533
538
  console.groupCollapsed(
534
539
  ` 🔑 ${keyOg}${keyInit !== keyOg ? ` (shorthand for ${keyInit})` : ''} ${
535
540
  shouldPassThrough ? '(pass)' : ''
@@ -1 +1 @@
1
- {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAOb,eAAe,EACf,YAAY,EAGZ,cAAc,EACd,WAAW,EAEZ,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AA4BhF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAMhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAE3B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAgC7B,eAAO,MAAM,cAAc,EAAE,aAqoC5B,CAAA;AA2DD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,wBACO,OAAO,KAC5B,cA2BF,CAAA;AAqBD,eAAO,MAAM,cAAc,EAAE,aAQ5B,CAAA"}
1
+ {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAOb,eAAe,EACf,YAAY,EAGZ,cAAc,EACd,WAAW,EAEZ,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AA4BhF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAMhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAE3B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAgC7B,eAAO,MAAM,cAAc,EAAE,aA0oC5B,CAAA;AA2DD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,wBACO,OAAO,KAC5B,cA2BF,CAAA;AAqBD,eAAO,MAAM,cAAc,EAAE,aAQ5B,CAAA"}