Spaces:
Paused
Paused
Download docs/src/shims/null-module.js from Leon4gr45/powerbi: direct link, hf CLI and curl.
- Browser
- Download file 4.34 kB
-
https://huggingface.co/spaces/Leon4gr45/powerbi/resolve/main/docs/src/shims/null-module.js
- Command line
-
hf download hf://spaces/Leon4gr45/powerbi/docs/src/shims/null-module.js
-
curl -L -o null-module.js https://huggingface.co/spaces/Leon4gr45/powerbi/resolve/main/docs/src/shims/null-module.js
4.34 kB
| /** | |
| * 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. | |
| */ | |
| // Null module shim for packages not available in the docs build. | |
| // These are transitive dependencies of superset-frontend components that exist | |
| // in the barrel file but are never rendered on the docs site. | |
| // webpack needs these to resolve at build time even though the code paths | |
| // that use them are never executed at runtime. | |
| // | |
| // This shim uses a recursive Proxy to handle nested property access chains: | |
| // import ace from 'ace-builds'; ace.config.set(...) → works (returns proxy) | |
| // import { useResizeDetector } from 'react-resize-detector' → returns noop hook | |
| // import ReactAce from 'react-ace' → returns NullComponent | |
| const NullComponent = () => null; | |
| // For hooks that return objects/arrays | |
| const useNoop = () => ({}); | |
| // Mock for useResizeDetector - returns { ref, width, height } where ref.current exists | |
| const useResizeDetectorMock = () => ({ | |
| ref: { current: null }, | |
| width: 0, | |
| height: 0, | |
| }); | |
| /** | |
| * Creates a recursive proxy that handles any depth of property access. | |
| * This allows patterns like ace.config.set() or ace.config.setModuleUrl() to work. | |
| * | |
| * The proxy is both callable (returns undefined) and accessible (returns another proxy). | |
| */ | |
| function createDeepProxy() { | |
| const handler = { | |
| // Handle property access - return another proxy for chaining | |
| get(target, prop) { | |
| // Standard module properties | |
| if (prop === 'default') return createDeepProxy(); | |
| if (prop === '__esModule') return true; | |
| // Symbol properties (used by JS internals) | |
| if (typeof prop === 'symbol') { | |
| if (prop === Symbol.toPrimitive) return () => ''; | |
| if (prop === Symbol.toStringTag) return 'NullModule'; | |
| if (prop === Symbol.iterator) return undefined; | |
| return undefined; | |
| } | |
| // React-specific properties | |
| if (prop === '$$typeof') return undefined; | |
| if (prop === 'propTypes') return undefined; | |
| if (prop === 'displayName') return 'NullComponent'; | |
| // Specific hook mocks for known hooks that need proper return values | |
| if (prop === 'useResizeDetector') { | |
| return useResizeDetectorMock; | |
| } | |
| // Common hook names return useNoop for better compatibility | |
| if (typeof prop === 'string' && prop.startsWith('use')) { | |
| return useNoop; | |
| } | |
| // Return another proxy to allow further chaining (ace.config.set) | |
| return createDeepProxy(); | |
| }, | |
| // Handle function calls - return undefined (safe default) | |
| apply() { | |
| return undefined; | |
| }, | |
| // Handle new ClassName() - return an empty object | |
| construct() { | |
| return {}; | |
| }, | |
| }; | |
| // Create a proxy over a function so it's both callable and has properties | |
| return new Proxy(function NullModule() {}, handler); | |
| } | |
| // Create the main module export as a deep proxy | |
| const nullModule = createDeepProxy(); | |
| // Support both CommonJS and ES module patterns | |
| module.exports = nullModule; | |
| module.exports.default = createDeepProxy(); | |
| module.exports.__esModule = true; | |
| // Named exports for common patterns (webpack may inline these) | |
| module.exports.useResizeDetector = useResizeDetectorMock; | |
| module.exports.withResizeDetector = createDeepProxy(); | |
| module.exports.Resizable = NullComponent; | |
| module.exports.ResizableBox = NullComponent; | |
| module.exports.FixedSizeList = NullComponent; | |
| module.exports.VariableSizeList = NullComponent; | |
| // ace-builds specific exports that CodeEditor uses | |
| module.exports.config = createDeepProxy(); | |
| module.exports.require = createDeepProxy(); | |
| module.exports.edit = createDeepProxy(); | |