@kubb/react-fabric 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Fabric-PGwn47Lb.d.cts → Fabric-BF1akKIl.d.cts} +2 -2
- package/dist/{Fabric-CoGYXq1o.d.ts → Fabric-E6DCwBtT.d.ts} +2 -2
- package/dist/{KubbFile-bFdmEsQz.d.ts → KubbFile-D4gyyfL-.d.ts} +1 -1
- package/dist/{KubbFile-DHCtBOpy.d.cts → KubbFile-FGXV713i.d.cts} +1 -1
- package/dist/{chunk-9mlisOrp.js → chunk-BEV-X5tz.js} +4 -5
- package/dist/{chunk-BaqVhFee.cjs → chunk-CUT6urMc.cjs} +0 -16
- package/dist/{devtools-D7cmED8s.js → devtools-Cb1pMQYm.js} +2 -3
- package/dist/{devtools-D7cmED8s.js.map → devtools-Cb1pMQYm.js.map} +1 -1
- package/dist/{devtools-CYVZyenT.cjs → devtools-D4p2T_2t.cjs} +3 -3
- package/dist/{devtools-CYVZyenT.cjs.map → devtools-D4p2T_2t.cjs.map} +1 -1
- package/dist/devtools.cjs +1 -1
- package/dist/devtools.js +1 -1
- package/dist/globals-Bww8BuMp.d.cts +26 -0
- package/dist/globals-C3pUb0jQ.d.ts +26 -0
- package/dist/globals.d.cts +3 -3
- package/dist/globals.d.ts +3 -3
- package/dist/index.cjs +107 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -19
- package/dist/index.d.ts +9 -19
- package/dist/index.js +56 -69
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.cjs +15 -7
- package/dist/jsx-dev-runtime.d.cts +11 -0
- package/dist/jsx-dev-runtime.d.ts +11 -0
- package/dist/jsx-dev-runtime.js +2 -4
- package/dist/jsx-namespace-CCcLTqTR.d.cts +28 -0
- package/dist/jsx-namespace-DoTKeja2.d.ts +28 -0
- package/dist/jsx-runtime.cjs +21 -7
- package/dist/jsx-runtime.d.cts +7 -10
- package/dist/jsx-runtime.d.ts +7 -10
- package/dist/jsx-runtime.js +2 -4
- package/dist/parsers.d.cts +2 -2
- package/dist/parsers.d.ts +2 -2
- package/dist/plugins-9oisj5ko.cjs +640 -0
- package/dist/plugins-9oisj5ko.cjs.map +1 -0
- package/dist/plugins-DYBs1Uhp.js +590 -0
- package/dist/plugins-DYBs1Uhp.js.map +1 -0
- package/dist/plugins.cjs +1 -2
- package/dist/plugins.d.cts +3 -3
- package/dist/plugins.d.ts +3 -3
- package/dist/plugins.js +1 -2
- package/dist/{reactPlugin-CCty1XGl.d.ts → reactPlugin-B3xiMbv8.d.ts} +2 -2
- package/dist/{reactPlugin-SuzV8fwK.d.cts → reactPlugin-DpMLHD7t.d.cts} +2 -2
- package/dist/{types-BnXxcIyv.d.ts → types-B2EZG5-G.d.cts} +22 -3
- package/dist/{types-DoYRYV1C.d.cts → types-UALIyxCE.d.ts} +22 -3
- package/dist/types.d.cts +3 -2
- package/dist/types.d.ts +3 -2
- package/package.json +7 -4
- package/src/globals.ts +19 -43
- package/src/index.ts +1 -10
- package/src/jsx-dev-runtime.ts +8 -0
- package/src/jsx-namespace.d.ts +29 -0
- package/src/jsx-runtime.ts +6 -6
- package/src/types.ts +26 -1
- package/dist/backend-BwCrJwGY.cjs +0 -11364
- package/dist/backend-BwCrJwGY.cjs.map +0 -1
- package/dist/backend-U2f8IEJ7.js +0 -11361
- package/dist/backend-U2f8IEJ7.js.map +0 -1
- package/dist/globals-1MFa0Fvg.d.ts +0 -52
- package/dist/globals-C7dPa-nz.d.cts +0 -52
- package/dist/jsx-runtime-8_h1Kd4b.cjs +0 -36
- package/dist/jsx-runtime-8_h1Kd4b.cjs.map +0 -1
- package/dist/jsx-runtime-BJX2mL7C.js +0 -13
- package/dist/jsx-runtime-BJX2mL7C.js.map +0 -1
- package/dist/jsx-runtime-C9xQ4GQD.js +0 -1338
- package/dist/jsx-runtime-C9xQ4GQD.js.map +0 -1
- package/dist/jsx-runtime-CSnwG7o6.cjs +0 -1349
- package/dist/jsx-runtime-CSnwG7o6.cjs.map +0 -1
- package/dist/plugins-BQE1GnQ7.cjs +0 -15554
- package/dist/plugins-BQE1GnQ7.cjs.map +0 -1
- package/dist/plugins-BVFjgEC2.js +0 -15509
- package/dist/plugins-BVFjgEC2.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins-DYBs1Uhp.js","names":["onExit","node: TextNode","nodeNames: Array<ElementNames>","text","file: KubbFile.File"],"sources":["../src/components/Root.tsx","../src/dom.ts","../src/Renderer.ts","../src/utils/squashTextNodes.ts","../src/utils/squashExportNodes.ts","../src/utils/squashImportNodes.ts","../src/utils/squashSourceNodes.ts","../src/utils/processFiles.ts","../src/Runtime.tsx","../src/plugins/reactPlugin.ts"],"sourcesContent":["import { Component, createContext } from 'react'\n\nimport type { KubbNode } from '../types.ts'\n\ntype ErrorBoundaryProps = {\n onError: (error: Error) => void\n children?: KubbNode\n}\n\nclass ErrorBoundary extends Component<{\n onError: ErrorBoundaryProps['onError']\n children?: KubbNode\n}> {\n state = { hasError: false }\n\n static displayName = 'KubbErrorBoundary'\n static getDerivedStateFromError(_error: Error) {\n return { hasError: true }\n }\n\n componentDidCatch(error: Error) {\n if (error) {\n this.props.onError(error)\n }\n }\n\n render() {\n if (this.state.hasError) {\n return null\n }\n return this.props.children\n }\n}\n\nexport type RootContextProps = {\n /**\n * Exit (unmount) the whole Ink app.\n */\n readonly exit: (error?: Error) => void\n}\n\nexport const RootContext = createContext<RootContextProps>({\n exit: () => {},\n})\n\ntype RootProps = {\n /**\n * Exit (unmount) hook\n */\n readonly onExit: (error?: Error) => void\n /**\n * Error hook\n */\n readonly onError: (error: Error) => void\n readonly children?: KubbNode\n}\n\nexport function Root({ onError, onExit, children }: RootProps) {\n try {\n return (\n <ErrorBoundary\n onError={(error) => {\n onError(error)\n }}\n >\n <RootContext.Provider value={{ exit: onExit }}>{children}</RootContext.Provider>\n </ErrorBoundary>\n )\n } catch (_e) {\n return null\n }\n}\n\nRoot.Context = RootContext\nRoot.displayName = 'KubbRoot'\n","import type { DOMElement, DOMNode, DOMNodeAttribute, ElementNames, TextNode } from './types.ts'\n\nexport const createNode = (nodeName: string): DOMElement => {\n const node: DOMElement = {\n nodeName: nodeName as DOMElement['nodeName'],\n attributes: {},\n childNodes: [],\n parentNode: undefined,\n }\n\n return node\n}\n\nexport const appendChildNode = (node: DOMNode, childNode: DOMElement | DOMNode): void => {\n if (childNode.parentNode) {\n removeChildNode(childNode.parentNode, childNode)\n }\n\n if (node.nodeName !== '#text') {\n childNode.parentNode = node\n node.childNodes.push(childNode)\n }\n}\n\nexport const insertBeforeNode = (node: DOMElement, newChildNode: DOMNode, beforeChildNode: DOMNode): void => {\n if (newChildNode.parentNode) {\n removeChildNode(newChildNode.parentNode, newChildNode)\n }\n\n newChildNode.parentNode = node\n\n const index = node.childNodes.indexOf(beforeChildNode)\n if (index >= 0) {\n node.childNodes.splice(index, 0, newChildNode)\n\n return\n }\n\n node.childNodes.push(newChildNode)\n}\n\nexport const removeChildNode = (node: DOMElement, removeNode: DOMNode): void => {\n removeNode.parentNode = undefined\n\n const index = node.childNodes.indexOf(removeNode)\n if (index >= 0) {\n node.childNodes.splice(index, 1)\n }\n}\n\nexport const setAttribute = (node: DOMElement, key: string, value: DOMNodeAttribute): void => {\n node.attributes[key] = value\n}\n\nexport const createTextNode = (text: string): TextNode => {\n const node: TextNode = {\n nodeName: '#text',\n nodeValue: text,\n parentNode: undefined,\n }\n\n setTextNodeValue(node, text)\n\n return node\n}\n\nexport const setTextNodeValue = (node: TextNode, text: string): void => {\n if (typeof text !== 'string') {\n text = String(text)\n }\n\n node.nodeValue = text\n}\n\nexport const nodeNames: Array<ElementNames> = ['kubb-export', 'kubb-file', 'kubb-source', 'kubb-import', 'kubb-text']\n","import Reconciler, { type ReactContext } from 'react-reconciler'\nimport { DefaultEventPriority, NoEventPriority } from 'react-reconciler/constants'\n\nimport { appendChildNode, createNode, createTextNode, insertBeforeNode, removeChildNode, setAttribute, setTextNodeValue } from './dom.ts'\nimport type { KubbNode } from './types'\nimport type { DOMElement, DOMNodeAttribute, ElementNames, TextNode } from './types.ts'\nimport { createContext } from 'react'\n\ndeclare module 'react-reconciler' {\n // @ts-expect-error custom override\n interface Reconciler {\n updateContainerSync(element: KubbNode, container: unknown, parentComponent: any, callback?: null | (() => void)): void\n flushSyncWork(): void\n createContainer(\n containerInfo: unknown,\n tag: Reconciler.RootTag,\n hydrationCallbacks: null | Reconciler.SuspenseHydrationCallbacks<any>,\n isStrictMode: boolean,\n concurrentUpdatesByDefaultOverride: null | boolean,\n identifierPrefix: string,\n onUncaughtError: (error: Error) => void,\n onCaughtError: (error: Error) => void,\n onRecoverableError: (error: Error) => void,\n transitionCallbacks: null | Reconciler.TransitionTracingCallbacks,\n ): Reconciler.OpaqueRoot\n }\n}\n\ntype Props = Record<string, unknown>\n\ntype HostContext = {\n type: ElementNames\n isFile: boolean\n isSource: boolean\n}\n\nlet currentUpdatePriority = NoEventPriority\n\n/**\n * @link https://www.npmjs.com/package/react-devtools-inline\n * @link https://github.com/nitin42/Making-a-custom-React-renderer/blob/master/part-one.md\n * @link https://github.com/facebook/react/tree/main/packages/react-reconciler#practical-examples\n * @link https://github.com/vadimdemedes/ink\n * @link https://github.com/pixijs/pixi-react/tree/main/packages\n * @link https://github.com/diegomura/react-pdf/blob/master/packages/reconciler/src/reconciler-31.ts\n */\nexport const Renderer = Reconciler({\n getRootHostContext: () => ({\n type: 'kubb-root',\n isFile: false,\n isSource: false,\n }),\n prepareForCommit: () => {\n return null\n },\n preparePortalMount: () => null,\n clearContainer: () => false,\n resetAfterCommit(rootNode: DOMElement) {\n if (typeof rootNode.onRender === 'function') {\n rootNode.onRender()\n }\n },\n getChildHostContext(parentHostContext: HostContext, type: ElementNames) {\n const isInsideText = type === 'kubb-text'\n const isFile = type === 'kubb-file' || parentHostContext.isFile\n const isSource = type === 'kubb-source' || parentHostContext.isSource\n\n return { isInsideText, isFile, isSource, type }\n },\n shouldSetTextContent: () => false,\n createInstance(originalType: ElementNames, newProps: Props, _root: DOMElement) {\n const node = createNode(originalType)\n\n for (const [key, value] of Object.entries(newProps)) {\n if (key === 'children') {\n continue\n }\n\n setAttribute(node, key, value as DOMNodeAttribute)\n }\n\n return node\n },\n createTextInstance(text: string, _root: DOMElement, hostContext: HostContext) {\n if (hostContext.isFile && !hostContext.isSource) {\n throw new Error(`[react] '${text}' should be part of <File.Source> component when using the <File/> component`)\n }\n\n return createTextNode(text)\n },\n resetTextContent() {},\n hideTextInstance(node: TextNode) {\n setTextNodeValue(node, '')\n },\n unhideTextInstance(node: TextNode, text: string) {\n setTextNodeValue(node, text)\n },\n getPublicInstance: (instance) => instance,\n appendInitialChild: appendChildNode,\n appendChild: appendChildNode,\n insertBefore: insertBeforeNode,\n finalizeInitialChildren(_node, _type, _props, _rootNode) {\n return false\n },\n supportsMutation: true,\n isPrimaryRenderer: true,\n supportsPersistence: false,\n supportsHydration: false,\n scheduleTimeout: setTimeout,\n cancelTimeout: clearTimeout,\n noTimeout: -1,\n beforeActiveInstanceBlur() {},\n afterActiveInstanceBlur() {},\n detachDeletedInstance() {},\n getInstanceFromNode: () => null,\n prepareScopeUpdate() {},\n getInstanceFromScope: () => null,\n appendChildToContainer: appendChildNode,\n insertInContainerBefore: insertBeforeNode,\n removeChildFromContainer(node: DOMElement, removeNode: TextNode) {\n removeChildNode(node, removeNode)\n },\n commitMount() {},\n commitUpdate(node: DOMElement, _payload, _type, _oldProps: Props, newProps: Props) {\n const { props } = newProps\n\n if (props) {\n for (const [key, value] of Object.entries(props)) {\n setAttribute(node, key, value as DOMNodeAttribute)\n }\n }\n },\n commitTextUpdate(node: TextNode, _oldText, newText) {\n setTextNodeValue(node, newText)\n },\n removeChild(node: DOMElement, removeNode: TextNode) {\n removeChildNode(node, removeNode)\n },\n setCurrentUpdatePriority: (newPriority: number) => {\n currentUpdatePriority = newPriority\n },\n getCurrentUpdatePriority: () => currentUpdatePriority,\n resolveUpdatePriority() {\n if (currentUpdatePriority !== NoEventPriority) {\n return currentUpdatePriority\n }\n\n return DefaultEventPriority\n },\n maySuspendCommit() {\n return false\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n NotPendingTransition: undefined,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HostTransitionContext: createContext(null) as unknown as ReactContext<unknown>,\n resetFormInstance() {},\n requestPostPaintCallback() {},\n shouldAttemptEagerTransition() {\n return false\n },\n trackSchedulerEvent() {},\n resolveEventType() {\n return null\n },\n resolveEventTimeStamp() {\n return -1.1\n },\n preloadInstance() {\n return true\n },\n startSuspendingCommit() {},\n suspendInstance() {},\n waitForCommitToBeReady() {\n return null\n },\n})\n\nexport type { FiberRoot } from 'react-reconciler'\n","import { createImport, createExport, print } from '@kubb/fabric-core/parsers/typescript'\n\nimport type { File } from '../components/File.tsx'\nimport { nodeNames } from '../dom.ts'\nimport type { DOMElement } from '../types.ts'\n\nexport function squashTextNodes(node: DOMElement): string {\n let text = ''\n\n for (const childNode of node.childNodes) {\n if (!childNode) {\n continue\n }\n\n let nodeText = ''\n\n const getPrintText = (text: string): string => {\n if (childNode.nodeName === 'kubb-import') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File.Import>\n\n return print([\n createImport({\n name: attributes.name,\n path: attributes.path,\n root: attributes.root,\n isTypeOnly: attributes.isTypeOnly,\n }),\n ])\n }\n\n if (childNode.nodeName === 'kubb-export') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File.Export>\n if (attributes.path) {\n return print([\n createExport({\n name: attributes.name,\n path: attributes.path,\n isTypeOnly: attributes.isTypeOnly,\n asAlias: attributes.asAlias,\n }),\n ])\n }\n }\n\n if (childNode.nodeName === 'kubb-source') {\n return text\n }\n\n return text\n }\n\n if (childNode.nodeName === '#text') {\n nodeText = childNode.nodeValue\n } else {\n if (['kubb-text', 'kubb-file', 'kubb-source'].includes(childNode.nodeName)) {\n nodeText = squashTextNodes(childNode)\n }\n\n nodeText = getPrintText(nodeText)\n\n if (childNode.nodeName === 'br') {\n nodeText = '\\n'\n }\n\n // no kubb element or br\n if (![...nodeNames, 'br'].includes(childNode.nodeName)) {\n const attributes = Object.entries(childNode.attributes).reduce((acc, [key, value]) => {\n if (typeof value === 'string') {\n return `${acc} ${key}=\"${value}\"`\n }\n\n return `${acc} ${key}={${value}}`\n }, '')\n nodeText = `<${childNode.nodeName}${attributes}>${squashTextNodes(childNode)}</${childNode.nodeName}>`\n }\n }\n\n text += nodeText\n }\n\n return text\n}\n","import { nodeNames } from '../dom.ts'\n\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type React from 'react'\nimport type { File } from '../components/File.tsx'\nimport type { DOMElement } from '../types.ts'\n\nexport function squashExportNodes(node: DOMElement): Set<KubbFile.ResolvedExport> {\n let exports = new Set<KubbFile.Export>()\n\n node.childNodes.filter(Boolean).forEach((childNode) => {\n if (childNode.nodeName !== '#text' && nodeNames.includes(childNode.nodeName)) {\n exports = new Set([...exports, ...squashExportNodes(childNode)])\n }\n\n if (childNode.nodeName === 'kubb-export') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File.Export>\n exports.add(attributes)\n }\n })\n\n return exports\n}\n","import { nodeNames } from '../dom.ts'\n\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type React from 'react'\nimport type { File } from '../components/File.tsx'\nimport type { DOMElement } from '../types.ts'\n\nexport function squashImportNodes(node: DOMElement): Set<KubbFile.Import> {\n let imports = new Set<KubbFile.Import>()\n\n node.childNodes.filter(Boolean).forEach((childNode) => {\n if (childNode.nodeName !== '#text' && nodeNames.includes(childNode.nodeName)) {\n imports = new Set([...imports, ...squashImportNodes(childNode)])\n }\n\n if (childNode.nodeName === 'kubb-import') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File.Import>\n imports.add(attributes)\n }\n })\n\n return imports\n}\n","import { nodeNames } from '../dom.ts'\n\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type React from 'react'\nimport type { File } from '../components/File.tsx'\nimport type { DOMElement, ElementNames } from '../types.ts'\nimport { squashTextNodes } from './squashTextNodes.ts'\n\nexport function squashSourceNodes(node: DOMElement, ignores: Array<ElementNames>): Set<KubbFile.Source> {\n let sources = new Set<KubbFile.Source>()\n\n for (const childNode of node.childNodes) {\n if (!childNode) {\n continue\n }\n\n if (childNode.nodeName !== '#text' && ignores.includes(childNode.nodeName)) {\n continue\n }\n\n if (childNode.nodeName === 'kubb-source') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File.Source>\n const value = squashTextNodes(childNode)\n\n sources.add({\n ...attributes,\n // remove end enter\n value: value.trim().replace(/^\\s+|\\s+$/g, ''),\n })\n\n continue\n }\n\n if (childNode.nodeName !== '#text' && nodeNames.includes(childNode.nodeName)) {\n sources = new Set([...sources, ...squashSourceNodes(childNode, ignores)])\n }\n }\n\n return sources\n}\n","import { nodeNames } from '../dom.ts'\nimport { squashExportNodes } from './squashExportNodes.ts'\nimport { squashImportNodes } from './squashImportNodes.ts'\nimport { squashSourceNodes } from './squashSourceNodes.ts'\n\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type React from 'react'\nimport type { File } from '../components/File.tsx'\nimport type { DOMElement } from '../types.ts'\nimport type { FileManager } from '@kubb/fabric-core'\n\nexport function processFiles(node: DOMElement, fileManager: FileManager) {\n for (let index = 0; index < node.childNodes.length; index++) {\n const childNode = node.childNodes[index]\n\n if (!childNode) {\n continue\n }\n\n if (childNode.nodeName !== '#text' && childNode.nodeName !== 'kubb-file' && nodeNames.includes(childNode.nodeName)) {\n processFiles(childNode, fileManager)\n }\n\n if (childNode.nodeName === 'kubb-file') {\n const attributes = childNode.attributes as React.ComponentProps<typeof File>\n\n if (attributes.baseName && attributes.path) {\n const sources = squashSourceNodes(childNode, ['kubb-export', 'kubb-import'])\n\n const file: KubbFile.File = {\n baseName: attributes.baseName,\n path: attributes.path,\n sources: [...sources],\n exports: [...squashExportNodes(childNode)],\n imports: [...squashImportNodes(childNode)],\n meta: attributes.meta || {},\n footer: attributes.footer,\n banner: attributes.banner,\n }\n\n fileManager.add(file)\n }\n }\n }\n}\n","import process from 'node:process'\nimport type { ReactNode } from 'react'\nimport { ConcurrentRoot } from 'react-reconciler/constants'\nimport { onExit } from 'signal-exit'\nimport { Root } from './components/Root.tsx'\nimport { createNode } from './dom.ts'\nimport type { FiberRoot } from './Renderer.ts'\nimport { Renderer } from './Renderer.ts'\nimport type { DOMElement } from './types.ts'\nimport { squashTextNodes } from './utils/squashTextNodes.ts'\nimport { processFiles } from './utils/processFiles.ts'\nimport type { FileManager } from '@kubb/fabric-core'\n\ntype Options = {\n fileManager: FileManager\n stdout?: NodeJS.WriteStream\n stdin?: NodeJS.ReadStream\n stderr?: NodeJS.WriteStream\n /**\n * Set this to true to always see the result of the render in the console(line per render)\n */\n debug?: boolean\n}\n\nexport class Runtime {\n readonly #options: Options\n // Ignore last render after unmounting a tree to prevent empty output before exit\n #isUnmounted: boolean\n\n exitPromise?: Promise<void>\n readonly #container: FiberRoot\n readonly #rootNode: DOMElement\n\n constructor(options: Options) {\n this.#options = options\n\n this.#rootNode = createNode('kubb-root')\n this.#rootNode.onRender = this.onRender\n this.#rootNode.onImmediateRender = this.onRender\n\n // Ignore last render after unmounting a tree to prevent empty output before exit\n this.#isUnmounted = false\n this.unmount.bind(this)\n\n const originalError = console.error\n console.error = (data: string | Error) => {\n const message = typeof data === 'string' ? data : data?.message\n\n if (message?.match(/Encountered two children with the same key/gi)) {\n return\n }\n if (message?.match(/React will try to recreat/gi)) {\n return\n }\n if (message?.match(/Each child in a list should have a unique/gi)) {\n return\n }\n if (message?.match(/The above error occurred in the <KubbErrorBoundary/gi)) {\n return\n }\n\n if (message?.match(/A React Element from an older version of React was render/gi)) {\n return\n }\n\n originalError(data)\n }\n\n // Report when an error was detected in a previous render\n // https://github.com/pmndrs/react-three-fiber/pull/2261\n const logRecoverableError =\n typeof reportError === 'function'\n ? // In modern browsers, reportError will dispatch an error event,\n // emulating an uncaught JavaScript error.\n reportError\n : // In older browsers and test environments, fallback to console.error.\n console.error\n\n const rootTag = ConcurrentRoot\n const hydrationCallbacks = null\n const isStrictMode = false\n const concurrentUpdatesByDefaultOverride = false\n const identifierPrefix = 'id'\n const onUncaughtError = logRecoverableError\n const onCaughtError = logRecoverableError\n const onRecoverableError = logRecoverableError\n const transitionCallbacks = null\n\n this.#container = Renderer.createContainer(\n this.#rootNode,\n rootTag,\n hydrationCallbacks,\n isStrictMode,\n concurrentUpdatesByDefaultOverride,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n )\n\n // Unmount when process exits\n this.unsubscribeExit = onExit(\n (code) => {\n this.unmount(code)\n },\n { alwaysLast: false },\n ).bind(this)\n\n Renderer.injectIntoDevTools({\n bundleType: 1, // 0 for PROD, 1 for DEV\n version: '19.1.0', // should be React version and not Kubb's custom version\n rendererPackageName: 'kubb', // package name\n })\n }\n\n get fileManager() {\n return this.#options.fileManager\n }\n\n resolveExitPromise: () => void = () => {}\n rejectExitPromise: (reason?: Error) => void = () => {}\n unsubscribeExit: () => void = () => {}\n onRender: () => void = async () => {\n if (this.#isUnmounted) {\n return\n }\n\n // TODO remove to allow multiple renders\n this.fileManager.clear()\n\n processFiles(this.#rootNode, this.fileManager)\n\n if (!this.#options?.debug && !this.#options?.stdout) {\n return\n }\n\n const output = await this.#getOutput(this.#rootNode)\n\n if (this.#options?.debug) {\n console.log('Rendering: \\n')\n console.log(output)\n }\n\n if (this.#options?.stdout && process.env.NODE_ENV !== 'test') {\n this.#options.stdout.clearLine(0)\n this.#options.stdout.cursorTo(0)\n this.#options.stdout.write(output)\n }\n }\n onError(error: Error): void {\n if (process.env.NODE_ENV === 'test') {\n console.warn(error)\n }\n\n throw error\n }\n onExit(error?: Error): void {\n this.unmount(error)\n }\n\n async #getOutput(node: DOMElement): Promise<string> {\n const text = squashTextNodes(node)\n const files = this.fileManager.files\n\n return files.length\n ? [...files]\n .flatMap((file) => [...file.sources].map((item) => item.value))\n .filter(Boolean)\n .join('\\n\\n')\n : text\n }\n\n render(node: ReactNode): void {\n const element = (\n <Root onExit={this.onExit.bind(this)} onError={this.onError.bind(this)}>\n {node}\n </Root>\n )\n\n Renderer.updateContainerSync(element, this.#container, null, null)\n Renderer.flushSyncWork()\n }\n\n async renderToString(node: ReactNode): Promise<string> {\n const element = (\n <Root onExit={this.onExit.bind(this)} onError={this.onError.bind(this)}>\n {node}\n </Root>\n )\n\n Renderer.updateContainerSync(element, this.#container, null, null)\n Renderer.flushSyncWork()\n\n this.fileManager.clear()\n\n return this.#getOutput(this.#rootNode)\n }\n\n unmount(error?: Error | number | null): void {\n if (this.#isUnmounted) {\n return\n }\n\n if (this.#options?.debug) {\n console.log('Unmount', error)\n }\n\n this.onRender()\n this.unsubscribeExit()\n\n this.#isUnmounted = true\n\n Renderer.updateContainerSync(null, this.#container, null, null)\n\n if (error instanceof Error) {\n this.rejectExitPromise(error)\n\n return\n }\n\n this.resolveExitPromise()\n }\n\n async waitUntilExit(): Promise<void> {\n if (!this.exitPromise) {\n this.exitPromise = new Promise((resolve, reject) => {\n this.resolveExitPromise = resolve\n this.rejectExitPromise = reject\n })\n }\n\n return this.exitPromise\n }\n}\n","import { createPlugin } from '@kubb/fabric-core/plugins'\nimport { Runtime } from '../Runtime.tsx'\nimport { createElement, type ElementType } from 'react'\n\nexport type Options = {\n stdout?: NodeJS.WriteStream\n stdin?: NodeJS.ReadStream\n stderr?: NodeJS.WriteStream\n /**\n * Set this to true to always see the result of the render in the console(line per render)\n */\n debug?: boolean\n}\n\ntype ExtendOptions = {\n render(App: ElementType): Promise<void> | void\n renderToString(App: ElementType): Promise<string> | string\n waitUntilExit(): Promise<void>\n}\n\n// biome-ignore lint/suspicious/noTsIgnore: production ready\n// @ts-ignore\ndeclare module '@kubb/fabric-core' {\n interface Fabric {\n render(App: ElementType): Promise<void> | void\n renderToString(App: ElementType): Promise<string> | string\n waitUntilExit(): Promise<void>\n }\n}\n\ndeclare global {\n namespace Kubb {\n interface Fabric {\n render(App: ElementType): Promise<void> | void\n renderToString(App: ElementType): Promise<string> | string\n waitUntilExit(): Promise<void>\n }\n }\n}\n\nexport const reactPlugin = createPlugin<Options, ExtendOptions>({\n name: 'react',\n install() {},\n inject(app, options = {}) {\n const runtime = new Runtime({ fileManager: app.context.fileManager, ...options })\n\n return {\n async render(App) {\n runtime.render(createElement(App))\n await app.context.events.emit('start')\n },\n async renderToString(App) {\n await app.context.events.emit('start')\n return runtime.renderToString(createElement(App))\n },\n async waitUntilExit() {\n await runtime.waitUntilExit()\n\n await app.context.events.emit('end')\n },\n }\n },\n})\n"],"mappings":"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"}
|
package/dist/plugins.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require('./
|
|
2
|
-
const require_plugins = require('./plugins-BQE1GnQ7.cjs');
|
|
1
|
+
const require_plugins = require('./plugins-9oisj5ko.cjs');
|
|
3
2
|
|
|
4
3
|
exports.reactPlugin = require_plugins.reactPlugin;
|
|
5
4
|
var __kubb_fabric_core_plugins = require("@kubb/fabric-core/plugins");
|
package/dist/plugins.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as Extname } from "./KubbFile-
|
|
2
|
-
import { c as Plugin, l as UserPlugin } from "./Fabric-
|
|
3
|
-
import { n as reactPlugin } from "./reactPlugin-
|
|
1
|
+
import { r as Extname } from "./KubbFile-FGXV713i.cjs";
|
|
2
|
+
import { c as Plugin, l as UserPlugin } from "./Fabric-BF1akKIl.cjs";
|
|
3
|
+
import { n as reactPlugin } from "./reactPlugin-DpMLHD7t.cjs";
|
|
4
4
|
|
|
5
5
|
//#region ../fabric-core/src/plugins/createPlugin.d.ts
|
|
6
6
|
declare function createPlugin<Options$3 = unknown, TAppExtension extends Record<string, any> = {}>(plugin: UserPlugin<Options$3, TAppExtension>): Plugin<Options$3, TAppExtension>;
|
package/dist/plugins.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as Extname } from "./KubbFile-
|
|
2
|
-
import { c as Plugin, l as UserPlugin } from "./Fabric-
|
|
3
|
-
import { n as reactPlugin } from "./reactPlugin-
|
|
1
|
+
import { r as Extname } from "./KubbFile-D4gyyfL-.js";
|
|
2
|
+
import { c as Plugin, l as UserPlugin } from "./Fabric-E6DCwBtT.js";
|
|
3
|
+
import { n as reactPlugin } from "./reactPlugin-B3xiMbv8.js";
|
|
4
4
|
|
|
5
5
|
//#region ../fabric-core/src/plugins/createPlugin.d.ts
|
|
6
6
|
declare function createPlugin<Options$3 = unknown, TAppExtension extends Record<string, any> = {}>(plugin: UserPlugin<Options$3, TAppExtension>): Plugin<Options$3, TAppExtension>;
|
package/dist/plugins.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as Plugin } from "./Fabric-
|
|
1
|
+
import { c as Plugin } from "./Fabric-E6DCwBtT.js";
|
|
2
2
|
import { ElementType } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/reactPlugin.d.ts
|
|
@@ -35,4 +35,4 @@ declare global {
|
|
|
35
35
|
declare const reactPlugin: Plugin<Options, ExtendOptions>;
|
|
36
36
|
//#endregion
|
|
37
37
|
export { reactPlugin as n, Options as t };
|
|
38
|
-
//# sourceMappingURL=reactPlugin-
|
|
38
|
+
//# sourceMappingURL=reactPlugin-B3xiMbv8.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as Plugin } from "./Fabric-
|
|
1
|
+
import { c as Plugin } from "./Fabric-BF1akKIl.cjs";
|
|
2
2
|
import { ElementType } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/reactPlugin.d.ts
|
|
@@ -35,4 +35,4 @@ declare global {
|
|
|
35
35
|
declare const reactPlugin: Plugin<Options, ExtendOptions>;
|
|
36
36
|
//#endregion
|
|
37
37
|
export { reactPlugin as n, Options as t };
|
|
38
|
-
//# sourceMappingURL=reactPlugin-
|
|
38
|
+
//# sourceMappingURL=reactPlugin-DpMLHD7t.d.cts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Import, c as Source, i as File, n as Export } from "./KubbFile-FGXV713i.cjs";
|
|
2
|
+
import React, { JSX, Key, ReactNode } from "react";
|
|
2
3
|
|
|
3
4
|
//#region src/utils/getFunctionParams.d.ts
|
|
4
5
|
type Param = {
|
|
@@ -77,9 +78,27 @@ type DOMElement = {
|
|
|
77
78
|
} & Node;
|
|
78
79
|
type NodeNames = ElementNames | TextName;
|
|
79
80
|
type KubbNode = ReactNode;
|
|
81
|
+
type KubbElement = JSX.Element;
|
|
80
82
|
type JSDoc = {
|
|
81
83
|
comments: string[];
|
|
82
84
|
};
|
|
85
|
+
type KubbTextProps = {
|
|
86
|
+
children?: KubbNode;
|
|
87
|
+
};
|
|
88
|
+
type KubbFileProps = {
|
|
89
|
+
id?: string;
|
|
90
|
+
children?: KubbNode;
|
|
91
|
+
baseName: string;
|
|
92
|
+
path: string;
|
|
93
|
+
override?: boolean;
|
|
94
|
+
meta?: File['meta'];
|
|
95
|
+
};
|
|
96
|
+
type KubbSourceProps = Source & {
|
|
97
|
+
children?: KubbNode;
|
|
98
|
+
};
|
|
99
|
+
type KubbImportProps = Import;
|
|
100
|
+
type KubbExportProps = Export;
|
|
101
|
+
type LineBreakProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>;
|
|
83
102
|
//#endregion
|
|
84
|
-
export { JSDoc as a,
|
|
85
|
-
//# sourceMappingURL=types-
|
|
103
|
+
export { Param as _, JSDoc as a, KubbExportProps as c, KubbNode as d, KubbSourceProps as f, FunctionParams as g, TextNode as h, ElementNames as i, KubbFileProps as l, LineBreakProps as m, DOMNode as n, Key as o, KubbTextProps as p, DOMNodeAttribute as r, KubbElement as s, DOMElement as t, KubbImportProps as u, Params as v, createFunctionParams as y };
|
|
104
|
+
//# sourceMappingURL=types-B2EZG5-G.d.cts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Import, c as Source, i as File, n as Export } from "./KubbFile-D4gyyfL-.js";
|
|
2
|
+
import React, { JSX, Key, ReactNode } from "react";
|
|
2
3
|
|
|
3
4
|
//#region src/utils/getFunctionParams.d.ts
|
|
4
5
|
type Param = {
|
|
@@ -77,9 +78,27 @@ type DOMElement = {
|
|
|
77
78
|
} & Node;
|
|
78
79
|
type NodeNames = ElementNames | TextName;
|
|
79
80
|
type KubbNode = ReactNode;
|
|
81
|
+
type KubbElement = JSX.Element;
|
|
80
82
|
type JSDoc = {
|
|
81
83
|
comments: string[];
|
|
82
84
|
};
|
|
85
|
+
type KubbTextProps = {
|
|
86
|
+
children?: KubbNode;
|
|
87
|
+
};
|
|
88
|
+
type KubbFileProps = {
|
|
89
|
+
id?: string;
|
|
90
|
+
children?: KubbNode;
|
|
91
|
+
baseName: string;
|
|
92
|
+
path: string;
|
|
93
|
+
override?: boolean;
|
|
94
|
+
meta?: File['meta'];
|
|
95
|
+
};
|
|
96
|
+
type KubbSourceProps = Source & {
|
|
97
|
+
children?: KubbNode;
|
|
98
|
+
};
|
|
99
|
+
type KubbImportProps = Import;
|
|
100
|
+
type KubbExportProps = Export;
|
|
101
|
+
type LineBreakProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>;
|
|
83
102
|
//#endregion
|
|
84
|
-
export { JSDoc as a,
|
|
85
|
-
//# sourceMappingURL=types-
|
|
103
|
+
export { Param as _, JSDoc as a, KubbExportProps as c, KubbNode as d, KubbSourceProps as f, FunctionParams as g, TextNode as h, ElementNames as i, KubbFileProps as l, LineBreakProps as m, DOMNode as n, Key as o, KubbTextProps as p, DOMNodeAttribute as r, KubbElement as s, DOMElement as t, KubbImportProps as u, Params as v, createFunctionParams as y };
|
|
104
|
+
//# sourceMappingURL=types-UALIyxCE.d.ts.map
|
package/dist/types.d.cts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import "./KubbFile-FGXV713i.cjs";
|
|
2
|
+
import { _ as Param, a as JSDoc, c as KubbExportProps, d as KubbNode, f as KubbSourceProps, h as TextNode, i as ElementNames, l as KubbFileProps, m as LineBreakProps, n as DOMNode, o as Key, p as KubbTextProps, r as DOMNodeAttribute, s as KubbElement, t as DOMElement, u as KubbImportProps, v as Params } from "./types-B2EZG5-G.cjs";
|
|
3
|
+
export { DOMElement, DOMNode, DOMNodeAttribute, ElementNames, JSDoc, Key, KubbElement, KubbExportProps, KubbFileProps, KubbImportProps, KubbNode, KubbSourceProps, KubbTextProps, LineBreakProps, Param, Params, TextNode };
|
package/dist/types.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import "./KubbFile-D4gyyfL-.js";
|
|
2
|
+
import { _ as Param, a as JSDoc, c as KubbExportProps, d as KubbNode, f as KubbSourceProps, h as TextNode, i as ElementNames, l as KubbFileProps, m as LineBreakProps, n as DOMNode, o as Key, p as KubbTextProps, r as DOMNodeAttribute, s as KubbElement, t as DOMElement, u as KubbImportProps, v as Params } from "./types-UALIyxCE.js";
|
|
3
|
+
export { DOMElement, DOMNode, DOMNodeAttribute, ElementNames, JSDoc, Key, KubbElement, KubbExportProps, KubbFileProps, KubbImportProps, KubbNode, KubbSourceProps, KubbTextProps, LineBreakProps, Param, Params, TextNode };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/react-fabric",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "React integration for Kubb, providing JSX runtime support and React component generation capabilities for code generation plugins.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -64,6 +64,9 @@
|
|
|
64
64
|
"types": "./dist/index.d.cts",
|
|
65
65
|
"typesVersions": {
|
|
66
66
|
"*": {
|
|
67
|
+
"globals": [
|
|
68
|
+
"./dist/globals.d.ts"
|
|
69
|
+
],
|
|
67
70
|
"devtools": [
|
|
68
71
|
"./dist/devtools.d.ts"
|
|
69
72
|
],
|
|
@@ -101,15 +104,15 @@
|
|
|
101
104
|
"react-devtools-core": "6.1.2",
|
|
102
105
|
"react-reconciler": "0.32.0",
|
|
103
106
|
"signal-exit": "^4.1.0",
|
|
107
|
+
"react": "^19.2.0",
|
|
104
108
|
"ws": "8.18.0",
|
|
105
|
-
"@kubb/fabric-core": "0.2.
|
|
109
|
+
"@kubb/fabric-core": "0.2.5"
|
|
106
110
|
},
|
|
107
111
|
"devDependencies": {
|
|
108
|
-
"react": "^19.2.0",
|
|
109
112
|
"@types/react": "^19.2.2",
|
|
110
113
|
"@types/react-reconciler": "0.32.0",
|
|
111
114
|
"@types/ws": "^8.18.1",
|
|
112
|
-
"tsdown": "^0.15.
|
|
115
|
+
"tsdown": "^0.15.11",
|
|
113
116
|
"typescript": "^5.9.3"
|
|
114
117
|
},
|
|
115
118
|
"engines": {
|
package/src/globals.ts
CHANGED
|
@@ -1,52 +1,28 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { KubbExportProps, KubbFileProps, KubbImportProps, KubbSourceProps, KubbTextProps, LineBreakProps } from './types.ts'
|
|
2
2
|
import type React from 'react'
|
|
3
|
-
import type { KubbNode } from '
|
|
3
|
+
import type { KubbNode } from '@kubb/react-fabric/types'
|
|
4
4
|
|
|
5
5
|
declare module 'react' {
|
|
6
6
|
namespace JSX {
|
|
7
|
-
interface
|
|
8
|
-
|
|
9
|
-
children?: KubbNode
|
|
10
|
-
}
|
|
11
|
-
'kubb-file': {
|
|
12
|
-
id?: string
|
|
13
|
-
children?: KubbNode
|
|
14
|
-
baseName: string
|
|
15
|
-
path: string
|
|
16
|
-
override?: boolean
|
|
17
|
-
meta?: KubbFile.File['meta']
|
|
18
|
-
}
|
|
19
|
-
'kubb-source': KubbFile.Source & {
|
|
20
|
-
children?: KubbNode
|
|
21
|
-
}
|
|
22
|
-
'kubb-import': KubbFile.Import
|
|
23
|
-
'kubb-export': KubbFile.Export
|
|
24
|
-
br: React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>
|
|
7
|
+
interface ElementClass extends React.ComponentClass<any> {
|
|
8
|
+
render(): KubbNode
|
|
25
9
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
|
|
11
|
+
interface ElementAttributesProperty {
|
|
12
|
+
props: {}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface ElementChildrenAttribute {
|
|
16
|
+
children: {}
|
|
17
|
+
}
|
|
18
|
+
|
|
32
19
|
interface IntrinsicElements {
|
|
33
|
-
'kubb-text':
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
'kubb-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
baseName: string
|
|
40
|
-
path: string
|
|
41
|
-
override?: boolean
|
|
42
|
-
meta?: KubbFile.File['meta']
|
|
43
|
-
}
|
|
44
|
-
'kubb-source': KubbFile.Source & {
|
|
45
|
-
children?: KubbNode
|
|
46
|
-
}
|
|
47
|
-
'kubb-import': KubbFile.Import
|
|
48
|
-
'kubb-export': KubbFile.Export
|
|
49
|
-
br: React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>
|
|
20
|
+
'kubb-text': KubbTextProps
|
|
21
|
+
'kubb-file': KubbFileProps
|
|
22
|
+
'kubb-source': KubbSourceProps
|
|
23
|
+
'kubb-import': KubbImportProps
|
|
24
|
+
'kubb-export': KubbExportProps
|
|
25
|
+
br: LineBreakProps
|
|
50
26
|
}
|
|
51
27
|
}
|
|
52
28
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import './globals.ts'
|
|
2
2
|
|
|
3
|
-
import * as React from 'react'
|
|
4
|
-
|
|
5
3
|
// components
|
|
6
4
|
export { App } from './components/App.tsx'
|
|
7
5
|
export { Const } from './components/Const.tsx'
|
|
@@ -23,11 +21,4 @@ export { createFunctionParams, FunctionParams } from './utils/getFunctionParams.
|
|
|
23
21
|
export { Runtime } from './Runtime.tsx'
|
|
24
22
|
|
|
25
23
|
// react helpers
|
|
26
|
-
export
|
|
27
|
-
export const createElement = React.createElement
|
|
28
|
-
export const useContext = React.useContext
|
|
29
|
-
export const useEffect = React.useEffect
|
|
30
|
-
export const useState = React.useState
|
|
31
|
-
export const useRef = React.useRef
|
|
32
|
-
export const use = React.use
|
|
33
|
-
export const useReducer = React.useReducer
|
|
24
|
+
export { createElement, createContext, useContext, useEffect, useState, useReducer, useRef, use } from 'react'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type React from 'react'
|
|
2
|
+
import type { KubbNode, KubbElement } from './types.ts'
|
|
3
|
+
|
|
4
|
+
import type { KubbExportProps, KubbFileProps, KubbImportProps, KubbSourceProps, KubbTextProps, LineBreakProps } from '@kubb/react-fabric/types'
|
|
5
|
+
|
|
6
|
+
export namespace JSX {
|
|
7
|
+
type Element = KubbElement
|
|
8
|
+
|
|
9
|
+
interface ElementClass extends React.ComponentClass<any> {
|
|
10
|
+
render(): KubbNode
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface ElementAttributesProperty {
|
|
14
|
+
props: {}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface ElementChildrenAttribute {
|
|
18
|
+
children: {}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface IntrinsicElements {
|
|
22
|
+
'kubb-text': KubbTextProps
|
|
23
|
+
'kubb-file': KubbFileProps
|
|
24
|
+
'kubb-source': KubbSourceProps
|
|
25
|
+
'kubb-import': KubbImportProps
|
|
26
|
+
'kubb-export': KubbExportProps
|
|
27
|
+
br: LineBreakProps
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/jsx-runtime.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import type { KubbElement, KubbNode } from './types.ts'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
export type * from './jsx-namespace.d.ts'
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export
|
|
5
|
+
export { Fragment, jsx, jsxs } from 'react/jsx-runtime'
|
|
6
|
+
|
|
7
|
+
export type JSXElement = KubbElement
|
|
8
|
+
export type ReactNode = KubbNode
|
package/src/types.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { KubbFile } from '@kubb/fabric-core/types'
|
|
2
|
+
import type { ReactNode, JSX } from 'react'
|
|
3
|
+
import type React from 'react'
|
|
2
4
|
type ReactElementNames = 'br' | 'div'
|
|
3
5
|
|
|
4
6
|
export type ElementNames = ReactElementNames | 'kubb-text' | 'kubb-file' | 'kubb-source' | 'kubb-import' | 'kubb-export' | 'kubb-root' | 'kubb-app'
|
|
@@ -43,6 +45,7 @@ export type DOMElement = {
|
|
|
43
45
|
type NodeNames = ElementNames | TextName
|
|
44
46
|
|
|
45
47
|
export type KubbNode = ReactNode
|
|
48
|
+
export type KubbElement = JSX.Element
|
|
46
49
|
|
|
47
50
|
export type { Key } from 'react'
|
|
48
51
|
|
|
@@ -50,4 +53,26 @@ export type JSDoc = {
|
|
|
50
53
|
comments: string[]
|
|
51
54
|
}
|
|
52
55
|
|
|
56
|
+
export type KubbTextProps = {
|
|
57
|
+
children?: KubbNode
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type KubbFileProps = {
|
|
61
|
+
id?: string
|
|
62
|
+
children?: KubbNode
|
|
63
|
+
baseName: string
|
|
64
|
+
path: string
|
|
65
|
+
override?: boolean
|
|
66
|
+
meta?: KubbFile.File['meta']
|
|
67
|
+
}
|
|
68
|
+
export type KubbSourceProps = KubbFile.Source & {
|
|
69
|
+
children?: KubbNode
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type KubbImportProps = KubbFile.Import
|
|
73
|
+
|
|
74
|
+
export type KubbExportProps = KubbFile.Export
|
|
75
|
+
|
|
76
|
+
export type LineBreakProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>
|
|
77
|
+
|
|
53
78
|
export type { Params, Param } from './utils/getFunctionParams.ts'
|