PHP 8.2.30
Preview: allow-override.tsx Size: 1.23 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/adminjs/src/frontend/hoc/allow-override.tsx

/* eslint-disable react/function-component-definition */
import React, { ComponentType } from 'react'

import { OverridableComponent } from '../utils/overridable-component.js'

/**
 * @private
 *
 * @classdesc
 * Overrides one of the AdminJS core components when user passes it's name to ComponentLoader
 *
 * If case of being overridden, component receives additional prop: `OriginalComponent`
 *
 * @example
 * new ComponentLoader().override('SidebarFooter', MySidebarFooter)
 */
function allowOverride<P extends Record<string, unknown>>(
  OriginalComponent: ComponentType<P>,
  name: OverridableComponent,
): ComponentType<P & {OriginalComponent?: ComponentType<P>}> {
  const WrapperComponent = (props: P) => {
    let Component = OriginalComponent

    /**
     * @new in version 6.3
     *
     * This adds support for future theme-specific components via their "theme.bundle.js"
     *
     */
    if (typeof window !== 'undefined') {
      Component = (window as any).AdminJS?.UserComponents?.[name]
        ?? (window as any).THEME_COMPONENTS?.[name]
        ?? OriginalComponent
    }

    return <Component {...props} OriginalComponent={OriginalComponent} />
  }

  return WrapperComponent
}

export {
  allowOverride as default,
  allowOverride,
}

Directory Contents

Dirs: 0 × Files: 4

Name Size Perms Modified Actions
1.23 KB lrw-r--r-- 2026-02-28 00:32:46
Edit Download
102 B lrw-r--r-- 2026-02-28 00:32:28
Edit Download
992 B lrw-r--r-- 2026-02-28 00:32:50
Edit Download
1.28 KB lrw-r--r-- 2026-02-28 00:32:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).