// NOTE: When a typedef is isolated in a separate comment block, an actual description is generated for it, // using the rest of the commenting in the code block. Usage of typedef in other comments then // link to there. TIL. // // Also noteworthy, all typedef's set up in this manner are collected in a single, global page 'global.html'. // In other words, it doesn't matter *where* the typedef's are defined in the code. // // // TODO: add descriptive commenting to given typedef's /** * @typedef {{type:string, point:Point, angle:number, length:number}} ArrowData * * Object containing instantiation data for a given endpoint. */ /** * @typedef {{x:number, y:number}} Point * * A point in view-coordinates. */ /** * @typedef {{toArrow: boolean, toArrowScale: (allOptions.edges.arrows.to.scaleFactor|{number}|allOptions.edges.arrows.middle.scaleFactor|allOptions.edges.arrows.from.scaleFactor|Array|number), toArrowType: *, middleArrow: boolean, middleArrowScale: (number|allOptions.edges.arrows.middle.scaleFactor|{number}|Array), middleArrowType: (allOptions.edges.arrows.middle.type|{string}|string|*), fromArrow: boolean, fromArrowScale: (allOptions.edges.arrows.to.scaleFactor|{number}|allOptions.edges.arrows.middle.scaleFactor|allOptions.edges.arrows.from.scaleFactor|Array|number), fromArrowType: *, arrowStrikethrough: (*|boolean|allOptions.edges.arrowStrikethrough|{boolean}), color: undefined, inheritsColor: (string|string|string|allOptions.edges.color.inherit|{string, boolean}|Array|*), opacity: *, hidden: *, length: *, shadow: *, shadowColor: *, shadowSize: *, shadowX: *, shadowY: *, dashes: (*|boolean|Array|allOptions.edges.dashes|{boolean, array}), width: *}} ArrowOptions */ /** * @typedef {string|number} Id */ /** * @typedef {Id} NodeId */ /** * @typedef {Id} EdgeId */ /** * @typedef {Id} LabelId */ /** * @typedef {{x: number, y: number}} point */ /** * @typedef {{left: number, top: number, width: number, height: number}} rect */ /** * @typedef {{x: number, y:number, angle: number}} rotationPoint * * point to rotate around and the angle in radians to rotate. angle == 0 means no rotation */ /** * @typedef {{nodeId:NodeId}} nodeClickItem */ /** * @typedef {{nodeId:NodeId, labelId:LabelId}} nodeLabelClickItem */ /** * @typedef {{edgeId:EdgeId}} edgeClickItem */ /** * @typedef {{edgeId:EdgeId, labelId:LabelId}} edgeLabelClickItem */ /** * @typedef {'bold'|'ital'|'boldital'|'mono'|'normal'} MultiFontStyle * * The allowed specifiers of multi-fonts. */ /** * @typedef {{color:string, size:number, face:string, mod:string, vadjust:number}} MultiFontOptions * * The full set of options of a given multi-font. */ /** * @typedef {Array.} Pile * * Sequence of option objects, the order is significant. * The sequence is used to determine the value of a given option. * * Usage principles: * * - All search is done in the sequence of the pile. * - As soon as a value is found, the searching stops. * - prototypes are totally ignored. The idea is to add option objects used as prototypes * to the pile, in the correct order. */