{"version":3,"file":"index.cjs","names":["NodeTreeContext","RootContext","NodeTreeContext","FabricContext","NodeTreeContext","FileContext","NodeTreeContext","NodeTreeContext","reactPlugin","#params"],"sources":["../src/components/Const.tsx","../src/components/Fabric.tsx","../src/components/File.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/devtools.ts","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type ConstProps = {\n  key?: Key\n  /**\n   * Name of the const\n   */\n  name: string\n  /**\n   * Does this type need to be exported.\n   */\n  export?: boolean\n  /**\n   * Type to make the const being typed\n   */\n  type?: string\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  /**\n   * Use of `const` assertions\n   */\n  asConst?: boolean\n  /**\n   * Children nodes.\n   */\n  children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript constant declaration.\n */\nexport function Const({ children, ...props }: ConstProps): FabricReactElement {\n  const { name, export: canExport, type, JSDoc, asConst } = props\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'Const', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      <kubb-const name={name} type={type} export={canExport} asConst={asConst}>\n        {children}\n      </kubb-const>\n    </>\n  )\n}\n\nConst.displayName = 'Const'\n","import { FabricContext, NodeTreeContext, provide, RootContext, useContext, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode } from '../types.ts'\n\nexport type FabricProps<TMeta extends object = object> = {\n  /**\n   * Metadata associated with the App.\n   */\n  meta?: TMeta\n  /**\n   * Children nodes.\n   */\n  children?: FabricReactNode\n}\n\n/**\n * Fabric container containing the FabricContext carrying `meta` and an `exit` hook.\n */\nexport function Fabric<TMeta extends object = object>({ children, ...props }: FabricProps<TMeta>): FabricReactElement {\n  const { meta = {} } = props\n\n  const { exit } = useContext(RootContext)\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'App', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  provide(FabricContext, { exit, meta })\n\n  return <>{children}</>\n}\n\nFabric.displayName = 'Fabric'\n","import { FileContext, NodeTreeContext, provide, useFile, useFileManager, useNodeTree } from '@kubb/fabric-core'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { FabricReactElement, FabricReactNode, Key } from '../types.ts'\n\ntype BasePropsWithBaseName = {\n  /**\n   * Name to be used to dynamicly create the baseName(based on input.path).\n   * Based on UNIX basename\n   * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix\n   */\n  baseName: KubbFile.BaseName\n  /**\n   * Path will be full qualified path to a specified file.\n   */\n  path: KubbFile.Path\n}\n\ntype BasePropsWithoutBaseName = {\n  baseName?: never\n  /**\n   * Path will be full qualified path to a specified file.\n   */\n  path?: KubbFile.Path\n}\n\ntype BaseProps = BasePropsWithBaseName | BasePropsWithoutBaseName\n\ntype Props<TMeta> = BaseProps & {\n  key?: Key\n  meta?: TMeta\n  banner?: string\n  footer?: string\n  children?: FabricReactNode\n}\n\n/**\n * Adds files to the FileManager\n */\nexport function File<TMeta extends object = object>({ children, ...props }: Props<TMeta>): FabricReactElement {\n  const { baseName, path, meta = {}, footer, banner } = props\n\n  const fileManager = useFileManager()\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'File', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  if (!baseName || !path) {\n    return <>{children}</>\n  }\n\n  const file: KubbFile.File = {\n    baseName,\n    path,\n    meta,\n    banner,\n    footer,\n    sources: [],\n    imports: [],\n    exports: [],\n  }\n\n  const [resolvedFile] = fileManager.add(file)\n  provide(FileContext, resolvedFile)\n\n  return <kubb-file {...props}>{children}</kubb-file>\n}\n\nFile.displayName = 'File'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n  key?: Key\n  children?: FabricReactNode\n}\n\n/**\n * File.Source\n *\n * Marks a block of source text to be associated with the current file when\n * rendering with the FileCollector. Children are treated as the source string.\n */\nfunction FileSource({ children, ...props }: FileSourceProps): FabricReactElement {\n  const { name, isExportable, isIndexable, isTypeOnly } = props\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'FileSource', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  return (\n    <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n      {children}\n    </kubb-source>\n  )\n}\n\nFileSource.displayName = 'FileSource'\n\nexport type FileExportProps = KubbFile.Export & { key?: Key }\n\n/**\n * File.Export\n *\n * Declares an export entry for the current file. This will be collected by\n * the FileCollector for later emission.\n */\nfunction FileExport(props: FileExportProps): FabricReactElement {\n  const { name, path, isTypeOnly, asAlias } = props\n\n  const nodeTree = useNodeTree()\n  const file = useFile()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'FileExport', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  if (file) {\n    file.exports.push({\n      name,\n      path,\n      asAlias,\n      isTypeOnly,\n    })\n  }\n\n  return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'FileExport'\n\nexport type FileImportProps = KubbFile.Import & { key?: Key }\n\n/**\n * File.Import\n *\n * Declares an import entry for the current file.\n */\nfunction FileImport(props: FileImportProps): FabricReactElement {\n  const { name, root, path, isTypeOnly, isNameSpace } = props\n\n  const nodeTree = useNodeTree()\n  const file = useFile()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'FileImport', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  if (file) {\n    file.imports.push({\n      name,\n      path,\n      root,\n      isNameSpace,\n      isTypeOnly,\n    })\n  }\n\n  return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly} />\n}\n\nFileImport.displayName = 'FileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\ntype Props = {\n  key?: Key\n  /**\n   * Name of the function.\n   */\n  name: string\n  /**\n   * Add default when export is being used\n   */\n  default?: boolean\n  /**\n   * Parameters/options/props that need to be used.\n   */\n  params?: string\n  /**\n   * Does this function need to be exported.\n   */\n  export?: boolean\n  /**\n   * Does the function has async/promise behavior.\n   * This will also add `Promise<returnType>` as the returnType.\n   */\n  async?: boolean\n  /**\n   * Generics that needs to be added for TypeScript.\n   */\n  generics?: string | string[]\n  /**\n   * ReturnType(see async for adding Promise type).\n   */\n  returnType?: string\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  /**\n   * Children nodes.\n   */\n  children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript function declaration.\n */\nexport function Function({ children, ...props }: Props): FabricReactElement {\n  const { name, default: isDefault, export: canExport, async: isAsync, generics, params, returnType, JSDoc } = props\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'Function', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  // Normalize generics array to comma-separated string for DOM attribute storage\n  const genericsString = Array.isArray(generics) ? generics.join(', ').trim() : generics\n\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      <kubb-function name={name} params={params} export={canExport} default={isDefault} async={isAsync} generics={genericsString} returnType={returnType}>\n        {children}\n      </kubb-function>\n    </>\n  )\n}\n\nFunction.displayName = 'Function'\n\ntype ArrowFunctionProps = Props & {\n  /**\n   * Create Arrow function in one line\n   */\n  singleLine?: boolean\n}\n\n/**\n * ArrowFunction\n *\n * Renders an arrow function definition. Supports the same flags as `Function`.\n * Use `singleLine` to render the body as a single-line expression.\n */\nfunction ArrowFunction({ children, ...props }: ArrowFunctionProps) {\n  const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine } = props\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'ArrowFunction', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      {canExport && <>export </>}\n      {isDefault && <>default </>}\n      const {name} = {async && <>async </>}\n      {generics && (\n        <>\n          {'<'}\n          {Array.isArray(generics) ? generics.join(', ').trim() : generics}\n          {'>'}\n        </>\n      )}\n      ({params}){returnType && !async && <>: {returnType}</>}\n      {returnType && async && (\n        <>\n          : Promise{'<'}\n          {returnType}\n          {'>'}\n        </>\n      )}\n      {singleLine && (\n        <>\n          {' => '}\n          {children}\n          <br />\n        </>\n      )}\n      {!singleLine && (\n        <>\n          {' => {'}\n          <br />\n          <indent />\n          {/* Indent component to handle indentation*/}\n          {children}\n          <br />\n          <dedent />\n          {/* Indent component to handle indentation*/}\n          {'}'}\n          <br />\n        </>\n      )}\n    </>\n  )\n}\n\nArrowFunction.displayName = 'ArrowFunction'\nFunction.Arrow = ArrowFunction\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type TypeProps = {\n  key?: Key\n  /**\n   * Name of the type, this needs to start with a capital letter.\n   */\n  name: string\n  /**\n   * Does this type need to be exported.\n   */\n  export?: boolean\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  /**\n   * Children nodes.\n   */\n  children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript type declaration.\n */\nexport function Type({ children, ...props }: TypeProps): FabricReactElement {\n  const { name, export: canExport, JSDoc } = props\n\n  const nodeTree = useNodeTree()\n\n  if (nodeTree) {\n    const childTree = nodeTree.addChild({ type: 'Type', props })\n\n    provide(NodeTreeContext, childTree)\n  }\n\n  if (name.charAt(0).toUpperCase() !== name.charAt(0)) {\n    throw new Error('Name should start with a capital letter(see TypeScript types)')\n  }\n\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      <kubb-type name={name} export={canExport}>\n        {children}\n      </kubb-type>\n    </>\n  )\n}\n\nType.displayName = 'Type'\n","import { spawn } from 'node:child_process'\nimport { onProcessExit } from '@kubb/fabric-core'\nimport ws from 'ws'\nimport { Renderer } from './Renderer.ts'\n\ndeclare global {\n  var WebSocket: typeof WebSocket\n  var isDevtoolsEnabled: any\n}\n\nlet isOpen = false\n\nexport function openDevtools() {\n  if (isOpen) {\n    return undefined\n  }\n  // Set up global polyfills BEFORE importing react-devtools-core\n  // This is required because react-devtools-core expects these to be available\n  const customGlobal = global as any\n  customGlobal.WebSocket ||= ws\n  customGlobal.window ||= global\n  customGlobal.self ||= global\n  customGlobal.isDevtoolsEnabled = true\n\n  // Filter out Kubb internal components from devtools for a cleaner view.\n  // See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\n  customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'Context.Provider',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'Root',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'ErrorBoundary',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'kubb-file',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'kubb-text',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'kubb-import',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'kubb-export',\n      isEnabled: true,\n      isValid: true,\n    },\n    {\n      // ComponentFilterDisplayName\n      type: 2,\n      value: 'kubb-source',\n      isEnabled: true,\n      isValid: true,\n    },\n  ]\n\n  // biome-ignore lint/suspicious/noTsIgnore: cannot find types\n  // @ts-ignore\n  import('react-devtools-core').then(async (devtools) => {\n    console.info('Opening devtools')\n    const controller = new AbortController()\n    if (!isOpen) {\n      const child = spawn('npx', ['react-devtools@6.1.5'], {\n        signal: controller.signal,\n        stdio: 'pipe',\n        detached: true,\n      })\n      child.unref()\n    }\n\n    isOpen = true\n\n    // Destructure the functions from the module\n    const { initialize, connectToDevTools } = devtools?.default || devtools\n\n    // Initialize DevTools BEFORE importing Renderer (which imports React)\n    initialize()\n    console.info('Initializing devtools')\n\n    // Inject the renderer BEFORE connecting to DevTools\n    // This ensures DevTools can properly discover the custom renderer\n    Renderer.injectIntoDevTools({\n      bundleType: 1,\n      version: '19.2.3',\n      rendererPackageName: 'kubb',\n      // findFiberByHostInstance is required for DevTools to map elements to fibers\n      findFiberByHostInstance: () => null,\n    })\n\n    console.info('Connecting devtools')\n\n    try {\n      connectToDevTools({\n        host: 'localhost',\n        port: 8097,\n        useHttps: false,\n        isAppActive: () => true,\n      })\n    } catch (e) {\n      console.error(e)\n      console.info('Error when connecting the devtools')\n    }\n\n    onProcessExit(() => {\n      console.info('Disconnecting devtools')\n      controller.abort()\n    })\n  })\n}\n","import { createFabric } from '@kubb/fabric-core'\nimport type { Fabric, FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { openDevtools } from './devtools.ts'\nimport type { Options } from './plugins/reactPlugin.ts'\nimport { reactPlugin } from './plugins/reactPlugin.ts'\n\nexport function createReactFabric(\n  config: FabricConfig<Options & { mode?: FabricMode; devtools?: boolean }> = {},\n): Fabric<Options & { mode?: FabricMode; devtools?: boolean }> {\n  if (config.devtools) {\n    openDevtools()\n  }\n\n  const fabric = createFabric({ mode: config.mode })\n\n  fabric.use(reactPlugin, {\n    stdout: config.stdout,\n    stderr: config.stderr,\n    debug: config.debug,\n    stdin: config.stdin,\n  })\n\n  return fabric\n}\n","import { sortBy } from 'remeda'\n\nexport type Param = {\n  /**\n   * `object` will return the pathParams as an object.\n   *\n   * `inline` will return the pathParams as comma separated params.\n   * @default `'inline'`\n   * @private\n   */\n  mode?: 'object' | 'inline' | 'inlineSpread'\n  type?: 'string' | 'number' | (string & {})\n  optional?: boolean\n  /**\n   * @example test = \"default\"\n   */\n  default?: string\n  /**\n   * Used for no TypeScript(with mode object)\n   * @example test: \"default\"\n   */\n  value?: string\n  children?: Params\n}\n\ntype ParamItem =\n  | (Pick<Param, 'mode' | 'type' | 'value'> & {\n      optional?: true\n      default?: never\n      children?: Params\n    })\n  | (Pick<Param, 'mode' | 'type' | 'value'> & {\n      optional?: false\n      default?: string\n      children?: Params\n    })\n\nexport type Params = Record<string, Param | undefined>\n\ntype Options = {\n  type: 'constructor' | 'call' | 'object' | 'objectValue'\n  transformName?: (name: string) => string\n  transformType?: (type: string) => string\n}\n\nfunction order(items: Array<[key: string, item?: ParamItem]>) {\n  return sortBy(items.filter(Boolean) as Array<[key: string, item?: ParamItem]>, ([_key, item]) => {\n    if (item?.children) {\n      return 0 // Treat items with children as required (they'll get = {} if all children are optional)\n    }\n    // Priority order: required (0) → optional (1) → default-only (2)\n    if (item?.optional) {\n      return 1 // Optional parameters (with or without default)\n    }\n    if (item?.default) {\n      // Parameters with default only (not marked as optional)\n      // Note: While the ParamItem type suggests optional and default are mutually exclusive,\n      // this handles the case where a parameter has a default value but isn't explicitly marked as optional\n      return 2\n    }\n    return 0 // Required parameters\n  })\n}\n\nfunction parseChild(key: string, item: ParamItem, options: Options): string | null {\n  // @ts-expect-error\n  const entries = order(Object.entries(item.children))\n\n  const types: string[] = []\n  const names: string[] = []\n\n  const optional = entries.every(([_key, item]) => item?.optional || !!item?.default)\n\n  entries.forEach(([key, entryItem]) => {\n    if (entryItem) {\n      const name = parseItem(key, { ...entryItem, type: undefined }, options)\n      if (entryItem.children) {\n        const subTypes = Object.entries(entryItem.children)\n          .map(([key]) => {\n            return key\n          })\n          .join(', ')\n\n        if (subTypes) {\n          names.push(`${name}: { ${subTypes} }`)\n        } else {\n          names.push(name)\n        }\n      } else {\n        if (options.type === 'call' && options.transformName) {\n          names.push(`${key}: ${name}`)\n        } else {\n          names.push(name)\n        }\n      }\n\n      if (entries.some(([_key, item]) => item?.type)) {\n        types.push(parseItem(key, { ...entryItem, default: undefined }, options))\n      }\n    }\n  })\n\n  const name = item.mode === 'inline' ? key : names.length ? `{ ${names.join(', ')} }` : undefined\n  const type = item.type ? item.type : types.length ? `{ ${types.join('; ')} }` : undefined\n\n  if (!name) {\n    return null\n  }\n\n  return parseItem(\n    name,\n    {\n      type,\n      default: item.default,\n      optional: !item.default ? optional : undefined,\n    } as ParamItem,\n    options,\n  )\n}\n\nfunction parseItem(name: string, item: ParamItem, options: Options): string {\n  const acc: string[] = []\n  const transformedName = options.transformName ? options.transformName(name) : name\n  const transformedType = options.transformType && item.type ? options.transformType(item.type) : item.type\n\n  if (options.type === 'object') {\n    return transformedName\n  }\n\n  if (options.type === 'objectValue') {\n    return item.value ? `${transformedName}: ${item.value}` : transformedName\n  }\n\n  //LEGACY\n  if (item.type && options.type === 'constructor') {\n    if (item.optional) {\n      // Check if this is a destructured parameter (object mode)\n      const isDestructured = transformedName.startsWith('{')\n      if (isDestructured) {\n        // For destructured parameters, use \": type = {}\" syntax to make it optional\n        acc.push(`${transformedName}: ${transformedType} = {}`)\n      } else {\n        // For inline parameters, use \"?: type\" syntax\n        acc.push(`${transformedName}?: ${transformedType}`)\n      }\n    } else {\n      acc.push(`${transformedName}: ${transformedType}${item.default ? ` = ${item.default}` : ''}`)\n    }\n  } else if (item.default && options.type === 'constructor') {\n    acc.push(`${transformedName} = ${item.default}`)\n  } else if (item.value) {\n    acc.push(`${transformedName} : ${item.value}`)\n  } else if (item.mode === 'inlineSpread') {\n    acc.push(`... ${transformedName}`)\n  } else {\n    acc.push(transformedName)\n  }\n\n  return acc[0] as string\n}\n\nexport function getFunctionParams(params: Params, options: Options): string {\n  const entries = order(Object.entries(params as Record<string, ParamItem | undefined>))\n\n  return entries\n    .reduce((acc, [key, item]) => {\n      if (!item) {\n        return acc\n      }\n\n      if (item.children) {\n        if (Object.keys(item.children).length === 0) {\n          return acc\n        }\n\n        if (item.mode === 'inlineSpread') {\n          return [...acc, getFunctionParams(item.children, options)]\n        }\n\n        const parsedItem = parseChild(key, item, options)\n        if (!parsedItem) {\n          return acc\n        }\n\n        return [...acc, parsedItem]\n      }\n\n      const parsedItem = parseItem(key, item, options)\n\n      return [...acc, parsedItem]\n    }, [] as string[])\n    .join(', ')\n}\n\n/**\n * @deprecated use @kubb/ast\n */\nexport function createFunctionParams(params: Params): Params {\n  return params\n}\n\n/**\n * @deprecated use @kubb/ast\n */\nexport class FunctionParams {\n  #params: Params\n\n  static factory(params: Params) {\n    return new FunctionParams(params)\n  }\n  constructor(params: Params) {\n    this.#params = params\n  }\n\n  get params(): Params {\n    return this.#params\n  }\n\n  get flatParams(): Params {\n    const flatter = (acc: Params, [key, item]: [key: string, item?: Param]): Params => {\n      if (item?.children) {\n        return Object.entries(item.children).reduce(flatter, acc)\n      }\n      if (item) {\n        acc[key] = item\n      }\n\n      return acc\n    }\n    return Object.entries(this.#params).reduce(flatter, {} as Params)\n  }\n\n  toCall({ transformName, transformType }: Pick<Options, 'transformName' | 'transformType'> = {}): string {\n    return getFunctionParams(this.#params, { type: 'call', transformName, transformType })\n  }\n\n  toObject(): string {\n    return getFunctionParams(this.#params, { type: 'object' })\n  }\n  toObjectValue(): string {\n    return getFunctionParams(this.#params, { type: 'objectValue' })\n  }\n\n  toConstructor(): string {\n    return getFunctionParams(this.#params, { type: 'constructor' })\n  }\n}\n","// import './globals.ts'\nimport * as React from 'react'\n\n// expose fabric core helpers\nexport { createContext, createFabric, createFile, FileManager, FileProcessor, TreeNode, useContext } from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n\nexport { Const } from './components/Const.tsx'\nexport { Fabric } from './components/Fabric.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\n// components\nexport { Root } from './components/Root.tsx'\nexport { Type } from './components/Type.tsx'\n\n// composables\nexport { useFabric } from './composables/useFabric.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\n\n// factories\nexport { createReactFabric } from './createReactFabric.ts'\nexport { openDevtools } from './devtools.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"mappings":"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"}