Files
medusa-store/packages/admin/dashboard/src/hooks/use-combined-refs.tsx
Kasper Fabricius Kristensen 0fe1201435 feat(admin-sdk,admin-bundler,admin-shared,medusa): Restructure admin packages (#8988)
**What**
- Renames /admin-next -> /admin
- Renames @medusajs/admin-sdk -> @medusajs/admin-bundler
- Creates a new package called @medusajs/admin-sdk that will hold all tooling relevant to creating admin extensions. This is currently `defineRouteConfig` and `defineWidgetConfig`, but will eventually also export methods for adding custom fields, register translation, etc. 
  - cc: @shahednasser we should update the examples in the docs so these functions are imported from `@medusajs/admin-sdk`. People will also need to install the package in their project, as it's no longer a transient dependency.
  - cc: @olivermrbl we might want to publish a changelog when this is merged, as it is a breaking change, and will require people to import the `defineXConfig` from the new package instead of `@medusajs/admin-shared`.
- Updates CODEOWNERS so /admin packages does not require a review from the UI team.
2024-09-04 19:00:25 +00:00

20 lines
511 B
TypeScript

import { MutableRefObject, Ref, RefCallback } from "react"
// Utility function to set multiple refs
function setRef<T>(ref: Ref<T> | undefined, value: T) {
if (typeof ref === "function") {
ref(value)
} else if (ref && "current" in ref) {
;(ref as MutableRefObject<T>).current = value
}
}
// Combining multiple refs into one
export const useCombinedRefs = <T,>(
...refs: (Ref<T> | undefined)[]
): RefCallback<T> => {
return (value: T) => {
refs.forEach((ref) => setRef(ref, value))
}
}