Files
blockly/core/utils/size.ts
John Nesky 9a0619aa2a fix: Drag and Resize events for workspace comments (#8217)
* feat: Added a comment_drag event.

* Add workspace comment resize events.

* Addressing PR feedback.

* Fixed chai imports in new test files.

* Addressing more PR feedback.
2024-06-26 12:16:56 -07:00

63 lines
1.4 KiB
TypeScript

/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* Utility methods for size calculation.
* These methods are not specific to Blockly, and could be factored out into
* a JavaScript framework such as Closure.
*
* @class
*/
// Former goog.module ID: Blockly.utils.Size
/**
* Class for representing sizes consisting of a width and height.
*/
export class Size {
/**
* @param width Width.
* @param height Height.
*/
constructor(
public width: number,
public height: number,
) {}
/**
* Compares sizes for equality.
*
* @param a A Size.
* @param b A Size.
* @returns True iff the sizes have equal widths and equal heights, or if both
* are null.
*/
static equals(a?: Size | null, b?: Size | null): boolean {
if (a === b) {
return true;
}
if (!a || !b) {
return false;
}
return a.width === b.width && a.height === b.height;
}
/**
* Returns a new size with the maximum width and height values out of both
* sizes.
*/
static max(a: Size, b: Size): Size {
return new Size(Math.max(a.width, b.width), Math.max(a.height, b.height));
}
/**
* Returns a new size with the minimum width and height values out of both
* sizes.
*/
static min(a: Size, b: Size): Size {
return new Size(Math.min(a.width, b.width), Math.min(a.height, b.height));
}
}