@plasmicpkgs/react-aria 0.0.117 → 0.0.119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contexts.d.ts +2 -1
  3. package/dist/react-aria.esm.js +128 -87
  4. package/dist/react-aria.esm.js.map +1 -1
  5. package/dist/react-aria.js +127 -86
  6. package/dist/react-aria.js.map +1 -1
  7. package/dist/utils.d.ts +5 -4
  8. package/package.json +2 -2
  9. package/skinny/contexts-5cb81c2f.esm.js.map +1 -1
  10. package/skinny/contexts-6d0cb2b1.cjs.js.map +1 -1
  11. package/skinny/contexts.d.ts +2 -1
  12. package/skinny/registerCheckboxGroup.cjs.js +11 -8
  13. package/skinny/registerCheckboxGroup.cjs.js.map +1 -1
  14. package/skinny/registerCheckboxGroup.esm.js +11 -8
  15. package/skinny/registerCheckboxGroup.esm.js.map +1 -1
  16. package/skinny/registerComboBox.cjs.js.map +1 -1
  17. package/skinny/registerComboBox.esm.js +1 -1
  18. package/skinny/registerComboBox.esm.js.map +1 -1
  19. package/skinny/registerDialogTrigger.cjs.js +17 -2
  20. package/skinny/registerDialogTrigger.cjs.js.map +1 -1
  21. package/skinny/registerDialogTrigger.esm.js +17 -2
  22. package/skinny/registerDialogTrigger.esm.js.map +1 -1
  23. package/skinny/registerInput.cjs.js +1 -1
  24. package/skinny/registerInput.cjs.js.map +1 -1
  25. package/skinny/registerInput.esm.js +2 -2
  26. package/skinny/registerInput.esm.js.map +1 -1
  27. package/skinny/{registerListBox-21dc99fa.esm.js → registerListBox-0f6ebcf0.esm.js} +2 -2
  28. package/skinny/{registerListBox-21dc99fa.esm.js.map → registerListBox-0f6ebcf0.esm.js.map} +1 -1
  29. package/skinny/registerListBox.esm.js +1 -1
  30. package/skinny/registerOverlayArrow.cjs.js +1 -1
  31. package/skinny/registerOverlayArrow.cjs.js.map +1 -1
  32. package/skinny/registerOverlayArrow.esm.js +2 -2
  33. package/skinny/registerOverlayArrow.esm.js.map +1 -1
  34. package/skinny/registerPopover.cjs.js.map +1 -1
  35. package/skinny/registerPopover.esm.js.map +1 -1
  36. package/skinny/registerRadioGroup.cjs.js +11 -8
  37. package/skinny/registerRadioGroup.cjs.js.map +1 -1
  38. package/skinny/registerRadioGroup.esm.js +11 -8
  39. package/skinny/registerRadioGroup.esm.js.map +1 -1
  40. package/skinny/registerSection.esm.js +1 -1
  41. package/skinny/registerSelect.cjs.js.map +1 -1
  42. package/skinny/registerSelect.esm.js +1 -1
  43. package/skinny/registerSelect.esm.js.map +1 -1
  44. package/skinny/registerSlider.cjs.js +17 -14
  45. package/skinny/registerSlider.cjs.js.map +1 -1
  46. package/skinny/registerSlider.esm.js +17 -14
  47. package/skinny/registerSlider.esm.js.map +1 -1
  48. package/skinny/registerTextArea.cjs.js +5 -2
  49. package/skinny/registerTextArea.cjs.js.map +1 -1
  50. package/skinny/registerTextArea.esm.js +6 -3
  51. package/skinny/registerTextArea.esm.js.map +1 -1
  52. package/skinny/registerTextField.cjs.js +28 -17
  53. package/skinny/registerTextField.cjs.js.map +1 -1
  54. package/skinny/registerTextField.esm.js +28 -17
  55. package/skinny/registerTextField.esm.js.map +1 -1
  56. package/skinny/registerTooltip.cjs.js +37 -34
  57. package/skinny/registerTooltip.cjs.js.map +1 -1
  58. package/skinny/registerTooltip.esm.js +37 -34
  59. package/skinny/registerTooltip.esm.js.map +1 -1
  60. package/skinny/utils-fc1ddd7c.cjs.js.map +1 -1
  61. package/skinny/utils-fd88ad47.esm.js.map +1 -1
  62. package/skinny/utils.d.ts +5 -4
  63. package/skinny/registerButton.stories.cjs.js +0 -163
  64. package/skinny/registerButton.stories.cjs.js.map +0 -1
  65. package/skinny/registerButton.stories.esm.js +0 -149
  66. package/skinny/registerButton.stories.esm.js.map +0 -1
  67. package/skinny/registerCheckboxGroup.stories.cjs.js +0 -121
  68. package/skinny/registerCheckboxGroup.stories.cjs.js.map +0 -1
  69. package/skinny/registerCheckboxGroup.stories.esm.js +0 -109
  70. package/skinny/registerCheckboxGroup.stories.esm.js.map +0 -1
  71. package/skinny/registerComboBox.stories.cjs.js +0 -244
  72. package/skinny/registerComboBox.stories.cjs.js.map +0 -1
  73. package/skinny/registerComboBox.stories.esm.js +0 -230
  74. package/skinny/registerComboBox.stories.esm.js.map +0 -1
  75. package/skinny/registerDialogTrigger.stories.cjs.js +0 -458
  76. package/skinny/registerDialogTrigger.stories.cjs.js.map +0 -1
  77. package/skinny/registerDialogTrigger.stories.esm.js +0 -441
  78. package/skinny/registerDialogTrigger.stories.esm.js.map +0 -1
  79. package/skinny/registerListbox.stories.cjs.js +0 -219
  80. package/skinny/registerListbox.stories.cjs.js.map +0 -1
  81. package/skinny/registerListbox.stories.esm.js +0 -206
  82. package/skinny/registerListbox.stories.esm.js.map +0 -1
  83. package/skinny/registerModal.stories.cjs.js +0 -194
  84. package/skinny/registerModal.stories.cjs.js.map +0 -1
  85. package/skinny/registerModal.stories.esm.js +0 -181
  86. package/skinny/registerModal.stories.esm.js.map +0 -1
  87. package/skinny/registerPopover.stories.cjs.js +0 -102
  88. package/skinny/registerPopover.stories.cjs.js.map +0 -1
  89. package/skinny/registerPopover.stories.esm.js +0 -92
  90. package/skinny/registerPopover.stories.esm.js.map +0 -1
  91. package/skinny/registerRadioGroup.stories.cjs.js +0 -120
  92. package/skinny/registerRadioGroup.stories.cjs.js.map +0 -1
  93. package/skinny/registerRadioGroup.stories.esm.js +0 -108
  94. package/skinny/registerRadioGroup.stories.esm.js.map +0 -1
  95. package/skinny/registerSelect.stories.cjs.js +0 -215
  96. package/skinny/registerSelect.stories.cjs.js.map +0 -1
  97. package/skinny/registerSelect.stories.esm.js +0 -202
  98. package/skinny/registerSelect.stories.esm.js.map +0 -1
  99. package/skinny/registerSlider.stories.cjs.js +0 -165
  100. package/skinny/registerSlider.stories.cjs.js.map +0 -1
  101. package/skinny/registerSlider.stories.esm.js +0 -151
  102. package/skinny/registerSlider.stories.esm.js.map +0 -1
  103. package/skinny/registerSwitch.stories.cjs.js +0 -162
  104. package/skinny/registerSwitch.stories.cjs.js.map +0 -1
  105. package/skinny/registerSwitch.stories.esm.js +0 -148
  106. package/skinny/registerSwitch.stories.esm.js.map +0 -1
  107. package/skinny/registerTextField-common-stories.cjs.js +0 -199
  108. package/skinny/registerTextField-common-stories.cjs.js.map +0 -1
  109. package/skinny/registerTextField-common-stories.esm.js +0 -185
  110. package/skinny/registerTextField-common-stories.esm.js.map +0 -1
  111. package/skinny/registerTextField-input.stories.cjs.js +0 -54
  112. package/skinny/registerTextField-input.stories.cjs.js.map +0 -1
  113. package/skinny/registerTextField-input.stories.esm.js +0 -37
  114. package/skinny/registerTextField-input.stories.esm.js.map +0 -1
  115. package/skinny/registerTextField-textarea.stories.cjs.js +0 -55
  116. package/skinny/registerTextField-textarea.stories.cjs.js.map +0 -1
  117. package/skinny/registerTextField-textarea.stories.esm.js +0 -39
  118. package/skinny/registerTextField-textarea.stories.esm.js.map +0 -1
  119. package/skinny/registerTooltip.stories.cjs.js +0 -616
  120. package/skinny/registerTooltip.stories.cjs.js.map +0 -1
  121. package/skinny/registerTooltip.stories.esm.js +0 -596
  122. package/skinny/registerTooltip.stories.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registerTooltip.esm.js","sources":["../src/registerTooltip.tsx"],"sourcesContent":["import React, { useCallback, useId, useRef, useState } from \"react\";\nimport { mergeProps, useFocusWithin, useHover } from \"react-aria\";\nimport {\n Provider,\n Tooltip,\n TooltipProps,\n TooltipTriggerStateContext,\n} from \"react-aria-components\";\nimport { TooltipTriggerProps, useTooltipTriggerState } from \"react-stately\";\nimport { COMMON_STYLES, getCommonOverlayProps } from \"./common\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n registerComponentHelper,\n useIsOpen,\n WithPlasmicCanvasComponentInfo,\n} from \"./utils\";\nimport { pickAriaComponentVariants, WithVariants } from \"./variant-utils\";\n\n// NOTE: Placement should be managed as variants, not just props.\n// When `shouldFlip` is true, the placement prop may not represent the final position\n// (e.g., if placement is set to \"bottom\" but lacks space, the tooltip may flip to \"top\").\n// However, data-selectors will consistently indicate the actual placement of the tooltip.\nconst TOOLTIP_VARIANTS = [\n \"placementTop\" as const,\n \"placementBottom\" as const,\n \"placementLeft\" as const,\n \"placementRight\" as const,\n];\n\nconst { variants, withObservedValues } =\n pickAriaComponentVariants(TOOLTIP_VARIANTS);\n\nexport interface BaseTooltipProps\n extends Omit<TooltipTriggerProps, \"trigger\">,\n TooltipProps,\n WithPlasmicCanvasComponentInfo,\n WithVariants<typeof TOOLTIP_VARIANTS> {\n children: React.ReactElement<HTMLElement>;\n tooltipContent?: React.ReactElement;\n resetClassName?: string;\n trigger?: \"focus\" | \"focus and hover\" | undefined;\n className?: string;\n}\n\n// In Studio, the tooltip is always controlled because isOpen is attached to the code component's state.\n// In Codegen, the user decides whether the tooltip is controlled or not. So we need to handle both cases.\nexport function BaseTooltip(props: BaseTooltipProps) {\n if (props.isOpen !== undefined) {\n return <ControlledBaseTooltip {...props} />;\n } else {\n return <UncontrolledBaseTooltip {...props} />;\n }\n}\n\nfunction UncontrolledBaseTooltip({ onOpenChange, ...props }: BaseTooltipProps) {\n const [open, setOpen] = useState(props.defaultOpen ?? false);\n const onOpenChangeMerged = useCallback(\n (newOpen: boolean) => {\n setOpen(newOpen);\n onOpenChange?.(newOpen);\n },\n [onOpenChange]\n );\n return (\n <ControlledBaseTooltip\n {...props}\n isOpen={open}\n onOpenChange={onOpenChangeMerged}\n />\n );\n}\n\nfunction ControlledBaseTooltip(props: BaseTooltipProps) {\n const {\n children,\n isDisabled = false,\n delay,\n closeDelay,\n trigger,\n isOpen,\n tooltipContent,\n resetClassName,\n placement,\n offset,\n crossOffset,\n shouldFlip,\n className,\n onOpenChange = () => {},\n plasmicUpdateVariant,\n __plasmic_selection_prop__,\n } = props;\n\n const isCanvasAwareOpen = useIsOpen({\n triggerSlotName: \"children\",\n isOpen,\n __plasmic_selection_prop__,\n });\n\n // The following is a custom implementation of the <TooltipTrigger /> component.\n // The default <TooltipTrigger /> from react-aria-components automatically manages state changes when a useFocusable element (e.g., an Aria Button) is clicked.\n // However, in our custom trigger, <TriggerWrapper>, we use useFocusWithin to explicitly handle state changes, allowing any element—not just an Aria Button—to act as a trigger.\n // However, this results in duplicate state updates when using an Aria Button, as state changes are triggered both by useFocusWithin and useFocusable.\n // Consequently, onOpenChange is called twice.\n //\n // This implementation is adapted from:\n // https://github.com/adobe/react-spectrum/blob/988096cf3f1dbd59f274d8c552e9fe7d5dcf4f41/packages/react-aria-components/src/Tooltip.tsx#L89\n // The <FocusableProvider> has been removed, as it handles automatic state updates for the Aria Button.\n const ref = useRef<any>(null);\n const tooltipId = useId();\n\n const state = useTooltipTriggerState({\n ...props,\n isOpen: isCanvasAwareOpen,\n trigger: trigger === \"focus\" ? trigger : undefined,\n });\n\n return (\n <Provider values={[[TooltipTriggerStateContext, state]]}>\n <TriggerWrapper\n ref={ref}\n className={className}\n tooltipId={state.isOpen ? tooltipId : undefined}\n isDisabled={isDisabled}\n onOpenChange={onOpenChange}\n triggerOnFocusOnly={trigger === \"focus\"}\n >\n {children}\n </TriggerWrapper>\n <Tooltip\n triggerRef={ref}\n // @ts-expect-error <Tooltip> is wrongly typed to not have id prop\n id={tooltipId}\n offset={offset}\n delay={delay}\n closeDelay={closeDelay}\n crossOffset={crossOffset}\n shouldFlip={shouldFlip}\n className={resetClassName}\n onOpenChange={onOpenChange}\n placement={placement}\n >\n {({ placement: _placement }) =>\n withObservedValues(\n <>{tooltipContent}</>,\n {\n placementTop: _placement === \"top\",\n placementBottom: _placement === \"bottom\",\n placementLeft: _placement === \"left\",\n placementRight: _placement === \"right\",\n },\n plasmicUpdateVariant\n )\n }\n </Tooltip>\n </Provider>\n );\n}\n\ninterface TriggerWrapperProps {\n children: React.ReactElement;\n onOpenChange: (isOpen: boolean) => void;\n isDisabled: boolean;\n triggerOnFocusOnly: boolean;\n tooltipId?: string;\n className?: string;\n}\n\n// React Aria's TooltipTrigger requires a focusable element with ref.\n// To make sure that this requirement is fulfilled, wrap everything in a focusable div.\n// https://react-spectrum.adobe.com/react-aria/Tooltip.html#example\n// (In the example, Aria Button works as a trigger because it uses useFocusable behind the scenes)\n//\n// Discussion (React-aria-components TooltipTrigger with custom button):\n// https://github.com/adobe/react-spectrum/discussions/5119#discussioncomment-7084661\nconst TriggerWrapper = React.forwardRef<HTMLDivElement, TriggerWrapperProps>(\n function TriggerWrapper_(\n {\n children,\n onOpenChange,\n isDisabled,\n triggerOnFocusOnly,\n tooltipId,\n className,\n },\n ref: React.Ref<HTMLDivElement>\n ) {\n const { hoverProps } = useHover({\n isDisabled,\n onHoverStart: () => !triggerOnFocusOnly && onOpenChange(true),\n onHoverEnd: () => !triggerOnFocusOnly && onOpenChange(false),\n });\n\n // useFocusWithin captures focus events for all nested focusable elements\n const { focusWithinProps } = useFocusWithin({\n isDisabled,\n onFocusWithin: () => {\n onOpenChange(true);\n },\n onBlurWithin: () => {\n onOpenChange(false);\n },\n });\n\n const mergedProps = mergeProps(hoverProps, focusWithinProps, {\n \"aria-describedby\": tooltipId,\n // We expose className to allow user control over the wrapper div's styling.\n className,\n ref,\n style: COMMON_STYLES,\n });\n\n return <div {...mergedProps}>{children}</div>;\n }\n);\n\nexport function registerTooltip(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseTooltip>\n) {\n registerComponentHelper(\n loader,\n BaseTooltip,\n {\n name: \"plasmic-react-aria-tooltip\",\n displayName: \"Aria Tooltip\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerTooltip\",\n importName: \"BaseTooltip\",\n isAttachment: true,\n variants,\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n displayName: \"Trigger\",\n defaultValue: {\n type: \"text\",\n value: \"Hover me!\",\n styles: {\n width: \"hug\",\n },\n },\n },\n tooltipContent: {\n type: \"slot\",\n mergeWithParent: true,\n displayName: \"Tooltip Content\",\n // NOTE: This is not applied in attachment\n defaultValue: {\n type: \"text\",\n value: \"Hello from Tooltip!\",\n styles: {\n background: \"black\",\n color: \"white\",\n padding: \"7px\",\n borderRadius: \"7px\",\n },\n },\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n isDisabled: {\n type: \"boolean\",\n },\n delay: {\n type: \"number\",\n // Default value is explicitly set to 0 to prevent users from mistakenly thinking the tooltip isn’t opening due to a delay.\n defaultValue: 0,\n defaultValueHint: 0,\n description:\n \"The delay (in milliseconds) for the tooltip to show up.\",\n },\n closeDelay: {\n type: \"number\",\n // Default value is explicitly set to 0 to prevent users from mistakenly thinking the tooltip isn’t closing due to a delay.\n defaultValue: 0,\n defaultValueHint: 0,\n description: \"The delay (in milliseconds) for the tooltip to close.\",\n },\n trigger: {\n type: \"choice\",\n options: [\"focus\", \"focus and hover\"],\n defaultValueHint: \"focus and hover\",\n },\n ...getCommonOverlayProps<BaseTooltipProps>(\"popover\", {\n placement: { defaultValueHint: \"top\" },\n offset: { defaultValueHint: 0 },\n containerPadding: { defaultValueHint: 12 },\n crossOffset: { defaultValueHint: 0 },\n }),\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n description: \"Whether the overlay is open by default\",\n defaultValueHint: false,\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"registerTooltip.esm.js","sources":["../src/registerTooltip.tsx"],"sourcesContent":["import React, { useCallback, useId, useRef, useState } from \"react\";\nimport { mergeProps, useFocusWithin, useHover } from \"react-aria\";\nimport {\n Provider,\n Tooltip,\n TooltipProps,\n TooltipTriggerStateContext,\n} from \"react-aria-components\";\nimport { TooltipTriggerProps, useTooltipTriggerState } from \"react-stately\";\nimport { COMMON_STYLES, getCommonOverlayProps } from \"./common\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n registerComponentHelper,\n useIsOpen,\n WithPlasmicCanvasComponentInfo,\n} from \"./utils\";\nimport { pickAriaComponentVariants, WithVariants } from \"./variant-utils\";\n\n// NOTE: Placement should be managed as variants, not just props.\n// When `shouldFlip` is true, the placement prop may not represent the final position\n// (e.g., if placement is set to \"bottom\" but lacks space, the tooltip may flip to \"top\").\n// However, data-selectors will consistently indicate the actual placement of the tooltip.\nconst TOOLTIP_VARIANTS = [\n \"placementTop\" as const,\n \"placementBottom\" as const,\n \"placementLeft\" as const,\n \"placementRight\" as const,\n];\n\nconst { variants, withObservedValues } =\n pickAriaComponentVariants(TOOLTIP_VARIANTS);\n\nexport interface BaseTooltipProps\n extends Omit<TooltipTriggerProps, \"trigger\">,\n TooltipProps,\n WithPlasmicCanvasComponentInfo,\n WithVariants<typeof TOOLTIP_VARIANTS> {\n children: React.ReactElement<HTMLElement>;\n tooltipContent?: React.ReactElement;\n resetClassName?: string;\n trigger?: \"focus\" | \"focus and hover\" | undefined;\n className?: string;\n}\n\n// In Studio, the tooltip is always controlled because isOpen is attached to the code component's state.\n// In Codegen, the user decides whether the tooltip is controlled or not. So we need to handle both cases.\nexport function BaseTooltip(props: BaseTooltipProps) {\n if (props.isOpen !== undefined) {\n return <ControlledBaseTooltip {...props} />;\n } else {\n return <UncontrolledBaseTooltip {...props} />;\n }\n}\n\nfunction UncontrolledBaseTooltip({ onOpenChange, ...props }: BaseTooltipProps) {\n const [open, setOpen] = useState(props.defaultOpen ?? false);\n const onOpenChangeMerged = useCallback(\n (newOpen: boolean) => {\n setOpen(newOpen);\n onOpenChange?.(newOpen);\n },\n [onOpenChange]\n );\n return (\n <ControlledBaseTooltip\n {...props}\n isOpen={open}\n onOpenChange={onOpenChangeMerged}\n />\n );\n}\n\nfunction ControlledBaseTooltip(props: BaseTooltipProps) {\n const {\n children,\n isDisabled = false,\n delay,\n closeDelay,\n trigger,\n isOpen,\n tooltipContent,\n resetClassName,\n placement,\n offset,\n crossOffset,\n shouldFlip,\n className,\n onOpenChange = () => {},\n plasmicUpdateVariant,\n __plasmic_selection_prop__,\n } = props;\n\n const isCanvasAwareOpen = useIsOpen({\n triggerSlotName: \"children\",\n isOpen,\n __plasmic_selection_prop__,\n });\n\n // The following is a custom implementation of the <TooltipTrigger /> component.\n // The default <TooltipTrigger /> from react-aria-components automatically manages state changes when a useFocusable element (e.g., an Aria Button) is clicked.\n // However, in our custom trigger, <TriggerWrapper>, we use useFocusWithin to explicitly handle state changes, allowing any element—not just an Aria Button—to act as a trigger.\n // However, this results in duplicate state updates when using an Aria Button, as state changes are triggered both by useFocusWithin and useFocusable.\n // Consequently, onOpenChange is called twice.\n //\n // This implementation is adapted from:\n // https://github.com/adobe/react-spectrum/blob/988096cf3f1dbd59f274d8c552e9fe7d5dcf4f41/packages/react-aria-components/src/Tooltip.tsx#L89\n // The <FocusableProvider> has been removed, as it handles automatic state updates for the Aria Button.\n const ref = useRef<any>(null);\n const tooltipId = useId();\n\n const state = useTooltipTriggerState({\n ...props,\n isOpen: isCanvasAwareOpen,\n trigger: trigger === \"focus\" ? trigger : undefined,\n });\n\n return (\n // TooltipTriggerStateContext used by BaseOverlayArrow\n <Provider values={[[TooltipTriggerStateContext, state]]}>\n <TriggerWrapper\n ref={ref}\n className={className}\n tooltipId={state.isOpen ? tooltipId : undefined}\n isDisabled={isDisabled}\n onOpenChange={onOpenChange}\n triggerOnFocusOnly={trigger === \"focus\"}\n >\n {children}\n </TriggerWrapper>\n <Tooltip\n triggerRef={ref}\n // @ts-expect-error <Tooltip> is wrongly typed to not have id prop\n id={tooltipId}\n offset={offset}\n delay={delay}\n closeDelay={closeDelay}\n crossOffset={crossOffset}\n shouldFlip={shouldFlip}\n className={resetClassName}\n onOpenChange={onOpenChange}\n placement={placement}\n >\n {({ placement: _placement }) =>\n withObservedValues(\n <>{tooltipContent}</>,\n {\n placementTop: _placement === \"top\",\n placementBottom: _placement === \"bottom\",\n placementLeft: _placement === \"left\",\n placementRight: _placement === \"right\",\n },\n plasmicUpdateVariant\n )\n }\n </Tooltip>\n </Provider>\n );\n}\n\ninterface TriggerWrapperProps {\n children: React.ReactElement;\n onOpenChange: (isOpen: boolean) => void;\n isDisabled: boolean;\n triggerOnFocusOnly: boolean;\n tooltipId?: string;\n className?: string;\n}\n\n// React Aria's TooltipTrigger requires a focusable element with ref.\n// To make sure that this requirement is fulfilled, wrap everything in a focusable div.\n// https://react-spectrum.adobe.com/react-aria/Tooltip.html#example\n// (In the example, Aria Button works as a trigger because it uses useFocusable behind the scenes)\n//\n// Discussion (React-aria-components TooltipTrigger with custom button):\n// https://github.com/adobe/react-spectrum/discussions/5119#discussioncomment-7084661\nconst TriggerWrapper = React.forwardRef<HTMLDivElement, TriggerWrapperProps>(\n function TriggerWrapper_(\n {\n children,\n onOpenChange,\n isDisabled,\n triggerOnFocusOnly,\n tooltipId,\n className,\n },\n ref: React.Ref<HTMLDivElement>\n ) {\n const { hoverProps } = useHover({\n isDisabled,\n onHoverStart: () => !triggerOnFocusOnly && onOpenChange(true),\n onHoverEnd: () => !triggerOnFocusOnly && onOpenChange(false),\n });\n\n // useFocusWithin captures focus events for all nested focusable elements\n const { focusWithinProps } = useFocusWithin({\n isDisabled,\n onFocusWithin: () => {\n onOpenChange(true);\n },\n onBlurWithin: () => {\n onOpenChange(false);\n },\n });\n\n const mergedProps = mergeProps(hoverProps, focusWithinProps, {\n \"aria-describedby\": tooltipId,\n // We expose className to allow user control over the wrapper div's styling.\n className,\n ref,\n style: COMMON_STYLES,\n });\n\n return <div {...mergedProps}>{children}</div>;\n }\n);\n\nexport function registerTooltip(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseTooltip>\n) {\n registerComponentHelper(\n loader,\n BaseTooltip,\n {\n name: \"plasmic-react-aria-tooltip\",\n displayName: \"Aria Tooltip\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerTooltip\",\n importName: \"BaseTooltip\",\n isAttachment: true,\n variants,\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n displayName: \"Trigger\",\n defaultValue: {\n type: \"text\",\n value: \"Hover me!\",\n styles: {\n width: \"hug\",\n },\n },\n },\n tooltipContent: {\n type: \"slot\",\n mergeWithParent: true,\n displayName: \"Tooltip Content\",\n // NOTE: This is not applied in attachment\n defaultValue: {\n type: \"text\",\n value: \"Hello from Tooltip!\",\n styles: {\n background: \"black\",\n color: \"white\",\n padding: \"7px\",\n borderRadius: \"7px\",\n },\n },\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n isDisabled: {\n type: \"boolean\",\n },\n delay: {\n type: \"number\",\n // Default value is explicitly set to 0 to prevent users from mistakenly thinking the tooltip isn’t opening due to a delay.\n defaultValue: 0,\n defaultValueHint: 0,\n description:\n \"The delay (in milliseconds) for the tooltip to show up.\",\n },\n closeDelay: {\n type: \"number\",\n // Default value is explicitly set to 0 to prevent users from mistakenly thinking the tooltip isn’t closing due to a delay.\n defaultValue: 0,\n defaultValueHint: 0,\n description: \"The delay (in milliseconds) for the tooltip to close.\",\n },\n trigger: {\n type: \"choice\",\n options: [\"focus\", \"focus and hover\"],\n defaultValueHint: \"focus and hover\",\n },\n ...getCommonOverlayProps<BaseTooltipProps>(\"popover\", {\n placement: { defaultValueHint: \"top\" },\n offset: { defaultValueHint: 0 },\n containerPadding: { defaultValueHint: 12 },\n crossOffset: { defaultValueHint: 0 },\n }),\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n description: \"Whether the overlay is open by default\",\n defaultValueHint: false,\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,gBAAmB,GAAA;AAAA,EACvB,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AACF,CAAA,CAAA;AAEA,MAAM,EAAE,QAAA,EAAU,kBAAmB,EAAA,GACnC,0BAA0B,gBAAgB,CAAA,CAAA;AAgBrC,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAI,IAAA,KAAA,CAAM,WAAW,KAAW,CAAA,EAAA;AAC9B,IAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,0CAA0B,KAAO,CAAA,CAAA,CAAA;AAAA,GACpC,MAAA;AACL,IAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,4CAA4B,KAAO,CAAA,CAAA,CAAA;AAAA,GAC7C;AACF,CAAA;AAEA,SAAS,wBAAwB,EAA8C,EAAA;AAA9C,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAvDnC,YAAA,EAAA,GAuDiC,EAAmB,EAAA,KAAA,GAAA,SAAA,CAAnB,IAAmB,CAAjB,cAAA,CAAA,CAAA,CAAA;AAvDnC,EAAAA,IAAAA,GAAAA,CAAAA;AAwDE,EAAM,MAAA,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,QAAA,CAAA,CAASA,MAAA,KAAM,CAAA,WAAA,KAAN,IAAAA,GAAAA,GAAAA,GAAqB,KAAK,CAAA,CAAA;AAC3D,EAAA,MAAM,kBAAqB,GAAA,WAAA;AAAA,IACzB,CAAC,OAAqB,KAAA;AACpB,MAAA,OAAA,CAAQ,OAAO,CAAA,CAAA;AACf,MAAe,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,OAAA,CAAA,CAAA;AAAA,KACjB;AAAA,IACA,CAAC,YAAY,CAAA;AAAA,GACf,CAAA;AACA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,qBAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACK,KADL,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA;AAAA,MACR,YAAc,EAAA,kBAAA;AAAA,KAAA,CAAA;AAAA,GAChB,CAAA;AAEJ,CAAA;AAEA,SAAS,sBAAsB,KAAyB,EAAA;AACtD,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,UAAa,GAAA,KAAA;AAAA,IACb,KAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAe,MAAM;AAAA,KAAC;AAAA,IACtB,oBAAA;AAAA,IACA,0BAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,oBAAoB,SAAU,CAAA;AAAA,IAClC,eAAiB,EAAA,UAAA;AAAA,IACjB,MAAA;AAAA,IACA,0BAAA;AAAA,GACD,CAAA,CAAA;AAWD,EAAM,MAAA,GAAA,GAAM,OAAY,IAAI,CAAA,CAAA;AAC5B,EAAA,MAAM,YAAY,KAAM,EAAA,CAAA;AAExB,EAAM,MAAA,KAAA,GAAQ,sBAAuB,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAChC,KADgC,CAAA,EAAA;AAAA,IAEnC,MAAQ,EAAA,iBAAA;AAAA,IACR,OAAA,EAAS,OAAY,KAAA,OAAA,GAAU,OAAU,GAAA,KAAA,CAAA;AAAA,GAC1C,CAAA,CAAA,CAAA;AAED,EAAA;AAAA;AAAA,oBAEE,KAAA,CAAA,aAAA,CAAC,YAAS,MAAQ,EAAA,CAAC,CAAC,0BAA4B,EAAA,KAAK,CAAC,CACpD,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA,EAAW,KAAM,CAAA,MAAA,GAAS,SAAY,GAAA,KAAA,CAAA;AAAA,QACtC,UAAA;AAAA,QACA,YAAA;AAAA,QACA,oBAAoB,OAAY,KAAA,OAAA;AAAA,OAAA;AAAA,MAE/B,QAAA;AAAA,KAEH,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,UAAY,EAAA,GAAA;AAAA,QAEZ,EAAI,EAAA,SAAA;AAAA,QACJ,MAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAW,EAAA,cAAA;AAAA,QACX,YAAA;AAAA,QACA,SAAA;AAAA,OAAA;AAAA,MAEC,CAAC,EAAE,SAAW,EAAA,UAAA,EACb,KAAA,kBAAA;AAAA,kEACK,cAAe,CAAA;AAAA,QAClB;AAAA,UACE,cAAc,UAAe,KAAA,KAAA;AAAA,UAC7B,iBAAiB,UAAe,KAAA,QAAA;AAAA,UAChC,eAAe,UAAe,KAAA,MAAA;AAAA,UAC9B,gBAAgB,UAAe,KAAA,OAAA;AAAA,SACjC;AAAA,QACA,oBAAA;AAAA,OACF;AAAA,KAGN,CAAA;AAAA,IAAA;AAEJ,CAAA;AAkBA,MAAM,iBAAiB,KAAM,CAAA,UAAA;AAAA,EAC3B,SAAS,eACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,KAEF,GACA,EAAA;AACA,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,QAAS,CAAA;AAAA,MAC9B,UAAA;AAAA,MACA,YAAc,EAAA,MAAM,CAAC,kBAAA,IAAsB,aAAa,IAAI,CAAA;AAAA,MAC5D,UAAY,EAAA,MAAM,CAAC,kBAAA,IAAsB,aAAa,KAAK,CAAA;AAAA,KAC5D,CAAA,CAAA;AAGD,IAAM,MAAA,EAAE,gBAAiB,EAAA,GAAI,cAAe,CAAA;AAAA,MAC1C,UAAA;AAAA,MACA,eAAe,MAAM;AACnB,QAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,OACnB;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,OACpB;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,UAAW,CAAA,UAAA,EAAY,gBAAkB,EAAA;AAAA,MAC3D,kBAAoB,EAAA,SAAA;AAAA;AAAA,MAEpB,SAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAO,EAAA,aAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAQ,EAAA,cAAA,CAAA,EAAA,EAAA,WAAA,CAAA,EAAc,QAAS,CAAA,CAAA;AAAA,GACzC;AACF,CAAA,CAAA;AAEgB,SAAA,eAAA,CACd,QACA,SACA,EAAA;AACA,EAAA,uBAAA;AAAA,IACE,MAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,IAAM,EAAA,4BAAA;AAAA,MACN,WAAa,EAAA,cAAA;AAAA,MACb,UAAY,EAAA,gDAAA;AAAA,MACZ,UAAY,EAAA,aAAA;AAAA,MACZ,YAAc,EAAA,IAAA;AAAA,MACd,QAAA;AAAA,MACA,KAAO,EAAA,aAAA,CAAA,cAAA,CAAA;AAAA,QACL,QAAU,EAAA;AAAA,UACR,IAAM,EAAA,MAAA;AAAA,UACN,eAAiB,EAAA,IAAA;AAAA,UACjB,WAAa,EAAA,SAAA;AAAA,UACb,YAAc,EAAA;AAAA,YACZ,IAAM,EAAA,MAAA;AAAA,YACN,KAAO,EAAA,WAAA;AAAA,YACP,MAAQ,EAAA;AAAA,cACN,KAAO,EAAA,KAAA;AAAA,aACT;AAAA,WACF;AAAA,SACF;AAAA,QACA,cAAgB,EAAA;AAAA,UACd,IAAM,EAAA,MAAA;AAAA,UACN,eAAiB,EAAA,IAAA;AAAA,UACjB,WAAa,EAAA,iBAAA;AAAA;AAAA,UAEb,YAAc,EAAA;AAAA,YACZ,IAAM,EAAA,MAAA;AAAA,YACN,KAAO,EAAA,qBAAA;AAAA,YACP,MAAQ,EAAA;AAAA,cACN,UAAY,EAAA,OAAA;AAAA,cACZ,KAAO,EAAA,OAAA;AAAA,cACP,OAAS,EAAA,KAAA;AAAA,cACT,YAAc,EAAA,KAAA;AAAA,aAChB;AAAA,WACF;AAAA,SACF;AAAA,QACA,cAAgB,EAAA;AAAA,UACd,IAAM,EAAA,iBAAA;AAAA,SACR;AAAA,QACA,UAAY,EAAA;AAAA,UACV,IAAM,EAAA,SAAA;AAAA,SACR;AAAA,QACA,KAAO,EAAA;AAAA,UACL,IAAM,EAAA,QAAA;AAAA;AAAA,UAEN,YAAc,EAAA,CAAA;AAAA,UACd,gBAAkB,EAAA,CAAA;AAAA,UAClB,WACE,EAAA,yDAAA;AAAA,SACJ;AAAA,QACA,UAAY,EAAA;AAAA,UACV,IAAM,EAAA,QAAA;AAAA;AAAA,UAEN,YAAc,EAAA,CAAA;AAAA,UACd,gBAAkB,EAAA,CAAA;AAAA,UAClB,WAAa,EAAA,uDAAA;AAAA,SACf;AAAA,QACA,OAAS,EAAA;AAAA,UACP,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,CAAC,OAAA,EAAS,iBAAiB,CAAA;AAAA,UACpC,gBAAkB,EAAA,iBAAA;AAAA,SACpB;AAAA,OAAA,EACG,sBAAwC,SAAW,EAAA;AAAA,QACpD,SAAA,EAAW,EAAE,gBAAA,EAAkB,KAAM,EAAA;AAAA,QACrC,MAAA,EAAQ,EAAE,gBAAA,EAAkB,CAAE,EAAA;AAAA,QAC9B,gBAAA,EAAkB,EAAE,gBAAA,EAAkB,EAAG,EAAA;AAAA,QACzC,WAAA,EAAa,EAAE,gBAAA,EAAkB,CAAE,EAAA;AAAA,OACpC,CA5DI,CAAA,EAAA;AAAA,QA6DL,MAAQ,EAAA;AAAA,UACN,IAAM,EAAA,SAAA;AAAA,UACN,QAAU,EAAA,IAAA;AAAA,UACV,gBAAkB,EAAA,aAAA;AAAA,UAClB,WAAa,EAAA,wCAAA;AAAA,UACb,gBAAkB,EAAA,KAAA;AAAA,UAClB,QAAQ,MAAM,IAAA;AAAA,SAChB;AAAA,QACA,YAAc,EAAA;AAAA,UACZ,IAAM,EAAA,cAAA;AAAA,UACN,UAAU,CAAC,EAAE,MAAM,QAAU,EAAA,IAAA,EAAM,WAAW,CAAA;AAAA,SAChD;AAAA,OACF,CAAA;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACN,IAAM,EAAA,UAAA;AAAA,UACN,SAAW,EAAA,QAAA;AAAA,UACX,YAAc,EAAA,cAAA;AAAA,UACd,YAAc,EAAA,SAAA;AAAA,SAChB;AAAA,OACF;AAAA,MACA,UAAY,EAAA,IAAA;AAAA,KACd;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils-fc1ddd7c.cjs.js","sources":["../src/utils.ts"],"sourcesContent":["import {\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n type CodeComponentMeta,\n} from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useEffect } from \"react\";\nimport { InputProps, TextAreaProps } from \"react-aria-components\";\n\nexport type HasControlContextData<T = BaseControlContextData> = {\n setControlContextData?: (ctxData: T) => void;\n};\n\nexport type WithPlasmicCanvasComponentInfo = {\n __plasmic_selection_prop__?: {\n isSelected: boolean;\n selectedSlotName?: string;\n };\n};\n\nexport type BaseControlContextData = {\n parent?: {\n isDisabled?: boolean;\n isReadOnly?: boolean;\n };\n};\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n};\n\nexport type OtherCodeComponentsMeta = {\n text: CodeComponentMeta<any>;\n description: CodeComponentMeta<any>;\n};\n\nexport type CodeComponentMetaOverrides<T extends React.ComponentType<any>> =\n Partial<\n Pick<\n CodeComponentMeta<React.ComponentProps<T>>,\n \"parentComponentName\" | \"props\" | \"displayName\" | \"name\"\n >\n >;\n\n/**\n * This hook determines whether an overlay should be open or not. Unlike `useAutoOpen`, it does not perform any actions.\n * It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n * 3. Whether the overlay's trigger slot is selected on canvas\n */\nexport function useIsOpen({\n triggerSlotName,\n isOpen,\n __plasmic_selection_prop__,\n}: {\n __plasmic_selection_prop__: WithPlasmicCanvasComponentInfo[\"__plasmic_selection_prop__\"];\n triggerSlotName?: string;\n isOpen?: boolean;\n}) {\n const canvasContext = usePlasmicCanvasContext();\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.({ __plasmic_selection_prop__ }) ?? {};\n\n // In preview, just use the isOpen prop as is.\n if (!canvasContext) {\n return isOpen;\n }\n\n // In canvas, override the isOpen prop if the element is selected.\n const isTriggerSlotSelected =\n isDefined(selectedSlotName) && selectedSlotName === triggerSlotName;\n\n const isAutoOpenedBySelection = isSelected && !isTriggerSlotSelected;\n\n // Component should always be controlled in canvas\n return Boolean(isAutoOpenedBySelection || isOpen);\n}\n\n/**\n * This hook is used to perform open/close actions on an overlay. It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n */\nexport function useAutoOpen({\n props,\n open,\n close,\n}: {\n props: WithPlasmicCanvasComponentInfo;\n open?: () => void;\n close?: () => void;\n}) {\n const inPlasmicCanvas = !!usePlasmicCanvasContext();\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n useEffect(() => {\n // selection in outline tab only matters in canvas\n if (!inPlasmicCanvas) {\n return;\n }\n if (isSelected) {\n open?.();\n } else {\n close?.();\n }\n // Not putting open and close in the useEffect dependencies array, because it causes a re-render loop.\n }, [isSelected, inPlasmicCanvas]);\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>,\n overrides?: CodeComponentMetaOverrides<T>\n) {\n if (overrides) {\n meta = {\n ...meta,\n ...overrides,\n props: {\n ...meta.props,\n ...overrides.props,\n },\n };\n if (overrides.parentComponentName) {\n meta.name = makeChildComponentName(\n overrides.parentComponentName,\n meta.name\n );\n }\n }\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n return meta;\n}\n\nexport function makeComponentName(name: string) {\n return `plasmic-react-aria-${name}`;\n}\n\nexport function makeChildComponentName(\n fullParentName: string | undefined,\n fullChildName: string\n) {\n if (!fullParentName) {\n return fullChildName;\n }\n return `${fullParentName}-${fullChildName.replace(\n \"plasmic-react-aria-\",\n \"\"\n )}`;\n}\n\nexport interface Styleable {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function extractPlasmicDataProps(props: Record<string, any>) {\n return Object.fromEntries(\n Object.entries(props).filter(([key]) => key.startsWith(\"data-plasmic-\"))\n );\n}\n\nexport function withoutNils<T>(array: (T | undefined | null)[]) {\n return array.filter((x): x is T => x != null);\n}\n\nexport function isDefined<T>(thing: T | undefined | null): thing is T {\n return thing !== undefined && thing !== null;\n}\n\nexport function filterHoverProps<T extends TextAreaProps | InputProps>(\n props: T\n) {\n const {\n onHoverStart: _onHoverStart,\n onHoverChange: _onHoverChange,\n onHoverEnd: _onHoverEnd,\n ...otherProps\n } = props;\n return otherProps;\n}\n"],"names":["usePlasmicCanvasContext","usePlasmicCanvasComponentInfo","useEffect","registerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"utils-fc1ddd7c.cjs.js","sources":["../src/utils.ts"],"sourcesContent":["import {\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n type CodeComponentMeta,\n} from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useEffect } from \"react\";\nimport { InputProps, TextAreaProps } from \"react-aria-components\";\n\nexport type HasControlContextData<T = BaseControlContextData> = {\n setControlContextData?: (ctxData: T) => void;\n};\n\nexport type WithPlasmicCanvasComponentInfo = {\n __plasmic_selection_prop__?: {\n isSelected: boolean;\n selectedSlotName?: string;\n };\n};\n\nexport type ControlContextData = {\n isDisabled?: boolean;\n isReadOnly?: boolean;\n};\n\nexport type BaseControlContextData = {\n parent?: ControlContextData;\n};\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n};\n\nexport type OtherCodeComponentsMeta = {\n text: CodeComponentMeta<any>;\n description: CodeComponentMeta<any>;\n};\n\nexport type CodeComponentMetaOverrides<T extends React.ComponentType<any>> =\n Partial<\n Pick<\n CodeComponentMeta<React.ComponentProps<T>>,\n \"parentComponentName\" | \"props\" | \"displayName\" | \"name\"\n >\n >;\n\n/**\n * This hook determines whether an overlay should be open or not. Unlike `useAutoOpen`, it does not perform any actions.\n * It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n * 3. Whether the overlay's trigger slot is selected on canvas\n */\nexport function useIsOpen({\n triggerSlotName,\n isOpen,\n __plasmic_selection_prop__,\n}: {\n __plasmic_selection_prop__: WithPlasmicCanvasComponentInfo[\"__plasmic_selection_prop__\"];\n triggerSlotName?: string;\n isOpen?: boolean;\n}) {\n const canvasContext = usePlasmicCanvasContext();\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.({ __plasmic_selection_prop__ }) ?? {};\n\n // In preview, just use the isOpen prop as is.\n if (!canvasContext) {\n return isOpen;\n }\n\n // In canvas, override the isOpen prop if the element is selected.\n const isTriggerSlotSelected =\n isDefined(selectedSlotName) && selectedSlotName === triggerSlotName;\n\n const isAutoOpenedBySelection = isSelected && !isTriggerSlotSelected;\n\n // Component should always be controlled in canvas\n return Boolean(isAutoOpenedBySelection || isOpen);\n}\n\n/**\n * This hook is used to perform open/close actions on an overlay. It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n */\nexport function useAutoOpen({\n props,\n open,\n close,\n}: {\n props: WithPlasmicCanvasComponentInfo;\n open?: () => void;\n close?: () => void;\n}) {\n const inPlasmicCanvas = !!usePlasmicCanvasContext();\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n useEffect(() => {\n // selection in outline tab only matters in canvas\n if (!inPlasmicCanvas) {\n return;\n }\n if (isSelected) {\n open?.();\n } else {\n close?.();\n }\n // Not putting open and close in the useEffect dependencies array, because it causes a re-render loop.\n }, [isSelected, inPlasmicCanvas]);\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>,\n overrides?: CodeComponentMetaOverrides<T>\n) {\n if (overrides) {\n meta = {\n ...meta,\n ...overrides,\n props: {\n ...meta.props,\n ...overrides.props,\n },\n };\n if (overrides.parentComponentName) {\n meta.name = makeChildComponentName(\n overrides.parentComponentName,\n meta.name\n );\n }\n }\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n return meta;\n}\n\nexport function makeComponentName(name: string) {\n return `plasmic-react-aria-${name}`;\n}\n\nexport function makeChildComponentName(\n fullParentName: string | undefined,\n fullChildName: string\n) {\n if (!fullParentName) {\n return fullChildName;\n }\n return `${fullParentName}-${fullChildName.replace(\n \"plasmic-react-aria-\",\n \"\"\n )}`;\n}\n\nexport interface Styleable {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function extractPlasmicDataProps(props: Record<string, any>) {\n return Object.fromEntries(\n Object.entries(props).filter(([key]) => key.startsWith(\"data-plasmic-\"))\n );\n}\n\nexport function withoutNils<T>(array: (T | undefined | null)[]) {\n return array.filter((x): x is T => x != null);\n}\n\nexport function isDefined<T>(thing: T | undefined | null): thing is T {\n return thing !== undefined && thing !== null;\n}\n\nexport function filterHoverProps<T extends TextAreaProps | InputProps>(\n props: T\n) {\n const {\n onHoverStart: _onHoverStart,\n onHoverChange: _onHoverChange,\n onHoverEnd: _onHoverEnd,\n ...otherProps\n } = props;\n return otherProps;\n}\n"],"names":["usePlasmicCanvasContext","usePlasmicCanvasComponentInfo","useEffect","registerComponent"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils-fd88ad47.esm.js","sources":["../src/utils.ts"],"sourcesContent":["import {\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n type CodeComponentMeta,\n} from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useEffect } from \"react\";\nimport { InputProps, TextAreaProps } from \"react-aria-components\";\n\nexport type HasControlContextData<T = BaseControlContextData> = {\n setControlContextData?: (ctxData: T) => void;\n};\n\nexport type WithPlasmicCanvasComponentInfo = {\n __plasmic_selection_prop__?: {\n isSelected: boolean;\n selectedSlotName?: string;\n };\n};\n\nexport type BaseControlContextData = {\n parent?: {\n isDisabled?: boolean;\n isReadOnly?: boolean;\n };\n};\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n};\n\nexport type OtherCodeComponentsMeta = {\n text: CodeComponentMeta<any>;\n description: CodeComponentMeta<any>;\n};\n\nexport type CodeComponentMetaOverrides<T extends React.ComponentType<any>> =\n Partial<\n Pick<\n CodeComponentMeta<React.ComponentProps<T>>,\n \"parentComponentName\" | \"props\" | \"displayName\" | \"name\"\n >\n >;\n\n/**\n * This hook determines whether an overlay should be open or not. Unlike `useAutoOpen`, it does not perform any actions.\n * It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n * 3. Whether the overlay's trigger slot is selected on canvas\n */\nexport function useIsOpen({\n triggerSlotName,\n isOpen,\n __plasmic_selection_prop__,\n}: {\n __plasmic_selection_prop__: WithPlasmicCanvasComponentInfo[\"__plasmic_selection_prop__\"];\n triggerSlotName?: string;\n isOpen?: boolean;\n}) {\n const canvasContext = usePlasmicCanvasContext();\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.({ __plasmic_selection_prop__ }) ?? {};\n\n // In preview, just use the isOpen prop as is.\n if (!canvasContext) {\n return isOpen;\n }\n\n // In canvas, override the isOpen prop if the element is selected.\n const isTriggerSlotSelected =\n isDefined(selectedSlotName) && selectedSlotName === triggerSlotName;\n\n const isAutoOpenedBySelection = isSelected && !isTriggerSlotSelected;\n\n // Component should always be controlled in canvas\n return Boolean(isAutoOpenedBySelection || isOpen);\n}\n\n/**\n * This hook is used to perform open/close actions on an overlay. It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n */\nexport function useAutoOpen({\n props,\n open,\n close,\n}: {\n props: WithPlasmicCanvasComponentInfo;\n open?: () => void;\n close?: () => void;\n}) {\n const inPlasmicCanvas = !!usePlasmicCanvasContext();\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n useEffect(() => {\n // selection in outline tab only matters in canvas\n if (!inPlasmicCanvas) {\n return;\n }\n if (isSelected) {\n open?.();\n } else {\n close?.();\n }\n // Not putting open and close in the useEffect dependencies array, because it causes a re-render loop.\n }, [isSelected, inPlasmicCanvas]);\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>,\n overrides?: CodeComponentMetaOverrides<T>\n) {\n if (overrides) {\n meta = {\n ...meta,\n ...overrides,\n props: {\n ...meta.props,\n ...overrides.props,\n },\n };\n if (overrides.parentComponentName) {\n meta.name = makeChildComponentName(\n overrides.parentComponentName,\n meta.name\n );\n }\n }\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n return meta;\n}\n\nexport function makeComponentName(name: string) {\n return `plasmic-react-aria-${name}`;\n}\n\nexport function makeChildComponentName(\n fullParentName: string | undefined,\n fullChildName: string\n) {\n if (!fullParentName) {\n return fullChildName;\n }\n return `${fullParentName}-${fullChildName.replace(\n \"plasmic-react-aria-\",\n \"\"\n )}`;\n}\n\nexport interface Styleable {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function extractPlasmicDataProps(props: Record<string, any>) {\n return Object.fromEntries(\n Object.entries(props).filter(([key]) => key.startsWith(\"data-plasmic-\"))\n );\n}\n\nexport function withoutNils<T>(array: (T | undefined | null)[]) {\n return array.filter((x): x is T => x != null);\n}\n\nexport function isDefined<T>(thing: T | undefined | null): thing is T {\n return thing !== undefined && thing !== null;\n}\n\nexport function filterHoverProps<T extends TextAreaProps | InputProps>(\n props: T\n) {\n const {\n onHoverStart: _onHoverStart,\n onHoverChange: _onHoverChange,\n onHoverEnd: _onHoverEnd,\n ...otherProps\n } = props;\n return otherProps;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils-fd88ad47.esm.js","sources":["../src/utils.ts"],"sourcesContent":["import {\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n type CodeComponentMeta,\n} from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useEffect } from \"react\";\nimport { InputProps, TextAreaProps } from \"react-aria-components\";\n\nexport type HasControlContextData<T = BaseControlContextData> = {\n setControlContextData?: (ctxData: T) => void;\n};\n\nexport type WithPlasmicCanvasComponentInfo = {\n __plasmic_selection_prop__?: {\n isSelected: boolean;\n selectedSlotName?: string;\n };\n};\n\nexport type ControlContextData = {\n isDisabled?: boolean;\n isReadOnly?: boolean;\n};\n\nexport type BaseControlContextData = {\n parent?: ControlContextData;\n};\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n};\n\nexport type OtherCodeComponentsMeta = {\n text: CodeComponentMeta<any>;\n description: CodeComponentMeta<any>;\n};\n\nexport type CodeComponentMetaOverrides<T extends React.ComponentType<any>> =\n Partial<\n Pick<\n CodeComponentMeta<React.ComponentProps<T>>,\n \"parentComponentName\" | \"props\" | \"displayName\" | \"name\"\n >\n >;\n\n/**\n * This hook determines whether an overlay should be open or not. Unlike `useAutoOpen`, it does not perform any actions.\n * It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n * 3. Whether the overlay's trigger slot is selected on canvas\n */\nexport function useIsOpen({\n triggerSlotName,\n isOpen,\n __plasmic_selection_prop__,\n}: {\n __plasmic_selection_prop__: WithPlasmicCanvasComponentInfo[\"__plasmic_selection_prop__\"];\n triggerSlotName?: string;\n isOpen?: boolean;\n}) {\n const canvasContext = usePlasmicCanvasContext();\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.({ __plasmic_selection_prop__ }) ?? {};\n\n // In preview, just use the isOpen prop as is.\n if (!canvasContext) {\n return isOpen;\n }\n\n // In canvas, override the isOpen prop if the element is selected.\n const isTriggerSlotSelected =\n isDefined(selectedSlotName) && selectedSlotName === triggerSlotName;\n\n const isAutoOpenedBySelection = isSelected && !isTriggerSlotSelected;\n\n // Component should always be controlled in canvas\n return Boolean(isAutoOpenedBySelection || isOpen);\n}\n\n/**\n * This hook is used to perform open/close actions on an overlay. It takes into account the following:\n * 1. Whether the overlay is in canvas or preview.\n * 2. Whether the overlay is selected on canvas\n */\nexport function useAutoOpen({\n props,\n open,\n close,\n}: {\n props: WithPlasmicCanvasComponentInfo;\n open?: () => void;\n close?: () => void;\n}) {\n const inPlasmicCanvas = !!usePlasmicCanvasContext();\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n useEffect(() => {\n // selection in outline tab only matters in canvas\n if (!inPlasmicCanvas) {\n return;\n }\n if (isSelected) {\n open?.();\n } else {\n close?.();\n }\n // Not putting open and close in the useEffect dependencies array, because it causes a re-render loop.\n }, [isSelected, inPlasmicCanvas]);\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>,\n overrides?: CodeComponentMetaOverrides<T>\n) {\n if (overrides) {\n meta = {\n ...meta,\n ...overrides,\n props: {\n ...meta.props,\n ...overrides.props,\n },\n };\n if (overrides.parentComponentName) {\n meta.name = makeChildComponentName(\n overrides.parentComponentName,\n meta.name\n );\n }\n }\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n return meta;\n}\n\nexport function makeComponentName(name: string) {\n return `plasmic-react-aria-${name}`;\n}\n\nexport function makeChildComponentName(\n fullParentName: string | undefined,\n fullChildName: string\n) {\n if (!fullParentName) {\n return fullChildName;\n }\n return `${fullParentName}-${fullChildName.replace(\n \"plasmic-react-aria-\",\n \"\"\n )}`;\n}\n\nexport interface Styleable {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function extractPlasmicDataProps(props: Record<string, any>) {\n return Object.fromEntries(\n Object.entries(props).filter(([key]) => key.startsWith(\"data-plasmic-\"))\n );\n}\n\nexport function withoutNils<T>(array: (T | undefined | null)[]) {\n return array.filter((x): x is T => x != null);\n}\n\nexport function isDefined<T>(thing: T | undefined | null): thing is T {\n return thing !== undefined && thing !== null;\n}\n\nexport function filterHoverProps<T extends TextAreaProps | InputProps>(\n props: T\n) {\n const {\n onHoverStart: _onHoverStart,\n onHoverChange: _onHoverChange,\n onHoverEnd: _onHoverEnd,\n ...otherProps\n } = props;\n return otherProps;\n}\n"],"names":[],"mappings":"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"}
