diff --git a/.babelrc.js b/.babelrc.js index 4067bd1..d44cdb1 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -1,4 +1,4 @@ -module.exports = (api) => ({ +export default (api) => ({ presets: [ ['env-modules', { modules: api.env() === 'cjs' ? 'commonjs' : false }], ['@babel/react', { runtime: 'automatic' }], diff --git a/eslint.config.mjs b/eslint.config.mjs index a96b397..0aa3eb4 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -55,6 +55,7 @@ export default tseslint.config( ignoreRestSiblings: false, }, ], + 'react/prop-types': 'off', }, }, { @@ -82,7 +83,6 @@ export default tseslint.config( '@typescript-eslint/no-unused-expressions': 'off', 'padded-blocks': 'off', 'react/no-multi-comp': 'off', - 'react/prop-types': 'off', }, }, ); diff --git a/package.json b/package.json index f4881d9..ed57770 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "url": "git+https://github.com/react-restart/ui.git" }, "license": "MIT", - "main": "cjs/index.js", + "type": "module", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -100,7 +101,7 @@ "@restart/hooks": "^0.6.2", "@types/warning": "^3.0.3", "dequal": "^2.0.3", - "dom-helpers": "^5.2.0", + "dom-helpers": "^6.0.1", "uncontrollable": "^9.0.0", "warning": "^4.0.3" }, diff --git a/src/Anchor.tsx b/src/Anchor.tsx index 2ff615d..f1a9a6c 100644 --- a/src/Anchor.tsx +++ b/src/Anchor.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import useEventCallback from '@restart/hooks/useEventCallback'; -import { useButtonProps } from './Button'; +import { useButtonProps } from './Button.js'; export function isTrivialHref(href?: string) { return !href || href.trim() === '#'; diff --git a/src/Dropdown.tsx b/src/Dropdown.tsx index 4acfb62..271a911 100644 --- a/src/Dropdown.tsx +++ b/src/Dropdown.tsx @@ -8,23 +8,23 @@ import useForceUpdate from '@restart/hooks/useForceUpdate'; import useEventListener from '@restart/hooks/useEventListener'; import useEventCallback from '@restart/hooks/useEventCallback'; -import DropdownContext from './DropdownContext'; +import DropdownContext from './DropdownContext.js'; import DropdownMenu, { - DropdownMenuProps, - UseDropdownMenuMetadata, - UseDropdownMenuOptions, -} from './DropdownMenu'; + type DropdownMenuProps, + type UseDropdownMenuMetadata, + type UseDropdownMenuOptions, +} from './DropdownMenu.js'; import DropdownToggle, { - DropdownToggleProps, - UseDropdownToggleMetadata, + type DropdownToggleProps, + type UseDropdownToggleMetadata, isRoleMenu, -} from './DropdownToggle'; -import DropdownItem, { DropdownItemProps } from './DropdownItem'; -import SelectableContext from './SelectableContext'; -import { SelectCallback } from './types'; -import { dataAttr } from './DataKey'; -import { Placement } from './usePopper'; -import useWindow from './useWindow'; +} from './DropdownToggle.js'; +import DropdownItem, { type DropdownItemProps } from './DropdownItem.js'; +import SelectableContext from './SelectableContext.js'; +import type { SelectCallback } from './types.js'; +import { dataAttr } from './DataKey.js'; +import type { Placement } from './usePopper.js'; +import useWindow from './useWindow.js'; export type { DropdownMenuProps, diff --git a/src/DropdownContext.ts b/src/DropdownContext.ts index 94bf89f..5421a6e 100644 --- a/src/DropdownContext.ts +++ b/src/DropdownContext.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import type { Placement } from './usePopper'; +import type { Placement } from './usePopper.js'; export type DropdownContextValue = { toggle: ( diff --git a/src/DropdownItem.tsx b/src/DropdownItem.tsx index 95cb8ee..f4e8113 100644 --- a/src/DropdownItem.tsx +++ b/src/DropdownItem.tsx @@ -2,12 +2,12 @@ import * as React from 'react'; import { useContext } from 'react'; import useEventCallback from '@restart/hooks/useEventCallback'; -import SelectableContext, { makeEventKey } from './SelectableContext'; -import NavContext from './NavContext'; +import SelectableContext, { makeEventKey } from './SelectableContext.js'; +import NavContext from './NavContext.js'; -import { EventKey, DynamicRefForwardingComponent } from './types'; -import Button from './Button'; -import { dataAttr } from './DataKey'; +import type { EventKey, DynamicRefForwardingComponent } from './types.js'; +import Button from './Button.js'; +import { dataAttr } from './DataKey.js'; export interface DropdownItemProps extends React.HTMLAttributes { /** diff --git a/src/DropdownMenu.tsx b/src/DropdownMenu.tsx index 3afef73..b511fd6 100644 --- a/src/DropdownMenu.tsx +++ b/src/DropdownMenu.tsx @@ -1,15 +1,19 @@ import { useContext, useRef } from 'react'; import * as React from 'react'; import useCallbackRef from '@restart/hooks/useCallbackRef'; -import DropdownContext, { DropdownContextValue } from './DropdownContext'; +import DropdownContext, { + type DropdownContextValue, +} from './DropdownContext.js'; import usePopper, { - UsePopperOptions, - Placement, - Offset, - UsePopperState, -} from './usePopper'; -import useClickOutside, { ClickOutsideOptions } from './useClickOutside'; -import mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig'; + type UsePopperOptions, + type Placement, + type Offset, + type UsePopperState, +} from './usePopper.js'; +import useClickOutside, { + type ClickOutsideOptions, +} from './useClickOutside.js'; +import mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig.js'; export interface UseDropdownMenuOptions { /** diff --git a/src/DropdownToggle.tsx b/src/DropdownToggle.tsx index 030ad7b..7e9f872 100644 --- a/src/DropdownToggle.tsx +++ b/src/DropdownToggle.tsx @@ -1,6 +1,8 @@ import { useContext, useCallback, useId } from 'react'; import * as React from 'react'; -import DropdownContext, { DropdownContextValue } from './DropdownContext'; +import DropdownContext, { + type DropdownContextValue, +} from './DropdownContext.js'; export const isRoleMenu = (el: HTMLElement) => el.getAttribute('role')?.toLowerCase() === 'menu'; diff --git a/src/ImperativeTransition.tsx b/src/ImperativeTransition.tsx index ac2559f..d580286 100644 --- a/src/ImperativeTransition.tsx +++ b/src/ImperativeTransition.tsx @@ -2,10 +2,10 @@ import useMergedRefs from '@restart/hooks/useMergedRefs'; import useEventCallback from '@restart/hooks/useEventCallback'; import useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect'; import { useRef, cloneElement, useState } from 'react'; -import { TransitionComponent, TransitionProps } from './types'; -import NoopTransition from './NoopTransition'; -import RTGTransition from './RTGTransition'; -import { getChildRef } from './utils'; +import type { TransitionComponent, TransitionProps } from './types.js'; +import NoopTransition from './NoopTransition.js'; +import RTGTransition from './RTGTransition.js'; +import { getChildRef } from './utils.js'; export interface TransitionFunctionOptions { in: boolean; diff --git a/src/Modal.tsx b/src/Modal.tsx index 78c3cb9..7342d8f 100644 --- a/src/Modal.tsx +++ b/src/Modal.tsx @@ -1,5 +1,3 @@ -/* eslint-disable react/prop-types */ - import activeElement from 'dom-helpers/activeElement'; import contains from 'dom-helpers/contains'; import canUseDOM from 'dom-helpers/canUseDOM'; @@ -19,12 +17,15 @@ import useWillUnmount from '@restart/hooks/useWillUnmount'; import usePrevious from '@restart/hooks/usePrevious'; import useEventCallback from '@restart/hooks/useEventCallback'; -import ModalManager from './ModalManager'; -import useWaitForDOMRef, { DOMContainer } from './useWaitForDOMRef'; -import { TransitionCallbacks, TransitionComponent } from './types'; -import useWindow from './useWindow'; -import { renderTransition, TransitionHandler } from './ImperativeTransition'; -import { isEscKey } from './utils'; +import ModalManager from './ModalManager.js'; +import useWaitForDOMRef, { type DOMContainer } from './useWaitForDOMRef.js'; +import type { TransitionCallbacks, TransitionComponent } from './types.js'; +import useWindow from './useWindow.js'; +import { + renderTransition, + type TransitionHandler, +} from './ImperativeTransition.js'; +import { isEscKey } from './utils.js'; let manager: ModalManager; diff --git a/src/ModalManager.ts b/src/ModalManager.ts index fbab930..70f7cf1 100644 --- a/src/ModalManager.ts +++ b/src/ModalManager.ts @@ -1,6 +1,6 @@ import css from 'dom-helpers/css'; -import { dataAttr } from './DataKey'; -import getBodyScrollbarWidth from './getScrollbarWidth'; +import { dataAttr } from './DataKey.js'; +import getBodyScrollbarWidth from './getScrollbarWidth.js'; export interface ModalInstance { dialog: Element; diff --git a/src/Nav.tsx b/src/Nav.tsx index 91feced..1db6545 100644 --- a/src/Nav.tsx +++ b/src/Nav.tsx @@ -3,16 +3,19 @@ import * as React from 'react'; import { useContext, useEffect, useRef } from 'react'; import useForceUpdate from '@restart/hooks/useForceUpdate'; import useMergedRefs from '@restart/hooks/useMergedRefs'; -import NavContext from './NavContext'; -import SelectableContext, { makeEventKey } from './SelectableContext'; -import TabContext from './TabContext'; -import { +import NavContext from './NavContext.js'; +import SelectableContext, { makeEventKey } from './SelectableContext.js'; +import TabContext from './TabContext.js'; +import type { EventKey, DynamicRefForwardingComponent, SelectCallback, -} from './types'; -import { dataAttr, dataProp } from './DataKey'; -import NavItem, { UseNavItemOptions, NavItemProps } from './NavItem'; +} from './types.js'; +import { dataAttr, dataProp } from './DataKey.js'; +import NavItem, { + type UseNavItemOptions, + type NavItemProps, +} from './NavItem.js'; export type { UseNavItemOptions, NavItemProps }; diff --git a/src/NavContext.tsx b/src/NavContext.tsx index eceae8c..f6ec13c 100644 --- a/src/NavContext.tsx +++ b/src/NavContext.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventKey } from './types'; +import type { EventKey } from './types.js'; interface NavContextType { role?: string; // used by NavItem to determine it's role diff --git a/src/NavItem.tsx b/src/NavItem.tsx index 0ab4c42..f082a12 100644 --- a/src/NavItem.tsx +++ b/src/NavItem.tsx @@ -2,12 +2,12 @@ import * as React from 'react'; import { useContext } from 'react'; import useEventCallback from '@restart/hooks/useEventCallback'; -import NavContext from './NavContext'; -import SelectableContext, { makeEventKey } from './SelectableContext'; -import { EventKey, DynamicRefForwardingComponent } from './types'; -import Button from './Button'; -import { dataAttr } from './DataKey'; -import TabContext from './TabContext'; +import NavContext from './NavContext.js'; +import SelectableContext, { makeEventKey } from './SelectableContext.js'; +import type { EventKey, DynamicRefForwardingComponent } from './types.js'; +import Button from './Button.js'; +import { dataAttr } from './DataKey.js'; +import TabContext from './TabContext.js'; export interface NavItemProps extends React.HTMLAttributes { /** diff --git a/src/NoopTransition.tsx b/src/NoopTransition.tsx index d4f1983..56a1b09 100644 --- a/src/NoopTransition.tsx +++ b/src/NoopTransition.tsx @@ -1,8 +1,8 @@ import useEventCallback from '@restart/hooks/useEventCallback'; import useMergedRefs from '@restart/hooks/useMergedRefs'; import { cloneElement, useEffect, useRef } from 'react'; -import { TransitionProps } from './types'; -import { getChildRef } from './utils'; +import type { TransitionProps } from './types.js'; +import { getChildRef } from './utils.js'; function NoopTransition({ children, diff --git a/src/Overlay.tsx b/src/Overlay.tsx index 1e7ffb2..f5baf9d 100644 --- a/src/Overlay.tsx +++ b/src/Overlay.tsx @@ -4,17 +4,20 @@ import useCallbackRef from '@restart/hooks/useCallbackRef'; import useMergedRefs from '@restart/hooks/useMergedRefs'; import { useState } from 'react'; import usePopper, { - Offset, - Placement, - UsePopperOptions, - UsePopperState, - VirtualElement, -} from './usePopper'; -import useRootClose, { RootCloseOptions } from './useRootClose'; -import useWaitForDOMRef, { DOMContainer } from './useWaitForDOMRef'; -import { TransitionCallbacks, TransitionComponent } from './types'; -import mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig'; -import { renderTransition, TransitionHandler } from './ImperativeTransition'; + type Offset, + type Placement, + type UsePopperOptions, + type UsePopperState, + type VirtualElement, +} from './usePopper.js'; +import useRootClose, { type RootCloseOptions } from './useRootClose.js'; +import useWaitForDOMRef, { type DOMContainer } from './useWaitForDOMRef.js'; +import type { TransitionCallbacks, TransitionComponent } from './types.js'; +import mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig.js'; +import { + renderTransition, + type TransitionHandler, +} from './ImperativeTransition.js'; export interface OverlayArrowProps extends Record { ref: React.RefCallback; diff --git a/src/Portal.tsx b/src/Portal.tsx index 92a200f..474dac0 100644 --- a/src/Portal.tsx +++ b/src/Portal.tsx @@ -1,7 +1,7 @@ import ReactDOM from 'react-dom'; import * as React from 'react'; -import useWaitForDOMRef, { DOMContainer } from './useWaitForDOMRef'; +import useWaitForDOMRef, { type DOMContainer } from './useWaitForDOMRef.js'; export interface PortalProps { children: React.ReactElement; diff --git a/src/RTGTransition.tsx b/src/RTGTransition.tsx index 068bfc4..b45d25e 100644 --- a/src/RTGTransition.tsx +++ b/src/RTGTransition.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import useRTGTransitionProps, { - TransitionProps, -} from './useRTGTransitionProps'; + type TransitionProps, +} from './useRTGTransitionProps.js'; export type RTGTransitionProps = TransitionProps & { component: React.ElementType; diff --git a/src/SelectableContext.tsx b/src/SelectableContext.tsx index f25ebe9..6fa3937 100644 --- a/src/SelectableContext.tsx +++ b/src/SelectableContext.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventKey, SelectCallback } from './types'; +import type { EventKey, SelectCallback } from './types.js'; const SelectableContext = React.createContext(null); diff --git a/src/TabContext.tsx b/src/TabContext.tsx index e64809c..668e720 100644 --- a/src/TabContext.tsx +++ b/src/TabContext.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventKey, SelectCallback, TransitionComponent } from './types'; +import type { EventKey, SelectCallback, TransitionComponent } from './types.js'; export interface TabContextType { onSelect: SelectCallback; diff --git a/src/TabPanel.tsx b/src/TabPanel.tsx index d2af7bd..960881f 100644 --- a/src/TabPanel.tsx +++ b/src/TabPanel.tsx @@ -1,15 +1,15 @@ import * as React from 'react'; import { useContext } from 'react'; -import TabContext from './TabContext'; -import SelectableContext, { makeEventKey } from './SelectableContext'; -import { +import TabContext from './TabContext.js'; +import SelectableContext, { makeEventKey } from './SelectableContext.js'; +import type { EventKey, DynamicRefForwardingComponent, TransitionCallbacks, TransitionComponent, -} from './types'; -import NoopTransition from './NoopTransition'; +} from './types.js'; +import NoopTransition from './NoopTransition.js'; export interface TabPanelProps extends TransitionCallbacks, diff --git a/src/Tabs.tsx b/src/Tabs.tsx index 61741e2..6485a08 100644 --- a/src/Tabs.tsx +++ b/src/Tabs.tsx @@ -2,10 +2,10 @@ import * as React from 'react'; import { useId, useMemo } from 'react'; import { useUncontrolledProp } from 'uncontrollable'; -import TabContext, { TabContextType } from './TabContext'; -import SelectableContext from './SelectableContext'; -import { EventKey, SelectCallback, TransitionComponent } from './types'; -import TabPanel, { TabPanelProps } from './TabPanel'; +import TabContext, { type TabContextType } from './TabContext.js'; +import SelectableContext from './SelectableContext.js'; +import { EventKey, SelectCallback, TransitionComponent } from './types.js'; +import TabPanel, { TabPanelProps } from './TabPanel.js'; export type { TabPanelProps }; export interface TabsProps extends React.PropsWithChildren { diff --git a/src/Waypoint.tsx b/src/Waypoint.tsx index 4dab2e4..451d5ee 100644 --- a/src/Waypoint.tsx +++ b/src/Waypoint.tsx @@ -2,10 +2,10 @@ import useCallbackRef from '@restart/hooks/useCallbackRef'; import * as React from 'react'; import useWaypoint, { - WaypointOptions, - WaypointEvent, - Position, -} from './useWaypoint'; + type WaypointOptions, + type WaypointEvent, + type Position, +} from './useWaypoint.js'; export { Position }; export type { WaypointEvent }; diff --git a/src/index.ts b/src/index.ts index 0717963..ddb3f59 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,16 @@ -import Dropdown from './Dropdown'; -import { useDropdownMenu } from './DropdownMenu'; -import { useDropdownToggle } from './DropdownToggle'; -import { useDropdownItem } from './DropdownItem'; -import Modal from './Modal'; -import Overlay from './Overlay'; -import Portal from './Portal'; -import useRootClose from './useRootClose'; -import Nav from './Nav'; -import NavItem, { useNavItem } from './NavItem'; -import Button from './Button'; -import Tabs from './Tabs'; -import TabPanel from './TabPanel'; +import Dropdown from './Dropdown.js'; +import { useDropdownMenu } from './DropdownMenu.js'; +import { useDropdownToggle } from './DropdownToggle.js'; +import { useDropdownItem } from './DropdownItem.js'; +import Modal from './Modal.js'; +import Overlay from './Overlay.js'; +import Portal from './Portal.js'; +import useRootClose from './useRootClose.js'; +import Nav from './Nav.js'; +import NavItem, { useNavItem } from './NavItem.js'; +import Button from './Button.js'; +import Tabs from './Tabs.js'; +import TabPanel from './TabPanel.js'; export { Button, @@ -29,7 +29,7 @@ export { TabPanel, }; -export type { ButtonProps } from './Button'; +export type { ButtonProps } from './Button.js'; export type { DropdownProps, DropdownMenuProps, @@ -38,9 +38,9 @@ export type { DropdownToggleProps, UseDropdownToggleMetadata, DropdownItemProps, -} from './Dropdown'; -export type { NavItemProps, UseNavItemOptions, NavProps } from './Nav'; -export type { ModalProps } from './Modal'; -export type { OverlayProps } from './Overlay'; -export type { PortalProps } from './Portal'; -export type { TabsProps, TabPanelProps } from './Tabs'; +} from './Dropdown.js'; +export type { NavItemProps, UseNavItemOptions, NavProps } from './Nav.js'; +export type { ModalProps } from './Modal.js'; +export type { OverlayProps } from './Overlay.js'; +export type { PortalProps } from './Portal.js'; +export type { TabsProps, TabPanelProps } from './Tabs.js'; diff --git a/src/mergeOptionsWithPopperConfig.ts b/src/mergeOptionsWithPopperConfig.ts index 501fff8..b1c4ef2 100644 --- a/src/mergeOptionsWithPopperConfig.ts +++ b/src/mergeOptionsWithPopperConfig.ts @@ -1,4 +1,9 @@ -import { UsePopperOptions, Offset, Placement, Modifiers } from './usePopper'; +import type { + UsePopperOptions, + Offset, + Placement, + Modifiers, +} from './usePopper.js'; export type Config = { flip?: boolean; diff --git a/src/popper.ts b/src/popper.ts index ed0ec6b..758294f 100644 --- a/src/popper.ts +++ b/src/popper.ts @@ -1,13 +1,17 @@ -import arrow from '@popperjs/core/lib/modifiers/arrow'; -import computeStyles from '@popperjs/core/lib/modifiers/computeStyles'; -import eventListeners from '@popperjs/core/lib/modifiers/eventListeners'; -import flip from '@popperjs/core/lib/modifiers/flip'; -import hide from '@popperjs/core/lib/modifiers/hide'; -import offset from '@popperjs/core/lib/modifiers/offset'; -import popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets'; -import preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow'; -import { placements } from '@popperjs/core/lib/enums'; -import { popperGenerator } from '@popperjs/core/lib/popper-base'; +// Since tsconfig is set for nodenext, these imports are resolving with a { default: ... } object, which +// messes up the types. +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +import arrow from '@popperjs/core/lib/modifiers/arrow.js'; +import computeStyles from '@popperjs/core/lib/modifiers/computeStyles.js'; +import eventListeners from '@popperjs/core/lib/modifiers/eventListeners.js'; +import flip from '@popperjs/core/lib/modifiers/flip.js'; +import hide from '@popperjs/core/lib/modifiers/hide.js'; +import offset from '@popperjs/core/lib/modifiers/offset.js'; +import popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets.js'; +import preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow.js'; +import { placements } from '@popperjs/core/lib/enums.js'; +import { popperGenerator } from '@popperjs/core/lib/popper-base.js'; // For the common JS build we will turn this file into a bundle with no imports. // This is b/c the Popper lib is all esm files, and would break in a common js only environment diff --git a/src/usePopper.ts b/src/usePopper.ts index a357781..7b3e0d9 100644 --- a/src/usePopper.ts +++ b/src/usePopper.ts @@ -2,7 +2,7 @@ import * as Popper from '@popperjs/core'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { dequal } from 'dequal'; import useSafeState from '@restart/hooks/useSafeState'; -import { createPopper } from './popper'; +import { createPopper } from './popper.js'; const disabledApplyStylesModifier = { name: 'applyStyles', diff --git a/src/useRTGTransitionProps.ts b/src/useRTGTransitionProps.ts index 0c46f6e..3003759 100644 --- a/src/useRTGTransitionProps.ts +++ b/src/useRTGTransitionProps.ts @@ -1,10 +1,10 @@ import { cloneElement, useCallback, useRef } from 'react'; import useMergedRefs from '@restart/hooks/useMergedRefs'; -import { +import type { TransitionProps as RTGTransitionProps, TransitionStatus, -} from 'react-transition-group/Transition'; -import { getChildRef } from './utils'; +} from 'react-transition-group/Transition.js'; +import { getChildRef } from './utils.js'; export type TransitionProps = RTGTransitionProps & { children: diff --git a/src/useRootClose.ts b/src/useRootClose.ts index 33db5b3..991f21f 100644 --- a/src/useRootClose.ts +++ b/src/useRootClose.ts @@ -4,10 +4,10 @@ import { useEffect } from 'react'; import useEventCallback from '@restart/hooks/useEventCallback'; import useClickOutside, { - ClickOutsideOptions, + type ClickOutsideOptions, getRefTarget, -} from './useClickOutside'; -import { isEscKey } from './utils'; +} from './useClickOutside.js'; +import { isEscKey } from './utils.js'; const noop = () => {}; diff --git a/src/useWaitForDOMRef.ts b/src/useWaitForDOMRef.ts index 40a6b8a..e77f79f 100644 --- a/src/useWaitForDOMRef.ts +++ b/src/useWaitForDOMRef.ts @@ -1,8 +1,8 @@ import ownerDocument from 'dom-helpers/ownerDocument'; import canUseDOM from 'dom-helpers/canUseDOM'; import { useState, useEffect } from 'react'; -import useWindow from './useWindow'; -import { VirtualElement } from './usePopper'; +import useWindow from './useWindow.js'; +import type { VirtualElement } from './usePopper.js'; export type DOMContainer = diff --git a/tsconfig.json b/tsconfig.json index f6d38e6..4aafba8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,8 +5,8 @@ "skipLibCheck": true, "lib": ["esnext", "dom"], "target": "esnext", - "module": "esnext", - "moduleResolution": "bundler", + "module": "NodeNext", + "moduleResolution": "NodeNext", "allowJs": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, diff --git a/www/plugins/webpack.js b/www/plugins/webpack.js index 1f98818..4524503 100644 --- a/www/plugins/webpack.js +++ b/www/plugins/webpack.js @@ -24,6 +24,9 @@ module.exports = () => ({ alias: { '@restart/ui': path.resolve(__dirname, '../../src'), }, + extensionAlias: { + '.js': ['.ts', '.tsx', '.js'], + }, }, }; }, diff --git a/yarn.lock b/yarn.lock index 5dd7de1..7da3e56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1549,6 +1549,11 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.27.1": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" + integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== + "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -4130,6 +4135,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -4428,7 +4438,7 @@ dom-accessibility-api@^0.5.9: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== -dom-helpers@^5.0.1, dom-helpers@^5.2.0: +dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== @@ -4436,6 +4446,14 @@ dom-helpers@^5.0.1, dom-helpers@^5.2.0: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +dom-helpers@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-6.0.1.tgz#f56400eb45770e3dd4fa014513739e6b670e6362" + integrity sha512-IKySryuFwseGkrCA/pIqlwUPOD50w1Lj/B2Yief3vBOP18k5y4t+hTqKh55gULDVeJMRitcozve+g/wVFf4sFQ== + dependencies: + "@babel/runtime" "^7.27.1" + csstype "^3.1.3" + dom-serializer@^1.0.1: version "1.3.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"