@plasmicapp/react-web 1.0.37 → 1.0.39

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.
@@ -1,4 +1,4 @@
1
- import { AriaCheckboxProps } from "@react-types/checkbox";
1
+ import { type AriaCheckboxProps } from "@react-aria/checkbox";
2
2
  import * as React from "react";
3
3
  import { AnyPlasmicClass, PlasmicClassArgs, PlasmicClassOverrides, PlasmicClassVariants, VariantDef } from "../plume-utils";
4
4
  import { StyleProps } from "../props-utils";
@@ -49,10 +49,10 @@ function useCheckbox(plasmicClass, props, config, ref) {
49
49
  props: mergeProps(getStyleProps(props), {
50
50
  ref: rootRef,
51
51
  }),
52
- wrapChildren: function (children) { return (React.createElement(React.Fragment, null,
52
+ wrapChildren: function (renderedChildren) { return (React.createElement(React.Fragment, null,
53
53
  React.createElement(VisuallyHidden, null,
54
54
  React.createElement("input", __assign({}, inputProps, { ref: inputRef }))),
55
- children)); },
55
+ renderedChildren)); },
56
56
  },
57
57
  _a);
58
58
  var args = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalArgProps), false))), (config.labelSlot ? (_b = {}, _b[config.labelSlot] = children, _b) : {}));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/plume/checkbox/index.tsx"],"sourcesContent":["import { useCheckbox as useAriaCheckbox } from \"@react-aria/checkbox\";\nimport { VisuallyHidden } from \"@react-aria/visually-hidden\";\nimport { useToggleState } from \"@react-stately/toggle\";\nimport { AriaCheckboxProps } from \"@react-types/checkbox\";\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 {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\n\nexport type CheckboxRef = React.Ref<CheckboxRefValue>;\nexport interface CheckboxRefValue extends CheckboxState {\n getRoot: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\ninterface CheckboxState {\n setChecked: (checked: boolean) => void;\n}\n\nexport interface CheckboxProps\n extends Omit<AriaCheckboxProps, \"isSelected\" | \"defaultSelected\">,\n StyleProps {\n /**\n * Whether the Checkbox is checked or not; controlled\n */\n isChecked?: boolean;\n\n /**\n * Whether the Checkbox is checked by default; uncontrolled\n */\n defaultChecked?: boolean;\n\n /**\n * Whether the Checkbox is in an \"indeterminate\" state; this usually\n * refers to a \"check all\" that is used to check / uncheck many other\n * checkboxes, and is visually indeterminate if some of its controlled\n * checkboxes are checked and some are not.\n */\n isIndeterminate?: boolean;\n}\n\nfunction asAriaCheckboxProps(props: CheckboxProps) {\n const ariaProps = {\n ...props,\n isSelected: props.isChecked,\n defaultSelected: props.defaultChecked,\n };\n delete ariaProps[\"isChecked\"];\n delete ariaProps[\"defaultChecked\"];\n return ariaProps;\n}\n\ninterface CheckboxConfig<C extends AnyPlasmicClass> {\n isCheckedVariant: VariantDef<PlasmicClassVariants<C>>;\n isIndeterminateVariant?: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n noLabelVariant?: VariantDef<PlasmicClassVariants<C>>;\n labelSlot?: keyof PlasmicClassArgs<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useCheckbox<P extends CheckboxProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: CheckboxConfig<C>,\n ref: CheckboxRef = null\n) {\n const { children, isDisabled, isIndeterminate } = props;\n useEnsureSSRProvider();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rootRef = React.useRef<HTMLElement>(null);\n const ariaProps = asAriaCheckboxProps(props);\n const state = useToggleState(ariaProps);\n const { inputProps } = useAriaCheckbox(ariaProps, state, inputRef);\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n {\n def: config.isDisabledVariant,\n active: isDisabled,\n },\n {\n def: config.isCheckedVariant,\n active: state.isSelected,\n },\n {\n def: config.isIndeterminateVariant,\n active: isIndeterminate,\n },\n {\n def: config.noLabelVariant,\n active: !children,\n }\n ),\n };\n const overrides: Overrides = {\n [config.root]: {\n as: \"label\",\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n wrapChildren: (children: React.ReactNode) => (\n <>\n <VisuallyHidden>\n <input {...inputProps} ref={inputRef} />\n </VisuallyHidden>\n {children}\n </>\n ),\n },\n };\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n ...(config.labelSlot ? { [config.labelSlot]: children } : {}),\n };\n\n const plumeState: CheckboxState = React.useMemo(\n () => ({\n setChecked: (checked: boolean) => state.setSelected(checked),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n setChecked: (checked) => plumeState.setChecked(checked),\n }),\n [rootRef, inputRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n args: args as PlasmicClassArgs<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaCheckbox"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/plume/checkbox/index.tsx"],"sourcesContent":["import {\n useCheckbox as useAriaCheckbox,\n type AriaCheckboxProps,\n} from \"@react-aria/checkbox\";\nimport { VisuallyHidden } from \"@react-aria/visually-hidden\";\nimport { useToggleState } from \"@react-stately/toggle\";\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 {\n AnyPlasmicClass,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n mergeVariantToggles,\n} from \"../plume-utils\";\nimport { StyleProps, getStyleProps } from \"../props-utils\";\n\nexport type CheckboxRef = React.Ref<CheckboxRefValue>;\nexport interface CheckboxRefValue extends CheckboxState {\n getRoot: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\ninterface CheckboxState {\n setChecked: (checked: boolean) => void;\n}\n\nexport interface CheckboxProps\n extends Omit<AriaCheckboxProps, \"isSelected\" | \"defaultSelected\">,\n StyleProps {\n /**\n * Whether the Checkbox is checked or not; controlled\n */\n isChecked?: boolean;\n\n /**\n * Whether the Checkbox is checked by default; uncontrolled\n */\n defaultChecked?: boolean;\n\n /**\n * Whether the Checkbox is in an \"indeterminate\" state; this usually\n * refers to a \"check all\" that is used to check / uncheck many other\n * checkboxes, and is visually indeterminate if some of its controlled\n * checkboxes are checked and some are not.\n */\n isIndeterminate?: boolean;\n}\n\nfunction asAriaCheckboxProps(props: CheckboxProps) {\n const ariaProps = {\n ...props,\n isSelected: props.isChecked,\n defaultSelected: props.defaultChecked,\n };\n delete ariaProps[\"isChecked\"];\n delete ariaProps[\"defaultChecked\"];\n return ariaProps;\n}\n\ninterface CheckboxConfig<C extends AnyPlasmicClass> {\n isCheckedVariant: VariantDef<PlasmicClassVariants<C>>;\n isIndeterminateVariant?: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n noLabelVariant?: VariantDef<PlasmicClassVariants<C>>;\n labelSlot?: keyof PlasmicClassArgs<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useCheckbox<P extends CheckboxProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: CheckboxConfig<C>,\n ref: CheckboxRef = null\n) {\n const { children, isDisabled, isIndeterminate } = props;\n useEnsureSSRProvider();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rootRef = React.useRef<HTMLElement>(null);\n const ariaProps = asAriaCheckboxProps(props);\n const state = useToggleState(ariaProps);\n const { inputProps } = useAriaCheckbox(ariaProps, state, inputRef);\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n {\n def: config.isDisabledVariant,\n active: isDisabled,\n },\n {\n def: config.isCheckedVariant,\n active: state.isSelected,\n },\n {\n def: config.isIndeterminateVariant,\n active: isIndeterminate,\n },\n {\n def: config.noLabelVariant,\n active: !children,\n }\n ),\n };\n const overrides: Overrides = {\n [config.root]: {\n as: \"label\",\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n wrapChildren: (renderedChildren: React.ReactNode) => (\n <>\n <VisuallyHidden>\n <input {...inputProps} ref={inputRef} />\n </VisuallyHidden>\n {renderedChildren}\n </>\n ),\n },\n };\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n ...(config.labelSlot ? { [config.labelSlot]: children } : {}),\n };\n\n const plumeState: CheckboxState = React.useMemo(\n () => ({\n setChecked: (checked: boolean) => state.setSelected(checked),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n setChecked: (checked) => plumeState.setChecked(checked),\n }),\n [rootRef, inputRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n args: args as PlasmicClassArgs<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaCheckbox"],"mappings":"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"}
