/**
* Custom options available when constructing a new {@link wcPlay} instance.
* @typedef {Object} wcPlayEditor~Options
* @property {Boolean} [readOnly=false] - If true, the script will not be editable.
* @property {Boolean} [playable=true] - Whether the script can be played using the live debugger.
* @property {wcPlayEditor~CategoryOptions} [category] - Options that determine what categories appear in the palette. By default, all categories are visible.
*/
/**
* Category display options.
* @typedef {Object} wcPlayEditor~CategoryOptions
* @property {String[]} items - A list of categories to show in the palette.
* @property {Boolean} isBlacklist - If true, the items list will be treated as a blacklist of categories to hide.
*/
/**
* The 2D bounds of a rectangle.
* @typedef {Object} wcPlayEditor~Rect
* @property {Number} top
* @property {Number} left
* @property {Number} width
* @property {Number} height
*/
/**
* Bounding information for links on a node.
* @typedef {Object} wcPlayEditor~BoundingData
* @property {wcPlayEditor~Rect} rect - The bounding rectangle.
* @property {wcPlay~Coordinates} point - The anchor point where lines will attach to this link.
* @property {String} name - The name of the bounded object.
*/
/**
* Data associated with a drawn node.
* @typedef {Object} wcPlayEditor~DrawNodeData
* @property {wcNode} node - The node instance.
* @property {wcPlayEditor~Rect} rect - Bounding rectangle of the node (not including links that stick out).
* @property {wcPlayEditor~BoundingData[]} entryBounds - Bounding data of entry links.
* @property {wcPlayEditor~BoundingData[]} exitBounds - Bounding data of exit links.
* @property {wcPlayEditor~BoundingData[]} inputBounds - Bounding data of property input links.
* @property {wcPlayEditor~BoundingData[]} outputBounds - Bounding data of property output links.
* @property {wcPlayEditor~BoundingData[]} valueBounds - Bounding data of property value text.
* @property {wcPlayEditor~BoundingData[]} initialBounds - Bounding data of property initial value text.
*/
/**
* On click handler for menu and toolbar options.
* @callback wcPlayEditor~OnMenuActivated
* @param {Object} event - The mouse click event object.
* @param {wcPlayEditor} editor - The instance of the editor invoking the menu option.
* @param {wcPlay} engine - The instance of the script engine being viewed by the editor.
*/
/**
* A callback that retrieves the icon class for a menu option.
* @function wcPlayEditor~MenuIconFunc
* @param {wcPlayEditor} editor - The instance of the editor invoking the menu option.
* @param {wcPlay} engine - The instance of the script engine being viewed by the editor.
*/
/**
* A callback that retrieves the description string for a menu option.
* @function wcPlayEditor~MenuDescriptionFunc
* @param {wcPlayEditor} editor - The instance of the editor invoking the menu option.
* @param {wcPlay} engine - The instance of the script engine being viewed by the editor.
*/
/**
* Custom options for a menu option.
* @typedef {Object} wcPlayEditor~MenuOptions
* @property {String|wcPlayEditor~MenuIconFunc} [icon] - A classname to apply as an icon for the option. If this is a function, it will be called during the update call and should return the icon class.
* @property {String} [description|wcPlayEditor~MenuDescriptionFunc] - The description to show as a tooltip for this option.
* @property {Number} [itemIndex] - An insertion index to insert the item within the menu category, default is to append to the end.
* @property {Number} [categoryIndex] - If this creates a new category, it will be inserted at this index in the top level menu.
* @property {Boolean} [toolbarIndex] - If supplied, creates a toolbar button for this option and inserts it in the tab bar at the specified index. -1 will append it to the end.
* @property {String} [hotkeys] - A string that describes hotkeys for your control, the format is 'Ctrl+Z' or 'Alt+Shift+L,Shift+L' for multiple.
* @property {Function} [condition] - A function to call during the update to determine if the menu option should be enabled or disabled. Return false to disable the option.
* @param {wcPlayEditor~OnMenuActivated} onActivated - A handler to call when the option is activated.
*/