Я пишу плагин Figma для генерации случайного цвета и изменения заливки выделения. Это прекрасно работает, когда узел выделения имеет заливку. Но когда нет заполнения, я получаю сообщение об ошибке при попытке применить fills[0].color = newColor;
.
. При регистрации заполнения на этом узле я получаю []
, который, как я предполагаю, является пустым массивом. Узлы Figma могут иметь несколько заливок, и при присвоении значений требуется формат node.fills[1].color
.
Итак, как я могу создать назначение color
для узла, в котором есть пустой массив?
import chroma from '../node_modules/chroma-js/chroma'
import clone from './clone'
for (const node of figma.currentPage.selection) {
if ("fills" in node) {
const fills = clone(node.fills);
// Get a random colour from chroma-js.
const random = chroma.random().gl();
// Create an array that matches the fill structure (rgb represented as 0 to 1)
const newColor = {r: random[0], g: random[1], b: random[2]};
// Only change the first fill
fills[0].color = newColor;
// Replace the fills on the node.
node.fills = fills;
}
}
// 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();