@@ -44,10 +44,7 @@ function useMenu(plasmicClass, props, config, ref) {
44
44
  var state = useTreeState(ariaProps);
45
45
  var menuListRef = React.useRef(null);
46
46
  var menuProps = useMenu$1(__assign(__assign({}, ariaProps), { autoFocus: triggerContext === null || triggerContext === void 0 ? void 0 : triggerContext.autoFocus }), state, menuListRef).menuProps;
47
- var contextValue = React.useMemo(function () { return ({ state: state, menuProps: props }); }, [
48
- state,
49
- props,
50
- ]);
47
+ var contextValue = React.useMemo(function () { return ({ state: state, menuProps: props }); }, [state, props]);
51
48
  var variants = __assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalVariantProps), false)));
52
49
  var overrides = (_a = {},
53
50
  _a[config.root] = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/plume/menu/context.tsx","../../../../src/plume/menu/menu.tsx","../../../../src/plume/menu/menu-group.tsx","../../../../src/plume/menu/menu-item.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { TreeState } from \"@react-stately/tree\";\nimport type { BaseMenuProps } from \"./menu\";\n\nexport interface MenuContextValue {\n menuProps: BaseMenuProps;\n state: TreeState<any>;\n}\n\nexport const MenuContext = React.createContext<MenuContextValue | undefined>(\n undefined\n);\n","import { useMenu as useAriaMenu } from \"@react-aria/menu\";\nimport { useTreeState } from \"@react-stately/tree\";\nimport { AriaMenuProps } from \"@react-types/menu\";\nimport { AriaLabelingProps, DOMProps } 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 {\n renderAsCollectionChild,\n renderCollectionNode,\n useDerivedItemsFromChildren,\n} from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n noOutline,\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 { MenuContext } from \"./context\";\n\nexport interface BaseMenuProps extends DOMProps, AriaLabelingProps, StyleProps {\n /**\n * List of `Menu.Item`s or `Menu.Group`s that make up the menu\n */\n children?: React.ReactNode;\n\n /**\n * Called with the value of a `Menu.Item` when it is selected.\n */\n onAction?: (value: string) => void;\n}\n\nexport type MenuRef = React.Ref<MenuRefValue>;\nexport interface MenuRefValue extends MenuState {\n getRoot: () => HTMLElement | null;\n}\n\nconst COLLECTION_OPTS = {\n itemPlumeType: \"menu-item\",\n sectionPlumeType: \"menu-group\",\n};\n\nexport interface MenuConfig<C extends AnyPlasmicClass> {\n isPlacedTopVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedBottomVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedLeftVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedRightVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n itemsSlot: keyof PlasmicClassArgs<C>;\n itemsContainer: keyof PlasmicClassOverrides<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\n/**\n * Converts props from BaseMenuProps to react-aria's useMenu() props.\n */\nfunction asAriaMenuProps(props: BaseMenuProps) {\n const { children, ...rest } = props;\n const { items, disabledKeys } = useDerivedItemsFromChildren(children, {\n ...COLLECTION_OPTS,\n invalidChildError: `Can only use Menu.Item and Menu.Group as children to Menu`,\n requireItemValue: false,\n });\n\n const collectionChildRenderer = React.useCallback(\n (child: any) => renderAsCollectionChild(child, COLLECTION_OPTS),\n []\n );\n\n return {\n ariaProps: {\n ...rest,\n children: collectionChildRenderer,\n items,\n disabledKeys,\n } as AriaMenuProps<any>,\n };\n}\n\nexport interface MenuState {\n getFocusedValue: () => string | null;\n setFocusedValue: (value: string) => void;\n}\n\nexport function useMenu<P extends BaseMenuProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: MenuConfig<C>,\n ref: MenuRef = null\n) {\n useEnsureSSRProvider();\n const { ariaProps } = asAriaMenuProps(props);\n const triggerContext = React.useContext(TriggeredOverlayContext);\n const rootRef = React.useRef<HTMLElement>(null);\n\n const state = useTreeState(ariaProps);\n\n const menuListRef = React.useRef<HTMLUListElement>(null);\n\n const { menuProps } = useAriaMenu(\n {\n ...ariaProps,\n autoFocus: triggerContext?.autoFocus,\n },\n state,\n menuListRef\n );\n\n const contextValue = React.useMemo(() => ({ state, menuProps: props }), [\n state,\n props,\n ]);\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n };\n\n const overrides: Overrides = {\n [config.root]: {\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n },\n [config.itemsContainer]: {\n as: \"ul\",\n props: mergeProps(menuProps, {\n ref: menuListRef,\n style: {\n ...noOutline(),\n },\n }),\n },\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.itemsSlot]: (\n <MenuContext.Provider value={contextValue}>\n {Array.from(state.collection).map((node) => renderCollectionNode(node))}\n </MenuContext.Provider>\n ),\n };\n\n const plumeState: MenuState = React.useMemo(\n () => ({\n getFocusedValue: () => state.selectionManager.focusedKey as string | null,\n setFocusedValue: (value: string) =>\n state.selectionManager.setFocusedKey(value),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n getFocusedValue: () => plumeState.getFocusedValue(),\n setFocusedValue: (key) => plumeState.setFocusedValue(key),\n }),\n [rootRef, 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","import { Node } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { useMenuSection } from \"@react-aria/menu\";\nimport { useSeparator } from \"@react-aria/separator\";\nimport { pick } from \"../../common\";\nimport { Overrides } from \"../../render/elements\";\nimport { renderCollectionNode, SectionLikeProps } from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n PLUME_STRICT_MODE,\n} from \"../plume-utils\";\nimport {\n getDefaultPlasmicProps,\n getStyleProps,\n StyleProps,\n} from \"../props-utils\";\nimport { MenuContext } from \"./context\";\n\nexport interface BaseMenuGroupProps extends SectionLikeProps, StyleProps {}\n\ninterface MenuGroupConfig<C extends AnyPlasmicClass> {\n noTitleVariant: PlasmicClassVariants<C>;\n isFirstVariant: PlasmicClassVariants<C>;\n\n itemsSlot: keyof PlasmicClassArgs<C>;\n titleSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n separator: keyof PlasmicClassOverrides<C>;\n titleContainer: keyof PlasmicClassOverrides<C>;\n itemsContainer: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useMenuGroup<\n P extends BaseMenuGroupProps,\n C extends AnyPlasmicClass\n>(plasmicClass: C, props: P, config: MenuGroupConfig<C>) {\n const context = React.useContext(MenuContext);\n\n const node = (props as any)._node as\n | Node<React.ReactElement<BaseMenuGroupProps>>\n | undefined;\n\n if (!context || !node) {\n if (PLUME_STRICT_MODE) {\n throw new Error(\"You can only use a Menu.Group within a Menu component.\");\n }\n return getDefaultPlasmicProps(plasmicClass, props);\n }\n\n const { headingProps, groupProps } = useMenuSection({\n heading: props.title,\n \"aria-label\": props[\"aria-label\"],\n });\n\n const { separatorProps } = useSeparator({\n elementType: \"li\",\n });\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.noTitleVariant, active: !props.title },\n {\n def: config.isFirstVariant,\n active: context.state.collection.getFirstKey() === node.key,\n }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.titleSlot]: props.title,\n [config.itemsSlot]: Array.from(node.childNodes).map((childNode) =>\n renderCollectionNode(childNode)\n ),\n };\n\n const overrides: Overrides = {\n [config.root]: {\n props: getStyleProps(props),\n },\n [config.separator]: {\n props: {\n ...separatorProps,\n },\n as: \"li\",\n },\n [config.titleContainer]: {\n props: {\n role: \"presentation\",\n ...headingProps,\n },\n ...(!props.title && {\n render: () => null,\n }),\n },\n [config.itemsContainer]: {\n props: {\n ...groupProps,\n },\n as: \"ul\",\n },\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 };\n}\n","import { Node } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { useMenuItem as useAriaMenuItem } from \"@react-aria/menu\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { ItemLikeProps } from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n noOutline,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n PLUME_STRICT_MODE,\n VariantDef,\n} from \"../plume-utils\";\nimport { getDefaultPlasmicProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { MenuContext } from \"./context\";\n\nexport interface BaseMenuItemProps extends ItemLikeProps {\n /**\n * Called when this item is selected\n */\n onAction?: (key: string) => void;\n}\n\ninterface MenuItemConfig<C extends AnyPlasmicClass> {\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n isHighlightedVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n labelSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n labelContainer: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useMenuItem<\n P extends BaseMenuItemProps,\n C extends AnyPlasmicClass\n>(plasmicClass: C, props: P, config: MenuItemConfig<C>) {\n const menuContext = React.useContext(MenuContext);\n const triggerContext = React.useContext(TriggeredOverlayContext);\n\n if (!menuContext) {\n if (PLUME_STRICT_MODE) {\n throw new Error(\"You can only use a Menu.Item within a Menu component.\");\n }\n\n return getDefaultPlasmicProps(plasmicClass, props);\n }\n\n const { children, onAction } = props;\n\n const { state, menuProps } = menuContext;\n\n // We pass in the Node secretly as an undocumented prop from <Select />\n const node = (props as any)._node as Node<\n React.ReactElement<BaseMenuItemProps>\n >;\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isHighlighted =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n\n const ref = React.useRef<HTMLLIElement>(null);\n\n const { menuItemProps, labelProps } = useAriaMenuItem(\n mergeProps(\n {\n // We need to merge both the onAction on MenuItem and the onAction\n // on Menu\n onAction,\n },\n {\n onAction: menuProps.onAction,\n onClose: triggerContext?.state.close,\n },\n {\n isDisabled,\n \"aria-label\": node && node[\"aria-label\"],\n key: node.key,\n isVirtualized: false,\n closeOnSelect: true,\n }\n ),\n state,\n ref\n );\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isDisabledVariant, active: isDisabled },\n { def: config.isHighlightedVariant, active: isHighlighted }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.labelSlot]: children,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n as: \"li\",\n props: mergeProps(menuItemProps, { ref, style: noOutline() }),\n },\n [config.labelContainer]: {\n props: { ...labelProps },\n },\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 };\n}\n"],"names":["useAriaMenu","useAriaMenuItem"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/plume/menu/context.tsx","../../../../src/plume/menu/menu.tsx","../../../../src/plume/menu/menu-group.tsx","../../../../src/plume/menu/menu-item.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { TreeState } from \"@react-stately/tree\";\nimport type { BaseMenuProps } from \"./menu\";\n\nexport interface MenuContextValue {\n menuProps: BaseMenuProps;\n state: TreeState<any>;\n}\n\nexport const MenuContext = React.createContext<MenuContextValue | undefined>(\n undefined\n);\n","import { useMenu as useAriaMenu, type AriaMenuProps } from \"@react-aria/menu\";\nimport { useTreeState } from \"@react-stately/tree\";\nimport { AriaLabelingProps, DOMProps } 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 {\n renderAsCollectionChild,\n renderCollectionNode,\n useDerivedItemsFromChildren,\n} from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n noOutline,\n} from \"../plume-utils\";\nimport { StyleProps, getStyleProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { MenuContext } from \"./context\";\n\nexport interface BaseMenuProps extends DOMProps, AriaLabelingProps, StyleProps {\n /**\n * List of `Menu.Item`s or `Menu.Group`s that make up the menu\n */\n children?: React.ReactNode;\n\n /**\n * Called with the value of a `Menu.Item` when it is selected.\n */\n onAction?: (value: string) => void;\n}\n\nexport type MenuRef = React.Ref<MenuRefValue>;\nexport interface MenuRefValue extends MenuState {\n getRoot: () => HTMLElement | null;\n}\n\nconst COLLECTION_OPTS = {\n itemPlumeType: \"menu-item\",\n sectionPlumeType: \"menu-group\",\n};\n\nexport interface MenuConfig<C extends AnyPlasmicClass> {\n isPlacedTopVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedBottomVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedLeftVariant?: VariantDef<PlasmicClassVariants<C>>;\n isPlacedRightVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n itemsSlot: keyof PlasmicClassArgs<C>;\n itemsContainer: keyof PlasmicClassOverrides<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\n/**\n * Converts props from BaseMenuProps to react-aria's useMenu() props.\n */\nfunction asAriaMenuProps(props: BaseMenuProps) {\n const { children, ...rest } = props;\n const { items, disabledKeys } = useDerivedItemsFromChildren(children, {\n ...COLLECTION_OPTS,\n invalidChildError: `Can only use Menu.Item and Menu.Group as children to Menu`,\n requireItemValue: false,\n });\n\n const collectionChildRenderer = React.useCallback(\n (child: any) => renderAsCollectionChild(child, COLLECTION_OPTS),\n []\n );\n\n return {\n ariaProps: {\n ...rest,\n children: collectionChildRenderer,\n items,\n disabledKeys,\n } as AriaMenuProps<any>,\n };\n}\n\nexport interface MenuState {\n getFocusedValue: () => string | null;\n setFocusedValue: (value: string) => void;\n}\n\nexport function useMenu<P extends BaseMenuProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: MenuConfig<C>,\n ref: MenuRef = null\n) {\n useEnsureSSRProvider();\n const { ariaProps } = asAriaMenuProps(props);\n const triggerContext = React.useContext(TriggeredOverlayContext);\n const rootRef = React.useRef<HTMLElement>(null);\n\n const state = useTreeState(ariaProps);\n\n const menuListRef = React.useRef<HTMLUListElement>(null);\n\n const { menuProps } = useAriaMenu(\n {\n ...ariaProps,\n autoFocus: triggerContext?.autoFocus,\n },\n state,\n menuListRef\n );\n\n const contextValue = React.useMemo(\n () => ({ state, menuProps: props }),\n [state, props]\n );\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n };\n\n const overrides: Overrides = {\n [config.root]: {\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n },\n [config.itemsContainer]: {\n as: \"ul\",\n props: mergeProps(menuProps, {\n ref: menuListRef,\n style: {\n ...noOutline(),\n },\n }),\n },\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.itemsSlot]: (\n <MenuContext.Provider value={contextValue}>\n {Array.from(state.collection).map((node) => renderCollectionNode(node))}\n </MenuContext.Provider>\n ),\n };\n\n const plumeState: MenuState = React.useMemo(\n () => ({\n getFocusedValue: () => state.selectionManager.focusedKey as string | null,\n setFocusedValue: (value: string) =>\n state.selectionManager.setFocusedKey(value),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n getFocusedValue: () => plumeState.getFocusedValue(),\n setFocusedValue: (key) => plumeState.setFocusedValue(key),\n }),\n [rootRef, 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","import { Node } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { useMenuSection } from \"@react-aria/menu\";\nimport { useSeparator } from \"@react-aria/separator\";\nimport { pick } from \"../../common\";\nimport { Overrides } from \"../../render/elements\";\nimport { renderCollectionNode, SectionLikeProps } from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n PLUME_STRICT_MODE,\n} from \"../plume-utils\";\nimport {\n getDefaultPlasmicProps,\n getStyleProps,\n StyleProps,\n} from \"../props-utils\";\nimport { MenuContext } from \"./context\";\n\nexport interface BaseMenuGroupProps extends SectionLikeProps, StyleProps {}\n\ninterface MenuGroupConfig<C extends AnyPlasmicClass> {\n noTitleVariant: PlasmicClassVariants<C>;\n isFirstVariant: PlasmicClassVariants<C>;\n\n itemsSlot: keyof PlasmicClassArgs<C>;\n titleSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n separator: keyof PlasmicClassOverrides<C>;\n titleContainer: keyof PlasmicClassOverrides<C>;\n itemsContainer: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useMenuGroup<\n P extends BaseMenuGroupProps,\n C extends AnyPlasmicClass\n>(plasmicClass: C, props: P, config: MenuGroupConfig<C>) {\n const context = React.useContext(MenuContext);\n\n const node = (props as any)._node as\n | Node<React.ReactElement<BaseMenuGroupProps>>\n | undefined;\n\n if (!context || !node) {\n if (PLUME_STRICT_MODE) {\n throw new Error(\"You can only use a Menu.Group within a Menu component.\");\n }\n return getDefaultPlasmicProps(plasmicClass, props);\n }\n\n const { headingProps, groupProps } = useMenuSection({\n heading: props.title,\n \"aria-label\": props[\"aria-label\"],\n });\n\n const { separatorProps } = useSeparator({\n elementType: \"li\",\n });\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.noTitleVariant, active: !props.title },\n {\n def: config.isFirstVariant,\n active: context.state.collection.getFirstKey() === node.key,\n }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.titleSlot]: props.title,\n [config.itemsSlot]: Array.from(node.childNodes).map((childNode) =>\n renderCollectionNode(childNode)\n ),\n };\n\n const overrides: Overrides = {\n [config.root]: {\n props: getStyleProps(props),\n },\n [config.separator]: {\n props: {\n ...separatorProps,\n },\n as: \"li\",\n },\n [config.titleContainer]: {\n props: {\n role: \"presentation\",\n ...headingProps,\n },\n ...(!props.title && {\n render: () => null,\n }),\n },\n [config.itemsContainer]: {\n props: {\n ...groupProps,\n },\n as: \"ul\",\n },\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 };\n}\n","import { Node } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { useMenuItem as useAriaMenuItem } from \"@react-aria/menu\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { ItemLikeProps } from \"../collection-utils\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n noOutline,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n PLUME_STRICT_MODE,\n VariantDef,\n} from \"../plume-utils\";\nimport { getDefaultPlasmicProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { MenuContext } from \"./context\";\n\nexport interface BaseMenuItemProps extends ItemLikeProps {\n /**\n * Called when this item is selected\n */\n onAction?: (key: string) => void;\n}\n\ninterface MenuItemConfig<C extends AnyPlasmicClass> {\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n isHighlightedVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n labelSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n labelContainer: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useMenuItem<\n P extends BaseMenuItemProps,\n C extends AnyPlasmicClass\n>(plasmicClass: C, props: P, config: MenuItemConfig<C>) {\n const menuContext = React.useContext(MenuContext);\n const triggerContext = React.useContext(TriggeredOverlayContext);\n\n if (!menuContext) {\n if (PLUME_STRICT_MODE) {\n throw new Error(\"You can only use a Menu.Item within a Menu component.\");\n }\n\n return getDefaultPlasmicProps(plasmicClass, props);\n }\n\n const { children, onAction } = props;\n\n const { state, menuProps } = menuContext;\n\n // We pass in the Node secretly as an undocumented prop from <Select />\n const node = (props as any)._node as Node<\n React.ReactElement<BaseMenuItemProps>\n >;\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isHighlighted =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n\n const ref = React.useRef<HTMLLIElement>(null);\n\n const { menuItemProps, labelProps } = useAriaMenuItem(\n mergeProps(\n {\n // We need to merge both the onAction on MenuItem and the onAction\n // on Menu\n onAction,\n },\n {\n onAction: menuProps.onAction,\n onClose: triggerContext?.state.close,\n },\n {\n isDisabled,\n \"aria-label\": node && node[\"aria-label\"],\n key: node.key,\n isVirtualized: false,\n closeOnSelect: true,\n }\n ),\n state,\n ref\n );\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isDisabledVariant, active: isDisabled },\n { def: config.isHighlightedVariant, active: isHighlighted }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.labelSlot]: children,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n as: \"li\",\n props: mergeProps(menuItemProps, { ref, style: noOutline() }),\n },\n [config.labelContainer]: {\n props: { ...labelProps },\n },\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 };\n}\n"],"names":["useAriaMenu","useAriaMenuItem"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AriaSwitchProps } from "@react-types/switch";
