@plasmicapp/react-web 0.2.201 → 0.2.202
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/dist/all.d.ts +1926 -1925
- package/dist/auth/PlasmicPageGuard.d.ts +11 -11
- package/dist/common.d.ts +10 -10
- package/dist/data-sources/index.d.ts +1 -1
- package/dist/host/index.d.ts +1 -1
- package/dist/index-common.d.ts +18 -18
- package/dist/index-skinny.d.ts +1 -1
- package/dist/index.cjs.js +3495 -3495
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/plume/button/index.d.ts +36 -36
- package/dist/plume/checkbox/index.d.ts +47 -47
- package/dist/plume/collection-utils.d.ts +191 -191
- package/dist/plume/collection-utils.spec.d.ts +1 -1
- package/dist/plume/menu/context.d.ts +8 -8
- package/dist/plume/menu/index.d.ts +3 -3
- package/dist/plume/menu/menu-group.d.ts +23 -23
- package/dist/plume/menu/menu-item.d.ts +23 -23
- package/dist/plume/menu/menu.d.ts +39 -39
- package/dist/plume/menu-button/DropdownMenu.d.ts +34 -34
- package/dist/plume/menu-button/index.d.ts +2 -2
- package/dist/plume/menu-button/menu-button.d.ts +72 -72
- package/dist/plume/menu-button/menu-trigger.d.ts +21 -21
- package/dist/plume/plume-utils.d.ts +41 -41
- package/dist/plume/props-utils.d.ts +15 -15
- package/dist/plume/select/context.d.ts +3 -3
- package/dist/plume/select/index.d.ts +4 -4
- package/dist/plume/select/select-option-group.d.ts +23 -23
- package/dist/plume/select/select-option.d.ts +23 -23
- package/dist/plume/select/select.d.ts +111 -111
- package/dist/plume/switch/index.d.ts +39 -39
- package/dist/plume/text-input/index.d.ts +36 -36
- package/dist/plume/triggered-overlay/context.d.ts +14 -14
- package/dist/plume/triggered-overlay/index.d.ts +2 -2
- package/dist/plume/triggered-overlay/triggered-overlay.d.ts +24 -24
- package/dist/query/index.d.ts +1 -1
- package/dist/react-utils.d.ts +21 -21
- package/dist/react-utils.spec.d.ts +1 -1
- package/dist/react-web.esm.js +3496 -3496
- package/dist/react-web.esm.js.map +1 -1
- package/dist/render/PlasmicHead/index.d.ts +37 -37
- package/dist/render/PlasmicIcon.d.ts +4 -4
- package/dist/render/PlasmicImg/index.d.ts +81 -81
- package/dist/render/PlasmicLink.d.ts +2 -2
- package/dist/render/PlasmicSlot.d.ts +11 -11
- package/dist/render/Stack.d.ts +51 -51
- package/dist/render/elements.d.ts +74 -74
- package/dist/render/global-variants.d.ts +1 -1
- package/dist/render/screen-variants.d.ts +5 -5
- package/dist/render/ssr.d.ts +21 -21
- package/dist/render/translation.d.ts +19 -19
- package/dist/render/triggers.d.ts +39 -39
- package/dist/states/errors.d.ts +13 -13
- package/dist/states/graph.d.ts +25 -25
- package/dist/states/helpers.d.ts +43 -43
- package/dist/states/index.d.ts +4 -4
- package/dist/states/types.d.ts +66 -66
- package/dist/states/valtio.d.ts +10 -10
- package/dist/states/vanilla.d.ts +3 -3
- package/dist/stories/PlasmicImg.stories.d.ts +6 -6
- package/dist/stories/UseDollarState.stories.d.ts +78 -78
- package/lib/data-sources/index.d.ts +1 -1
- package/lib/host/index.d.ts +1 -1
- package/lib/query/index.d.ts +1 -1
- package/package.json +8 -9
- package/skinny/dist/auth/PlasmicPageGuard.d.ts +11 -11
- package/skinny/dist/{collection-utils-0967eaf0.js → collection-utils-2f28e4eb.js} +297 -297
- package/skinny/dist/{collection-utils-0967eaf0.js.map → collection-utils-2f28e4eb.js.map} +1 -1
- package/skinny/dist/{common-9d6d348d.js → common-ed411407.js} +130 -130
- package/skinny/dist/{common-9d6d348d.js.map → common-ed411407.js.map} +1 -1
- package/skinny/dist/common.d.ts +10 -10
- package/skinny/dist/data-sources/index.d.ts +1 -1
- package/skinny/dist/host/index.d.ts +1 -1
- package/skinny/dist/index-common.d.ts +18 -18
- package/skinny/dist/index-skinny.d.ts +1 -1
- package/skinny/dist/index.d.ts +11 -11
- package/skinny/dist/index.js +1559 -1559
- package/skinny/dist/index.js.map +1 -1
- package/skinny/dist/plume/button/index.d.ts +36 -36
- package/skinny/dist/plume/button/index.js +21 -21
- package/skinny/dist/plume/checkbox/index.d.ts +47 -47
- package/skinny/dist/plume/checkbox/index.js +64 -64
- package/skinny/dist/plume/collection-utils.d.ts +191 -191
- package/skinny/dist/plume/collection-utils.spec.d.ts +1 -1
- package/skinny/dist/plume/menu/context.d.ts +8 -8
- package/skinny/dist/plume/menu/index.d.ts +3 -3
- package/skinny/dist/plume/menu/index.js +165 -165
- package/skinny/dist/plume/menu/menu-group.d.ts +23 -23
- package/skinny/dist/plume/menu/menu-item.d.ts +23 -23
- package/skinny/dist/plume/menu/menu.d.ts +39 -39
- package/skinny/dist/plume/menu-button/DropdownMenu.d.ts +34 -34
- package/skinny/dist/plume/menu-button/index.d.ts +2 -2
- package/skinny/dist/plume/menu-button/index.js +125 -125
- package/skinny/dist/plume/menu-button/index.js.map +1 -1
- package/skinny/dist/plume/menu-button/menu-button.d.ts +72 -72
- package/skinny/dist/plume/menu-button/menu-trigger.d.ts +21 -21
- package/skinny/dist/plume/plume-utils.d.ts +41 -41
- package/skinny/dist/plume/props-utils.d.ts +15 -15
- package/skinny/dist/plume/select/context.d.ts +3 -3
- package/skinny/dist/plume/select/index.d.ts +4 -4
- package/skinny/dist/plume/select/index.js +250 -250
- package/skinny/dist/plume/select/index.js.map +1 -1
- package/skinny/dist/plume/select/select-option-group.d.ts +23 -23
- package/skinny/dist/plume/select/select-option.d.ts +23 -23
- package/skinny/dist/plume/select/select.d.ts +111 -111
- package/skinny/dist/plume/switch/index.d.ts +39 -39
- package/skinny/dist/plume/switch/index.js +61 -61
- package/skinny/dist/plume/text-input/index.d.ts +36 -36
- package/skinny/dist/plume/text-input/index.js +45 -45
- package/skinny/dist/plume/triggered-overlay/context.d.ts +14 -14
- package/skinny/dist/plume/triggered-overlay/index.d.ts +2 -2
- package/skinny/dist/plume/triggered-overlay/index.js +100 -100
- package/skinny/dist/plume/triggered-overlay/index.js.map +1 -1
- package/skinny/dist/plume/triggered-overlay/triggered-overlay.d.ts +24 -24
- package/skinny/dist/{plume-utils-7d68bcc0.js → plume-utils-e699cd08.js} +30 -30
- package/skinny/dist/{plume-utils-7d68bcc0.js.map → plume-utils-e699cd08.js.map} +1 -1
- package/skinny/dist/{props-utils-9f9c761a.js → props-utils-9d74371f.js} +4 -4
- package/skinny/dist/{props-utils-9f9c761a.js.map → props-utils-9d74371f.js.map} +1 -1
- package/skinny/dist/query/index.d.ts +1 -1
- package/skinny/dist/{react-utils-ee4e03ba.js → react-utils-5ff031c2.js} +195 -195
- package/skinny/dist/{react-utils-ee4e03ba.js.map → react-utils-5ff031c2.js.map} +1 -1
- package/skinny/dist/react-utils.d.ts +21 -21
- package/skinny/dist/react-utils.spec.d.ts +1 -1
- package/skinny/dist/render/PlasmicHead/index.d.ts +37 -37
- package/skinny/dist/render/PlasmicHead/index.js +54 -54
- package/skinny/dist/render/PlasmicIcon.d.ts +4 -4
- package/skinny/dist/render/PlasmicImg/index.d.ts +81 -81
- package/skinny/dist/render/PlasmicImg/index.js +297 -297
- package/skinny/dist/render/PlasmicLink.d.ts +2 -2
- package/skinny/dist/render/PlasmicSlot.d.ts +11 -11
- package/skinny/dist/render/Stack.d.ts +51 -51
- package/skinny/dist/render/elements.d.ts +74 -74
- package/skinny/dist/render/global-variants.d.ts +1 -1
- package/skinny/dist/render/screen-variants.d.ts +5 -5
- package/skinny/dist/render/ssr.d.ts +21 -21
- package/skinny/dist/render/translation.d.ts +19 -19
- package/skinny/dist/render/triggers.d.ts +39 -39
- package/skinny/dist/{ssr-c9834f50.js → ssr-8625df04.js} +107 -107
- package/skinny/dist/{ssr-c9834f50.js.map → ssr-8625df04.js.map} +1 -1
- package/skinny/dist/states/errors.d.ts +13 -13
- package/skinny/dist/states/graph.d.ts +25 -25
- package/skinny/dist/states/helpers.d.ts +43 -43
- package/skinny/dist/states/index.d.ts +4 -4
- package/skinny/dist/states/types.d.ts +66 -66
- package/skinny/dist/states/valtio.d.ts +10 -10
- package/skinny/dist/states/vanilla.d.ts +3 -3
- package/skinny/dist/stories/PlasmicImg.stories.d.ts +6 -6
- package/skinny/dist/stories/UseDollarState.stories.d.ts +78 -78
|
@@ -1,143 +1,143 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useMenuTriggerState } from '@react-stately/menu';
|
|
3
|
-
import { m as mergeProps } from '../../react-utils-
|
|
3
|
+
import { m as mergeProps } from '../../react-utils-5ff031c2.js';
|
|
4
4
|
import { T as TriggeredOverlayContext } from '../../context-034b8d25.js';
|
|
5
|
-
import { b as __assign, p as pick, d as __spreadArray, e as __read } from '../../common-
|
|
5
|
+
import { b as __assign, p as pick, d as __spreadArray, e as __read } from '../../common-ed411407.js';
|
|
6
6
|
import { useMenuTrigger as useMenuTrigger$1 } from '@react-aria/menu';
|
|
7
7
|
import { usePress } from '@react-aria/interactions';
|
|
8
|
-
import { g as getPlumeType, m as mergeVariantToggles } from '../../plume-utils-
|
|
8
|
+
import { g as getPlumeType, m as mergeVariantToggles } from '../../plume-utils-e699cd08.js';
|
|
9
9
|
import { useFocusable } from '@react-aria/focus';
|
|
10
|
-
import { a as useEnsureSSRProvider } from '../../ssr-
|
|
11
|
-
import { g as getStyleProps } from '../../props-utils-
|
|
10
|
+
import { a as useEnsureSSRProvider } from '../../ssr-8625df04.js';
|
|
11
|
+
import { g as getStyleProps } from '../../props-utils-9d74371f.js';
|
|
12
12
|
import 'classnames';
|
|
13
13
|
import '@plasmicapp/data-sources-context';
|
|
14
14
|
import '@react-aria/ssr';
|
|
15
15
|
import '../../render/PlasmicHead/index.js';
|
|
16
16
|
|
|
17
|
-
/**
|
|
18
|
-
* A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,
|
|
19
|
-
* useOverlayPosition, useOverlay, and usePress
|
|
20
|
-
*/
|
|
21
|
-
function useMenuTrigger(opts, state) {
|
|
22
|
-
var triggerRef = opts.triggerRef, isDisabled = opts.isDisabled, placement = opts.placement, menuMatchTriggerWidth = opts.menuMatchTriggerWidth, menuWidth = opts.menuWidth, menu = opts.menu;
|
|
23
|
-
var _a = useMenuTrigger$1({
|
|
24
|
-
type: "menu",
|
|
25
|
-
isDisabled: isDisabled
|
|
26
|
-
}, state, triggerRef), triggerPressProps = _a.menuTriggerProps, menuProps = _a.menuProps;
|
|
27
|
-
var triggerProps = usePress(__assign(__assign({}, triggerPressProps), { isDisabled: isDisabled })).pressProps;
|
|
28
|
-
var makeMenu = function () {
|
|
29
|
-
var realMenu = typeof menu === "function" ? menu() : menu;
|
|
30
|
-
if (!realMenu) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
if (getPlumeType(realMenu) !== "menu") {
|
|
34
|
-
{
|
|
35
|
-
throw new Error("Must use an instance of the Menu component.");
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));
|
|
39
|
-
};
|
|
40
|
-
var triggerContext = React.useMemo(function () {
|
|
41
|
-
var _a;
|
|
42
|
-
return ({
|
|
43
|
-
triggerRef: triggerRef,
|
|
44
|
-
state: state,
|
|
45
|
-
autoFocus: (_a = state.focusStrategy) !== null && _a !== void 0 ? _a : true,
|
|
46
|
-
placement: placement,
|
|
47
|
-
overlayMatchTriggerWidth: menuMatchTriggerWidth,
|
|
48
|
-
overlayMinTriggerWidth: true,
|
|
49
|
-
overlayWidth: menuWidth
|
|
50
|
-
});
|
|
51
|
-
}, [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]);
|
|
52
|
-
return {
|
|
53
|
-
triggerProps: triggerProps,
|
|
54
|
-
makeMenu: makeMenu,
|
|
55
|
-
triggerContext: triggerContext
|
|
56
|
-
};
|
|
17
|
+
/**
|
|
18
|
+
* A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,
|
|
19
|
+
* useOverlayPosition, useOverlay, and usePress
|
|
20
|
+
*/
|
|
21
|
+
function useMenuTrigger(opts, state) {
|
|
22
|
+
var triggerRef = opts.triggerRef, isDisabled = opts.isDisabled, placement = opts.placement, menuMatchTriggerWidth = opts.menuMatchTriggerWidth, menuWidth = opts.menuWidth, menu = opts.menu;
|
|
23
|
+
var _a = useMenuTrigger$1({
|
|
24
|
+
type: "menu",
|
|
25
|
+
isDisabled: isDisabled,
|
|
26
|
+
}, state, triggerRef), triggerPressProps = _a.menuTriggerProps, menuProps = _a.menuProps;
|
|
27
|
+
var triggerProps = usePress(__assign(__assign({}, triggerPressProps), { isDisabled: isDisabled })).pressProps;
|
|
28
|
+
var makeMenu = function () {
|
|
29
|
+
var realMenu = typeof menu === "function" ? menu() : menu;
|
|
30
|
+
if (!realMenu) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (getPlumeType(realMenu) !== "menu") {
|
|
34
|
+
{
|
|
35
|
+
throw new Error("Must use an instance of the Menu component.");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));
|
|
39
|
+
};
|
|
40
|
+
var triggerContext = React.useMemo(function () {
|
|
41
|
+
var _a;
|
|
42
|
+
return ({
|
|
43
|
+
triggerRef: triggerRef,
|
|
44
|
+
state: state,
|
|
45
|
+
autoFocus: (_a = state.focusStrategy) !== null && _a !== void 0 ? _a : true,
|
|
46
|
+
placement: placement,
|
|
47
|
+
overlayMatchTriggerWidth: menuMatchTriggerWidth,
|
|
48
|
+
overlayMinTriggerWidth: true,
|
|
49
|
+
overlayWidth: menuWidth,
|
|
50
|
+
});
|
|
51
|
+
}, [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]);
|
|
52
|
+
return {
|
|
53
|
+
triggerProps: triggerProps,
|
|
54
|
+
makeMenu: makeMenu,
|
|
55
|
+
triggerContext: triggerContext,
|
|
56
|
+
};
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
function DropdownMenu(props) {
|
|
60
|
-
var isOpen = props.isOpen, defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, children = props.children, placement = props.placement, menu = props.menu;
|
|
61
|
-
var triggerRef = React.useRef(null);
|
|
62
|
-
var state = useMenuTriggerState({
|
|
63
|
-
isOpen: isOpen,
|
|
64
|
-
defaultOpen: defaultOpen,
|
|
65
|
-
onOpenChange: onOpenChange,
|
|
66
|
-
shouldFlip: true
|
|
67
|
-
});
|
|
68
|
-
var _a = useMenuTrigger({
|
|
69
|
-
triggerRef: triggerRef,
|
|
70
|
-
placement: placement,
|
|
71
|
-
menu: menu
|
|
72
|
-
}, state), triggerProps = _a.triggerProps, makeMenu = _a.makeMenu, triggerContext = _a.triggerContext;
|
|
73
|
-
return (React.createElement(TriggeredOverlayContext.Provider, { value: triggerContext },
|
|
74
|
-
React.cloneElement(children, mergeProps(children.props, triggerProps, { ref: triggerRef })),
|
|
75
|
-
state.isOpen && makeMenu()));
|
|
59
|
+
function DropdownMenu(props) {
|
|
60
|
+
var isOpen = props.isOpen, defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, children = props.children, placement = props.placement, menu = props.menu;
|
|
61
|
+
var triggerRef = React.useRef(null);
|
|
62
|
+
var state = useMenuTriggerState({
|
|
63
|
+
isOpen: isOpen,
|
|
64
|
+
defaultOpen: defaultOpen,
|
|
65
|
+
onOpenChange: onOpenChange,
|
|
66
|
+
shouldFlip: true,
|
|
67
|
+
});
|
|
68
|
+
var _a = useMenuTrigger({
|
|
69
|
+
triggerRef: triggerRef,
|
|
70
|
+
placement: placement,
|
|
71
|
+
menu: menu,
|
|
72
|
+
}, state), triggerProps = _a.triggerProps, makeMenu = _a.makeMenu, triggerContext = _a.triggerContext;
|
|
73
|
+
return (React.createElement(TriggeredOverlayContext.Provider, { value: triggerContext },
|
|
74
|
+
React.cloneElement(children, mergeProps(children.props, triggerProps, { ref: triggerRef })),
|
|
75
|
+
state.isOpen && makeMenu()));
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
function useMenuButton(plasmicClass, props, config, outerRef) {
|
|
79
|
-
var _a, _b;
|
|
80
|
-
if (outerRef === void 0) { outerRef = null; }
|
|
81
|
-
var placement = props.placement, isOpen = props.isOpen, defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, isDisabled = props.isDisabled, menu = props.menu, autoFocus = props.autoFocus, menuMatchTriggerWidth = props.menuMatchTriggerWidth, menuWidth = props.menuWidth;
|
|
82
|
-
useEnsureSSRProvider();
|
|
83
|
-
var rootRef = React.useRef(null);
|
|
84
|
-
var triggerRef = React.useRef(null);
|
|
85
|
-
var state = useMenuTriggerState({
|
|
86
|
-
isOpen: isOpen,
|
|
87
|
-
defaultOpen: defaultOpen,
|
|
88
|
-
onOpenChange: onOpenChange,
|
|
89
|
-
shouldFlip: true
|
|
90
|
-
});
|
|
91
|
-
var _c = useMenuTrigger({
|
|
92
|
-
isDisabled: isDisabled,
|
|
93
|
-
triggerRef: triggerRef,
|
|
94
|
-
placement: placement,
|
|
95
|
-
menuMatchTriggerWidth: menuMatchTriggerWidth,
|
|
96
|
-
menuWidth: menuWidth,
|
|
97
|
-
menu: menu
|
|
98
|
-
}, state), triggerProps = _c.triggerProps, makeMenu = _c.makeMenu, triggerContext = _c.triggerContext;
|
|
99
|
-
var triggerFocusProps = useFocusable(props, triggerRef).focusableProps;
|
|
100
|
-
var variants = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalVariantProps), false))), mergeVariantToggles({ def: config.isOpenVariant, active: state.isOpen }, { def: config.isDisabledVariant, active: isDisabled }));
|
|
101
|
-
var args = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalArgProps), false))), (_a = {}, _a[config.menuSlot] = state.isOpen ? makeMenu() : undefined, _a));
|
|
102
|
-
var overrides = (_b = {},
|
|
103
|
-
_b[config.root] = {
|
|
104
|
-
wrapChildren: function (children) { return (React.createElement(TriggeredOverlayContext.Provider, { value: triggerContext }, children)); },
|
|
105
|
-
props: {
|
|
106
|
-
ref: rootRef
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
_b[config.trigger] = {
|
|
110
|
-
props: mergeProps(triggerProps, triggerFocusProps, getStyleProps(props), pick(props, "title"), {
|
|
111
|
-
ref: triggerRef,
|
|
112
|
-
autoFocus: autoFocus,
|
|
113
|
-
disabled: !!isDisabled,
|
|
114
|
-
// Make sure this button is not interpreted as submit
|
|
115
|
-
type: "button"
|
|
116
|
-
})
|
|
117
|
-
},
|
|
118
|
-
_b);
|
|
119
|
-
var plumeState = React.useMemo(function () { return ({
|
|
120
|
-
open: function () { return state.open(); },
|
|
121
|
-
close: function () { return state.close(); },
|
|
122
|
-
isOpen: function () { return state.isOpen; }
|
|
123
|
-
}); }, [state]);
|
|
124
|
-
React.useImperativeHandle(outerRef, function () { return ({
|
|
125
|
-
getRoot: function () { return rootRef.current; },
|
|
126
|
-
getTrigger: function () { return triggerRef.current; },
|
|
127
|
-
focus: function () { return triggerRef.current && triggerRef.current.focus(); },
|
|
128
|
-
blur: function () { return triggerRef.current && triggerRef.current.blur(); },
|
|
129
|
-
open: plumeState.open,
|
|
130
|
-
close: plumeState.close,
|
|
131
|
-
isOpen: plumeState.isOpen
|
|
132
|
-
}); }, [rootRef, triggerRef, plumeState]);
|
|
133
|
-
return {
|
|
134
|
-
plasmicProps: {
|
|
135
|
-
variants: variants,
|
|
136
|
-
args: args,
|
|
137
|
-
overrides: overrides
|
|
138
|
-
},
|
|
139
|
-
state: plumeState
|
|
140
|
-
};
|
|
78
|
+
function useMenuButton(plasmicClass, props, config, outerRef) {
|
|
79
|
+
var _a, _b;
|
|
80
|
+
if (outerRef === void 0) { outerRef = null; }
|
|
81
|
+
var placement = props.placement, isOpen = props.isOpen, defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, isDisabled = props.isDisabled, menu = props.menu, autoFocus = props.autoFocus, menuMatchTriggerWidth = props.menuMatchTriggerWidth, menuWidth = props.menuWidth;
|
|
82
|
+
useEnsureSSRProvider();
|
|
83
|
+
var rootRef = React.useRef(null);
|
|
84
|
+
var triggerRef = React.useRef(null);
|
|
85
|
+
var state = useMenuTriggerState({
|
|
86
|
+
isOpen: isOpen,
|
|
87
|
+
defaultOpen: defaultOpen,
|
|
88
|
+
onOpenChange: onOpenChange,
|
|
89
|
+
shouldFlip: true,
|
|
90
|
+
});
|
|
91
|
+
var _c = useMenuTrigger({
|
|
92
|
+
isDisabled: isDisabled,
|
|
93
|
+
triggerRef: triggerRef,
|
|
94
|
+
placement: placement,
|
|
95
|
+
menuMatchTriggerWidth: menuMatchTriggerWidth,
|
|
96
|
+
menuWidth: menuWidth,
|
|
97
|
+
menu: menu,
|
|
98
|
+
}, state), triggerProps = _c.triggerProps, makeMenu = _c.makeMenu, triggerContext = _c.triggerContext;
|
|
99
|
+
var triggerFocusProps = useFocusable(props, triggerRef).focusableProps;
|
|
100
|
+
var variants = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalVariantProps), false))), mergeVariantToggles({ def: config.isOpenVariant, active: state.isOpen }, { def: config.isDisabledVariant, active: isDisabled }));
|
|
101
|
+
var args = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalArgProps), false))), (_a = {}, _a[config.menuSlot] = state.isOpen ? makeMenu() : undefined, _a));
|
|
102
|
+
var overrides = (_b = {},
|
|
103
|
+
_b[config.root] = {
|
|
104
|
+
wrapChildren: function (children) { return (React.createElement(TriggeredOverlayContext.Provider, { value: triggerContext }, children)); },
|
|
105
|
+
props: {
|
|
106
|
+
ref: rootRef,
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
_b[config.trigger] = {
|
|
110
|
+
props: mergeProps(triggerProps, triggerFocusProps, getStyleProps(props), pick(props, "title"), {
|
|
111
|
+
ref: triggerRef,
|
|
112
|
+
autoFocus: autoFocus,
|
|
113
|
+
disabled: !!isDisabled,
|
|
114
|
+
// Make sure this button is not interpreted as submit
|
|
115
|
+
type: "button",
|
|
116
|
+
}),
|
|
117
|
+
},
|
|
118
|
+
_b);
|
|
119
|
+
var plumeState = React.useMemo(function () { return ({
|
|
120
|
+
open: function () { return state.open(); },
|
|
121
|
+
close: function () { return state.close(); },
|
|
122
|
+
isOpen: function () { return state.isOpen; },
|
|
123
|
+
}); }, [state]);
|
|
124
|
+
React.useImperativeHandle(outerRef, function () { return ({
|
|
125
|
+
getRoot: function () { return rootRef.current; },
|
|
126
|
+
getTrigger: function () { return triggerRef.current; },
|
|
127
|
+
focus: function () { return triggerRef.current && triggerRef.current.focus(); },
|
|
128
|
+
blur: function () { return triggerRef.current && triggerRef.current.blur(); },
|
|
129
|
+
open: plumeState.open,
|
|
130
|
+
close: plumeState.close,
|
|
131
|
+
isOpen: plumeState.isOpen,
|
|
132
|
+
}); }, [rootRef, triggerRef, plumeState]);
|
|
133
|
+
return {
|
|
134
|
+
plasmicProps: {
|
|
135
|
+
variants: variants,
|
|
136
|
+
args: args,
|
|
137
|
+
overrides: overrides,
|
|
138
|
+
},
|
|
139
|
+
state: plumeState,
|
|
140
|
+
};
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
export { DropdownMenu, useMenuButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/plume/menu-button/menu-trigger.tsx","../../../../src/plume/menu-button/DropdownMenu.tsx","../../../../src/plume/menu-button/menu-button.tsx"],"sourcesContent":["import { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { useMenuTrigger as useAriaMenuTrigger } from \"@react-aria/menu\";\nimport { usePress } from \"@react-aria/interactions\";\nimport { MenuTriggerState } from \"@react-stately/menu\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { getPlumeType, PLUME_STRICT_MODE } from \"../plume-utils\";\nimport { TriggeredOverlayContextValue } from \"../triggered-overlay/context\";\n\n/**\n * A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,\n * useOverlayPosition, useOverlay, and usePress\n */\nexport function useMenuTrigger(\n opts: {\n isDisabled?: boolean;\n triggerRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n menuMatchTriggerWidth?: boolean;\n menuWidth?: number;\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n },\n state: MenuTriggerState\n) {\n const {\n triggerRef,\n isDisabled,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n } = opts;\n\n const { menuTriggerProps: triggerPressProps, menuProps } = useAriaMenuTrigger(\n {\n type: \"menu\",\n isDisabled,\n },\n state,\n triggerRef\n );\n\n const { pressProps: triggerProps } = usePress({\n ...triggerPressProps,\n isDisabled,\n });\n\n const makeMenu = () => {\n let realMenu = typeof menu === \"function\" ? menu() : menu;\n if (!realMenu) {\n return null;\n }\n if (getPlumeType(realMenu) !== \"menu\") {\n if (PLUME_STRICT_MODE) {\n throw new Error(`Must use an instance of the Menu component.`);\n }\n return null;\n }\n\n return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));\n };\n\n const triggerContext: TriggeredOverlayContextValue = React.useMemo(\n () => ({\n triggerRef,\n state,\n autoFocus: state.focusStrategy ?? true,\n placement,\n overlayMatchTriggerWidth: menuMatchTriggerWidth,\n overlayMinTriggerWidth: true,\n overlayWidth: menuWidth,\n }),\n [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]\n );\n\n return {\n triggerProps,\n makeMenu,\n triggerContext,\n };\n}\n","import { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface DropdownMenuProps {\n /**\n * A ReactElement that takes in a `ref` as well as the usual mouse and\n * pointer events. The dropdown menu will be positioned relative to this\n * trigger.\n */\n children: React.ReactElement;\n\n /**\n * The menu to show; must be either a ReactElement of Menu type, or\n * a function that creates one if you prefer to delay creating it until\n * the menu has been triggered.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Where to place the menu relative to the trigger.\n */\n placement?: Placement;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state.\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n isOpen,\n defaultOpen,\n onOpenChange,\n children,\n placement,\n menu,\n } = props;\n\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip: true,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n triggerRef,\n placement,\n menu,\n },\n state\n );\n\n return (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {React.cloneElement(\n children,\n mergeProps(children.props, triggerProps, { ref: triggerRef })\n )}\n {state.isOpen && makeMenu()}\n </TriggeredOverlayContext.Provider>\n );\n}\n","import { Placement } from \"@react-types/overlays\";\nimport { DOMProps, FocusableProps } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { useFocusable } from \"@react-aria/focus\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { useEnsureSSRProvider } from \"../../render/ssr\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface BaseMenuButtonProps\n extends DOMProps,\n FocusableProps,\n StyleProps,\n Pick<React.ComponentProps<\"button\">, \"title\"> {\n /**\n * The menu to show; can either be a Menu instance, or a function that returns a Menu\n * instance if you want to defer creating the instance till when it's opened.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Whether the button is disabled\n */\n isDisabled?: boolean;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Desired placement location of the Select dropdown\n */\n placement?: Placement;\n /**\n * If true, menu width will always match the trigger button width.\n * If false, then menu width will have min-width matching the\n * trigger button width.\n */\n menuMatchTriggerWidth?: boolean;\n\n /**\n * If set, menu width will be exactly this width, overriding\n * menuMatchTriggerWidth.\n */\n menuWidth?: number;\n}\n\nexport interface MenuButtonConfig<C extends AnyPlasmicClass> {\n isOpenVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n menuSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n trigger: keyof PlasmicClassOverrides<C>;\n}\n\ninterface MenuButtonState {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n}\n\nexport type MenuButtonRef = React.Ref<MenuButtonRefValue>;\n\nexport interface MenuButtonRefValue extends MenuButtonState {\n getRoot: () => HTMLElement | null;\n getTrigger: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\nexport function useMenuButton<\n P extends BaseMenuButtonProps,\n C extends AnyPlasmicClass\n>(\n plasmicClass: C,\n props: P,\n config: MenuButtonConfig<C>,\n outerRef: MenuButtonRef = null\n) {\n const {\n placement,\n isOpen,\n defaultOpen,\n onOpenChange,\n isDisabled,\n menu,\n autoFocus,\n menuMatchTriggerWidth,\n menuWidth,\n } = props;\n\n useEnsureSSRProvider();\n const rootRef = React.useRef<HTMLElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip: true,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n isDisabled,\n triggerRef,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n },\n state\n );\n\n const { focusableProps: triggerFocusProps } = useFocusable(props, triggerRef);\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isOpenVariant, active: state.isOpen },\n { def: config.isDisabledVariant, active: isDisabled }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.menuSlot]: state.isOpen ? makeMenu() : undefined,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n wrapChildren: (children) => (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {children}\n </TriggeredOverlayContext.Provider>\n ),\n props: {\n ref: rootRef,\n },\n },\n [config.trigger]: {\n props: mergeProps(\n triggerProps,\n triggerFocusProps,\n getStyleProps(props),\n pick(props, \"title\"),\n {\n ref: triggerRef,\n autoFocus,\n disabled: !!isDisabled,\n // Make sure this button is not interpreted as submit\n type: \"button\",\n }\n ),\n },\n };\n\n const plumeState: MenuButtonState = React.useMemo(\n () => ({\n open: () => state.open(),\n close: () => state.close(),\n isOpen: () => state.isOpen,\n }),\n [state]\n );\n\n React.useImperativeHandle(\n outerRef,\n () => ({\n getRoot: () => rootRef.current,\n getTrigger: () => triggerRef.current,\n focus: () => triggerRef.current && triggerRef.current.focus(),\n blur: () => triggerRef.current && triggerRef.current.blur(),\n open: plumeState.open,\n close: plumeState.close,\n isOpen: plumeState.isOpen,\n }),\n [rootRef, triggerRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n args: args as PlasmicClassArgs<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaMenuTrigger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/plume/menu-button/menu-trigger.tsx","../../../../src/plume/menu-button/DropdownMenu.tsx","../../../../src/plume/menu-button/menu-button.tsx"],"sourcesContent":["import { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { useMenuTrigger as useAriaMenuTrigger } from \"@react-aria/menu\";\nimport { usePress } from \"@react-aria/interactions\";\nimport { MenuTriggerState } from \"@react-stately/menu\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { getPlumeType, PLUME_STRICT_MODE } from \"../plume-utils\";\nimport { TriggeredOverlayContextValue } from \"../triggered-overlay/context\";\n\n/**\n * A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,\n * useOverlayPosition, useOverlay, and usePress\n */\nexport function useMenuTrigger(\n opts: {\n isDisabled?: boolean;\n triggerRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n menuMatchTriggerWidth?: boolean;\n menuWidth?: number;\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n },\n state: MenuTriggerState\n) {\n const {\n triggerRef,\n isDisabled,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n } = opts;\n\n const { menuTriggerProps: triggerPressProps, menuProps } = useAriaMenuTrigger(\n {\n type: \"menu\",\n isDisabled,\n },\n state,\n triggerRef\n );\n\n const { pressProps: triggerProps } = usePress({\n ...triggerPressProps,\n isDisabled,\n });\n\n const makeMenu = () => {\n let realMenu = typeof menu === \"function\" ? menu() : menu;\n if (!realMenu) {\n return null;\n }\n if (getPlumeType(realMenu) !== \"menu\") {\n if (PLUME_STRICT_MODE) {\n throw new Error(`Must use an instance of the Menu component.`);\n }\n return null;\n }\n\n return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));\n };\n\n const triggerContext: TriggeredOverlayContextValue = React.useMemo(\n () => ({\n triggerRef,\n state,\n autoFocus: state.focusStrategy ?? true,\n placement,\n overlayMatchTriggerWidth: menuMatchTriggerWidth,\n overlayMinTriggerWidth: true,\n overlayWidth: menuWidth,\n }),\n [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]\n );\n\n return {\n triggerProps,\n makeMenu,\n triggerContext,\n };\n}\n","import { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface DropdownMenuProps {\n /**\n * A ReactElement that takes in a `ref` as well as the usual mouse and\n * pointer events. The dropdown menu will be positioned relative to this\n * trigger.\n */\n children: React.ReactElement;\n\n /**\n * The menu to show; must be either a ReactElement of Menu type, or\n * a function that creates one if you prefer to delay creating it until\n * the menu has been triggered.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Where to place the menu relative to the trigger.\n */\n placement?: Placement;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state.\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n isOpen,\n defaultOpen,\n onOpenChange,\n children,\n placement,\n menu,\n } = props;\n\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip: true,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n triggerRef,\n placement,\n menu,\n },\n state\n );\n\n return (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {React.cloneElement(\n children,\n mergeProps(children.props, triggerProps, { ref: triggerRef })\n )}\n {state.isOpen && makeMenu()}\n </TriggeredOverlayContext.Provider>\n );\n}\n","import { useFocusable } from \"@react-aria/focus\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport { DOMProps, FocusableProps } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { useEnsureSSRProvider } from \"../../render/ssr\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface BaseMenuButtonProps\n extends DOMProps,\n FocusableProps,\n StyleProps,\n Pick<React.ComponentProps<\"button\">, \"title\"> {\n /**\n * The menu to show; can either be a Menu instance, or a function that returns a Menu\n * instance if you want to defer creating the instance till when it's opened.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Whether the button is disabled\n */\n isDisabled?: boolean;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Desired placement location of the Select dropdown\n */\n placement?: Placement;\n /**\n * If true, menu width will always match the trigger button width.\n * If false, then menu width will have min-width matching the\n * trigger button width.\n */\n menuMatchTriggerWidth?: boolean;\n\n /**\n * If set, menu width will be exactly this width, overriding\n * menuMatchTriggerWidth.\n */\n menuWidth?: number;\n}\n\nexport interface MenuButtonConfig<C extends AnyPlasmicClass> {\n isOpenVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n menuSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n trigger: keyof PlasmicClassOverrides<C>;\n}\n\ninterface MenuButtonState {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n}\n\nexport type MenuButtonRef = React.Ref<MenuButtonRefValue>;\n\nexport interface MenuButtonRefValue extends MenuButtonState {\n getRoot: () => HTMLElement | null;\n getTrigger: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\nexport function useMenuButton<\n P extends BaseMenuButtonProps,\n C extends AnyPlasmicClass\n>(\n plasmicClass: C,\n props: P,\n config: MenuButtonConfig<C>,\n outerRef: MenuButtonRef = null\n) {\n const {\n placement,\n isOpen,\n defaultOpen,\n onOpenChange,\n isDisabled,\n menu,\n autoFocus,\n menuMatchTriggerWidth,\n menuWidth,\n } = props;\n\n useEnsureSSRProvider();\n const rootRef = React.useRef<HTMLElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip: true,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n isDisabled,\n triggerRef,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n },\n state\n );\n\n const { focusableProps: triggerFocusProps } = useFocusable(props, triggerRef);\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isOpenVariant, active: state.isOpen },\n { def: config.isDisabledVariant, active: isDisabled }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.menuSlot]: state.isOpen ? makeMenu() : undefined,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n wrapChildren: (children: React.ReactNode) => (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {children}\n </TriggeredOverlayContext.Provider>\n ),\n props: {\n ref: rootRef,\n },\n },\n [config.trigger]: {\n props: mergeProps(\n triggerProps,\n triggerFocusProps,\n getStyleProps(props),\n pick(props, \"title\"),\n {\n ref: triggerRef,\n autoFocus,\n disabled: !!isDisabled,\n // Make sure this button is not interpreted as submit\n type: \"button\",\n }\n ),\n },\n };\n\n const plumeState: MenuButtonState = React.useMemo(\n () => ({\n open: () => state.open(),\n close: () => state.close(),\n isOpen: () => state.isOpen,\n }),\n [state]\n );\n\n React.useImperativeHandle(\n outerRef,\n () => ({\n getRoot: () => rootRef.current,\n getTrigger: () => triggerRef.current,\n focus: () => triggerRef.current && triggerRef.current.focus(),\n blur: () => triggerRef.current && triggerRef.current.blur(),\n open: plumeState.open,\n close: plumeState.close,\n isOpen: plumeState.isOpen,\n }),\n [rootRef, triggerRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n args: args as PlasmicClassArgs<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaMenuTrigger"],"mappings":";;;;;;;;;;;;;;;;AAUA;;;;SAIgB,cAAc,CAC5B,IASC,EACD,KAAuB;IAGrB,IAAA,UAAU,GAMR,IAAI,WANI,EACV,UAAU,GAKR,IAAI,WALI,EACV,SAAS,GAIP,IAAI,UAJG,EACT,qBAAqB,GAGnB,IAAI,sBAHe,EACrB,SAAS,GAEP,IAAI,UAFG,EACT,IAAI,GACF,IAAI,KADF,CACG;IAEH,IAAA,KAAqDA,gBAAkB,CAC3E;QACE,IAAI,EAAE,MAAM;QACZ,UAAU,YAAA;KACX,EACD,KAAK,EACL,UAAU,CACX,EAPyB,iBAAiB,sBAAA,EAAE,SAAS,eAOrD,CAAC;IAEM,IAAY,YAAY,GAAK,QAAQ,uBACxC,iBAAiB,KACpB,UAAU,YAAA,IACV,WAH8B,CAG7B;IAEH,IAAM,QAAQ,GAAG;QACf,IAAI,QAAQ,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC;SACb;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;YACd;gBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;SAEF;QAED,OAAO,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;KAC5E,CAAC;IAEF,IAAM,cAAc,GAAiC,KAAK,CAAC,OAAO,CAChE;;QAAM,QAAC;YACL,UAAU,YAAA;YACV,KAAK,OAAA;YACL,SAAS,EAAE,MAAA,KAAK,CAAC,aAAa,mCAAI,IAAI;YACtC,SAAS,WAAA;YACT,wBAAwB,EAAE,qBAAqB;YAC/C,sBAAsB,EAAE,IAAI;YAC5B,YAAY,EAAE,SAAS;SACxB,EAAC;KAAA,EACF,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,CAAC,CACjE,CAAC;IAEF,OAAO;QACL,YAAY,cAAA;QACZ,QAAQ,UAAA;QACR,cAAc,gBAAA;KACf,CAAC;AACJ;;SCrCgB,YAAY,CAAC,KAAwB;IAEjD,IAAA,MAAM,GAMJ,KAAK,OAND,EACN,WAAW,GAKT,KAAK,YALI,EACX,YAAY,GAIV,KAAK,aAJK,EACZ,QAAQ,GAGN,KAAK,SAHC,EACR,SAAS,GAEP,KAAK,UAFE,EACT,IAAI,GACF,KAAK,KADH,CACI;IAEV,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAEnD,IAAM,KAAK,GAAG,mBAAmB,CAAC;QAChC,MAAM,QAAA;QACN,WAAW,aAAA;QACX,YAAY,cAAA;QACZ,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEG,IAAA,KAA6C,cAAc,CAC/D;QACE,UAAU,YAAA;QACV,SAAS,WAAA;QACT,IAAI,MAAA;KACL,EACD,KAAK,CACN,EAPO,YAAY,kBAAA,EAAE,QAAQ,cAAA,EAAE,cAAc,oBAO7C,CAAC;IAEF,QACE,oBAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc;QACpD,KAAK,CAAC,YAAY,CACjB,QAAQ,EACR,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAC9D;QACA,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,CACM,EACnC;AACJ;;SCegB,aAAa,CAI3B,YAAe,EACf,KAAQ,EACR,MAA2B,EAC3B,QAA8B;;IAA9B,yBAAA,EAAA,eAA8B;IAG5B,IAAA,SAAS,GASP,KAAK,UATE,EACT,MAAM,GAQJ,KAAK,OARD,EACN,WAAW,GAOT,KAAK,YAPI,EACX,YAAY,GAMV,KAAK,aANK,EACZ,UAAU,GAKR,KAAK,WALG,EACV,IAAI,GAIF,KAAK,KAJH,EACJ,SAAS,GAGP,KAAK,UAHE,EACT,qBAAqB,GAEnB,KAAK,sBAFc,EACrB,SAAS,GACP,KAAK,UADE,CACD;IAEV,oBAAoB,EAAE,CAAC;IACvB,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAChD,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEzD,IAAM,KAAK,GAAG,mBAAmB,CAAC;QAChC,MAAM,QAAA;QACN,WAAW,aAAA;QACX,YAAY,cAAA;QACZ,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEG,IAAA,KAA6C,cAAc,CAC/D;QACE,UAAU,YAAA;QACV,UAAU,YAAA;QACV,SAAS,WAAA;QACT,qBAAqB,uBAAA;QACrB,SAAS,WAAA;QACT,IAAI,MAAA;KACL,EACD,KAAK,CACN,EAVO,YAAY,kBAAA,EAAE,QAAQ,cAAA,EAAE,cAAc,oBAU7C,CAAC;IAEM,IAAgB,iBAAiB,GAAK,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,eAApC,CAAqC;IAE9E,IAAM,QAAQ,yBACT,IAAI,8BAAC,KAAK,UAAK,YAAY,CAAC,oBAAoB,aAChD,mBAAmB,CACpB,EAAE,GAAG,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EACnD,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,CACtD,CACF,CAAC;IAEF,IAAM,IAAI,yBACL,IAAI,8BAAC,KAAK,UAAK,YAAY,CAAC,gBAAgB,0BAC9C,MAAM,CAAC,QAAQ,IAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,GAAG,SAAS,MACzD,CAAC;IAEF,IAAM,SAAS;QACb,GAAC,MAAM,CAAC,IAAI,IAAG;YACb,YAAY,EAAE,UAAC,QAAyB,IAAK,QAC3C,oBAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,IACpD,QAAQ,CACwB,IACpC;YACD,KAAK,EAAE;gBACL,GAAG,EAAE,OAAO;aACb;SACF;QACD,GAAC,MAAM,CAAC,OAAO,IAAG;YAChB,KAAK,EAAE,UAAU,CACf,YAAY,EACZ,iBAAiB,EACjB,aAAa,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EACpB;gBACE,GAAG,EAAE,UAAU;gBACf,SAAS,WAAA;gBACT,QAAQ,EAAE,CAAC,CAAC,UAAU;;gBAEtB,IAAI,EAAE,QAAQ;aACf,CACF;SACF;WACF,CAAC;IAEF,IAAM,UAAU,GAAoB,KAAK,CAAC,OAAO,CAC/C,cAAM,QAAC;QACL,IAAI,EAAE,cAAM,OAAA,KAAK,CAAC,IAAI,EAAE,GAAA;QACxB,KAAK,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAE,GAAA;QAC1B,MAAM,EAAE,cAAM,OAAA,KAAK,CAAC,MAAM,GAAA;KAC3B,IAAC,EACF,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,KAAK,CAAC,mBAAmB,CACvB,QAAQ,EACR,cAAM,QAAC;QACL,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,GAAA;QAC9B,UAAU,EAAE,cAAM,OAAA,UAAU,CAAC,OAAO,GAAA;QACpC,KAAK,EAAE,cAAM,OAAA,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAA;QAC7D,IAAI,EAAE,cAAM,OAAA,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAA;QAC3D,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,IAAC,EACF,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAClC,CAAC;IAEF,OAAO;QACL,YAAY,EAAE;YACZ,QAAQ,EAAE,QAAmC;YAC7C,IAAI,EAAE,IAA2B;YACjC,SAAS,EAAE,SAAqC;SACjD;QACD,KAAK,EAAE,UAAU;KAClB,CAAC;AACJ;;;;"}
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Placement } from "@react-types/overlays";
|
|
2
|
-
import { DOMProps, FocusableProps } from "@react-types/shared";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { BaseMenuProps } from "../menu/menu";
|
|
5
|
-
import { AnyPlasmicClass, PlasmicClassArgs, PlasmicClassOverrides, PlasmicClassVariants, VariantDef } from "../plume-utils";
|
|
6
|
-
import { StyleProps } from "../props-utils";
|
|
7
|
-
export interface BaseMenuButtonProps extends DOMProps, FocusableProps, StyleProps, Pick<React.ComponentProps<"button">, "title"> {
|
|
8
|
-
/**
|
|
9
|
-
* The menu to show; can either be a Menu instance, or a function that returns a Menu
|
|
10
|
-
* instance if you want to defer creating the instance till when it's opened.
|
|
11
|
-
*/
|
|
12
|
-
menu: React.ReactElement<BaseMenuProps> | (() => React.ReactElement<BaseMenuProps>);
|
|
13
|
-
/**
|
|
14
|
-
* Whether the button is disabled
|
|
15
|
-
*/
|
|
16
|
-
isDisabled?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Whether the menu is currently shown.
|
|
19
|
-
*/
|
|
20
|
-
isOpen?: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Uncontrolled open state
|
|
23
|
-
*/
|
|
24
|
-
defaultOpen?: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Event handler fired when Menu's open state changes
|
|
27
|
-
*/
|
|
28
|
-
onOpenChange?: (isOpen: boolean) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Desired placement location of the Select dropdown
|
|
31
|
-
*/
|
|
32
|
-
placement?: Placement;
|
|
33
|
-
/**
|
|
34
|
-
* If true, menu width will always match the trigger button width.
|
|
35
|
-
* If false, then menu width will have min-width matching the
|
|
36
|
-
* trigger button width.
|
|
37
|
-
*/
|
|
38
|
-
menuMatchTriggerWidth?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* If set, menu width will be exactly this width, overriding
|
|
41
|
-
* menuMatchTriggerWidth.
|
|
42
|
-
*/
|
|
43
|
-
menuWidth?: number;
|
|
44
|
-
}
|
|
45
|
-
export interface MenuButtonConfig<C extends AnyPlasmicClass> {
|
|
46
|
-
isOpenVariant: VariantDef<PlasmicClassVariants<C>>;
|
|
47
|
-
isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;
|
|
48
|
-
menuSlot: keyof PlasmicClassArgs<C>;
|
|
49
|
-
root: keyof PlasmicClassOverrides<C>;
|
|
50
|
-
trigger: keyof PlasmicClassOverrides<C>;
|
|
51
|
-
}
|
|
52
|
-
interface MenuButtonState {
|
|
53
|
-
open: () => void;
|
|
54
|
-
close: () => void;
|
|
55
|
-
isOpen: () => boolean;
|
|
56
|
-
}
|
|
57
|
-
export type MenuButtonRef = React.Ref<MenuButtonRefValue>;
|
|
58
|
-
export interface MenuButtonRefValue extends MenuButtonState {
|
|
59
|
-
getRoot: () => HTMLElement | null;
|
|
60
|
-
getTrigger: () => HTMLElement | null;
|
|
61
|
-
focus: () => void;
|
|
62
|
-
blur: () => void;
|
|
63
|
-
}
|
|
64
|
-
export declare function useMenuButton<P extends BaseMenuButtonProps, C extends AnyPlasmicClass>(plasmicClass: C, props: P, config: MenuButtonConfig<C>, outerRef?: MenuButtonRef): {
|
|
65
|
-
plasmicProps: {
|
|
66
|
-
variants: PlasmicClassVariants<C>;
|
|
67
|
-
args: PlasmicClassArgs<C>;
|
|
68
|
-
overrides: PlasmicClassOverrides<C>;
|
|
69
|
-
};
|
|
70
|
-
state: MenuButtonState;
|
|
71
|
-
};
|
|
72
|
-
export {};
|
|
1
|
+
import { Placement } from "@react-types/overlays";
|
|
2
|
+
import { DOMProps, FocusableProps } from "@react-types/shared";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { BaseMenuProps } from "../menu/menu";
|
|
5
|
+
import { AnyPlasmicClass, PlasmicClassArgs, PlasmicClassOverrides, PlasmicClassVariants, VariantDef } from "../plume-utils";
|
|
6
|
+
import { StyleProps } from "../props-utils";
|
|
7
|
+
export interface BaseMenuButtonProps extends DOMProps, FocusableProps, StyleProps, Pick<React.ComponentProps<"button">, "title"> {
|
|
8
|
+
/**
|
|
9
|
+
* The menu to show; can either be a Menu instance, or a function that returns a Menu
|
|
10
|
+
* instance if you want to defer creating the instance till when it's opened.
|
|
11
|
+
*/
|
|
12
|
+
menu: React.ReactElement<BaseMenuProps> | (() => React.ReactElement<BaseMenuProps>);
|
|
13
|
+
/**
|
|
14
|
+
* Whether the button is disabled
|
|
15
|
+
*/
|
|
16
|
+
isDisabled?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the menu is currently shown.
|
|
19
|
+
*/
|
|
20
|
+
isOpen?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Uncontrolled open state
|
|
23
|
+
*/
|
|
24
|
+
defaultOpen?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Event handler fired when Menu's open state changes
|
|
27
|
+
*/
|
|
28
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Desired placement location of the Select dropdown
|
|
31
|
+
*/
|
|
32
|
+
placement?: Placement;
|
|
33
|
+
/**
|
|
34
|
+
* If true, menu width will always match the trigger button width.
|
|
35
|
+
* If false, then menu width will have min-width matching the
|
|
36
|
+
* trigger button width.
|
|
37
|
+
*/
|
|
38
|
+
menuMatchTriggerWidth?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* If set, menu width will be exactly this width, overriding
|
|
41
|
+
* menuMatchTriggerWidth.
|
|
42
|
+
*/
|
|
43
|
+
menuWidth?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface MenuButtonConfig<C extends AnyPlasmicClass> {
|
|
46
|
+
isOpenVariant: VariantDef<PlasmicClassVariants<C>>;
|
|
47
|
+
isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;
|
|
48
|
+
menuSlot: keyof PlasmicClassArgs<C>;
|
|
49
|
+
root: keyof PlasmicClassOverrides<C>;
|
|
50
|
+
trigger: keyof PlasmicClassOverrides<C>;
|
|
51
|
+
}
|
|
52
|
+
interface MenuButtonState {
|
|
53
|
+
open: () => void;
|
|
54
|
+
close: () => void;
|
|
55
|
+
isOpen: () => boolean;
|
|
56
|
+
}
|
|
57
|
+
export type MenuButtonRef = React.Ref<MenuButtonRefValue>;
|
|
58
|
+
export interface MenuButtonRefValue extends MenuButtonState {
|
|
59
|
+
getRoot: () => HTMLElement | null;
|
|
60
|
+
getTrigger: () => HTMLElement | null;
|
|
61
|
+
focus: () => void;
|
|
62
|
+
blur: () => void;
|
|
63
|
+
}
|
|
64
|
+
export declare function useMenuButton<P extends BaseMenuButtonProps, C extends AnyPlasmicClass>(plasmicClass: C, props: P, config: MenuButtonConfig<C>, outerRef?: MenuButtonRef): {
|
|
65
|
+
plasmicProps: {
|
|
66
|
+
variants: PlasmicClassVariants<C>;
|
|
67
|
+
args: PlasmicClassArgs<C>;
|
|
68
|
+
overrides: PlasmicClassOverrides<C>;
|
|
69
|
+
};
|
|
70
|
+
state: MenuButtonState;
|
|
71
|
+
};
|
|
72
|
+
export {};
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Placement } from "@react-types/overlays";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { MenuTriggerState } from "@react-stately/menu";
|
|
4
|
-
import { BaseMenuProps } from "../menu/menu";
|
|
5
|
-
import { TriggeredOverlayContextValue } from "../triggered-overlay/context";
|
|
6
|
-
/**
|
|
7
|
-
* A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,
|
|
8
|
-
* useOverlayPosition, useOverlay, and usePress
|
|
9
|
-
*/
|
|
10
|
-
export declare function useMenuTrigger(opts: {
|
|
11
|
-
isDisabled?: boolean;
|
|
12
|
-
triggerRef: React.RefObject<HTMLElement>;
|
|
13
|
-
placement?: Placement;
|
|
14
|
-
menuMatchTriggerWidth?: boolean;
|
|
15
|
-
menuWidth?: number;
|
|
16
|
-
menu: React.ReactElement<BaseMenuProps> | (() => React.ReactElement<BaseMenuProps>);
|
|
17
|
-
}, state: MenuTriggerState): {
|
|
18
|
-
triggerProps: import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>;
|
|
19
|
-
makeMenu: () => React.ReactElement<BaseMenuProps, string | React.JSXElementConstructor<any>> | null;
|
|
20
|
-
triggerContext: TriggeredOverlayContextValue;
|
|
21
|
-
};
|
|
1
|
+
import { Placement } from "@react-types/overlays";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { MenuTriggerState } from "@react-stately/menu";
|
|
4
|
+
import { BaseMenuProps } from "../menu/menu";
|
|
5
|
+
import { TriggeredOverlayContextValue } from "../triggered-overlay/context";
|
|
6
|
+
/**
|
|
7
|
+
* A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,
|
|
8
|
+
* useOverlayPosition, useOverlay, and usePress
|
|
9
|
+
*/
|
|
10
|
+
export declare function useMenuTrigger(opts: {
|
|
11
|
+
isDisabled?: boolean;
|
|
12
|
+
triggerRef: React.RefObject<HTMLElement>;
|
|
13
|
+
placement?: Placement;
|
|
14
|
+
menuMatchTriggerWidth?: boolean;
|
|
15
|
+
menuWidth?: number;
|
|
16
|
+
menu: React.ReactElement<BaseMenuProps> | (() => React.ReactElement<BaseMenuProps>);
|
|
17
|
+
}, state: MenuTriggerState): {
|
|
18
|
+
triggerProps: import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>;
|
|
19
|
+
makeMenu: () => React.ReactElement<BaseMenuProps, string | React.JSXElementConstructor<any>> | null;
|
|
20
|
+
triggerContext: TriggeredOverlayContextValue;
|
|
21
|
+
};
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { SingleChoiceArg } from "../render/elements";
|
|
3
|
-
export declare let PLUME_STRICT_MODE: boolean;
|
|
4
|
-
export declare function setPlumeStrictMode(mode: boolean): void;
|
|
5
|
-
type VariantArgChoices<T> = T extends (infer M)[] ? M : T extends SingleChoiceArg<infer M> ? M : never;
|
|
6
|
-
type VariantArgsChoices<V> = {
|
|
7
|
-
[k in keyof V]-?: VariantArgChoices<V[k]>;
|
|
8
|
-
};
|
|
9
|
-
type DictValues<V extends Record<string, any>> = V[keyof V];
|
|
10
|
-
type DictTuples<V extends Record<string, any>> = DictValues<{
|
|
11
|
-
[K in keyof V]: [K, V[K]];
|
|
12
|
-
}>;
|
|
13
|
-
export type VariantDefTuple<V> = DictTuples<VariantArgsChoices<V>>;
|
|
14
|
-
type DistributeTuple<T> = T extends [infer T1, infer T2] ? {
|
|
15
|
-
group: T1;
|
|
16
|
-
variant: T2;
|
|
17
|
-
} : never;
|
|
18
|
-
export type VariantDef<V> = DistributeTuple<VariantDefTuple<V>>;
|
|
19
|
-
export type PlasmicClass<V extends Record<string, any>, A extends Record<string, any>, O extends Record<string, any>> = {
|
|
20
|
-
(props: {
|
|
21
|
-
variants?: V;
|
|
22
|
-
args?: A;
|
|
23
|
-
overrides?: O;
|
|
24
|
-
}): React.ReactElement | null;
|
|
25
|
-
internalVariantProps: (keyof V)[];
|
|
26
|
-
internalArgProps: (keyof A)[];
|
|
27
|
-
};
|
|
28
|
-
export type AnyPlasmicClass = PlasmicClass<any, any, any>;
|
|
29
|
-
export type PlasmicClassVariants<C extends AnyPlasmicClass> = C extends PlasmicClass<infer V, any, any> ? V : unknown;
|
|
30
|
-
export type PlasmicClassArgs<C extends AnyPlasmicClass> = C extends PlasmicClass<any, infer A, any> ? A : unknown;
|
|
31
|
-
export type PlasmicClassOverrides<C extends AnyPlasmicClass> = C extends PlasmicClass<any, any, infer O> ? O : unknown;
|
|
32
|
-
type BooleanLike = boolean | undefined | null;
|
|
33
|
-
export declare function mergeVariantToggles<V>(...toggles: {
|
|
34
|
-
def?: VariantDef<V>;
|
|
35
|
-
active: BooleanLike;
|
|
36
|
-
}[]): Record<string, any>;
|
|
37
|
-
export declare function noOutline(): {
|
|
38
|
-
outline: string;
|
|
39
|
-
};
|
|
40
|
-
export declare function getPlumeType(child: React.ReactChild): string | undefined;
|
|
41
|
-
export {};
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { SingleChoiceArg } from "../render/elements";
|
|
3
|
+
export declare let PLUME_STRICT_MODE: boolean;
|
|
4
|
+
export declare function setPlumeStrictMode(mode: boolean): void;
|
|
5
|
+
type VariantArgChoices<T> = T extends (infer M)[] ? M : T extends SingleChoiceArg<infer M> ? M : never;
|
|
6
|
+
type VariantArgsChoices<V> = {
|
|
7
|
+
[k in keyof V]-?: VariantArgChoices<V[k]>;
|
|
8
|
+
};
|
|
9
|
+
type DictValues<V extends Record<string, any>> = V[keyof V];
|
|
10
|
+
type DictTuples<V extends Record<string, any>> = DictValues<{
|
|
11
|
+
[K in keyof V]: [K, V[K]];
|
|
12
|
+
}>;
|
|
13
|
+
export type VariantDefTuple<V> = DictTuples<VariantArgsChoices<V>>;
|
|
14
|
+
type DistributeTuple<T> = T extends [infer T1, infer T2] ? {
|
|
15
|
+
group: T1;
|
|
16
|
+
variant: T2;
|
|
17
|
+
} : never;
|
|
18
|
+
export type VariantDef<V> = DistributeTuple<VariantDefTuple<V>>;
|
|
19
|
+
export type PlasmicClass<V extends Record<string, any>, A extends Record<string, any>, O extends Record<string, any>> = {
|
|
20
|
+
(props: {
|
|
21
|
+
variants?: V;
|
|
22
|
+
args?: A;
|
|
23
|
+
overrides?: O;
|
|
24
|
+
}): React.ReactElement | null;
|
|
25
|
+
internalVariantProps: (keyof V)[];
|
|
26
|
+
internalArgProps: (keyof A)[];
|
|
27
|
+
};
|
|
28
|
+
export type AnyPlasmicClass = PlasmicClass<any, any, any>;
|
|
29
|
+
export type PlasmicClassVariants<C extends AnyPlasmicClass> = C extends PlasmicClass<infer V, any, any> ? V : unknown;
|
|
30
|
+
export type PlasmicClassArgs<C extends AnyPlasmicClass> = C extends PlasmicClass<any, infer A, any> ? A : unknown;
|
|
31
|
+
export type PlasmicClassOverrides<C extends AnyPlasmicClass> = C extends PlasmicClass<any, any, infer O> ? O : unknown;
|
|
32
|
+
type BooleanLike = boolean | undefined | null;
|
|
33
|
+
export declare function mergeVariantToggles<V>(...toggles: {
|
|
34
|
+
def?: VariantDef<V>;
|
|
35
|
+
active: BooleanLike;
|
|
36
|
+
}[]): Record<string, any>;
|
|
37
|
+
export declare function noOutline(): {
|
|
38
|
+
outline: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function getPlumeType(child: React.ReactChild): string | undefined;
|
|
41
|
+
export {};
|