{"version":3,"file":"MyAppCreateForm-BfPO8Xnw.js","sources":["../../../app/javascript/hooks/useDatetimePickerData.ts","../../../app/javascript/components/templates/YoomDateTimePicker/YoomDateTimePicker.tsx","../../../app/javascript/components/templates/myApp/MyAppCreateForm.tsx"],"sourcesContent":["// @ts-nocheck\nimport moment from \"moment-timezone\";\nimport timeZoneMapping from \"../entries/_modules/time_zone/config\";\n\nexport const useDatetimePickerData = (year, month, date, hour, minute, datetime, timeZone) => {\n  const weeks = [0, 1, 2, 3, 4, 5, 6];\n  const stashDays = new Array(6);\n  let d = 1;\n  let w = 0;\n  stashDays[w] = [];\n  const day =\n    date > moment.tz([year, month, 1], timeZoneMapping[timeZone]).endOf(\"month\").date()\n      ? moment.tz([year, month, 1], timeZoneMapping[timeZone])\n      : moment.tz([year, month, date], timeZoneMapping[timeZone]);\n  const MonthAllDays = day.daysInMonth();\n  while (d <= MonthAllDays) {\n    let DateTimeFormat;\n    if (datetime) {\n      DateTimeFormat = [year, month, d, hour, minute];\n    } else {\n      DateTimeFormat = [year, month, d];\n    }\n\n    const current_day = d <= MonthAllDays ? moment.tz(DateTimeFormat, timeZoneMapping[timeZone]).day() : null;\n    weeks.forEach((_, i) => {\n      if (d === 1 && i < current_day) {\n        stashDays[w][i] = moment.tz(DateTimeFormat, timeZoneMapping[timeZone]).subtract(current_day - i, \"days\");\n      } else if (d === MonthAllDays && i > current_day) {\n        stashDays[w][i] = moment.tz(DateTimeFormat, timeZoneMapping[timeZone]).add(i - current_day, \"days\");\n      } else if (current_day !== null && i === current_day) {\n        stashDays[w][i] = moment.tz(DateTimeFormat, timeZoneMapping[timeZone]);\n      }\n    });\n\n    if (moment.tz(DateTimeFormat, timeZoneMapping[timeZone]).day() === 6 || (d === MonthAllDays && w < 5)) {\n      w += 1;\n      stashDays[w] = [];\n    }\n    d += 1;\n  }\n  if (stashDays[5] && !stashDays[5].length) {\n    const latestDate = stashDays[4][6];\n    weeks.forEach((_, i) => {\n      stashDays[5][i] = moment\n        .tz(\n          [latestDate.year(), latestDate.month(), latestDate.date(), latestDate.hour(), latestDate.minute()],\n          timeZoneMapping[timeZone],\n        )\n        .add(i + 1, \"days\");\n    });\n  }\n\n  return stashDays;\n};\n","// @ts-nocheck\nimport React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment-timezone\";\nimport style from \"./YoomDateTimePicker.module.scss\";\nimport { useDatetimePickerData } from \"../../../hooks/useDatetimePickerData\";\nimport { getImageUrl } from \"../../../commons/assets_path\";\nimport { useTranslation } from \"react-i18next\";\nimport timeZoneMapping from \"../../../entries/_modules/time_zone/config\";\n\nconst weeks = [0, 1, 2, 3, 4, 5, 6];\n\nexport const YoomDateTimePicker = ({\n  datetime,\n  target,\n  value = null,\n  setDateFormat,\n  open = false,\n  editCell = null,\n  keyFlag = false,\n  customSelectedStyle = \"\",\n  setKeyFlag,\n  timeZone,\n}) => {\n  const { t } = useTranslation();\n  const week_ja = [\n    t(\"YoomDateTimePicker.日\"),\n    t(\"YoomDateTimePicker.月\"),\n    t(\"YoomDateTimePicker.火\"),\n    t(\"YoomDateTimePicker.水\"),\n    t(\"YoomDateTimePicker.木\"),\n    t(\"YoomDateTimePicker.金\"),\n    t(\"YoomDateTimePicker.土\"),\n  ];\n\n  const [current, setCurrent] = useState(\n    value ? moment.tz(value, timeZoneMapping[timeZone]) : moment.tz(timeZoneMapping[timeZone]),\n  );\n  const [days, setDays] = useState([]);\n  const [year, setYear] = useState(current.year());\n  const [month, setMonth] = useState(current.month());\n  const [date, setDate] = useState(current.date());\n  const [hour, setHour] = useState(current.hours());\n  const [minute, setMinute] = useState(current.minute());\n  const [isOpen, setOpen] = useState(open);\n  const [fade, setFade] = useState(false);\n  const [wrapStyle, setStyle] = useState();\n  const [openPullDown, setOpenPullDown] = useState(false);\n  const [hourFocus, setHourFocus] = useState(false);\n  const [minuteFocus, setMinuteFocus] = useState(false);\n  const pullDownRef = useRef();\n\n  const format = datetime ? \"YYYY-MM-DD HH:mm\" : \"YYYY-MM-DD\";\n\n  const next = (month, year) => {\n    if (month < 11) {\n      setMonth(month + 1);\n    } else {\n      setMonth(0);\n      setYear(year + 1);\n    }\n  };\n\n  const prev = (month, year) => {\n    if (month > 0) {\n      setMonth(month - 1);\n    } else {\n      setMonth(11);\n      setYear(year - 1);\n    }\n  };\n\n  const timeHourInput = (hour) => {\n    hour = Number(hour);\n    if (hour >= 0) {\n      if (hour < 0 || hour > 23) {\n        hour = 0;\n      }\n      setHour(hour);\n      const DateTime = [year, month, date, hour, minute];\n      setCurrent(moment.tz(DateTime, timeZoneMapping[timeZone]));\n      setDateFormat(moment.tz(DateTime, timeZoneMapping[timeZone]));\n      target.current.value = moment.tz(DateTime, timeZoneMapping[timeZone]).format(format);\n      target.current.focus();\n    }\n  };\n\n  const timeMinuteInput = (minute) => {\n    minute = Number(minute);\n    if (minute >= 0) {\n      if (minute < 0 || minute > 59) {\n        minute = 0;\n      }\n      setMinute(minute);\n      const DateTime = [year, month, date, hour, minute];\n      setCurrent(moment.tz(DateTime, timeZoneMapping[timeZone]));\n      setDateFormat(moment.tz(DateTime, timeZoneMapping[timeZone]));\n      target.current.value = moment.tz(DateTime, timeZoneMapping[timeZone]).format(format);\n    }\n  };\n\n  const select = (date) => {\n    if (date.month() !== month) {\n      setMonth(date.month());\n      setYear(date.year());\n    }\n    setCurrent(date);\n    setDate(date.date());\n    setDateFormat(date);\n    target.current.value = moment.tz(date, timeZoneMapping[timeZone]).format(format);\n    if (editCell !== null) {\n      target.current.focus();\n    }\n    target.current.focus();\n  };\n\n  useEffect(() => {\n    if (keyFlag) {\n      setOpenPullDown(false);\n      setKeyFlag(false);\n    }\n    function onFocus() {\n      setOpen(true);\n    }\n\n    function onBlur() {\n      setOpen(false);\n    }\n\n    function onMouseOver() {\n      if (!keyFlag) {\n        target.current.focus();\n        setOpenPullDown(true);\n        setOpen(true);\n      }\n    }\n\n    function onMouseOut() {\n      setOpenPullDown(false);\n    }\n\n    if (target.current) {\n      const offsetHeight = target.current.offsetHeight;\n      setStyle({\n        position: \"absolute\",\n        top: `${offsetHeight === 0 ? 34 : offsetHeight}px`,\n        bottom: \"auto\",\n      });\n      target.current.addEventListener(\"focus\", onFocus);\n      target.current.addEventListener(\"click\", onFocus);\n      target.current.addEventListener(\"blur\", onBlur);\n    }\n\n    pullDownRef.current.addEventListener(\"mouseover\", onMouseOver);\n    pullDownRef.current.addEventListener(\"mouseout\", onMouseOut);\n  }, [target.current, keyFlag]);\n\n  useEffect(() => {\n    if (isOpen || openPullDown) {\n      if (!fade) {\n        setFade(true);\n      }\n    } else {\n      if (fade) {\n        setFade(false);\n      }\n    }\n  }, [isOpen, openPullDown]);\n  useEffect(() => {\n    if (editCell !== null) {\n      setFade(true);\n    }\n  }, [target.current]);\n\n  useEffect(() => {\n    const stashDays = useDatetimePickerData(year, month, date, hour, minute, datetime, timeZone);\n    setDays(stashDays);\n  }, [year, month, hour, minute, target]);\n\n  return (\n    <div ref={pullDownRef} className={style.dateTimePicker} style={{ display: fade ? \"block\" : \"none\" }}>\n      <div className=\"d-flex align-items-center\">\n        <div className={`d-flex flex-column align-items-center justify-content-center ${style.wrap}`} style={wrapStyle}>\n          <div className=\"d-flex align-items-center justify-content-around\">\n            <div className=\"d-flex flex-column align-items-center px-2 mr-1\">\n              <div className={`w-100 d-flex flex-row align-items-center justify-content-between ${style.header}`}>\n                <button type=\"button\" className={style.resetBtn} onClick={() => prev(month, year)}>\n                  <img src={getImageUrl(`images/icons/datetimepicker/date_prev.svg`)} />\n                </button>\n                <h4 className={`m-0 ${style.title}`}>\n                  {year}/{(month + 1).toString().padStart(2, 0)}\n                </h4>\n                <button type=\"button\" className={style.resetBtn} onClick={() => next(month, year)}>\n                  <img src={getImageUrl(`images/icons/datetimepicker/date_next.svg`)} />\n                </button>\n              </div>\n              <table className={style.table}>\n                <thead>\n                  <tr>\n                    {weeks.map((day, day_i) => (\n                      <th key={day_i}>{week_ja[day] ? week_ja[day] : ``}</th>\n                    ))}\n                  </tr>\n                </thead>\n                <tbody>\n                  {days.map((week, idx) => (\n                    <tr key={idx}>\n                      {week.map((moment, i) => (\n                        <td\n                          key={i}\n                          align=\"center\"\n                          className={`${style.td} ${\n                            month === moment.month() &&\n                            moment.month() === current.month() &&\n                            moment.date() === current.date()\n                              ? `${customSelectedStyle || style.selected}`\n                              : \"\"\n                          } ${moment.month() !== month ? `${style.grayText}` : \"\"} test-datetime-picker`}\n                          onClick={() => select(moment)}\n                        >\n                          {moment.date()}\n                        </td>\n                      ))}\n                    </tr>\n                  ))}\n                </tbody>\n              </table>\n            </div>\n            {datetime && (\n              <div className=\"d-flex align-items-center px-2 ml-1\">\n                <div className=\"d-flex flex-column align-items-center\">\n                  <button\n                    type=\"button\"\n                    className={`${style.resetBtn} my-3`}\n                    onClick={() => timeHourInput(hour - 1)}\n                    disabled={!(hour > 0)}\n                  >\n                    {hour > 0 ? (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timePrev.svg`)} />\n                    ) : (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timePrevDisabled.svg`)} />\n                    )}\n                  </button>\n                  <h1 onMouseOver={() => setHourFocus(true)} className={style.h1}>\n                    {hour.toString().padStart(2, 0)}\n                  </h1>\n                  <button\n                    type=\"button\"\n                    className={`${style.resetBtn} my-3`}\n                    onClick={() => timeHourInput(hour + 1)}\n                    disabled={!(hour < 23)}\n                  >\n                    {hour < 23 ? (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timeNext.svg`)} />\n                    ) : (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timeNextDisabled.svg`)} />\n                    )}\n                  </button>\n                </div>\n                <h1 className={style.timecorn}>:</h1>\n                <div className=\"d-flex flex-column align-items-center\">\n                  <button\n                    type=\"button\"\n                    className={`${style.resetBtn} my-3`}\n                    onClick={() => timeMinuteInput(minute - 1)}\n                    disabled={!(minute > 0)}\n                  >\n                    {minute > 0 ? (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timePrev.svg`)} />\n                    ) : (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timePrevDisabled.svg`)} />\n                    )}\n                  </button>\n                  <h1 onMouseOver={() => setMinuteFocus(true)} className={style.h1}>\n                    {minute.toString().padStart(2, 0)}\n                  </h1>\n                  <button\n                    type=\"button\"\n                    className={`${style.resetBtn} my-3`}\n                    onClick={() => timeMinuteInput(minute + 1)}\n                    disabled={!(minute < 59)}\n                  >\n                    {minute < 59 ? (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timeNext.svg`)} />\n                    ) : (\n                      <img src={getImageUrl(`images/icons/datetimepicker/timeNextDisabled.svg`)} />\n                    )}\n                  </button>\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nYoomDateTimePicker.propTypes = {\n  target: PropTypes.object,\n  datetime: PropTypes.bool,\n  value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  setDateFormat: PropTypes.func,\n  open: PropTypes.bool,\n  editCell: PropTypes.func,\n  keyFlag: PropTypes.bool,\n  setKeyFlag: PropTypes.func,\n  customSelectedStyle: PropTypes.string,\n  timeZone: PropTypes.string,\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport style from \"./MyApp.module.scss\";\nimport { YoomDateTimePicker } from \"../../templates/YoomDateTimePicker/YoomDateTimePicker\";\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { getImageUrl } from \"../../../commons/assets_path\";\nimport { Loader } from \"../../common/Loaders/Loader\";\nimport axios from \"axios\";\naxios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\nimport { useTranslation } from \"react-i18next\";\n\ntype Props = {\n  clientCode: string;\n  serviceCode: string;\n  serviceName: string;\n  modalRef: { show: boolean };\n  closeModal: () => void;\n  redirectUrl?: string;\n};\n\ntype ConfigVariable = {\n  id: number;\n  display_name: string;\n  translate_display_name: string;\n  data_type: string;\n  description: string;\n  translate_description: string;\n  default_value: string;\n  required: boolean;\n};\n\ntype MyApp = {\n  client_id: number;\n  owner_id: number;\n  service_name: string;\n  service_code: string;\n  connect_type: string;\n  account_id: string;\n  access_token: string;\n  expired_at: string;\n  client_certificate_file?: string;\n  client_certificate_file_password?: string;\n  options: { [key: string]: string };\n};\n\ntype AccessTokenOptions = {\n  display: boolean;\n  display_name: string;\n  translate_display_name: string;\n};\n\ntype Error = {\n  [key: string]: string[];\n};\n\ninterface Blob {\n  signed_id: string;\n}\n\ninterface Upload {\n  create: (callback: (error: Error | null, blob: Blob) => void) => void;\n}\n\nconst createUploadPromise = (upload: Upload): Promise<Blob> => {\n  return new Promise((resolve, reject) => {\n    upload.create((error, blob) => {\n      if (error) {\n        reject(error);\n      } else {\n        resolve(blob);\n      }\n    });\n  });\n};\n\nconst MyAppCreateForm = ({ clientCode, serviceCode, serviceName, modalRef, closeModal, redirectUrl }: Props) => {\n  const { t } = useTranslation();\n  const ref = useRef<HTMLInputElement>(null);\n  const [error, setError] = useState<Error>({});\n  const [formData, setFormData] = useState<MyApp | undefined>(undefined);\n  const [connectingServiceNote, setConnectingServiceNote] = useState<string>(\"\");\n  const [configVariables, setConfigVariables] = useState<ConfigVariable[]>([]);\n  const [directUploadsUrl, setDirectUploadsUrl] = useState<string>(\"\");\n  const [isClientCertificateAuthConfigEnabled, setIsClientCertificateAuthConfigEnabled] = useState<boolean>(false);\n  const [accessTokenOptions, setAccessTokenOptions] = useState<AccessTokenOptions>({\n    display: false,\n    display_name: null,\n    translate_display_name: null,\n  });\n  const [loading, setLoading] = useState<boolean>(true);\n\n  const handleFileUpload = async (e: React.ChangeEvent<HTMLInputElement>): Promise<void> => {\n    if (!formData) return;\n    const file = e.target.files?.[0];\n    if (file) {\n      const upload = new DirectUpload(file, directUploadsUrl);\n      try {\n        const blob = await createUploadPromise(upload);\n        setFormData({ ...formData, client_certificate_file: blob.signed_id });\n      } catch (error) {\n        // 何もしない\n      }\n    }\n  };\n\n  const createMyApp = async () => {\n    if (!formData) return;\n    const path =\n      formData.connect_type === \"oauth\" ? `/${clientCode}/my_apps/oauth2_authorize` : `/${clientCode}/my_apps`;\n    await axios\n      .post(path, { my_app: formData })\n      .then((response) => {\n        if (response.data.redirect_url) {\n          window.location.href = response.data.redirect_url;\n        }\n      })\n      .catch((error) => {\n        if (error.response?.status === 422) {\n          setError(error.response.data.errors);\n        }\n      });\n  };\n\n  useEffect(() => {\n    const fetchData = async () => {\n      try {\n        const path = `/${clientCode}/my_apps/new`;\n        const params = redirectUrl\n          ? { service_code: serviceCode, previous_url: redirectUrl }\n          : { service_code: serviceCode };\n        const response = await axios.get(path, { params: params });\n        setConnectingServiceNote(response.data.connecting_service_note);\n        setConfigVariables(response.data.connect_config_variables);\n        setDirectUploadsUrl(response.data.direct_uploads_url);\n        const myApp = response.data.my_app;\n        setIsClientCertificateAuthConfigEnabled(response.data.is_client_certificate_auth_config_enabled);\n        setAccessTokenOptions(response.data.access_token_options);\n        if (myApp) {\n          setFormData({\n            client_id: myApp.client_id,\n            owner_id: myApp.owner_id,\n            service_name: myApp.service_name,\n            service_code: myApp.service_code,\n            connect_type: myApp.connect_type,\n            account_id: myApp.connect_type === \"oauth\" ? myApp.account_id : \"\",\n            access_token: myApp.access_token || \"\",\n            expired_at: myApp.expired_at,\n            options: {},\n            ...(isClientCertificateAuthConfigEnabled && {\n              client_certificate_file: myApp.client_certificate_file || \"\",\n              client_certificate_file_password: myApp.client_certificate_file_password || \"\",\n            }),\n          });\n        }\n      } catch (error) {\n        // 何もしない\n      }\n    };\n\n    const handleTrixContent = () => {\n      const trix = document.querySelector(\".js-trix-content\");\n      if (trix) {\n        const links = trix.querySelectorAll(\"a\");\n        links.forEach((link) => {\n          link.setAttribute(\"target\", \"_blank\");\n          link.setAttribute(\"rel\", \"noopener noreferrer\");\n        });\n        const files = trix.querySelectorAll(\"ul, ol, dl, .attachment, .attachment__caption\");\n        files.forEach((file) => {\n          const brTags = file.querySelectorAll(\"br\");\n          brTags.forEach((br) => br.remove());\n        });\n      }\n    };\n    if (modalRef.show) {\n      fetchData();\n      handleTrixContent();\n      setLoading(false);\n    }\n  }, [modalRef.show]);\n\n  return (\n    <>\n      {/* @ts-ignore */}\n      <Modal\n        show={modalRef.show}\n        onHide={closeModal}\n        scrollable\n        size=\"lg\"\n        centered\n        animation={false}\n        contentClassName={style.modalContent}\n      >\n        {/* @ts-ignore */}\n        <Modal.Header>\n          {/* @ts-ignore */}\n          <Modal.Title style={{ fontSize: \"20px\", marginBottom: \"16px\" }}>\n            {serviceName}\n            {t(\"MyAppCreateForm.の新規登録\")}\n          </Modal.Title>\n        </Modal.Header>\n        {/* @ts-ignore */}\n        <Modal.Body>\n          {loading || !formData ? (\n            <>\n              {/* @ts-ignore */}\n              <Loader loaderColor=\"yoom-green\" />\n            </>\n          ) : (\n            <>\n              <div className=\"form-group\">\n                <div className=\"js-trix-content\" dangerouslySetInnerHTML={{ __html: connectingServiceNote }}></div>\n              </div>\n              {error?.base && (\n                <ul className=\"border yoom-danger-border\">\n                  <li className=\"yoom-text-error list-unstyled\">{error.base}</li>\n                </ul>\n              )}\n              {formData.connect_type !== \"oauth\" && (\n                <div className=\"form-group\">\n                  <div className={style.inputLabel}>\n                    {t(\"MyAppCreateForm.アカウント名\")}\n                    <img src={getImageUrl(\"images/icons/asterisk.svg\")} />\n                    <span className={style.requiredText}>{t(\"MyAppCreateForm.必須\")}</span>\n                  </div>\n                  <input\n                    type=\"text\"\n                    id=\"my_app_account_id\"\n                    className={`form-control${error?.account_id ? \" is-invalid\" : \"\"}`}\n                    name=\"my_app[account_id]\"\n                    onChange={(e) => setFormData({ ...formData, account_id: e.target.value })}\n                  />\n                  {error?.account_id && <div className=\"invalid-feedback\">{error.account_id.join(\",\")}</div>}\n                </div>\n              )}\n              {accessTokenOptions.display && (\n                <div className=\"form-group\">\n                  <div className={style.inputLabel}>\n                    {accessTokenOptions.translate_display_name\n                      ? accessTokenOptions.translate_display_name\n                      : t(\"MyAppCreateForm.アクセストークン\")}\n                    <img src={getImageUrl(\"images/icons/asterisk.svg\")} />\n                    <span className={style.requiredText}>{t(\"MyAppCreateForm.必須\")}</span>\n                  </div>\n                  <input\n                    type=\"text\"\n                    id=\"my_app_access_token\"\n                    className={`form-control${error?.access_token ? \" is-invalid\" : \"\"}`}\n                    name=\"my_app[access_token]\"\n                    onChange={(e) => setFormData({ ...formData, access_token: e.target.value })}\n                  />\n                  {error?.access_token && <div className=\"invalid-feedback\">{error.access_token.join(\",\")}</div>}\n                </div>\n              )}\n              {configVariables.map((configVariable) => (\n                <div key={configVariable.id}>\n                  {configVariable.data_type === \"hidden\" ? (\n                    <div className=\"form-group\">\n                      <input\n                        type=\"hidden\"\n                        name={`my_app[options][${configVariable.display_name}]`}\n                        value={configVariable.default_value}\n                      />\n                    </div>\n                  ) : (\n                    <>\n                      <div className=\"form-group\">\n                        <div className={style.inputLabel}>\n                          {configVariable.translate_display_name}\n                          {configVariable.required && (\n                            <>\n                              <img src={getImageUrl(\"images/icons/asterisk.svg\")} />\n                              <span className={style.requiredText}>{t(\"MyAppCreateForm.必須\")}</span>\n                            </>\n                          )}\n                        </div>\n                        {configVariable.data_type === \"text\" && (\n                          <input\n                            type=\"text\"\n                            className={`test-my_app_option_value form-control ${\n                              error?.[`options[${configVariable.display_name}]`] ? \"is-invalid\" : \"\"\n                            }`}\n                            name={`my_app[options][${configVariable.display_name}]`}\n                            onChange={(e) =>\n                              setFormData({\n                                ...formData,\n                                options: { ...formData.options, [configVariable.display_name]: e.target.value },\n                              })\n                            }\n                          />\n                        )}\n                        {configVariable.data_type === \"long_text\" && (\n                          <textarea\n                            className={`test-my_app_option_value form-control ${\n                              error?.[`options[${configVariable.display_name}]`] ? \"is-invalid\" : \"\"\n                            }`}\n                            name={`my_app[options][${configVariable.display_name}]`}\n                            onChange={(e) =>\n                              setFormData({\n                                ...formData,\n                                options: { ...formData.options, [configVariable.display_name]: e.target.value },\n                              })\n                            }\n                          />\n                        )}\n                        {configVariable.data_type === \"number\" && (\n                          <input\n                            type=\"number\"\n                            className={`test-my_app_option_value form-control ${\n                              error?.[`options[${configVariable.display_name}]`] ? \"is-invalid\" : \"\"\n                            }`}\n                            name={`my_app[options][${configVariable.display_name}]`}\n                            onChange={(e) =>\n                              setFormData({\n                                ...formData,\n                                options: { ...formData.options, [configVariable.display_name]: e.target.value },\n                              })\n                            }\n                          />\n                        )}\n                        {configVariable.data_type === \"date\" && (\n                          <>\n                            {/* @ts-ignore */}\n                            <YoomDateTimePicker datetime={false} target={ref} setDateFormat={() => {}} />\n                            <input\n                              ref={ref}\n                              type=\"text\"\n                              className={`test-my_app_option_value form-control ${\n                                error?.[`options[${configVariable.display_name}]`] ? \"is-invalid\" : \"\"\n                              }`}\n                              name={`my_app[options][${configVariable.display_name}]`}\n                              onChange={(e) =>\n                                setFormData({\n                                  ...formData,\n                                  options: { ...formData.options, [configVariable.display_name]: e.target.value },\n                                })\n                              }\n                              onFocus={() => {\n                                setFormData({\n                                  ...formData,\n                                  options: {\n                                    ...formData.options,\n                                    [configVariable.display_name]: ref.current?.value || \"\",\n                                  },\n                                });\n                              }}\n                            />\n                          </>\n                        )}\n                        {error?.[`options[${configVariable.display_name}]`] ? (\n                          <div className=\"invalid-feedback\">{error[`options[${configVariable.display_name}]`]}</div>\n                        ) : (\n                          <small className=\"form-text text-muted\">{configVariable.translate_description}</small>\n                        )}\n                      </div>\n                    </>\n                  )}\n                </div>\n              ))}\n              {isClientCertificateAuthConfigEnabled && (\n                <>\n                  <div className=\"form-group\">\n                    <div className={style.inputLabel}>{t(\"MyAppCreateForm.クライアント証明書ファイル\")}</div>\n                    <div className=\"custom-file\">\n                      <input\n                        className={`custom-file-input js-file_test_value ${\n                          error?.client_certificate_file ? \"is-invalid\" : \"\"\n                        }`}\n                        accept=\".pfx,.p12\"\n                        type=\"file\"\n                        name=\"my_app[client_certificate_file]\"\n                        id=\"my_app_client_certificate_file\"\n                        onChange={handleFileUpload}\n                      />\n                      <label className=\"custom-file-label\" htmlFor=\"my_app_client_certificate_file\">\n                        {t(\"MyAppCreateForm.ファイルを選択してください\")}\n                      </label>\n                      {error?.client_certificate_file ? (\n                        <div className=\"invalid-feedback\">{error.client_certificate_file.join(\",\")}</div>\n                      ) : (\n                        <small className=\"form-text text-muted\">\n                          {t(\"MyAppCreateForm.client_certificate_requirements_message\")}\n                        </small>\n                      )}\n                    </div>\n                  </div>\n                  <div className=\"form-group\">\n                    <div className={style.inputLabel}>{t(\"MyAppCreateForm.クライアント証明書ファイルパスワード\")}</div>\n                    <input\n                      type=\"text\"\n                      className={`form-control ${error?.client_certificate_file_password ? \" is-invalid\" : \"\"}`}\n                      name=\"my_app[client_certificate_file_password]\"\n                      id=\"my_app_client_certificate_file_password\"\n                      onChange={(e) => setFormData({ ...formData, client_certificate_file_password: e.target.value })}\n                    />\n                    {error?.client_certificate_file_password ? (\n                      <div className=\"invalid-feedback\">{error.client_certificate_file_password.join(\",\")}</div>\n                    ) : (\n                      <small className=\"form-text text-muted\">\n                        {t(\"MyAppCreateForm.クライアント証明書認証を設定されている場合のみ必須です。\")}\n                      </small>\n                    )}\n                  </div>\n                </>\n              )}\n            </>\n          )}\n        </Modal.Body>\n        {/* @ts-ignore */}\n        <Modal.Footer>\n          <button type=\"button\" onClick={closeModal} className=\"btn btn-secondary\">\n            {t(\"MyAppCreateForm.キャンセル\")}\n          </button>\n          <button type=\"button\" onClick={createMyApp} className=\"btn btn-info\">\n            {t(\"MyAppCreateForm.追加\")}\n          </button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default MyAppCreateForm;\n"],"names":["useDatetimePickerData","year","month","date","hour","minute","datetime","timeZone","weeks","stashDays","d","w","MonthAllDays","moment","timeZoneMapping","DateTimeFormat","current_day","_","i","latestDate","YoomDateTimePicker","target","value","setDateFormat","open","editCell","keyFlag","customSelectedStyle","setKeyFlag","t","useTranslation","week_ja","current","setCurrent","useState","days","setDays","setYear","setMonth","setDate","setHour","setMinute","isOpen","setOpen","fade","setFade","wrapStyle","setStyle","openPullDown","setOpenPullDown","hourFocus","setHourFocus","minuteFocus","setMinuteFocus","pullDownRef","useRef","format","next","prev","timeHourInput","DateTime","timeMinuteInput","select","useEffect","onFocus","onBlur","onMouseOver","onMouseOut","offsetHeight","jsx","style","jsxs","getImageUrl","day","day_i","week","idx","PropTypes","axios","createUploadPromise","upload","resolve","reject","error","blob","MyAppCreateForm","clientCode","serviceCode","serviceName","modalRef","closeModal","redirectUrl","ref","setError","formData","setFormData","connectingServiceNote","setConnectingServiceNote","configVariables","setConfigVariables","directUploadsUrl","setDirectUploadsUrl","isClientCertificateAuthConfigEnabled","setIsClientCertificateAuthConfigEnabled","accessTokenOptions","setAccessTokenOptions","loading","setLoading","handleFileUpload","e","file","_a","DirectUpload","createMyApp","path","response","fetchData","params","myApp","handleTrixContent","trix","link","br","Fragment","Modal","Loader","configVariable"],"mappings":"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"}