PHP 8.2.30
Preview: with-no-ssr.tsx Size: 992 B
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/adminjs/src/frontend/hoc/with-no-ssr.tsx

import React, { ComponentType, useEffect, useState } from 'react'

/**
 * A higher-order component that prevents a component from rendering server-side
 *
 * @template P - The props object of the wrapped component
 * @param {React.ComponentType<P>} Component - The component to be wrapped
 * @returns {React.FC<P>} A new component that renders the given component client-side only
 */
// eslint-disable-next-line max-len
const withNoSSR = <P extends Record<string, unknown>>(Component: ComponentType<P>) => (props: P) => {
  const [isClient, setIsClient] = useState(false)

  /**
   * Sets isClient to true when the component is mounted on the client side
   */
  useEffect(() => {
    setIsClient(true)
  }, [])

  // Renders nothing if the component is not mounted on the client side
  if (!isClient) return null

  // Renders the wrapped component with the given props if it's mounted on the client side
  return <Component {...props} />
}

export {
  withNoSSR as default,
  withNoSSR,
}

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).