@tipp/ui 2.3.22 → 2.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.cjs +217 -195
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +78 -71
- package/dist/app/platform/coach-question-list.js +26 -26
- package/dist/app/platform/contents-card.js +26 -26
- package/dist/app/platform/curriculum-card.js +2 -2
- package/dist/app/platform/edit-coaching-time.cjs +47 -25
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +66 -59
- package/dist/app/platform/edit-service-type.cjs +42 -20
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +66 -59
- package/dist/app/platform/goal-manage-card-edit.cjs +50 -28
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +67 -60
- package/dist/app/platform/goal-manage-card-read.js +26 -26
- package/dist/app/platform/on-offline-radio-card.cjs +77 -55
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +66 -59
- package/dist/app/platform/report-card.js +26 -26
- package/dist/app/platform/reservation-card.cjs +66 -44
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +67 -60
- package/dist/app/platform/session-card.cjs +92 -70
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +67 -60
- package/dist/app/platform/session-review-simple-read.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +28 -28
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +25 -25
- package/dist/app/platform/userInfos/session-user-info-detail.js +25 -25
- package/dist/app/platform/userInfos/utils.js +25 -25
- package/dist/atoms/index.js +60 -60
- package/dist/chunk-2KOE33U7.js +245 -0
- package/dist/chunk-2KOE33U7.js.map +1 -0
- package/dist/chunk-2U5YD3BH.js +49 -0
- package/dist/chunk-2U5YD3BH.js.map +1 -0
- package/dist/chunk-2X3I7KDG.js +144 -0
- package/dist/chunk-2X3I7KDG.js.map +1 -0
- package/dist/chunk-2YSYS4AG.js +233 -0
- package/dist/chunk-2YSYS4AG.js.map +1 -0
- package/dist/chunk-35HQHUDU.js +228 -0
- package/dist/chunk-35HQHUDU.js.map +1 -0
- package/dist/chunk-3I55S6EP.js +89 -0
- package/dist/chunk-3I55S6EP.js.map +1 -0
- package/dist/chunk-3JADWKXT.js +230 -0
- package/dist/chunk-3JADWKXT.js.map +1 -0
- package/dist/chunk-3JDLAN5T.js +99 -0
- package/dist/chunk-3JDLAN5T.js.map +1 -0
- package/dist/chunk-3O2ARPTO.js +161 -0
- package/dist/chunk-3O2ARPTO.js.map +1 -0
- package/dist/chunk-3OO6ENQ4.js +228 -0
- package/dist/chunk-3OO6ENQ4.js.map +1 -0
- package/dist/chunk-45F3UCHR.js +222 -0
- package/dist/chunk-45F3UCHR.js.map +1 -0
- package/dist/chunk-4LUFF5LX.js +98 -0
- package/dist/chunk-4LUFF5LX.js.map +1 -0
- package/dist/chunk-4VV7VH5L.js +79 -0
- package/dist/chunk-4VV7VH5L.js.map +1 -0
- package/dist/chunk-5JCJ4QJO.js +245 -0
- package/dist/chunk-5JCJ4QJO.js.map +1 -0
- package/dist/chunk-5KZJMQCG.js +89 -0
- package/dist/chunk-5KZJMQCG.js.map +1 -0
- package/dist/chunk-5RAR3DG7.js +117 -0
- package/dist/chunk-5RAR3DG7.js.map +1 -0
- package/dist/chunk-5XOR7OPD.js +196 -0
- package/dist/chunk-5XOR7OPD.js.map +1 -0
- package/dist/chunk-5YESTYFF.js +79 -0
- package/dist/chunk-5YESTYFF.js.map +1 -0
- package/dist/chunk-64A2KJHN.js +276 -0
- package/dist/chunk-64A2KJHN.js.map +1 -0
- package/dist/chunk-6CSUU4L7.js +230 -0
- package/dist/chunk-6CSUU4L7.js.map +1 -0
- package/dist/chunk-6FKXUCHD.js +99 -0
- package/dist/chunk-6FKXUCHD.js.map +1 -0
- package/dist/chunk-6TQGX5ZU.js +98 -0
- package/dist/chunk-6TQGX5ZU.js.map +1 -0
- package/dist/chunk-6UXCNYVO.js +106 -0
- package/dist/chunk-6UXCNYVO.js.map +1 -0
- package/dist/chunk-6YZBHOXQ.js +226 -0
- package/dist/chunk-6YZBHOXQ.js.map +1 -0
- package/dist/chunk-7344ZPUM.js +117 -0
- package/dist/chunk-7344ZPUM.js.map +1 -0
- package/dist/chunk-77H5BUYO.js +55 -0
- package/dist/chunk-77H5BUYO.js.map +1 -0
- package/dist/chunk-7ABAJEJA.js +63 -0
- package/dist/chunk-7ABAJEJA.js.map +1 -0
- package/dist/chunk-7B5XAENQ.js +363 -0
- package/dist/chunk-7B5XAENQ.js.map +1 -0
- package/dist/chunk-7CQX7ELH.js +69 -0
- package/dist/chunk-7CQX7ELH.js.map +1 -0
- package/dist/chunk-7CRTGYJE.js +80 -0
- package/dist/chunk-7CRTGYJE.js.map +1 -0
- package/dist/chunk-7FIDFRJL.js +196 -0
- package/dist/chunk-7FIDFRJL.js.map +1 -0
- package/dist/chunk-7ITDAUWI.js +287 -0
- package/dist/chunk-7ITDAUWI.js.map +1 -0
- package/dist/chunk-7PQGETJT.js +69 -0
- package/dist/chunk-7PQGETJT.js.map +1 -0
- package/dist/chunk-7R65MUL6.js +106 -0
- package/dist/chunk-7R65MUL6.js.map +1 -0
- package/dist/chunk-7U5EZJOD.js +89 -0
- package/dist/chunk-7U5EZJOD.js.map +1 -0
- package/dist/chunk-7ZBZBOPI.js +63 -0
- package/dist/chunk-7ZBZBOPI.js.map +1 -0
- package/dist/chunk-A2FXUYSB.js +230 -0
- package/dist/chunk-A2FXUYSB.js.map +1 -0
- package/dist/chunk-A7CT5M2S.js +75 -0
- package/dist/chunk-A7CT5M2S.js.map +1 -0
- package/dist/chunk-A7JBBBBB.js +100 -0
- package/dist/chunk-A7JBBBBB.js.map +1 -0
- package/dist/chunk-AA6OYHCE.js +39 -0
- package/dist/chunk-AA6OYHCE.js.map +1 -0
- package/dist/chunk-ABMGYODX.js +196 -0
- package/dist/chunk-ABMGYODX.js.map +1 -0
- package/dist/chunk-ADLR7QZR.js +69 -0
- package/dist/chunk-ADLR7QZR.js.map +1 -0
- package/dist/chunk-ALETVN5F.js +245 -0
- package/dist/chunk-ALETVN5F.js.map +1 -0
- package/dist/chunk-ARJOCJVD.js +174 -0
- package/dist/chunk-ARJOCJVD.js.map +1 -0
- package/dist/chunk-ARVLB4CH.js +29 -0
- package/dist/chunk-ARVLB4CH.js.map +1 -0
- package/dist/chunk-B327EINU.js +43 -0
- package/dist/chunk-B327EINU.js.map +1 -0
- package/dist/chunk-B4TDMB52.js +226 -0
- package/dist/chunk-B4TDMB52.js.map +1 -0
- package/dist/chunk-BJZSGZ7H.js +63 -0
- package/dist/chunk-BJZSGZ7H.js.map +1 -0
- package/dist/chunk-BP5FU7EO.js +196 -0
- package/dist/chunk-BP5FU7EO.js.map +1 -0
- package/dist/chunk-BPMY3CDH.js +106 -0
- package/dist/chunk-BPMY3CDH.js.map +1 -0
- package/dist/chunk-C2ANXVMQ.js +221 -0
- package/dist/chunk-C2ANXVMQ.js.map +1 -0
- package/dist/chunk-C6BHVWJI.js +165 -0
- package/dist/chunk-C6BHVWJI.js.map +1 -0
- package/dist/chunk-CF3NAPUZ.js +196 -0
- package/dist/chunk-CF3NAPUZ.js.map +1 -0
- package/dist/chunk-CWRJOY56.js +245 -0
- package/dist/chunk-CWRJOY56.js.map +1 -0
- package/dist/chunk-D3H7YFTO.js +69 -0
- package/dist/chunk-D3H7YFTO.js.map +1 -0
- package/dist/chunk-DDAZ4IAG.js +689 -0
- package/dist/chunk-DDAZ4IAG.js.map +1 -0
- package/dist/chunk-DDVJMAYN.js +230 -0
- package/dist/chunk-DDVJMAYN.js.map +1 -0
- package/dist/chunk-DJ24574O.js +28 -0
- package/dist/chunk-DJ24574O.js.map +1 -0
- package/dist/chunk-DJCBLRLH.js +69 -0
- package/dist/chunk-DJCBLRLH.js.map +1 -0
- package/dist/chunk-DTHR4ABO.js +69 -0
- package/dist/chunk-DTHR4ABO.js.map +1 -0
- package/dist/chunk-DTK646M6.js +87 -0
- package/dist/chunk-DTK646M6.js.map +1 -0
- package/dist/chunk-DVZKRKWH.js +174 -0
- package/dist/chunk-DVZKRKWH.js.map +1 -0
- package/dist/chunk-E232GTT6.js +69 -0
- package/dist/chunk-E232GTT6.js.map +1 -0
- package/dist/chunk-E5W5TCRU.js +89 -0
- package/dist/chunk-E5W5TCRU.js.map +1 -0
- package/dist/chunk-EGTOU5MK.js +689 -0
- package/dist/chunk-EGTOU5MK.js.map +1 -0
- package/dist/chunk-EJAC46WB.js +39 -0
- package/dist/chunk-EJAC46WB.js.map +1 -0
- package/dist/chunk-F2I4LA63.js +51 -0
- package/dist/chunk-F2I4LA63.js.map +1 -0
- package/dist/chunk-F65P7KZI.js +98 -0
- package/dist/chunk-F65P7KZI.js.map +1 -0
- package/dist/chunk-F76YKHGP.js +245 -0
- package/dist/chunk-F76YKHGP.js.map +1 -0
- package/dist/chunk-FGX6IR4Q.js +68 -0
- package/dist/chunk-FGX6IR4Q.js.map +1 -0
- package/dist/chunk-FN2CUDUP.js +43 -0
- package/dist/chunk-FN2CUDUP.js.map +1 -0
- package/dist/chunk-FQUAFIUO.js +228 -0
- package/dist/chunk-FQUAFIUO.js.map +1 -0
- package/dist/chunk-FYHAKQGB.js +220 -0
- package/dist/chunk-FYHAKQGB.js.map +1 -0
- package/dist/chunk-FZ4F7FCO.js +63 -0
- package/dist/chunk-FZ4F7FCO.js.map +1 -0
- package/dist/chunk-G6UKOZPL.js +217 -0
- package/dist/chunk-G6UKOZPL.js.map +1 -0
- package/dist/chunk-GAFIOPGJ.js +54 -0
- package/dist/chunk-GAFIOPGJ.js.map +1 -0
- package/dist/chunk-GEMXFVWI.js +37 -0
- package/dist/chunk-GEMXFVWI.js.map +1 -0
- package/dist/chunk-GFBOT2PV.js +101 -0
- package/dist/chunk-GFBOT2PV.js.map +1 -0
- package/dist/chunk-GFURX6GB.js +76 -0
- package/dist/chunk-GFURX6GB.js.map +1 -0
- package/dist/chunk-GMHVMQTV.js +245 -0
- package/dist/chunk-GMHVMQTV.js.map +1 -0
- package/dist/chunk-GTO7GG2K.js +245 -0
- package/dist/chunk-GTO7GG2K.js.map +1 -0
- package/dist/chunk-GWNS3C3A.js +144 -0
- package/dist/chunk-GWNS3C3A.js.map +1 -0
- package/dist/chunk-HFVVQEOZ.js +1 -0
- package/dist/chunk-HFVVQEOZ.js.map +1 -0
- package/dist/chunk-HNS76MH2.js +69 -0
- package/dist/chunk-HNS76MH2.js.map +1 -0
- package/dist/chunk-HO462CJM.js +29 -0
- package/dist/chunk-HO462CJM.js.map +1 -0
- package/dist/chunk-HPW5EHJX.js +233 -0
- package/dist/chunk-HPW5EHJX.js.map +1 -0
- package/dist/chunk-HQ23GSZM.js +145 -0
- package/dist/chunk-HQ23GSZM.js.map +1 -0
- package/dist/chunk-HTNDVNLQ.js +287 -0
- package/dist/chunk-HTNDVNLQ.js.map +1 -0
- package/dist/chunk-HXOMTUED.js +222 -0
- package/dist/chunk-HXOMTUED.js.map +1 -0
- package/dist/chunk-I46BFZL6.js +69 -0
- package/dist/chunk-I46BFZL6.js.map +1 -0
- package/dist/chunk-INE4EFFO.js +70 -0
- package/dist/chunk-INE4EFFO.js.map +1 -0
- package/dist/chunk-IQUJPIZD.js +689 -0
- package/dist/chunk-IQUJPIZD.js.map +1 -0
- package/dist/chunk-ITKUKDDV.js +196 -0
- package/dist/chunk-ITKUKDDV.js.map +1 -0
- package/dist/chunk-J333WVWG.js +145 -0
- package/dist/chunk-J333WVWG.js.map +1 -0
- package/dist/chunk-JADEGHJI.js +101 -0
- package/dist/chunk-JADEGHJI.js.map +1 -0
- package/dist/chunk-JAS77BXB.js +245 -0
- package/dist/chunk-JAS77BXB.js.map +1 -0
- package/dist/chunk-JDBHOE34.js +51 -0
- package/dist/chunk-JDBHOE34.js.map +1 -0
- package/dist/chunk-JG4JIBBV.js +245 -0
- package/dist/chunk-JG4JIBBV.js.map +1 -0
- package/dist/chunk-JHJSR2UT.js +101 -0
- package/dist/chunk-JHJSR2UT.js.map +1 -0
- package/dist/chunk-JJDLCVZV.js +37 -0
- package/dist/chunk-JJDLCVZV.js.map +1 -0
- package/dist/chunk-JKAMW7OV.js +228 -0
- package/dist/chunk-JKAMW7OV.js.map +1 -0
- package/dist/chunk-JQH27TXL.js +89 -0
- package/dist/chunk-JQH27TXL.js.map +1 -0
- package/dist/chunk-JRSZNGFD.js +28 -0
- package/dist/chunk-JRSZNGFD.js.map +1 -0
- package/dist/chunk-JZVK4NDF.js +28 -0
- package/dist/chunk-JZVK4NDF.js.map +1 -0
- package/dist/chunk-K255663P.js +144 -0
- package/dist/chunk-K255663P.js.map +1 -0
- package/dist/chunk-K5TTAI44.js +89 -0
- package/dist/chunk-K5TTAI44.js.map +1 -0
- package/dist/chunk-K7LTEKQS.js +56 -0
- package/dist/chunk-K7LTEKQS.js.map +1 -0
- package/dist/chunk-KCAOUZCT.js +245 -0
- package/dist/chunk-KCAOUZCT.js.map +1 -0
- package/dist/chunk-KCCYHT23.js +39 -0
- package/dist/chunk-KCCYHT23.js.map +1 -0
- package/dist/chunk-KFUBWOCN.js +69 -0
- package/dist/chunk-KFUBWOCN.js.map +1 -0
- package/dist/chunk-KOKKR2GO.js +37 -0
- package/dist/chunk-KOKKR2GO.js.map +1 -0
- package/dist/chunk-KV432YFG.js +223 -0
- package/dist/chunk-KV432YFG.js.map +1 -0
- package/dist/chunk-L5SQIVFO.js +68 -0
- package/dist/chunk-L5SQIVFO.js.map +1 -0
- package/dist/chunk-LJDGAKG3.js +196 -0
- package/dist/chunk-LJDGAKG3.js.map +1 -0
- package/dist/chunk-LSUCPRXN.js +89 -0
- package/dist/chunk-LSUCPRXN.js.map +1 -0
- package/dist/chunk-MDSCN4PH.js +144 -0
- package/dist/chunk-MDSCN4PH.js.map +1 -0
- package/dist/chunk-MG2KX3KF.js +69 -0
- package/dist/chunk-MG2KX3KF.js.map +1 -0
- package/dist/chunk-MIATMZDP.js +39 -0
- package/dist/chunk-MIATMZDP.js.map +1 -0
- package/dist/chunk-MIVH7X2Q.js +245 -0
- package/dist/chunk-MIVH7X2Q.js.map +1 -0
- package/dist/chunk-MPZJH3PI.js +287 -0
- package/dist/chunk-MPZJH3PI.js.map +1 -0
- package/dist/chunk-MQ4ZZJXV.js +51 -0
- package/dist/chunk-MQ4ZZJXV.js.map +1 -0
- package/dist/chunk-MRTKFR7V.js +144 -0
- package/dist/chunk-MRTKFR7V.js.map +1 -0
- package/dist/chunk-MTSZUPDJ.js +151 -0
- package/dist/chunk-MTSZUPDJ.js.map +1 -0
- package/dist/chunk-MTU2IQUS.js +689 -0
- package/dist/chunk-MTU2IQUS.js.map +1 -0
- package/dist/chunk-MVA6X35R.js +165 -0
- package/dist/chunk-MVA6X35R.js.map +1 -0
- package/dist/chunk-ND5BRCYV.js +75 -0
- package/dist/chunk-ND5BRCYV.js.map +1 -0
- package/dist/chunk-NE5S2QWA.js +51 -0
- package/dist/chunk-NE5S2QWA.js.map +1 -0
- package/dist/chunk-NHK64BOP.js +69 -0
- package/dist/chunk-NHK64BOP.js.map +1 -0
- package/dist/chunk-NHMDJCXR.js +276 -0
- package/dist/chunk-NHMDJCXR.js.map +1 -0
- package/dist/chunk-NIBZSFZ6.js +196 -0
- package/dist/chunk-NIBZSFZ6.js.map +1 -0
- package/dist/chunk-NJ3LHGC6.js +169 -0
- package/dist/chunk-NJ3LHGC6.js.map +1 -0
- package/dist/chunk-NJKRLSH3.js +287 -0
- package/dist/chunk-NJKRLSH3.js.map +1 -0
- package/dist/chunk-NLTKDXLB.js +113 -0
- package/dist/chunk-NLTKDXLB.js.map +1 -0
- package/dist/chunk-NRWZ6JNA.js +69 -0
- package/dist/chunk-NRWZ6JNA.js.map +1 -0
- package/dist/chunk-NSBBMIXS.js +151 -0
- package/dist/chunk-NSBBMIXS.js.map +1 -0
- package/dist/chunk-O665PURC.js +63 -0
- package/dist/chunk-O665PURC.js.map +1 -0
- package/dist/chunk-O6LH7P6V.js +87 -0
- package/dist/chunk-O6LH7P6V.js.map +1 -0
- package/dist/chunk-OF4RHJCY.js +69 -0
- package/dist/chunk-OF4RHJCY.js.map +1 -0
- package/dist/chunk-ORBEMNBA.js +49 -0
- package/dist/chunk-ORBEMNBA.js.map +1 -0
- package/dist/chunk-OYCRE67S.js +87 -0
- package/dist/chunk-OYCRE67S.js.map +1 -0
- package/dist/chunk-P4KO43AP.js +245 -0
- package/dist/chunk-P4KO43AP.js.map +1 -0
- package/dist/chunk-PJHCOBSQ.js +163 -0
- package/dist/chunk-PJHCOBSQ.js.map +1 -0
- package/dist/chunk-PXPGCDNA.js +106 -0
- package/dist/chunk-PXPGCDNA.js.map +1 -0
- package/dist/chunk-QBVF4BCB.js +245 -0
- package/dist/chunk-QBVF4BCB.js.map +1 -0
- package/dist/chunk-QKP2KBZ5.js +219 -0
- package/dist/chunk-QKP2KBZ5.js.map +1 -0
- package/dist/chunk-QXBRA2T6.js +169 -0
- package/dist/chunk-QXBRA2T6.js.map +1 -0
- package/dist/chunk-RAMPMKQD.js +245 -0
- package/dist/chunk-RAMPMKQD.js.map +1 -0
- package/dist/chunk-REPTW53S.js +98 -0
- package/dist/chunk-REPTW53S.js.map +1 -0
- package/dist/chunk-RMFSOYRW.js +99 -0
- package/dist/chunk-RMFSOYRW.js.map +1 -0
- package/dist/chunk-RXQHKSIV.js +37 -0
- package/dist/chunk-RXQHKSIV.js.map +1 -0
- package/dist/chunk-RZGCNQWE.js +89 -0
- package/dist/chunk-RZGCNQWE.js.map +1 -0
- package/dist/chunk-S3W44IB3.js +151 -0
- package/dist/chunk-S3W44IB3.js.map +1 -0
- package/dist/chunk-SEKCH5XW.js +100 -0
- package/dist/chunk-SEKCH5XW.js.map +1 -0
- package/dist/chunk-SGS3LUQ3.js +196 -0
- package/dist/chunk-SGS3LUQ3.js.map +1 -0
- package/dist/chunk-SKA66SQI.js +144 -0
- package/dist/chunk-SKA66SQI.js.map +1 -0
- package/dist/chunk-SLHUNZIR.js +245 -0
- package/dist/chunk-SLHUNZIR.js.map +1 -0
- package/dist/chunk-STCVW5HT.js +49 -0
- package/dist/chunk-STCVW5HT.js.map +1 -0
- package/dist/chunk-SVGGVYY7.js +69 -0
- package/dist/chunk-SVGGVYY7.js.map +1 -0
- package/dist/chunk-T5I3DNHD.js +145 -0
- package/dist/chunk-T5I3DNHD.js.map +1 -0
- package/dist/chunk-TJDCSV5R.js +230 -0
- package/dist/chunk-TJDCSV5R.js.map +1 -0
- package/dist/chunk-TJWFURWT.js +43 -0
- package/dist/chunk-TJWFURWT.js.map +1 -0
- package/dist/chunk-TMO724ZN.js +63 -0
- package/dist/chunk-TMO724ZN.js.map +1 -0
- package/dist/chunk-TP7DOXLP.js +98 -0
- package/dist/chunk-TP7DOXLP.js.map +1 -0
- package/dist/chunk-TQJ3HQ7R.js +87 -0
- package/dist/chunk-TQJ3HQ7R.js.map +1 -0
- package/dist/chunk-TQMIIK56.js +230 -0
- package/dist/chunk-TQMIIK56.js.map +1 -0
- package/dist/chunk-TRNLQ7F3.js +245 -0
- package/dist/chunk-TRNLQ7F3.js.map +1 -0
- package/dist/chunk-U6UGFQIT.js +117 -0
- package/dist/chunk-U6UGFQIT.js.map +1 -0
- package/dist/chunk-U7OEYXJQ.js +165 -0
- package/dist/chunk-U7OEYXJQ.js.map +1 -0
- package/dist/chunk-UF6LFXBG.js +230 -0
- package/dist/chunk-UF6LFXBG.js.map +1 -0
- package/dist/chunk-ULZHPTB5.js +70 -0
- package/dist/chunk-ULZHPTB5.js.map +1 -0
- package/dist/chunk-UOCLNOC2.js +145 -0
- package/dist/chunk-UOCLNOC2.js.map +1 -0
- package/dist/chunk-V2RMMVGT.js +51 -0
- package/dist/chunk-V2RMMVGT.js.map +1 -0
- package/dist/chunk-V2UREEFT.js +89 -0
- package/dist/chunk-V2UREEFT.js.map +1 -0
- package/dist/chunk-V4WWIPTK.js +363 -0
- package/dist/chunk-V4WWIPTK.js.map +1 -0
- package/dist/chunk-VEHTXVLY.js +169 -0
- package/dist/chunk-VEHTXVLY.js.map +1 -0
- package/dist/chunk-VIVVHI7F.js +63 -0
- package/dist/chunk-VIVVHI7F.js.map +1 -0
- package/dist/chunk-VQMIOVFO.js +69 -0
- package/dist/chunk-VQMIOVFO.js.map +1 -0
- package/dist/chunk-VU3C3W4S.js +106 -0
- package/dist/chunk-VU3C3W4S.js.map +1 -0
- package/dist/chunk-VYPPQUB5.js +196 -0
- package/dist/chunk-VYPPQUB5.js.map +1 -0
- package/dist/chunk-W2TX267T.js +100 -0
- package/dist/chunk-W2TX267T.js.map +1 -0
- package/dist/chunk-W3EW7K6L.js +51 -0
- package/dist/chunk-W3EW7K6L.js.map +1 -0
- package/dist/chunk-WA5A2GB4.js +192 -0
- package/dist/chunk-WA5A2GB4.js.map +1 -0
- package/dist/chunk-WPAC4HEX.js +87 -0
- package/dist/chunk-WPAC4HEX.js.map +1 -0
- package/dist/chunk-X2OV53JW.js +196 -0
- package/dist/chunk-X2OV53JW.js.map +1 -0
- package/dist/chunk-X6K6AM4D.js +196 -0
- package/dist/chunk-X6K6AM4D.js.map +1 -0
- package/dist/chunk-XB2GOVFT.js +69 -0
- package/dist/chunk-XB2GOVFT.js.map +1 -0
- package/dist/chunk-XIKKYBHO.js +69 -0
- package/dist/chunk-XIKKYBHO.js.map +1 -0
- package/dist/chunk-Y2H4FXGU.js +68 -0
- package/dist/chunk-Y2H4FXGU.js.map +1 -0
- package/dist/chunk-Y7I4BEAO.js +69 -0
- package/dist/chunk-Y7I4BEAO.js.map +1 -0
- package/dist/chunk-YCRTFH4C.js +79 -0
- package/dist/chunk-YCRTFH4C.js.map +1 -0
- package/dist/chunk-YHGFJ7N6.js +63 -0
- package/dist/chunk-YHGFJ7N6.js.map +1 -0
- package/dist/chunk-YKDT2D43.js +98 -0
- package/dist/chunk-YKDT2D43.js.map +1 -0
- package/dist/chunk-YLTKQZ67.js +228 -0
- package/dist/chunk-YLTKQZ67.js.map +1 -0
- package/dist/chunk-YPGFPLWM.js +69 -0
- package/dist/chunk-YPGFPLWM.js.map +1 -0
- package/dist/chunk-YWYYPYBK.js +1 -0
- package/dist/chunk-YWYYPYBK.js.map +1 -0
- package/dist/chunk-Z7WNKARH.js +331 -0
- package/dist/chunk-Z7WNKARH.js.map +1 -0
- package/dist/chunk-ZA4NYPSW.js +28 -0
- package/dist/chunk-ZA4NYPSW.js.map +1 -0
- package/dist/chunk-ZDY2M7RX.js +113 -0
- package/dist/chunk-ZDY2M7RX.js.map +1 -0
- package/dist/chunk-ZFTQ2XBH.js +76 -0
- package/dist/chunk-ZFTQ2XBH.js.map +1 -0
- package/dist/chunk-ZI7PEVZG.js +89 -0
- package/dist/chunk-ZI7PEVZG.js.map +1 -0
- package/dist/chunk-ZKFNOCWD.js +125 -0
- package/dist/chunk-ZKFNOCWD.js.map +1 -0
- package/dist/chunk-ZOITFRX7.js +70 -0
- package/dist/chunk-ZOITFRX7.js.map +1 -0
- package/dist/chunk-ZPDLTZDJ.js +363 -0
- package/dist/chunk-ZPDLTZDJ.js.map +1 -0
- package/dist/chunk-ZR4G3PU3.js +89 -0
- package/dist/chunk-ZR4G3PU3.js.map +1 -0
- package/dist/context/index.js +1 -1
- package/dist/index.cjs +1832 -411
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +152 -139
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +7 -7
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +11 -11
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +13 -13
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.js +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +17 -17
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +1 -1
- package/dist/molecules/curriculumV2/curriculum-context.cjs +0 -1
- package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +2 -2
- package/dist/molecules/curriculumV2/index.cjs +4 -5
- package/dist/molecules/curriculumV2/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/index.js +27 -27
- package/dist/molecules/description-json-render.cjs +1 -1
- package/dist/molecules/description-json-render.cjs.map +1 -1
- package/dist/molecules/description-json-render.js +3 -3
- package/dist/molecules/dynamic-field.cjs +147 -5
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +5 -2
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +1711 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.d.cts +19 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.d.ts +19 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js +37 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +298 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.d.cts +16 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.d.ts +16 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.js +14 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs +171 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.d.cts +10 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.d.ts +10 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.js +12 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs +1021 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.d.cts +10 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.d.ts +10 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.js +26 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-utils.cjs +396 -0
- package/dist/molecules/dynamic-form-editor-utils.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-utils.d.cts +43 -0
- package/dist/molecules/dynamic-form-editor-utils.d.ts +43 -0
- package/dist/molecules/dynamic-form-editor-utils.js +44 -0
- package/dist/molecules/dynamic-form-editor-utils.js.map +1 -0
- package/dist/molecules/dynamic-form-editor.cjs +2925 -0
- package/dist/molecules/dynamic-form-editor.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor.d.cts +15 -0
- package/dist/molecules/dynamic-form-editor.d.ts +15 -0
- package/dist/molecules/dynamic-form-editor.js +51 -0
- package/dist/molecules/dynamic-form-editor.js.map +1 -0
- package/dist/molecules/dynamic-form-response-item.cjs +63 -29
- package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
- package/dist/molecules/dynamic-form-response-item.js +2 -1
- package/dist/molecules/dynamic-form.cjs +149 -7
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +6 -3
- package/dist/molecules/expand-table/index.js +1 -1
- package/dist/molecules/index.cjs +1464 -42
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.d.cts +1 -0
- package/dist/molecules/index.d.ts +1 -0
- package/dist/molecules/index.js +74 -63
- package/dist/molecules/learning-post.js +2 -2
- package/dist/molecules/stepper.js +2 -2
- package/dist/molecules/tag-selector.js +3 -3
- package/dist/molecules/time-select.cjs +1 -1
- package/dist/molecules/time-select.cjs.map +1 -1
- package/dist/molecules/time-select.js +4 -3
- package/dist/types/dynamic-form-schema-generated.cjs.map +1 -1
- package/dist/types/dynamic-form-schema-generated.d.cts +30 -2
- package/dist/types/dynamic-form-schema-generated.d.ts +30 -2
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -1
- package/dist/utils/get-callout-icon-component.cjs +624 -0
- package/dist/utils/get-callout-icon-component.cjs.map +1 -0
- package/dist/utils/get-callout-icon-component.d.cts +11 -0
- package/dist/utils/get-callout-icon-component.d.ts +11 -0
- package/dist/utils/get-callout-icon-component.js +26 -0
- package/dist/utils/get-callout-icon-component.js.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.cjs +80 -0
- package/dist/utils/get-dynamic-form-display-value.cjs.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.d.cts +5 -0
- package/dist/utils/get-dynamic-form-display-value.d.ts +5 -0
- package/dist/utils/get-dynamic-form-display-value.js +8 -0
- package/dist/utils/get-dynamic-form-display-value.js.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.test.cjs +124 -0
- package/dist/utils/get-dynamic-form-display-value.test.cjs.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.test.d.cts +2 -0
- package/dist/utils/get-dynamic-form-display-value.test.d.ts +2 -0
- package/dist/utils/get-dynamic-form-display-value.test.js +75 -0
- package/dist/utils/get-dynamic-form-display-value.test.js.map +1 -0
- package/dist/utils/index.cjs +55 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +3 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +10 -6
- package/package.json +1 -1
- package/src/app/platform/reservation-card.tsx +0 -1
- package/src/constrant/dynamic-form-schema.json +55 -0
- package/src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx +3 -3
- package/src/molecules/curriculumV2/curriculum-context.tsx +0 -1
- package/src/molecules/description-json-render.tsx +1 -1
- package/src/molecules/dynamic-field.tsx +183 -7
- package/src/molecules/dynamic-form-editor-field-editor-panel.tsx +688 -0
- package/src/molecules/dynamic-form-editor-field-list-panel.tsx +116 -0
- package/src/molecules/dynamic-form-editor-issues-panel.tsx +35 -0
- package/src/molecules/dynamic-form-editor-preview-panel.tsx +30 -0
- package/src/molecules/dynamic-form-editor-utils.ts +433 -0
- package/src/molecules/dynamic-form-editor.tsx +263 -0
- package/src/molecules/dynamic-form-response-item.tsx +13 -40
- package/src/molecules/dynamic-form.tsx +1 -1
- package/src/molecules/index.ts +2 -1
- package/src/types/dynamic-form-schema-generated.ts +33 -0
- package/src/utils/get-dynamic-form-display-value.test.ts +81 -0
- package/src/utils/get-dynamic-form-display-value.ts +74 -0
- package/src/utils/index.ts +2 -1
- package/src/utils/{getCalloutIconComponent.ts → get-callout-icon-component.ts} +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/molecules/dynamic-form-editor-utils.ts"],"sourcesContent":["import type {\n DynamicFormFieldSchema,\n DynamicFormSchema,\n FieldOption,\n ImageFieldOption,\n ValidationRule,\n} from '@/types/dynamic-form-schema-generated';\n\nexport type FieldType =\n | 'short_text'\n | 'long_text'\n | 'number'\n | 'email'\n | 'dropdown'\n | 'choice'\n | 'radio_cards'\n | 'image_radio_card'\n | 'choices'\n | 'yes_no';\n\nexport type SchemaIssueLevel = 'error' | 'warning';\n\nexport interface SchemaIssue {\n id: string;\n level: SchemaIssueLevel;\n message: string;\n fieldName?: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isNonEmptyTrimmedString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction canCompileRegExp(pattern: string): boolean {\n try {\n // eslint-disable-next-line no-new -- 정규식 컴파일 가능 여부만 확인\n new RegExp(pattern);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function getFieldTypes(): FieldType[] {\n return [\n 'short_text',\n 'long_text',\n 'number',\n 'email',\n 'dropdown',\n 'choice',\n 'radio_cards',\n 'image_radio_card',\n 'choices',\n 'yes_no',\n ];\n}\n\nexport function getFieldTypeLabel(type: FieldType): string {\n const map: Record<FieldType, string> = {\n short_text: '짧은 텍스트',\n long_text: '긴 텍스트',\n number: '숫자',\n email: '이메일',\n dropdown: '드롭다운',\n choice: '단일 선택(라디오)',\n radio_cards: '라디오 카드',\n image_radio_card: '이미지 라디오 카드',\n choices: '다중 선택(체크)',\n yes_no: '동의(체크)',\n };\n return map[type];\n}\n\nexport function findFieldIndexByName(\n fields: DynamicFormFieldSchema[],\n fieldName: string\n): number {\n return fields.findIndex((field) => field.name === fieldName);\n}\n\nfunction toCamelFromSnake(value: string): string {\n const parts: string[] = value.split('_').filter(Boolean);\n if (parts.length === 0) return 'field';\n const [first, ...rest] = parts;\n const firstLower = first.toLowerCase();\n const restCamel = rest\n .map((p) => (p.length === 0 ? '' : p[0].toUpperCase() + p.slice(1)))\n .join('');\n return `${firstLower}${restCamel}`;\n}\n\nexport function createUniqueFieldName(\n fields: DynamicFormFieldSchema[],\n baseName: string\n): string {\n const used = new Set<string>(fields.map((f) => f.name));\n if (!used.has(baseName)) return baseName;\n let i = 2;\n while (used.has(`${baseName}${i}`)) i += 1;\n return `${baseName}${i}`;\n}\n\nexport function createDefaultField(\n type: FieldType,\n currentFields: DynamicFormFieldSchema[]\n): DynamicFormFieldSchema {\n const baseName: string = toCamelFromSnake(type);\n const name: string = createUniqueFieldName(currentFields, baseName);\n const label: string = getFieldTypeLabel(type);\n\n if (type === 'short_text') return { name, type, label, placeholder: '' };\n if (type === 'long_text') return { name, type, label, placeholder: '' };\n if (type === 'number') return { name, type, label, placeholder: '' };\n if (type === 'email') return { name, type, label, placeholder: '' };\n if (type === 'dropdown')\n return {\n name,\n type,\n label,\n placeholder: '',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'choice')\n return {\n name,\n type,\n label,\n orientation: 'vertical',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'radio_cards')\n return { name, type, label, options: [{ label: '옵션 1', value: 'option1' }] };\n if (type === 'choices')\n return {\n name,\n type,\n label,\n orientation: 'vertical',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'yes_no') return { name, type, label, description: '' };\n\n return {\n name,\n type,\n label,\n gridColumnsCount: 4,\n gridItemHeight: '160px',\n gridGap: '2',\n imageFit: 'cover',\n options: [\n {\n label: '이미지 1',\n value: 'option1',\n imageSrc: 'https://placehold.co/300x300/png?text=1',\n },\n ],\n };\n}\n\nexport function normalizeSchema(value: DynamicFormSchema | undefined): DynamicFormSchema {\n const fallback: DynamicFormSchema = { fields: [] };\n if (!value) return fallback;\n if (!Array.isArray(value.fields)) return fallback;\n return { fields: value.fields };\n}\n\nexport function validateDynamicFormSchema(schema: DynamicFormSchema): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n\n const nameToCount = new Map<string, number>();\n schema.fields.forEach((field) => {\n const prev = nameToCount.get(field.name) || 0;\n nameToCount.set(field.name, prev + 1);\n });\n\n schema.fields.forEach((field, index) => {\n const fieldKey = `${index}:${field.name}`;\n\n if (!isNonEmptyTrimmedString(field.name)) {\n issues.push({\n id: `field.name.required.${fieldKey}`,\n level: 'error',\n message: '필드 name은 필수입니다',\n fieldName: field.name,\n });\n } else if (field.name.trim() !== field.name) {\n issues.push({\n id: `field.name.trim.${fieldKey}`,\n level: 'warning',\n message: '필드 name 앞/뒤 공백은 제거하는 것을 권장합니다',\n fieldName: field.name,\n });\n }\n\n if (isNonEmptyTrimmedString(field.name)) {\n const count = nameToCount.get(field.name) || 0;\n if (count > 1) {\n issues.push({\n id: `field.name.duplicate.${fieldKey}`,\n level: 'error',\n message: `중복된 name입니다: ${field.name}`,\n fieldName: field.name,\n });\n }\n }\n\n if (!isNonEmptyTrimmedString(field.label)) {\n issues.push({\n id: `field.label.required.${fieldKey}`,\n level: 'error',\n message: '필드 label은 필수입니다',\n fieldName: field.name,\n });\n }\n\n const type = field.type;\n const isOptionType =\n type === 'dropdown' ||\n type === 'choice' ||\n type === 'radio_cards' ||\n type === 'choices';\n\n if (isOptionType) {\n const optionsRaw: unknown = field.options;\n if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {\n issues.push({\n id: `field.options.required.${fieldKey}`,\n level: 'error',\n message: 'options는 1개 이상 필요합니다',\n fieldName: field.name,\n });\n }\n }\n\n if (type === 'image_radio_card') {\n const optionsRaw: unknown = field.options;\n if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {\n issues.push({\n id: `field.imageOptions.required.${fieldKey}`,\n level: 'error',\n message: 'options는 1개 이상 필요합니다',\n fieldName: field.name,\n });\n } else {\n optionsRaw.forEach((opt, optIndex) => {\n const imageSrc = isRecord(opt) ? opt.imageSrc : undefined;\n if (!isNonEmptyTrimmedString(imageSrc)) {\n issues.push({\n id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,\n level: 'error',\n message: 'imageSrc는 필수입니다',\n fieldName: field.name,\n });\n }\n });\n }\n }\n\n const validation: ValidationRule | undefined = field.validation;\n if (validation) {\n if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {\n if (validation.min > validation.max) {\n issues.push({\n id: `field.validation.minmax.${fieldKey}`,\n level: 'error',\n message: 'validation.min은 validation.max 이하이어야 합니다',\n fieldName: field.name,\n });\n }\n }\n if (isNonEmptyTrimmedString(validation.pattern)) {\n if (!canCompileRegExp(validation.pattern)) {\n issues.push({\n id: `field.validation.pattern.${fieldKey}`,\n level: 'error',\n message: 'validation.pattern이 올바른 정규식이 아닙니다',\n fieldName: field.name,\n });\n }\n }\n }\n });\n\n return issues;\n}\n\nexport function hasErrorIssues(issues: SchemaIssue[]): boolean {\n return issues.some((i) => i.level === 'error');\n}\n\nexport function updateSchemaFields(\n schema: DynamicFormSchema,\n nextFields: DynamicFormFieldSchema[]\n): DynamicFormSchema {\n return { fields: nextFields };\n}\n\nexport function moveField(\n fields: DynamicFormFieldSchema[],\n fromIndex: number,\n toIndex: number\n): DynamicFormFieldSchema[] {\n if (fromIndex < 0 || fromIndex >= fields.length) return fields;\n if (toIndex < 0 || toIndex >= fields.length) return fields;\n if (fromIndex === toIndex) return fields;\n\n const next: DynamicFormFieldSchema[] = [...fields];\n const [item] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, item);\n return next;\n}\n\nexport function duplicateField(fields: DynamicFormFieldSchema[], index: number): DynamicFormFieldSchema[] {\n if (index < 0 || index >= fields.length) return fields;\n const target = fields[index];\n const nextName: string = createUniqueFieldName(fields, target.name);\n const cloned: DynamicFormFieldSchema = { ...target, name: nextName };\n const next: DynamicFormFieldSchema[] = [...fields];\n next.splice(index + 1, 0, cloned);\n return next;\n}\n\nexport function updateFieldCommonProps(\n field: DynamicFormFieldSchema,\n next: {\n name?: string;\n label?: string;\n description?: string | undefined;\n required?: boolean;\n }\n): DynamicFormFieldSchema {\n const { name, label, description, required } = next;\n return {\n ...field,\n ...(name !== undefined ? { name } : {}),\n ...(label !== undefined ? { label } : {}),\n ...(description !== undefined ? { description } : {}),\n ...(required !== undefined ? { required } : {}),\n };\n}\n\nexport function updateFieldValidation(\n field: DynamicFormFieldSchema,\n next: ValidationRule | undefined\n): DynamicFormFieldSchema {\n if (!next) {\n const { validation: _validation, ...rest } = field;\n return rest;\n }\n return { ...field, validation: next };\n}\n\nexport function updateTextPlaceholder(\n field: DynamicFormFieldSchema,\n placeholder: string\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'short_text' || type === 'long_text' || type === 'number' || type === 'email' || type === 'dropdown') {\n return { ...field, placeholder };\n }\n return field;\n}\n\nexport function updateOrientation(\n field: DynamicFormFieldSchema,\n orientation: 'horizontal' | 'vertical'\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'choice' || type === 'choices') return { ...field, orientation };\n return field;\n}\n\nexport function updateOptions(\n field: DynamicFormFieldSchema,\n options: FieldOption[]\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'dropdown' || type === 'choice' || type === 'radio_cards' || type === 'choices') {\n return { ...field, options };\n }\n return field;\n}\n\nexport function updateImageOptions(\n field: DynamicFormFieldSchema,\n options: ImageFieldOption[]\n): DynamicFormFieldSchema {\n if (field.type === 'image_radio_card') {\n return { ...field, options };\n }\n return field;\n}\n\nexport function updateImageLayout(\n field: DynamicFormFieldSchema,\n next: {\n gridColumnsCount?: number | undefined;\n gridItemHeight?: string | undefined;\n gridColumns?: string | undefined;\n gridRows?: string | undefined;\n gridGap?: string | undefined;\n imageFit?: 'cover' | 'contain' | undefined;\n }\n): DynamicFormFieldSchema {\n if (field.type !== 'image_radio_card') return field;\n return { ...field, ...next };\n}\n\nexport function resetFieldType(\n field: DynamicFormFieldSchema,\n nextType: FieldType,\n allFields: DynamicFormFieldSchema[]\n): DynamicFormFieldSchema {\n const base: DynamicFormFieldSchema = createDefaultField(nextType, allFields);\n return {\n ...base,\n name: field.name,\n label: field.label,\n description: field.description,\n required: field.required,\n validation: field.validation,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DynamicForm
|
|
3
|
+
} from "./chunk-GTO7GG2K.js";
|
|
4
|
+
import {
|
|
5
|
+
Card
|
|
6
|
+
} from "./chunk-RP2RGCAW.js";
|
|
7
|
+
import {
|
|
8
|
+
Typo
|
|
9
|
+
} from "./chunk-PMJIFLDT.js";
|
|
10
|
+
import {
|
|
11
|
+
Flex
|
|
12
|
+
} from "./chunk-25HMMI7R.js";
|
|
13
|
+
|
|
14
|
+
// src/molecules/dynamic-form-editor-preview-panel.tsx
|
|
15
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
function DynamicFormEditorPreviewPanel(props) {
|
|
17
|
+
const { show, fields } = props;
|
|
18
|
+
if (!show) return null;
|
|
19
|
+
return /* @__PURE__ */ jsx(Card, { style: { width: 420, padding: 12 }, children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "3", children: [
|
|
20
|
+
/* @__PURE__ */ jsx(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
|
|
21
|
+
/* @__PURE__ */ jsx(DynamicForm.Root, { fields, onSubmit: () => void 0, readonly: true, children: /* @__PURE__ */ jsx(DynamicForm.FieldList, { labelVariant: "body" }) })
|
|
22
|
+
] }) });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
DynamicFormEditorPreviewPanel
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-ZA4NYPSW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/molecules/dynamic-form-editor-preview-panel.tsx"],"sourcesContent":["import React from 'react';\nimport { Card } from '@/atoms/card';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\nimport { DynamicForm } from './dynamic-form';\n\nexport interface DynamicFormEditorPreviewPanelProps {\n show: boolean;\n fields: DynamicFormFieldSchema[];\n}\n\nexport function DynamicFormEditorPreviewPanel(\n props: DynamicFormEditorPreviewPanelProps\n): React.ReactElement | null {\n const { show, fields } = props;\n if (!show) return null;\n\n return (\n <Card style={{ width: 420, padding: 12 }}>\n <Flex direction=\"column\" gap=\"3\">\n <Typo variant=\"body\">프리뷰</Typo>\n <DynamicForm.Root fields={fields} onSubmit={(): void => undefined} readonly>\n <DynamicForm.FieldList labelVariant=\"body\" />\n </DynamicForm.Root>\n </Flex>\n </Card>\n );\n}\n\n"],"mappings":";;;;;;;;;;;;;;AAoBM,SACE,KADF;AARC,SAAS,8BACd,OAC2B;AAC3B,QAAM,EAAE,MAAM,OAAO,IAAI;AACzB,MAAI,CAAC,KAAM,QAAO;AAElB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,GACrC,+BAAC,QAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,wBAAC,QAAK,SAAQ,QAAO,gCAAG;AAAA,IACxB,oBAAC,YAAY,MAAZ,EAAiB,QAAgB,UAAU,MAAY,QAAW,UAAQ,MACzE,8BAAC,YAAY,WAAZ,EAAsB,cAAa,QAAO,GAC7C;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CircleChatIcon
|
|
3
|
+
} from "./chunk-ZUYCXCPW.js";
|
|
4
|
+
import {
|
|
5
|
+
CircleCheckIcon
|
|
6
|
+
} from "./chunk-YVFNJE4E.js";
|
|
7
|
+
import {
|
|
8
|
+
CircleFileIcon
|
|
9
|
+
} from "./chunk-SI4Y7NUG.js";
|
|
10
|
+
import {
|
|
11
|
+
CirclePencilIcon
|
|
12
|
+
} from "./chunk-J2I3R3OV.js";
|
|
13
|
+
import {
|
|
14
|
+
CirclePlayIcon
|
|
15
|
+
} from "./chunk-QO6KO6MN.js";
|
|
16
|
+
import {
|
|
17
|
+
CircleQuoteIcon
|
|
18
|
+
} from "./chunk-5KNRHIIF.js";
|
|
19
|
+
import {
|
|
20
|
+
CircleSatisfactionIcon
|
|
21
|
+
} from "./chunk-6JRAI4G5.js";
|
|
22
|
+
|
|
23
|
+
// src/utils/curriculum.utils.ts
|
|
24
|
+
var CurriculumListIcons = {
|
|
25
|
+
pencil: CirclePencilIcon,
|
|
26
|
+
video: CirclePlayIcon,
|
|
27
|
+
quote: CircleQuoteIcon,
|
|
28
|
+
check: CircleCheckIcon,
|
|
29
|
+
star: CircleSatisfactionIcon,
|
|
30
|
+
file: CircleFileIcon
|
|
31
|
+
};
|
|
32
|
+
var getCurriculumIcon = ({
|
|
33
|
+
type,
|
|
34
|
+
icon
|
|
35
|
+
}) => {
|
|
36
|
+
if (icon && Object.prototype.hasOwnProperty.call(CurriculumListIcons, icon)) {
|
|
37
|
+
return CurriculumListIcons[icon];
|
|
38
|
+
}
|
|
39
|
+
switch (type) {
|
|
40
|
+
case "video":
|
|
41
|
+
return CirclePlayIcon;
|
|
42
|
+
case "question_text":
|
|
43
|
+
return CircleQuoteIcon;
|
|
44
|
+
case "question_radio":
|
|
45
|
+
return CircleCheckIcon;
|
|
46
|
+
case "question_satisfaction_option":
|
|
47
|
+
case "question_satisfaction_text":
|
|
48
|
+
return CircleSatisfactionIcon;
|
|
49
|
+
case "aiTraining":
|
|
50
|
+
return CircleChatIcon;
|
|
51
|
+
case "fileDownload":
|
|
52
|
+
return CircleFileIcon;
|
|
53
|
+
case "review":
|
|
54
|
+
default:
|
|
55
|
+
return CirclePencilIcon;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var getCurriculumIconColor = ({
|
|
59
|
+
done = false,
|
|
60
|
+
selected = false
|
|
61
|
+
}) => {
|
|
62
|
+
if (selected) {
|
|
63
|
+
return "#D5AE39";
|
|
64
|
+
}
|
|
65
|
+
if (done) {
|
|
66
|
+
return "#30A46C";
|
|
67
|
+
}
|
|
68
|
+
return "#D9D9E0";
|
|
69
|
+
};
|
|
70
|
+
var getCurriculumQuestionIconColor = (type) => {
|
|
71
|
+
switch (type) {
|
|
72
|
+
case "question_text":
|
|
73
|
+
return "#D5AE39";
|
|
74
|
+
case "question_radio":
|
|
75
|
+
return "#30A46C";
|
|
76
|
+
default:
|
|
77
|
+
return "#D9D9E0";
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var getCurriculumQuestionTypeDescription = (type) => {
|
|
81
|
+
switch (type) {
|
|
82
|
+
case "question_text":
|
|
83
|
+
return "\uC8FC\uAD00\uC2DD";
|
|
84
|
+
case "question_radio":
|
|
85
|
+
return "\uAC1D\uAD00\uC2DD";
|
|
86
|
+
default:
|
|
87
|
+
return "";
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
var getCurriculumContentSubTypeText = (type) => {
|
|
91
|
+
switch (type) {
|
|
92
|
+
case "video":
|
|
93
|
+
return "\uC601\uC0C1";
|
|
94
|
+
case "review":
|
|
95
|
+
return "\uB9AC\uBDF0";
|
|
96
|
+
case "aiTraining":
|
|
97
|
+
return "AI \uB864\uD50C\uB808\uC774";
|
|
98
|
+
case "fileDownload":
|
|
99
|
+
return "\uC790\uB8CC \uB2E4\uC6B4\uB85C\uB4DC";
|
|
100
|
+
default:
|
|
101
|
+
return "";
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export {
|
|
106
|
+
CurriculumListIcons,
|
|
107
|
+
getCurriculumIcon,
|
|
108
|
+
getCurriculumIconColor,
|
|
109
|
+
getCurriculumQuestionIconColor,
|
|
110
|
+
getCurriculumQuestionTypeDescription,
|
|
111
|
+
getCurriculumContentSubTypeText
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=chunk-ZDY2M7RX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/curriculum.utils.ts"],"sourcesContent":["import { \n CircleChatIcon,\n CircleCheckIcon,\n CircleFileIcon,\n CirclePencilIcon,\n CirclePlayIcon,\n CircleQuoteIcon,\n CircleSatisfactionIcon,\n } from '@/icon';\n\nexport const CurriculumListIcons = {\n pencil: CirclePencilIcon,\n video: CirclePlayIcon,\n quote: CircleQuoteIcon,\n check: CircleCheckIcon,\n star: CircleSatisfactionIcon,\n file: CircleFileIcon,\n};\n\nexport const getCurriculumIcon = ({\n type,\n icon,\n}: {\n type: string;\n icon?: string;\n}): typeof CirclePlayIcon => {\n if (icon && Object.prototype.hasOwnProperty.call(CurriculumListIcons, icon)) {\n return CurriculumListIcons[icon as keyof typeof CurriculumListIcons];\n }\n\n switch (type) {\n case 'video':\n return CirclePlayIcon;\n case 'question_text':\n return CircleQuoteIcon;\n case 'question_radio':\n return CircleCheckIcon;\n case 'question_satisfaction_option':\n case 'question_satisfaction_text':\n return CircleSatisfactionIcon;\n case 'aiTraining':\n return CircleChatIcon; \n case 'fileDownload':\n return CircleFileIcon;\n case 'review':\n default:\n return CirclePencilIcon;\n }\n};\n\nexport const getCurriculumIconColor = ({\n done = false,\n selected = false,\n}: {\n done?: boolean;\n selected?: boolean;\n}): string => {\n if (selected) {\n return '#D5AE39';\n }\n if (done) {\n return '#30A46C';\n }\n return '#D9D9E0';\n};\n\nexport const getCurriculumQuestionIconColor = (type: string): string => {\n switch (type) {\n case 'question_text':\n return '#D5AE39';\n case 'question_radio':\n return '#30A46C';\n default:\n return '#D9D9E0';\n }\n};\n\nexport const getCurriculumQuestionTypeDescription = (type: string): string => {\n switch (type) {\n case 'question_text':\n return '주관식';\n case 'question_radio':\n return '객관식';\n default:\n return '';\n }\n};\n\nexport const getCurriculumContentSubTypeText = (type: string): string => {\n switch (type) {\n case 'video':\n return '영상';\n case 'review':\n return '리뷰';\n case 'aiTraining':\n return 'AI 롤플레이';\n case 'fileDownload':\n return '자료 다운로드';\n default:\n return '';\n }\n};\n \n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,sBAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAEO,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AACF,MAG6B;AAC3B,MAAI,QAAQ,OAAO,UAAU,eAAe,KAAK,qBAAqB,IAAI,GAAG;AAC3E,WAAO,oBAAoB,IAAwC;AAAA,EACrE;AAEA,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,yBAAyB,CAAC;AAAA,EACrC,OAAO;AAAA,EACP,WAAW;AACb,MAGc;AACZ,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AACR,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,IAAM,iCAAiC,CAAC,SAAyB;AACtE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,uCAAuC,CAAC,SAAyB;AAC5E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,kCAAkC,CAAC,SAAyB;AACvE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useCurriculumContext
|
|
3
|
+
} from "./chunk-WA5A2GB4.js";
|
|
4
|
+
import {
|
|
5
|
+
Typo
|
|
6
|
+
} from "./chunk-PMJIFLDT.js";
|
|
7
|
+
import {
|
|
8
|
+
Flex
|
|
9
|
+
} from "./chunk-25HMMI7R.js";
|
|
10
|
+
import {
|
|
11
|
+
Button
|
|
12
|
+
} from "./chunk-ZVDAEY5Q.js";
|
|
13
|
+
|
|
14
|
+
// src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx
|
|
15
|
+
import { useMemo } from "react";
|
|
16
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
function CurriculumFileDownload(props) {
|
|
18
|
+
const { item } = props;
|
|
19
|
+
const { title, description, files } = item;
|
|
20
|
+
const { onClickfileDownload } = useCurriculumContext();
|
|
21
|
+
const isCallbackReady = useMemo(() => {
|
|
22
|
+
return typeof onClickfileDownload === "function";
|
|
23
|
+
}, [onClickfileDownload]);
|
|
24
|
+
const handleClickFile = (file) => {
|
|
25
|
+
if (!onClickfileDownload) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
onClickfileDownload(item, file);
|
|
29
|
+
};
|
|
30
|
+
return /* @__PURE__ */ jsxs(
|
|
31
|
+
Flex,
|
|
32
|
+
{
|
|
33
|
+
align: "center",
|
|
34
|
+
direction: "column",
|
|
35
|
+
height: "100%",
|
|
36
|
+
justify: "center",
|
|
37
|
+
px: "3",
|
|
38
|
+
py: "3",
|
|
39
|
+
width: "100%",
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ jsx(Typo, { color: "gray", weight: "bold", children: title }),
|
|
42
|
+
description ? /* @__PURE__ */ jsx(Typo, { align: "center", as: "p", color: "gray", children: description }) : null,
|
|
43
|
+
/* @__PURE__ */ jsx(
|
|
44
|
+
Flex,
|
|
45
|
+
{
|
|
46
|
+
direction: "column",
|
|
47
|
+
gap: "2",
|
|
48
|
+
mt: "4",
|
|
49
|
+
style: { width: "100%", maxWidth: 520 },
|
|
50
|
+
children: files.map((file) => {
|
|
51
|
+
return /* @__PURE__ */ jsx(
|
|
52
|
+
Button,
|
|
53
|
+
{
|
|
54
|
+
disabled: !isCallbackReady,
|
|
55
|
+
onClick: () => {
|
|
56
|
+
handleClickFile(file);
|
|
57
|
+
},
|
|
58
|
+
variant: "outline",
|
|
59
|
+
children: /* @__PURE__ */ jsx(Typo, { truncate: true, children: file.name })
|
|
60
|
+
},
|
|
61
|
+
file.url
|
|
62
|
+
);
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
!isCallbackReady ? /* @__PURE__ */ jsx(Typo, { align: "center", color: "gray", mt: "3", variant: "caption", children: "\uD30C\uC77C \uB2E4\uC6B4\uB85C\uB4DC \uAE30\uB2A5\uC774 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4." }) : null
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
var curriculum_file_download_default = CurriculumFileDownload;
|
|
72
|
+
|
|
73
|
+
export {
|
|
74
|
+
curriculum_file_download_default
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=chunk-ZFTQ2XBH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Button } from '@/atoms/button';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport type {\n CurriculumFileDownloadContents,\n CurriculumFileDownloadFile,\n} from '@/types/curriculumContents.type';\nimport { useCurriculumContext } from '../curriculum-context';\n\ninterface CurriculumFileDownloadProps {\n item: CurriculumFileDownloadContents;\n}\n\nfunction CurriculumFileDownload(\n props: CurriculumFileDownloadProps\n): React.ReactNode {\n const { item } = props;\n const { title, description, files } = item;\n const { onClickfileDownload } = useCurriculumContext();\n\n const isCallbackReady = useMemo((): boolean => {\n return typeof onClickfileDownload === 'function';\n }, [onClickfileDownload]);\n\n const handleClickFile = (file: CurriculumFileDownloadFile): void => {\n if (!onClickfileDownload) {\n return;\n }\n onClickfileDownload(item, file);\n };\n\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"100%\"\n justify=\"center\"\n px=\"3\"\n py=\"3\"\n width=\"100%\"\n >\n <Typo color=\"gray\" weight=\"bold\">\n {title}\n </Typo>\n {description ? (\n <Typo align=\"center\" as=\"p\" color=\"gray\">\n {description}\n </Typo>\n ) : null}\n\n <Flex\n direction=\"column\"\n gap=\"2\"\n mt=\"4\"\n style={{ width: '100%', maxWidth: 520 }}\n >\n {files.map((file) => {\n return (\n <Button\n disabled={!isCallbackReady}\n key={file.url}\n onClick={() => {\n handleClickFile(file);\n }}\n variant=\"outline\"\n >\n <Typo truncate>{file.name}</Typo>\n </Button>\n );\n })}\n </Flex>\n\n {!isCallbackReady ? (\n <Typo align=\"center\" color=\"gray\" mt=\"3\" variant=\"caption\">\n 파일 다운로드 기능이 설정되지 않았습니다.\n </Typo>\n ) : null}\n </Flex>\n );\n}\n\nexport default CurriculumFileDownload;\n\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAgB,eAAe;AAiC3B,SASE,KATF;AAnBJ,SAAS,uBACP,OACiB;AACjB,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,EAAE,OAAO,aAAa,MAAM,IAAI;AACtC,QAAM,EAAE,oBAAoB,IAAI,qBAAqB;AAErD,QAAM,kBAAkB,QAAQ,MAAe;AAC7C,WAAO,OAAO,wBAAwB;AAAA,EACxC,GAAG,CAAC,mBAAmB,CAAC;AAExB,QAAM,kBAAkB,CAAC,SAA2C;AAClE,QAAI,CAAC,qBAAqB;AACxB;AAAA,IACF;AACA,wBAAoB,MAAM,IAAI;AAAA,EAChC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAU;AAAA,MACV,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,IAAG;AAAA,MACH,IAAG;AAAA,MACH,OAAM;AAAA,MAEN;AAAA,4BAAC,QAAK,OAAM,QAAO,QAAO,QACvB,iBACH;AAAA,QACC,cACC,oBAAC,QAAK,OAAM,UAAS,IAAG,KAAI,OAAM,QAC/B,uBACH,IACE;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAI;AAAA,YACJ,IAAG;AAAA,YACH,OAAO,EAAE,OAAO,QAAQ,UAAU,IAAI;AAAA,YAErC,gBAAM,IAAI,CAAC,SAAS;AACnB,qBACE;AAAA,gBAAC;AAAA;AAAA,kBACC,UAAU,CAAC;AAAA,kBAEX,SAAS,MAAM;AACb,oCAAgB,IAAI;AAAA,kBACtB;AAAA,kBACA,SAAQ;AAAA,kBAER,8BAAC,QAAK,UAAQ,MAAE,eAAK,MAAK;AAAA;AAAA,gBANrB,KAAK;AAAA,cAOZ;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA,QAEC,CAAC,kBACA,oBAAC,QAAK,OAAM,UAAS,OAAM,QAAO,IAAG,KAAI,SAAQ,WAAU,+HAE3D,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ReviewQuestion_default
|
|
3
|
+
} from "./chunk-7ABAJEJA.js";
|
|
4
|
+
import {
|
|
5
|
+
complete_review_default
|
|
6
|
+
} from "./chunk-5YESTYFF.js";
|
|
7
|
+
import {
|
|
8
|
+
start_review_default
|
|
9
|
+
} from "./chunk-NSBBMIXS.js";
|
|
10
|
+
import {
|
|
11
|
+
CurriculumReviewProvider,
|
|
12
|
+
useCurriculumReviewContext
|
|
13
|
+
} from "./chunk-GMKRNFH5.js";
|
|
14
|
+
|
|
15
|
+
// src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx
|
|
16
|
+
import { jsx } from "react/jsx-runtime";
|
|
17
|
+
function CurriculumReviewStepsInner() {
|
|
18
|
+
const {
|
|
19
|
+
formik,
|
|
20
|
+
step,
|
|
21
|
+
handleStart,
|
|
22
|
+
handleNext,
|
|
23
|
+
handlePrev,
|
|
24
|
+
onClickReviewMyAnswer,
|
|
25
|
+
handleSubmit,
|
|
26
|
+
currentQuestion,
|
|
27
|
+
currentAnswer,
|
|
28
|
+
currentError,
|
|
29
|
+
reviewContents,
|
|
30
|
+
handleAnswerChange
|
|
31
|
+
} = useCurriculumReviewContext();
|
|
32
|
+
const { questions } = reviewContents;
|
|
33
|
+
if (step === 0) {
|
|
34
|
+
return /* @__PURE__ */ jsx(start_review_default, { onStart: handleStart });
|
|
35
|
+
}
|
|
36
|
+
if (step > 0 && step <= questions.length && currentQuestion) {
|
|
37
|
+
return /* @__PURE__ */ jsx(
|
|
38
|
+
ReviewQuestion_default,
|
|
39
|
+
{
|
|
40
|
+
answer: currentAnswer,
|
|
41
|
+
error: currentError,
|
|
42
|
+
index: step - 1,
|
|
43
|
+
isLast: step === questions.length,
|
|
44
|
+
isLoading: formik.isSubmitting,
|
|
45
|
+
isNextDisabled: currentError !== void 0,
|
|
46
|
+
onChange: handleAnswerChange,
|
|
47
|
+
onNext: handleNext,
|
|
48
|
+
onPrev: handlePrev,
|
|
49
|
+
onSubmit: handleSubmit,
|
|
50
|
+
question: currentQuestion,
|
|
51
|
+
total: questions.length
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
return /* @__PURE__ */ jsx(complete_review_default, { onClickReviewMyAnswer });
|
|
56
|
+
}
|
|
57
|
+
function CurriculumReviewSteps({
|
|
58
|
+
contents,
|
|
59
|
+
title,
|
|
60
|
+
onClickEndReview,
|
|
61
|
+
onSubmit,
|
|
62
|
+
defaultValues,
|
|
63
|
+
curriculum,
|
|
64
|
+
onReviewValueChange,
|
|
65
|
+
mode,
|
|
66
|
+
done
|
|
67
|
+
}) {
|
|
68
|
+
return /* @__PURE__ */ jsx(
|
|
69
|
+
CurriculumReviewProvider,
|
|
70
|
+
{
|
|
71
|
+
curriculum,
|
|
72
|
+
defaultValues,
|
|
73
|
+
done,
|
|
74
|
+
mode,
|
|
75
|
+
onClickEndReview,
|
|
76
|
+
onReviewValueChange,
|
|
77
|
+
onSubmit,
|
|
78
|
+
reviewContents: contents,
|
|
79
|
+
sectionTitle: title,
|
|
80
|
+
children: /* @__PURE__ */ jsx(CurriculumReviewStepsInner, {})
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
var CurriculumReviewSteps_default = CurriculumReviewSteps;
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
CurriculumReviewSteps_default
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=chunk-ZI7PEVZG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx"],"sourcesContent":["import React from 'react';\nimport { type CurriculumReviewContents } from '@/types/curriculumContents.type';\nimport type { Curriculum } from '@/types'; \nimport {\n CurriculumReviewProvider,\n useCurriculumReviewContext,\n} from './curriculum-review-context';\nimport StartReview from './start-review';\nimport CompleteReview from './complete-review';\nimport ReviewQuestion from './ReviewQuestion';\n \nfunction CurriculumReviewStepsInner(): React.ReactNode {\n const {\n formik,\n step,\n handleStart,\n handleNext,\n handlePrev,\n onClickReviewMyAnswer,\n handleSubmit,\n currentQuestion,\n currentAnswer,\n currentError,\n reviewContents,\n handleAnswerChange,\n } = useCurriculumReviewContext();\n const { questions } = reviewContents;\n\n if (step === 0) {\n return <StartReview onStart={handleStart} />;\n }\n if (step > 0 && step <= questions.length && currentQuestion) {\n return (\n <ReviewQuestion\n answer={currentAnswer}\n error={currentError}\n index={step - 1}\n isLast={step === questions.length}\n isLoading={formik.isSubmitting}\n isNextDisabled={currentError !== undefined}\n onChange={handleAnswerChange}\n onNext={handleNext}\n onPrev={handlePrev}\n onSubmit={handleSubmit}\n question={currentQuestion}\n total={questions.length}\n />\n );\n }\n return <CompleteReview onClickReviewMyAnswer={onClickReviewMyAnswer} />;\n}\n\ninterface CurriculumReviewStepsProps {\n contents: CurriculumReviewContents;\n title: string | undefined;\n onClickEndReview: () => void;\n onSubmit: (values: Record<string, string>) => Promise<boolean>;\n defaultValues?: Record<string, string>;\n curriculum: Curriculum;\n onReviewValueChange: ({\n reviewId,\n answer,\n }: {\n reviewId: string;\n answer: Record<string, string>;\n }) => void;\n mode: 'edit' | 'create';\n done: boolean; \n}\n\nfunction CurriculumReviewSteps({\n contents,\n title,\n onClickEndReview,\n onSubmit,\n defaultValues,\n curriculum,\n onReviewValueChange,\n mode,\n done,\n}: CurriculumReviewStepsProps): React.ReactNode { \n\n return (\n <CurriculumReviewProvider\n curriculum={curriculum}\n defaultValues={defaultValues}\n done={done}\n mode={mode}\n onClickEndReview={onClickEndReview}\n onReviewValueChange={onReviewValueChange}\n onSubmit={onSubmit}\n reviewContents={contents}\n sectionTitle={title}\n >\n <CurriculumReviewStepsInner />\n </CurriculumReviewProvider>\n );\n}\n\nexport default CurriculumReviewSteps;\n"],"mappings":";;;;;;;;;;;;;;;AA6BW;AAlBX,SAAS,6BAA8C;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,2BAA2B;AAC/B,QAAM,EAAE,UAAU,IAAI;AAEtB,MAAI,SAAS,GAAG;AACd,WAAO,oBAAC,wBAAY,SAAS,aAAa;AAAA,EAC5C;AACA,MAAI,OAAO,KAAK,QAAQ,UAAU,UAAU,iBAAiB;AAC3D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,QAAQ,SAAS,UAAU;AAAA,QAC3B,WAAW,OAAO;AAAA,QAClB,gBAAgB,iBAAiB;AAAA,QACjC,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO,UAAU;AAAA;AAAA,IACnB;AAAA,EAEJ;AACA,SAAO,oBAAC,2BAAe,uBAA8C;AACvE;AAoBA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgD;AAE9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,cAAc;AAAA,MAEd,8BAAC,8BAA2B;AAAA;AAAA,EAC9B;AAEJ;AAEA,IAAO,gCAAQ;","names":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IconButton
|
|
3
|
+
} from "./chunk-XK6VEVOK.js";
|
|
4
|
+
import {
|
|
5
|
+
Flex
|
|
6
|
+
} from "./chunk-25HMMI7R.js";
|
|
7
|
+
import {
|
|
8
|
+
ChevronLeftIcon,
|
|
9
|
+
ChevronRightIcon,
|
|
10
|
+
DoubleArrowLeftIcon,
|
|
11
|
+
DoubleArrowRightIcon
|
|
12
|
+
} from "./chunk-LTEJYJUM.js";
|
|
13
|
+
import {
|
|
14
|
+
Typo
|
|
15
|
+
} from "./chunk-PMJIFLDT.js";
|
|
16
|
+
import {
|
|
17
|
+
__spreadProps,
|
|
18
|
+
__spreadValues
|
|
19
|
+
} from "./chunk-CRTRMMJ7.js";
|
|
20
|
+
|
|
21
|
+
// src/atoms/pagination.tsx
|
|
22
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
23
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
24
|
+
function Pagination(props) {
|
|
25
|
+
const { onChange, count = 0, siblingCount = 2 } = props;
|
|
26
|
+
const [page, setPage] = useState(() => props.page || props.defaultPage || 1);
|
|
27
|
+
const visibleItems = useMemo(() => {
|
|
28
|
+
let start = Math.max(1, page - siblingCount);
|
|
29
|
+
let end = Math.min(count, page + siblingCount);
|
|
30
|
+
if (page - siblingCount <= 0 && end < count) {
|
|
31
|
+
end = Math.min(count, end + Math.abs(page - siblingCount) + 1);
|
|
32
|
+
} else if (page + siblingCount > count && start > 1) {
|
|
33
|
+
start = Math.max(1, start - (page + siblingCount - count));
|
|
34
|
+
}
|
|
35
|
+
return Array.from({ length: end - start + 1 }, (_, i) => i + start);
|
|
36
|
+
}, [count, page, siblingCount]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
onChange == null ? void 0 : onChange(page);
|
|
39
|
+
}, [onChange, page]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (props.page) {
|
|
42
|
+
setPage(props.page);
|
|
43
|
+
}
|
|
44
|
+
}, [props.page]);
|
|
45
|
+
const prev = useMemo(() => {
|
|
46
|
+
const p = page - 1;
|
|
47
|
+
return p < 1 ? void 0 : p;
|
|
48
|
+
}, [page]);
|
|
49
|
+
const next = useMemo(() => {
|
|
50
|
+
const n = page + 1;
|
|
51
|
+
return n > count ? void 0 : n;
|
|
52
|
+
}, [count, page]);
|
|
53
|
+
const onClickPrev = useCallback(() => {
|
|
54
|
+
prev && setPage(prev);
|
|
55
|
+
}, [prev]);
|
|
56
|
+
const onClickNext = useCallback(() => {
|
|
57
|
+
next && setPage(next);
|
|
58
|
+
}, [next]);
|
|
59
|
+
const doublePrev = useMemo(() => {
|
|
60
|
+
if (!visibleItems.length) return;
|
|
61
|
+
return Math.max(0, visibleItems[0] - 1);
|
|
62
|
+
}, [visibleItems]);
|
|
63
|
+
const onClickDoublePrev = useCallback(() => {
|
|
64
|
+
doublePrev && setPage(doublePrev);
|
|
65
|
+
}, [doublePrev]);
|
|
66
|
+
const doubleNext = useMemo(() => {
|
|
67
|
+
if (!visibleItems.length) return;
|
|
68
|
+
const n = visibleItems[visibleItems.length - 1] + 1;
|
|
69
|
+
if (n > count) return;
|
|
70
|
+
return Math.min(count, n);
|
|
71
|
+
}, [count, visibleItems]);
|
|
72
|
+
const onClickDoubleNext = useCallback(() => {
|
|
73
|
+
doubleNext && setPage(doubleNext);
|
|
74
|
+
}, [doubleNext]);
|
|
75
|
+
const iconSize = {
|
|
76
|
+
height: 24,
|
|
77
|
+
width: 24
|
|
78
|
+
};
|
|
79
|
+
const moveButtonProps = {
|
|
80
|
+
variant: "ghost",
|
|
81
|
+
size: "large",
|
|
82
|
+
style: { borderRadius: "50%" }
|
|
83
|
+
};
|
|
84
|
+
return /* @__PURE__ */ jsxs(Flex, { align: "center", className: "tipp-pagination", children: [
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
IconButton,
|
|
87
|
+
__spreadProps(__spreadValues({
|
|
88
|
+
disabled: !doublePrev,
|
|
89
|
+
onClick: onClickDoublePrev
|
|
90
|
+
}, moveButtonProps), {
|
|
91
|
+
children: /* @__PURE__ */ jsx(DoubleArrowLeftIcon, __spreadValues({}, iconSize))
|
|
92
|
+
})
|
|
93
|
+
),
|
|
94
|
+
/* @__PURE__ */ jsx(IconButton, __spreadProps(__spreadValues({ disabled: !prev, onClick: onClickPrev }, moveButtonProps), { children: /* @__PURE__ */ jsx(ChevronLeftIcon, __spreadValues({}, iconSize)) })),
|
|
95
|
+
/* @__PURE__ */ jsx(Flex, { gap: "1", children: visibleItems.map((item) => {
|
|
96
|
+
return /* @__PURE__ */ jsx(
|
|
97
|
+
"button",
|
|
98
|
+
{
|
|
99
|
+
className: `page-button ${item === page ? "active" : ""}`,
|
|
100
|
+
onClick: () => {
|
|
101
|
+
setPage(item);
|
|
102
|
+
},
|
|
103
|
+
type: "button",
|
|
104
|
+
children: /* @__PURE__ */ jsx(Typo, { variant: "body", children: item })
|
|
105
|
+
},
|
|
106
|
+
item
|
|
107
|
+
);
|
|
108
|
+
}) }),
|
|
109
|
+
/* @__PURE__ */ jsx(IconButton, __spreadProps(__spreadValues({ disabled: !next, onClick: onClickNext }, moveButtonProps), { children: /* @__PURE__ */ jsx(ChevronRightIcon, __spreadValues({}, iconSize)) })),
|
|
110
|
+
/* @__PURE__ */ jsx(
|
|
111
|
+
IconButton,
|
|
112
|
+
__spreadProps(__spreadValues({
|
|
113
|
+
disabled: !doubleNext,
|
|
114
|
+
onClick: onClickDoubleNext
|
|
115
|
+
}, moveButtonProps), {
|
|
116
|
+
children: /* @__PURE__ */ jsx(DoubleArrowRightIcon, __spreadValues({}, iconSize))
|
|
117
|
+
})
|
|
118
|
+
)
|
|
119
|
+
] });
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export {
|
|
123
|
+
Pagination
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=chunk-ZKFNOCWD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/atoms/pagination.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from '../icon';\nimport type { IconButtonProps } from './icon-button';\nimport { IconButton } from './icon-button';\nimport { Flex } from './flex';\nimport { Typo } from './typo';\n\nexport interface PaginationProps {\n /** 현재 선택된 페이지, 1부터 시작 */\n page?: number;\n /** 기본 선택 페이지, page보다 낮은 우선 순위를 갖는다 */\n defaultPage?: number;\n /** 선택한 페이지 변경 이벤트 cb */\n onChange?: (page: number) => void;\n /** 전체 페이지의 수 */\n count?: number;\n /** 표시할 페이지 버튼의 개수 */\n siblingCount?: number;\n}\n\nexport function Pagination(props: PaginationProps): React.ReactNode {\n const { onChange, count = 0, siblingCount = 2 } = props;\n\n const [page, setPage] = useState(() => props.page || props.defaultPage || 1);\n\n const visibleItems = useMemo(() => {\n let start = Math.max(1, page - siblingCount);\n let end = Math.min(count, page + siblingCount);\n if (page - siblingCount <= 0 && end < count) {\n end = Math.min(count, end + Math.abs(page - siblingCount) + 1);\n } else if (page + siblingCount > count && start > 1) {\n start = Math.max(1, start - (page + siblingCount - count));\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => i + start);\n }, [count, page, siblingCount]);\n\n useEffect(() => {\n onChange?.(page);\n }, [onChange, page]);\n\n useEffect(() => {\n if (props.page) {\n setPage(props.page);\n }\n }, [props.page]);\n\n const prev = useMemo<number | undefined>(() => {\n const p = page - 1;\n return p < 1 ? undefined : p;\n }, [page]);\n\n const next = useMemo<number | undefined>(() => {\n const n = page + 1;\n return n > count ? undefined : n;\n }, [count, page]);\n\n const onClickPrev = useCallback(() => {\n prev && setPage(prev);\n }, [prev]);\n\n const onClickNext = useCallback(() => {\n next && setPage(next);\n }, [next]);\n\n const doublePrev = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n return Math.max(0, visibleItems[0] - 1);\n }, [visibleItems]);\n\n const onClickDoublePrev = useCallback(() => {\n doublePrev && setPage(doublePrev);\n }, [doublePrev]);\n\n const doubleNext = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n const n = visibleItems[visibleItems.length - 1] + 1;\n if (n > count) return;\n return Math.min(count, n);\n }, [count, visibleItems]);\n\n const onClickDoubleNext = useCallback(() => {\n doubleNext && setPage(doubleNext);\n }, [doubleNext]);\n\n const iconSize = {\n height: 24,\n width: 24,\n };\n\n const moveButtonProps: IconButtonProps = {\n variant: 'ghost',\n size: 'large',\n style: { borderRadius: '50%' },\n };\n\n return (\n <Flex align=\"center\" className=\"tipp-pagination\">\n <IconButton\n disabled={!doublePrev}\n onClick={onClickDoublePrev}\n {...moveButtonProps}\n >\n <DoubleArrowLeftIcon {...iconSize} />\n </IconButton>\n <IconButton disabled={!prev} onClick={onClickPrev} {...moveButtonProps}>\n <ChevronLeftIcon {...iconSize} />\n </IconButton>\n <Flex gap=\"1\">\n {visibleItems.map((item) => {\n return (\n <button\n className={`page-button ${item === page ? 'active' : ''}`}\n key={item}\n onClick={() => {\n setPage(item);\n }}\n type=\"button\"\n >\n <Typo variant=\"body\">{item}</Typo>\n </button>\n );\n })}\n </Flex>\n <IconButton disabled={!next} onClick={onClickNext} {...moveButtonProps}>\n <ChevronRightIcon {...iconSize} />\n </IconButton>\n <IconButton\n disabled={!doubleNext}\n onClick={onClickDoubleNext}\n {...moveButtonProps}\n >\n <DoubleArrowRightIcon {...iconSize} />\n </IconButton>\n </Flex>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAgB,aAAa,WAAW,SAAS,gBAAgB;AAsG7D,SAMI,KANJ;AA7EG,SAAS,WAAW,OAAyC;AAClE,QAAM,EAAE,UAAU,QAAQ,GAAG,eAAe,EAAE,IAAI;AAElD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,MAAM,QAAQ,MAAM,eAAe,CAAC;AAE3E,QAAM,eAAe,QAAQ,MAAM;AACjC,QAAI,QAAQ,KAAK,IAAI,GAAG,OAAO,YAAY;AAC3C,QAAI,MAAM,KAAK,IAAI,OAAO,OAAO,YAAY;AAC7C,QAAI,OAAO,gBAAgB,KAAK,MAAM,OAAO;AAC3C,YAAM,KAAK,IAAI,OAAO,MAAM,KAAK,IAAI,OAAO,YAAY,IAAI,CAAC;AAAA,IAC/D,WAAW,OAAO,eAAe,SAAS,QAAQ,GAAG;AACnD,cAAQ,KAAK,IAAI,GAAG,SAAS,OAAO,eAAe,MAAM;AAAA,IAC3D;AAEA,WAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,KAAK;AAAA,EACpE,GAAG,CAAC,OAAO,MAAM,YAAY,CAAC;AAE9B,YAAU,MAAM;AACd,yCAAW;AAAA,EACb,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,YAAU,MAAM;AACd,QAAI,MAAM,MAAM;AACd,cAAQ,MAAM,IAAI;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,MAAM,IAAI,CAAC;AAEf,QAAM,OAAO,QAA4B,MAAM;AAC7C,UAAM,IAAI,OAAO;AACjB,WAAO,IAAI,IAAI,SAAY;AAAA,EAC7B,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,OAAO,QAA4B,MAAM;AAC7C,UAAM,IAAI,OAAO;AACjB,WAAO,IAAI,QAAQ,SAAY;AAAA,EACjC,GAAG,CAAC,OAAO,IAAI,CAAC;AAEhB,QAAM,cAAc,YAAY,MAAM;AACpC,YAAQ,QAAQ,IAAI;AAAA,EACtB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,cAAc,YAAY,MAAM;AACpC,YAAQ,QAAQ,IAAI;AAAA,EACtB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,aAAa,QAA4B,MAAM;AACnD,QAAI,CAAC,aAAa,OAAQ;AAC1B,WAAO,KAAK,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAAA,EACxC,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,oBAAoB,YAAY,MAAM;AAC1C,kBAAc,QAAQ,UAAU;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,aAAa,QAA4B,MAAM;AACnD,QAAI,CAAC,aAAa,OAAQ;AAC1B,UAAM,IAAI,aAAa,aAAa,SAAS,CAAC,IAAI;AAClD,QAAI,IAAI,MAAO;AACf,WAAO,KAAK,IAAI,OAAO,CAAC;AAAA,EAC1B,GAAG,CAAC,OAAO,YAAY,CAAC;AAExB,QAAM,oBAAoB,YAAY,MAAM;AAC1C,kBAAc,QAAQ,UAAU;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,WAAW;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEA,QAAM,kBAAmC;AAAA,IACvC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO,EAAE,cAAc,MAAM;AAAA,EAC/B;AAEA,SACE,qBAAC,QAAK,OAAM,UAAS,WAAU,mBAC7B;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC;AAAA,QACX,SAAS;AAAA,SACL,kBAHL;AAAA,QAKC,8BAAC,wCAAwB,SAAU;AAAA;AAAA,IACrC;AAAA,IACA,oBAAC,2CAAW,UAAU,CAAC,MAAM,SAAS,eAAiB,kBAAtD,EACC,8BAAC,oCAAoB,SAAU,IACjC;AAAA,IACA,oBAAC,QAAK,KAAI,KACP,uBAAa,IAAI,CAAC,SAAS;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,eAAe,SAAS,OAAO,WAAW,EAAE;AAAA,UAEvD,SAAS,MAAM;AACb,oBAAQ,IAAI;AAAA,UACd;AAAA,UACA,MAAK;AAAA,UAEL,8BAAC,QAAK,SAAQ,QAAQ,gBAAK;AAAA;AAAA,QANtB;AAAA,MAOP;AAAA,IAEJ,CAAC,GACH;AAAA,IACA,oBAAC,2CAAW,UAAU,CAAC,MAAM,SAAS,eAAiB,kBAAtD,EACC,8BAAC,qCAAqB,SAAU,IAClC;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC;AAAA,QACX,SAAS;AAAA,SACL,kBAHL;AAAA,QAKC,8BAAC,yCAAyB,SAAU;AAAA;AAAA,IACtC;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useCurriculumContext
|
|
3
|
+
} from "./chunk-Y7SJF3Y3.js";
|
|
4
|
+
import {
|
|
5
|
+
Flex
|
|
6
|
+
} from "./chunk-25HMMI7R.js";
|
|
7
|
+
import {
|
|
8
|
+
Button
|
|
9
|
+
} from "./chunk-ZVDAEY5Q.js";
|
|
10
|
+
import {
|
|
11
|
+
ResetIcon
|
|
12
|
+
} from "./chunk-LTEJYJUM.js";
|
|
13
|
+
import {
|
|
14
|
+
Typo
|
|
15
|
+
} from "./chunk-PMJIFLDT.js";
|
|
16
|
+
|
|
17
|
+
// src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx
|
|
18
|
+
import { useMemo } from "react";
|
|
19
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
|
+
function CurriculumAiTraning({
|
|
21
|
+
item
|
|
22
|
+
}) {
|
|
23
|
+
const { title, description, buttonTitle } = item;
|
|
24
|
+
const { curriculumCompleteMap, onActionButtonClick } = useCurriculumContext();
|
|
25
|
+
const done = useMemo(() => {
|
|
26
|
+
return Boolean(curriculumCompleteMap[item.uuid]);
|
|
27
|
+
}, [curriculumCompleteMap, item.uuid]);
|
|
28
|
+
const bgColor = done ? "var(--color-panel-solid)" : void 0;
|
|
29
|
+
return /* @__PURE__ */ jsxs(
|
|
30
|
+
Flex,
|
|
31
|
+
{
|
|
32
|
+
align: "center",
|
|
33
|
+
direction: "column",
|
|
34
|
+
height: "100%",
|
|
35
|
+
justify: "center",
|
|
36
|
+
style: {
|
|
37
|
+
backgroundImage: `url(https://tipp-coaching-live.s3.ap-northeast-2.amazonaws.com/images/curriculum_ai_bg.png)`,
|
|
38
|
+
backgroundPosition: "center",
|
|
39
|
+
backgroundSize: "cover",
|
|
40
|
+
backgroundRepeat: "no-repeat"
|
|
41
|
+
},
|
|
42
|
+
width: "100%",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsx(Typo, { color: "gray", weight: "bold", children: title }),
|
|
45
|
+
/* @__PURE__ */ jsx(Typo, { align: "center", as: "p", color: "gray", children: description }),
|
|
46
|
+
/* @__PURE__ */ jsxs(
|
|
47
|
+
Button,
|
|
48
|
+
{
|
|
49
|
+
mt: "3",
|
|
50
|
+
onClick: () => {
|
|
51
|
+
onActionButtonClick(item);
|
|
52
|
+
},
|
|
53
|
+
style: { minWidth: 232, backgroundColor: bgColor },
|
|
54
|
+
variant: done ? "outline" : "solid",
|
|
55
|
+
children: [
|
|
56
|
+
done ? "\uB2E4\uC2DC \uC5F0\uC2B5\uD558\uAE30" : buttonTitle || "\uC2DC\uC791\uD558\uAE30",
|
|
57
|
+
done ? /* @__PURE__ */ jsx(ResetIcon, {}) : null
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
var curriculum_ai_traning_default = CurriculumAiTraning;
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
curriculum_ai_traning_default
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=chunk-ZOITFRX7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport type { CurriculumAiTrainingContents } from '@/types/curriculumContents.type';\nimport { Button } from '@/atoms/button';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport { ResetIcon } from '@/icon';\nimport { useCurriculumContext } from '../curriculum-context';\n\ninterface CurriculumAiTraningProps {\n item: CurriculumAiTrainingContents;\n}\n\nfunction CurriculumAiTraning({\n item,\n}: CurriculumAiTraningProps): React.ReactNode {\n const { title, description, buttonTitle } = item;\n const { curriculumCompleteMap, onActionButtonClick } = useCurriculumContext();\n\n const done = useMemo(() => {\n return Boolean(curriculumCompleteMap[item.uuid]);\n }, [curriculumCompleteMap, item.uuid]);\n\n const bgColor= done ? 'var(--color-panel-solid)' : undefined;\n\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"100%\"\n justify=\"center\"\n style={{\n backgroundImage: `url(https://tipp-coaching-live.s3.ap-northeast-2.amazonaws.com/images/curriculum_ai_bg.png)`,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n }}\n width=\"100%\"\n >\n <Typo color=\"gray\" weight=\"bold\">\n {title}\n </Typo>\n <Typo align=\"center\" as=\"p\" color=\"gray\">\n {description}\n </Typo>\n\n <Button\n mt=\"3\"\n onClick={() => { onActionButtonClick(item); }}\n style={{ minWidth: 232, backgroundColor: bgColor }}\n variant={done ? 'outline' : 'solid'}\n >\n {done ? '다시 연습하기' : buttonTitle || '시작하기'}\n {done ? <ResetIcon/> : null}\n </Button>\n \n </Flex>\n );\n}\n\nexport default CurriculumAiTraning;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAgB,eAAe;AAsCzB,cAOA,YAPA;AA1BN,SAAS,oBAAoB;AAAA,EAC3B;AACF,GAA8C;AAC5C,QAAM,EAAE,OAAO,aAAa,YAAY,IAAI;AAC5C,QAAM,EAAE,uBAAuB,oBAAoB,IAAI,qBAAqB;AAE5E,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO,QAAQ,sBAAsB,KAAK,IAAI,CAAC;AAAA,EACjD,GAAG,CAAC,uBAAuB,KAAK,IAAI,CAAC;AAErC,QAAM,UAAU,OAAO,6BAA6B;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAU;AAAA,MACV,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA,MACA,OAAM;AAAA,MAEN;AAAA,4BAAC,QAAK,OAAM,QAAO,QAAO,QACvB,iBACH;AAAA,QACA,oBAAC,QAAK,OAAM,UAAS,IAAG,KAAI,OAAM,QAC/B,uBACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,SAAS,MAAM;AAAE,kCAAoB,IAAI;AAAA,YAAG;AAAA,YAC5C,OAAO,EAAE,UAAU,KAAK,iBAAiB,QAAQ;AAAA,YACjD,SAAS,OAAO,YAAY;AAAA,YAE3B;AAAA,qBAAO,0CAAY,eAAe;AAAA,cAClC,OAAO,oBAAC,aAAS,IAAK;AAAA;AAAA;AAAA,QACzB;AAAA;AAAA;AAAA,EAEF;AAEJ;AAEA,IAAO,gCAAQ;","names":[]}
|