UNPKG

zp-figma-converter

Version:

Convert Figma designs to various code formats

107 lines 3.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertFile = convertFile; const parser_factory_1 = require("./parsers/parser-factory"); const xml_utils_1 = require("../../utils/xml-utils"); const file_utils_1 = require("../../utils/file-utils"); const path_1 = __importDefault(require("path")); /** * Convert node data from JSON to CSD format * @param nodeData JSON node data * @returns Node data for CSD */ function parseNode(nodeData) { const parser = parser_factory_1.ParserFactory.createParser(nodeData.ctype); return parser.parse(nodeData); } /** * Process converting child nodes * @param children List of child nodes * @returns List of converted child nodes */ function parseChildren(children) { return children.map(child => { // Parse basic node data const parsedChild = parseNode(child); // Process nested children recursively if they exist if (child.Children && child.Children.length > 0) { parsedChild.Children = { AbstractNodeData: parseChildren(child.Children) }; } return parsedChild; }); } /** * Convert ObjectData from JSON to CSD format * @param objectData JSON object data * @returns Object data for CSD */ function parseObjectData(objectData) { // Convert node using appropriate parser const parsedData = parseNode(objectData); // Process Children if exists if (objectData.Children && objectData.Children.length > 0) { parsedData.Children = { AbstractNodeData: parseChildren(objectData.Children) }; } return parsedData; } /** * Convert JSON data to CSD data * @param jsonData JSON data * @returns CSD data */ function convertJsonToCsdData(jsonData) { // Create CSD structure return { GameFile: { PropertyGroup: { '@_Name': jsonData.Name, '@_Type': jsonData.Type, '@_ID': jsonData.ID, '@_Version': '3.10.0.0' // Phiên bản mặc định }, Content: { '@_ctype': 'GameProjectContent', Content: { Animation: { '@_Duration': (0, xml_utils_1.toString)(jsonData.Content.Content.Animation.Duration), '@_Speed': (0, xml_utils_1.toString)(jsonData.Content.Content.Animation.Speed) }, ObjectData: parseObjectData(jsonData.Content.Content.ObjectData) } } } }; } /** * Convert JSON file to CSD * @param jsonFilePath JSON file path * @param outputFilePath Output CSD file path */ function convertFile(jsonFilePath, outputFilePath) { try { // Read JSON file const jsonData = (0, file_utils_1.readJsonFile)(jsonFilePath); // Check file type (Scene, Layer, Node) const fileType = (0, file_utils_1.getFileType)(jsonFilePath); console.log(`File type: ${fileType}`); // Convert JSON data to CSD const csdData = convertJsonToCsdData(jsonData); // Convert to XML const xml = (0, xml_utils_1.buildXml)(csdData); (0, file_utils_1.createFolderIfNotExists)(path_1.default.dirname(outputFilePath)); // Write CSD file (0, file_utils_1.writeFile)(outputFilePath, xml); console.log(`Successfully converted: ${outputFilePath}`); } catch (error) { console.error('Error converting JSON to CSD:', error); } } //# sourceMappingURL=json2csd.js.map