// #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 { Disableable } from '../../../Behaviors/Disableable';
import { Labelable } from '../../../Behaviors/Labelable';
import { Orientable } from '../../../Behaviors/Orientable';
import { Sizeable } from '../../../Behaviors/Sizeable';
import { Slottable } from '../../../Behaviors/Slottable';
import { Themeable } from '../../../Behaviors/Themeable';
import { addInheritanceConsumerController } from '../../../Controllers/InheritanceConsumerController';
import { addInheritanceProviderController } from '../../../Controllers/InheritanceProviderController';
import { Component } from '../../../Decorators/ComponentDecorator';
import { CustomElement } from '../../Abstracts/CustomElement';
import { actionbarGroupElementTemplate } from './ActionbarGroupElementTemplate';
import { ACTIONBAR_INHERITANCE_CONTEXT } from './ActionbarInheritanceContext';
import { actionbarGroupElementCosmopolitanStyle } from './Themes/ActionbarGroupElement.Cosmopolitan';
import { actionbarGroupElementJoyStyle } from './Themes/ActionbarGroupElement.Joy';
import { actionbarGroupElementMemphisStyle } from './Themes/ActionbarGroupElement.Memphis';
// #endregion
/**
 * Actionbar Group - A logical grouping container for related actionbar items.
 *
 * @description
 * The Actionbar Group component organizes related action items into a visually cohesive unit.
 * It is the structural grouping element of the Actionbar, representing a contextual subsection
 * that receives inherited Actionbar context (orientation, size, disabled) from the parent
 * Actionbar and forwards it to child items through the inheritance controller.
 *
 * The group supports an optional label to describe its purpose for semantic identification
 * and accessibility.
 *
 * @name Actionbar Group
 * @element mosaik-actionbar-group
 * @category Grouping
 *
 * @slot - The default slot for actionbar items
 *
 * @csspart root - The group container element
 * @csspart label - The optional group label element
 * @csspart content - The content container holding slotted items
 *
 * @cssprop {String} --actionbar-group-gap - Spacing between items within the group
 * @cssprop {String} --actionbar-group-padding-bottom - Bottom padding
 * @cssprop {String} --actionbar-group-padding-left - Left padding
 * @cssprop {String} --actionbar-group-padding-right - Right padding
 * @cssprop {String} --actionbar-group-padding-top - Top padding
 * @cssprop {String} --actionbar-group-label-color - Color of the group label text
 * @cssprop {String} --actionbar-group-label-font-size - Font size of the group label
 * @cssprop {String} --actionbar-group-label-font-weight - Font weight of the group label
 * @cssprop {String} --actionbar-group-transition-duration - Duration of transitions
 * @cssprop {String} --actionbar-group-transition-mode - Timing function for transitions
 * @cssprop {String} --actionbar-group-transition-property - CSS properties to transition
 *
 * @example
 * Group of clipboard actions with a label:
 * ```html
 * <mosaik-actionbar>
 *   <mosaik-actionbar-group label="Clipboard">
 *     <mosaik-actionbar-item>
 *       <mosaik-button label="Cut"></mosaik-button>
 *     </mosaik-actionbar-item>
 *     <mosaik-actionbar-item>
 *       <mosaik-button label="Copy"></mosaik-button>
 *     </mosaik-actionbar-item>
 *   </mosaik-actionbar-group>
 * </mosaik-actionbar>
 * ```
 *
 * @public
 */
let ActionbarGroupElement = class ActionbarGroupElement extends Themeable(Sizeable(Orientable(Labelable(Disableable(Slottable(CustomElement)))))) {
    // #region Fields
    _inheritance = addInheritanceConsumerController(this, {
        context: ACTIONBAR_INHERITANCE_CONTEXT
    });
    _provider = addInheritanceProviderController(this, {
        context: ACTIONBAR_INHERITANCE_CONTEXT,
        values: () => ({
            disabled: this.disabled,
            orientation: this.orientation,
            size: this.size
        })
    });
    // #endregion
    // #region Ctor
    /**
     * @public
     */
    constructor() {
        super();
    }
    // #endregion
    // #region Properties
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is() {
        return 'mosaik-actionbar-group';
    }
    /**
     * Gets or sets the `disabled` property.
     * Inherits from the parent actionbar if not explicitly set.
     *
     * @public
     * @override
     */
    get disabled() {
        return this._inheritance.get('disabled', super.disabled);
    }
    set disabled(value) {
        this._inheritance.markExplicit('disabled');
        super.disabled = value;
    }
    /**
     * 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;
    }
    /**
     * Gets or sets the `size` property.
     * Inherits from the parent actionbar if not explicitly set.
     *
     * @public
     * @override
     */
    get size() {
        return this._inheritance.get('size', super.size);
    }
    set size(value) {
        this._inheritance.markExplicit('size');
        super.size = value;
    }
};
ActionbarGroupElement = __decorate([
    Component({
        selector: 'mosaik-actionbar-group',
        template: actionbarGroupElementTemplate,
        themes: {
            joy: actionbarGroupElementJoyStyle,
            memphis: actionbarGroupElementMemphisStyle,
            cosmopolitan: actionbarGroupElementCosmopolitanStyle
        },
        host: {
            role: 'group'
        }
    }),
    __metadata("design:paramtypes", [])
], ActionbarGroupElement);
export { ActionbarGroupElement };
//# sourceMappingURL=ActionbarGroupElement.js.map