Payload of the layout:change event (chart.on('layout:change', ...)):
a setter in LayoutSetter has run and the saved layout may differ.
It fires once per outermost call, after the change is applied: the canvas
block setting the grid on its way is one event, named setCanvasOptions.
A call that names no pane or scale the chart has changes nothing and fires
nothing, and neither does a restore, which announces itself with
state:restore:start and state:restore:end. Compare what you read back
if a no-op matters: setting a value to what it already was still fires.
Payload of the
layout:changeevent (chart.on('layout:change', ...)): a setter in LayoutSetter has run and the saved layout may differ. It fires once per outermost call, after the change is applied: the canvas block setting the grid on its way is one event, namedsetCanvasOptions. A call that names no pane or scale the chart has changes nothing and fires nothing, and neither does a restore, which announces itself withstate:restore:startandstate:restore:end. Compare what you read back if a no-op matters: setting a value to what it already was still fires.