mirror of
https://github.com/apache/superset.git
synced 2026-05-10 02:15:50 +00:00
67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
/**
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import React from 'react';
|
|
|
|
// Browser-only check for SSR safety
|
|
const isBrowser = typeof window !== 'undefined';
|
|
|
|
/**
|
|
* ReactLiveScope provides the scope for live code blocks.
|
|
* Any component added here will be available in ```tsx live blocks.
|
|
*
|
|
* Components are conditionally loaded only in the browser to avoid
|
|
* SSG issues with Emotion CSS-in-JS jsx runtime.
|
|
*
|
|
* Components are available by name, e.g.:
|
|
* <Button>Click me</Button>
|
|
* <Avatar size="large" />
|
|
* <Badge count={5} />
|
|
*/
|
|
|
|
// Base scope with React (always available)
|
|
const ReactLiveScope: Record<string, unknown> = {
|
|
// React core
|
|
React,
|
|
...React,
|
|
};
|
|
|
|
// Only load Superset components in browser context
|
|
// This prevents SSG errors from Emotion CSS-in-JS
|
|
if (isBrowser) {
|
|
try {
|
|
// Dynamic require for browser-only execution
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
const SupersetComponents = require('@superset/components');
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
const { Alert } = require('@apache-superset/core/components');
|
|
|
|
console.log('[ReactLiveScope] SupersetComponents keys:', Object.keys(SupersetComponents || {}).slice(0, 10));
|
|
console.log('[ReactLiveScope] Has Button?', 'Button' in (SupersetComponents || {}));
|
|
|
|
Object.assign(ReactLiveScope, SupersetComponents, { Alert });
|
|
|
|
console.log('[ReactLiveScope] Final scope keys:', Object.keys(ReactLiveScope).slice(0, 20));
|
|
} catch (e) {
|
|
console.error('[ReactLiveScope] Failed to load Superset components:', e);
|
|
}
|
|
}
|
|
|
|
export default ReactLiveScope;
|