I’m getting this error when changing the status of a variant from true to false with the setProperties function
`Uncaught Error: “Unexpected: _dirty” in ~SymbolOverrider (FGSymbolOverrider.cpp)
Uncaught Error: “Unexpected: scene()->mutationsAreDisallowed()” in set (FGNode.cpp)
Uncaught Error: “It shouldn’t even be possible for a read-only scene graph observer to recurse.” in handleObserverEvent (FGSceneGraphEvent.h)
`
My code is like this
[image]
jak_e
May 3, 2023, 5:18pm
2
can you provide the code where component
is defined?
Hey Jack, the main code is right below. But the error is not in the component
. This error only happens when I change the Header variant in the Box
import { on, showUI, once } from '@create-figma-plugin/utilities'
import { ResizeWindowHandler } from './types'
export default function () {
on<ResizeWindowHandler>(
'RESIZE_WINDOW',
function (windowSize: { width: number; height: number }) {
const { width, height } = windowSize
figma.ui.resize(width, height)
}
)
function handleSubmit ( valueInput: any, stateComponent: any, valueButton: any) {
interface Button {
value: string | boolean,
count: number
}
interface Trackers {
value: string,
type: string
}
const trackers: Trackers[] = [];
const buttons: Button[] = [];
valueButton.forEach((i: { value: string, count: number; }) =>{
if (valueButton.length === 0 && valueButton[0].value.length === 0) {
const newButton: Button = {
value: false,
count: 0
};
} else {
const newButton: Button = {
value: `${i.value}`,
count: i.count
};
buttons.push(newButton)
}
})
interface Body {
header: string;
body: string;
footer: string;
}
interface Component {
plataforma: string;
tipo: string;
corpo: Body;
botoes: any[];
}
const component:Component = {
plataforma: stateComponent.plataforma,
tipo: stateComponent.tipo,
corpo: {
header: valueInput.header,
body: valueInput.content,
footer: valueInput.footer
},
botoes: buttons
};
(async () => {
let importComponent = await figma.importComponentByKeyAsync('***')
let instance = importComponent.createInstance()
let page = figma.root.children[0];
page.appendChild(instance);
const nodes = figma.currentPage.findAllWithCriteria({
types: ['INSTANCE']
})
const elementNames: string[] = [
'Component', 'Header', 'Content', 'Input', 'Rodapé', 'Botões Quickreply'
];
const elements: Record<string, any> = {};
for (const node of nodes) {
const index = elementNames.indexOf(node.name);
if (index !== -1) {
elements[elementNames[index]] = node;
}
}
const {
'Component': Component,
'Header': Header,
'Content': Box,
'Input': Content,
'Rodapé': Footer,
'Botões Quickreply': BtnQuickReply
} = elements;
// INSERT DATA INPUT ON COMPONENT
Content.setProperties({ 'Text#211:1': component.corpo.body })
Footer.setProperties({ 'Text#520:0': component.corpo.footer })
Box.setProperties({ Header : 'true' })
})();
}
on('SUBMIT', handleSubmit)
showUI({
width: 440,
height: 740
})
}
jak_e
May 3, 2023, 9:57pm
4
I believe the property name "Header"
should be something like "Header#00:0"
similar to the Text property names above it. You should be able to find that name in importComponent.componentPropertyDefinitions
.
Also, can you confirm, is the Header property a boolean or a string for the component? The only other possible thing I see wrong on that line is if you should be saying:
Box.setProperties({ "Header#0:0": false });
instead of
Box.setProperties({ "Header#0:0": 'false' });
Box is an instance of the component. This instance actually has the Header property and the value is a string.
The expected action happens, but I keep getting an error that looks like figma rendering itself.
jak_e
May 4, 2023, 3:51pm
6
Oh I see, this is a variant. That naming makes sense then. When you say “the expected action happens” are you saying that the code works but there’s also an error?
Exactly, the code works, the component is created and the variant value changed, but the error appears in the console.
1 Like
jak_e
May 8, 2023, 3:16pm
8
i dont think this is your fault. other people are reporting it happening in other scenarios we’re looking into it. thanks for bringing this up!
2 Likes