// подключаю файл со списком const data = require("./broken_icons.json"); // получаю текущую страницу const nodes = figma.currentPage; // Получаю размер иконок из названия страницы const pageSize = parseInt(nodes.name); // выбираю из списка нужные иконки (по размеру) let list = data[pageSize] || []; list = list.map(getName); // убираем в списке расширения для файлов .svg // создал пустой список для найденых иконок const found: string[] = []; // Прохожу по всем элементам на текущей странице for (const node of nodes.children) { // получаем имя элемента const { name } = node; // Если элемент в нашем списке if (list.includes(name)) { // сохроняем его в список найденых found.push(name); } else { // Если элемент НЕ в нашем списке // делаем прозрачность 0 if ("opacity" in node) { node.opacity = 0; } } } // Иконки которые не нашли на странице const notFound = getDifference(list, found); console.log("нашли", found); console.log("не нашли", notFound); // Make sure to close the plugin when you're done. Otherwise the plugin will // keep running, which shows the cancel button at the bottom of the screen. figma.closePlugin(); /** * Функция убирает из строчки с названием файла расширение .svg * Было "any-file-name.svg" станет "any-file-name" * @param filename название файла .svg * @returns название без (.svg) */ function getName(filename: string) { return filename.replace(".svg", ""); } /** * Получить разницу между двумя массивами * @param a1 * @param a2 */ function getDifference(a1: string[], a2: string[]) { return a1.filter((x) => !a2.includes(x)); }