1
+ import { type AriaSwitchProps } from "@react-aria/switch";
2
2
  import * as React from "react";
3
3
  import { AnyPlasmicClass, PlasmicClassArgs, PlasmicClassOverrides, PlasmicClassVariants, VariantDef } from "../plume-utils";
4
4
  import { StyleProps } from "../props-utils";
@@ -46,10 +46,10 @@ function useSwitch(plasmicClass, props, config, ref) {
46
46
  props: mergeProps(getStyleProps(props), {
47
47
  ref: rootRef,
48
48
  }),
49
- wrapChildren: function (children) { return (React.createElement(React.Fragment, null,
49
+ wrapChildren: function (renderedChildren) { return (React.createElement(React.Fragment, null,
50
50
  React.createElement(VisuallyHidden, null,
51
51
  React.createElement("input", __assign({}, inputProps, { ref: inputRef }))),
52
- children)); },
52
+ renderedChildren)); },
53
53
  },
54
54
  _a);
55
55
  var args = __assign(__assign({}, pick.apply(void 0, __spreadArray([props], __read(plasmicClass.internalArgProps), false))), (config.labelSlot ? (_b = {}, _b[config.labelSlot] = children, _b) : {}));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/plume/switch/index.tsx"],"sourcesContent":["import { useSwitch as useAriaSwitch } from \"@react-aria/switch\";\nimport { VisuallyHidden } from \"@react-aria/visually-hidden\";\nimport { useToggleState } from \"@react-stately/toggle\";\nimport { AriaSwitchProps } from \"@react-types/switch\";\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 {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\n\nexport type SwitchRef = React.Ref<SwitchRefValue>;\nexport interface SwitchRefValue extends SwitchState {\n getRoot: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\ninterface SwitchState {\n setChecked: (checked: boolean) => void;\n}\n\nexport interface SwitchProps\n extends Omit<AriaSwitchProps, \"isSelected\" | \"defaultSelected\">,\n StyleProps {\n /**\n * Whether the Switch is checked or not; controlled\n */\n isChecked?: boolean;\n\n /**\n * Whether the Switch is checked by default; uncontrolled\n */\n defaultChecked?: boolean;\n}\n\nfunction asAriaSwitchProps(props: SwitchProps) {\n const ariaProps = {\n ...props,\n isSelected: props.isChecked,\n defaultSelected: props.defaultChecked,\n };\n delete ariaProps[\"isChecked\"];\n delete ariaProps[\"defaultChecked\"];\n return ariaProps;\n}\n\ninterface SwitchConfig<C extends AnyPlasmicClass> {\n isCheckedVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n noLabelVariant?: VariantDef<PlasmicClassVariants<C>>;\n labelSlot?: keyof PlasmicClassArgs<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useSwitch<P extends SwitchProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: SwitchConfig<C>,\n ref: SwitchRef = null\n) {\n const { children, isDisabled } = props;\n useEnsureSSRProvider();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rootRef = React.useRef<HTMLElement>(null);\n const ariaProps = asAriaSwitchProps(props);\n const state = useToggleState(ariaProps);\n const { inputProps } = useAriaSwitch(ariaProps, state, inputRef);\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n {\n def: config.isDisabledVariant,\n active: isDisabled,\n },\n {\n def: config.isCheckedVariant,\n active: state.isSelected,\n },\n {\n def: config.noLabelVariant,\n active: !children,\n }\n ),\n };\n const overrides: Overrides = {\n [config.root]: {\n as: \"label\",\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n wrapChildren: (children: React.ReactNode) => (\n <>\n <VisuallyHidden>\n <input {...inputProps} ref={inputRef} />\n </VisuallyHidden>\n {children}\n </>\n ),\n },\n };\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n ...(config.labelSlot ? { [config.labelSlot]: children } : {}),\n };\n\n const plumeState: SwitchState = React.useMemo(\n () => ({\n setChecked: (checked: boolean) => state.setSelected(checked),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n setChecked: (checked) => plumeState.setChecked(checked),\n }),\n [rootRef, inputRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n args: args as PlasmicClassArgs<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaSwitch"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/plume/switch/index.tsx"],"sourcesContent":["import {\n useSwitch as useAriaSwitch,\n type AriaSwitchProps,\n} from \"@react-aria/switch\";\nimport { VisuallyHidden } from \"@react-aria/visually-hidden\";\nimport { useToggleState } from \"@react-stately/toggle\";\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 {\n AnyPlasmicClass,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n mergeVariantToggles,\n} from \"../plume-utils\";\nimport { StyleProps, getStyleProps } from \"../props-utils\";\n\nexport type SwitchRef = React.Ref<SwitchRefValue>;\nexport interface SwitchRefValue extends SwitchState {\n getRoot: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\ninterface SwitchState {\n setChecked: (checked: boolean) => void;\n}\n\nexport interface SwitchProps\n extends Omit<AriaSwitchProps, \"isSelected\" | \"defaultSelected\">,\n StyleProps {\n /**\n * Whether the Switch is checked or not; controlled\n */\n isChecked?: boolean;\n\n /**\n * Whether the Switch is checked by default; uncontrolled\n */\n defaultChecked?: boolean;\n}\n\nfunction asAriaSwitchProps(props: SwitchProps) {\n const ariaProps = {\n ...props,\n isSelected: props.isChecked,\n defaultSelected: props.defaultChecked,\n };\n delete ariaProps[\"isChecked\"];\n delete ariaProps[\"defaultChecked\"];\n return ariaProps;\n}\n\ninterface SwitchConfig<C extends AnyPlasmicClass> {\n isCheckedVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n noLabelVariant?: VariantDef<PlasmicClassVariants<C>>;\n labelSlot?: keyof PlasmicClassArgs<C>;\n root: keyof PlasmicClassOverrides<C>;\n}\n\nexport function useSwitch<P extends SwitchProps, C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: P,\n config: SwitchConfig<C>,\n ref: SwitchRef = null\n) {\n const { children, isDisabled } = props;\n useEnsureSSRProvider();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rootRef = React.useRef<HTMLElement>(null);\n const ariaProps = asAriaSwitchProps(props);\n const state = useToggleState(ariaProps);\n const { inputProps } = useAriaSwitch(ariaProps, state, inputRef);\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n {\n def: config.isDisabledVariant,\n active: isDisabled,\n },\n {\n def: config.isCheckedVariant,\n active: state.isSelected,\n },\n {\n def: config.noLabelVariant,\n active: !children,\n }\n ),\n };\n const overrides: Overrides = {\n [config.root]: {\n as: \"label\",\n props: mergeProps(getStyleProps(props), {\n ref: rootRef,\n }),\n wrapChildren: (renderedChildren: React.ReactNode) => (\n <>\n <VisuallyHidden>\n <input {...inputProps} ref={inputRef} />\n </VisuallyHidden>\n {renderedChildren}\n </>\n ),\n },\n };\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n ...(config.labelSlot ? { [config.labelSlot]: children } : {}),\n };\n\n const plumeState: SwitchState = React.useMemo(\n () => ({\n setChecked: (checked: boolean) => state.setSelected(checked),\n }),\n [state]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n getRoot: () => rootRef.current,\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n setChecked: (checked) => plumeState.setChecked(checked),\n }),\n [rootRef, inputRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n args: args as PlasmicClassArgs<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaSwitch"],"mappings":"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"}
