@planningcenter/chat-react-native 4.5.0-rc.2 → 4.5.0-rc.3
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/build/components/display/filter_dropdown.d.ts.map +1 -1
- package/build/components/display/filter_dropdown.js +3 -1
- package/build/components/display/filter_dropdown.js.map +1 -1
- package/build/components/display/index.d.ts +1 -0
- package/build/components/display/index.d.ts.map +1 -1
- package/build/components/display/index.js +1 -0
- package/build/components/display/index.js.map +1 -1
- package/build/components/display/popover_menu_view.d.ts +8 -0
- package/build/components/display/popover_menu_view.d.ts.map +1 -0
- package/build/components/display/popover_menu_view.js +482 -0
- package/build/components/display/popover_menu_view.js.map +1 -0
- package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
- package/build/screens/conversations/conversations_screen.js +1 -2
- package/build/screens/conversations/conversations_screen.js.map +1 -1
- package/build/screens/design_system_screen.d.ts.map +1 -1
- package/build/screens/design_system_screen.js +289 -201
- package/build/screens/design_system_screen.js.map +1 -1
- package/build/utils/native_adapters/menu.d.ts +1 -2
- package/build/utils/native_adapters/menu.d.ts.map +1 -1
- package/build/utils/native_adapters/menu.js +2 -41
- package/build/utils/native_adapters/menu.js.map +1 -1
- package/package.json +2 -2
- package/src/components/display/__tests__/filter_dropdown.test.tsx +18 -2
- package/src/components/display/__tests__/popover_menu_view.test.tsx +63 -0
- package/src/components/display/filter_dropdown.tsx +4 -2
- package/src/components/display/index.ts +1 -0
- package/src/components/display/popover_menu_view.tsx +239 -0
- package/src/screens/conversations/__tests__/conversations_screen.test.tsx +2 -12
- package/src/screens/conversations/conversations_screen.tsx +1 -2
- package/src/screens/design_system_screen.tsx +34 -1
- package/src/utils/native_adapters/menu.tsx +4 -18
- package/src/utils/native_adapters/__tests__/menu.test.tsx +0 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter_dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/display/filter_dropdown.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter_dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/display/filter_dropdown.tsx"],"names":[],"mappings":"AA0BA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,eAAsB,EACtB,QAAQ,GACT,EAAE,mBAAmB,2CAiDrB"}
|
|
@@ -5,6 +5,7 @@ import { useTheme } from '../../hooks';
|
|
|
5
5
|
import { MAX_FONT_SIZE_MULTIPLIER_LANDMARK, Menu, platformFontWeightBold } from '../../utils';
|
|
6
6
|
import { tokens } from '../../vendor/tapestry/tokens';
|
|
7
7
|
import { Icon } from './icon';
|
|
8
|
+
import { PopoverMenuView } from './popover_menu_view';
|
|
8
9
|
import { Text } from './text';
|
|
9
10
|
|
|
10
11
|
// =================================
|
|
@@ -31,6 +32,7 @@ export function FilterDropdown(t0) {
|
|
|
31
32
|
} = t0;
|
|
32
33
|
const showMoreFilters = t1 === undefined ? true : t1;
|
|
33
34
|
const styles = useStyles();
|
|
35
|
+
const MenuView = Menu.View ?? PopoverMenuView;
|
|
34
36
|
let t2;
|
|
35
37
|
if ($[0] !== options || $[1] !== selectedId || $[2] !== showMoreFilters) {
|
|
36
38
|
let t3;
|
|
@@ -154,7 +156,7 @@ export function FilterDropdown(t0) {
|
|
|
154
156
|
}
|
|
155
157
|
let t9;
|
|
156
158
|
if ($[24] !== actions || $[25] !== handlePressAction || $[26] !== styles.container || $[27] !== t8) {
|
|
157
|
-
t9 = /*#__PURE__*/_jsx(
|
|
159
|
+
t9 = /*#__PURE__*/_jsx(MenuView, {
|
|
158
160
|
actions: actions,
|
|
159
161
|
onPressAction: handlePressAction,
|
|
160
162
|
style: styles.container,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter_dropdown.js","names":["React","StyleSheet","View","useTheme","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","Menu","platformFontWeightBold","tokens","Icon","Text","jsx","_jsx","jsxs","_jsxs","MORE_FILTERS_ID","MORE_FILTERS_LABEL","FilterDropdown","t0","$","_c","options","selectedId","onSelect","onMoreFilters","triggerLabel","showMoreFilters","t1","maxWidth","undefined","styles","useStyles","t2","t3","option","id","title","label","state","optionActions","map","t4","Symbol","for","displayInline","subactions","moreFiltersAction","actions","nativeEvent","event","handlePressAction","t5","trigger","t6","style","numberOfLines","children","t7","triggerIcon","name","accessibilityElementsHidden","t8","accessible","accessibilityRole","accessibilityHint","t9","container","colors","iconColorDefaultPrimary","textColorDefaultPrimary","create","alignSelf","flexDirection","alignItems","gap","paddingVertical","flexShrink","fontWeight","color","fontSize","fontSizeSm"],"sources":["../../../src/components/display/filter_dropdown.tsx"],"sourcesContent":["import React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { useTheme } from '../../hooks'\nimport {\n MAX_FONT_SIZE_MULTIPLIER_LANDMARK,\n Menu,\n MenuAction,\n MenuActionEvent,\n platformFontWeightBold,\n} from '../../utils'\nimport { tokens } from '../../vendor/tapestry/tokens'\nimport { Icon } from './icon'\nimport { Text } from './text'\n\n// =================================\n// ====== Constants ================\n// =================================\n\nconst MORE_FILTERS_ID = 'more_filters'\nconst MORE_FILTERS_LABEL = 'More filters'\n\n// =================================\n// ====== Component ================\n// =================================\n\nexport interface FilterDropdownOption {\n id: string\n label: string\n}\n\nexport interface FilterDropdownProps {\n options: FilterDropdownOption[]\n selectedId: string\n onSelect: (id: string) => void\n onMoreFilters: () => void\n triggerLabel: string\n showMoreFilters?: boolean\n /**\n * Widest the trigger may render, in points. Hosts that measure the trigger at its intrinsic\n * width need this for the label to truncate.\n */\n maxWidth?: number\n}\n\nexport function FilterDropdown({\n options,\n selectedId,\n onSelect,\n onMoreFilters,\n triggerLabel,\n showMoreFilters = true,\n maxWidth,\n}: FilterDropdownProps) {\n const styles = useStyles()\n\n const optionActions: MenuAction[] = options.map(option => ({\n id: option.id,\n title: option.label,\n state: option.id === selectedId ? ('on' as const) : ('off' as const),\n }))\n const moreFiltersAction: MenuAction = {\n id: MORE_FILTERS_ID,\n title: '',\n displayInline: true,\n subactions: [{ id: MORE_FILTERS_ID, title: MORE_FILTERS_LABEL }],\n }\n const actions = showMoreFilters ? [...optionActions, moreFiltersAction] : optionActions\n\n const handlePressAction = ({ nativeEvent }: MenuActionEvent) => {\n if (nativeEvent.event === MORE_FILTERS_ID) {\n onMoreFilters()\n } else {\n onSelect(nativeEvent.event)\n }\n }\n\n return (\n <
|
|
1
|
+
{"version":3,"file":"filter_dropdown.js","names":["React","StyleSheet","View","useTheme","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","Menu","platformFontWeightBold","tokens","Icon","PopoverMenuView","Text","jsx","_jsx","jsxs","_jsxs","MORE_FILTERS_ID","MORE_FILTERS_LABEL","FilterDropdown","t0","$","_c","options","selectedId","onSelect","onMoreFilters","triggerLabel","showMoreFilters","t1","maxWidth","undefined","styles","useStyles","MenuView","t2","t3","option","id","title","label","state","optionActions","map","t4","Symbol","for","displayInline","subactions","moreFiltersAction","actions","nativeEvent","event","handlePressAction","t5","trigger","t6","style","numberOfLines","children","t7","triggerIcon","name","accessibilityElementsHidden","t8","accessible","accessibilityRole","accessibilityHint","t9","container","colors","iconColorDefaultPrimary","textColorDefaultPrimary","create","alignSelf","flexDirection","alignItems","gap","paddingVertical","flexShrink","fontWeight","color","fontSize","fontSizeSm"],"sources":["../../../src/components/display/filter_dropdown.tsx"],"sourcesContent":["import React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { useTheme } from '../../hooks'\nimport {\n MAX_FONT_SIZE_MULTIPLIER_LANDMARK,\n Menu,\n MenuAction,\n MenuActionEvent,\n platformFontWeightBold,\n} from '../../utils'\nimport { tokens } from '../../vendor/tapestry/tokens'\nimport { Icon } from './icon'\nimport { PopoverMenuView } from './popover_menu_view'\nimport { Text } from './text'\n\n// =================================\n// ====== Constants ================\n// =================================\n\nconst MORE_FILTERS_ID = 'more_filters'\nconst MORE_FILTERS_LABEL = 'More filters'\n\n// =================================\n// ====== Component ================\n// =================================\n\nexport interface FilterDropdownOption {\n id: string\n label: string\n}\n\nexport interface FilterDropdownProps {\n options: FilterDropdownOption[]\n selectedId: string\n onSelect: (id: string) => void\n onMoreFilters: () => void\n triggerLabel: string\n showMoreFilters?: boolean\n /**\n * Widest the trigger may render, in points. Hosts that measure the trigger at its intrinsic\n * width need this for the label to truncate.\n */\n maxWidth?: number\n}\n\nexport function FilterDropdown({\n options,\n selectedId,\n onSelect,\n onMoreFilters,\n triggerLabel,\n showMoreFilters = true,\n maxWidth,\n}: FilterDropdownProps) {\n const styles = useStyles()\n const MenuView = Menu.View ?? PopoverMenuView\n\n const optionActions: MenuAction[] = options.map(option => ({\n id: option.id,\n title: option.label,\n state: option.id === selectedId ? ('on' as const) : ('off' as const),\n }))\n const moreFiltersAction: MenuAction = {\n id: MORE_FILTERS_ID,\n title: '',\n displayInline: true,\n subactions: [{ id: MORE_FILTERS_ID, title: MORE_FILTERS_LABEL }],\n }\n const actions = showMoreFilters ? [...optionActions, moreFiltersAction] : optionActions\n\n const handlePressAction = ({ nativeEvent }: MenuActionEvent) => {\n if (nativeEvent.event === MORE_FILTERS_ID) {\n onMoreFilters()\n } else {\n onSelect(nativeEvent.event)\n }\n }\n\n return (\n <MenuView actions={actions} onPressAction={handlePressAction} style={styles.container}>\n <View\n style={[styles.trigger, maxWidth !== undefined && { maxWidth }]}\n accessible\n accessibilityRole=\"button\"\n accessibilityHint=\"Opens filter options\"\n >\n <Text\n style={styles.triggerLabel}\n numberOfLines={1}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {triggerLabel}\n </Text>\n <Icon\n name=\"general.downChevron\"\n style={styles.triggerIcon}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityElementsHidden\n />\n </View>\n </MenuView>\n )\n}\n\n// =================================\n// ====== Styles ===================\n// =================================\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n container: {\n alignSelf: 'flex-start',\n },\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingVertical: 4,\n },\n triggerLabel: {\n flexShrink: 1,\n fontWeight: platformFontWeightBold,\n color: colors.textColorDefaultPrimary,\n },\n triggerIcon: {\n fontSize: tokens.fontSizeSm,\n color: colors.iconColorDefaultPrimary,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,6 +25,7 @@ export * from './text_inline_button';
|
|
|
25
25
|
export * from './text';
|
|
26
26
|
export * from './toggle_button';
|
|
27
27
|
export * from './filter_dropdown';
|
|
28
|
+
export * from './popover_menu_view';
|
|
28
29
|
export * from './keyboard_scroll_view';
|
|
29
30
|
export * from './keyboard_view';
|
|
30
31
|
export * from './platform_modal_header_buttons';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
|
|
@@ -25,6 +25,7 @@ export * from './text_inline_button';
|
|
|
25
25
|
export * from './text';
|
|
26
26
|
export * from './toggle_button';
|
|
27
27
|
export * from './filter_dropdown';
|
|
28
|
+
export * from './popover_menu_view';
|
|
28
29
|
export * from './keyboard_scroll_view';
|
|
29
30
|
export * from './keyboard_view';
|
|
30
31
|
export * from './platform_modal_header_buttons';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/display/index.ts"],"sourcesContent":["export * from './avatar_group'\nexport * from './avatar'\nexport * from './badge'\nexport * from './conversation_avatar'\nexport * from './emoji_avatar'\nexport * from './icon_avatar'\nexport * from './icon_tile'\nexport * from './banner_collapsible'\nexport * from './banner'\nexport * from './button'\nexport * from './adult_requirement_notice'\nexport * from './child_notice'\nexport * from './heading'\nexport * from './icon_button'\nexport * from './icon'\nexport * from './image'\nexport * from './file_attachment_preview'\nexport * from './image_attachment_preview'\nexport * from './video_attachment_preview'\nexport * from './person'\nexport * from './spinner'\nexport * from './switch'\nexport * from './text_button'\nexport * from './text_inline_button'\nexport * from './text'\nexport * from './toggle_button'\nexport * from './filter_dropdown'\nexport * from './keyboard_scroll_view'\nexport * from './keyboard_view'\nexport * from './platform_modal_header_buttons'\nexport * from './pressable_row'\nexport * from './version_footer'\n"],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,uBAAuB;AACrC,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,aAAa;AAC3B,cAAc,sBAAsB;AACpC,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,4BAA4B;AAC1C,cAAc,gBAAgB;AAC9B,cAAc,WAAW;AACzB,cAAc,eAAe;AAC7B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,2BAA2B;AACzC,cAAc,4BAA4B;AAC1C,cAAc,4BAA4B;AAC1C,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,cAAc,wBAAwB;AACtC,cAAc,iBAAiB;AAC/B,cAAc,iCAAiC;AAC/C,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/display/index.ts"],"sourcesContent":["export * from './avatar_group'\nexport * from './avatar'\nexport * from './badge'\nexport * from './conversation_avatar'\nexport * from './emoji_avatar'\nexport * from './icon_avatar'\nexport * from './icon_tile'\nexport * from './banner_collapsible'\nexport * from './banner'\nexport * from './button'\nexport * from './adult_requirement_notice'\nexport * from './child_notice'\nexport * from './heading'\nexport * from './icon_button'\nexport * from './icon'\nexport * from './image'\nexport * from './file_attachment_preview'\nexport * from './image_attachment_preview'\nexport * from './video_attachment_preview'\nexport * from './person'\nexport * from './spinner'\nexport * from './switch'\nexport * from './text_button'\nexport * from './text_inline_button'\nexport * from './text'\nexport * from './toggle_button'\nexport * from './filter_dropdown'\nexport * from './popover_menu_view'\nexport * from './keyboard_scroll_view'\nexport * from './keyboard_view'\nexport * from './platform_modal_header_buttons'\nexport * from './pressable_row'\nexport * from './version_footer'\n"],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,uBAAuB;AACrC,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,aAAa;AAC3B,cAAc,sBAAsB;AACpC,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,4BAA4B;AAC1C,cAAc,gBAAgB;AAC9B,cAAc,WAAW;AACzB,cAAc,eAAe;AAC7B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,2BAA2B;AACzC,cAAc,4BAA4B;AAC1C,cAAc,4BAA4B;AAC1C,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,cAAc,qBAAqB;AACnC,cAAc,wBAAwB;AACtC,cAAc,iBAAiB;AAC/B,cAAc,iCAAiC;AAC/C,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MenuViewProps } from '../../utils';
|
|
2
|
+
/**
|
|
3
|
+
* A JS-only `MenuView` for hosts that cannot supply a native menu. Wraps the
|
|
4
|
+
* trigger in a pressable and opens a popover of the actions under it, or above
|
|
5
|
+
* it when the trigger sits in the lower half of the window.
|
|
6
|
+
*/
|
|
7
|
+
export declare function PopoverMenuView({ actions, onPressAction, onOpenMenu, onCloseMenu, style, testID, children, }: MenuViewProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=popover_menu_view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover_menu_view.d.ts","sourceRoot":"","sources":["../../../src/components/display/popover_menu_view.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAc,aAAa,EAA+B,MAAM,aAAa,CAAA;AAuDpF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,aAAa,2CAqFf"}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import { clamp } from 'lodash';
|
|
3
|
+
import React, { useRef, useState } from 'react';
|
|
4
|
+
import { Modal, Pressable, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
5
|
+
import { useChatContext } from '../../contexts/chat_context';
|
|
6
|
+
import { useCreateAndroidRippleColor, useFontScale, useTheme } from '../../hooks';
|
|
7
|
+
import { platformPressedOpacityStyle } from '../../utils';
|
|
8
|
+
import { tokens } from '../../vendor/tapestry/tokens';
|
|
9
|
+
import { Icon } from './icon';
|
|
10
|
+
import { Text } from './text';
|
|
11
|
+
|
|
12
|
+
// =================================
|
|
13
|
+
// ====== Constants ================
|
|
14
|
+
// =================================
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
|
+
const MENU_WIDTH = 240;
|
|
17
|
+
const MENU_OFFSET = 4;
|
|
18
|
+
const SCREEN_MARGIN = 16;
|
|
19
|
+
const CLOSED_ANCHOR = {
|
|
20
|
+
x: 0,
|
|
21
|
+
y: 0,
|
|
22
|
+
width: 0,
|
|
23
|
+
height: 0
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// =================================
|
|
27
|
+
// ====== Rows =====================
|
|
28
|
+
// =================================
|
|
29
|
+
|
|
30
|
+
const actionId = action => action.id ?? action.title;
|
|
31
|
+
const visibleActions = actions => actions.filter(action => !action.attributes?.hidden);
|
|
32
|
+
|
|
33
|
+
// Lays the actions out the way the native menus draw them: an inline section's
|
|
34
|
+
// subactions sit at the top level, divided from neighboring rows by a separator.
|
|
35
|
+
const buildRows = actions => {
|
|
36
|
+
const rows = [];
|
|
37
|
+
const pushSeparator = () => {
|
|
38
|
+
if (rows.length > 0 && rows[rows.length - 1].kind !== 'separator') {
|
|
39
|
+
rows.push({
|
|
40
|
+
kind: 'separator'
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
visibleActions(actions).forEach((action, index, visible) => {
|
|
45
|
+
if (action.displayInline && action.subactions) {
|
|
46
|
+
pushSeparator();
|
|
47
|
+
visibleActions(action.subactions).forEach(subaction => rows.push({
|
|
48
|
+
kind: 'action',
|
|
49
|
+
action: subaction
|
|
50
|
+
}));
|
|
51
|
+
if (index < visible.length - 1) pushSeparator();
|
|
52
|
+
} else {
|
|
53
|
+
rows.push({
|
|
54
|
+
kind: 'action',
|
|
55
|
+
action
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return rows;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// =================================
|
|
63
|
+
// ====== Component ================
|
|
64
|
+
// =================================
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A JS-only `MenuView` for hosts that cannot supply a native menu. Wraps the
|
|
68
|
+
* trigger in a pressable and opens a popover of the actions under it, or above
|
|
69
|
+
* it when the trigger sits in the lower half of the window.
|
|
70
|
+
*/
|
|
71
|
+
export function PopoverMenuView(t0) {
|
|
72
|
+
const $ = _c(51);
|
|
73
|
+
const {
|
|
74
|
+
actions,
|
|
75
|
+
onPressAction,
|
|
76
|
+
onOpenMenu,
|
|
77
|
+
onCloseMenu,
|
|
78
|
+
style,
|
|
79
|
+
testID,
|
|
80
|
+
children
|
|
81
|
+
} = t0;
|
|
82
|
+
const triggerRef = useRef(null);
|
|
83
|
+
const [expanded, setExpanded] = useState(false);
|
|
84
|
+
const [anchor, setAnchor] = useState(CLOSED_ANCHOR);
|
|
85
|
+
const {
|
|
86
|
+
edgeToEdge: t1
|
|
87
|
+
} = useChatContext();
|
|
88
|
+
const edgeToEdge = t1 === undefined ? true : t1;
|
|
89
|
+
const {
|
|
90
|
+
width: windowWidth,
|
|
91
|
+
height: windowHeight
|
|
92
|
+
} = useWindowDimensions();
|
|
93
|
+
const fontScale = useFontScale();
|
|
94
|
+
const styles = useStyles();
|
|
95
|
+
let t2;
|
|
96
|
+
if ($[0] !== onOpenMenu) {
|
|
97
|
+
t2 = () => {
|
|
98
|
+
triggerRef.current?.measureInWindow((x, y, width, height) => {
|
|
99
|
+
setAnchor({
|
|
100
|
+
x,
|
|
101
|
+
y,
|
|
102
|
+
width,
|
|
103
|
+
height
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
setExpanded(true);
|
|
107
|
+
onOpenMenu?.();
|
|
108
|
+
};
|
|
109
|
+
$[0] = onOpenMenu;
|
|
110
|
+
$[1] = t2;
|
|
111
|
+
} else {
|
|
112
|
+
t2 = $[1];
|
|
113
|
+
}
|
|
114
|
+
const open = t2;
|
|
115
|
+
let t3;
|
|
116
|
+
if ($[2] !== onCloseMenu) {
|
|
117
|
+
t3 = () => {
|
|
118
|
+
setExpanded(false);
|
|
119
|
+
onCloseMenu?.();
|
|
120
|
+
};
|
|
121
|
+
$[2] = onCloseMenu;
|
|
122
|
+
$[3] = t3;
|
|
123
|
+
} else {
|
|
124
|
+
t3 = $[3];
|
|
125
|
+
}
|
|
126
|
+
const close = t3;
|
|
127
|
+
let t4;
|
|
128
|
+
if ($[4] !== close || $[5] !== onPressAction) {
|
|
129
|
+
t4 = action => {
|
|
130
|
+
onPressAction?.({
|
|
131
|
+
nativeEvent: {
|
|
132
|
+
event: actionId(action)
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
close();
|
|
136
|
+
};
|
|
137
|
+
$[4] = close;
|
|
138
|
+
$[5] = onPressAction;
|
|
139
|
+
$[6] = t4;
|
|
140
|
+
} else {
|
|
141
|
+
t4 = $[6];
|
|
142
|
+
}
|
|
143
|
+
const handlePress = t4;
|
|
144
|
+
const menuWidth = clamp(MENU_WIDTH * fontScale, MENU_WIDTH, windowWidth - SCREEN_MARGIN * 2);
|
|
145
|
+
const anchorBottom = anchor.y + anchor.height;
|
|
146
|
+
const opensUpward = anchor.y + anchor.height / 2 > windowHeight / 2;
|
|
147
|
+
const t5 = anchor.x;
|
|
148
|
+
const t6 = Math.max(SCREEN_MARGIN, windowWidth - menuWidth - SCREEN_MARGIN);
|
|
149
|
+
let t7;
|
|
150
|
+
if ($[7] !== anchor.x || $[8] !== t6) {
|
|
151
|
+
t7 = clamp(t5, SCREEN_MARGIN, t6);
|
|
152
|
+
$[7] = anchor.x;
|
|
153
|
+
$[8] = t6;
|
|
154
|
+
$[9] = t7;
|
|
155
|
+
} else {
|
|
156
|
+
t7 = $[9];
|
|
157
|
+
}
|
|
158
|
+
let t8;
|
|
159
|
+
if ($[10] !== anchor.y || $[11] !== anchorBottom || $[12] !== opensUpward || $[13] !== windowHeight) {
|
|
160
|
+
t8 = opensUpward ? {
|
|
161
|
+
bottom: windowHeight - anchor.y + MENU_OFFSET,
|
|
162
|
+
maxHeight: anchor.y - MENU_OFFSET - SCREEN_MARGIN
|
|
163
|
+
} : {
|
|
164
|
+
top: anchorBottom + MENU_OFFSET,
|
|
165
|
+
maxHeight: windowHeight - anchorBottom - MENU_OFFSET - SCREEN_MARGIN
|
|
166
|
+
};
|
|
167
|
+
$[10] = anchor.y;
|
|
168
|
+
$[11] = anchorBottom;
|
|
169
|
+
$[12] = opensUpward;
|
|
170
|
+
$[13] = windowHeight;
|
|
171
|
+
$[14] = t8;
|
|
172
|
+
} else {
|
|
173
|
+
t8 = $[14];
|
|
174
|
+
}
|
|
175
|
+
let t9;
|
|
176
|
+
if ($[15] !== menuWidth || $[16] !== t7 || $[17] !== t8) {
|
|
177
|
+
t9 = {
|
|
178
|
+
width: menuWidth,
|
|
179
|
+
left: t7,
|
|
180
|
+
...t8
|
|
181
|
+
};
|
|
182
|
+
$[15] = menuWidth;
|
|
183
|
+
$[16] = t7;
|
|
184
|
+
$[17] = t8;
|
|
185
|
+
$[18] = t9;
|
|
186
|
+
} else {
|
|
187
|
+
t9 = $[18];
|
|
188
|
+
}
|
|
189
|
+
const menuPosition = t9;
|
|
190
|
+
let t10;
|
|
191
|
+
if ($[19] !== children || $[20] !== open || $[21] !== style || $[22] !== testID) {
|
|
192
|
+
t10 = /*#__PURE__*/_jsx(Pressable, {
|
|
193
|
+
ref: triggerRef,
|
|
194
|
+
style: style,
|
|
195
|
+
testID: testID,
|
|
196
|
+
onPress: open,
|
|
197
|
+
accessible: false,
|
|
198
|
+
children: children
|
|
199
|
+
});
|
|
200
|
+
$[19] = children;
|
|
201
|
+
$[20] = open;
|
|
202
|
+
$[21] = style;
|
|
203
|
+
$[22] = testID;
|
|
204
|
+
$[23] = t10;
|
|
205
|
+
} else {
|
|
206
|
+
t10 = $[23];
|
|
207
|
+
}
|
|
208
|
+
let t11;
|
|
209
|
+
if ($[24] !== close || $[25] !== styles.scrim) {
|
|
210
|
+
t11 = /*#__PURE__*/_jsx(Pressable, {
|
|
211
|
+
style: styles.scrim,
|
|
212
|
+
onPress: close,
|
|
213
|
+
accessibilityRole: "button",
|
|
214
|
+
accessibilityLabel: "Close menu"
|
|
215
|
+
});
|
|
216
|
+
$[24] = close;
|
|
217
|
+
$[25] = styles.scrim;
|
|
218
|
+
$[26] = t11;
|
|
219
|
+
} else {
|
|
220
|
+
t11 = $[26];
|
|
221
|
+
}
|
|
222
|
+
let t12;
|
|
223
|
+
if ($[27] !== menuPosition || $[28] !== styles.menu) {
|
|
224
|
+
t12 = [styles.menu, menuPosition];
|
|
225
|
+
$[27] = menuPosition;
|
|
226
|
+
$[28] = styles.menu;
|
|
227
|
+
$[29] = t12;
|
|
228
|
+
} else {
|
|
229
|
+
t12 = $[29];
|
|
230
|
+
}
|
|
231
|
+
let t13;
|
|
232
|
+
if ($[30] !== actions || $[31] !== handlePress || $[32] !== styles.separator) {
|
|
233
|
+
let t14;
|
|
234
|
+
if ($[34] !== handlePress || $[35] !== styles.separator) {
|
|
235
|
+
t14 = (row, index) => row.kind === "separator" ? /*#__PURE__*/_jsx(View, {
|
|
236
|
+
style: styles.separator
|
|
237
|
+
}, index) : /*#__PURE__*/_jsx(PopoverMenuItem, {
|
|
238
|
+
action: row.action,
|
|
239
|
+
onPress: () => handlePress(row.action)
|
|
240
|
+
}, index);
|
|
241
|
+
$[34] = handlePress;
|
|
242
|
+
$[35] = styles.separator;
|
|
243
|
+
$[36] = t14;
|
|
244
|
+
} else {
|
|
245
|
+
t14 = $[36];
|
|
246
|
+
}
|
|
247
|
+
t13 = buildRows(actions).map(t14);
|
|
248
|
+
$[30] = actions;
|
|
249
|
+
$[31] = handlePress;
|
|
250
|
+
$[32] = styles.separator;
|
|
251
|
+
$[33] = t13;
|
|
252
|
+
} else {
|
|
253
|
+
t13 = $[33];
|
|
254
|
+
}
|
|
255
|
+
let t14;
|
|
256
|
+
if ($[37] !== t13) {
|
|
257
|
+
t14 = /*#__PURE__*/_jsx(ScrollView, {
|
|
258
|
+
bounces: false,
|
|
259
|
+
children: t13
|
|
260
|
+
});
|
|
261
|
+
$[37] = t13;
|
|
262
|
+
$[38] = t14;
|
|
263
|
+
} else {
|
|
264
|
+
t14 = $[38];
|
|
265
|
+
}
|
|
266
|
+
let t15;
|
|
267
|
+
if ($[39] !== t12 || $[40] !== t14) {
|
|
268
|
+
t15 = /*#__PURE__*/_jsx(View, {
|
|
269
|
+
style: t12,
|
|
270
|
+
accessibilityRole: "menu",
|
|
271
|
+
children: t14
|
|
272
|
+
});
|
|
273
|
+
$[39] = t12;
|
|
274
|
+
$[40] = t14;
|
|
275
|
+
$[41] = t15;
|
|
276
|
+
} else {
|
|
277
|
+
t15 = $[41];
|
|
278
|
+
}
|
|
279
|
+
let t16;
|
|
280
|
+
if ($[42] !== close || $[43] !== edgeToEdge || $[44] !== expanded || $[45] !== t11 || $[46] !== t15) {
|
|
281
|
+
t16 = /*#__PURE__*/_jsxs(Modal, {
|
|
282
|
+
visible: expanded,
|
|
283
|
+
transparent: true,
|
|
284
|
+
animationType: "fade",
|
|
285
|
+
statusBarTranslucent: edgeToEdge,
|
|
286
|
+
navigationBarTranslucent: edgeToEdge,
|
|
287
|
+
onRequestClose: close,
|
|
288
|
+
children: [t11, t15]
|
|
289
|
+
});
|
|
290
|
+
$[42] = close;
|
|
291
|
+
$[43] = edgeToEdge;
|
|
292
|
+
$[44] = expanded;
|
|
293
|
+
$[45] = t11;
|
|
294
|
+
$[46] = t15;
|
|
295
|
+
$[47] = t16;
|
|
296
|
+
} else {
|
|
297
|
+
t16 = $[47];
|
|
298
|
+
}
|
|
299
|
+
let t17;
|
|
300
|
+
if ($[48] !== t10 || $[49] !== t16) {
|
|
301
|
+
t17 = /*#__PURE__*/_jsxs(_Fragment, {
|
|
302
|
+
children: [t10, t16]
|
|
303
|
+
});
|
|
304
|
+
$[48] = t10;
|
|
305
|
+
$[49] = t16;
|
|
306
|
+
$[50] = t17;
|
|
307
|
+
} else {
|
|
308
|
+
t17 = $[50];
|
|
309
|
+
}
|
|
310
|
+
return t17;
|
|
311
|
+
}
|
|
312
|
+
function PopoverMenuItem(t0) {
|
|
313
|
+
const $ = _c(25);
|
|
314
|
+
const {
|
|
315
|
+
action,
|
|
316
|
+
onPress
|
|
317
|
+
} = t0;
|
|
318
|
+
const styles = useStyles();
|
|
319
|
+
const {
|
|
320
|
+
colors
|
|
321
|
+
} = useTheme();
|
|
322
|
+
let t1;
|
|
323
|
+
if ($[0] !== colors.fillColorNeutral050Base) {
|
|
324
|
+
t1 = {
|
|
325
|
+
color: colors.fillColorNeutral050Base
|
|
326
|
+
};
|
|
327
|
+
$[0] = colors.fillColorNeutral050Base;
|
|
328
|
+
$[1] = t1;
|
|
329
|
+
} else {
|
|
330
|
+
t1 = $[1];
|
|
331
|
+
}
|
|
332
|
+
const androidRippleColor = useCreateAndroidRippleColor(t1);
|
|
333
|
+
const selected = action.state === "on";
|
|
334
|
+
const disabled = action.attributes?.disabled === true;
|
|
335
|
+
let t2;
|
|
336
|
+
if ($[2] !== disabled || $[3] !== styles.item || $[4] !== styles.itemDisabled) {
|
|
337
|
+
t2 = t3 => {
|
|
338
|
+
const {
|
|
339
|
+
pressed
|
|
340
|
+
} = t3;
|
|
341
|
+
return [styles.item, pressed && platformPressedOpacityStyle, disabled && styles.itemDisabled];
|
|
342
|
+
};
|
|
343
|
+
$[2] = disabled;
|
|
344
|
+
$[3] = styles.item;
|
|
345
|
+
$[4] = styles.itemDisabled;
|
|
346
|
+
$[5] = t2;
|
|
347
|
+
} else {
|
|
348
|
+
t2 = $[5];
|
|
349
|
+
}
|
|
350
|
+
let t3;
|
|
351
|
+
if ($[6] !== disabled || $[7] !== selected) {
|
|
352
|
+
t3 = {
|
|
353
|
+
selected,
|
|
354
|
+
disabled
|
|
355
|
+
};
|
|
356
|
+
$[6] = disabled;
|
|
357
|
+
$[7] = selected;
|
|
358
|
+
$[8] = t3;
|
|
359
|
+
} else {
|
|
360
|
+
t3 = $[8];
|
|
361
|
+
}
|
|
362
|
+
let t4;
|
|
363
|
+
if ($[9] !== androidRippleColor) {
|
|
364
|
+
t4 = {
|
|
365
|
+
color: androidRippleColor,
|
|
366
|
+
borderless: false,
|
|
367
|
+
foreground: true
|
|
368
|
+
};
|
|
369
|
+
$[9] = androidRippleColor;
|
|
370
|
+
$[10] = t4;
|
|
371
|
+
} else {
|
|
372
|
+
t4 = $[10];
|
|
373
|
+
}
|
|
374
|
+
let t5;
|
|
375
|
+
if ($[11] !== action.title || $[12] !== styles.itemLabel) {
|
|
376
|
+
t5 = /*#__PURE__*/_jsx(Text, {
|
|
377
|
+
style: styles.itemLabel,
|
|
378
|
+
children: action.title
|
|
379
|
+
});
|
|
380
|
+
$[11] = action.title;
|
|
381
|
+
$[12] = styles.itemLabel;
|
|
382
|
+
$[13] = t5;
|
|
383
|
+
} else {
|
|
384
|
+
t5 = $[13];
|
|
385
|
+
}
|
|
386
|
+
let t6;
|
|
387
|
+
if ($[14] !== selected || $[15] !== styles.itemCheck) {
|
|
388
|
+
t6 = selected && /*#__PURE__*/_jsx(Icon, {
|
|
389
|
+
name: "general.check",
|
|
390
|
+
style: styles.itemCheck,
|
|
391
|
+
accessibilityElementsHidden: true
|
|
392
|
+
});
|
|
393
|
+
$[14] = selected;
|
|
394
|
+
$[15] = styles.itemCheck;
|
|
395
|
+
$[16] = t6;
|
|
396
|
+
} else {
|
|
397
|
+
t6 = $[16];
|
|
398
|
+
}
|
|
399
|
+
let t7;
|
|
400
|
+
if ($[17] !== disabled || $[18] !== onPress || $[19] !== t2 || $[20] !== t3 || $[21] !== t4 || $[22] !== t5 || $[23] !== t6) {
|
|
401
|
+
t7 = /*#__PURE__*/_jsxs(Pressable, {
|
|
402
|
+
style: t2,
|
|
403
|
+
onPress: onPress,
|
|
404
|
+
disabled: disabled,
|
|
405
|
+
accessibilityRole: "menuitem",
|
|
406
|
+
accessibilityState: t3,
|
|
407
|
+
android_ripple: t4,
|
|
408
|
+
children: [t5, t6]
|
|
409
|
+
});
|
|
410
|
+
$[17] = disabled;
|
|
411
|
+
$[18] = onPress;
|
|
412
|
+
$[19] = t2;
|
|
413
|
+
$[20] = t3;
|
|
414
|
+
$[21] = t4;
|
|
415
|
+
$[22] = t5;
|
|
416
|
+
$[23] = t6;
|
|
417
|
+
$[24] = t7;
|
|
418
|
+
} else {
|
|
419
|
+
t7 = $[24];
|
|
420
|
+
}
|
|
421
|
+
return t7;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// =================================
|
|
425
|
+
// ====== Styles ===================
|
|
426
|
+
// =================================
|
|
427
|
+
|
|
428
|
+
const useStyles = () => {
|
|
429
|
+
const $ = _c(4);
|
|
430
|
+
const {
|
|
431
|
+
colors
|
|
432
|
+
} = useTheme();
|
|
433
|
+
let t0;
|
|
434
|
+
if ($[0] !== colors.fillColorNeutral050Base || $[1] !== colors.fillColorNeutral100Inverted || $[2] !== colors.interaction) {
|
|
435
|
+
t0 = StyleSheet.create({
|
|
436
|
+
scrim: {
|
|
437
|
+
...StyleSheet.absoluteFill
|
|
438
|
+
},
|
|
439
|
+
menu: {
|
|
440
|
+
position: "absolute",
|
|
441
|
+
paddingVertical: 4,
|
|
442
|
+
borderRadius: 8,
|
|
443
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
444
|
+
borderColor: colors.fillColorNeutral050Base,
|
|
445
|
+
backgroundColor: colors.fillColorNeutral100Inverted,
|
|
446
|
+
boxShadow: "0px 4px 12px rgba(0, 0, 0, 0.15)",
|
|
447
|
+
elevation: 4,
|
|
448
|
+
overflow: "hidden"
|
|
449
|
+
},
|
|
450
|
+
item: {
|
|
451
|
+
flexDirection: "row",
|
|
452
|
+
alignItems: "center",
|
|
453
|
+
gap: 12,
|
|
454
|
+
paddingHorizontal: 16,
|
|
455
|
+
paddingVertical: 12
|
|
456
|
+
},
|
|
457
|
+
itemDisabled: {
|
|
458
|
+
opacity: 0.4
|
|
459
|
+
},
|
|
460
|
+
itemLabel: {
|
|
461
|
+
flex: 1
|
|
462
|
+
},
|
|
463
|
+
itemCheck: {
|
|
464
|
+
fontSize: tokens.fontSizeSm,
|
|
465
|
+
color: colors.interaction
|
|
466
|
+
},
|
|
467
|
+
separator: {
|
|
468
|
+
height: StyleSheet.hairlineWidth,
|
|
469
|
+
marginVertical: 4,
|
|
470
|
+
backgroundColor: colors.fillColorNeutral050Base
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
$[0] = colors.fillColorNeutral050Base;
|
|
474
|
+
$[1] = colors.fillColorNeutral100Inverted;
|
|
475
|
+
$[2] = colors.interaction;
|
|
476
|
+
$[3] = t0;
|
|
477
|
+
} else {
|
|
478
|
+
t0 = $[3];
|
|
479
|
+
}
|
|
480
|
+
return t0;
|
|
481
|
+
};
|
|
482
|
+
//# sourceMappingURL=popover_menu_view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover_menu_view.js","names":["clamp","React","useRef","useState","Modal","Pressable","ScrollView","StyleSheet","useWindowDimensions","View","useChatContext","useCreateAndroidRippleColor","useFontScale","useTheme","platformPressedOpacityStyle","tokens","Icon","Text","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MENU_WIDTH","MENU_OFFSET","SCREEN_MARGIN","CLOSED_ANCHOR","x","y","width","height","actionId","action","id","title","visibleActions","actions","filter","attributes","hidden","buildRows","rows","pushSeparator","length","kind","push","forEach","index","visible","displayInline","subactions","subaction","PopoverMenuView","t0","$","_c","onPressAction","onOpenMenu","onCloseMenu","style","testID","children","triggerRef","expanded","setExpanded","anchor","setAnchor","edgeToEdge","t1","undefined","windowWidth","windowHeight","fontScale","styles","useStyles","t2","current","measureInWindow","open","t3","close","t4","nativeEvent","event","handlePress","menuWidth","anchorBottom","opensUpward","t5","t6","Math","max","t7","t8","bottom","maxHeight","top","t9","left","menuPosition","t10","accessible","t11","scrim","accessibilityRole","accessibilityLabel","t12","menu","t13","separator","t14","row","PopoverMenuItem","onPress","map","bounces","t15","t16","transparent","animationType","t17","colors","fillColorNeutral050Base","color","androidRippleColor","selected","state","disabled","item","itemDisabled","pressed","borderless","foreground","itemLabel","itemCheck","name","accessibilityElementsHidden","accessibilityState","android_ripple","fillColorNeutral100Inverted","interaction","create","absoluteFill","position","paddingVertical","borderRadius","borderWidth","hairlineWidth","borderColor","backgroundColor","boxShadow","elevation","overflow","flexDirection","alignItems","gap","paddingHorizontal","opacity","flex","fontSize","fontSizeSm","marginVertical"],"sources":["../../../src/components/display/popover_menu_view.tsx"],"sourcesContent":["import { clamp } from 'lodash'\nimport React, { useRef, useState } from 'react'\nimport { Modal, Pressable, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useChatContext } from '../../contexts/chat_context'\nimport { useCreateAndroidRippleColor, useFontScale, useTheme } from '../../hooks'\nimport { MenuAction, MenuViewProps, platformPressedOpacityStyle } from '../../utils'\nimport { tokens } from '../../vendor/tapestry/tokens'\nimport { Icon } from './icon'\nimport { Text } from './text'\n\n// =================================\n// ====== Constants ================\n// =================================\n\nconst MENU_WIDTH = 240\nconst MENU_OFFSET = 4\nconst SCREEN_MARGIN = 16\n\nconst CLOSED_ANCHOR = { x: 0, y: 0, width: 0, height: 0 }\n\n// =================================\n// ====== Rows =====================\n// =================================\n\ntype Row = { kind: 'action'; action: MenuAction } | { kind: 'separator' }\n\nconst actionId = (action: MenuAction) => action.id ?? action.title\n\nconst visibleActions = (actions: MenuAction[]) =>\n actions.filter(action => !action.attributes?.hidden)\n\n// Lays the actions out the way the native menus draw them: an inline section's\n// subactions sit at the top level, divided from neighboring rows by a separator.\nconst buildRows = (actions: MenuAction[]): Row[] => {\n const rows: Row[] = []\n const pushSeparator = () => {\n if (rows.length > 0 && rows[rows.length - 1].kind !== 'separator') {\n rows.push({ kind: 'separator' })\n }\n }\n\n visibleActions(actions).forEach((action, index, visible) => {\n if (action.displayInline && action.subactions) {\n pushSeparator()\n visibleActions(action.subactions).forEach(subaction =>\n rows.push({ kind: 'action', action: subaction })\n )\n if (index < visible.length - 1) pushSeparator()\n } else {\n rows.push({ kind: 'action', action })\n }\n })\n\n return rows\n}\n\n// =================================\n// ====== Component ================\n// =================================\n\n/**\n * A JS-only `MenuView` for hosts that cannot supply a native menu. Wraps the\n * trigger in a pressable and opens a popover of the actions under it, or above\n * it when the trigger sits in the lower half of the window.\n */\nexport function PopoverMenuView({\n actions,\n onPressAction,\n onOpenMenu,\n onCloseMenu,\n style,\n testID,\n children,\n}: MenuViewProps) {\n const triggerRef = useRef<View>(null)\n const [expanded, setExpanded] = useState(false)\n const [anchor, setAnchor] = useState(CLOSED_ANCHOR)\n const { edgeToEdge = true } = useChatContext()\n const { width: windowWidth, height: windowHeight } = useWindowDimensions()\n const fontScale = useFontScale()\n const styles = useStyles()\n\n const open = () => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height })\n })\n setExpanded(true)\n onOpenMenu?.()\n }\n\n const close = () => {\n setExpanded(false)\n onCloseMenu?.()\n }\n\n const handlePress = (action: MenuAction) => {\n onPressAction?.({ nativeEvent: { event: actionId(action) } })\n close()\n }\n\n const menuWidth = clamp(MENU_WIDTH * fontScale, MENU_WIDTH, windowWidth - SCREEN_MARGIN * 2)\n const anchorBottom = anchor.y + anchor.height\n const opensUpward = anchor.y + anchor.height / 2 > windowHeight / 2\n const menuPosition = {\n width: menuWidth,\n left: clamp(\n anchor.x,\n SCREEN_MARGIN,\n Math.max(SCREEN_MARGIN, windowWidth - menuWidth - SCREEN_MARGIN)\n ),\n ...(opensUpward\n ? {\n bottom: windowHeight - anchor.y + MENU_OFFSET,\n maxHeight: anchor.y - MENU_OFFSET - SCREEN_MARGIN,\n }\n : {\n top: anchorBottom + MENU_OFFSET,\n maxHeight: windowHeight - anchorBottom - MENU_OFFSET - SCREEN_MARGIN,\n }),\n }\n\n return (\n <>\n <Pressable ref={triggerRef} style={style} testID={testID} onPress={open} accessible={false}>\n {children}\n </Pressable>\n <Modal\n visible={expanded}\n transparent\n animationType=\"fade\"\n statusBarTranslucent={edgeToEdge}\n navigationBarTranslucent={edgeToEdge}\n onRequestClose={close}\n >\n <Pressable\n style={styles.scrim}\n onPress={close}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close menu\"\n />\n <View style={[styles.menu, menuPosition]} accessibilityRole=\"menu\">\n <ScrollView bounces={false}>\n {buildRows(actions).map((row, index) =>\n row.kind === 'separator' ? (\n <View key={index} style={styles.separator} />\n ) : (\n <PopoverMenuItem\n key={index}\n action={row.action}\n onPress={() => handlePress(row.action)}\n />\n )\n )}\n </ScrollView>\n </View>\n </Modal>\n </>\n )\n}\n\ninterface PopoverMenuItemProps {\n action: MenuAction\n onPress: () => void\n}\n\nfunction PopoverMenuItem({ action, onPress }: PopoverMenuItemProps) {\n const styles = useStyles()\n const { colors } = useTheme()\n const androidRippleColor = useCreateAndroidRippleColor({ color: colors.fillColorNeutral050Base })\n const selected = action.state === 'on'\n const disabled = action.attributes?.disabled === true\n\n return (\n <Pressable\n style={({ pressed }) => [\n styles.item,\n pressed && platformPressedOpacityStyle,\n disabled && styles.itemDisabled,\n ]}\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"menuitem\"\n accessibilityState={{ selected, disabled }}\n android_ripple={{ color: androidRippleColor, borderless: false, foreground: true }}\n >\n <Text style={styles.itemLabel}>{action.title}</Text>\n {selected && (\n <Icon name=\"general.check\" style={styles.itemCheck} accessibilityElementsHidden />\n )}\n </Pressable>\n )\n}\n\n// =================================\n// ====== Styles ===================\n// =================================\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n scrim: {\n ...StyleSheet.absoluteFill,\n },\n menu: {\n position: 'absolute',\n paddingVertical: 4,\n borderRadius: 8,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: colors.fillColorNeutral050Base,\n backgroundColor: colors.fillColorNeutral100Inverted,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n elevation: 4,\n overflow: 'hidden',\n },\n item: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n itemDisabled: {\n opacity: 0.4,\n },\n itemLabel: {\n flex: 1,\n },\n itemCheck: {\n fontSize: tokens.fontSizeSm,\n color: colors.interaction,\n },\n separator: {\n height: StyleSheet.hairlineWidth,\n marginVertical: 4,\n backgroundColor: colors.fillColorNeutral050Base,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
|