@tamagui/create-menu 1.0.1

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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/MenuPredefined.cjs +189 -0
  3. package/dist/cjs/MenuPredefined.js +168 -0
  4. package/dist/cjs/MenuPredefined.js.map +6 -0
  5. package/dist/cjs/MenuPredefined.native.js +192 -0
  6. package/dist/cjs/MenuPredefined.native.js.map +1 -0
  7. package/dist/cjs/createBaseMenu.cjs +1147 -0
  8. package/dist/cjs/createBaseMenu.js +884 -0
  9. package/dist/cjs/createBaseMenu.js.map +6 -0
  10. package/dist/cjs/createBaseMenu.native.js +1346 -0
  11. package/dist/cjs/createBaseMenu.native.js.map +1 -0
  12. package/dist/cjs/createNativeMenu/createNativeMenu.cjs +242 -0
  13. package/dist/cjs/createNativeMenu/createNativeMenu.js +184 -0
  14. package/dist/cjs/createNativeMenu/createNativeMenu.js.map +6 -0
  15. package/dist/cjs/createNativeMenu/createNativeMenu.native.js +307 -0
  16. package/dist/cjs/createNativeMenu/createNativeMenu.native.js.map +1 -0
  17. package/dist/cjs/createNativeMenu/createNativeMenuTypes.cjs +16 -0
  18. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js +14 -0
  19. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js.map +6 -0
  20. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js +19 -0
  21. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js.map +1 -0
  22. package/dist/cjs/createNativeMenu/utils.cjs +68 -0
  23. package/dist/cjs/createNativeMenu/utils.js +66 -0
  24. package/dist/cjs/createNativeMenu/utils.js.map +6 -0
  25. package/dist/cjs/createNativeMenu/utils.native.js +94 -0
  26. package/dist/cjs/createNativeMenu/utils.native.js.map +1 -0
  27. package/dist/cjs/createNativeMenu/withNativeMenu.cjs +37 -0
  28. package/dist/cjs/createNativeMenu/withNativeMenu.js +30 -0
  29. package/dist/cjs/createNativeMenu/withNativeMenu.js.map +6 -0
  30. package/dist/cjs/createNativeMenu/withNativeMenu.native.js +43 -0
  31. package/dist/cjs/createNativeMenu/withNativeMenu.native.js.map +1 -0
  32. package/dist/cjs/index.cjs +30 -0
  33. package/dist/cjs/index.js +24 -0
  34. package/dist/cjs/index.js.map +6 -0
  35. package/dist/cjs/index.native.js +33 -0
  36. package/dist/cjs/index.native.js.map +1 -0
  37. package/dist/esm/MenuPredefined.js +154 -0
  38. package/dist/esm/MenuPredefined.js.map +6 -0
  39. package/dist/esm/MenuPredefined.mjs +166 -0
  40. package/dist/esm/MenuPredefined.mjs.map +1 -0
  41. package/dist/esm/MenuPredefined.native.js +166 -0
  42. package/dist/esm/MenuPredefined.native.js.map +1 -0
  43. package/dist/esm/createBaseMenu.js +892 -0
  44. package/dist/esm/createBaseMenu.js.map +6 -0
  45. package/dist/esm/createBaseMenu.mjs +1113 -0
  46. package/dist/esm/createBaseMenu.mjs.map +1 -0
  47. package/dist/esm/createBaseMenu.native.js +1309 -0
  48. package/dist/esm/createBaseMenu.native.js.map +1 -0
  49. package/dist/esm/createNativeMenu/createNativeMenu.js +163 -0
  50. package/dist/esm/createNativeMenu/createNativeMenu.js.map +6 -0
  51. package/dist/esm/createNativeMenu/createNativeMenu.mjs +208 -0
  52. package/dist/esm/createNativeMenu/createNativeMenu.mjs.map +1 -0
  53. package/dist/esm/createNativeMenu/createNativeMenu.native.js +270 -0
  54. package/dist/esm/createNativeMenu/createNativeMenu.native.js.map +1 -0
  55. package/dist/esm/createNativeMenu/createNativeMenuTypes.js +1 -0
  56. package/dist/esm/createNativeMenu/createNativeMenuTypes.js.map +6 -0
  57. package/dist/esm/createNativeMenu/createNativeMenuTypes.mjs +2 -0
  58. package/dist/esm/createNativeMenu/createNativeMenuTypes.mjs.map +1 -0
  59. package/dist/esm/createNativeMenu/createNativeMenuTypes.native.js +2 -0
  60. package/dist/esm/createNativeMenu/createNativeMenuTypes.native.js.map +1 -0
  61. package/dist/esm/createNativeMenu/utils.js +47 -0
  62. package/dist/esm/createNativeMenu/utils.js.map +6 -0
  63. package/dist/esm/createNativeMenu/utils.mjs +29 -0
  64. package/dist/esm/createNativeMenu/utils.mjs.map +1 -0
  65. package/dist/esm/createNativeMenu/utils.native.js +52 -0
  66. package/dist/esm/createNativeMenu/utils.native.js.map +1 -0
  67. package/dist/esm/createNativeMenu/withNativeMenu.js +15 -0
  68. package/dist/esm/createNativeMenu/withNativeMenu.js.map +6 -0
  69. package/dist/esm/createNativeMenu/withNativeMenu.mjs +14 -0
  70. package/dist/esm/createNativeMenu/withNativeMenu.mjs.map +1 -0
  71. package/dist/esm/createNativeMenu/withNativeMenu.native.js +17 -0
  72. package/dist/esm/createNativeMenu/withNativeMenu.native.js.map +1 -0
  73. package/dist/esm/index.js +8 -0
  74. package/dist/esm/index.js.map +6 -0
  75. package/dist/esm/index.mjs +6 -0
  76. package/dist/esm/index.mjs.map +1 -0
  77. package/dist/esm/index.native.js +6 -0
  78. package/dist/esm/index.native.js.map +1 -0
  79. package/dist/jsx/MenuPredefined.js +154 -0
  80. package/dist/jsx/MenuPredefined.js.map +6 -0
  81. package/dist/jsx/MenuPredefined.mjs +166 -0
  82. package/dist/jsx/MenuPredefined.mjs.map +1 -0
  83. package/dist/jsx/MenuPredefined.native.js +192 -0
  84. package/dist/jsx/MenuPredefined.native.js.map +1 -0
  85. package/dist/jsx/createBaseMenu.js +892 -0
  86. package/dist/jsx/createBaseMenu.js.map +6 -0
  87. package/dist/jsx/createBaseMenu.mjs +1113 -0
  88. package/dist/jsx/createBaseMenu.mjs.map +1 -0
  89. package/dist/jsx/createBaseMenu.native.js +1346 -0
  90. package/dist/jsx/createBaseMenu.native.js.map +1 -0
  91. package/dist/jsx/createNativeMenu/createNativeMenu.js +163 -0
  92. package/dist/jsx/createNativeMenu/createNativeMenu.js.map +6 -0
  93. package/dist/jsx/createNativeMenu/createNativeMenu.mjs +208 -0
  94. package/dist/jsx/createNativeMenu/createNativeMenu.mjs.map +1 -0
  95. package/dist/jsx/createNativeMenu/createNativeMenu.native.js +307 -0
  96. package/dist/jsx/createNativeMenu/createNativeMenu.native.js.map +1 -0
  97. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js +1 -0
  98. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js.map +6 -0
  99. package/dist/jsx/createNativeMenu/createNativeMenuTypes.mjs +2 -0
  100. package/dist/jsx/createNativeMenu/createNativeMenuTypes.mjs.map +1 -0
  101. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.js +19 -0
  102. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.js.map +1 -0
  103. package/dist/jsx/createNativeMenu/utils.js +47 -0
  104. package/dist/jsx/createNativeMenu/utils.js.map +6 -0
  105. package/dist/jsx/createNativeMenu/utils.mjs +29 -0
  106. package/dist/jsx/createNativeMenu/utils.mjs.map +1 -0
  107. package/dist/jsx/createNativeMenu/utils.native.js +94 -0
  108. package/dist/jsx/createNativeMenu/utils.native.js.map +1 -0
  109. package/dist/jsx/createNativeMenu/withNativeMenu.js +15 -0
  110. package/dist/jsx/createNativeMenu/withNativeMenu.js.map +6 -0
  111. package/dist/jsx/createNativeMenu/withNativeMenu.mjs +14 -0
  112. package/dist/jsx/createNativeMenu/withNativeMenu.mjs.map +1 -0
  113. package/dist/jsx/createNativeMenu/withNativeMenu.native.js +43 -0
  114. package/dist/jsx/createNativeMenu/withNativeMenu.native.js.map +1 -0
  115. package/dist/jsx/index.js +8 -0
  116. package/dist/jsx/index.js.map +6 -0
  117. package/dist/jsx/index.mjs +6 -0
  118. package/dist/jsx/index.mjs.map +1 -0
  119. package/dist/jsx/index.native.js +33 -0
  120. package/dist/jsx/index.native.js.map +1 -0
  121. package/package.json +69 -0
  122. package/src/MenuPredefined.tsx +204 -0
  123. package/src/createBaseMenu.tsx +2031 -0
  124. package/src/createNativeMenu/createNativeMenu.tsx +400 -0
  125. package/src/createNativeMenu/createNativeMenuTypes.ts +214 -0
  126. package/src/createNativeMenu/utils.tsx +150 -0
  127. package/src/createNativeMenu/withNativeMenu.tsx +39 -0
  128. package/src/index.tsx +5 -0
  129. package/types/MenuPredefined.d.ts +31 -0
  130. package/types/MenuPredefined.d.ts.map +1 -0
  131. package/types/createBaseMenu.d.ts +298 -0
  132. package/types/createBaseMenu.d.ts.map +1 -0
  133. package/types/createNativeMenu/createNativeMenu.d.ts +42 -0
  134. package/types/createNativeMenu/createNativeMenu.d.ts.map +1 -0
  135. package/types/createNativeMenu/createNativeMenuTypes.d.ts +188 -0
  136. package/types/createNativeMenu/createNativeMenuTypes.d.ts.map +1 -0
  137. package/types/createNativeMenu/index.d.ts +4 -0
  138. package/types/createNativeMenu/utils.d.ts +38 -0
  139. package/types/createNativeMenu/utils.d.ts.map +1 -0
  140. package/types/createNativeMenu/withNativeMenu.d.ts +9 -0
  141. package/types/createNativeMenu/withNativeMenu.d.ts.map +1 -0
  142. package/types/index.d.ts +6 -0
  143. package/types/index.d.ts.map +1 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Credit to geist-ui/react, it's initially copied from there and updated.