@@ -25,6 +25,10 @@ export declare function getStateSpecInPlasmicProxy(obj: any, path: ObjectPath):
25
25
  isImplicitStateArray: boolean;
26
26
  } | undefined;
27
27
  export declare function getCurrentInitialValue(obj: any, path: ObjectPath): any;
28
+ /** Whether the runtime guard has detected instability in this initializer.
29
+ * Canvas edits clear the diagnostic when the initializer hash changes.
30
+ */
31
+ export declare function hasUnstableStateInitializer(obj: any, path: ObjectPath): boolean;
28
32
  export declare function resetToInitialValue(obj: any, path: ObjectPath): void;
29
33
  export declare function shallowEqual<T>(a1: T[], a2: T[]): boolean;
30
34
  /**
@@ -1,4 +1,4 @@
1
1
  export { default as get } from "dlv";
2
- export { generateOnMutateForSpec, generateStateOnChangeProp, generateStateOnChangePropForCodeComponents, generateStateValueProp, getCurrentInitialValue, getStateCellsInPlasmicProxy, getStateSpecInPlasmicProxy, initializeCodeComponentStates, initializePlasmicStates, is$StateProxy, isPlasmicStateProxy, resetToInitialValue, set, } from "./helpers";
2
+ export { generateOnMutateForSpec, generateStateOnChangeProp, generateStateOnChangePropForCodeComponents, generateStateValueProp, getCurrentInitialValue, getStateCellsInPlasmicProxy, getStateSpecInPlasmicProxy, hasUnstableStateInitializer, initializeCodeComponentStates, initializePlasmicStates, is$StateProxy, isPlasmicStateProxy, resetToInitialValue, set, } from "./helpers";
3
3
  export { $State, $StateSpec, InitFunc } from "./types";
4
4
  export { useDollarState } from "./valtio";
@@ -46,22 +46,20 @@ export interface StateCell<T> {
46
46
  node: StateSpecNode<any>;
47
47
  path: ObjectPath;
48
48
  initFunc?: InitFunc<T>;
49
- listeners: (() => void)[];
50
49
  initFuncHash: string;
51
50
  overrideEnv?: NoUndefinedField<DollarStateEnv>;
51
+ pendingInit?: boolean;
52
+ unsettledResetCount?: number;
53
+ rejectedInitProbe?: {
54
+ value: T;
55
+ };
56
+ warnedUnstableInitFunc?: boolean;
52
57
  }
53
58
  export interface Internal$State {
54
- registrationsQueue: {
55
- node: StateSpecNode<any>;
56
- path: ObjectPath;
57
- f: InitFunc<any>;
58
- overrideEnv?: NoUndefinedField<DollarStateEnv>;
59
- }[];
60
59
  stateValues: Record<string, any>;
61
60
  env: NoUndefinedField<DollarStateEnv>;
62
61
  rootSpecTree: StateSpecNode<any>;
63
62
  specTreeLeaves: StateSpecNode<any>[];
64
- specs: $StateSpec<any>[];
65
63
  stateInitializationEnv: {
66
64
  stack: string[];
67
65
  visited: Set<string>;
@@ -0,0 +1 @@
1
+ export {};