"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 fixtures_exports = {};
__export(fixtures_exports, {
  CustomComponent: () => CustomComponent,
  CustomComponentType: () => CustomComponentType,
  CustomComponentWithFallback: () => CustomComponentWithFallback,
  componentId: () => componentId,
  containerId: () => containerId,
  elementData: () => elementData,
  fallbackId: () => fallbackId,
  renderComponentSnapshot: () => renderComponentSnapshot
});
module.exports = __toCommonJS(fixtures_exports);
var import_jsx_runtime = require("react/jsx-runtime");
var import_react = require("react");
var import_react2 = require("@testing-library/react");
var import_react3 = require("../../../../react");
var Testing = __toESM(require("../../../testing"));
var import_MakeswiftComponent = require("../../../../runtimes/react/components/MakeswiftComponent");
var import_controls = require("@makeswift/controls");
const CustomComponentType = "CustomComponent";
const componentId = "component-id";
const containerId = "container-id";
const fallbackId = "fallback-id";
function CustomComponent({ text, suspend }) {
  if (suspend) {
    throw new Promise(() => {
    });
  }
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-testid": componentId, children: text });
}
function CustomComponentWithFallback(props) {
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-testid": fallbackId, children: "Loading..." }), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CustomComponent, { ...props }) });
}
const elementData = (props) => ({
  type: CustomComponentType,
  key: "0000-0000-0000-0000",
  props
});
async function renderComponentSnapshot(snapshot, component = CustomComponent, { builtinSuspense } = {}) {
  const runtime = new import_react3.ReactRuntime();
  runtime.registerComponent(component, {
    type: CustomComponentType,
    label: "Custom Component",
    builtinSuspense,
    props: {
      text: (0, import_controls.TextInput)({ defaultValue: "Default Text" }),
      suspend: (0, import_controls.Checkbox)({ defaultValue: false, label: "Suspend" })
    }
  });
  await (0, import_react.act)(
    async () => (0, import_react2.render)(
      /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Testing.ReactProvider, { runtime, siteVersion: null, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-testid": containerId, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
        import_MakeswiftComponent.MakeswiftComponent,
        {
          label: "Embedded Component",
          type: CustomComponentType,
          snapshot
        }
      ) }) })
    )
  );
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  CustomComponent,
  CustomComponentType,
  CustomComponentWithFallback,
  componentId,
  containerId,
  elementData,
  fallbackId,
  renderComponentSnapshot
});
//# sourceMappingURL=fixtures.js.map