import canva from "../../canva.app.mjs";
import constants from "../../common/constants.mjs";
export default {
  key: "canva-create-design",
  name: "Create Design",
  description: "Creates a new Canva design. [See the documentation](https://www.canva.dev/docs/connect/api-reference/designs/create-design/)",
  version: "0.0.6",
  annotations: {
    destructiveHint: false,
    openWorldHint: true,
    readOnlyHint: false,
  },
  type: "action",
  props: {
    canva,
    designType: {
      type: "string",
      label: "Design Type",
      description: "The desired design type",
      reloadProps: true,
      options: constants.DESIGN_TYPE_OPTIONS,
    },
    title: {
      propDefinition: [
        canva,
        "title",
      ],
      optional: true,
    },
    assetId: {
      type: "string",
      label: "Asset ID",
      description: "The ID of the asset to add to the new design",
      optional: true,
    },
  },
  async additionalProps() {
    const props = {};
    if (!this.designType) {
      return props;
    }
    if (this.designType === "preset") {
      props.name = {
        type: "string",
        label: "Design Type Name",
        description: "The name of the design type",
        options: constants.DESIGN_TYPE_NAME_OPTIONS,
      };
    }
    if (this.designType === "custom") {
      props.width = {
        type: "integer",
        label: "Width",
        description: "The width of the design (in pixels). Minimum 40px, maximum 8000px",
      };
      props.height = {
        type: "integer",
        label: "Height",
        description: "The height of the design (in pixels). Minimum 40px, maximum 8000px",
      };
    }
    return props;
  },
  async run({ $ }) {
    const response = await this.canva.createDesign({
      $,
      data: {
        design_type: {
          type: this.designType,
          name: this.name,
          width: this.width,
          height: this.height,
        },
        title: this.title,
        asset_id: this.assetId,
      },
    });
    $.export("$summary", `Created design with ID: ${response.design.id}`);
    return response;
  },
};