// #region Imports
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Orientable } from '../../../Behaviors/Orientable';
import { Themeable } from '../../../Behaviors/Themeable';
import { addInheritanceConsumerController } from '../../../Controllers/InheritanceConsumerController';
import { Component } from '../../../Decorators/ComponentDecorator';
import { CustomElement } from '../../Abstracts/CustomElement';
import { ACTIONBAR_INHERITANCE_CONTEXT } from './ActionbarInheritanceContext';
import { actionbarSeparatorElementTemplate } from './ActionbarSeparatorElementTemplate';
import { actionbarSeparatorElementCosmopolitanStyle } from './Themes/ActionbarSeparatorElement.Cosmopolitan';
import { actionbarSeparatorElementJoyStyle } from './Themes/ActionbarSeparatorElement.Joy';
import { actionbarSeparatorElementMemphisStyle } from './Themes/ActionbarSeparatorElement.Memphis';
// #endregion
/**
 * Actionbar Separator - A visual divider between actionbar groups.
 *
 * @description
 * The Actionbar Separator component provides a visual boundary between groups of
 * actions within an actionbar. It automatically adapts its orientation based on the
 * parent actionbar's orientation, rendering as a vertical line in horizontal actionbars
 * and a horizontal line in vertical actionbars.
 *
 * @name Actionbar Separator
 * @element mosaik-actionbar-separator
 * @category Grouping
 *
 * @csspart root - The separator line element
 *
 * @cssprop {String} --actionbar-separator-background-color - Color of the separator line
 * @cssprop {String} --actionbar-separator-thickness - Thickness of the separator line
 * @cssprop {String} --actionbar-separator-transition-duration - Duration of transitions
 * @cssprop {String} --actionbar-separator-transition-mode - Timing function for transitions
 * @cssprop {String} --actionbar-separator-transition-property - CSS properties to transition
 *
 * @example
 * Separator between groups in a horizontal actionbar:
 * ```html
 * <mosaik-actionbar>
 *   <mosaik-actionbar-group>
 *     <mosaik-actionbar-item>
 *       <mosaik-button label="Copy"></mosaik-button>
 *     </mosaik-actionbar-item>
 *   </mosaik-actionbar-group>
 *   <mosaik-actionbar-separator></mosaik-actionbar-separator>
 *   <mosaik-actionbar-group>
 *     <mosaik-actionbar-item>
 *       <mosaik-button label="Paste"></mosaik-button>
 *     </mosaik-actionbar-item>
 *   </mosaik-actionbar-group>
 * </mosaik-actionbar>
 * ```
 *
 * @public
 */
let ActionbarSeparatorElement = class ActionbarSeparatorElement extends Themeable(Orientable(CustomElement)) {
    // #region Fields
    _inheritance = addInheritanceConsumerController(this, {
        context: ACTIONBAR_INHERITANCE_CONTEXT
    });
    // #endregion
    // #region Ctor
    /**
     * @public
     */
    constructor() {
        super();
    }
    // #endregion
    // #region Properties
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is() {
        return 'mosaik-actionbar-separator';
    }
    /**
     * Gets or sets the `orientation` property.
     * Inherits from the parent actionbar if not explicitly set.
     *
     * @public
     * @override
     */
    get orientation() {
        return this._inheritance.get('orientation', super.orientation);
    }
    set orientation(value) {
        this._inheritance.markExplicit('orientation');
        super.orientation = value;
    }
};
ActionbarSeparatorElement = __decorate([
    Component({
        selector: 'mosaik-actionbar-separator',
        template: actionbarSeparatorElementTemplate,
        themes: {
            joy: actionbarSeparatorElementJoyStyle,
            memphis: actionbarSeparatorElementMemphisStyle,
            cosmopolitan: actionbarSeparatorElementCosmopolitanStyle
        },
        host: {
            role: 'separator'
        }
    }),
    __metadata("design:paramtypes", [])
], ActionbarSeparatorElement);
export { ActionbarSeparatorElement };
//# sourceMappingURL=ActionbarSeparatorElement.js.map