"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var toolbar_exports = {};
__export(toolbar_exports, {
  Toolbar: () => Toolbar
});
module.exports = __toCommonJS(toolbar_exports);
var import_react = __toESM(require("react"));
var import_ricos_context = require("./../../../ricos-context/index.js");
var import_models = require("../../models/index.js");
var import_filter_excessive_toolbar_separators = require("./filter-excessive-toolbar-separators.js");
var import_ricos_desktop_toolbar = require("./RicosDesktopToolbar/ricos-desktop-toolbar.js");
var import_ricos_mobile_toolbar = require("./RicosMobileToolbar/ricos-mobile-toolbar.js");
var import_transform_item_to_button = require("./transform-item-to-button.js");
var import_use_create_ricos_toolbar = require("./use-create-ricos-toolbar.js");
const Toolbar = ({
  toolbarItemsConfig,
  onLoad,
  toolbarItemsRenderers,
  overflownItemsPosition,
  type,
  alignment,
  onlyShownButtons,
  isMobile,
  maxWidth,
  ariaLabel
}) => {
  const toolbar = (0, import_use_create_ricos_toolbar.useCreateRicosToolbar)(toolbarItemsConfig);
  const { languageDir } = (0, import_react.useContext)(import_ricos_context.RicosContext);
  const isRTL = languageDir === "rtl";
  const visibleToolbarButtons = toolbar.toolbarItems.filter((item) => {
    const { disabled, visible, alwaysVisible } = item.attributes;
    if (alwaysVisible) {
      return true;
    }
    return type === "floating" ? !disabled && visible : visible;
  });
  const visibleButtonsKey = visibleToolbarButtons.map((item) => `${item.id}:${item.attributes.disabled ? "1" : "0"}`).join("|");
  const toolbarButtons = (0, import_react.useMemo)(() => {
    const visibleButtons = visibleToolbarButtons.map((toolbarItem, index) => {
      toolbarItem.presentation.tabIndex = index === 0 ? 0 : -1;
      return (0, import_transform_item_to_button.transformItemToButton)(toolbarItem, toolbarItemsRenderers);
    });
    const filtered = (0, import_filter_excessive_toolbar_separators.filterExcessiveToolbarSeparators)(visibleButtons);
    return new import_models.ToolbarButtons(filtered);
  }, [visibleButtonsKey, toolbarItemsRenderers]);
  (0, import_react.useEffect)(() => {
    onLoad?.(toolbar);
  }, [toolbar]);
  (0, import_react.useEffect)(() => {
    return () => {
      toolbar.destroyToolbarItems();
    };
  }, [toolbar]);
  if (isMobile) {
    return /* @__PURE__ */ import_react.default.createElement(
      import_ricos_mobile_toolbar.RicosMobileToolbar,
      {
        maxWidth,
        toolbarButtons,
        type,
        ariaLabel
      }
    );
  }
  return /* @__PURE__ */ import_react.default.createElement(
    import_ricos_desktop_toolbar.RicosDesktopToolbar,
    {
      type,
      maxWidth,
      toolbarButtons,
      isRTL,
      onlyShownButtons,
      overflownItemsPosition,
      alignment,
      ariaLabel
    }
  );
};
//# sourceMappingURL=toolbar.js.map
