class_docstr: ExplainerComponent is a bundle of a dash layout and callbacks that
  make use of an Explainer object.
  
  An ExplainerComponent can have ExplainerComponent subcomponents, that
  you register with register_components(). If the component depends on
  certain lazily calculated Explainer properties, you can register these
  with register_dependencies().
  
  ExplainerComponent makes sure that:
  
  1. Callbacks of subcomponents are registered.
  2. Lazily calculated dependencies (even of subcomponents) can be calculated.
  3. Pos labels selector id's of all subcomponents can be calculated.
  
  Each ExplainerComponent adds a unique uuid name string to all elements, so
  that there is never a name clash even with multiple ExplanerComponents of
  the same type in a layout.
  
  Important:
      define your callbacks in component_callbacks() and
      ExplainerComponent will register callbacks of subcomponents in addition
      to component_callbacks() when calling register_callbacks()
class_docstr_tok: ["ExplainerComponent","is","a","bundle","of","a","dash","layout","and","callbacks","that","make","use","of","an","Explainer","object",".","An","ExplainerComponent","can","have","ExplainerComponent","subcomponents",",","that","you","register","with","register_components","(",")",".","If","the","component","depends","on","certain","lazily","calculated","Explainer","properties",",","you","can","register","these","with","register_dependencies","(",")",".","ExplainerComponent","makes","sure","that",":","1",".","Callbacks","of","subcomponents","are","registered",".","2",".","Lazily","calculated","dependencies","(","even","of","subcomponents",")","can","be","calculated",".","3",".","Pos","labels","selector","id","'s","of","all","subcomponents","can","be","calculated",".","Each","ExplainerComponent","adds","a","unique","uuid","name","string","to","all","elements",",","so","that","there","is","never","a","name","clash","even","with","multiple","ExplanerComponents","of","the","same","type","in","a","layout",".","Important",":","define","your","callbacks","in","component_callbacks","(",")","and","ExplainerComponent","will","register","callbacks","of","subcomponents","in","addition","to","component_callbacks","(",")","when","calling","register_callbacks","(",")"]
docstr: returns a list of unique dependencies of the component
  and all subcomponents
code: def dependencies(self):
      """returns a list of unique dependencies of the component
      and all subcomponents"""
      if not hasattr(self, "_dependencies"):
          self._dependencies = []
      self.register_components()
      deps = self._dependencies
      for comp in self._components:
          deps.extend(comp.dependencies)
      deps = list(set(deps))
      return deps
  
imports: import sys
  from abc import ABC
  import inspect
  import types
  from typing import Union, List, Tuple
  from pathlib import Path
  from importlib import import_module
  import socket
  import dash
  from dash import html, dcc, Input, Output, State
  from dash.exceptions import PreventUpdate
  import dash_bootstrap_components
  from .None import to_html
label_desc: Use image node_id 7 for calling the ExplainerComponent obj's underlying member method code with example usage: obj.dependencies() and returns: deps