 )(@, ($, _, 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

        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.

Written with jQuery 1.7.2  
###

# ❧

# The base `tip` plugin does several things. It does basic parsing of trigger
# element attributes for the tip content. It can anchor itself to a trigger by
# selecting the best direction. It can follow the cursor. It toggles its
# appearance by fading in and out and resizing, all via configurable animations.
# It can display custom tip content. It uses of the `hlf.hoverIntent` event
# extension to prevent appearance 'thrashing.' Last, the tip object attaches to
# the context element. It acts as tip for the the current jQuery selection via
# event delegation.

# The extended `snapTip` plugin extends the base tip. It allows the tip to snap
# to the trigger element. And by default the tip locks into place. But turn on
# only one axis of snapping, and the tip will track the mouse only on the other
# axis. For example, snapping to the x-axis will only allow the tip to shift
# along the y-axis. The x will remain constant.

# ❧

# Export. Support AMD, CommonJS (Browserify), and browser globals.
((root, factory) ->
