code: def html_repr(obj: Model):
      module = obj.__class__.__module__
      name = obj.__class__.__name__
  
      _id = getattr(obj, "_id", None)
  
      cls_name = make_id()
  
      def row(c: str):
          return f'<div style="display: table-row;">{c}</div>'
  
      def hidden_row(c: str):
          return f'<div class="{cls_name}" style="display: none;">{c}</div>'
  
      def cell(c: str):
          return f'<div style="display: table-cell;">{c}</div>'
  
      html = ""
      html += '<div style="display: table;">'
  
      ellipsis_id = make_id()
      ellipsis = f'<span id="{ellipsis_id}" style="cursor: pointer;">&hellip;)</span>'
  
      prefix = cell(f'<b title="{module}.{name}">{name}</b>(')
      html += row(
          prefix
          + cell("id" + "&nbsp;=&nbsp;" + repr(_id) + ", " + ellipsis)
      )
  
      props = obj.properties_with_values().items()
      sorted_props = sorted(props, key=itemgetter(0))
      all_props = sorted_props
      for i, (prop, value) in enumerate(all_props):
          end = ")" if i == len(all_props) - 1 else ","
          html += hidden_row(
              cell("")
              + cell(prop + "&nbsp;=&nbsp;" + repr(value) + end)
          )
  
      html += "</div>"
      html += _HTML_REPR % dict(
          ellipsis_id=ellipsis_id, cls_name=cls_name
      )
  
      return html
  
file_path: bokeh/src/bokeh/model/docs.py
imports: from __future__ import annotations
  import logging
  from operator import itemgetter
  from typing import TYPE_CHECKING, Any
  from ..util.serialization import make_id
  from ..util.strings import append_docstring
label_desc: Use image node_id 1 for calling a global function with example usage: html_repr(obj) and returns: html, str, c, str, str, cls_name, str, c, str, str, c, str