package/skinny/utils.d.ts CHANGED
@@ -11,11 +11,12 @@ export type WithPlasmicCanvasComponentInfo = {
11
11
  selectedSlotName?: string;
12
12
  };
13
13
  };
14
+ export type ControlContextData = {
15
+ isDisabled?: boolean;
16
+ isReadOnly?: boolean;
17
+ };
14
18
  export type BaseControlContextData = {
15
- parent?: {
16
- isDisabled?: boolean;
17
- isReadOnly?: boolean;
18
- };
19
+ parent?: ControlContextData;
19
20
  };
20
21
  export type Registerable = {
21
22
  registerComponent: typeof registerComponent;
@@ -1,163 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var test = require('@storybook/test');
6
- var React = require('react');
7
- var reactAriaComponents = require('react-aria-components');
8
- var registerButton = require('./registerButton.cjs.js');
9
- require('@plasmicapp/host');
10
- require('react-aria');
11
- require('./common-45acb83c.cjs.js');
12
- require('./utils-fc1ddd7c.cjs.js');
13
- require('@plasmicapp/host/registerComponent');
14
- require('./variant-utils-0ad70db8.cjs.js');
15
-
16
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
-
18
- var React__default = /*#__PURE__*/_interopDefault(React);
19
-
20
- var __defProp = Object.defineProperty;
21
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
22
- var __hasOwnProp = Object.prototype.hasOwnProperty;
23
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
24
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
25
- var __spreadValues = (a, b) => {
26
- for (var prop in b || (b = {}))
27
- if (__hasOwnProp.call(b, prop))
28
- __defNormalProp(a, prop, b[prop]);
29
- if (__getOwnPropSymbols)
30
- for (var prop of __getOwnPropSymbols(b)) {
31
- if (__propIsEnum.call(b, prop))
32
- __defNormalProp(a, prop, b[prop]);
33
- }
34
- return a;
35
- };
36
- var registerButton_stories = {
37
- title: "Components/BaseButton",
38
- component: registerButton.BaseButton,
39
- args: {
40
- children: "Click Me",
41
- onPress: test.fn(),
42
- onFocus: test.fn()
43
- },
44
- parameters: {
45
- onSubmit: test.fn(),
46
- onReset: test.fn()
47
- }
48
- };
49
- const TestForm = ({ children, onSubmit, onReset }) => /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.Form, { onSubmit, onReset }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.Input, { role: "input", name: "test-input", "aria-label": "Test input" }), children);
50
- const Basic = {
51
- play: async ({ args, canvasElement }) => {
52
- const canvas = test.within(canvasElement);
53
- const button = canvas.getByText("Click Me");
54
- await test.userEvent.click(button);
55
- test.expect(button).toHaveFocus();
56
- test.expect(args.onPress).toHaveBeenCalledOnce();
57
- test.expect(args.onFocus).toHaveBeenCalledOnce();
58
- }
59
- };
60
- const AutoFocusedButton = {
61
- args: {
62
- autoFocus: true
63
- },
64
- render: (args) => /* @__PURE__ */ React__default.default.createElement(TestForm, null, /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, __spreadValues({}, args))),
65
- play: async ({ canvasElement }) => {
66
- const canvas = test.within(canvasElement);
67
- await test.waitFor(() => {
68
- test.expect(canvas.getByText("Click Me")).toHaveFocus();
69
- });
70
- }
71
- };
72
- const DisabledButton = {
73
- args: {
74
- isDisabled: true
75
- },
76
- render: (args) => /* @__PURE__ */ React__default.default.createElement(TestForm, null, /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, __spreadValues({}, args))),
77
- play: async ({ canvasElement }) => {
78
- const canvas = test.within(canvasElement);
79
- const button = canvas.getByText("Click Me");
80
- await test.userEvent.click(button);
81
- test.expect(button).not.toHaveFocus();
82
- test.expect(button).toBeDisabled();
83
- }
84
- };
85
- const SubmitButton = {
86
- args: {
87
- children: "Submit",
88
- submitsForm: true
89
- },
90
- render: (args, { parameters }) => {
91
- return /* @__PURE__ */ React__default.default.createElement(
92
- TestForm,
93
- {
94
- onSubmit: (e) => {
95
- e.preventDefault();
96
- parameters.onSubmit(e);
97
- }
98
- },
99
- /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, __spreadValues({}, args))
100
- );
101
- },
102
- play: async ({ canvasElement, parameters }) => {
103
- const canvas = test.within(canvasElement);
104
- const button = canvas.getByText("Submit");
105
- await test.userEvent.click(button);
106
- test.expect(parameters.onSubmit).toHaveBeenCalledOnce();
107
- test.expect(parameters.onReset).not.toHaveBeenCalled();
108
- }
109
- };
110
- const ResetButton = {
111
- args: {
112
- children: "Reset",
113
- resetsForm: true
114
- },
115
- render: (args, { parameters }) => /* @__PURE__ */ React__default.default.createElement(
116
- TestForm,
117
- {
118
- onSubmit: (e) => {
119
- e.preventDefault();
120
- parameters.onSubmit(e);
121
- },
122
- onReset: parameters.onReset
123
- },
124
- /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, __spreadValues({}, args))
125
- ),
126
- play: async ({ canvasElement, parameters }) => {
127
- const canvas = test.within(canvasElement);
128
- const form = canvasElement.getElementsByTagName("form")[0];
129
- const input = canvasElement.getElementsByTagName("input")[0];
130
- await test.userEvent.type(input, "Hello World");
131
- test.expect(form).toHaveFormValues({ "test-input": "Hello World" });
132
- const button = canvas.getByText("Reset");
133
- test.expect(button).toHaveAttribute("type", "reset");
134
- await test.userEvent.click(button);
135
- test.expect(form).toHaveFormValues({});
136
- test.expect(parameters.onReset).toHaveBeenCalledOnce();
137
- test.expect(parameters.onSubmit).not.toHaveBeenCalled();
138
- }
139
- };
140
- const LinkButton = {
141
- args: {
142
- children: "Go to Google",
143
- href: "https://www.google.com",
144
- target: "_blank"
145
- },
146
- play: async ({ canvasElement }) => {
147
- const canvas = test.within(canvasElement);
148
- const link = canvas.getByText("Go to Google");
149
- test.expect(link.tagName).toBe("A");
150
- test.expect(link).toHaveAttribute("href", "https://www.google.com");
151
- test.expect(link).toHaveAttribute("target", "_blank");
152
- await test.userEvent.click(link);
153
- }
154
- };
155
-
156
- exports.AutoFocusedButton = AutoFocusedButton;
157
- exports.Basic = Basic;
158
- exports.DisabledButton = DisabledButton;
159
- exports.LinkButton = LinkButton;
160
- exports.ResetButton = ResetButton;
161
- exports.SubmitButton = SubmitButton;
162
- exports.default = registerButton_stories;
163
- //# sourceMappingURL=registerButton.stories.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerButton.stories.cjs.js","sources":["../src/registerButton.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React from \"react\";\nimport { Form, Input } from \"react-aria-components\";\nimport { BaseButton } from \"./registerButton\";\n\nexport default {\n title: \"Components/BaseButton\",\n component: BaseButton,\n args: {\n children: \"Click Me\",\n onPress: fn(),\n onFocus: fn(),\n },\n parameters: {\n onSubmit: fn(),\n onReset: fn(),\n },\n} satisfies Meta<typeof BaseButton>;\n\ntype Story = StoryObj<typeof BaseButton>;\n\n// Reusable test form wrapper\nconst TestForm: React.FC<{\n children: React.ReactNode;\n onSubmit?: (e: React.FormEvent) => void;\n onReset?: (e: React.FormEvent) => void;\n}> = ({ children, onSubmit, onReset }) => (\n <Form onSubmit={onSubmit} onReset={onReset}>\n <Input role=\"input\" name=\"test-input\" aria-label=\"Test input\" />\n {children}\n </Form>\n);\n\nexport const Basic: Story = {\n play: async ({ args, canvasElement }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Click Me\");\n\n await userEvent.click(button);\n\n expect(button).toHaveFocus();\n expect(args.onPress).toHaveBeenCalledOnce();\n expect(args.onFocus).toHaveBeenCalledOnce();\n },\n};\n\nexport const AutoFocusedButton: Story = {\n args: {\n autoFocus: true,\n },\n render: (args) => (\n <TestForm>\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText(\"Click Me\")).toHaveFocus();\n });\n },\n};\n\nexport const DisabledButton: Story = {\n args: {\n isDisabled: true,\n },\n render: (args) => (\n <TestForm>\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Click Me\");\n\n await userEvent.click(button);\n expect(button).not.toHaveFocus();\n expect(button).toBeDisabled();\n },\n};\n\nexport const SubmitButton: Story = {\n args: {\n children: \"Submit\",\n submitsForm: true,\n },\n render: (args, { parameters }) => {\n return (\n <TestForm\n onSubmit={(e) => {\n e.preventDefault();\n parameters.onSubmit(e);\n }}\n >\n <BaseButton {...args} />\n </TestForm>\n );\n },\n play: async ({ canvasElement, parameters }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Submit\");\n await userEvent.click(button);\n expect(parameters.onSubmit).toHaveBeenCalledOnce();\n expect(parameters.onReset).not.toHaveBeenCalled();\n },\n};\n\nexport const ResetButton: Story = {\n args: {\n children: \"Reset\",\n resetsForm: true,\n },\n render: (args, { parameters }) => (\n <TestForm\n onSubmit={(e) => {\n e.preventDefault();\n parameters.onSubmit(e);\n }}\n onReset={parameters.onReset}\n >\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement, parameters }) => {\n const canvas = within(canvasElement);\n const form = canvasElement.getElementsByTagName(\"form\")[0];\n const input = canvasElement.getElementsByTagName(\"input\")[0];\n await userEvent.type(input, \"Hello World\");\n expect(form).toHaveFormValues({ \"test-input\": \"Hello World\" });\n const button = canvas.getByText(\"Reset\");\n expect(button).toHaveAttribute(\"type\", \"reset\");\n await userEvent.click(button);\n expect(form).toHaveFormValues({});\n expect(parameters.onReset).toHaveBeenCalledOnce();\n expect(parameters.onSubmit).not.toHaveBeenCalled();\n },\n};\n\nexport const LinkButton: Story = {\n args: {\n children: \"Go to Google\",\n href: \"https://www.google.com\",\n target: \"_blank\",\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const link = canvas.getByText(\"Go to Google\");\n\n expect(link.tagName).toBe(\"A\");\n expect(link).toHaveAttribute(\"href\", \"https://www.google.com\");\n expect(link).toHaveAttribute(\"target\", \"_blank\");\n await userEvent.click(link);\n },\n};\n"],"names":["BaseButton","fn","Form","React","Input","within","userEvent","expect","waitFor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,6BAAe;AAAA,EACb,KAAO,EAAA,uBAAA;AAAA,EACP,SAAW,EAAAA,yBAAA;AAAA,EACX,IAAM,EAAA;AAAA,IACJ,QAAU,EAAA,UAAA;AAAA,IACV,SAASC,OAAG,EAAA;AAAA,IACZ,SAASA,OAAG,EAAA;AAAA,GACd;AAAA,EACA,UAAY,EAAA;AAAA,IACV,UAAUA,OAAG,EAAA;AAAA,IACb,SAASA,OAAG,EAAA;AAAA,GACd;AACF,CAAA,CAAA;AAKA,MAAM,QAAA,GAID,CAAC,EAAE,QAAA,EAAU,UAAU,OAAQ,EAAA,0DACjCC,wBAAK,EAAA,EAAA,QAAA,EAAoB,2BACvBC,sBAAA,CAAA,aAAA,CAAAC,yBAAA,EAAA,EAAM,MAAK,OAAQ,EAAA,IAAA,EAAK,cAAa,YAAW,EAAA,YAAA,EAAa,GAC7D,QACH,CAAA,CAAA;AAGK,MAAM,KAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,OAAO,EAAE,IAAA,EAAM,eAAoB,KAAA;AACvC,IAAM,MAAA,MAAA,GAASC,YAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,UAAU,CAAA,CAAA;AAE1C,IAAM,MAAAC,cAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAOC,WAAA,CAAA,MAAM,EAAE,WAAY,EAAA,CAAA;AAC3B,IAAOA,WAAA,CAAA,IAAA,CAAK,OAAO,CAAA,CAAE,oBAAqB,EAAA,CAAA;AAC1C,IAAOA,WAAA,CAAA,IAAA,CAAK,OAAO,CAAA,CAAE,oBAAqB,EAAA,CAAA;AAAA,GAC5C;AACF,EAAA;AAEO,MAAM,iBAA2B,GAAA;AAAA,EACtC,IAAM,EAAA;AAAA,IACJ,SAAW,EAAA,IAAA;AAAA,GACb;AAAA,EACA,MAAA,EAAQ,CAAC,IACP,qBAAAJ,sBAAA,CAAA,aAAA,CAAC,gCACEA,sBAAA,CAAA,aAAA,CAAAH,yBAAA,EAAA,cAAA,CAAA,EAAA,EAAe,KAAM,CACxB,CAAA;AAAA,EAEF,IAAM,EAAA,OAAO,EAAE,aAAA,EAAoB,KAAA;AACjC,IAAM,MAAA,MAAA,GAASK,YAAO,aAAa,CAAA,CAAA;AACnC,IAAA,MAAMG,aAAQ,MAAM;AAClB,MAAAD,WAAA,CAAO,MAAO,CAAA,SAAA,CAAU,UAAU,CAAC,EAAE,WAAY,EAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAAA,GACH;AACF,EAAA;AAEO,MAAM,cAAwB,GAAA;AAAA,EACnC,IAAM,EAAA;AAAA,IACJ,UAAY,EAAA,IAAA;AAAA,GACd;AAAA,EACA,MAAA,EAAQ,CAAC,IACP,qBAAAJ,sBAAA,CAAA,aAAA,CAAC,gCACEA,sBAAA,CAAA,aAAA,CAAAH,yBAAA,EAAA,cAAA,CAAA,EAAA,EAAe,KAAM,CACxB,CAAA;AAAA,EAEF,IAAM,EAAA,OAAO,EAAE,aAAA,EAAoB,KAAA;AACjC,IAAM,MAAA,MAAA,GAASK,YAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,UAAU,CAAA,CAAA;AAE1C,IAAM,MAAAC,cAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAC5B,IAAOC,WAAA,CAAA,MAAM,CAAE,CAAA,GAAA,CAAI,WAAY,EAAA,CAAA;AAC/B,IAAOA,WAAA,CAAA,MAAM,EAAE,YAAa,EAAA,CAAA;AAAA,GAC9B;AACF,EAAA;AAEO,MAAM,YAAsB,GAAA;AAAA,EACjC,IAAM,EAAA;AAAA,IACJ,QAAU,EAAA,QAAA;AAAA,IACV,WAAa,EAAA,IAAA;AAAA,GACf;AAAA,EACA,MAAQ,EAAA,CAAC,IAAM,EAAA,EAAE,YAAiB,KAAA;AAChC,IACE,uBAAAJ,sBAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,UAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,UAAA,UAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAAA,SACvB;AAAA,OAAA;AAAA,sBAEAA,sBAAA,CAAA,aAAA,CAACH,8CAAe,IAAM,CAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GAEJ;AAAA,EACA,IAAM,EAAA,OAAO,EAAE,aAAA,EAAe,YAAiB,KAAA;AAC7C,IAAM,MAAA,MAAA,GAASK,YAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AACxC,IAAM,MAAAC,cAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAC5B,IAAOC,WAAA,CAAA,UAAA,CAAW,QAAQ,CAAA,CAAE,oBAAqB,EAAA,CAAA;AACjD,IAAAA,WAAA,CAAO,UAAW,CAAA,OAAO,CAAE,CAAA,GAAA,CAAI,gBAAiB,EAAA,CAAA;AAAA,GAClD;AACF,EAAA;AAEO,MAAM,WAAqB,GAAA;AAAA,EAChC,IAAM,EAAA;AAAA,IACJ,QAAU,EAAA,OAAA;AAAA,IACV,UAAY,EAAA,IAAA;AAAA,GACd;AAAA,EACA,MAAQ,EAAA,CAAC,IAAM,EAAA,EAAE,YACf,qBAAAJ,sBAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,QAAA,UAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAAA,OACvB;AAAA,MACA,SAAS,UAAW,CAAA,OAAA;AAAA,KAAA;AAAA,oBAEpBA,sBAAA,CAAA,aAAA,CAACH,8CAAe,IAAM,CAAA,CAAA;AAAA,GACxB;AAAA,EAEF,IAAM,EAAA,OAAO,EAAE,aAAA,EAAe,YAAiB,KAAA;AAC7C,IAAM,MAAA,MAAA,GAASK,YAAO,aAAa,CAAA,CAAA;AACnC,IAAA,MAAM,IAAO,GAAA,aAAA,CAAc,oBAAqB,CAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AACzD,IAAA,MAAM,KAAQ,GAAA,aAAA,CAAc,oBAAqB,CAAA,OAAO,EAAE,CAAC,CAAA,CAAA;AAC3D,IAAM,MAAAC,cAAA,CAAU,IAAK,CAAA,KAAA,EAAO,aAAa,CAAA,CAAA;AACzC,IAAAC,WAAA,CAAO,IAAI,CAAE,CAAA,gBAAA,CAAiB,EAAE,YAAA,EAAc,eAAe,CAAA,CAAA;AAC7D,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AACvC,IAAAA,WAAA,CAAO,MAAM,CAAA,CAAE,eAAgB,CAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAC9C,IAAM,MAAAD,cAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAC5B,IAAAC,WAAA,CAAO,IAAI,CAAA,CAAE,gBAAiB,CAAA,EAAE,CAAA,CAAA;AAChC,IAAOA,WAAA,CAAA,UAAA,CAAW,OAAO,CAAA,CAAE,oBAAqB,EAAA,CAAA;AAChD,IAAAA,WAAA,CAAO,UAAW,CAAA,QAAQ,CAAE,CAAA,GAAA,CAAI,gBAAiB,EAAA,CAAA;AAAA,GACnD;AACF,EAAA;AAEO,MAAM,UAAoB,GAAA;AAAA,EAC/B,IAAM,EAAA;AAAA,IACJ,QAAU,EAAA,cAAA;AAAA,IACV,IAAM,EAAA,wBAAA;AAAA,IACN,MAAQ,EAAA,QAAA;AAAA,GACV;AAAA,EACA,IAAM,EAAA,OAAO,EAAE,aAAA,EAAoB,KAAA;AACjC,IAAM,MAAA,MAAA,GAASF,YAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,SAAA,CAAU,cAAc,CAAA,CAAA;AAE5C,IAAAE,WAAA,CAAO,IAAK,CAAA,OAAO,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAC7B,IAAAA,WAAA,CAAO,IAAI,CAAA,CAAE,eAAgB,CAAA,MAAA,EAAQ,wBAAwB,CAAA,CAAA;AAC7D,IAAAA,WAAA,CAAO,IAAI,CAAA,CAAE,eAAgB,CAAA,QAAA,EAAU,QAAQ,CAAA,CAAA;AAC/C,IAAM,MAAAD,cAAA,CAAU,MAAM,IAAI,CAAA,CAAA;AAAA,GAC5B;AACF;;;;;;;;;;"}
@@ -1,149 +0,0 @@
1
- import { fn, within, userEvent, expect, waitFor } from '@storybook/test';
2
- import React from 'react';
3
- import { Form, Input } from 'react-aria-components';
4
- import { BaseButton } from './registerButton.esm.js';
5
- import '@plasmicapp/host';
6
- import 'react-aria';
7
- import './common-616eb178.esm.js';
8
- import './utils-fd88ad47.esm.js';
9
- import '@plasmicapp/host/registerComponent';
10
- import './variant-utils-4405ebb0.esm.js';
11
-
12
- var __defProp = Object.defineProperty;
13
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14
- var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
16
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
17
- var __spreadValues = (a, b) => {
18
- for (var prop in b || (b = {}))
19
- if (__hasOwnProp.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- if (__getOwnPropSymbols)
22
- for (var prop of __getOwnPropSymbols(b)) {
23
- if (__propIsEnum.call(b, prop))
24
- __defNormalProp(a, prop, b[prop]);
25
- }
26
- return a;
27
- };
28
- var registerButton_stories = {
29
- title: "Components/BaseButton",
30
- component: BaseButton,
31
- args: {
32
- children: "Click Me",
33
- onPress: fn(),
34
- onFocus: fn()
35
- },
36
- parameters: {
37
- onSubmit: fn(),
38
- onReset: fn()
39
- }
40
- };
41
- const TestForm = ({ children, onSubmit, onReset }) => /* @__PURE__ */ React.createElement(Form, { onSubmit, onReset }, /* @__PURE__ */ React.createElement(Input, { role: "input", name: "test-input", "aria-label": "Test input" }), children);
42
- const Basic = {
43
- play: async ({ args, canvasElement }) => {
44
- const canvas = within(canvasElement);
45
- const button = canvas.getByText("Click Me");
46
- await userEvent.click(button);
47
- expect(button).toHaveFocus();
48
- expect(args.onPress).toHaveBeenCalledOnce();
49
- expect(args.onFocus).toHaveBeenCalledOnce();
50
- }
51
- };
52
- const AutoFocusedButton = {
53
- args: {
54
- autoFocus: true
55
- },
56
- render: (args) => /* @__PURE__ */ React.createElement(TestForm, null, /* @__PURE__ */ React.createElement(BaseButton, __spreadValues({}, args))),
57
- play: async ({ canvasElement }) => {
58
- const canvas = within(canvasElement);
59
- await waitFor(() => {
60
- expect(canvas.getByText("Click Me")).toHaveFocus();
61
- });
62
- }
63
- };
64
- const DisabledButton = {
65
- args: {
66
- isDisabled: true
67
- },
68
- render: (args) => /* @__PURE__ */ React.createElement(TestForm, null, /* @__PURE__ */ React.createElement(BaseButton, __spreadValues({}, args))),
69
- play: async ({ canvasElement }) => {
70
- const canvas = within(canvasElement);
71
- const button = canvas.getByText("Click Me");
72
- await userEvent.click(button);
73
- expect(button).not.toHaveFocus();
74
- expect(button).toBeDisabled();
75
- }
76
- };
77
- const SubmitButton = {
78
- args: {
79
- children: "Submit",
80
- submitsForm: true
81
- },
82
- render: (args, { parameters }) => {
83
- return /* @__PURE__ */ React.createElement(
84
- TestForm,
85
- {
86
- onSubmit: (e) => {
87
- e.preventDefault();
88
- parameters.onSubmit(e);
89
- }
90
- },
91
- /* @__PURE__ */ React.createElement(BaseButton, __spreadValues({}, args))
92
- );
93
- },
94
- play: async ({ canvasElement, parameters }) => {
95
- const canvas = within(canvasElement);
96
- const button = canvas.getByText("Submit");
97
- await userEvent.click(button);
98
- expect(parameters.onSubmit).toHaveBeenCalledOnce();
99
- expect(parameters.onReset).not.toHaveBeenCalled();
100
- }
101
- };
102
- const ResetButton = {
103
- args: {
104
- children: "Reset",
105
- resetsForm: true
106
- },
107
- render: (args, { parameters }) => /* @__PURE__ */ React.createElement(
108
- TestForm,
109
- {
110
- onSubmit: (e) => {
111
- e.preventDefault();
112
- parameters.onSubmit(e);
113
- },
114
- onReset: parameters.onReset
115
- },
116
- /* @__PURE__ */ React.createElement(BaseButton, __spreadValues({}, args))
117
- ),
118
- play: async ({ canvasElement, parameters }) => {
119
- const canvas = within(canvasElement);
120
- const form = canvasElement.getElementsByTagName("form")[0];
121
- const input = canvasElement.getElementsByTagName("input")[0];
122
- await userEvent.type(input, "Hello World");
123
- expect(form).toHaveFormValues({ "test-input": "Hello World" });
124
- const button = canvas.getByText("Reset");
125
- expect(button).toHaveAttribute("type", "reset");
126
- await userEvent.click(button);
127
- expect(form).toHaveFormValues({});
128
- expect(parameters.onReset).toHaveBeenCalledOnce();
129
- expect(parameters.onSubmit).not.toHaveBeenCalled();
130
- }
131
- };
132
- const LinkButton = {
133
- args: {
134
- children: "Go to Google",
135
- href: "https://www.google.com",
136
- target: "_blank"
137
- },
138
- play: async ({ canvasElement }) => {
139
- const canvas = within(canvasElement);
140
- const link = canvas.getByText("Go to Google");
141
- expect(link.tagName).toBe("A");
142
- expect(link).toHaveAttribute("href", "https://www.google.com");
143
- expect(link).toHaveAttribute("target", "_blank");
144
- await userEvent.click(link);
145
- }
146
- };
147
-
148
- export { AutoFocusedButton, Basic, DisabledButton, LinkButton, ResetButton, SubmitButton, registerButton_stories as default };
149
- //# sourceMappingURL=registerButton.stories.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerButton.stories.esm.js","sources":["../src/registerButton.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React from \"react\";\nimport { Form, Input } from \"react-aria-components\";\nimport { BaseButton } from \"./registerButton\";\n\nexport default {\n title: \"Components/BaseButton\",\n component: BaseButton,\n args: {\n children: \"Click Me\",\n onPress: fn(),\n onFocus: fn(),\n },\n parameters: {\n onSubmit: fn(),\n onReset: fn(),\n },\n} satisfies Meta<typeof BaseButton>;\n\ntype Story = StoryObj<typeof BaseButton>;\n\n// Reusable test form wrapper\nconst TestForm: React.FC<{\n children: React.ReactNode;\n onSubmit?: (e: React.FormEvent) => void;\n onReset?: (e: React.FormEvent) => void;\n}> = ({ children, onSubmit, onReset }) => (\n <Form onSubmit={onSubmit} onReset={onReset}>\n <Input role=\"input\" name=\"test-input\" aria-label=\"Test input\" />\n {children}\n </Form>\n);\n\nexport const Basic: Story = {\n play: async ({ args, canvasElement }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Click Me\");\n\n await userEvent.click(button);\n\n expect(button).toHaveFocus();\n expect(args.onPress).toHaveBeenCalledOnce();\n expect(args.onFocus).toHaveBeenCalledOnce();\n },\n};\n\nexport const AutoFocusedButton: Story = {\n args: {\n autoFocus: true,\n },\n render: (args) => (\n <TestForm>\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText(\"Click Me\")).toHaveFocus();\n });\n },\n};\n\nexport const DisabledButton: Story = {\n args: {\n isDisabled: true,\n },\n render: (args) => (\n <TestForm>\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Click Me\");\n\n await userEvent.click(button);\n expect(button).not.toHaveFocus();\n expect(button).toBeDisabled();\n },\n};\n\nexport const SubmitButton: Story = {\n args: {\n children: \"Submit\",\n submitsForm: true,\n },\n render: (args, { parameters }) => {\n return (\n <TestForm\n onSubmit={(e) => {\n e.preventDefault();\n parameters.onSubmit(e);\n }}\n >\n <BaseButton {...args} />\n </TestForm>\n );\n },\n play: async ({ canvasElement, parameters }) => {\n const canvas = within(canvasElement);\n const button = canvas.getByText(\"Submit\");\n await userEvent.click(button);\n expect(parameters.onSubmit).toHaveBeenCalledOnce();\n expect(parameters.onReset).not.toHaveBeenCalled();\n },\n};\n\nexport const ResetButton: Story = {\n args: {\n children: \"Reset\",\n resetsForm: true,\n },\n render: (args, { parameters }) => (\n <TestForm\n onSubmit={(e) => {\n e.preventDefault();\n parameters.onSubmit(e);\n }}\n onReset={parameters.onReset}\n >\n <BaseButton {...args} />\n </TestForm>\n ),\n play: async ({ canvasElement, parameters }) => {\n const canvas = within(canvasElement);\n const form = canvasElement.getElementsByTagName(\"form\")[0];\n const input = canvasElement.getElementsByTagName(\"input\")[0];\n await userEvent.type(input, \"Hello World\");\n expect(form).toHaveFormValues({ \"test-input\": \"Hello World\" });\n const button = canvas.getByText(\"Reset\");\n expect(button).toHaveAttribute(\"type\", \"reset\");\n await userEvent.click(button);\n expect(form).toHaveFormValues({});\n expect(parameters.onReset).toHaveBeenCalledOnce();\n expect(parameters.onSubmit).not.toHaveBeenCalled();\n },\n};\n\nexport const LinkButton: Story = {\n args: {\n children: \"Go to Google\",\n href: \"https://www.google.com\",\n target: \"_blank\",\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const link = canvas.getByText(\"Go to Google\");\n\n expect(link.tagName).toBe(\"A\");\n expect(link).toHaveAttribute(\"href\", \"https://www.google.com\");\n expect(link).toHaveAttribute(\"target\", \"_blank\");\n await userEvent.click(link);\n },\n};\n"],"names":[],"mappings":"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"}