       # - `cursorHeight` is the browser's cursor height. We need to know this to
       #   properly offset the tip to avoid cases of cursor-tip-stem overlap.
       cursorHeight: 12
-      # - Note that the direction data structure must be an array of
+      # - `defaultDirection` is used as a tie-breaker when selecting the best
+      #   direction. Note that the direction data structure must be an array of
       #   `components`, and conventionally with top/bottom first.
       defaultDirection: ['bottom', 'right']
       # - `safeToggle` prevents orphan tips, since timers are sometimes unreliable.

        when 'class'  then 'js-tips'
        else 'hlf.tip'

    # Tip Options
    # -----------
    # Note the plugin instance gets extended with the options.
    defaults: do (pre = 'js-tip-') ->
      # - `$viewport` is the element in which the tip must fit into. It is not the
      #   context, which stores the tip instance and by convention contains the
      #   triggers.
      $viewport: $ 'body'
      # - `triggerContent` can be the name of the trigger element's attribute or a
      #   function that provides custom content when given the trigger element.

)(@, ($, _, hlf) ->
  
  hlf.tip =
    # It takes some boilerplate to write the plugins. To namespace when
    # extending any jQuery API, we use custom `toString` helpers. Plugin
    # namespaces (under the root`$.hlf`) each have a `debug` flag for granular
    # logging.
    debug: off
    toString: _.memoize (context) ->
      switch context
