"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 revisions_exports = {};
__export(revisions_exports, {
  default: () => revisions_default
});
module.exports = __toCommonJS(revisions_exports);
var import_jsx_runtime = require("react/jsx-runtime");
var import_components = require("@wordpress/components");
var import_i18n = require("@wordpress/i18n");
var import_block_editor = require("@wordpress/block-editor");
var import_editor = require("@wordpress/editor");
var import_data = require("@wordpress/data");
var import_element = require("@wordpress/element");
var import_lock_unlock = require("../../lock-unlock");
var import_editor_canvas_container = __toESM(require("../editor-canvas-container"));
const {
  ExperimentalBlockEditorProvider,
  GlobalStylesContext,
  useGlobalStylesOutputWithConfig,
  __unstableBlockStyleVariationOverridesWithConfig
} = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
const { mergeBaseAndUserConfigs } = (0, import_lock_unlock.unlock)(import_editor.privateApis);
function isObjectEmpty(object) {
  return !object || Object.keys(object).length === 0;
}
function Revisions({ userConfig, blocks }) {
  const { base: baseConfig } = (0, import_element.useContext)(GlobalStylesContext);
  const mergedConfig = (0, import_element.useMemo)(() => {
    if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
      return mergeBaseAndUserConfigs(baseConfig, userConfig);
    }
    return {};
  }, [baseConfig, userConfig]);
  const renderedBlocksArray = (0, import_element.useMemo)(
    () => Array.isArray(blocks) ? blocks : [blocks],
    [blocks]
  );
  const originalSettings = (0, import_data.useSelect)(
    (select) => select(import_block_editor.store).getSettings(),
    []
  );
  const settings = (0, import_element.useMemo)(
    () => ({
      ...originalSettings,
      isPreviewMode: true
    }),
    [originalSettings]
  );
  const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
  const editorStyles = !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : settings.styles;
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
    import_editor_canvas_container.default,
    {
      title: (0, import_i18n.__)("Revisions"),
      closeButtonLabel: (0, import_i18n.__)("Close revisions"),
      enableResizing: true,
      children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
        import_block_editor.__unstableIframe,
        {
          className: "edit-site-revisions__iframe",
          name: "revisions",
          tabIndex: 0,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", {
              // Forming a "block formatting context" to prevent margin collapsing.
              // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
              children: `.is-root-container { display: flow-root; }`
            }),
            /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Disabled, { className: "edit-site-revisions__example-preview__content", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
              ExperimentalBlockEditorProvider,
              {
                value: renderedBlocksArray,
                settings,
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockList, { renderAppender: false }),
                  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.__unstableEditorStyles, { styles: editorStyles }),
                  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
                    __unstableBlockStyleVariationOverridesWithConfig,
                    {
                      config: mergedConfig
                    }
                  )
                ]
              }
            ) })
          ]
        }
      )
    }
  );
}
var revisions_default = Revisions;
//# sourceMappingURL=index.js.map
