{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/react/create.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase } from 'lodash'\nimport * as prettier from 'prettier'\nimport fs from 'fs'\nimport z from 'zod'\nimport {\n ComponentPropertyDefinition,\n CreateRequestPayload,\n CreateRequestPayloadMulti,\n CreateResponsePayload,\n FigmaConnectionComponent,\n PropMapping,\n} from '../connect/parser_executable_types'\nimport path from 'path'\nimport { normalizeComponentName } from '../connect/create'\nimport { Intrinsic, IntrinsicKind, ValueMappingKind } from '../connect/intrinsics'\nimport { getOutFileName } from '../connect/create_common'\nimport { ComponentTypeSignature } from './parser'\n\nexport function isBooleanKind(propValue: string) {\n const normalized = propValue.toLowerCase()\n return (\n normalized === 'true' ||\n normalized === 'false' ||\n normalized === 'yes' ||\n normalized === 'no' ||\n normalized === 'on' ||\n normalized === 'off'\n )\n}\n\nfunction normalizePropName(name: string) {\n return name.replace(/#[0-9:]*/g, '')\n}\n\nfunction generateCodePropName(name: string) {\n const cleanedName = name\n // Remove any #node:id from the end of the string\n .replace(/#[0-9:]+$/g, '')\n // Remove any special characters\n .replace(/[^a-zA-Z0-9\\s]/g, '')\n\n return camelCase(cleanedName)\n}\n\nfunction normalizePropValue(name: string) {\n // Convert the string to kebab-case\n return name.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase()\n}\n\nfunction generateExpressionValueMappingKind(valueMappingKind: ValueMappingKind) {\n if (valueMappingKind && typeof valueMappingKind === 'object' && 'kind' in valueMappingKind) {\n return generateExpressionFromIntrinsic(valueMappingKind)\n }\n if (typeof valueMappingKind === 'string') {\n return `\"${valueMappingKind}\"`\n }\n if (\n typeof valueMappingKind === 'number' ||\n typeof valueMappingKind === 'boolean' ||\n typeof valueMappingKind === 'undefined'\n ) {\n return `${valueMappingKind}`\n }\n}\n\nfunction generateExpressionValueMapping(valueMapping: Record) {\n return `{\n ${Object.entries(valueMapping)\n .map(([k, v]) => `\"${k}\": ${generateExpressionValueMappingKind(v)}`)\n .join(`,\\n`)}\n}`\n}\n\n// Not an exhaustive list of intrinsics but can add others as/when they're supported in prop mapping gen\nexport function generateExpressionFromIntrinsic({ kind, args }: Intrinsic): string | never {\n if (kind === IntrinsicKind.String) {\n return `figma.string(\"${args.figmaPropName}\")`\n }\n if (kind === IntrinsicKind.Boolean) {\n return `figma.boolean(\"${args.figmaPropName}\"${args.valueMapping ? `, ${generateExpressionValueMapping(args.valueMapping)}` : ''})`\n }\n if (kind === IntrinsicKind.Enum) {\n return `figma.enum(\"${args.figmaPropName}\"${args.valueMapping ? `, ${generateExpressionValueMapping(args.valueMapping)}` : ''})`\n }\n if (kind === IntrinsicKind.Instance) {\n return `figma.instance(\"${args.figmaPropName}\")`\n }\n if (kind === IntrinsicKind.Slot) {\n return `figma.slot(\"${args.figmaPropName}\")`\n }\n if (kind === IntrinsicKind.Children) {\n return `figma.children(${args.layers.length > 1 ? `[${args.layers.map((layer) => `\"${layer}\"`).join(', ')}]` : `\"${args.layers[0]}\"`})`\n }\n if (kind === IntrinsicKind.TextContent) {\n return `figma.textContent(\"${args.layer}\")`\n }\n // should never reach here as we create prop mappings.\n throw new Error(`kind ${kind} not supported for prop mapping`)\n}\n\nfunction generateSinglePropMappingFromFigmaProp(\n propName: string,\n propDef: ComponentPropertyDefinition,\n) {\n const codePropName = generateCodePropName(propName)\n const figmaPropName = normalizePropName(propName)\n if (propDef.type === 'BOOLEAN') {\n return `\"${codePropName}\": figma.boolean('${figmaPropName}')`\n }\n if (propDef.type === 'TEXT') {\n return `\"${codePropName}\": figma.string('${figmaPropName}')`\n }\n if (propDef.type === 'VARIANT') {\n const isBooleanVariant =\n propDef.variantOptions?.length === 2 && propDef.variantOptions.every(isBooleanKind)\n if (isBooleanVariant) {\n return `\"${codePropName}\": figma.boolean('${figmaPropName}')`\n } else {\n return `\"${codePropName}\": figma.enum('${figmaPropName}', { \\n${propDef.variantOptions\n ?.map((value) => ` \"${value}\": \"${normalizePropValue(value)}\"`)\n .join(',\\n')}\\n})`\n }\n }\n if (propDef.type === 'INSTANCE_SWAP') {\n return `\"${codePropName}\": figma.instance('${figmaPropName}')`\n }\n\n return null\n}\n\nexport function getSetOfAllPropsReferencedInPropMapping(obj: Object) {\n const mappedProps: string[] = []\n Object.entries(obj).forEach(([k, v]) => {\n if (k === 'figmaPropName') {\n mappedProps.push(v)\n }\n if (typeof v === 'object') {\n mappedProps.push(...getSetOfAllPropsReferencedInPropMapping(v))\n }\n })\n return new Set(mappedProps)\n}\n\nfunction generatePropsFromMapping(component: FigmaConnectionComponent, propMapping: PropMapping) {\n const mappedProps: string[] = []\n const unmappedProps: string[] = []\n\n for (const [propName, intrinsic] of Object.entries(propMapping)) {\n const expr = generateExpressionFromIntrinsic(intrinsic)\n if (expr) {\n mappedProps.push(`\"${propName}\": ${expr}`)\n }\n }\n\n const usedFigmaPropsSet = getSetOfAllPropsReferencedInPropMapping(propMapping)\n for (const [propName, propDef] of Object.entries(component.componentPropertyDefinitions || {})) {\n if (!usedFigmaPropsSet.has(propName)) {\n const propMapping = generateSinglePropMappingFromFigmaProp(propName, propDef)\n if (propMapping) {\n unmappedProps.push(propMapping)\n }\n }\n }\n\n return `{\n${\n mappedProps.length\n ? `// These props were automatically mapped based on your linked code:\n ${mappedProps.join(',\\n')},`\n : ''\n}\n ${\n unmappedProps.length\n ? `// No matching props could be found for these Figma properties:\n ${unmappedProps\n .map((prop) => {\n // Comment out to make clear these are suggested. Singly-commented out lines for ease of uncommenting\n return `// ${prop.replace(/\\n/g, '\\n// ')}`\n })\n .join(',\\n')}`\n : ''\n }\n }`\n}\n\nexport function generateProps(component: FigmaConnectionComponent) {\n const props: string[] = []\n if (\n !component.componentPropertyDefinitions ||\n Object.keys(component.componentPropertyDefinitions).length === 0\n ) {\n return `{}`\n }\n\n for (const [propName, propDef] of Object.entries(component.componentPropertyDefinitions)) {\n const propMapping = generateSinglePropMappingFromFigmaProp(propName, propDef)\n if (propMapping) {\n props.push(propMapping)\n }\n }\n return `{\n ${props.join(',\\n ')}\n}`\n}\n\nfunction generateExample(\n component: string,\n signature?: ComponentTypeSignature,\n propMapping?: PropMapping,\n) {\n if (!signature) {\n return `<${component} />`\n }\n const props = Object.entries(signature)\n .map(([propName, propDef]) => {\n // Children are rendered inside of the example body rather than in a prop\n if (propName === 'children') {\n return null\n } else if (propMapping && propMapping[propName]) {\n return `${propName}={props.${propName}}`\n } else if (!propDef.startsWith('?')) {\n return `${propName}={/* TODO */} `\n } else {\n return null\n }\n })\n .filter(Boolean)\n .join('\\n')\n\n // const childProp = propMapping?['children'] ? `{props.${propMapping['children']}}` : null\n\n // Nest child props inside of the element\n if (signature['children'] && propMapping?.['children']) {\n return `<${component}\n ${props}>\n {props.children}\n `\n } else {\n return `<${component}\n ${props}/>`\n }\n}\n\n// returns ES-style import path from given system path\nfunction formatImportPath(systemPath: string) {\n // use forward slashes for import paths\n let formattedImportPath = systemPath.replaceAll(path.sep, '/')\n\n // prefix current dir paths with ./ (node path does not)\n if (!formattedImportPath.startsWith('.')) {\n formattedImportPath = `./${formattedImportPath}`\n }\n\n // assume not using ESM imports\n return formattedImportPath.replace(/\\.(jsx|tsx)$/, '')\n}\n\nfunction getImportsPath({\n codeConnectFilePath,\n sourceFilepath,\n normalizedName,\n}: {\n codeConnectFilePath: string\n sourceFilepath?: string\n normalizedName: string\n}) {\n if (!sourceFilepath) {\n return `./${normalizedName}`\n }\n const codeConnectFolder = path.dirname(codeConnectFilePath)\n const pathToComponentFile = path.relative(codeConnectFolder, sourceFilepath)\n\n return formatImportPath(pathToComponentFile)\n}\n\nexport async function createReactCodeConnect(\n payload: CreateRequestPayloadMulti,\n): Promise> {\n const { figmaConnections, destinationFile, destinationDir, sourceFilepath, normalizedName } =\n payload\n\n const comments = {\n MAPPED_PROPS: `\n * \\`props\\` includes a mapping from your code props to Figma properties.\n * You should check this is correct, and update the \\`example\\` function\n * to return the code example you'd like to see in Figma`,\n NO_MAPPED_PROPS: `\n * None of your props could be automatically mapped to Figma properties.\n * You should update the \\`props\\` object to include a mapping from your\n * code props to Figma properties, and update the \\`example\\` function to\n * return the code example you'd like to see in Figma`,\n DEFAULT: `\n * \\`props\\` includes a mapping from Figma properties and variants to\n * suggested values. You should update this to match the props of your\n * code component, and update the \\`example\\` function to return the\n * code example you'd like to see in Figma`,\n }\n\n const sourceFilename = sourceFilepath\n ? path.parse(sourceFilepath).name.split('.')[0]\n : normalizedName\n\n const filePath = getOutFileName({\n outFile: destinationFile,\n outDir: destinationDir,\n sourceFilename,\n extension: 'tsx',\n })\n\n const importsPath = getImportsPath({\n codeConnectFilePath: filePath,\n sourceFilepath,\n normalizedName,\n })\n\n let defaultImport = ''\n const namedImports: Record = {}\n\n for (const figmaConnection of figmaConnections) {\n const { sourceExport, component } = figmaConnection\n\n const importName =\n sourceFilepath && sourceExport\n ? sourceExport === 'default'\n ? normalizeComponentName(sourceFilename)\n : sourceExport\n : normalizedName\n\n if (sourceExport === 'default') {\n defaultImport = importName\n } else {\n namedImports[component.id] = importName\n }\n }\n\n if (defaultImport !== '') {\n defaultImport = Object.values(namedImports).includes(defaultImport)\n ? `${defaultImport}Default`\n : defaultImport\n }\n\n let codeConnectCode = ''\n for (const figmaConnection of figmaConnections) {\n const { propMapping, sourceExport, component, reactTypeSignature } = figmaConnection\n\n const hasAnyMappedProps = propMapping && Object.keys(propMapping).length > 0\n\n const commentType =\n propMapping && hasAnyMappedProps\n ? 'MAPPED_PROPS'\n : propMapping && !hasAnyMappedProps\n ? 'NO_MAPPED_PROPS'\n : 'DEFAULT'\n let comment = comments[commentType]\n\n let componentName = sourceExport === 'default' ? defaultImport : namedImports[component.id]\n\n const snippet = `figma.connect(${componentName}, \"${component.figmaNodeUrl}\", {\n props: ${propMapping ? generatePropsFromMapping(component, propMapping) : generateProps(component)},\n example: (props) => ${generateExample(componentName, reactTypeSignature, propMapping)},\n })`\n\n codeConnectCode += `\n\n /**\n * -- This file was auto-generated by Code Connect --${comment}\n */\n\n ${snippet}\n `\n }\n\n const comma = Object.keys(namedImports).length > 0 && defaultImport ? ',' : ''\n const namedImportList =\n Object.values(namedImports).length > 0 ? `{${Object.values(namedImports).join(',')}}` : ''\n\n let codeConnect = `\nimport React from 'react'\nimport ${defaultImport} ${comma} ${namedImportList} from '${importsPath}'\nimport figma from '@figma/code-connect'\n\n${codeConnectCode}\n`\n\n let formatted = prettier.format(codeConnect, {\n parser: 'typescript',\n semi: false,\n trailingComma: 'all',\n })\n\n if (fs.existsSync(filePath)) {\n return {\n createdFiles: [],\n messages: [{ message: `File ${filePath} already exists, skipping creation`, level: 'ERROR' }],\n }\n }\n fs.mkdirSync(path.dirname(filePath), { recursive: true })\n fs.writeFileSync(filePath, formatted)\n\n return { createdFiles: [{ filePath }], messages: [] }\n}\n"]}