class_docstr: Base class for FigureWidget. The FigureWidget class is code-generated as a
  subclass
class_docstr_tok: ["Base","class","for","FigureWidget",".","The","FigureWidget","class","is","code-generated","as","a","subclass"]
docstr: Process layout delta message from the frontend
docstr_tok: ["Process","layout","delta","message","from","the","frontend"]
code: def _handler_js2py_layoutDelta(self, change):
      """
      Process layout delta message from the frontend
      """
  
      # Receive message
      # ---------------
      msg_data = change["new"]
      if not msg_data:
          self._js2py_layoutDelta = None
          return
  
      layout_delta = msg_data["layout_delta"]
      layout_edit_id = msg_data["layout_edit_id"]
  
      # Apply delta
      # -----------
      # We only apply the delta if this message corresponds to the most
      # recent layout edit operation
      if layout_edit_id == self._last_layout_edit_id:
          # ### Transform defaults to delta ###
          delta_transform = BaseFigureWidget._transform_data(
              self._layout_defaults, layout_delta
          )
  
          # ### Remove overlapping properties ###
          # If a property is present in both _layout and _layout_defaults
          # then we remove the copy from _layout
          removed_props = self._remove_overlapping_props(
              self._layout, self._layout_defaults
          )
  
          # ### Notify frontend model of property removal ###
          if removed_props:
              remove_props_msg = {"remove_props": removed_props}
  
              self._py2js_removeLayoutProps = remove_props_msg
              self._py2js_removeLayoutProps = None
  
          # ### Create axis objects ###
          # For example, when a SPLOM trace is created the layout defaults
          # may include axes that weren't explicitly defined by the user.
          for proppath in delta_transform:
              prop = proppath[0]
              match = self.layout._subplot_re_match(prop)
              if match and prop not in self.layout:
                  # We need to create a subplotid object
                  self.layout[prop] = {}
  
          # ### Dispatch change callbacks ###
          self._dispatch_layout_change_callbacks(delta_transform)
  
          # ### Layout edits no longer in process ###
          self._layout_edit_in_process = False
  
          # ### Call any waiting layout edit callbacks ###
          if not self._trace_edit_in_process:
              while self._waiting_edit_callbacks:
                  self._waiting_edit_callbacks.pop()()
  
      self._js2py_layoutDelta = None
  
imports: import uuid
  from importlib import import_module
  import os
  import numbers
  import ipywidgets
  from traitlets import List, Unicode, Dict, observe, Integer
  from .basedatatypes import BaseFigure, BasePlotlyType
  from .callbacks import BoxSelector, LassoSelector, InputDeviceState, Points
  from .serializers import custom_serializers
  from .version import __frontend_version__
label_desc: Use image node_id 10 for calling the BaseFigureWidget obj's underlying member method code with example usage: obj._handler_js2py_layoutDelta(change) without return types