3
+ *
4
+ * MIT License
5
+
6
+ Copyright (c) 2020 Geist UI
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
25
+ */
26
+
27
+ import React, {
28
+ Children,
29
+ type ReactElement,
30
+ type ReactNode,
31
+ cloneElement,
32
+ isValidElement,
33
+ } from 'react'
34
+
35
+ type ReactChildArray = ReturnType<typeof React.Children.toArray>
36
+
37
+ export function flattenChildrenKeyless(children: ReactNode): ReactChildArray {
38
+ const childrenArray = React.Children.toArray(children)
39
+ return childrenArray.reduce((flatChildren: ReactChildArray, child) => {
40
+ if ((child as React.ReactElement<any>).type === React.Fragment) {
41
+ return flatChildren.concat(
42
+ flattenChildren((child as React.ReactElement<any>).props.children)
43
+ )
44
+ }
45
+ flatChildren.push(child)
46
+ return flatChildren
47
+ }, [])
48
+ }
49
+
50
+ export function flattenChildren(
51
+ children: ReactNode,
52
+ componentNamesToIgnore?: string[],
53
+ depth = 0,
54
+ keys: (string | number)[] = []
55
+ ): ReactNode[] {
56
+ return Children.toArray(children)
57
+ .flatMap((elem) => {
58
+ if (isValidElement(elem)) {
59
+ if (
60
+ typeof (elem as any)?.type == 'function' &&
61
+ componentNamesToIgnore?.some((skipComponentName) =>
62
+ (elem.type as any).displayName.includes(skipComponentName)
63
+ )
64
+ ) {
65
+ return (elem as any).props.children
66
+ }
67
+ }
68
+ return elem
69
+ })
70
+ .reduce((acc: ReactNode[], node: any, nodeIndex) => {
71
+ if (node.type === React.Fragment) {
72
+ acc.push.apply(
73
+ acc,
74
+ flattenChildren(
75
+ node.props.children,
76
+ componentNamesToIgnore,
77
+ depth + 1,
78
+ keys.concat(node.key || nodeIndex)
79
+ )
80
+ )
81
+ } else {
82
+ if (isValidElement(node)) {
83
+ acc.push(
84
+ cloneElement(node, {
85
+ key: keys.concat(String(node.key)).join('.'),
86
+ })
87
+ )
88
+ } else if (typeof node === 'string' || typeof node === 'number') {
89
+ acc.push(node)
90
+ }
91
+ }
92
+ return acc
93
+ }, [])
94
+ }
95
+
96
+ export const pickChildren = <Props = any>(
97
+ _children: ReactNode | undefined,
98
+ targetChild: React.ElementType,
99
+ componentNamesToIgnore?: string[]
100
+ ) => {
101
+ const children = flattenChildren(_children, componentNamesToIgnore)
102
+ const target: ReactElement<Props>[] = []
103
+ const withoutTargetChildren = React.Children.map(children, (item) => {
104
+ if (!isValidElement(item)) return item
105
+ if (isInstanceOfComponent(item, targetChild)) {
106
+ // @ts-expect-error
107
+ target.push(cloneElement(item))
108
+ return null
109
+ }
110
+ return item
111
+ })
112
+
113
+ const targetChildren = target.length >= 0 ? target : undefined
114
+
115
+ return {
116
+ targetChildren,
117
+ withoutTargetChildren,
118
+ }
119
+ }
120
+
121
+ export const isInstanceOfComponent = (
122
+ element: React.ReactElement | ReactNode | undefined,
123
+ targetElement: React.ElementType
124
+ ) => {
125
+ const matches =
126
+ (element as any)?.type === targetElement ||
127
+ (typeof (element as any)?.type == 'function' &&
128
+ ((element as any)?.type?.displayName === (targetElement as any).displayName ||
129
+ (element as any)?.type?.displayName ===
130
+ (targetElement as any).displayName + 'Wrapper'))
131
+ return matches
132
+ }
133
+
134
+ export const filterNull = <T extends unknown | null | undefined>(
135
+ t: T
136
+ ): t is NonNullable<T> => {
137
+ return t != null
138
+ }
139
+
140
+ export const create = <Props extends {}>(
141
+ Component: React.ComponentType<Props>,
142
+ displayName: string
143
+ ) => {
144
+ const MenuComponent: React.FC<Props> = (props: Props) => {
145
+ return <Component {...(props as any)} />
146
+ }
147
+ MenuComponent.displayName = displayName
148
+
149
+ return MenuComponent
150
+ }
@@ -0,0 +1,39 @@
1
+ import { isWeb } from '@tamagui/web'
2
+
3
+ type GetProps<T> = T extends React.ComponentType<infer P> ? P : never
4
+
5
+ export function withNativeMenu<
6
+ C extends React.ComponentType<any>,
7
+ N extends React.ComponentType<any>,
8
+ CP = GetProps<C>,
9
+ NP = GetProps<N>,
10
+ >({
11
+ Component,
12
+ NativeComponent,
13
+ }: {
14
+ Component: C
15
+ NativeComponent: N
16
+ scope?: string
17
+ isRoot?: boolean
18
+ }): React.FC<CP & Partial<Omit<NP, keyof CP>>> {
19
+ type Props = CP & Partial<Omit<NP, keyof CP>>
20
+
21
+ if (isWeb) {
22
+ return Component as React.FC<Props>
23
+ }
24
+
25
+ // On native platform, always use native component
26
+ // If NativeComponent is missing (zeego not set up), fall back to web Component
27
+ if (!NativeComponent) {
28
+ return Component as React.FC<Props>
29
+ }
30
+
31
+ const Menu: React.FC<Props> = (props) => {
32
+ return <NativeComponent {...(props as any)} />
33
+ }
34
+
35
+ // displayName is required for Portal flattening (checks displayName.includes('Portal'))
36
+ Menu.displayName = NativeComponent.displayName || Component?.displayName
37
+
38
+ return Menu
39
+ }
package/src/index.tsx ADDED
@@ -0,0 +1,5 @@
1
+ export * from './createBaseMenu'
2
+ export * from './createNativeMenu/createNativeMenu'
3
+ export * from './createNativeMenu/withNativeMenu'
4
+ export type * from './createNativeMenu/createNativeMenuTypes'
5
+ export { MenuPredefined } from './MenuPredefined'
@@ -0,0 +1,31 @@
1
+ export declare const MenuPredefined: {
2
+ MenuIcon: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
3
+ unstyled?: boolean | undefined;
4
+ }, import("@tamagui/web").StaticConfigPublic>;
5
+ MenuImage: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, unknown, import("@tamagui/web").TamaguiComponentPropsBaseBase & Partial<import("@tamagui/image").ImageProps>, import("@tamagui/web").StackStyleBase, {}, import("@tamagui/web").StaticConfigPublic>;
6
+ MenuIndicator: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
7
+ unstyled?: boolean | undefined;
8
+ }, import("@tamagui/web").StaticConfigPublic>;
9
+ MenuItem: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
10
+ unstyled?: boolean | undefined;
11
+ }, import("@tamagui/web").StaticConfigPublic>;
12
+ Title: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
13
+ unstyled?: boolean | undefined;
14
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
15
+ }, import("@tamagui/web").StaticConfigPublic>;
16
+ SubTitle: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
17
+ unstyled?: boolean | undefined;
18
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
19
+ }, import("@tamagui/web").StaticConfigPublic>;
20
+ MenuGroup: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
21
+ unstyled?: boolean | undefined;
22
+ }, import("@tamagui/web").StaticConfigPublic>;
23
+ MenuSeparator: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiElement, import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
24
+ unstyled?: boolean | undefined;
25
+ }, import("@tamagui/web").StaticConfigPublic>;
26
+ MenuLabel: import("@tamagui/web").TamaguiComponent<import("@tamagui/web").TamaDefer, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
27
+ unstyled?: boolean | undefined;
28
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
29
+ }, import("@tamagui/web").StaticConfigPublic>;
30
+ };
31
+ //# sourceMappingURL=MenuPredefined.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuPredefined.d.ts","sourceRoot":"","sources":["../src/MenuPredefined.tsx"],"names":[],"mappings":"AAiMA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU1B,CAAA"}
@@ -0,0 +1,298 @@
1
+ import { Dismissable as DismissableLayer } from '@tamagui/dismissable';
2
+ import { FocusScope } from '@tamagui/focus-scope';
3
+ import type { PopperContentProps } from '@tamagui/popper';
4
+ import * as PopperPrimitive from '@tamagui/popper';
5
+ import type { RovingFocusGroupProps } from '@tamagui/roving-focus';
6
+ import type { TextProps } from '@tamagui/web';
7
+ import { type ViewProps, View } from '@tamagui/web';
8
+ import type { TamaguiElement } from '@tamagui/web/types';
9
+ import * as React from 'react';
10
+ import type { Image, ImageProps } from 'react-native';
11
+ import { MenuPredefined } from './MenuPredefined';
12
+ type Direction = 'ltr' | 'rtl';
13
+ type ScopedProps<P> = P & {
14
+ scope?: string;
15
+ };
16
+ interface MenuBaseProps extends PopperPrimitive.PopperProps {
17
+ children?: React.ReactNode;
18
+ open?: boolean;
19
+ onOpenChange?(open: boolean): void;
20
+ dir?: Direction;
21
+ modal?: boolean;
22
+ native?: boolean;
23
+ }
24
+ type PopperAnchorProps = React.ComponentPropsWithoutRef<typeof PopperPrimitive.PopperAnchor>;
25
+ interface MenuAnchorProps extends PopperAnchorProps {
26
+ }
27
+ interface MenuPortalProps {
28
+ children?: React.ReactNode;
29
+ /**
30
+ * Used to force mounting when more control is needed. Useful when
31
+ * controlling animation with React animation libraries.
32
+ */
33
+ forceMount?: boolean;
34
+ zIndex?: number;
35
+ }
36
+ /**
37
+ * We purposefully don't union MenuRootContent and MenuSubContent props here because
38
+ * they have conflicting prop types. We agreed that we would allow MenuSubContent to
39
+ * accept props that it would just ignore.
40
+ */
41
+ interface MenuContentProps extends MenuRootContentTypeProps {
42
+ /**
43
+ * Used to force mounting when more control is needed. Useful when
44
+ * controlling animation with React animation libraries.
45
+ */
46
+ forceMount?: boolean;
47
+ }
48
+ interface MenuRootContentTypeProps extends Omit<MenuContentImplProps, keyof MenuContentImplPrivateProps> {
49
+ }
50
+ type MenuContentImplElement = React.ElementRef<typeof PopperPrimitive.PopperContent>;
51
+ type FocusScopeProps = React.ComponentPropsWithoutRef<typeof FocusScope>;
52
+ type DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;
53
+ type MenuContentImplPrivateProps = {
54
+ onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];
55
+ onDismiss?: DismissableLayerProps['onDismiss'];
56
+ disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents'];
57
+ /**
58
+ * Whether scrolling outside the `MenuContent` should be prevented
59
+ * (default: `false`)
60
+ */
61
+ disableOutsideScroll?: boolean;
62
+ /**
63
+ * Whether focus should be trapped within the `MenuContent`
64
+ * (default: false)
65
+ */
66
+ trapFocus?: FocusScopeProps['trapped'];
67
+ /**
68
+ * Whether to disable dismissing the menu when the user scrolls outside of it
69
+ * (default: false, meaning scroll will dismiss on web)
70
+ */
71
+ disableDismissOnScroll?: boolean;
72
+ };
73
+ interface MenuContentImplProps extends MenuContentImplPrivateProps, Omit<PopperContentProps, 'dir' | 'onPlaced'> {
74
+ /**
75
+ * Event handler called when auto-focusing on close.
76
+ * Can be prevented.
77
+ */
78
+ onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];
79
+ /**
80
+ * Whether keyboard navigation should loop around
81
+ * @defaultValue false
82
+ */
83
+ loop?: RovingFocusGroupProps['loop'];
84
+ onEntryFocus?: RovingFocusGroupProps['onEntryFocus'];
85
+ onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];
86
+ onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
87
+ onFocusOutside?: DismissableLayerProps['onFocusOutside'];
88
+ onInteractOutside?: DismissableLayerProps['onInteractOutside'];
89
+ }
90
+ interface MenuGroupProps extends ViewProps {
91
+ }
92
+ interface MenuLabelProps extends ViewProps {
93
+ }
94
+ interface MenuItemProps extends Omit<MenuItemImplProps, 'onSelect'> {
95
+ onSelect?: (event: Event) => void;
96
+ unstyled?: boolean;
97
+ /**
98
+ * Prevents the menu from closing when this item is selected.
99
+ * Useful for toggle items or multi-select scenarios.
100
+ */
101
+ preventCloseOnSelect?: boolean;
102
+ }
103
+ interface MenuItemImplProps extends ViewProps {
104
+ disabled?: boolean;
105
+ textValue?: string;
106
+ unstyled?: boolean;
107
+ }
108
+ interface MenuItemTitleProps extends TextProps {
109
+ }
110
+ interface MenuItemSubTitleProps extends TextProps {
111
+ }
112
+ type MenuItemIconProps = ViewProps;
113
+ type CheckedState = boolean | 'indeterminate';
114
+ interface MenuCheckboxItemProps extends MenuItemProps {
115
+ checked?: CheckedState;
116
+ onCheckedChange?: (checked: boolean) => void;
117
+ }
118
+ interface MenuRadioGroupProps extends MenuGroupProps {
119
+ value?: string;
120
+ onValueChange?: (value: string) => void;
121
+ }
122
+ interface MenuRadioItemProps extends MenuItemProps {
123
+ value: string;
124
+ }
125
+ type PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof View>;
126
+ interface MenuItemIndicatorProps extends PrimitiveSpanProps {
127
+ /**
128
+ * Used to force mounting when more control is needed. Useful when
129
+ * controlling animation with React animation libraries.
130
+ */
131
+ forceMount?: boolean;
132
+ }
133
+ interface MenuSeparatorProps extends ViewProps {
134
+ }
135
+ type PopperArrowProps = React.ComponentPropsWithoutRef<typeof PopperPrimitive.PopperArrow>;
136
+ interface MenuArrowProps extends PopperArrowProps {
137
+ unstyled?: boolean;
138
+ }
139
+ export interface MenuSubProps extends PopperPrimitive.PopperProps {
140
+ children?: React.ReactNode;
141
+ open?: boolean;
142
+ onOpenChange?(open: boolean): void;
143
+ }
144
+ interface MenuSubTriggerProps extends MenuItemImplProps {
145
+ }
146
+ export type MenuSubContentElement = MenuContentImplElement;
147
+ export interface MenuSubContentProps extends Omit<MenuContentImplProps, keyof MenuContentImplPrivateProps | 'onCloseAutoFocus' | 'onEntryFocus' | 'side' | 'align'> {
148
+ /**
149
+ * Used to force mounting when more control is needed. Useful when
150
+ * controlling animation with React animation libraries.
151
+ */
152
+ forceMount?: boolean;
153
+ }
154
+ export type CreateBaseMenuProps = {
155
+ Item?: typeof MenuPredefined.MenuItem;
156
+ MenuGroup?: typeof MenuPredefined.MenuGroup;
157
+ Title?: typeof MenuPredefined.Title;
158
+ SubTitle?: typeof MenuPredefined.SubTitle;
159
+ Image?: React.ElementType;
160
+ Icon?: typeof MenuPredefined.MenuIcon;
161
+ Indicator?: typeof MenuPredefined.MenuIndicator;
162
+ Separator?: typeof MenuPredefined.MenuSeparator;
163
+ Label?: typeof MenuPredefined.MenuLabel;
164
+ };
165
+ export declare function createBaseMenu({ Item: _Item, Title: _Title, SubTitle: _SubTitle, Image: _Image, Icon: _Icon, Indicator: _Indicator, Separator: _Separator, MenuGroup: _MenuGroup, Label: _Label, }: CreateBaseMenuProps): {
166
+ Menu: {
167
+ (props: ScopedProps<MenuBaseProps>): import("react/jsx-runtime").JSX.Element;
168
+ displayName: string;
169
+ } & {
170
+ Anchor: {
171
+ (props: MenuAnchorProps): import("react/jsx-runtime").JSX.Element;
172
+ displayName: string;
173
+ };
174
+ Portal: {
175
+ (props: ScopedProps<MenuPortalProps>): import("react/jsx-runtime").JSX.Element;
176
+ displayName: string;
177
+ };
178
+ Content: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
179
+ size?: import("@tamagui/web").SizeTokens | undefined;
180
+ unstyled?: boolean | undefined;
181
+ elevation?: number | import("@tamagui/web").SizeTokens | undefined;
182
+ fullscreen?: boolean | undefined;
183
+ }>, keyof MenuContentProps> & MenuContentProps & {
184
+ scope?: string;
185
+ }, TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps & MenuContentProps & {
186
+ scope?: string;
187
+ }, import("@tamagui/web").StackStyleBase, {
188
+ size?: import("@tamagui/web").SizeTokens | undefined;
189
+ unstyled?: boolean | undefined;
190
+ elevation?: number | import("@tamagui/web").SizeTokens | undefined;
191
+ fullscreen?: boolean | undefined;
192
+ }, import("@tamagui/web").StaticConfigPublic>;
193
+ Group: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
194
+ unstyled?: boolean | undefined;
195
+ }>, keyof MenuGroupProps> & MenuGroupProps, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuGroupProps, import("@tamagui/web").StackStyleBase, {
196
+ unstyled?: boolean | undefined;
197
+ }, import("@tamagui/web").StaticConfigPublic>;
198
+ Label: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
199
+ unstyled?: boolean | undefined;
200
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
201
+ }>, keyof MenuLabelProps> & MenuLabelProps, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps & MenuLabelProps, import("@tamagui/web").TextStylePropsBase, {
202
+ unstyled?: boolean | undefined;
203
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
204
+ }, import("@tamagui/web").StaticConfigPublic>;
205
+ Item: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
206
+ unstyled?: boolean | undefined;
207
+ }>, "scope" | keyof MenuItemProps> & MenuItemProps & {
208
+ scope?: string;
209
+ }, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuItemProps & {
210
+ scope?: string;
211
+ }, import("@tamagui/web").StackStyleBase, {
212
+ unstyled?: boolean | undefined;
213
+ }, import("@tamagui/web").StaticConfigPublic>;
214
+ CheckboxItem: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
215
+ unstyled?: boolean | undefined;
216
+ }>, "scope" | keyof MenuCheckboxItemProps> & MenuCheckboxItemProps & {
217
+ scope?: string;
218
+ }, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuCheckboxItemProps & {
219
+ scope?: string;
220
+ }, import("@tamagui/web").StackStyleBase, {
221
+ unstyled?: boolean | undefined;
222
+ }, import("@tamagui/web").StaticConfigPublic>;
223
+ RadioGroup: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
224
+ unstyled?: boolean | undefined;
225
+ }>, "scope" | keyof MenuRadioGroupProps> & MenuRadioGroupProps & {
226
+ scope?: string;
227
+ }, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuRadioGroupProps & {
228
+ scope?: string;
229
+ }, import("@tamagui/web").StackStyleBase, {
230
+ unstyled?: boolean | undefined;
231
+ }, import("@tamagui/web").StaticConfigPublic>;
232
+ RadioItem: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
233
+ unstyled?: boolean | undefined;
234
+ }>, "scope" | keyof MenuRadioItemProps> & MenuRadioItemProps & {
235
+ scope?: string;
236
+ }, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuRadioItemProps & {
237
+ scope?: string;
238
+ }, import("@tamagui/web").StackStyleBase, {
239
+ unstyled?: boolean | undefined;
240
+ }, import("@tamagui/web").StaticConfigPublic>;
241
+ ItemIndicator: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
242
+ unstyled?: boolean | undefined;
243
+ }>, "scope" | keyof MenuItemIndicatorProps> & MenuItemIndicatorProps & {
244
+ scope?: string;
245
+ }, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuItemIndicatorProps & {
246
+ scope?: string;
247
+ }, import("@tamagui/web").StackStyleBase, {
248
+ unstyled?: boolean | undefined;
249
+ }, import("@tamagui/web").StaticConfigPublic>;
250
+ Separator: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
251
+ unstyled?: boolean | undefined;
252
+ }>, keyof MenuSeparatorProps> & MenuSeparatorProps, TamaguiElement, import("@tamagui/web").StackNonStyleProps & MenuSeparatorProps, import("@tamagui/web").StackStyleBase, {
253
+ unstyled?: boolean | undefined;
254
+ }, import("@tamagui/web").StaticConfigPublic>;
255
+ Arrow: React.ForwardRefExoticComponent<MenuArrowProps & React.RefAttributes<TamaguiElement>>;
256
+ Sub: React.FC<ScopedProps<MenuSubProps>>;
257
+ SubTrigger: React.ForwardRefExoticComponent<MenuSubTriggerProps & {
258
+ scope?: string;
259
+ } & React.RefAttributes<TamaguiElement>>;
260
+ SubContent: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
261
+ size?: import("@tamagui/web").SizeTokens | undefined;
262
+ unstyled?: boolean | undefined;
263
+ elevation?: number | import("@tamagui/web").SizeTokens | undefined;
264
+ fullscreen?: boolean | undefined;
265
+ }>, keyof MenuSubContentProps> & MenuSubContentProps & {
266
+ scope?: string;
267
+ }, TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps & MenuSubContentProps & {
268
+ scope?: string;
269
+ }, import("@tamagui/web").StackStyleBase, {
270
+ size?: import("@tamagui/web").SizeTokens | undefined;
271
+ unstyled?: boolean | undefined;
272
+ elevation?: number | import("@tamagui/web").SizeTokens | undefined;
273
+ fullscreen?: boolean | undefined;
274
+ }, import("@tamagui/web").StaticConfigPublic>;
275
+ ItemTitle: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
276
+ unstyled?: boolean | undefined;
277
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
278
+ }>, keyof MenuItemTitleProps> & MenuItemTitleProps, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps & MenuItemTitleProps, import("@tamagui/web").TextStylePropsBase, {
279
+ unstyled?: boolean | undefined;
280
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
281
+ }, import("@tamagui/web").StaticConfigPublic>;
282
+ ItemSubtitle: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").TextNonStyleProps, import("@tamagui/web").TextStylePropsBase, {
283
+ unstyled?: boolean | undefined;
284
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
285
+ }>, keyof MenuItemSubTitleProps> & MenuItemSubTitleProps, import("@tamagui/web").TamaguiTextElement, import("@tamagui/web").TextNonStyleProps & MenuItemSubTitleProps, import("@tamagui/web").TextStylePropsBase, {
286
+ unstyled?: boolean | undefined;
287
+ size?: import("@tamagui/web").FontSizeTokens | undefined;
288
+ }, import("@tamagui/web").StaticConfigPublic>;
289
+ ItemImage: React.ForwardRefExoticComponent<ImageProps & React.RefAttributes<Image>>;
290
+ ItemIcon: import("@tamagui/web").TamaguiComponent<Omit<import("@tamagui/web").GetFinalProps<import("@tamagui/web").StackNonStyleProps, import("@tamagui/web").StackStyleBase, {
291
+ unstyled?: boolean | undefined;
292
+ }>, `$${string}` | `$${number}` | import("@tamagui/web").GroupMediaKeys | `$theme-${string}` | `$theme-${number}` | keyof import("@tamagui/web").StackStyleBase | keyof import("@tamagui/web").StackNonStyleProps | keyof import("@tamagui/web").WithPseudoProps<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase> & import("@tamagui/web").WithShorthands<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase>>>> & import("@tamagui/web").StackNonStyleProps & import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase> & import("@tamagui/web").WithShorthands<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase>> & import("@tamagui/web").WithPseudoProps<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase> & import("@tamagui/web").WithShorthands<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase>>> & import("@tamagui/web").WithMediaProps<import("@tamagui/web").WithThemeShorthandsAndPseudos<import("@tamagui/web").StackStyleBase, {}>>, TamaguiElement, import("@tamagui/web").StackNonStyleProps & import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase> & import("@tamagui/web").WithShorthands<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase>> & import("@tamagui/web").WithPseudoProps<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase> & import("@tamagui/web").WithShorthands<import("@tamagui/web").WithThemeValues<import("@tamagui/web").StackStyleBase>>> & import("@tamagui/web").WithMediaProps<import("@tamagui/web").WithThemeShorthandsAndPseudos<import("@tamagui/web").StackStyleBase, {}>>, import("@tamagui/web").StackStyleBase, {
293
+ unstyled?: boolean | undefined;
294
+ }, import("@tamagui/web").StaticConfigPublic>;
295
+ };
296
+ };
297
+ export type { MenuAnchorProps, MenuArrowProps, MenuCheckboxItemProps, MenuContentProps, MenuGroupProps, MenuItemIconProps, MenuItemIndicatorProps, MenuItemProps, MenuItemSubTitleProps, MenuItemTitleProps, MenuLabelProps, MenuPortalProps, MenuBaseProps as MenuProps, MenuRadioGroupProps, MenuRadioItemProps, MenuSeparatorProps, MenuSubTriggerProps, };
298
+ //# sourceMappingURL=createBaseMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBaseMenu.d.ts","sourceRoot":"","sources":["../src/createBaseMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * createNativeMenu - provides native menu implementation for React Native
3
+ *
4
+ * On Web: Returns empty stub components (withNativeMenu will use the web components instead)
5
+ * On Native: Uses Zeego for native menus (Credit to nandorojo/Zeego)
6
+ */
7
+ import type { FC } from 'react';
8
+ import React from 'react';
9
+ import type { ContextMenuPreviewProps, NativeMenuArrowProps, NativeMenuCheckboxItemProps, NativeMenuContentProps, NativeMenuGroupProps, NativeMenuItemIconProps, NativeMenuItemImageProps, NativeMenuItemIndicatorProps, NativeMenuItemProps, NativeMenuItemSubtitleProps, NativeMenuItemTitleProps, NativeMenuLabelProps, NativeMenuProps, NativeMenuSeparatorProps, NativeMenuSubContentProps, NativeMenuSubProps, NativeMenuSubTriggerProps, MenuTriggerProps } from './createNativeMenuTypes';
10
+ export type NativeMenuComponents = {
11
+ Menu: FC<NativeMenuProps> & {
12
+ Trigger: FC<MenuTriggerProps>;
13
+ Content: FC<NativeMenuContentProps>;
14
+ Item: FC<NativeMenuItemProps>;
15
+ ItemTitle: FC<NativeMenuItemTitleProps>;
16
+ ItemSubtitle: FC<NativeMenuItemSubtitleProps>;
17
+ SubTrigger: FC<NativeMenuSubTriggerProps>;
18
+ Group: FC<NativeMenuGroupProps>;
19
+ ItemIcon: FC<NativeMenuItemIconProps>;
20
+ Separator: FC<NativeMenuSeparatorProps>;
21
+ CheckboxItem: FC<NativeMenuCheckboxItemProps>;
22
+ ItemIndicator: FC<NativeMenuItemIndicatorProps>;
23
+ ItemImage: FC<NativeMenuItemImageProps>;
24
+ Label: FC<NativeMenuLabelProps>;
25
+ Arrow: FC<NativeMenuArrowProps>;
26
+ Sub: FC<NativeMenuSubProps>;
27
+ SubContent: FC<NativeMenuSubContentProps>;
28
+ Preview: FC<ContextMenuPreviewProps>;
29
+ Portal: FC<{
30
+ children: React.ReactNode;
31
+ }>;
32
+ RadioGroup: FC<{
33
+ children: React.ReactNode;
34
+ }>;
35
+ RadioItem: FC<{
36
+ children: React.ReactNode;
37
+ }>;
38
+ Auxiliary: FC<any>;
39
+ };
40
+ };
41
+ export declare const createNativeMenu: (MenuType: "ContextMenu" | "Menu") => NativeMenuComponents;
42
+ //# sourceMappingURL=createNativeMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNativeMenu.d.ts","sourceRoot":"","sources":["../../src/createNativeMenu/createNativeMenu.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,yBAAyB,CAAA;AAEhC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG;QAC1B,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAA;QAC7B,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;QACnC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAA;QAC7B,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAA;QACvC,YAAY,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAA;QAC7C,UAAU,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAA;QACzC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAA;QAC/B,QAAQ,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAA;QACrC,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAA;QACvC,YAAY,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAA;QAC7C,aAAa,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAA;QAC/C,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAA;QACvC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAA;QAC/B,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAA;QAC/B,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAA;QAC3B,UAAU,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAA;QACzC,OAAO,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAA;QACpC,MAAM,EAAE,EAAE,CAAC;YAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAC,CAAA;QACzC,UAAU,EAAE,EAAE,CAAC;YAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAC,CAAA;QAC7C,SAAS,EAAE,EAAE,CAAC;YAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAC,CAAA;QAC5C,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;KACnB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,UAAU,aAAa,GAAG,MAAM,KAC/B,oBAmVF,CAAA"}