2024-05-09 12:56:45 +02:00
|
|
|
import {
|
|
|
|
BASE_WIDTH,
|
|
|
|
MISSING_FONTS_TEXT_HEIGHT,
|
|
|
|
MISSING_SINGLE_FONT_HEIGHT,
|
|
|
|
NORMAL_HEIGHT
|
|
|
|
} from './pluginSizes';
|
|
|
|
import { registerChange } from './registerChange';
|
2024-05-07 12:18:15 +02:00
|
|
|
import { isGoogleFont } from './translators/text/font/gfonts';
|
|
|
|
import { isLocalFont } from './translators/text/font/local';
|
2024-05-03 13:43:07 +02:00
|
|
|
|
|
|
|
export const findAllTextNodes = async () => {
|
|
|
|
await figma.loadAllPagesAsync();
|
|
|
|
|
|
|
|
const nodes = figma.root.findAllWithCriteria({
|
|
|
|
types: ['TEXT']
|
|
|
|
});
|
|
|
|
|
|
|
|
const fonts = new Set<string>();
|
|
|
|
|
|
|
|
nodes.forEach(node => {
|
|
|
|
const styledTextSegments = node.getStyledTextSegments(['fontName']);
|
|
|
|
|
|
|
|
styledTextSegments.forEach(segment => {
|
|
|
|
if (isGoogleFont(segment.fontName) || isLocalFont(segment.fontName)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
fonts.add(segment.fontName.family);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
figma.ui.postMessage({
|
|
|
|
type: 'CUSTOM_FONTS',
|
|
|
|
data: Array.from(fonts)
|
|
|
|
});
|
|
|
|
|
2024-05-09 12:56:45 +02:00
|
|
|
const newHeight =
|
|
|
|
NORMAL_HEIGHT +
|
|
|
|
(fonts.size > 0 ? MISSING_FONTS_TEXT_HEIGHT + fonts.size * MISSING_SINGLE_FONT_HEIGHT : 0);
|
2024-05-03 13:43:07 +02:00
|
|
|
|
2024-05-09 12:56:45 +02:00
|
|
|
figma.ui.resize(BASE_WIDTH, newHeight);
|
|
|
|
figma.currentPage.once('nodechange', registerChange);
|
2024-05-03 13:43:07 +02:00
|
|
|
};
|