"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 register_exports = {};
__export(register_exports, {
  registerComponent: () => registerComponent
});
module.exports = __toCommonJS(register_exports);
var import_controls = require("@makeswift/controls");
var import_prop_controllers = require("@makeswift/prop-controllers");
var import_constants = require("../constants");
var import_components_meta = require("../../../state/modules/components-meta");
var import_react = require("react");
var import_prop_controllers2 = require("@makeswift/prop-controllers");
function registerComponent(runtime) {
  return runtime.registerComponent(
    (0, import_react.lazy)(() => Promise.resolve().then(() => __toESM(require("./Carousel")))),
    {
      type: import_constants.MakeswiftComponentType.Carousel,
      label: "Carousel",
      icon: import_components_meta.ComponentIcon.Carousel,
      props: {
        id: (0, import_prop_controllers.ElementID)(),
        images: (0, import_prop_controllers.Images)({
          preset: [
            { key: "image-1", props: {} },
            { key: "image-2", props: {} },
            { key: "image-3", props: {} }
          ]
        }),
        width: (0, import_prop_controllers.Width)({
          format: import_prop_controllers.Width.Format.ClassName,
          defaultValue: { value: 400, unit: "px" }
        }),
        margin: (0, import_prop_controllers.Margin)({ format: import_prop_controllers.Margin.Format.ClassName }),
        pageSize: (0, import_prop_controllers.ResponsiveNumber)((props) => {
          const images = (0, import_prop_controllers.getImagesPropControllerDataImagesData)(
            props.images
          );
          const imagesLength = images?.length ?? 0;
          return {
            label: "Images shown",
            defaultValue: 1,
            min: 1,
            max: imagesLength,
            step: 1
          };
        }),
        step: (0, import_prop_controllers.ResponsiveNumber)((props, device) => {
          const pageSize = import_prop_controllers.ResponsiveNumber.fromPropData(
            props.pageSize
          );
          const pageSizeValue = (0, import_controls.findBreakpointOverride)(runtime.getBreakpoints(), pageSize, device)?.value ?? 1;
          return {
            label: "Step",
            defaultValue: 1,
            min: 1,
            max: pageSizeValue,
            step: 1
          };
        }),
        slideAlignment: (0, import_prop_controllers.ResponsiveIconRadioGroup)({
          label: "Alignment",
          options: [
            { label: "Top", value: "flex-start", icon: "VerticalAlignStart16" },
            { label: "Middle", value: "center", icon: "VerticalAlignMiddle16" },
            { label: "Bottom", value: "flex-end", icon: "VerticalAlignEnd16" }
          ],
          defaultValue: "center"
        }),
        gap: (0, import_prop_controllers.GapX)({
          label: "Gap",
          step: 5,
          defaultValue: { value: 0, unit: "px" }
        }),
        autoplay: (0, import_prop_controllers2.Checkbox)({ label: "Autoplay" }),
        delay: (0, import_prop_controllers.Number)((props) => ({
          label: "Delay",
          preset: 5,
          min: 1,
          step: 0.1,
          suffix: "seconds",
          hidden: !(0, import_prop_controllers2.getCheckboxPropControllerDataBoolean)(
            import_prop_controllers2.checkboxPropControllerDataSchema.optional().catch(void 0).parse(props.autoplay)
          )
        })),
        showArrows: (0, import_prop_controllers2.Checkbox)({ preset: true, label: "Show arrows" }),
        arrowPosition: (0, import_prop_controllers.ResponsiveIconRadioGroup)((props) => ({
          label: "Arrow position",
          options: [
            { label: "Inside", value: "inside", icon: "ArrowInside16" },
            { label: "Center", value: "center", icon: "ArrowCenter16" },
            { label: "Outside", value: "outside", icon: "ArrowOutside16" }
          ],
          defaultValue: "inside",
          hidden: (0, import_prop_controllers2.getCheckboxPropControllerDataBoolean)(
            import_prop_controllers2.checkboxPropControllerDataSchema.optional().catch(void 0).parse(props.showArrows)
          ) === false
        })),
        arrowColor: (0, import_prop_controllers.ResponsiveColor)((props) => ({
          label: "Arrow color",
          placeholder: "black",
          hidden: (0, import_prop_controllers2.getCheckboxPropControllerDataBoolean)(
            import_prop_controllers2.checkboxPropControllerDataSchema.optional().catch(void 0).parse(props.showArrows)
          ) === false
        })),
        arrowBackground: (0, import_prop_controllers.ResponsiveColor)((props) => ({
          label: "Arrow background",
          placeholder: "white",
          hidden: (0, import_prop_controllers2.getCheckboxPropControllerDataBoolean)(
            import_prop_controllers2.checkboxPropControllerDataSchema.optional().catch(void 0).parse(props.showArrows)
          ) === false
        })),
        showDots: (0, import_prop_controllers2.Checkbox)({ preset: true, label: "Show dots" }),
        dotColor: (0, import_prop_controllers.ResponsiveColor)((props) => ({
          label: "Dot color",
          placeholder: "black",
          hidden: (0, import_prop_controllers2.getCheckboxPropControllerDataBoolean)(
            import_prop_controllers2.checkboxPropControllerDataSchema.optional().catch(void 0).parse(props.showDots)
          ) === false
        })),
        slideBorder: (0, import_prop_controllers2.Border)({ format: import_prop_controllers2.Border.Format.ClassName }),
        slideBorderRadius: (0, import_prop_controllers.BorderRadius)({ format: import_prop_controllers.BorderRadius.Format.ClassName })
      }
    }
  );
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  registerComponent
});
//# sourceMappingURL=register.js.map