fix: define CellStyle.portConstraintRotation as boolean (#299)

It was incorrectly defined as DIRECTION after the migration from
mxGraph.

Also improve the type signature and JSDoc of
mathUtils.getPortConstraints which is the only function that uses the
`portConstraintRotation` property in maxGraph.
development
Thomas Bouffard 2024-01-10 07:56:55 +01:00 committed by GitHub
parent 7c94e0c3af
commit 20c31f9bc6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 21 deletions

View File

@ -533,7 +533,7 @@ export type CellStateStyle = {
* - `true` makes the constraints rotate with the vertex. * - `true` makes the constraints rotate with the vertex.
* @default false * @default false
*/ */
portConstraintRotation?: DIRECTION; portConstraintRotation?: boolean;
/** /**
* This specifies if a cell can be resized. * This specifies if a cell can be resized.
* *

View File

@ -206,21 +206,19 @@ export const getRotatedPoint = (pt: Point, cos: number, sin: number, c = new Poi
/** /**
* Returns an integer mask of the port constraints of the given map * Returns an integer mask of the port constraints of the given map
* @param dict the style map to determine the port constraints for
* @param defaultValue Default value to return if the key is undefined.
* @return the mask of port constraint directions
* *
* @param terminal {@link CelState} that represents the terminal. * @param terminal {@link CelState} that represents the terminal.
* @param edge <CellState> that represents the edge. * @param edge {@link CelState} that represents the edge.
* @param source Boolean that specifies if the terminal is the source terminal. * @param source Boolean that specifies if the terminal is the source terminal.
* @param defaultValue Default value to be returned. * @param defaultValue Default value to be returned if no port constraint is defined in the terminal.
* @return the mask of port constraint directions
*/ */
export const getPortConstraints = ( export const getPortConstraints = (
terminal: CellState, terminal: CellState,
edge: CellState, edge: CellState,
source: boolean, source: boolean,
defaultValue: any defaultValue: number
) => { ): number => {
const value = getValue( const value = getValue(
terminal.style, terminal.style,
'portConstraint', 'portConstraint',
@ -233,10 +231,10 @@ export const getPortConstraints = (
const directions = value.toString(); const directions = value.toString();
let returnValue = DIRECTION_MASK.NONE; let returnValue = DIRECTION_MASK.NONE;
const constraintRotationEnabled = getValue(terminal.style, 'portConstraintRotation', 0); const constraintRotationEnabled = terminal.style.portConstraintRotation ?? false;
let rotation = 0; let rotation = 0;
if (constraintRotationEnabled == 1) { if (constraintRotationEnabled) {
rotation = terminal.style.rotation ?? 0; rotation = terminal.style.rotation ?? 0;
} }

View File

@ -41,14 +41,6 @@ import { Graph } from '../Graph';
* let bbox = (state.text != null) ? state.text.boundingBox : null; * let bbox = (state.text != null) ? state.text.boundingBox : null;
* ``` * ```
* *
* Constructor: CellState
*
* Constructs a new object that represents the current state of the given
* cell in the specified view.
*
* @param view {@link GraphView} that contains the state.
* @param cell <Cell> that this state represents.
* @param style Array of key, value pairs that constitute the style.
*/ */
class CellState extends Rectangle { class CellState extends Rectangle {
// referenced in mxCellRenderer // referenced in mxCellRenderer
@ -73,13 +65,12 @@ class CellState extends Rectangle {
view!: GraphView; view!: GraphView;
/** /**
* Reference to the <Cell> that is represented by this state. * Reference to the {@link Cell} that is represented by this state.
*/ */
cell!: Cell; cell!: Cell;
/** /**
* Contains an array of key, value pairs that represent the style of the * The style of the {@link Cell}.
* cell.
*/ */
style!: CellStateStyle; style!: CellStateStyle;
@ -163,6 +154,13 @@ class CellState extends Rectangle {
point: Point | null = null; point: Point | null = null;
/**
* Constructs a new object that represents the current state of the given Cell in the specified view.
*
* @param view {@link GraphView} that contains the state.
* @param cell {@link Cell} that this state represents.
* @param style the style of the Cell.
*/
constructor( constructor(
view: GraphView | null = null, view: GraphView | null = null,
cell: Cell | null = null, cell: Cell | null = null,

View File

@ -425,6 +425,7 @@ Property type changed from `number` (0 or 1) to `boolean` (if not specified, fro
- `orthogonal` - `orthogonal`
- `orthogonalLoop` - `orthogonalLoop`
- `pointerEvents` - `pointerEvents`
- `portConstraintRotation`
- `resizable` - `resizable`
- `resizeHeight` - `resizeHeight`
- `resizeWidth` - `resizeWidth`