/**
 * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
 * Node module: @schukai/monster
 *
 * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
 * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
 *
 * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
 * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
 * For more information about purchasing a commercial license, please contact schukai GmbH.
 *
 * SPDX-License-Identifier: AGPL-3.0
 */

import { ATTRIBUTE_PREFIX } from "../dom/constants.mjs";

/**
 * `data-monster-intend`
 *
 * @memberOf Monster.Components
 * @since 1.8.0
 * @type {string}
 */
const ATTRIBUTE_INTEND = ATTRIBUTE_PREFIX + "intend";

export { ATTRIBUTE_INTEND };

/**
 * @memberOf Monster.Components
 * @since 1.0.0
 * @type {string}
 */
const STYLE_DISPLAY_MODE_BLOCK = "block";

/**
 * This attribute `data-monster-datasource` can be used to pass a datasource.
 *
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATASOURCE = `${ATTRIBUTE_PREFIX}datasource`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATASOURCE_SELECTOR = `${ATTRIBUTE_DATASOURCE}-selector`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_GRID_TEMPLATE = `${ATTRIBUTE_PREFIX}grid-template`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_HEAD = `${ATTRIBUTE_PREFIX}head`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_ALIGN = `${ATTRIBUTE_PREFIX}align`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_SORTABLE = `${ATTRIBUTE_PREFIX}sortable`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_INDEX = `${ATTRIBUTE_PREFIX}index`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_MODE = `${ATTRIBUTE_PREFIX}mode`;

/**
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_RESPONSIVE_BREAKPOINT = `${ATTRIBUTE_PREFIX}responsive-breakpoint`;

/**
 * This attribute `data-monster-datasource-arguments` can be used to pass arguments.
 *
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATASOURCE_ARGUMENTS = `${ATTRIBUTE_DATASOURCE}-arguments`;

/**
 * Column is not hideable and visible
 *
 * @private
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_MODE_FIXED = "fixed";

/**
 * Column is hidden
 *
 * @private
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_MODE_HIDDEN = "hidden";

/**
 * Column is visible
 *
 * @private
 * @memberOf Monster.Components
 * @type {string}
 */
const ATTRIBUTE_DATATABLE_MODE_VISIBLE = "visible";

export {
	ATTRIBUTE_DATASOURCE,
	ATTRIBUTE_DATASOURCE_SELECTOR,
	ATTRIBUTE_DATASOURCE_ARGUMENTS,
	ATTRIBUTE_DATATABLE_GRID_TEMPLATE,
	ATTRIBUTE_DATATABLE_HEAD,
	ATTRIBUTE_DATATABLE_SORTABLE,
	ATTRIBUTE_DATATABLE_MODE,
	ATTRIBUTE_DATATABLE_INDEX,
	ATTRIBUTE_DATATABLE_ALIGN,
	ATTRIBUTE_DATATABLE_MODE_FIXED,
	ATTRIBUTE_DATATABLE_RESPONSIVE_BREAKPOINT,
	ATTRIBUTE_DATATABLE_MODE_VISIBLE,
	ATTRIBUTE_DATATABLE_MODE_HIDDEN,
	STYLE_DISPLAY_MODE_BLOCK,
};