{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/html/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,sDAsDC;AA7DD,gDAAuB;AACvB,4CAAmB;AACnB,4CAA+C;AAC/C,mDAAoC;AACpC,mCAAkC;AAClC,4DAAyD;AAElD,KAAK,UAAU,qBAAqB,CACzC,OAAkC;IAElC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,GACzF,OAAO,CAAA;IACT,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;IAElC,MAAM,gBAAgB,GAAG,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAA;IAElD,MAAM,cAAc,GAAG,cAAc;QACnC,CAAC,CAAC,cAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,gBAAgB,CAAA;IAEpB,MAAM,QAAQ,GAAG,IAAA,8BAAc,EAAC;QAC9B,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,cAAc;QACtB,cAAc;QACd,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG;;;;;;;;;;;iBAWL,YAAY;WAClB,IAAA,sBAAa,EAAC,SAAS,CAAC;+BACJ,gBAAgB;;CAE9C,CAAA;IAEC,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QAC3C,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,KAAK;KACrB,CAAC,CAAA;IAEF,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,QAAQ,oCAAoC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAC9F,CAAA;IACH,CAAC;IACD,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAErC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACvD,CAAC","sourcesContent":["import { z } from 'zod'\nimport {\n CreateResponsePayload,\n CreateRequestPayloadMulti,\n} from '../connect/parser_executable_types'\nimport path from 'path'\nimport fs from 'fs'\nimport { generateProps } from '../react/create'\nimport * as prettier from 'prettier'\nimport { kebabCase } from 'lodash'\nimport { getOutFileName } from '../connect/create_common'\n\nexport async function createHtmlCodeConnect(\n payload: CreateRequestPayloadMulti,\n): Promise> {\n const { figmaConnections, normalizedName, destinationFile, destinationDir, sourceFilepath } =\n payload\n const component = figmaConnections[0].component\n const { figmaNodeUrl } = component\n\n const webComponentName = kebabCase(normalizedName)\n\n const sourceFilename = sourceFilepath\n ? path.parse(sourceFilepath).name.split('.')[0]\n : webComponentName\n\n const filePath = getOutFileName({\n outFile: destinationFile,\n outDir: destinationDir,\n sourceFilename,\n extension: 'ts',\n })\n\n const codeConnect = `\nimport figma, { html } from '@figma/code-connect/html'\n\n/**\n * -- This file was auto-generated by \\`figma connect create\\` --\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\nfigma.connect(\"${figmaNodeUrl}\", {\n props: ${generateProps(component)},\n example: (props) => html\\`<${webComponentName} />\\`\n})\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"]}