@kubb/react
Version:
React integration for Kubb, providing JSX runtime support and React component generation capabilities for code generation plugins.
24 lines (18 loc) • 754 B
text/typescript
import { nodeNames } from '../dom.ts'
import type { KubbFile } from '@kubb/core/fs'
import type React from 'react'
import type { File } from '../components/File.tsx'
import type { DOMElement } from '../types.ts'
export function squashImportNodes(node: DOMElement): Set<KubbFile.Import> {
let imports = new Set<KubbFile.Import>()
node.childNodes.filter(Boolean).forEach((childNode) => {
if (childNode.nodeName !== '#text' && nodeNames.includes(childNode.nodeName)) {
imports = new Set([...imports, ...squashImportNodes(childNode)])
}
if (childNode.nodeName === 'kubb-import') {
const attributes = childNode.attributes as React.ComponentProps<typeof File.Import>
imports.add(attributes)
}
})
return imports
}