import TextBasic from "./TextBasic";
import TextBasicRender, { TextBasicSave } from "./TextBasicRender";
import * as helpers from "./helpers";

// スタイルシートのパス
import "./style.scss";

export { TextBasic, TextBasicRender, TextBasicSave, helpers };

/**
 * テキスト設定の属性定義
 * ブロックのblock.jsonに追加するための属性定義
 */
export const textBasicAttributes = {
  // テキストコンテンツ
  caption: {
    type: "string",
    source: "html",
    selector: ".text-basic__caption",
    default: ""
  },
  title: {
    type: "string",
    source: "html", 
    selector: ".text-basic__title",
    default: ""
  },
  description: {
    type: "string",
    source: "html",
    selector: ".text-basic__description", 
    default: ""
  },
  titleTagName: {
    type: "string",
    default: "h2"
  },

  // フォントサイズ設定
  captionFontSize: {
    type: ["string", "number", "null"],
    default: "custom"
  },
  titleFontSize: {
    type: ["string", "number", "null"],
    default: "custom"
  },
  descriptionFontSize: {
    type: ["string", "number", "null"],
    default: "custom"
  },

  // カスタムフォントサイズ
  customCaptionFontSizePC: {
    type: "string",
    default: "14"
  },
  customCaptionFontSizeSP: {
    type: "string",
    default: "3.5"
  },
  customTitleFontSizePC: {
    type: "string",
    default: "48"
  },
  customTitleFontSizeSP: {
    type: "string",
    default: "12"
  },
  customDescriptionFontSizePC: {
    type: "string",
    default: "16"
  },
  customDescriptionFontSizeSP: {
    type: "string",
    default: "4"
  },

  // フォントサイズの単位
  captionFontSizeUnitPC: {
    type: "string",
    default: "px"
  },
  captionFontSizeUnitSP: {
    type: "string",
    default: "vw"
  },
  titleFontSizeUnitPC: {
    type: "string",
    default: "px"
  },
  titleFontSizeUnitSP: {
    type: "string",
    default: "vw"
  },
  descriptionFontSizeUnitPC: {
    type: "string",
    default: "px"
  },
  descriptionFontSizeUnitSP: {
    type: "string",
    default: "vw"
  },

  // 行間設定
  captionLineHeightPC: {
    type: "string",
    default: "1.5"
  },
  captionLineHeightSP: {
    type: "string",
    default: "1.5"
  },
  titleLineHeightPC: {
    type: "string",
    default: "1.2"
  },
  titleLineHeightSP: {
    type: "string",
    default: "1.2"
  },
  descriptionLineHeightPC: {
    type: "string",
    default: "1.6"
  },
  descriptionLineHeightSP: {
    type: "string",
    default: "1.6"
  },
  lineHeightUnitPC: {
    type: "string",
    default: ""
  },
  lineHeightUnitSP: {
    type: "string",
    default: ""
  },

  // 間隔設定
  captionToTitleSpacingPC: {
    type: "string",
    default: "16"
  },
  captionToTitleSpacingSP: {
    type: "string",
    default: "4"
  },
  titleToDescriptionSpacingPC: {
    type: "string",
    default: "16"
  },
  titleToDescriptionSpacingSP: {
    type: "string",
    default: "4"
  },
  descriptionMarginPC: {
    type: "string",
    default: "0"
  },
  descriptionMarginSP: {
    type: "string",
    default: "0"
  },
  spacingUnitPC: {
    type: "string",
    default: "px"
  },
  spacingUnitSP: {
    type: "string",
    default: "vw"
  },

  // 文字色設定
  captionColor: {
    type: "string",
    default: "#666666"
  },
  titleColor: {
    type: "string",
    default: "#2563eb"
  },
  descriptionColor: {
    type: "string",
    default: "#666666"
  },

  // フォントファミリー設定
  captionFontFamily: {
    type: "string",
    default: "noto-sans-jp"
  },
  titleFontFamily: {
    type: "string",
    default: "noto-sans-jp"
  },
  descriptionFontFamily: {
    type: "string",
    default: "noto-sans-jp"
  },

  // テキストシャドウ設定 - キャプション
  captionTextShadowEnabled: {
    type: "boolean",
    default: false
  },
  captionTextShadowOffsetX: {
    type: "string",
    default: "0"
  },
  captionTextShadowOffsetY: {
    type: "string",
    default: "0"
  },
  captionTextShadowBlur: {
    type: "string",
    default: "1"
  },
  captionTextShadowColor: {
    type: "string",
    default: "#000000"
  },

  // テキストシャドウ設定 - タイトル
  titleTextShadowEnabled: {
    type: "boolean",
    default: false
  },
  titleTextShadowOffsetX: {
    type: "string",
    default: "0"
  },
  titleTextShadowOffsetY: {
    type: "string",
    default: "0"
  },
  titleTextShadowBlur: {
    type: "string",
    default: "1"
  },
  titleTextShadowColor: {
    type: "string",
    default: "#000000"
  },

  // テキストシャドウ設定 - 説明
  descriptionTextShadowEnabled: {
    type: "boolean",
    default: false
  },
  descriptionTextShadowOffsetX: {
    type: "string",
    default: "0"
  },
  descriptionTextShadowOffsetY: {
    type: "string",
    default: "0"
  },
  descriptionTextShadowBlur: {
    type: "string",
    default: "1"
  },
  descriptionTextShadowColor: {
    type: "string",
    default: "#000000"
  }
};

export default {
  TextBasic,
  TextBasicRender,
  TextBasicSave,
  helpers,
  textBasicAttributes,
};
