@figma/code-connect
Version:
A tool for connecting your design system components in code with your design system in Figma
62 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CodeConnectLanguage = exports.CodeConnectLabel = void 0;
exports.getInferredLanguageForRaw = getInferredLanguageForRaw;
/**
* Default Code Connect labels for native parsers
*/
var CodeConnectLabel;
(function (CodeConnectLabel) {
CodeConnectLabel["React"] = "React";
CodeConnectLabel["Storybook"] = "Storybook";
CodeConnectLabel["SwiftUI"] = "SwiftUI";
CodeConnectLabel["Compose"] = "Compose";
CodeConnectLabel["WebComponents"] = "Web Components";
CodeConnectLabel["HTML"] = "HTML";
CodeConnectLabel["Vue"] = "Vue";
CodeConnectLabel["Angular"] = "Angular";
CodeConnectLabel["Code"] = "Code";
})(CodeConnectLabel || (exports.CodeConnectLabel = CodeConnectLabel = {}));
/**
* Supported Code Connect languages for syntax highlighting and formatting
*/
var CodeConnectLanguage;
(function (CodeConnectLanguage) {
CodeConnectLanguage["TypeScript"] = "typescript";
CodeConnectLanguage["Swift"] = "swift";
CodeConnectLanguage["Kotlin"] = "kotlin";
CodeConnectLanguage["HTML"] = "html";
CodeConnectLanguage["Raw"] = "raw";
})(CodeConnectLanguage || (exports.CodeConnectLanguage = CodeConnectLanguage = {}));
/**
* Maps Code Connect labels to their corresponding language for syntax highlighting.
* This is used for raw template files to infer the correct language.
*/
const LABEL_TO_LANGUAGE_MAP = {
[CodeConnectLabel.React]: CodeConnectLanguage.TypeScript,
[CodeConnectLabel.Storybook]: CodeConnectLanguage.TypeScript,
[CodeConnectLabel.SwiftUI]: CodeConnectLanguage.Swift,
[CodeConnectLabel.Compose]: CodeConnectLanguage.Kotlin,
[CodeConnectLabel.WebComponents]: CodeConnectLanguage.HTML,
[CodeConnectLabel.HTML]: CodeConnectLanguage.HTML,
[CodeConnectLabel.Vue]: CodeConnectLanguage.TypeScript,
[CodeConnectLabel.Angular]: CodeConnectLanguage.TypeScript,
[CodeConnectLabel.Code]: CodeConnectLanguage.Raw,
};
/**
* Infers the appropriate language for a raw template file based on its label.
* Falls back to 'raw' if the label is not recognized.
*
* @param label - The label associated with the Code Connect file
* @returns The corresponding language identifier for syntax highlighting
*/
function getInferredLanguageForRaw(label) {
// Try to match against known labels (enum values)
const knownLabel = Object.values(CodeConnectLabel).find((enumLabel) => enumLabel === label);
if (knownLabel) {
return LABEL_TO_LANGUAGE_MAP[knownLabel];
}
// Fallback to raw for unknown labels
return CodeConnectLanguage.Raw;
}
//# sourceMappingURL=label_language_mapping.js.map