import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
// Copyright 2019-2024, University of Colorado Boulder
/**
 * Either horizontal or vertical, with helper values.  Moved from Area Model Common on Nov 7, 2019
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 * @author Sam Reid (PhET Interactive Simulations)
 */
import Enumeration from './Enumeration.js';
import EnumerationValue from './EnumerationValue.js';
import phetCore from './phetCore.js';
class Orientation extends EnumerationValue {
    static fromLayoutOrientation(layoutOrientation) {
        return layoutOrientation === 'horizontal' ? Orientation.HORIZONTAL : Orientation.VERTICAL;
    }
    constructor(coordinate, centerCoordinate, minCoordinate, maxCoordinate, minSide, maxSide, minSize, maxSize, rectCoordinate, rectSize, flowBoxOrientation, size, line, preferredSize, localPreferredSize, sizable, modelToView, viewToModel, toVector) {
        super();
        this.coordinate = coordinate;
        this.centerCoordinate = centerCoordinate;
        this.minCoordinate = minCoordinate;
        this.maxCoordinate = maxCoordinate;
        this.minSide = minSide;
        this.maxSide = maxSide;
        this.minSize = minSize;
        this.maxSize = maxSize;
        this.rectCoordinate = rectCoordinate;
        this.rectSize = rectSize;
        this.flowBoxOrientation = flowBoxOrientation;
        this.size = size;
        this.line = line;
        this.preferredSize = preferredSize;
        this.localPreferredSize = localPreferredSize;
        this.sizable = sizable;
        this.ariaOrientation = flowBoxOrientation;
        this.modelToView = modelToView;
        this.viewToModel = viewToModel;
        this.toVector = toVector;
    }
}
Orientation.HORIZONTAL = new Orientation('x', 'centerX', 'minX', 'maxX', 'left', 'right', 'minWidth', 'maxWidth', 'rectX', 'rectWidth', 'horizontal', 'width', 'column', 'preferredWidth', 'localPreferredWidth', 'widthSizable', (modelViewTransform, value) => modelViewTransform.modelToViewX(value), (modelViewTransform, value) => modelViewTransform.viewToModelX(value), 
// Pad with zeros to support up to Vector4
(a, b, VectorType) => new VectorType(a, b, 0, 0));
Orientation.VERTICAL = new Orientation('y', 'centerY', 'minY', 'maxY', 'top', 'bottom', 'minHeight', 'maxHeight', 'rectY', 'rectHeight', 'vertical', 'height', 'row', 'preferredHeight', 'localPreferredHeight', 'heightSizable', (modelViewTransform, value) => modelViewTransform.modelToViewY(value), (modelViewTransform, value) => modelViewTransform.viewToModelY(value), 
// Pad with zeros to support up to Vector4
(a, b, VectorType) => new VectorType(b, a, 0, 0));
Orientation.enumeration = new Enumeration(Orientation, {
    phetioDocumentation: 'Horizontal or vertical orientation'
});
// Set up opposites as object references (circular)
Orientation.HORIZONTAL.opposite = Orientation.VERTICAL;
Orientation.VERTICAL.opposite = Orientation.HORIZONTAL;
phetCore.register('Orientation', Orientation);
export default Orientation;
//# sourceMappingURL=Orientation.js.map