{"version":3,"file":"useStepFormDialogButton.cjs","sources":["../../../../src/components/Dialog/ControlledStepFormDialog/useStepFormDialogButton.ts"],"sourcesContent":["import { type ReactNode, useMemo } from 'react'\n\nimport { useObjectAttributes } from '../../../hooks/useObjectAttributes'\n\nimport type { StepItem } from './StepFormDialogProvider'\n\ntype ButtonThemeType = 'primary' | 'secondary' | 'danger'\nexport type ButtonArgType =\n  | ReactNode\n  | ((currentStep: StepItem, defaultText: ReactNode) => ReactNode)\ntype VariableFunctionType<T> = (currentStep: StepItem) => T\nexport type ObjectButtonType = {\n  text?: ButtonArgType\n  /** ボタンを非表示にするかどうか */\n  hidden?: boolean | VariableFunctionType<boolean>\n  /** ボタンを無効にするかどうか */\n  disabled?: boolean | VariableFunctionType<boolean>\n  /** ボタンのスタイル */\n  theme?: ButtonThemeType | VariableFunctionType<ButtonThemeType>\n}\n\nconst buttonObjectConverter = (text: ButtonArgType): ObjectButtonType => ({\n  text,\n})\n\ntype Props = {\n  button: ButtonArgType | ObjectButtonType\n  currentStep: StepItem\n  defaultValues: {\n    text: ReactNode\n    theme?: ButtonThemeType\n  }\n}\n\nexport const useStepFormDialogButton = ({\n  button,\n  currentStep,\n  defaultValues: { text: defaultText, theme: defaultTheme },\n}: Props) => {\n  const temp = useObjectAttributes<ButtonArgType | ObjectButtonType, ObjectButtonType>(\n    button,\n    buttonObjectConverter,\n  )\n\n  const actualButton = useMemo(() => {\n    let text = temp.text ?? defaultText\n    let textFunc = false\n\n    if (typeof text === 'function') {\n      textFunc = true\n      text = text(currentStep, defaultText)\n    }\n\n    const tempTheme = temp.theme || defaultTheme\n    const theme = typeof tempTheme === 'function' ? tempTheme(currentStep) : tempTheme\n    const disabled =\n      typeof temp.disabled === 'function' ? temp.disabled(currentStep) : temp.disabled\n    const hidden = typeof temp.hidden === 'function' ? temp.hidden(currentStep) : temp.hidden\n\n    return {\n      text,\n      theme,\n      disabled,\n      hidden,\n      functionCall: {\n        text: textFunc,\n      },\n    }\n  }, [currentStep, temp, defaultText, defaultTheme])\n\n  return actualButton\n}\n"],"names":["useObjectAttributes","useMemo"],"mappings":";;;;;AAqBA,MAAM,qBAAqB,GAAG,CAAC,IAAmB,MAAwB;IACxE,IAAI;AACL,CAAA,CAAC;MAWW,uBAAuB,GAAG,CAAC,EACtC,MAAM,EACN,WAAW,EACX,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GACnD,KAAI;IACV,MAAM,IAAI,GAAGA,6CAAmB,CAC9B,MAAM,EACN,qBAAqB,CACtB;AAED,IAAA,MAAM,YAAY,GAAGC,aAAO,CAAC,MAAK;AAChC,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW;QACnC,IAAI,QAAQ,GAAG,KAAK;AAEpB,QAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,QAAQ,GAAG,IAAI;AACf,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;QACvC;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY;AAC5C,QAAA,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS;QAClF,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ;QAClF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM;QAEzF,OAAO;YACL,IAAI;YACJ,KAAK;YACL,QAAQ;YACR,MAAM;AACN,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAElD,IAAA,OAAO,YAAY;AACrB;;;;"}