Source: docker.jsdoc

/**
 * Options for a [docker]{@link module:wcDocker} instance.
 * 
 * @typedef {Object} module:wcDocker~Options
 * @property {String} [themePath='Themes'] - A folder path where all docker theme files can be found.
 * @property {String} [theme='default'] - The active docker theme.
 * @property {String} [loadingClass='fa fa-spinner fa-pulse'] - Any class name to use for the loading screen icon.
 * @property {Boolean} [allowContextMenu=true] - Overrides the default right click menu with ones that interact with docker.
 * @property {Boolean} [hideOnResize=false] - If true, panels will hide their contents as they are being resized.
 * @property {Boolean} [allowCollapse=true] - Allows users to collapse panels to the sides of the docker view.
 * @property {Number} [responseRate=10] - This determines how often updates are performed (in milliseconds).
 * @property {Number} [moveStartDelay=300] - The time delay (in milliseconds) before a panel drag operation will start.
 * @property {Number|String} [edgeAnchorSize=50] - Determines the size of the anchor points when docking a panel to the outer edge of the window. Can be a pixel value, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [panelAnchorSize='15%'] - Determines the size of the anchor points when docking a panel along the side of another panel. Can be a pixel value, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [detachToWidth=600] - Determines the new width when a panel is detached (0 = Don't change). Can be a pixel value, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [detachToHeight=400] - Determines the new height when a panel is detached (0 = Don't change).  Can be a pixel value, or a string with a 'px' or '%' suffix.
 * @property {Object} [wcPanelClass] - Defines a class object to use in replacement of the default wcPanel object.
 * @property {Object} [wcGhostClass] - Defines a class object to use in replacement of the default wcGhost object.
 * @property {Object} [wcSplitterClass] - Defines a class object to use in replacement of the default wcSplitter object.
 * @property {Object} [wcFrameClass] - Defines a class object to use in replacement of the default wcFrame object.
 * @property {Object} [wcCollapserClass] - Defines a class object to use in replacement of the default wcCollapser object.
 * @property {Object} [wcLayoutSimpleClass] - Defines a class object to use in replacement of the default wcLayoutSimple object.
 * @property {Object} [wcLayoutTableClass] - Defines a class object to use in replacement of the default wcLayoutTable object.
 * @property {Object} [wcDrawerClass] - Defines a class object to use in replacement of the default wcDrawer object.
 * @property {Object} [wcTabFrameClass] - Defines a class object to use in replacement of the default wcTabFrame object.
 */

/**
 * A rectangle structure.
 * @typedef {Object} module:wcDocker~Rect
 * @property {Number|String} [x] - X coordinate of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [y] - Y coordinate of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [w] - Width of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [h] - Height of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 */

/**
 * A rectangle structure.
 * @typedef {Object} module:wcDocker~AnchorRect
 * @property {Number|String} [x] - X coordinate of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [y] - Y coordinate of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [w] - Width of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [h] - Height of the rectangle. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {module:wcDocker.TAB} [tabOrientation] - Desired orientation of tab widgets.
 */

/**
 * A bounding structure
 * @typedef {Object} module:wcDocker~Bounds
 * @property {Number} top - The upper, or top bound (percentage value between 0 and 1).
 * @property {Number} bottom - The lower, or bottom bound (percentage value between 0 and 1).
 * @property {Number} left - The left bound (percentage value between 0 and 1).
 * @property {Number} right - The right bound (percentage value between 0 and 1).
 */

/**
 * A coordinate structure.
 * @typedef {Object} module:wcDocker~Coordinate
 * @property {Number} x - X coordinate.
 * @property {Number} y - Y coordinate.
 */

/**
 * A 2D size structure.
 * @typedef {Object} module:wcDocker~Size
 * @property {Number} x - Width.
 * @property {Number} y - Height.
 */

/**
 * Determines whether the container will allow scroll bars to appear on each axis.
 * @typedef {Object} module:wcDocker~Scrollable
 * @property {Boolean} x - Whether scrolling is enabled in the horizontal direction.
 * @property {Boolean} y - Whether scrolling is enabled in the vertical direction.
 */

/**
 * Determines whether the container should fit the size of its contents instead of scroll for each axis.
 * @typedef {Object} module:wcDocker~FitContents
 * @property {Boolean} x - Whether scrolling is enabled in the horizontal direction.
 * @property {Boolean} y - Whether scrolling is enabled in the vertical direction.
 */

 /**
 * Options for adding a new panel.
 * @typedef {Object} module:wcDocker~PanelOptions
 * @property {Number|String} [x] - X coordinate of the panel center (if floating). Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [y] - Y coordinate of the panel center (if floating). Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [w] - Desired width of the panel. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {Number|String} [h] - Desired height of the panel. Can be a pixel position, or a string with a 'px' or '%' suffix.
 * @property {module:wcDocker.TAB} [tabOrientation] - Desired position of tab widgets when using [wcDocker.DOCK.STACKED]{@link module:wcDocker.DOCK}. <b>Not supported on IE8 or below.</b>
 */

/**
 * Options object for registering new panel types.
 * @typedef module:wcDocker~registerOptions
 * @property {module:wcDocker~onCreatePanel} onCreate  - A function or an object constructor for the panel.
 * @property {module:wcDocker.LAYOUT} [layout=wcDocker.LAYOUT.TABLE] - If supplied, overrides the default layout used for this panel.
 * @property {String} [icon]                    - A CSS class name to draw an icon in the panels tab widget.
 * @property {String} [faicon]                  - An icon name using the [Font-Awesome]{@link http://fortawesome.github.io/Font-Awesome/} library. You must download and link to the library first.
 * @property {String|Boolean} [title]           - Assign a custom name to the panels tab. A false value will hide the tab entirely.
 * @property {Boolean} [isPrivate]              - If true, the user will not be able to create this panel type.
 * @property {Boolean} [isPersistent]           - If true, when the user closes this panel, it will only be hidden instead of completely destroyed. When the user creates an instance of this panel, it will first attempt to un-hide an already existing panel before creating a new instance.
 * @property {Number} [limit]                   - Enforces a limited number of this panel type from being created by the user.
 * @property {Object} [options]                 - A custom options object to be passed into the new panel constructor or creation function as the second parameter.
 */

 /**
 * A function or an object constructor for the panel. This function is called using the 'new' operator.
 * @callback module:wcDocker~onCreatePanel
 * @param {module:wcPanel} panel - The panel being constructed.
 * @param {module:wcPanel~options} [options] - An options object passed in from [wcDocker.registerPanelType()]{@link module:wcDocker#registerPanelType}'s options.options parameter.
 */

/**
 * An event handler callback. Each is registered to a event type using the [wcDocker.on()]{@link module:wcDocker#on} or [wcPanel.on()]{@link module:wcPanel~on} functions.
 * @event module:wcDocker#onEvent
 * @type {Function}
 * @param {module:wcPanel|NULL} panel - The panel invoking the event, or NULL if global.
 * @param {Object} [data] - A data object passed by the invoker.
 */

/**
 * Anchor data.
 * @typedef {Object} module:wcDocker~Anchor
 * @property {Boolean} self - Whether the anchor is hovering over the moving panel.
 * @property {module:wcDocker.DOCK} loc - The location of the anchor on the panel.
 * @property {module:wcLayout} item - The panel layout being hovered over.
 * @property {module:wcDocker.TAB} tab - The tab location.
 * @property {}
 * @property {Number} [x] - X coordinate of the anchor.
 * @property {Number} [y] - Y coordinate of the anchor.
 * @property {Number} [w] - Width of the anchor.
 * @property {Number} [h] - Height of the anchor.
 */