{"version":3,"sources":["Pages/TheF2E/Scrum/styles.module.scss","Pages/TheF2E/Web2/styles.module.scss","Pages/Home/styles.module.scss","Pages/TheF2E/Sign/styles.module.scss","Pages/DrinkOrder/styles.module.scss","Pages/KittyGallery/List/styles.module.scss","Pages/Home/Totoro/PopContent/styles.module.scss","Component/GoHome/styles.module.scss","Pages/Excel/styles.module.scss","Pages/KittyGallery/Login/styles.module.scss","Pages/KittyGallery/styles.module.scss","Component/Loading/styles.module.scss","Pages/KittyGallery/Upload/styles.module.scss","Pages/KittyGallery/Favorite/styles.module.scss","Pages/emptyPage/styles.module.scss","Pages/Animation/SunAndMoon/styles.module.scss","Pages/Animation/Monsters/styles.module.scss","Pages/Animation/Loading/styles.module.scss","Pages/Animation/Menu/styles.module.scss","Pages/TheF2E/styles.module.scss","Pages/Games/CardMemory/styles.module.scss","Pages/Games/Snake/styles.module.scss","Pages/Games/Minesweeper/styles.module.scss","Pages/Games/styles.module.scss","Pages/CurriculumVitae/styles.module.scss","Component/PopWindow/styles.module.scss","Component/Footer/styles.module.scss","Pages/Home/Main/TaiwanIcon.js","Pages/Home/Main/index.js","image/home_section_2.jpg","Pages/Home/AboutMe/index.js","image/home_portfolios_message_board.jpg","image/home_portfolios_form.jpg","image/home_portfolios_kittyGarelly.jpg","image/home_protfolios_animation_2.jpg","image/home_protfolios_animation.jpg","image/home_games.jpg","image/home_ghibli_totoro.jpg","image/home_ghibli_totoro_busStation.jpg","image/home_ghibli_totoro_face.jpg","image/home_ghibli_totoro_father.jpg","image/home_ghibli_totoro_cry.jpg","image/home_ghibli_totoro_bus.jpg","Pages/Home/datas.js","Pages/Home/Portfolios/index.js","Pages/Home/Experience/index.js","Context/PopWindow/Context.js","Context/PopWindow/withPopWindowProvider.js","Context/PopWindow/withPopWindowConsumer.js","Pages/Home/Totoro/PopContent/index.js","Pages/Home/Totoro/index.js","Pages/Home/index.js","Component/GoHome/index.js","Pages/Excel/index.js","Pages/DrinkOrder/datas.js","Pages/DrinkOrder/Add/index.js","Pages/DrinkOrder/List/index.js","Pages/DrinkOrder/index.js","Context/Auth/Context.js","Context/Auth/withAuthProvider.js","Context/Auth/withAuthConsumer.js","Pages/KittyGallery/Login/index.js","image/kittyGarelly_avatar.jpg","Pages/KittyGallery/index.js","Utils/requestHandler.js","apis/gallery.js","Component/Loading/index.js","Pages/KittyGallery/Upload/index.js","Pages/KittyGallery/Favorite/index.js","Pages/KittyGallery/List/GalleryList.js","Pages/KittyGallery/List/MasonryLayout.js","Pages/KittyGallery/List/index.js","Pages/emptyPage/index.js","Pages/Animation/SunAndMoon/SunAndMoon.js","Pages/Animation/SunAndMoon/index.js","Pages/Animation/Monsters/Monsters.js","Pages/Animation/Monsters/index.js","Pages/Animation/Loading/Loading.js","Pages/Animation/Loading/index.js","Pages/Animation/Menu/Menu.js","Pages/Animation/Menu/index.js","Pages/Animation/index.js","image/F2E_web/caterpillar.png","image/F2E_web/butterfly.png","Pages/TheF2E/Web2/Loading.js","Pages/TheF2E/Web2/Header.js","Pages/TheF2E/Web2/Banner.js","Pages/TheF2E/Web2/Questions.js","image/F2E_web/topic_design.png","Pages/TheF2E/Web2/Topic.js","image/F2E_web/topic_div.png","Pages/TheF2E/Web2/Stage.js","image/F2E_web/sponsor_block.png","image/F2E_web/sponsor_kdan.png","image/F2E_web/sponsor_titan.png","Pages/TheF2E/Web2/Sponsor.js","Pages/TheF2E/Web2/Web.js","Pages/TheF2E/Web2/index.js","Pages/TheF2E/Sign/SignArea.js","Pages/TheF2E/Sign/Spinner.js","Pages/TheF2E/Sign/Tutorial.js","Pages/TheF2E/Sign/Sign.js","Pages/TheF2E/Sign/index.js","Pages/TheF2E/Scrum/Assets/images/logo_txt.png","Pages/TheF2E/Scrum/Assets/images/bg_leafTint_3_t.png","Pages/TheF2E/Scrum/Assets/images/bg_leafTint_4_rb.png","Pages/TheF2E/Scrum/Assets/images/bg_leafTint_2_lb.png","Pages/TheF2E/Scrum/Assets/images/bg_leafTint_1_lt.png","Pages/TheF2E/Scrum/Assets/images/jira_logo.png","Pages/TheF2E/Scrum/Assets/images/sprint.png","Pages/TheF2E/Scrum/Assets/images/planning_team.png","Pages/TheF2E/Scrum/Assets/images/sprintPlan.png","Pages/TheF2E/Scrum/Assets/images/clock.png","Pages/TheF2E/Scrum/Assets/images/book.png","Pages/TheF2E/Scrum/Assets/images/sprint_daily.png","Pages/TheF2E/Scrum/Assets/images/sprint_review.png","Pages/TheF2E/Scrum/Assets/images/sprint_retro.png","Pages/TheF2E/Scrum/Assets/images/Role_po.png","Pages/TheF2E/Scrum/Assets/images/Role_mm.png","Pages/TheF2E/Scrum/Assets/images/Role_ee.png","Pages/TheF2E/Scrum/Assets/images/Role_gg.png","Pages/TheF2E/Scrum/Components/Button.js","Pages/TheF2E/Scrum/Components/Role.js","Pages/TheF2E/Scrum/Components/Dialog.js","Pages/TheF2E/Scrum/Scenes/Entry.js","Pages/TheF2E/Scrum/Components/List.js","Pages/TheF2E/Scrum/Scenes/ProductBacklog.js","Pages/TheF2E/Scrum/Scenes/Planning.js","Pages/TheF2E/Scrum/Scenes/SprintTask.js","Pages/TheF2E/Scrum/Scenes/SprintIntro.js","Pages/TheF2E/Scrum/Scenes/Retro.js","Pages/TheF2E/Scrum/Scenes/Complete.js","Pages/TheF2E/Scrum/Components/Progress.js","Pages/TheF2E/Scrum/Scenes/NotAvailable.js","Pages/TheF2E/Scrum/Scrum2.js","Pages/TheF2E/Scrum/index.js","Pages/TheF2E/index.js","image/games/card1.jpg","image/games/card2.jpg","image/games/card3.jpg","image/games/card4.jpg","image/games/card5.jpg","image/games/card6.jpg","image/games/card_bg.jpg","Pages/Games/CardMemory/index.js","Pages/Games/Snake/index.js","Pages/Games/Minesweeper/index.js","Pages/Games/index.js","image/avatar.jpg","Pages/CurriculumVitae/index.js","Config/routes.js","Component/PopWindow/index.js","Component/Footer/index.js","App.js","reportWebVitals.js","fonts/cubic/Cubic_11_1.013_R.ttf","index.js"],"names":["module","exports","cx","classNames","bind","classes","Main","isShrink","setIsShrink","useState","useEffect","scrollHandler","e","window","scrollY","addEventListener","removeEventListener","_jsxs","className","children","_jsx","src","alt","AboutMe","mainPic","portfolios","id","title","description","image","thef2e","animation","form","games","message_borad","KittyGallery","slideData","subTitle","director","performers","totoro","totoro_busStation","totoro_cry","totoro_father","totoro_face","totoro_bus","Portfolios","_widthRef$current2","widthRef","useRef","width","setWidth","changeWidth","_widthRef$current","current","clientWidth","ref","map","portfolio","idx","Link","to","style","height","BsChatSquareQuote","Experience","href","target","rel","Context","createContext","Provider","Consumer","withPopWindowProvider","WrappedComponent","WithPopWindowProvider","popWindowData","setPopWindowData","isOpenPopWindow","openPopWindowFunc","_ref","popContent","buttons","prevState","closePopWindowFunc","value","withPopWindowConsumer","props","values","PopContent","data","slidePosition","setSlidePosition","goSlide","index","position","length","onClick","BsChevronCompactLeft","left","slide","BsChevronCompactRight","withRouter","Home","Helmet","Totoro","GoHome","BsHouseFill","Naughty","_tableData$","_tableData$2","_tableData$3","_tableData$4","_tableData$5","uploadRef","colums","tableData","setTableData","fileName","setFileName","type","click","downloadFile","wb","XLSX","utils","book_new","ws","aoa_to_sheet","book_append_sheet","writeFile","accept","onChange","files","f","reader","FileReader","onload","Uint8Array","result","workbook","read","first_sheet_name","SheetNames","worksheet","Sheets","indexOf","numArr","substring","split","numIndex","findIndex","el","isNaN","totalRow","slice","join","datas","i","forEach","_worksheet$key","key","v","push","name","readAsArrayBuffer","A","B","C","D","E","tr","menu","KEBUKE","itemName","price","CHUNYANG","orderList","date","list","member","memberName","item","unit","ice","sugar","other","iceOptions","text","sugarOptions","otherOptions","Add","listData","updateListFunc","useContext","OrderContext","nowShowId","setNowShowId","formContent","setFormContent","find","errMessage","setErrMessage","isLoading","setIsLoading","feedback","setFeedback","isShow","info","getMenuList","saveValue","obj","order","disabled","checked","for","checkbox","arr","filter","role","sendForm","results","Object","keys","isInValid","toString","some","setTimeout","List","scope","drink","element","React","DrinkOrder","setListData","routes","component","button","icon","BsChevronDoubleRight","goMode","BsPlusCircle","mode","setMode","providerData","addListFunc","withAuthProvider","WithAuthProvider","storageKey","assets_token","authData","setAuthData","isLogin","sessionStorage","getItem","JSON","parse","token","changeLoginStatusFunc","arguments","undefined","setItem","stringify","removeItem","changeLoginStatus","withAuthConsumer","formData","setFormData","username","password","message","validValues","every","location","history","pathname","galleryRoutes","path","kittyAvatar","GarellyLogin","Switch","route","Route","exact","render","routeProps","Redirect","requestHandler","method","requestUrl","options","axios","url","then","async","response","catch","error","getImagesListAPI","params","headers","contentType","deleteFavouritesAPI","favoriteId","Loading","fetchListener","imgRef","fileData","setFileData","blob","imgsrc","from","getUploadListAPI","limit","page","subscribe","res","status","unsubscribe","display","size","URL","createObjectURL","alert","BsImage","uploadFile","FormData","append","postImagesUploadAPI","img","removeTarget","setRemoveTarget","removeFavorite","getFavoriteListAPI","Fragment","BsFillHeartFill","nowPage","isRest","favoriteList","setFavoriteList","setFavorite","imageId","image_id","postFavouritesAPI","getList","Array","x","colum","BsHeart","InView","as","inView","MasonryLayout","setDatas","setNowPage","_Fragment","Sample","MOON","SunAndMoon","nowScene","setNowScene","counter","setCounter","getSize","scale","range","onMouseUp","toggleScene","star","RiSeedlingFill","bottom","MIN_GROW_STEP","opacity","Math","pow","Monsters","ballPosition","setBallPosition","isReverseX","isReverseY","y","ballAnimation","setInterval","moveBall","prev","innerWidth","innerHeight","clearInterval","top","percent","setPercent","time","Menu","label","CONTENT_LIST","MainPage","nowIndex","setNowIndex","scrollScene","scrollTo","handleScroll","nowArea","floor","content","img_caterpillar","img_butterfly","Header","BsList","Banner","BsArrowRightShort","ITEMS","Questions","preScroll","_ref$current","offsetTop","isReach","ceil","Topic","blockRef","setIsReach","_blockRef$current","document","img_design","week","subject","hashTags","uiPeriod","fronendPeriod","Stage","isFront","setIsFront","onMouseDown","handleClick","direction","tag","BsFillForwardFill","Sponsor","areaRef","setIsShow","_areaRef$current","BsStars","img_kdan","img_titan","img_block","Web","property","SignArea","visible","onSave","onClose","canvasRef","canvas","ctx","getContext","borderColor","lineWidth","lineCap","isPainting","startPosition","preventDefault","finishedPosition","beginPath","draw","paintPosition","canvasSize","getBoundingClientRect","clientX","clientY","touches","getPaintPosition","lineTo","stroke","BsPlusLg","handleClear","clearRect","handleSave","newImg","toDataURL","BsCheck2Square","Spinner","Tutorial","BsPen","BsUpload","BsPencilSquare","BsDownload","pdfjs","require","GlobalWorkerOptions","workerSrc","version","Sign","fabricRef","isOpenSignArea","setIsOpenSignArea","hasUploadPdf","setHasUploadPdf","hasSign","setHasSign","isInitial","setIsInitial","printPDF","pdfData","Promise","resolve","reject","readAsDataURL","atob","pdfDoc","getDocument","promise","pdfPage","getPage","viewport","getViewport","devicePixelRatio","createElement","context","renderContext","canvasContext","fabric","Canvas","dispose","placeholder","pdfImage","Image","scaleX","scaleY","pdfToImage","setHeight","setBackgroundImage","renderAll","handleOpen","pdf","jsPDF","internal","pageSize","addImage","save","fromURL","add","handleClose","handleCloseTutorial","DEFAULT","OUTLINE","BUTTON_TYPES","Button","defaultProps","propType","PropTyps","oneOf","string","isRequired","bool","func","ROLE_NAMES","DOWN","ROLE_DIRECTIONS","Role","getImgSrc","img_role_mm","img_role_ee","img_role_gg","img_role_po","transform","THEMES","Dialog","speaker","isShowTriangle","Entry","isDefaultScene","setIsDefaultScene","img_leaf_top","img_leaf_right","img_leaf_bottom","img_leaf_left","img_logo","changeScene","goNextStep","goStep","STEPS_KEY","PRODUCT_BACKLOG","GREEN","LIST_THEME","SOLID","LIST_ITEM_TYPE","_ref2","subtitle","theme","Item","SCENES","PARAGRAPH","img_jira","ProductBacklog","isDemoActive","setIsDemoActive","listItems","setListItems","nanoid","center","right","handleClickReady","handleClickFinished","handleDragEnd","event","source","destination","draggedItems","dragTarget","droppableId","splice","handleClickContinue","behavior","PLANNING","renderContent","DragDropContext","onDragEnd","Droppable","provided","innerRef","droppableProps","Draggable","draggableId","snapshot","draggableProps","dragHandleProps","OPENING","INTRO_SM","INTRO_RD","STORY_POINT","FIBONACCI","ENDING","ENDING2","header","roles","paragraph","body","img_sprint","footer","img_planning_team","img_sprint_plan","img_clock","img_book","SCENES_ORDER","defaultScene","Planning","footerRef","headerReverse","handleChangeScene","SPRINT_TASK","includes","scene","SPRINT_BACKLOG","LIST_ITEMS","point","DRAG","COMPLETE","SprintTask","totalPoint","reduce","acc","SPRINT_INTRO","handleClickComplete","INTRO","PROCESS","END","INTRO_STEPS","imgSrc","img_daily","img_review","img_retro","SprintIntro","upperRef","introStep","setIntroStep","processStep","setProcessStep","offsetHeight","RETRO","EXAMPLE","Retro","exampleStep","setExampleStep","BiCheck","Complete","handleReStart","ENTRY","Progress","nowStep","handleClickStep","NotAvailable","isMobile","createEvent","SCENE","Scrum","useLocation","useHistory","querys","qs","search","ignoreQueryPrefix","step","setNowStep","handleChangeStep","WEB","SIGN","SCRUM","TABS","Page","tab","nowTab","setNowTab","handleClickTab","AiOutlineMenu","renderTabContent","CARD_IMAGES","imgUrl","CARD1","CARD2","CARD3","CARD4","CARD5","CARD6","CardMemory","cards","setCards","firstChoice","setfirstChoice","secondChoice","setSecondChoice","setDisabled","clearChoice","handleRestart","shuffledCards","sort","random","card","matched","handleMatch","matchedArray","beChoiced","CARD_BG","INITIAL_SNAKE","RIGHT","LEFT","UP","generateFruit","Snake","snake","setSnake","fruit","setFruit","setDirection","speed","setSpeed","stop","setStop","timer","head","snakeCopy","newFruit","prevSpeed","pop","handleChangeDirection","_","colX","colY","Minesweeper","CARD_MEMORY","SNAKE","MINESWEEPER","Games","SiRobotframework","Excel","TheF2E","Animation","avatar","AiFillPhone","AiTwotoneMail","AiOutlineGlobal","AiFillEnvironment","GarellyList","GarellyFavorite","GarellyUpload","DESIGNER","QUERY_TAB","link","QUERY_SCRUM","Footer","hasDesigner","replace","queryTab","GiCherish","Date","getFullYear","BrowserRouter","PopWidnow","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","App","getElementById"],"mappings":"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","file":"static/js/main.da1d5706.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"planning\":\"styles_planning__1x4u7\",\"body\":\"styles_body__3SsKF\",\"opening\":\"styles_opening__30HbP\",\"introSM\":\"styles_introSM__1pHSq\",\"introRD\":\"styles_introRD__RPZQf\",\"storyPoint\":\"styles_storyPoint__1oaRL\",\"fibonacci\":\"styles_fibonacci__2r7fh\",\"ending\":\"styles_ending__1J2AL\",\"notAvailable\":\"styles_notAvailable__1JY6J\",\"wrapper\":\"styles_wrapper__3yY9S\",\"button\":\"styles_button__23PVD\",\"outline\":\"styles_outline__2sAsr\",\"dialog\":\"styles_dialog__1RtKJ\",\"speaker\":\"styles_speaker__3prZ1\",\"triangle\":\"styles_triangle__M2hoD\",\"jumping\":\"styles_jumping__2jVwo\",\"purple\":\"styles_purple__24DYU\",\"red\":\"styles_red__YAIuS\",\"yellow\":\"styles_yellow__1XC-H\",\"list\":\"styles_list__5j9gg\",\"header\":\"styles_header__3Poxe\",\"listItem\":\"styles_listItem___bL63\",\"dashed\":\"styles_dashed__2tZyo\",\"progress\":\"styles_progress__1aEl8\",\"dot\":\"styles_dot__1l3gB\",\"goaled\":\"styles_goaled__2JNJl\",\"lastest\":\"styles_lastest__Md-Jo\",\"rate\":\"styles_rate__3mkjT\",\"entry\":\"styles_entry__utT5v\",\"back\":\"styles_back__30u_s\",\"info\":\"styles_info__TLjf0\",\"logoBox\":\"styles_logoBox__1_L4Y\",\"shine\":\"styles_shine__1sd8V\",\"buttonContainer\":\"styles_buttonContainer__LsiMc\",\"greeting\":\"styles_greeting__1M1g7\",\"productBacklog\":\"styles_productBacklog__Qe38K\",\"top\":\"styles_top__1HQPP\",\"content\":\"styles_content__3DXeh\",\"demo\":\"styles_demo__J2gtk\",\"practical\":\"styles_practical__39ZRi\",\"dropConatiner\":\"styles_dropConatiner__3VdJ6\",\"disabled\":\"styles_disabled__1FRpI\",\"dragTarget\":\"styles_dragTarget__2rCMz\",\"dragToList\":\"styles_dragToList__1sGeg\",\"buttonRight\":\"styles_buttonRight__2VP9J\",\"buttonCenter\":\"styles_buttonCenter__2DDpu\",\"footer\":\"styles_footer__UKd0D\",\"role\":\"styles_role__1KWIF\",\"paragraph\":\"styles_paragraph__2pypf\",\"reverse\":\"styles_reverse__1ox3F\",\"warning\":\"styles_warning__2a1wV\",\"error\":\"styles_error__2WcPl\",\"sprintTask\":\"styles_sprintTask__2rq5K\",\"upper\":\"styles_upper__1igxk\",\"listItems\":\"styles_listItems__3ju0K\",\"item\":\"styles_item__xWPq_\",\"sprintBacklog\":\"styles_sprintBacklog__1Tl9t\",\"complete\":\"styles_complete__2LVNO\",\"show\":\"styles_show__3ADr3\",\"sprintIntro\":\"styles_sprintIntro__yW4JK\",\"intro\":\"styles_intro__3eKLE\",\"process\":\"styles_process__3r9RR\",\"listContainer\":\"styles_listContainer__2SH6b\",\"card\":\"styles_card__1LHgw\",\"position_ab\":\"styles_position_ab__3Pk_b\",\"review\":\"styles_review__2agUz\",\"daily\":\"styles_daily__2QOOK\",\"retrospective\":\"styles_retrospective__tf-48\",\"emptyCard\":\"styles_emptyCard__22MCu\",\"green\":\"styles_green__xLw_6\",\"left\":\"styles_left__1s5Tz\",\"up\":\"styles_up__vOdzY\",\"hide\":\"styles_hide__1dHhR\",\"buttonConatiner\":\"styles_buttonConatiner__9fK-k\",\"retro\":\"styles_retro__1g8iC\",\"example\":\"styles_example__2_Ek5\",\"SM\":\"styles_SM__h_HTF\",\"showing\":\"styles_showing__1Nt6q\",\"PO\":\"styles_PO__3a91y\",\"EE\":\"styles_EE__GMWqF\",\"GG\":\"styles_GG__3k-34\",\"checked\":\"styles_checked__3QbbW\",\"roles\":\"styles_roles__ZAMBn\",\"rise\":\"styles_rise__29xAB\",\"appear\":\"styles_appear__fQnZS\",\"star\":\"styles_star__1a_c1\",\"twinkle\":\"styles_twinkle__2XwLb\",\"star1\":\"styles_star1__oTBy0\",\"star2\":\"styles_star2__2be1r\",\"star3\":\"styles_star3__Jc4Fs\",\"star4\":\"styles_star4__QQd2J\",\"star5\":\"styles_star5__3eu-b\",\"star6\":\"styles_star6__2ANU3\",\"star7\":\"styles_star7__2clqf\",\"star8\":\"styles_star8__2Vepf\",\"star9\":\"styles_star9__2-XFH\",\"star10\":\"styles_star10__2q0oH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"banner\":\"styles_banner__1DIZC\",\"applyButton\":\"styles_applyButton__1tuan\",\"stage\":\"styles_stage__2Q57K\",\"info\":\"styles_info__33zO7\",\"card\":\"styles_card__1aLcz\",\"loading\":\"styles_loading__2PgWH\",\"caterpillar\":\"styles_caterpillar__1N2Jb\",\"butterfly\":\"styles_butterfly__2ogh5\",\"progress\":\"styles_progress__3BKEY\",\"header\":\"styles_header__cZtnN\",\"menu\":\"styles_menu__A8u6p\",\"left\":\"styles_left__2bfxR\",\"middle\":\"styles_middle__3Xz-_\",\"right\":\"styles_right__2eyMf\",\"triangle\":\"styles_triangle__2jO4-\",\"rectangle\":\"styles_rectangle__1zYca\",\"circleBig\":\"styles_circleBig__3yXhn\",\"circlesmall\":\"styles_circlesmall__QRBvP\",\"imgBox\":\"styles_imgBox__2qiTz\",\"text\":\"styles_text__1yuKk\",\"footer\":\"styles_footer__2Rau8\",\"marquee\":\"styles_marquee__1aiUN\",\"questions\":\"styles_questions__B9E4x\",\"dots\":\"styles_dots__2X_zn\",\"active\":\"styles_active__1uqXK\",\"cards\":\"styles_cards__3hZXk\",\"topic\":\"styles_topic__35sBX\",\"top\":\"styles_top__3vib1\",\"bottom\":\"styles_bottom__3Zu6a\",\"week\":\"styles_week__Vcg4d\",\"sponsor\":\"styles_sponsor__2w2GV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"home\":\"styles_home__1A_AS\",\"button\":\"styles_button__101ck\",\"gaint\":\"styles_gaint__2sUpW\",\"taiwanIcon\":\"styles_taiwanIcon__3nSLK\",\"zoomIn\":\"styles_zoomIn__18rfl\",\"shrink\":\"styles_shrink__2mPXd\",\"description\":\"styles_description__13SaB\",\"aboutMe\":\"styles_aboutMe__385n0\",\"portfolios\":\"styles_portfolios__3A5gq\",\"content\":\"styles_content__3IRtW\",\"experience\":\"styles_experience__2mgM3\",\"goResume\":\"styles_goResume__1B780\",\"totoro\":\"styles_totoro__fOi5p\",\"line\":\"styles_line__3avOr\",\"circles\":\"styles_circles__rTvZr\",\"sliderBox\":\"styles_sliderBox__1BW9W\",\"arrow\":\"styles_arrow__3ri2E\",\"prev\":\"styles_prev__3U295\",\"next\":\"styles_next__3hvRx\",\"hidden\":\"styles_hidden__1AzqK\",\"container\":\"styles_container__iqXte\",\"imgBox\":\"styles_imgBox__2nlnk\",\"wave\":\"styles_wave__3r6H2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"styles_wrapper__1Qmuj\",\"tutorial\":\"styles_tutorial__ZW7lN\",\"signArea\":\"styles_signArea__2Oam0\",\"header\":\"styles_header__3NwOm\",\"buttonsContainer\":\"styles_buttonsContainer__2koAB\",\"buttons\":\"styles_buttons__1jU8P\",\"loading\":\"styles_loading__1Xp36\",\"fileContainer\":\"styles_fileContainer__zFgmv\",\"hide\":\"styles_hide__1xr1i\",\"spinner\":\"styles_spinner__3J4B8\",\"lds-roller\":\"styles_lds-roller__2Nybc\",\"steps\":\"styles_steps__1JHL0\",\"circles\":\"styles_circles__1EcFB\",\"jump\":\"styles_jump__3XETe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"drinkorder\":\"styles_drinkorder__2Nu-z\",\"container\":\"styles_container__1v2Kx\",\"button\":\"styles_button__338fn\",\"content\":\"styles_content__1wMBf\",\"list\":\"styles_list__3k8ES\",\"add\":\"styles_add__3Q3tZ\",\"errMsg\":\"styles_errMsg__2zEbz\",\"feedback\":\"styles_feedback__14wg_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"garellyList\":\"styles_garellyList__2AU73\",\"imgs\":\"styles_imgs__1jHsr\",\"colum\":\"styles_colum__iynm0\",\"favorite\":\"styles_favorite__1H2e9\",\"trigger\":\"styles_trigger__3ztBX\",\"alert\":\"styles_alert__pe3hb\",\"MasonryLayout\":\"styles_MasonryLayout__2D7DY\",\"imgBox\":\"styles_imgBox__2ft2N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"popContent\":\"styles_popContent__23Ods\",\"imgBox\":\"styles_imgBox__1MsOF\",\"describe\":\"styles_describe__1QWjI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"home\":\"styles_home__2Q5hq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"excel\":\"styles_excel__3_vXx\",\"container\":\"styles_container__1pngR\",\"table\":\"styles_table__1rGwe\",\"fakeTable\":\"styles_fakeTable__Tdkw5\",\"tHead\":\"styles_tHead__bw7js\",\"tBody\":\"styles_tBody__28ZpY\",\"nauthty\":\"styles_nauthty__2xD-w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"garellyLogin\":\"styles_garellyLogin__2PPp2\",\"feedback\":\"styles_feedback__lr39R\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"kittyGallery\":\"styles_kittyGallery__1dz2N\",\"avatar\":\"styles_avatar__30voY\",\"menu\":\"styles_menu__1JZEE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"styles_loader__4QTk7\",\"spin\":\"styles_spin__2HRiY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"garellyUpload\":\"styles_garellyUpload__DYcgE\",\"upload\":\"styles_upload__3DFVQ\",\"preview\":\"styles_preview__1bHRZ\",\"btns\":\"styles_btns__3XmXR\",\"imgs\":\"styles_imgs__3Jyki\",\"imgBox\":\"styles_imgBox__2Ym9O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"garellyFavotite\":\"styles_garellyFavotite__RjMk4\",\"imgs\":\"styles_imgs__1OzC1\",\"favorite\":\"styles_favorite__1W0z_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"emptyPage\":\"styles_emptyPage__Lq7FW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"styles_wrapper__AhZ2I\",\"moon\":\"styles_moon__2Ao9b\",\"sun\":\"styles_sun__6Hity\",\"moonShow\":\"styles_moonShow__3UDJ3\",\"show\":\"styles_show__cxwwF\",\"starsContainer\":\"styles_starsContainer__382OM\",\"falling\":\"styles_falling__2rda_\",\"seed\":\"styles_seed__1sSSQ\",\"night\":\"styles_night__1OthP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"styles_wrapper__2TFZs\",\"ball\":\"styles_ball__GxRP7\",\"sticky\":\"styles_sticky__2cQzG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"styles_wrapper__1sPi5\",\"monster\":\"styles_monster__2i1nO\",\"jumping\":\"styles_jumping__MZ80i\",\"eye\":\"styles_eye__2nybB\",\"progressBar\":\"styles_progressBar__720CS\",\"progressInner\":\"styles_progressInner__C99Re\",\"animation\":\"styles_animation__33io7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__Ayw1h\",\"highLight\":\"styles_highLight__1EHqx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"styles_wrapper__1_VC_\",\"menu\":\"styles_menu__207V3\",\"iconContainer\":\"styles_iconContainer__2VVZV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrap\":\"styles_wrap__325s3\",\"outer\":\"styles_outer__2a_WX\",\"inner\":\"styles_inner__ZKXyW\",\"restart\":\"styles_restart__2SW3d\",\"card\":\"styles_card__3Hkfv\",\"back\":\"styles_back__1tW4v\",\"show\":\"styles_show__1cINf\",\"hide\":\"styles_hide__8OqZH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1HtyC\",\"row\":\"styles_row__2q8eZ\",\"colum\":\"styles_colum__i3pDY\",\"snake\":\"styles_snake__QEM3M\",\"fruit\":\"styles_fruit__1BmOY\",\"alert\":\"styles_alert__3ZV10\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrap\":\"styles_wrap__1s3VT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrap\":\"styles_wrap__2gOLv\",\"active\":\"styles_active__378op\",\"iconBox\":\"styles_iconBox__3AyBz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrap\":\"styles_wrap__1MeBp\",\"head\":\"styles_head__knwPj\",\"avatar\":\"styles_avatar__1yem_\",\"info\":\"styles_info__E-gXV\",\"title\":\"styles_title__1x5Dr\",\"content\":\"styles_content__3_J_W\",\"jobTitle\":\"styles_jobTitle__1xZ_3\",\"period\":\"styles_period__2FjH8\",\"experience\":\"styles_experience__1DnSH\",\"educational\":\"styles_educational__T7mDF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"box\":\"styles_box__1rAIk\",\"container\":\"styles_container__2JSYp\",\"close\":\"styles_close__38FBS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"styles_footer__2lYb8\"};","import React, { useState, useEffect } from \"react\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Main = () => {\n const [isShrink, setIsShrink] = useState(false);\n useEffect(() => {\n const scrollHandler = (e) => {\n setIsShrink(window.scrollY > 0);\n };\n window.addEventListener(\"scroll\", scrollHandler);\n\n return () => {\n window.removeEventListener(\"scroll\", scrollHandler);\n };\n }, []);\n\n return (\n
\n \n
\n

Welcome YiShan's Resume

\n \n \n \n

一個不小心入坑的商科生,覺得CSS很促咪的我是不是有點奇怪

\n
\n
\n );\n};\n\nexport default Main;\n","import Main from './TaiwanIcon';\n\nexport default Main;\n","export default __webpack_public_path__ + \"static/media/home_section_2.99faa4e0.jpg\";","import React from 'react';\n\nimport mainPic from 'image/home_section_2.jpg';\nimport classes from '../styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst AboutMe = () => {\n return(\n
\n
\n
\n \"\"\n
\n
\n

About Me

\n

\n 嗨!謝謝你來到這裡,接下來會是關於我的一些些介紹(或是自言自語?),如果沒有興趣就可以跳過繼續往下滑了(笑)。\n
\n
\n 非本科系出身,是個從初會唸到高會的標準商學生,畢業後高考錄取成為人人稱羨的公務員。每每講到這裡,十個人裡面有九個都問:你怎麼這麼想不開?(剩下那一個是聽不懂中文)。也沒什麼,就是某天看著隔壁的同事,深深覺得如果到40歲我一定會跟哆啦A夢借時光機敲暈10年前的自己;然後,毅然決然地告別這種「每天起床不是想請假就是想辭職」的日子。雖然有點荒唐,但目前為止不後悔這個決定(只是偶爾會覺得自己是不是很奇怪)。當時的我怎麼也想不到自己會踏進這條不歸路,畢竟我連計算機概論都不認識啊!\n
\n
\n 辭職之後,開始清查人生的 todo\n list,在一次偶然的機會下接觸到前端這個陌生的領域,開始於網路資源自學html及css,為了更有系統的學習相關知識,決定到資策會接受訓練。也說不上來前端的魅力在哪裡,就是很享受把一個想法具象成有功能網站的過程,並從中獲得滿滿的成就感;入坑兩年多以來,雖然時不時就會陷入「我是誰?這是哪?在幹嘛?」的錯覺,但很喜歡這種每隔一段時間就感覺到自己進步的狀態;然後,期許自己有一天能很驕傲的大聲說出:「我是一個前端開發者。」\n
\n
\n

\n
\n
\n
\n )\n}\n\nexport default AboutMe;\n","export default __webpack_public_path__ + \"static/media/home_portfolios_message_board.ebc104eb.jpg\";","export default __webpack_public_path__ + \"static/media/home_portfolios_form.bed6d575.jpg\";","export default __webpack_public_path__ + \"static/media/home_portfolios_kittyGarelly.9b78bf30.jpg\";","export default __webpack_public_path__ + \"static/media/home_protfolios_animation_2.6898e4ff.jpg\";","export default __webpack_public_path__ + \"static/media/home_protfolios_animation.88a6e52d.jpg\";","export default __webpack_public_path__ + \"static/media/home_games.7d9fefd7.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro.6cc60570.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro_busStation.856dcb9a.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro_face.cba777a5.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro_father.7b694a63.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro_cry.c39b08a5.jpg\";","export default __webpack_public_path__ + \"static/media/home_ghibli_totoro_bus.49bc7dd1.jpg\";","import message_borad from \"image/home_portfolios_message_board.jpg\";\nimport form from \"image/home_portfolios_form.jpg\";\nimport KittyGallery from \"image/home_portfolios_kittyGarelly.jpg\";\nimport animation from \"image/home_protfolios_animation_2.jpg\";\nimport thef2e from \"image/home_protfolios_animation.jpg\";\nimport games from \"image/home_games.jpg\";\nimport totoro from \"image/home_ghibli_totoro.jpg\";\nimport totoro_busStation from \"image/home_ghibli_totoro_busStation.jpg\";\nimport totoro_face from \"image/home_ghibli_totoro_face.jpg\";\nimport totoro_father from \"image/home_ghibli_totoro_father.jpg\";\nimport totoro_cry from \"image/home_ghibli_totoro_cry.jpg\";\nimport totoro_bus from \"image/home_ghibli_totoro_bus.jpg\";\n\nexport const portfolios = [\n { id: \"thef2e\", title: \"The F2E 4th\", description: \"前端 修練(爆)精神(肝)時光屋\", image: thef2e },\n { id: \"animation\", title: \"animation 金促咪\", description: \"HAHOW 動畫互動網頁特效入門 課程練習\", image: animation },\n { id: \"excel\", title: \"親愛的,show出你的口袋書單!\", description: \"excel檔案讀取/下載\", image: form },\n { id: \"games\", title: \"小遊戲樂無窮\", description: \"\", image: games },\n {\n id: \"drinkorder\",\n title: \"夥伴們,飲料訂起來!\",\n description: \"表單處理\",\n image: message_borad,\n },\n { id: \"kittyGallery\", title: \"奴才們,快來吸貓吧!\", description: \"The Cat Api 串接\", image: KittyGallery },\n];\n\nexport const slideData = [\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"小月和小梅再也沒見過龍貓了?!\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n \"在片尾插畫中,展現了小月與小梅的轉變,姊妹們的媽媽從醫院康復回家後,小月褪去母職與朋友們一同嬉鬧,而小梅也不再只是跟在姊姊屁股後面哭鼻子的小小孩,然而卻不見她們與龍貓的同框畫面?根劇宮崎駿(Hayao Miyazaki)本人透露,只要她們相信龍貓,她們就不會孤單,但若一直停留在那兒,她們將永遠無法回到現實世界。小月和小梅因為遇到龍貓,在找尋彼此的路上慢慢找到勇氣和希望,他表示:「從那時我們就決定不再拍續集,因為一生中只要遇過一次龍貓就夠了。」。\",\n image: totoro,\n },\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"龍貓的胖虎精神?!把小月爸爸的傘據為己有?\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n \"片中姊妹小月與小梅在公車站遇見龍貓的經典鏡頭,小月將爸爸的雨傘給了淋雨的龍貓,後來爸爸的傘卻被龍貓據為己有,成為許多粉絲的疑惑之處,宮崎駿笑說:「龍貓是森林的守護神,其實並不討厭淋雨,因為雨水是滋養森林的重要養分,不過龍貓很喜歡雨水滴到傘上的滴答聲,祂其實是把雨傘當成了樂器。」而最初的故事後續是龍貓偷偷到草壁家還雨傘並贈送了一包橡樹果子,但宮崎駿表示:「後來想想,其實龍貓應該不太懂得借出與歸還的道理,祂很單純地認為對方送了有趣的樂器,因此回送了一包橡樹果子答謝,於是我們就把還傘的戲份刪掉了,之後龍貓的身邊也多了一個『樂器』。」\",\n image: totoro_busStation,\n },\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"與脆弱共處,才是真正的堅強\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n '劇中,妹妹小梅因為想念住院中的母親獨自一人前往醫院,身兼母職的姊姊小月因為找不到失蹤的小梅,最後忍不住放聲大哭。這一幕強烈震撼著還是小小孩的我,從沒想過\"姊姊\"這種厲害的生物也會大哭(印象中只有破口大罵(笑));其實,最初宮崎駿並沒有安排姊姊小月因為找不到妹妹緊張到放聲大哭的橋段。但到了製作後期,宮崎駿想到自己小時候也有相同的回憶,母親臥病在床,由小孩負責煮飯的事情,其實那是很辛苦的,所以對小月來說,唯有承認自己有些地方確實做不來,心情才會比較輕鬆。宮崎駿的用心讓小月這個人物更加立體,脆弱與堅強並存,才能成為小梅的好姊姊。導演宮崎駿說,「我希望大家看了我的電影,都能明白這世界充滿困難,有時能解決問題,有時得學著與問題共處,這都需要勇氣,但這就是成長,這就是人生。」。',\n image: totoro_cry,\n },\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"2D世界裡的第一名爸爸--草壁達郎\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n \"動畫中小月與小梅和爸爸草壁達郎為了就近照顧罹患結核病的媽媽,一起搬到森林附近的舊房子,這棟舊房子一開始不僅骯髒無比,還散發著「鬼屋」的氣氛。而當小月和小梅看到「灰塵精靈」,驚慌失措地告訴爸爸這是一棟鬼屋時,他呵呵笑著回應:「原來是鬼屋啊,那很好呢!」而且雖然因為在森林裡造成生活上有些不方便,草壁達郎也總是開朗的看待一切,感恩房子、感恩神木。當小梅和爸爸說遇到了龍貓,雖然到最後沒有親眼看到,但他絲毫沒有不相信,還真誠的和女兒說:「小梅剛剛一定是遇到了森林的主人。」。信任並尊重孩子,有時比直接告訴答案,更能成為長大的養份。\",\n image: totoro_father,\n },\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"天然呆的森林守護者\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n \"為什麼龍貓看起來總是呆呆的呢?宮崎駿表示,這是因為當初在做角色設定的時候,他故意讓龍貓的眼神不對焦,讓牠的兩顆圓圓眼睛,一直呆呆地望著一個方向,看起來總是茫茫然。「龍貓」呆萌的表情和舉止實際上代表著祂身為森林守護神的「大智若愚」,宮崎駿表示:「有時候我進入山林間,都會隱約覺得有誰也在山林裡,那是森林裡的動靜,感覺像在跟我說『今天可別假裝不知道喔』,我覺得這種看不見的存在很有趣。」\",\n image: totoro_face,\n },\n {\n title: \"龍貓(となりのトトロ)\",\n subTitle: \"神奇的龍貓專屬坐騎--龍貓公車\",\n director: \"宮崎駿(Hayao Miyazaki)\",\n performers: [\"坂本千夏\", \"島本須美\"],\n description:\n \"龍貓公車是龍貓的交通工具,有12隻腳,額頭上有像公車的提示牌,會按龍貓公車的意志更動及顯示目的地,並從身體拉出門的形狀,讓人乘坐,裡面的坐墊就像貓身體上的毛一樣柔軟,與龍貓一樣,一般人看不見牠。宮崎駿對貓公車的解讀為:「可以將牠視為古代的一隻貓妖(化貓、化け猫),因覺得人類世界的公車很有趣,而將自己變成那樣的形狀」。\",\n image: totoro_bus,\n },\n];\n","import React, { useRef, useState, useEffect } from \"react\";\nimport { Link } from 'react-router-dom';\nimport { BsChatSquareQuote } from 'react-icons/bs';\n\nimport { portfolios } from '../datas';\nimport classes from '../styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Portfolios = () => {\n const widthRef = useRef(null);\n const [width, setWidth] = useState('0');\n\n const resizeHandler = () => {\n const changeWidth = () => {\n if (widthRef.current?.clientWidth > 768) {\n setWidth(widthRef.current.clientWidth);\n }\n };\n window.addEventListener('resize', changeWidth);\n };\n\n useEffect(() => {\n resizeHandler();\n setWidth(widthRef.current.clientWidth);\n }, [widthRef.current?.clientWidth]);\n\n return(\n
\n
\n

PORTFOLIOS

\n
\n {portfolios.map((portfolio, idx) => (\n \n \n
\n
\n
{portfolio.title}
\n

{portfolio.description}

\n
\n \n go page\n \n
\n \n ))}\n
\n
\n
\n )\n}\n\nexport default Portfolios;","import React from \"react\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Experience = () => {\n return (\n
\n
\n

技能相關

\n \n
\n
\n
\n

訓練/經歷

\n \n
\n \n Cake Resume\n \n
\n
\n 點選按鈕,前往完整履歷及參與專案介紹\n
\n
\n
\n );\n};\n\nexport default Experience;\n","import { createContext } from \"react\";\n\nconst Context = createContext();\nconst { Provider, Consumer } = Context;\n\nexport { Context, Provider, Consumer };\n","import React, { useState } from 'react';\nimport { Provider } from './Context';\n\nconst withPopWindowProvider = (WrappedComponent) => {\n const WithPopWindowProvider = () => {\n const openPopWindowFunc = ({ title, popContent, buttons }) => {\n setPopWindowData((prevState) => ({\n ...prevState,\n isOpenPopWindow: true,\n title,\n popContent,\n buttons,\n }));\n };\n const closePopWindowFunc = () => {\n setPopWindowData((prevState) => ({\n ...prevState,\n isOpenPopWindow: false,\n }));\n };\n const [popWindowData, setPopWindowData] = useState({\n isOpenPopWindow: false,\n openPopWindowFunc,\n closePopWindowFunc,\n title: '',\n popContent: null,\n buttons: [],\n });\n return (\n \n \n \n );\n };\n return WithPopWindowProvider;\n};\nexport default withPopWindowProvider;\n","import React from \"react\";\n\nimport { Consumer } from \"./Context\";\n\nconst withPopWindowConsumer = (WrappedComponent) => (props) => {\n return (\n \n {(values) => {\n return ;\n }}\n \n );\n};\n\nexport default withPopWindowConsumer;\n","import React from 'react';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst PopContent = ({ data }) => {\n return (\n
\n
\n \"totoro\"\n
\n
\n
{data.subTitle}
\n {data.title}\n

{data.description}

\n
\n
\n );\n};\n\nexport default PopContent;\n","import React, {useState } from \"react\";\nimport { BsChevronCompactLeft, BsChevronCompactRight } from 'react-icons/bs';\n\nimport { withPopWindowConsumer } from 'Context/PopWindow';\nimport PopContent from './PopContent';\nimport { slideData } from '../datas';\n\nimport classes from '../styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Experience = ({ popWindowData }) => {\n const [slidePosition, setSlidePosition] = useState(0);\n const { openPopWindowFunc } = popWindowData;\n\n const slideDistance = 300 + 20;\n const showSlideNum = 3;\n\n\n const goSlide = (index) => {\n const position =\n index <= 0 ? 0 : index >= slideData.length - showSlideNum ? slideData.length - showSlideNum : index;\n setSlidePosition(position);\n };\n\n return(\n
\n
\n
\n

那些你不知道的龍貓

\n

\n 每個人心中都有一隻大龍貓(となりのトトロ)\n
\n //\n
\n 1988年,大家耳熟能詳的鄰居--龍貓,誕生於日本大螢幕,\n
\n 這個龐然大物,細膩地溫暖著觀眾,\n
\n 然而關於這部耳熟能詳的經典巨作,你了解多少呢?\n
\n 讓我們一起來一探究竟吧!\n
\n //\n
\n 小月、小梅兩姊妹跟著爸爸一起搬到郊外居住,準備迎接即將出院的母親,\n
\n 那個被戲稱「鬼屋」的新家發生許多神奇的事,\n
\n 包含會突然四散逃走的灰塵精靈,以及神祕的龍貓與貓巴士。\n
\n 不論好壞,我們都將成為新的樣子。\n
\n 有一天,小梅在與姊姊小月吵架後失蹤了,小月只能尋求龍貓的幫助,展開一場尋找妹妹的奇幻冒險…\n

\n
\n
\n
\n
\n
\n
\n {\n goSlide(slidePosition - 1);\n }}\n >\n \n
\n \n {slideData.map((slide, idx) => (\n {\n openPopWindowFunc({ popContent: });\n }}\n >\n
\n \"\"\n
\n
\n ))}\n
\n = slideData.length - showSlideNum ? 'hidden' : ''\n )}\n onClick={() => {\n goSlide(slidePosition + 1);\n }}\n >\n \n \n \n \n
\n )\n}\n\nexport default withPopWindowConsumer(Experience);","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet\";\n\nimport Main from \"./Main\";\nimport AboutMe from \"./AboutMe\";\nimport Portfolios from \"./Portfolios\";\nimport Experience from \"./Experience\";\nimport Totoro from \"./Totoro\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Home = () => {\n return (\n
\n \n YiShan's Resume\n \n
\n \n \n \n \n
\n );\n};\n\nexport default withRouter(Home);\n","import React from 'react';\nimport { withRouter, Link } from 'react-router-dom';\n\nimport { BsHouseFill } from 'react-icons/bs';\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst GoHome = () => {\n return (\n \n \n \n );\n};\n\nexport default withRouter(GoHome);\n","import React, { useState, useRef } from 'react';\nimport XLSX from 'xlsx';\n\nimport { withPopWindowConsumer } from 'Context/PopWindow';\nimport GoHome from 'Component/GoHome';\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Naughty = () => {\n return
你真調皮,檔案沒有任何內容哦!
;\n};\nconst Excel = ({ popWindowData }) => {\n const uploadRef = useRef(null);\n const { openPopWindowFunc } = popWindowData;\n const colums = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];\n const [tableData, setTableData] = useState([]);\n const [fileName, setFileName] = useState('');\n\n const readFile = (e) => {\n if (e.target.files.length > 0) {\n const files = e.target.files,\n f = files[0];\n const reader = new FileReader();\n reader.onload = function (e) {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: 'array' });\n const first_sheet_name = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[first_sheet_name];\n if (worksheet['!ref']) {\n const index = worksheet['!ref'].indexOf(':');\n const numArr = worksheet['!ref'].substring(index + 1).split('');\n const numIndex = numArr.findIndex((el) => !isNaN(el));\n const totalRow = +numArr.slice(numIndex).join('');\n\n const datas = [];\n for (let i = 1; i <= totalRow; i++) {\n let data = {};\n colums.forEach((el) => {\n const key = el + i;\n data[el] = worksheet[key]?.v || '';\n });\n datas.push(data);\n }\n setTableData(datas);\n setFileName(f.name);\n } else {\n openPopWindowFunc({\n popContent: ,\n });\n }\n };\n reader.readAsArrayBuffer(f);\n }\n };\n const downloadFile = () => {\n const wb = XLSX.utils.book_new();\n const ws_name = 'SheetJS';\n const ws_data = [\n ['書名', 'ISBN', '作者', '分類', '內容簡介'],\n [\n '在森崎書店的日子',\n '9789869481939',\n '八木澤里志',\n '日本文學/文學小說',\n '★★ 在這個愈愛愈孤獨的年代,我們都需要追尋幸福的勇氣! ★★以東京神保町書街為舞台,記敘一名年輕女子逃離職場與情場、進入二手書店與一群「特別的人」往來生活的溫柔日常故事。',\n ],\n [\n '時生',\n '9789866043086',\n '東野圭吾',\n '日本懸疑/推理小說',\n '兒子回到過去拯救不成材的老爸?穿梭於過去、現在、未來超越時空的父子情日本讀者一致推薦,東野十大人氣長篇之一!若你看過《祕密》、《紅色手指》,絕不能錯過又一部東野流探討親子關係的感人作品!',\n ],\n ];\n const ws = XLSX.utils.aoa_to_sheet(ws_data);\n XLSX.utils.book_append_sheet(wb, ws, ws_name);\n XLSX.writeFile(wb, 'sample.xlsx');\n };\n\n return (\n
\n
\n
\n 檔案名稱:{fileName}\n {\n uploadRef.current.click();\n }}\n >\n 選擇檔案\n \n \n \n
\n
\n
\n {tableData[0]?.A}\n {tableData[0]?.B}\n {tableData[0]?.C}\n {tableData[0]?.D}\n {tableData[0]?.E}\n
\n {tableData.slice(1).map((tr, idx) => (\n
\n {tr.A}\n {tr.B}\n {tr.C}\n {tr.D}\n {tr.E}\n
\n ))}\n
\n
\n \n
\n );\n};\n\nexport default withPopWindowConsumer(Excel);\n","export const menu = {\n KEBUKE: {\n name: '可不可熟成紅茶',\n menu: [\n { key: 'oldred', itemName: '熟成紅茶', price: 30, description: '' },\n { key: 'springred', itemName: '麗春紅茶', price: 30, description: '' },\n { key: 'springgreen', itemName: '春芽綠茶', price: 30, description: '' },\n { key: 'saltedplum', itemName: '春梅冰茶', price: 45, description: '' },\n { key: 'dodo', itemName: '胭脂多多', price: 50, description: '' },\n { key: 'wintermelonred', itemName: '熟成冷露', price: 30, description: '' },\n { key: 'wintermelongreen', itemName: '春芽冷露', price: 30, description: '' },\n { key: 'redmilk', itemName: '熟成歐蕾', price: 50, description: '' },\n { key: 'pearlmilk', itemName: '白玉歐蕾', price: 60, description: '' },\n { key: 'lemon', itemName: '熟成檸果', price: 50, description: '' },\n ],\n },\n CHUNYANG: {\n name: '春陽茶事',\n menu: [\n { key: 'Oolong', itemName: '春陽烏龍', price: 40, description: '' },\n { key: 'dark', itemName: '包種青茶', price: 40, description: '' },\n { key: 'sugarcane', itemName: '甘蔗鮮奶', price: 65, description: '' },\n { key: 'pearlmilk', itemName: '黑糖珍珠鮮奶', price: 65, description: '' },\n { key: 'pudding', itemName: '布丁烏龍鮮奶', price: 70, description: '' },\n { key: 'lemon', itemName: '翡翠凍檸檬', price: 55, description: '' },\n ],\n },\n};\n\nexport const orderList = [\n {\n id: '20210606001',\n key: 'KEBUKE',\n date: '2021-07-16',\n list: [\n {\n member: 'A001',\n memberName: '小丹尼',\n item: 'oldred',\n price: 35,\n unit: 1,\n ice: 0,\n sugar: 7,\n other: ['pearl'],\n },\n {\n member: 'C001',\n memberName: '阿土伯',\n item: 'redmilk',\n price: 110,\n unit: 2,\n ice: 2,\n sugar: 0,\n other: [],\n },\n ],\n },\n {\n id: '20210607001',\n key: 'CHUNYANG',\n date: '2021-07-17',\n list: [\n {\n member: 'A002',\n memberName: '錢夫人',\n item: 'Oolong',\n price: 80,\n unit: 2,\n ice: 1,\n sugar: 3,\n other: ['pearl', 'pudding'],\n },\n {\n member: 'B001',\n memberName: '沙隆巴斯',\n item: 'pudding',\n price: 70,\n unit: 1,\n ice: 0,\n sugar: 0,\n other: [],\n },\n ],\n },\n];\n\nexport const memberList = [\n {\n no: 'A001',\n name: '小丹尼',\n depart: '',\n },\n {\n no: 'A002',\n name: '錢夫人',\n depart: '',\n },\n {\n no: 'B001',\n name: '沙隆巴斯',\n depart: '',\n },\n {\n no: 'B002',\n name: '孫小美',\n depart: '',\n },\n {\n no: 'C001',\n name: '阿土伯',\n depart: '',\n },\n];\n\nexport const iceOptions = [\n {\n key: 0,\n text: '去冰',\n },\n {\n key: 1,\n text: '正常',\n },\n {\n key: 2,\n text: '熱',\n },\n];\n\nexport const sugarOptions = [\n {\n key: 0,\n text: '無糖',\n },\n {\n key: 3,\n text: '少糖',\n },\n {\n key: 5,\n text: '半糖',\n },\n {\n key: 7,\n text: '七分糖',\n },\n {\n key: 10,\n text: '全糖',\n },\n];\n\nexport const otherOptions = [\n {\n key: 'pearl',\n text: '加珍珠',\n price: 5,\n },\n {\n key: 'pudding',\n text: '加布丁',\n price: 10,\n },\n];\n\nexport const datas = [\n {\n title: '今天月亮暫時停止轉動',\n author: '米莎(Misa)',\n isSecret: true,\n password: '123456',\n content:\n '每一個到達不了的明天,都是為了讓我在今天,喜歡上你。──也許我們能夠相遇,才是一場最絢爛的奇蹟。「我來教妳彈鋼琴,這樣某天我們就能四手聯彈了。」「好啊,但等我真的學會,就表示我們已經重複同一天很久很久了喔。」「那也沒什麼不好。」',\n },\n {\n title: '刺蝟先生的擁抱',\n author: '馮湘婷/Mandie Kuo',\n isSecret: false,\n password: '',\n content:\n '「討厭!為什麼我想什麼你都不懂?」「我只是想要一個擁抱啊!你們怎麼不知道呢?」「我對你們好,為什麼你們不對我好?」心地善良但沒有交過朋友的刺蝟先生,想知道擁抱是什麼感覺,他聽說有一個「擁抱小鎮」,小鎮的居民都會給彼此大大的擁抱,於是決定去看看。在小鎮上,他看見老鼠媽媽擁抱小老鼠、羊爸爸擁抱羊媽媽,以及黑貓女士擁抱花貓小姐……「哇!在這裡我一定可以得到擁抱吧!」他開始跟小鎮居民交朋友、努力幫他們的忙,以為會輕易得到擁抱,但身上的刺,卻讓大家都害怕得不敢抱抱他,失望的刺蝟先生好傷心啊……但是,當遇到兔爺爺時,事情卻有了轉機。究竟,刺蝟先生用什麼聰明的方法得到擁抱呢?',\n },\n {\n title: '獅子補習班(Lion lessons)',\n author: '強‧艾吉/(譯:柯倩華)',\n isSecret: false,\n password: '',\n content:\n '小男孩漫步在掛滿招牌的街道上,這是一條補習街,不論空手道、西班牙語、手工編織和烹飪課…各式課程應有盡有。不過,小男孩對這些都不感興趣,他只想上──獅子補習班!小男孩穿上獅子服裝,在獅子教練的悉心教導下,完成七堂訓練課程。課程設計很有趣,首先,得先學會做出凶猛的樣子,接下來要選擇食物,還要能悄悄偵察,並且具備獅子吼的技能,而最重要的一堂課是…',\n },\n];\n","import React, { useState, useContext } from 'react';\n\nimport { OrderContext } from '../index';\nimport { menu, iceOptions, sugarOptions, otherOptions } from '../datas';\n\nimport classes from '../styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Add = () => {\n const { listData, updateListFunc } = useContext(OrderContext);\n const [nowShowId, setNowShowId] = useState(listData[0].id);\n const [formContent, setFormContent] = useState({\n memberName: '',\n item: menu[listData.find((el) => el.id === nowShowId).key].menu[0].key,\n price: menu[listData.find((el) => el.id === nowShowId).key].menu[0].price,\n unit: 1,\n ice: 0,\n sugar: 0,\n other: [],\n });\n const [errMessage, setErrMessage] = useState({\n memberName: '',\n });\n const [isLoading, setIsLoading] = useState(false);\n const [feedback, setFeedback] = useState({\n isShow: false,\n info: '訂單完成。到時一手交錢,一手交飲料!',\n });\n\n const getMenuList = () => {\n return menu[listData.find((el) => el.id === nowShowId).key].menu;\n };\n\n const saveValue = (key, obj) => {\n const { value } = obj;\n setFeedback((prevState) => ({\n ...prevState,\n isShow: false,\n }));\n setFormContent((prevState) => ({\n ...prevState,\n [key]: value,\n }));\n setErrMessage((prevState) => ({\n ...prevState,\n [key]: obj.value.length > 0 ? '' : '請填寫這個欄位',\n }));\n };\n\n const sendForm = () => {\n const results = [];\n Object.keys(formContent).forEach((key) => {\n const isInValid = key !== 'other' && formContent[key].toString().length === 0;\n if (isInValid) {\n setErrMessage((prevState) => ({\n ...prevState,\n [key]: '請填寫這個欄位',\n }));\n }\n results.push(isInValid);\n });\n if (!results.some((result) => result)) {\n setIsLoading(true);\n updateListFunc(nowShowId, formContent);\n window.setTimeout(() => {\n setFeedback((prevState) => ({\n ...prevState,\n isShow: true,\n }));\n setIsLoading(false);\n }, 2 * 1000);\n }\n };\n\n return (\n
\n {feedback.isShow &&
{feedback.info}
}\n
\n {\n setNowShowId(e.target.value);\n setFormContent((prevState) => ({\n ...prevState,\n item: menu[listData.find((el) => el.id === e.target.value).key].menu[0].key,\n price: menu[listData.find((el) => el.id === e.target.value).key].menu[0].price,\n unit: 1,\n }));\n setFeedback((prevState) => ({\n ...prevState,\n isShow: false,\n }));\n }}\n >\n {listData.map((order) => (\n \n ))}\n \n
\n \n {\n saveValue('memberName', e.target);\n }}\n />\n {errMessage.memberName}\n
\n
\n \n {\n saveValue('item', { value: e.target.value });\n saveValue('unit', { value: 1 });\n saveValue('price', {\n value: getMenuList().find((el) => el.key === e.target.value).price * 1,\n });\n }}\n value={getMenuList().find((el) => el.key === formContent.item).key}\n >\n {getMenuList().map((order) => (\n \n ))}\n \n
\n
\n
\n \n {\n const value = +e.target.value <= 0 ? 1 : +e.target.value;\n saveValue('unit', { value: value });\n saveValue('price', {\n value: getMenuList().find((el) => el.key === formContent.item).price * value,\n });\n }}\n />\n
\n
\n \n \n
\n
\n
\n 冰塊:\n
\n
\n {iceOptions.map((ice) => (\n
\n {\n saveValue('ice', { value: ice.key });\n }}\n checked={ice.key === formContent.ice}\n />\n \n
\n ))}\n
\n
\n
\n 甜度:\n
\n
\n {sugarOptions.map((sugar) => (\n
\n {\n saveValue('sugar', { value: sugar.key });\n }}\n checked={sugar.key === formContent.sugar}\n />\n \n
\n ))}\n
\n
\n
\n 其它:\n
\n
\n {otherOptions.map((checkbox) => (\n
\n {\n let arr = formContent.other;\n if (e.target.checked) {\n arr.push(e.target.value);\n } else {\n arr = arr.filter((item) => item === e.target.value);\n }\n saveValue('other', { value: [...arr] });\n }}\n />\n \n
\n ))}\n
\n
\n
\n {isLoading ? (\n
\n Loading...\n
\n ) : (\n \n )}\n
\n \n
\n );\n};\n\nexport default Add;\n","import React, { useState, useContext } from 'react';\n\nimport { OrderContext } from '../index';\nimport { menu, iceOptions, sugarOptions, otherOptions } from '../datas';\n\nimport classes from '../styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst List = () => {\n const { listData } = useContext(OrderContext);\n const [nowShowId, setNowShowId] = useState(listData[0].id);\n\n return (\n
\n {\n setNowShowId(e.target.value);\n }}\n >\n {listData.map((order) => (\n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {listData\n .find((el) => el.id === nowShowId)\n .list.map((item, idx) => (\n \n \n \n \n \n \n \n \n \n ))}\n \n
姓名品項杯數金額甜度冰塊其它
{item.memberName}\n {\n menu[listData.find((el) => el.id === nowShowId).key].menu.find(\n (drink) => drink.key === item.item\n ).itemName\n }\n {item.unit}{item.price}{sugarOptions.find((sugar) => sugar.key === item.sugar).text}{iceOptions.find((ice) => ice.key === item.ice).text}\n {item.other.map((element) => (\n {otherOptions.find((el) => el.key === element).text},\n ))}\n
\n
\n );\n};\n\nexport default List;\n","import React, { useState } from 'react';\n\nimport Add from './Add';\nimport List from './List';\nimport GoHome from 'Component/GoHome';\nimport { orderList } from './datas';\n\nimport { BsChevronDoubleRight, BsPlusCircle } from 'react-icons/bs';\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nexport const OrderContext = React.createContext();\n\nconst DrinkOrder = () => {\n const [listData, setListData] = useState([...orderList]);\n\n const routes = [\n {\n key: 'add',\n component: ,\n button: '看看大家點什麼',\n icon: ,\n goMode: 'list',\n },\n {\n key: 'list',\n component: ,\n button: '我要跟團',\n icon: ,\n goMode: 'add',\n },\n ];\n const [mode, setMode] = useState('list');\n\n const providerData = {\n listData,\n addListFunc: (obj) => {\n setListData((prevState) => [...prevState, obj]);\n },\n updateListFunc: (key, obj) => {\n listData.find((order) => order.id === key).list.push(obj);\n setListData(listData);\n },\n };\n\n return (\n \n
\n
\n {\n setMode(routes.find((el) => el.key === mode).goMode);\n }}\n >\n {routes.find((el) => el.key === mode).button}\n {routes.find((el) => el.key === mode).icon}\n
\n
{routes.find((el) => el.key === mode).component}
\n
\n \n \n
\n );\n};\n\nexport default DrinkOrder;\n","import { createContext } from \"react\";\n\nconst Context = createContext();\nconst { Provider, Consumer } = Context;\n\nexport { Context, Provider, Consumer };\n","import React, { useState } from 'react';\n\nimport { Provider } from './Context';\n\nconst withAuthProvider = (WrappedComponent) => {\n const WithAuthProvider = () => {\n const storageKey = 'sdfghjk';\n const assets_token = '4742099d-dc42-4d3d-a4d0-ca077246a7d9';\n const changeLoginStatus = (obj = { isLogin: false }) => {\n if (obj.isLogin) {\n sessionStorage.setItem(storageKey, JSON.stringify(obj));\n } else {\n sessionStorage.removeItem(storageKey);\n }\n setAuthData((prevState) => ({\n ...prevState,\n isLogin: obj.isLogin,\n token: obj.isLogin ? assets_token : null,\n }));\n };\n\n const [authData, setAuthData] = useState({\n isLogin: sessionStorage.getItem(storageKey)\n ? JSON.parse(sessionStorage.getItem(storageKey)).isLogin\n : false,\n token: sessionStorage.getItem(storageKey) ? assets_token : null,\n changeLoginStatusFunc: (obj) => {\n changeLoginStatus(obj);\n },\n });\n\n return (\n \n \n \n );\n };\n return WithAuthProvider;\n};\n\nexport default withAuthProvider;\n","import React from \"react\";\n\nimport { Consumer } from \"./Context\";\n\nconst withAuthConsumer = (WrappedComponent) => (props) => {\n return (\n \n {(values) => {\n return ;\n }}\n \n );\n};\n\nexport default withAuthConsumer;\n","import React, { useState, useEffect } from 'react';\n\nimport { withAuthConsumer } from 'Context/Auth';\nimport { withPopWindowConsumer } from 'Context/PopWindow';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst GarellyLogin = ({ authData, popWindowData }) => {\n const { changeLoginStatusFunc } = authData;\n const { closePopWindowFunc } = popWindowData;\n const [isLoading, setIsLoading] = useState(false);\n const [formData, setFormData] = useState({\n username: '',\n password: '',\n });\n const [feedback, setFeedback] = useState({\n isShow: false,\n message: '',\n });\n\n const saveValue = (key, value) => {\n setFormData((prevState) => ({\n ...prevState,\n [key]: value,\n }));\n };\n\n const sendForm = () => {\n const validValues = { username: 'yishan', password: '@Aa123456' };\n const results = [];\n Object.keys(formData).forEach((key) => {\n results.push(validValues[key] === formData[key]);\n });\n window.setTimeout(() => {\n if (results.every((el) => el)) {\n changeLoginStatusFunc({ isLogin: true });\n closePopWindowFunc();\n } else {\n setFeedback({\n isShow: true,\n message: '帳號/密碼錯誤',\n });\n }\n setIsLoading(false);\n }, 1 * 1000);\n };\n\n useEffect(() => {});\n\n return (\n
\n {feedback.isShow &&
{feedback.message}
}\n
\n \n {\n saveValue('username', e.target.value);\n }}\n />\n
\n
\n \n {\n saveValue('password', e.target.value);\n }}\n />\n
\n {\n setIsLoading(true);\n sendForm();\n }}\n >\n {isLoading ? 'loading...' : '登入'}\n \n
\n );\n};\n\nexport default withAuthConsumer(withPopWindowConsumer(GarellyLogin));\n","export default __webpack_public_path__ + \"static/media/kittyGarelly_avatar.b94e18ff.jpg\";","import React, { useEffect } from 'react';\nimport { withRouter, Switch, Route, Redirect, Link } from 'react-router-dom';\n\nimport { withAuthConsumer } from 'Context/Auth';\nimport { withPopWindowConsumer } from 'Context/PopWindow';\nimport GoHome from 'Component/GoHome';\nimport GarellyLogin from 'Pages/KittyGallery/Login';\nimport { galleryRoutes } from 'Config/routes';\nimport kittyAvatar from 'image/kittyGarelly_avatar.jpg';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst KittyGallery = ({ location, history, authData, popWindowData }) => {\n const { isLogin, changeLoginStatusFunc } = authData;\n const { openPopWindowFunc } = popWindowData;\n\n useEffect(() => {\n if (!isLogin) {\n history.push({\n ...location,\n pathname: galleryRoutes[0].path,\n });\n }\n }, [isLogin]);\n\n return (\n
\n \n
\n \n {galleryRoutes.map((route) => (\n }\n />\n ))}\n } />\n \n
\n \n
\n );\n};\n\nexport default withRouter(withAuthConsumer(withPopWindowConsumer(KittyGallery)));\n","import axios from 'axios';\n\nconst baseUrl = 'https://api.thecatapi.com/v1';\n\nexport const requestHandler = (method, requestUrl, options) => {\n return axios({\n method,\n url: `${baseUrl}${requestUrl}`,\n ...options,\n })\n .then(async (response) => {\n return {\n ...response,\n };\n })\n .catch((error) => {\n return error.response;\n });\n};\n","import { requestHandler } from 'Utils/requestHandler';\n\n// 取得列表\nexport const getImagesListAPI = (data) => {\n return requestHandler('GET', `/images/search`, {\n params: data.params,\n headers: {\n contentType: 'application/json',\n },\n });\n};\n\n// 取得我的最愛列表\nexport const getFavoriteListAPI = (data, token) => {\n return requestHandler('GET', `/favourites`, {\n params: data.params,\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n\n// 取得我的上傳列表\nexport const getUploadListAPI = (data, token) => {\n return requestHandler('GET', `/images`, {\n params: data.params,\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n\n// 上傳圖片\nexport const postImagesUploadAPI = (data, token) => {\n return requestHandler('POST', `/images/upload`, {\n data,\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n\n// 刪除圖片\nexport const deleteImageAPI = (data, token) => {\n return requestHandler('DELETE', `/images/${data.imageId}`, {\n data,\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n\n// 設定圖片最愛\nexport const postFavouritesAPI = (data, token) => {\n return requestHandler('POST', `/favourites`, {\n data,\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n\n// 移除圖片最愛\nexport const deleteFavouritesAPI = (data, token) => {\n return requestHandler('DELETE', `/favourites/${data.favoriteId}`, {\n headers: {\n contentType: 'application/json',\n 'x-api-key': token,\n },\n });\n};\n","import React from 'react';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Loading = () => {\n return
;\n};\n\nexport default Loading;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { from } from 'rxjs';\n\nimport { withAuthConsumer } from 'Context/Auth';\nimport { getUploadListAPI, postImagesUploadAPI } from 'apis/gallery';\nimport Loading from 'Component/Loading';\nimport GoHome from 'Component/GoHome';\n\nimport { BsImage } from 'react-icons/bs';\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst GarellyUpload = ({ authData }) => {\n const fetchListener = useRef(null);\n const imgRef = useRef(null);\n const uploadRef = useRef(null);\n const { token } = authData;\n\n const [fileData, setFileData] = useState({\n name: '',\n blob: null,\n imgsrc: null,\n });\n const [isLoading, setIsLoading] = useState({\n list: true,\n button: false,\n });\n const [listData, setListData] = useState([]);\n\n const chooseImage = (e) => {\n const fileSizeLimit = (1024 * 1024) / 2;\n if (e.target.files[0]) {\n if (e.target.files[0].size < fileSizeLimit) {\n setFileData({\n name: e.target.files[0].name,\n blob: e.target.files[0],\n imgsrc: URL.createObjectURL(e.target.files[0]),\n });\n } else {\n window.alert('檔案大小應小於500KB');\n }\n }\n };\n\n const uploadFile = () => {\n if (fileData.blob) {\n setIsLoading((prevState) => ({\n ...prevState,\n button: true,\n }));\n const formData = new FormData();\n formData.append('sub_id', fileData.name);\n formData.append('file', fileData.blob);\n fetchListener.current = from(postImagesUploadAPI(formData, token)).subscribe((res) => {\n if (res.status === 201) {\n setFileData({\n name: '',\n blob: null,\n imgsrc: null,\n });\n } else {\n window.alert('上傳失敗,請稍後再試');\n }\n setIsLoading((prevState) => ({\n ...prevState,\n list: true,\n button: false,\n }));\n });\n uploadRef.current.value = null;\n }\n };\n\n useEffect(() => {\n const params = {\n params: {\n limit: 100,\n page: 0,\n },\n };\n fetchListener.current = from(getUploadListAPI(params, token)).subscribe((res) => {\n if (res.status === 200) {\n setListData([...res.data]);\n setIsLoading((prevState) => ({\n ...prevState,\n list: false,\n }));\n }\n });\n\n return () => {\n if (fetchListener.current) {\n fetchListener.current.unsubscribe();\n }\n };\n }, [isLoading.list]);\n\n return (\n
\n
MY UPLOAD
\n
\n \n

{fileData.name}

\n
\n {fileData.imgsrc ? \"\" : }\n
\n
\n {\n uploadRef.current.click();\n }}\n disabled={isLoading.button}\n >\n 選擇檔案\n \n \n
\n
\n
\n {isLoading.list ? (\n \n ) : (\n listData.map((img) => (\n
\n \"\"\n
\n ))\n )}\n
\n \n
\n );\n};\n\nexport default withAuthConsumer(GarellyUpload);\n","import React, { useState, useRef, useEffect, Fragment } from 'react';\nimport { from } from 'rxjs';\n\nimport { withAuthConsumer } from 'Context/Auth';\nimport { getFavoriteListAPI, deleteFavouritesAPI } from 'apis/gallery';\nimport Loading from 'Component/Loading';\nimport GoHome from 'Component/GoHome';\n\nimport { BsFillHeartFill } from 'react-icons/bs';\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst GarellyFavotite = ({ authData }) => {\n const fetchListener = useRef(null);\n const { token } = authData;\n\n const [removeTarget, setRemoveTarget] = useState(null);\n const [listData, setListData] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const removeFavorite = () => {\n if (removeTarget) {\n const params = {\n favoriteId: removeTarget,\n };\n fetchListener.current = from(deleteFavouritesAPI(params, token)).subscribe((res) => {\n if (res.status === 200) {\n setListData([...listData.filter((img) => img.id !== removeTarget)]);\n setRemoveTarget(null);\n }\n });\n }\n };\n if (removeTarget) {\n removeFavorite();\n }\n }, [removeTarget]);\n\n useEffect(() => {\n const params = {\n params: {\n limit: 100,\n page: 0,\n },\n };\n fetchListener.current = from(getFavoriteListAPI(params, token)).subscribe((res) => {\n if (res.status === 200) {\n setListData([...res.data]);\n setIsLoading(false);\n }\n });\n });\n\n if (isLoading) return ;\n return (\n
\n My Favorite\n
\n {listData.map((img) => (\n
\n {removeTarget === img.id ? (\n \n ) : (\n \n \"\"\n {\n setRemoveTarget(img.id);\n }}\n >\n \n
\n \n )}\n
\n ))}\n
\n \n \n );\n};\n\nexport default withAuthConsumer(GarellyFavotite);\n","import React, { useState, useRef, useEffect } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport { from } from 'rxjs';\nimport { InView } from 'react-intersection-observer';\n\nimport { withAuthConsumer } from 'Context/Auth';\nimport { withPopWindowConsumer } from 'Context/PopWindow';\nimport { getImagesListAPI, postFavouritesAPI, deleteFavouritesAPI } from 'apis/gallery';\nimport GarellyLogin from 'Pages/KittyGallery/Login';\nimport { BsFillHeartFill, BsHeart } from 'react-icons/bs';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst GalleryList = ({ authData, popWindowData }) => {\n const fetchListener = useRef(null);\n const { openPopWindowFunc } = popWindowData;\n const { isLogin, token } = authData;\n const [listData, setListData] = useState({\n nowPage: 0,\n isRest: true,\n list: [[], [], []],\n });\n const [favoriteList, setFavoriteList] = useState([]);\n\n const removeFavorite = (imageId) => {\n const params = {\n favoriteId: favoriteList.find((el) => el.imageId === imageId).favoriteId,\n };\n fetchListener.current = from(deleteFavouritesAPI(params, token)).subscribe((res) => {\n if (res.status === 200) {\n setFavoriteList([...favoriteList.filter((item) => item.imageId !== imageId)]);\n }\n });\n };\n\n const setFavorite = (imageId) => {\n const params = {\n image_id: imageId,\n };\n fetchListener.current = from(postFavouritesAPI(params, token)).subscribe((res) => {\n if (res.status === 200) {\n setFavoriteList([{ imageId: imageId, favoriteId: res.data.id }, ...favoriteList]);\n }\n });\n };\n\n useEffect(() => {\n setListData({\n nowPage: 0,\n isRest: true,\n list: [[], [], []],\n });\n }, [isLogin]);\n\n useEffect(() => {\n const getList = () => {\n const params = {\n params: {\n limit: 9,\n page: listData.nowPage,\n },\n };\n fetchListener.current = from(getImagesListAPI(params)).subscribe((res) => {\n if (res.status === 200) {\n setListData((prevState) => ({\n ...prevState,\n list: [\n [...prevState.list[0], ...res.data.slice(0, 3)],\n [...prevState.list[1], ...res.data.slice(3, 6)],\n [...prevState.list[2], ...res.data.slice(6)],\n ],\n isRest: false,\n }));\n }\n });\n };\n if (listData.isRest) {\n getList();\n }\n }, [listData.isRest]);\n return (\n
\n
\n {Array.from(['first', 'seocnd', ' third'], (x, i) => x).map((colum, idx) => (\n
\n {listData.list[idx].map((img) => (\n
\n \"\"\n {\n if (isLogin) {\n if (favoriteList.some((el) => el.imageId === img.id)) {\n removeFavorite(img.id);\n } else {\n setFavorite(img.id);\n }\n } else {\n openPopWindowFunc({ popContent: });\n }\n }}\n >\n {favoriteList.some((el) => el.imageId === img.id) ? (\n \n ) : (\n \n )}\n
\n
\n ))}\n
\n ))}\n
\n {listData.nowPage < 10 && (\n {\n setListData((prevState) => ({\n ...prevState,\n nowPage: prevState.nowPage + 1,\n isRest: true,\n }));\n }}\n >\n
\n \n )}\n
\n );\n};\n\nexport default withRouter(withAuthConsumer(withPopWindowConsumer(GalleryList)));\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { from } from \"rxjs\";\nimport { InView } from \"react-intersection-observer\";\n\nimport { getImagesListAPI } from \"apis/gallery\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst MasonryLayout = () => {\n const fetchListener = useRef(null);\n const [datas, setDatas] = useState([]);\n const [nowPage, setNowPage] = useState(1);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const getList = () => {\n setIsLoading(true);\n const params = {\n params: {\n limit: 12,\n page: nowPage,\n },\n };\n fetchListener.current = from(getImagesListAPI(params)).subscribe(\n (res) => {\n if (res?.status === 200) {\n setDatas((prevState) => [...prevState, ...res.data]);\n setIsLoading(false);\n }\n }\n );\n };\n\n getList();\n }, [nowPage]);\n\n return (\n <>\n
\n {datas.map((img) => (\n
\n \"img.id\"\n
\n ))}\n
\n {isLoading && \"loading...\"}\n {\n if (nowPage >= 5 || isLoading) return;\n setNowPage((prevState) => prevState + 1);\n }}\n >\n
\n \n \n );\n};\n\nexport default MasonryLayout;\n","import GalleryList from './GalleryList';\nimport MasonryLayout from './MasonryLayout';\n\nexport default MasonryLayout;","import React from 'react';\n\nimport GoHome from 'Component/GoHome';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst Sample = () => {\n return (\n
\n \n
\n );\n};\n\nexport default Sample;\n","import React, { useState } from \"react\";\nimport { RiSeedlingFill } from \"react-icons/ri\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst SUN = \"sun\";\nconst MOON = \"moon\";\nconst BASE_SIZE = 40;\nconst MAX_COUNT = 8;\nconst GROW_RANGE = 20;\nconst MIN_GROW_STEP = 2;\n\nconst SunAndMoon = () => {\n const [nowScene, setNowScene] = useState(MOON);\n const [counter, setCounter] = useState(0);\n\n const toggleScene = () => {\n setNowScene(nowScene === MOON ? SUN : MOON);\n setCounter(counter >= MAX_COUNT ? MAX_COUNT : counter + 1);\n };\n const getSize = (scale) => {\n let range = counter - MIN_GROW_STEP - scale;\n if ((counter % 2 === 0) & (counter !== 0)) {\n range -= 1;\n }\n const size = range >= 0 ? range : 0;\n return BASE_SIZE + size * GROW_RANGE;\n };\n\n return (\n
\n {/*

\n {counter}/{getSize(0)}/{getSize(2)}/{getSize(4)}\n

*/}\n
\n {Array.from({ length: 30 }, (x) => x).map((star, idx) => (\n
\n ))}\n
\n
\n
\n \n \n
\n = MIN_GROW_STEP + 1 ? (getSize(0) / 7) * 4 : 0\n }px`,\n opacity: `${counter >= MIN_GROW_STEP + 1 ? 1 : 0}`,\n }}\n >\n \n
\n = Math.pow(MIN_GROW_STEP, 2) + 1\n ? ((getSize(0) + getSize(MIN_GROW_STEP)) / 7) * 4\n : (getSize(0) / 7) * 4\n }px`,\n opacity: `${counter >= 5 ? 1 : 0}`,\n }}\n >\n \n
\n
\n );\n};\n\nexport default SunAndMoon;\n","import SunAndMoon from './SunAndMoon';\n\nexport default SunAndMoon;\n","import React, { useState, useEffect } from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst MOVEMENT_X = 5;\nconst MOVEMENT_Y = 3;\nconst BALL_SIZE = 30;\n\nconst Monsters = () => {\n const [ballPosition, setBallPosition] = useState({\n isReverseX: false,\n isReverseY: false,\n x: 0,\n y: 0,\n });\n\n useEffect(() => {\n let isReverseX = false;\n let isReverseY = false;\n const moveBall = () => {\n setBallPosition((prev) => {\n if (prev.x >= window.innerWidth - BALL_SIZE) {\n isReverseX = true;\n }\n if (prev.x < 0) {\n isReverseX = false;\n }\n if (prev.y >= window.innerHeight - BALL_SIZE) {\n isReverseY = true;\n }\n if (prev.y < 0) {\n isReverseY = false;\n }\n return {\n ...prev,\n x: isReverseX ? prev.x - MOVEMENT_X : prev.x + MOVEMENT_X,\n y: isReverseY ? prev.y - MOVEMENT_Y : prev.y + MOVEMENT_Y,\n };\n });\n };\n const ballAnimation = setInterval(moveBall, 30);\n\n return () => {\n clearInterval(ballAnimation);\n };\n }, []);\n\n return (\n
\n = window.innerWidth - BALL_SIZE ||\n ballPosition.y >= window.innerHeight - BALL_SIZE) &&\n \"sticky\"\n )}\n style={{ top: `${ballPosition.y}px`, left: `${ballPosition.x}px` }}\n />\n
\n );\n};\n\nexport default Monsters;\n","import Monsters from \"./Monsters\";\n\nexport default Monsters;\n","import React, { useState, useEffect } from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Loading = () => {\n const [percent, setPercent] = useState(0);\n\n useEffect(() => {\n let time = 0;\n function countDown() {\n if (time < 100) {\n time += 2;\n setPercent(time);\n } else {\n clearInterval(counter);\n }\n }\n const counter = setInterval(countDown, 50);\n }, []);\n\n return (\n
= 100 && \"animation\")}>\n
\n
\n
\n
\n
\n
\n
\n
\n {percent}%\n
\n
\n );\n};\n\nexport default Loading;\n","import Loading from \"./Loading\";\n\nexport default Loading;\n","import React from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Menu = ({ index, list, onClick }) => {\n return (\n
\n {list.map((item, idx) => (\n {\n onClick(idx);\n }}\n >\n {item.label}\n \n ))}\n
\n );\n};\n\nexport default Menu;\n","import Menu from './Menu';\n\nexport default Menu;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nimport GoHome from \"Component/GoHome\";\nimport SunAndMoon from \"./SunAndMoon\";\nimport Monsters from \"./Monsters\";\nimport Loading from \"./Loading\";\nimport Menu from \"./Menu\";\n\nconst CONTENT_LIST = [\n {\n key: \"sunandmoon\",\n label: \"日夜轉換\",\n component: ,\n },\n {\n key: \"monsters\",\n label: \"小怪獸們\",\n component: ,\n },\n];\n\nconst MainPage = () => {\n const { innerHeight } = window;\n const [nowIndex, setNowIndex] = useState(0);\n\n const scrollScene = (top) => {\n window.scrollTo(0, top);\n };\n\n const handleClickMenu = (index) => {\n scrollScene(index * innerHeight);\n setNowIndex(index);\n };\n\n useEffect(() => {\n function handleScroll() {\n const nowArea = Math.floor((window.scrollY * 1.5) / innerHeight);\n if (nowArea !== nowIndex) {\n setNowIndex(nowArea);\n }\n }\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [nowIndex]);\n\n useEffect(() => {\n scrollScene(0);\n }, []);\n\n return (\n <>\n \n YiShan's CV - 動畫互動特效\n \n {CONTENT_LIST.map((content) => content.component)}\n ({ key, label }))}\n onClick={handleClickMenu}\n />\n \n \n \n );\n};\n\nexport default MainPage;\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAAE0CAYAAACPc+AlAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABnrSURBVHgB7d1/bNz1fcfx9/f7vbMdh4TL2rCxiHJho4MMgt2GIGAs5/KjpbTEbquWbtLiqGtQxKoEaX9A2BqnGhSpm3A0sSiBKc7+addtjWmn0hGoLyAWFQh2fiiwtmuOAkX8WGNCEozv7vvd5/3Nnbk4dvzr7vv93veeD+l058udz06U173v/fklAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIZhCYCGcsUVV2Qsy1pd+vLAoUOH+gSBIXSBBrJ8+fLNnuf1jLs7l8/nO15++eWcoOYIXaBBLFu2rM1xnMHJ/txUv90HDx7cJagpWwA0BBO4bef6c1MB91522WVpQU0RukCDKBaLQ1M8JJVMJncKaor2AtBArrzyygFzlTnXY0xFvGhoaGhYUBNUukADMYHaZa5ylfeZtsJWc5Utfz06OtopqBlCF2ggWsEeOnRoqbm51oTtFnPpOHz48EbXdR8rP8YE8ypBzSQEQMMZPzfXhG+24suMoGbo6QLwmX7vMXOV0tuFQiH90ksvvSKoOtoLAMqy5Ru2bXcJaoLQBeAzfd295dsmdK8S1AShC8BngjZX8eUiQU0wkAbAVywWc47j+LfNwNrFUiPpdDq1YMGCTvMaaf3ahP3w6Ohof6Ps/UDoAvA1NTUNm+D1b1uWlZIq0yXGyWRys7mp84BT5jX8+034irn/oeXLl/ccPHhwi8Qc7QUAPlNtjgWtCcKqrkgzgbrBBKtuttMtpRkS4+nuZ+ZxGyXmqHSBEOzeuTPVOjqasVzXDyDPfMQ2A1nDt65fn5WQmI/5lWFYldAttRJ2mkCd1io38zithHslxghdICAatOcVChtEFx/k8xnRj9elHqp+0LbN7T07duiX/YVicWvQAWwCr638kd9cvytzVNosXTfQSVe8hm66s9fcv2GSp6V0C8ojR45MtTlP3aK9AATgyR07NizI54+KbiDueZkpHt6ZcJwB85yjj2/blpaAVE4TM1V3VmZJq1vTJnjIBKturpMu3697PBw+fLjdfO++Kb5Fm8QYoQvUkFa3ex55ZMAzH5m9SXqZkzGPT5vwPWqev1mCkRl77TOXBU+bVremnTBonl/Zm9VWRZfu8aBflKrYnDQolgEDNaJVatJUrF5FtTdrltV789e/frdUUWZjZ2pBS7LTsq30idffvertF3/j910TrUm56MY/3OJ6xaGClxz6yYPfy03n++lgmW6EXnmfhncikVg7NDSUq7z/yiuv7DZXE+7dW9qEJysxRegCNVDVwC2rQvD6QTu/udvcXG1VVLZvD74uJ1493cY976KULG7//YpneUPaGsi7TnayAJ7g7DWtbtceOnSoXyZRCl6t4tNjr2RC2gRuh8QYoQvUgLYUptG7nTnL6jHBO6u5rLdv+vJmsa2Npm9xVpvj1Sd/IYVTef/2hddfLC0fmT/Ba5sgdb3e46dGt2Z7+8dmN4wPXB0sM9Vt1/jqdjKls9u0jzt8rpCOC0IXqLKnTA/WPfvE3aopFIsdM5nZ8NlNf9aWsIq7ZZKqW8NWQ1f5rYWbLp3qW+YKntv14wf+bWiSwO3g5InJEbpAFWlbQQe/pLaGTfC2m+DNTfXA2+/78hptS0xU3VZ6Pfu/Mnr8A1n0R4slZS7T8e4v3+n/7ZG3xubf1lvgDj5zT0av2294MCsBYvYCUEWmjxvETIOUCfbdAzt3njNI/XaCWH1TBa5akvkDufjWy6YduFodH88dq9vAVU7CXuMkrKBmhowhdIEq0SrXO73MNQhthUJh0sD43L1f7tT+r8yAnZx+HBz7n7fGesBGrtTDra+WgmcGEj0rMziwser7TJwLoQtUSUBV7oc8b+NPtm8/a6+Cz9xzR9p2rJoepX7qjffGbl94XTr9+5+9NNDgmquDT9+rVXpab9tNrYHu90DoAlWgH/W907tnBcqxrIdMhZ2pvK/JcXdPp6UwW1rhugXXv60Dby0fbZWEVduQr7qktbp807ZktQSI0AWqID8y4m9XKCEwFfbO8nLhz2+6o9v0cWu6jFaDVi9qwUXlX9lq+/y9X6mLHcIGB3pS5k2pu/y1ebNsKw+qBYHQBarADvHY8tJyYZ0SZtq4XiAtDp1WtvT2ZWcMvFm2bNbFFxJxTtPoWZ9IbDu4TymELlAdGQlX27bevztjg5kQpM6b15SRCDukFa0lZ70xWZa95uCzm7qDGFRjni4wR9rPLeTzxyRkT/7fEXnpxBsSJlN1Z390/79GahmvBqmdnNdtOfbqaa0StKTPPO6x5dd9uyar4whdYI726ECW4wxIyHa9/qwcL4xIyIaPn/xgaeUy4bBoVes59gadFiaWN5sKNmcSMlssuLuquYCCTcyBubLt0Pd/fWf0vaoG7vyW+XLF0svl6BuvyFvDb8/kqalUMpk216FtQq6VrTOvdafnlvq0liezlNYBN8dx0oPPbhpuv/6BqvxOhC4wR64JmrAHR0bcglRT7189KBekFsvho0fkvn/+1oyeW0z6m5CHFrrtHb3+/r2D++5J20Wr04xcbbDESsuMWFnP8/a6rad629t7q1q1E7rAHNXi5NyZeq/wvkTFzAOuNtqvfTAnp89b6zWVaptt+Rurr5r05/Nk2LPcXW5R+mu5HwOhC8yRqYjGjhMPy2xbC1/91JfkmstXyI/++3F5anDv2P33Pfot015YJj976YUzHq9thw1fXC8n3z8pj/74X+TkyEmpB6XWQLfePvDspl7zz3XGGW2eeDm39f32ale1EyF0gRhotpMzfYosvTAtd5jQVXfc+KUzQlf7uD+t+LpM+7wa0upQ7oj89MW953wNXbRhm553+dRjpScfFwqF3G133RVKC8IdbepxmkfPCF3zppkNInAVoQvMXU5C1mw7M32KX62WzW9p9avYqSpXDePywNrhXx2Z8DGfSKVXf+ORR1ZZntc2di6c8+HPp58JmpLJ0ycfW37vdNct69b1SUDaO3qGD+2717yulSnfpzMUJCAsjgDmyD59NE2oFjctkJnS8NSBMqWB+9VPfXHK5+hshq///Tf8y2SzGn6v6fw2nQ87rYM4zeNMCO/Uk4+f2LGjWwLi5WXr2G3TWghyT11CF5gjz3VDD90FiXkyG9/96b+P3f78dZ+VG9vnvpp5Nm8AupRZw3fP9u27gzh2vlhszopn+f9u2lqQABG6wFw5TmjTo8qa7YQJu/NkprTSrRws+9ptf+H3eqeifd1yb7fSQhP+CxMtMmuW1akHetY6eLXFYCpcv6VQdPNbJUCELjBHyWQyJxGwdN70Tn0Yb+t//NNYq0DbDPd/7W/9mQuT+ZSphjf9+V/7l/GPW9I899lzWvVq8E51MsZcua7b77cWrv9OoG+ahC4wRx1r1w6bCi30ardt4cdkNk6OnPKniJ0ZvN+UDV9Y7wesVr66UEIvWt1+9cYvjT1XB+AqrUxdItWgwVvI53dLDWkf1/WsLgkYey8AVWAGgXrNf6YNErIfvPmivD4yu713NFTv/8tv+tfTVTmgtqRlkXzhdz8h1WTCd22QMxuCQKULVIFVLNZkR6qZuukjy2S2NDy14n1qcO+0Hq+DcJUzGOby2pMxARX4wZG1RqULVMmeHTu0xAx9SfAzv/25DL33qsyF30pYtkKuXPrH/u358063EXTK2JvH3vIH38rTzVTbwovkhkUfl1pwPa/r03feGYk3tWpgcQRQLZ631fR2Q6/Mbvidj8trHwz7O4/NllawujRYL1PRGQsrz69OL3citmVp2yY2oUt7AaiSRFOTbq4SiWPIb1u83A/DWtPX6DJ9XJ2yVkNttZ7JECRCF6gSfxaDVrsh+sAtyNDxV/1TJI7XeOexcuDOaV7u9KROnTqVlpigvQBUkVa7hXxePw4HWpn5YWv6uAeO/9q/XWsfbVpQqqZrHri+ZDIZ6h691UToAlWw23z8Pa9Q2FDM57sl4MB9beSYPOVXtsEc1XPN+UurNh93ujzPS0tMELrAHJTD1srnN+oGL7M+GGaWfjb8K3nu3aMShMvnX+iHbVDVbVwRusAsPbljxwbJ53vCCFv/9QM4/XdJ8yK5pHWxXH7ehbUeLGsY/C0CM6SbsSQSiZ3edI7zrpGnj/0imOPWrdNzcFE9zF4AZuCJhx9u081YJMTA1dkJOmAWBF1S/PSxn0vYLMvKSUwQusA0/df27Z12Mjmgm7FISHQa2DMBh+ABE/Kz3c+hWorFYk5igtAFpsEPXMva7YW8zDeoQbPxtH8cppaWllhMF1OELjAFbSk4lrVTQqZTwwLp405Ap6OF9dp6jpq/8CQmCF3gHPzTbJPJ0Ctc9fLJkEKv5KWQXr/ouo9JjBC6wDn4sxRC7OGW6Sqz0CrNEu3rvj2HTXRmy3Pd2Gx2owhdYBJPPfLI5jBnKVQKeyCrLPCfw7QWbl2/PicxQugCE9C2gud5GyUiXotM6AbbWjX/BrskZghdYAJJx9kchT5u2Tv5ExIF7+SDay+Yv/9c3I7qUYQuMI5f5Yp0S4SMunmJgqA21VGmyr1bYojQBcbRKlciJojtGqPEEumL0xE9lQhdoIKeUGCq3E5BaLStkC8Wt0hMEbpAhfzIiAZubI6GqUdWsbg2bjMWKhG6QAXLcVZLBOlJDVFQ65/D9bwtN69fn5UYI3SBM2UkghY40dg4fGENfw4NXNPH7ZGYI3SBkid27NBzuCLZWljcdJ5EwZKW2vz1NErgKkIXKDG9xMj2ci9pvUCa7aSETX+OamukwFWELlAShT0WJqNH5Xw05GpX+7lVPh9tWIrFjkYKXEXoAiWebaclwvQU3jC1LajisT2WlS0Ui+1xHzSbCGekAXViScsi/xLG5jcLE/P8wynnzIStFAqxn6FwLoQuUGLrx90I01Vp+vH+dQneTR+5XOaEsB1D6AIlnusOW44jUaSHUT737q9CWQ58TeoSv8KeDbdY3HKqpaW3K0YnP8wVPV2gzHEidw6XhqyeT6aHUYYRuEuaF8nKOfSSbcdZReCeidAFSpLJZE4i1GLQkP3Bm/tDOzFCZyvcdsFymaPMT7Zvj8y+xFFgCYAxe3bsGJCIrEr77hs/k3dGw9lHVwfNblj0cX+qWhUM60yFOO+nMBNUukAlz4vEIYhPH/tFKIGrCzD+dNGlZuBsWbUCV6WiuF1mWAhdRN7hZze1SUASTU19EnKLQdsJB47/WoLWtvAiWbPkOrlq4cek2nRTeN0cXkDoIvpcWzYMPnNPRgLQoYM+nhfqXq46SyEMTabKrWJ1exbHcejtCqGLiBsc6EmJa3U6CXuNBOTmO+/sNVehzGTQKjfII3EqaXVdyxkSZgBpjW4SLw2O0EWkOU2jnWJ5KfP5tHNwYGNg/2HNwE+XhNBmCKvKVRq4Q++9KjWUyufzDX8qB6GLaHOkvKl4ym6e1y0B0ZF2L5/vkACDV49ZD6vKLXv5xG+kxlZJgyN0EVmDA/ekxf3wvDLLkkBPdbjlrruGdKqTntkltTd86L3XQp8jrKFfy+C3OH+O0EV0OU125ow7PCsT1IBamVa8yWSy3YTFVqkS871y5tJvBuzutjyvywT70pvXrVv0y1Nv5iQCaryhTuqpRx+9WBoYey8gsizbWuN53hn32bZfKWUlQB2nl7FufHzbtl7HtntMyb3Kmubeu9bpKjlrfo8D4rpDJ1pahiZfFmsFNjXuXN7OvyeXSxV2FJuEfnowV69Ig2JFGiJFB8vs5Lxuy7FXm0owM+GDdMcq19tVHHWz7R0P5iQEe7Zty5h3gDbPstLm4+L55ftdkXelWBzSgD3Z2pqb7r4DnffckXYd76hEwCXzFldj+e+kiqbC/8zpGSINiUoXkXDItA28pLVainb36dkK3uQP1jC2JOM023Jw332lAD7V397RG1hPtLRFYVaqpCAFE97R2OHsA6+2G+vY5o1KGhihi9BoVZtoad1g8rXbPyrHlIkmcGf0PT4M4NadB/dt6iuOuFvCqn4xbedLAyN0EZ6UycxT7iumeasLEdIyW54Mm6je6s471dt+bW/oMwBmIyGJnCszfMNBXSJ0EZr2dj8g+/QyuO+etONKxrIdHTzLTPlkDVrL3eUWpb/9hgezUu9aRoYl3yxREPYBmHHHQBoiRwPYLlqdlmVv9vu7FTzxcqYNsdWd/35fKbRj4/ZNXzlq/kemJWQ3LLpU2mqw6U2Zqef7blm3bq00KCpdRE77tX5PtvfAs5tSpio4Y0tAy7Kyy//kgXiOfHveXonAINPipgVSY+9KA2NxBCLL1QUE4xTdfNUWKUSNZ9lZCZme+jvb89Cmy7SPGvr4HkIXkdV+/QNDluVly19ra6H9+u9E7hyzanGaRvpNeyHUQFrSHMieQrH9N5wOQheRZgbKPjzJwbN2SYz19/QPi+uFWsmvTF0itVYoFHLSwAhdRJqbb+4zYetXf67t9knM2U2jvWFVu5fPv9C0F1qkxoZvu+suKl0gqto7eoZNW2GXuQyVBthiLaxqV3u5QVS5ZqCwoQNXEbqIPNd1+y3Pi+0A2ng/fOD7PaaXEmg4rTx/aRBVrg6ixbpFNB2ELiJPFz8UW0f6pYHYRVtPrshJAK4xFa4euR6EYrGYlQbH4gggoko7jw2I1G7BhIatHrceBBM2fTc18KKIMipdIKL6H/xezi5aemRQTmrg0vkXZIMKXJUvFhu+taAIXSDCPgzeKvZCLRl2Xa/rHzb9owZ6VoLRf+vp7TAbHqELRJwG7w/v/363a3lz6/PqVDTL2mKf+GDpf377+36PPJFMdgVxBlyhWLxb4KOnC9SZz/3NHRnbc7tNgK4WT6ZcQmZCNWtZ1l77xEhvf2//WXOAn3j44TYrmdTecU2Wo7met+XTd97ZI/ARukAd0wC2PK/NXFImWMcOfPQ87xVP7JzTJNn+nu/lpvo+T2zb1m05zk6pMhP4Q7esW9cuGEPoAvDt2b5dD93cLFWibYtisdihJyoLxhC6aDiDg4OpkZGRCT9KX3vttTlpYNUKXgJ3coQuYkmDtVAo6JHmbbZtX2U+buttDdr0NJ6ufc+cXpuP7DnXdV8x10PmOrdy5crYL2MttRoektn2eC0reyKR6JruSciNhtBFbJSCttvSASYTtlKbgSENkiENYRPkex3Hyba3t8cuXB7fti3t2HaP+T3XzOBpw6aZvOXmBj5efToIXdS9559/PmPCYYO52Snh0BDOmkr4sauvvjorMVIOX1O9rrIm+5Rgfncxv/uJpqY+qtupEbqoW/v27Usnk0n9GBxW2E4kpwFsquDHVqxYEav9IvypZbad8srh67pDJ1tbcwTtzBC6qEsvvPCCBq1OcQrkqINZypUq4F1xq4Axe4Qu6s7+/fs3m0qyR+qLDsht0V22Gn2GRKMjdFFX6jRwK+mMiP7R0dEthG9jInRRN0o93KMSEyZ8+wjfxkPoom6YPq4GblpihvBtLIQu6kJp4Gy3xBjh2xjY2hH1YiaT9OuS6VV3m/bJwHPPPdctiC0qXdQFU+kek2hPD6u2XD6f76DqjR8qXUSeDqBJYwWu8gcNdbaGIFYIXUReIpFIS4PS6XE6gFh640EMELqIPBM8jb7MVKveQXq98UDoIvKKxSJr+017xbbtnbQb6h8DaagLDTiQdi79juOsjeOWko2AShf1Ivabh89Ap6n+B+nz1idCF3VBt0oUVNI+7wDBW38IXdSFRCLRJxiP4K1DhC7qgvYvdV9awXh+8OpRRYK6QOiibpg+Zo9gImnzdxPrfSnihNBF3Sgtid0qmEhm//79Dwkij9BFXXEcp0dOn8iLccxg48YXXngh9hsD1TtCF3WlNDd1rWAyvQysRRuhi7pTOmWXNsPEUqUTkhFRrEhD3TIfpQfNVZvgLKbV0MEJxNFEpYu6lc/nu8xVTnAWy7LYoyGiCF3ULZ3NoBt9C8E7kczzzz+fEUQOoYu6RvBOzlS7nYLIIXRR9wjeSTF9LIIIXcQCwTuh1IsvvnixIFIIXcSGBq/jOO3mZr/AVygUOgSRQugiVnTxxIoVK7o8z9si0L4uG+FEDKGLWLr66qt7dK6q0G4gdCOG0EVs6eIA7fM2+JaQ7FMRMYQuYk37vCtXruw2H7N1v4acNB6OOYoYQhcN4ZOf/GRfI1a9iUSC0I0Y9l5Aw9FduJLJpG76Hfd9G7JmUJHZCxFDpYuGoy0HE0btcW85MIMjmqh00fD279/fbQJKN4hJS0yYN5Q+01Jh3+EIInSBkhiFr786r3S8ESKG0AXG0d25TPh227Zdj3sXELgRR+gCk9ABt6ampkwdVb8Ebh0gdIFpqKh+V0k0A3irHtpZOkMOEUboAjOkAVzaq1YDOOxpZ1nXde9euXIl83HrBKELzEFpzm+bCb5OUwVfJcGEcM5U3bsSiUQvlW39IXSBKhocHEwVCgUN3jZTDWslrBvOtMncNp7Jme+lFe0B87376dnWN0IXCICGsRnkSutWi6YiTpsA1RCeKIiHzZ8Pm0p22Dx+qKWlZZhqFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiz/wcmk2D5+5B9VQAAAABJRU5ErkJggg==\"","import React from \"react\";\n\nimport img_caterpillar from \"image/F2E_web/caterpillar.png\";\nimport img_butterfly from \"image/F2E_web/butterfly.png\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Loading = ({percent}) => {\n\n return (\n
\n
\n \n \n
\n
\n
\n {percent === 100 ? \"complete\" : \"loading...\"}\n
\n
\n );\n};\n\nexport default Loading;\n","import React from \"react\";\n\nimport { BsList } from \"react-icons/bs\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Header = ({percent}) => {\n\n return (\n
\n
\n

THE F2E

\n
    \n
  • 關卡資訊
  • \n
  • 作品列表
  • \n
  • 攻略資源
  • \n
  • 求職專區
  • \n
  • 我要報名
  • \n
\n
\n \n
\n
\n
\n );\n};\n\nexport default Header;\n","import React from \"react\";\n\nimport { BsArrowRightShort } from \"react-icons/bs\";\nimport img_caterpillar from 'image/F2E_web/caterpillar.png';\nimport img_butterfly from 'image/F2E_web/butterfly.png';\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Banner = ({percent}) => {\n\n return (\n
\n
\n
\n

I don't
have time...

\n

WOW!
修煉精神時光屋

\n
\n
\n
\n
\n
\n
\n

4th

\n

THEF2E

\n

互動式網頁設計

\n
前端 & UI 修煉精神時光屋
\n
\n
\n
\n caterpillar\n butterfly\n
\n

ummm...

\n
\n

butterfly

\n

~Timeflies~

\n
\n
\n
\n \n
\n
\n {Array.from({length:10},(x,i)=>i).map(el => <>

THEF2E

    )}\n
\n
\n
\n );\n};\n\nexport default Banner;\n","import React, { useState, useEffect, useRef } from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst ITEMS = [\n {\n key: \"question_block_A\",\n text: \"“滿足不了同事的許願?”\",\n },\n {\n key: \"question_block_B\",\n text: \"“羨慕別人的酷酷網頁動畫?”\",\n },\n {\n key: \"question_block_C\",\n text: \"“動畫技能樹太雜無從下手?”\",\n },\n];\nconst SCROLL_STEP = 200;\n\nconst Questions = () => {\n const ref = useRef(null);\n const [nowIndex, setNowIndex] = useState(0);\n\n useEffect(() => {\n let preScroll = window.scrollY;\n const handleScroll = () => {\n const offsetTop = ref.current?.offsetTop - SCROLL_STEP;\n const isReach = window.scrollY >= offsetTop;\n const scrollRange = window.scrollY - preScroll;\n if (scrollRange > 0) {\n if (nowIndex < ITEMS.length && isReach) {\n const index = Math.ceil((window.scrollY - offsetTop) / SCROLL_STEP);\n setNowIndex(index);\n }\n } else {\n setNowIndex((prev) => (prev >= 0 ? prev - 1 : 0));\n }\n preScroll = window.scrollY;\n };\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [nowIndex]);\n\n return (\n
\n
\n {ITEMS.map((el, idx) => (\n = idx + 1 && { className: cx(\"active\") })}\n />\n ))}\n
\n
\n {ITEMS.map((item, idx) => (\n = idx + 1 && { className: cx(\"active\") })}\n >\n {item.text}\n
\n ))}\n
\n
\n );\n};\n\nexport default Questions;\n","export default __webpack_public_path__ + \"static/media/topic_design.b796c22b.png\";","import React, { useEffect, useState, useRef } from \"react\";\n\nimport img_div from \"image/F2E_web/topic_div.png\";\nimport img_design from \"image/F2E_web/topic_design.png\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Topic = () => {\n const blockRef = useRef(null);\n const [isReach, setIsReach] = useState(false);\n\n useEffect(() => {\n const offsetTop = blockRef.current?.offsetTop;\n const handleScroll = () => {\n if (window.scrollY >= offsetTop) {\n setIsReach(true);\n document.removeEventListener(\"scroll\", handleScroll);\n }\n };\n document.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n document.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n return (\n
\n
\n

互動式網頁設計

\n
\n \"\"\n \"\"\n
\n
\n
\n

年度最強合作

\n

三大主題來襲

\n

\n 各路廠商強強聯手!\n
\n 共同設計出接地氣的網頁互動挑戰關卡\n

\n
\n
\n );\n};\n\nexport default Topic;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn0AAACQCAYAAAB9Nt24AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACEySURBVHgB7d0/cNxo+QfwJ3ZywzBwMS0U0a/i5iY++2agusIyFdXFKeiYyeZooLLTQHOM18M1QBGnARqwM0NxA0Wc7iqsFFQwE+cSbo7KSgHt+aDjzsnv/a70Oq9fv5JeabVavbvfz4zs/aPVStrdV4+e949EiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjmyCXph101XTXuP1TTgcyGWE23rMduSz0barph3D9R0x0hGo/9vXoi2W9x0gZqWpvQ+w6sZdf9rRER0YQdq+mlMQ1ldgzk/La9lPqG1uuPhWh8Qzn/vTqUbuxP8H2PpfvtISIKwoIQEc2GKJ+0+0JERGcY9BHRrNiw7idCRERnGPQR0aww2yceqSkVIiI6w6CPiGbBkmSdprRHQkRE5zDoI6JZYFftzkrvfyKi1jDoI6JZYA7Tkgrb8xERXXBZ+i+WrEDH/yifME4d2uygd14i7bTdiSVrE4T/S8b7pPmEsQP3ZXbEkm3vqmTbupRPqbza7j5s89C4fU1efeZFBnK+B6e9DBu2+a6anhuP7Uu971Qs7n3Z1vcHyzUzWfju60wW3mczfz7KH0vz6aZ0D+szkOw3uyoXv1eYImlfbNxOhIiIOhOr6YFkB2kfrnH6YsnG2XpZMeG1kTQXO96/7L1WpZ6B9Gucvkj89qv5XgOZHntdqwbx/UwubsO1kvlja97PxF8k3ezLgbWcvfzxTXFvL6bHHssdSnvj5eng+WWDaZz3hdha3obn6yLJ9mXd3zQREcnFQO2a5+uO5eKBt85Bo2kQtF3zffS61TlIDBzLqGso7WxvJP4Brj1ty3Tsin+AsCrudd8qec2wxvJNkXS3LwfW6x9IdbDp06ZtKM223RZJFmS+bDg1fV/N/o4seb4ustZhIEREM6yN6l1dvbQl/oWtzzJNqbyqbosd80eSnd3XabyNdR5aj6Hq6Z5k1Wcn+Xpgubfk/LrhoPt/Eh4c2CLrMWwnqkxTeVX1tiYX9/NQsh6RiXQLn+mmcb8s4I4LHl+RYmvW/YfiZ9x9iUuPNe1s4JPJOpLuIMNnfy56X+ihU3STCcy3Ju1W8ZqfYZK/d11xPm2raUfaazZCRDQTUHijsC/KyuGg6BsEHos7ezd0LCOSi5dxwrQn/iLHez6W4vUdOt4vFj8Dx2vrGsrFfVPXwLEeyJAslcxvf7aH0r0lx3oUBX4PxP1dLNtfvss2DaTevowd71PnMxxIeZbMbM8Xyav2r1WGMv7nO3CsU9lvCfZbeF8tspY18H/paB2Pxb1f8XntyWTaHxIRBSOW8qqlQ/EPiDS74K0K4FyBQJ0Dx55cPABHFa85rLmO2kAu7qO6htI8YNCOGyxjKM2D3TbZ+36rYD5zG+3vxzXH/HZ1sO9+fSzd7suBuAPZWMYzlPGDr0Op/1vab+F9tYG1rEjqi6X4hEH/1mMhIgqc75AtCLJwoD0Ud1CH6hRUiXxDTesyfhXg84rn8X6+1XAusXU/keqqnCcVy+izSC4eDHc8XufqNDGNRu/2QLuu6lrdc1azr7u6XvAa0xOptuR4ne++tKsdfappi7wt0++lag+IDLp6uyu3jNu6KrmuRLKezmiygfW3P6eBZOXesbDdHxEFrCroQ6G+LVlhh6rc2HoehewdyQrLoTRrS9M1OziA+x6vs9tItdV+sQuuQM2nzdeJY75YupdI9TrY2ziU89/HNcdr7McOpFqb+zKS5vrwW4sdjyXSHTvofCTjSSUL6hBQ35aLAWQkWdYP5eGmsOqXiAJT1pEjluJql0ReNXYOTeR4LCmYV48xBtccz4UicjzmE6gAsl9moLPi+Tpkhn320b5UZ2fMjjUQyatx8LQ1x/z4H+ePxY7l2gFcItUix2Op+LEz2L77sq8ix2O+36s2xNZ9n6DdRyrZ9xLTQLJsYmw8H0mWucWEALHLbSYiaqxO713dGw8FayLhcmVq7DZZZrBXBoFgVVV0H9jbUidL1DSj5JsJSaQ6aLIDOMlvH1j3NZ3xeWg8Hsn5QNGupk3FL3iLxL1+PlLrfkgnDi6Rdf9Eus1A3jBupzKZcmk/nyLJsse3rOdD/wyJaI7UuQwbCrerEv4wBq5COrIm34I8hIDPZZygL5LpsNtwxsbtSM6vV2L91zaM202yfC6pNBd6wDDOyUQbYuN2IpMVSdY5qOttJCJqTVmmz1W4DfIpkSzrty/h8T3QptZtncV4Lt1nNMY1C9kIuwrNrBotCuDsamFzvth6zTgdg6h7sZwP9Cf1+cWStWuOhYgocGVBHw6Y6KCxJVk1SmQ8F8vsDGSaStazM5XZ1WaA6rusdc/5fJeXSHEAZ1bz6UDPfJ3O8Jnt/uxOHE3bZbF6bzo2rPuJtAef6UCKmyjg+4VB3HeFmT8iCkhV9W4qWdCH4K+sN9uhhDOQqauQTmW2jVNFa8+bip/Uc6pz0DQDM7NNnhkA2j04zfur4g4a6wz1Ya9vnaDPnjeV2RJJd8ygPZF2gi97tILIej6R8EYrICI6U6dN375khR0yOPYQJ5FkZ8YoLDHIaSz9lVr3I5l9roPTNfFzzWNZXXG16zODP0iseQ4crzGDP7ADxTKp4zHffbnisayQpI7HfPfFOCI5/5nfl/HEkp24os3eUC4G54lk5R4mZveIKFh1gj4tkSzA0wOZptbzqHbRA5n2serLVY0Xy2xzbfPb4sduL+czgPGkJNZ9BFFxxTypnD9IY/5xOnG49qVvVXaf9mUbUsdjN2XyYut+Is2gfKoacF6f6CZCRBS4JkGflkoW/KFALKr6vSr9Y7f5glsyOa6sQNfBcNNtHog76zEt9nbEcv5g7dpOMDOECBTt9nyJ+Eul2b6MpV/70qXu9zJxPHZDJq+Nq3AAtje2HkvlVbA3lNlv+kFE1NhAzl+L07eq51jOX+ty6PGafWl+/c5duXh9zW2ZjFjGv37twLGM1ZrL2K25Hjgg2p/LsUyffY1U8zq4uwWv2ZKL29Hke6MNZfx9+VL8g6yB47VtGFrL/EzqB36H4v9b0m3mxrlu9pL12l1pLrLWIRYiIqotkiwou+Y5v31AHHq8Zl+aHzgicV9YHQEFqqdX5fy4fbg/yNcL83wm/tfgjBzvg+3dypeBBuNV+yn2WEaT9cB2bMv5do06++EKUoYyfXYAZ04bBa+JSl4zlPqwjz4Td7ATWfPFcj4wbRKsDByvb8NAyr9X2x7LGIp7v+5J9nnE8uo7+lnBvIfib0P8g+0qkWSfQyxERNQZO8AYerxmX5ofOKAsePCZ6hy0H1csqyprVxRkmNM1qVa2zVj+ccnzx9IP2FdF61iWpSraf7E0M+6+rJNRGziW0YYlqf6e+zj2WE7ZdCj+9qR/30kioiCM06YvdAjadqS5qMa89yqerwr6TjyW8Q2pVrbNCACigucS8e+sMGlH4m63V/S45hq8F/Mn0kzTfYn1XJd+9AD1+V5dk2p1xrlMZLzetrG1LCIiCoydKRh6vGZfmmcLTFG+rKpMms7g4H2aVAkNS5Y58FzGbskyYvEXid82H9ZYty7tS/3M60DGyzAViWTy+3IgzTJwPhCg7kvx96rqhESLSpajtz/O542l2edgv25DiIjI2yUhk27LZ1a9IRuSGv/HsWS8h+TLq8pQ2SI5P87ckTS/moSIe5t1j8g+ZKNC4tqXqdT/jKchkna+V5FjOam0s/0I7DeN+98QfkeJiIiIZo7ZNraNLC0RERER9Uwk56t2t4SIiIiIZs5Azgd9kRARERHRzEF1LodqISIiIpphbV6Fg4hobs3zOH1EFIbYun8gRERERDRz9uT82IFERNTAZSEi6jdcweNRfpvj8hERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER0Vy4JJOzpKZYTZGaVtS0mj8WCdH8SvPpRE1P1JSo6Si/T0RENDFtB30I6jYlC/ZiISJfiZoequlAsqCQiIioVW0FfbGatsUI9JaWlmR1dXU0raysjP7jsSiKhGhepWk6mk5OTuTRo0dydHQkSZLYs+GBnfw/ERFRK8YN+mIxgj0EdXEcy+bm5lmQR0TlEAAi8Hv48KHs7++bT6VquiNZ9o+IiGgsTYO+SE17YgR7CPS2trYY6BGNAVlABIA7Ozuj27l9yTJ/qRARETW0KPWhzd6HanoDAd7PfvYz+fDDD+X73/++fOUrXxEiak43i8AJFDx//hyZQHSC2lDT55J1+iAiIqqtTqYPKTxU5Y6ORhsbG7K3t8fMHtEEIduHrJ9R7bsrWZXv3IuiaOmrX/1qtLi4GElWPp15+fJl+uLFi5NPPvmEQTIR9dYbb7wRXblyRY9ucmZSZZhv0IeVOVTTKoK87e3ts0wEEU3e7u7uKPhD+z/Jsn03ZQ6re69fvx5funTphppiVSiuer4sUfM+UgXoAYNAIpomlGELCwtrqkyK5dVQdqVUeXek5kc59vDZs2eJjMEn6IskC/gi9Lx98ODBqPqJiLqFrN/6+rpu64c/6zIHgR8yeq+//vqmKvBwpjlu1UKqpp2nT5/uCxFRB3QZpm5u1DhZLZKqIHD3f//738NPP/00lZqqgr5IjIDv8PCQQ64QTZEj8HtbZnRg55aDPVsqDP6IaMLeeuut7QmVYcgADlXW8N7R0ZH3MaAq6HusplUGfET9YQV+qK5Exm+mAr+8GhcjBEQyWekXX3yx3uSMmYioSJdlmNQ4gV0oee6uBBrw/fOf/5Q++fe//z0agw3/qV/++9//yt///vegPhvrN4mqgm2ZIerM+K4qLEc1DDJ5aER9jLNxISJqgSpPNrssw9S0t7y8fNdn5qKgb6CmLXTa6CLg+9WvfoWdNPo/LnQw+cEPfjAaQgYH9HH85S9/kXfeeWfsTisYw/DnP//5aJp3+Ez++Mc/jj7rPgRaWI/33ntv9H3p28lCGd2+Nu89v5VPQUN1rjo7fpxXhXRKvefQt9AkIiqysrKyp8qTXeneloqjHqM3cNlMlx2PRZJnDtBLt4sMH4IrQDAAP/3pT6UJZNP0shBQIMD4+te/Lk0h4MUy9DKLIFP0t7/9TW7cuCHf/OY3Lzyvg89//etfjZcRMgRT2DbsR2ynhvsfffTR2X08p6rZagfr+IzVF12+853vSF3mZ1v0XcF6lX12dX33u99t5TNGhyr8Ru/cGY3ggt9ssNftzYct6OrMuMiWCvxWFxcXb9ZpI0NEhJNWdQx58OLFi1imBJ1EUI6q8rSwyYor6MPBIxoMBp0Ny/LBBx+Msi2AwO973/te7QM4grzf/va3Z/d/8pOfdBI8IUDR647bTQJWcxnYjl/84hcSKmwLAjxsB/4jYCoK4r71rW+d3cZnZ35+TWDf//CHP/Se31y3okDM/Gza8u1vf1v+/Oc/SxvwG8U1fA8ODpDyQ/uRdQkMCsseBHxafHp6iozfbSEi8nT16tW70wz4DNFrr732QCUF1l0nr3b1Lkb9HyC7hwxCVxDgmQfr999/v3a2x6wuxMEbQV8XzPVsWp08bjV0H+iqcF0djs9DZ0pNCK7w2fzhD3+Q3//+9+dePy4zi+i7ztq7775bON842eIu3L17V1fzxvkUFLV/u2jsXMeAVb1E5AttglXAN5CeQMZPnbzuuZ6zM32jgu7WrVudd9xAIICDMAI3nSVCxs8HMkT6AI6ADwHFrEJVKTJPXQeKCHzwGRVl0rBe9jrhs8DrdFs5vL4oGNevxfz4/HwDLXxXzExrHeZ3BtXqLlgPZOXwfSyj22sii1eVbfT9XvvCbxWB9nA4xF2crSUSiHw4gw3pH1T1Pnr69OmBEBEVUOXEAG2CpX82VPm69fHHH59rX2gGfbHk4/HlB49O4eCqq3lxEEYbLV/mwR7LmLU2cSYEKtPIDOperkUBDR7HZ4gJ1bYIfnAbr6lTPYrX4LW+6n7WCBLNkwvNrFrGOiAw08suCwo1HfS9/vrrlfNOAjoL4aodJycnsWS/5UR6Du34elpYanuqiiRh+z4icsk7TfS2578qX++++eabiXklIjPoO+u8MQk40OLA6BOw4GCM3pRNVAUYOKCj7dc0DsxtQPXouG3fmiprZ4n9Wqc93TTge4We3fZ30G4PCmhbigxf36t2NVTvhpbty9vx9dkS2/cRURFVho36QEiPLS4uogw7a+utg75I8rZAcRzLJLiq/6YB6+AamkNngMx1RE9SzQ4K2uxlW2e/IPD661//WntfIhOktxvBWd0ATWfxQobe3b77rW4Tgz6wsn1o5NfbDBWqRKTnhWVucP369fvjXu+SiGZLnuUbSP/FGChal2E66Bu1qUGP3Um15cPBs6pdVBdQ/eYKeJDZ0UPGuNhBHwIoHGBNCBr/85//jN7DpAMN/HeN1Vd3OJAmAZg5P27PchW4D/SQRtbUZn4PQutgg2wfTtoODkbN0ND1fij9FcxgyJcuXQqqnSQRTV6e5QuCWYbpoG9U1znJKk+00+pzB4umQZTurIAAARN6rBbB88g2lanTno2aKxqiBScnRcE/Hi/7fAHZ4R/96EfO53DptElXgSPblwd9a9JTOOuUMLJ8Wry6urrEtn1EBAFl+bSzbB+CPlQDxaNHJ1S1GwL0KsUB3ye7Y3c2QMbv17/+9bnq4Lr0AMOhtjUsqjY39wmqTO1hVZoMqDwNCNZ9rhijxyl0weN4fpLDCWHAZmT8+lzFq846b0lgvvzyy75nTomoI4uLi30ccaAK1nkU9OHanaOALx/ra6boa976tMFDIFd2FQ8d2NjZOGSN/vSnP8k8Q0BUlcXE8/Y8qGY1A118Vsio+WZeu7p0Wt0xAItMen3xG0bglyQJ7saSXaWjb4IrMFWg2tvMKRF1K8QT13ydtxD0xXgAB4qu6Ouv+h5Ii6rFdFYFQZcrSMABVreh87nSBQISzI8gxDUven5iOWXjzc2rpu3fXNffbeMazJOEXr124I9rRwO+i+ag02D2Ru+inaAR9EXSM3nVbohnl6ziJaJR1a4KoLoLmNqDa5vHCPpWcG9trbsTWZ+skKmoWkwHYaiWtTtVQN0DrJ7fVT2H53SA0lV2KSQYBsfVHlFnWgFVuWbnCQTqOsuH15tXVakLy2rj8nU+VfR123923WlmZWXl7Kb0DEaKVwWmhOj09DSWfmZOiagjV65cCTHgG0H5q9v0dVq1awZVZQdE3TkC7EDLHFy3reyJXhcs167mNYMRHdwgSCnr8duUK1vUd65L39nj3+lLsLkgcMfzTT/Luj2afcaBNK8NHBIja9+7wmlhYSHYalJVYMbCoI9oroV84qrK3xUEfRHudH3ZNcBB+qOPPip8HoEesnnQRbWYeRUQBCxm5sp8f/14G9eLdenD0DZtqLsdTccCnMR3A0FsqD2pjRO43lWjqgIzCrXAVOt9VYhorqlyoHc1KL50pi/CnWkFfeM83zYz64hqPvOgb1b76QwQqiSrhvDAGHxm20Wf3rmh9GitYo9tiKpetM+sc4k9m+5Mg8/D/I/vCrKjvsvWl41z0dXOoQ5GbfyWI+kZVWBGEigErEJE8y7YHq+q/F26LD2gD+R9CHYQ+CHL56pO1nQwiCrJqis2IBuogz68ro12ZyHANtvt83AfY9i5gjM9L/5jgGvdhlLf17eLsnp4/He/+52zbacLgr55H6B6SkIuMOPl5eWXHrOeqHmD6/ChgtpUwpRKYNS+fi6BUVWDJ2q9+b0Oa4xRWzT1oA8Ha90hA0ERDsbTHKsOwYgruNBBSd0qv7pZvlnxm9/8ZvRfB9Ea9qsd+KHHdJ2OPZoe2xCfCaaQLplGM21JHWhCDG4joU6E2MRBfaclRKE2J5mUXmT60IAfB309xAqqBad19Q5dpWf34tSXSqvbuN9czrwEJQh0dbCLIF4PwYLbyHzaGT9XNapu34dL2ulMH+hBtPWVUIi6og56R8+ePXvbZ958xP6gXL58OZIAhdhkINSmAmq9r0lg2v5+5MO1BFtjgaAvVVOUpunU2vWhyhMHcwR7eogP9K6cxoDHusrPzvTp6l5XFTTWuWjMQf04ttNu42bDPLNQ7fjLX/5y9B/BvFmNi+1DMI/MLvbv1tbW6D7aRiKQ04Ge3aHDzARimW10sHBdA9mE98B6hQi/ZX1T+ieVcDNK3lVb6mQvlfCkQkSllpeX0ZA/ljCdIOgbFWQnJ9Otqkegg+APQZUOjpDl6ZoONsygz2zfZ7dF0wM6V/G57i4gE4bBf0PNYumMLbz77rsXntdDu+gx+fAf7fC6bs9Z1bMYz+MzCHEQ7j4HfWgTFHDv3c+FiOZdcO0xNbRvRND3RE2rT5486fSqHEXQ7k1Xg3YxTIvNFfTpql2ws0xmezUzQ2WOMWhm7ooeNzsy2MPFhALbpQN2bBs+S1cGFNlMVHuj5/O0smkI3r/2ta85n9PrHOog3J9/fhab9C5IUYHTqLyRAKF6V4horgV+4vocQR8KsltHR0dy61Y/LifnCrymAcEXghd98EcgVpaBQ4ZOB3IIfjDhvjkWYdHj5kDP097uprD+Ztu7Mh988EHpdY4nDdnFomr0d95551xwHpr8EmzQuyDlxYsXRwsLC8FdtxJUgcmgj2jOqXIgUf82JUCq/E10mz5B0DcNCBI2NzdHmRcECtNuz4YsI6oo0XZMr4sO+qo6cYyz7qF3SkB2zM7yVTG3GQFjUZBldobBZ1NUNev7vj7rFWrAB8ZvOZGeCTlwWlxcZNBHNOdUOZCcnp5KiFD+IuhLcAcHCrTr6/JybIADOIIqTDig46A9zeBPdzYw6aADmT7dZg3Tj3/8Y6EsM/n++++f3a/b8xoBo+7hW6WqXaQewmVe4Tfc50zfs2fPkuXlZTQgDqr3G6p2lVSIaK6pcuBElWGJhNeZ4wTlr+7IkaiDRYzAL45j6RKCPGTQ0ONTB37ozKCH5pgW88oPCCLs68gCAlMO8CtnAylDk97H2L/2eH5NNL2M2yx59OiRvplIjd6mXVIB1H11xhlU9QjWWYiIZFQePMJg7RKW0XXD9Th9OFLE9+7d6zzoA/TcRHs4BHwIrHDwR3Vfl0Efsk32pb3KIEjBJcVCbezfJuwLfFbYb016u1Zdg9kcsgVZxFAuU6eHHxo3mK3j4ODg7O2lv7CSQQV9V65cORAiIhmNabmrqni3JSD6xFUHfbh21TaqhaZRxash64e2dAj8qg7sCDQwD4K1cYMAZKree+89qXo/BDb6yg86o8SgL4OOEdPsmNE3eqBxm2sYm7ZgqJb9/X19t7dBSl7Fm0g41SP7rNolIi3AKt4U5S5u6KDvrIoX2b7t7ekFsHq8PqjKkLR11Q5dLWg23i8K8qhYSPuo6MTCrKo26XaCvlX6+vuDpgr6Pk5qJnkpPqMtH26k0mPqrHMnlOqRxcXFHSEiMoRUhilnZdhl68EYGRv0pp1Wtm9aEGgia9jXIA/BAzJHbfQq1cPGNKEHLEbbvdCYnymqXqs6hZjBnb4mtO/3AvPht9SlnZ2z33Xvg5SAsn3M8hHRBXkZhirTvg9BlT59+nRf31kwnkgky/YJsn3zBoEeBgquc2DvEgYy7sMwIliHokvO9R0+W99OJvrKIaY+ZzIR8OVX4sCfRAJwenp6R/otZZaPiIqo8mFLetphTlPruG7ev2w9f5btw0DN07gWL7mhKtLnMm6ThsCnrY4UusNOVTBrjsunB7Yugw42rk5AusOIT8eKkHplW235+h5Infnkk0+O3nrrrTuqmuSu9NMOs3xEVCRv23db3XwgPYQqaLsMs4O+RPK2fXfu3JEHD7rdDhz8dRsoMDNKVVkWVwBhDurb1ywN1lePVVhm0u3BpgFBrL4Kia+qa+bqecp6fs/aMDtGlm9fetyBw+Xjjz/eVYXmmrq5IT2CwlJV3+wLEVEJVXV6cP369Xs9HIbqQJVhQ/vBy44ZEbU+Pjg4WEI1L9r3dQVZnKIgANmbMhjc1wwYbV0P86GDTDvYtB9Hr2E74JuXwYV1T+22TXN8x67hN5pn+VIJoC2fi6p+uP3ixYtIBVp9uSbvfVdhSUTkosqLLXXyio4QfWnfh6Ypt11PuIK+VLKDx93hcChra2uyutpuWawH4rUPzrq3o65+071qfbJcGAoDmT2z6g6vxRUa8NykAgGdNUIAY8L7YV3sAA7bgeyenh/z6aAPy0KHgVnqKawHXsY22/sCgbjK9Mgs0N/dqpOTNiG7h99oDr/ZVAKEKhJVxtw8PT09VHcjmSIVeCaqAB8IEVENaN+nyrBrMv3OaQj41lGuup68VPJCdD3cRLs+dCJou30fAqKiaray53yWC7xSBs0yBHwIMPNqXfS82pLAqcAvUhm/B1PM+N1XVTUDISJqSFX17k6rqheXi7x8+XJhwAdlQR9SlTjzXp1U4EdE9VkBH66v+7bMkGkUmirYvPOPf/yj2zF2iGgmqTJsqMqwTgc8VgHfPVQzV813qeJ5BH6P1RQx8COaPivgw591CbRat8zy8vJA/UOhGclkpaqwvK1HqyciagNqLjpqslKrDKsK+iCSLOPHwI9oilTKXm7evDnzAZ+mCs2lL7/8cmtCZ8wn+ZnxUIiIJmSCJ7CjMgzXAS6rzrX5BH0QSTYOzSqu1IHG41326iWad+ili98dBk+XrEoXAV+vBwVtC86Yv/jii42FhQUUOpGMAW1e1L+HdQtKIqJxtBj8NQr2NN+gTxt17sCNwWAwukYvs35Ek4OsHsbMPDg4G34PnTaGMicBn+369euxZGP6rakMoE+Hj5M80HukpoTVuEQ0TW+++eaqOoHVZVjs8xqjDDsYtwyrG/TBQPJoFQGfDv6IqD36coi4Ok6e3cMfDMvCzgaGvABdUoVnZD11orKDR59++mkqREQ9VVaGnZ6epq+99lraZq1Ek6APIsmyDaOBCBH86TH9mPkjas4R7EEi2aDpqRARETXUNOjTkKLEdTMj/QAyfxiAOI5jQfs/IiqH4A6dNBDsJUliB3s7+X8iIqKxjBv0abFkVb7xuQdV4IereSADiAAQWUBmAmmeoY2eDvKePHky+o/JCPQgEQZ7RETUsraCPi2SLPuHa6bFQkS+Eska6qLNHnuVEhFR69oO+kyo20XvulhNK/n9SKZ8bU2iKUslC+rQG+tJfj8RBnpERDRh/w+pPbi6U5OP4wAAAABJRU5ErkJggg==\"","import React, { useState } from \"react\";\n\nimport { BsFillForwardFill } from \"react-icons/bs\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst datas = [\n {\n id: \"week1\",\n week: 1,\n subject: \"The F2E 活動網站設計\",\n hashTags: [\"視差滾動\", \"版塊設計\"],\n uiPeriod: \"10/31(一) 12:00 PM ~ 11/7(一) 12:00 PM\",\n fronendPeriod: \"11/7(一) 12:00 PM ~ 11/14(一) 12:00 PM\",\n },\n {\n id: \"week2\",\n week: 2,\n subject: \"今晚,我想來點點簽\",\n hashTags: [\"Canvas\", \"凱鈿行動科技\"],\n uiPeriod: \"11/7(一) 12:00 PM ~ 11/14(一) 12:00 PM\",\n fronendPeriod: \"11/14(一) 12:00 PM ~ 11/21(一) 12:00 PM\",\n },\n {\n id: \"week3\",\n week: 3,\n subject: \"Scrum 新手村\",\n hashTags: [\"JS draggable\", \"鈦坦科技\"],\n uiPeriod: \"11/14(一) 12:00 PM ~ 11/21(一) 12:00 PM\",\n fronendPeriod: \"11/21(一) 12:00 PM ~ 11/28(一) 12:00 PM\",\n },\n];\n\nconst Stage = () => {\n const [nowIndex, setNowIndex] = useState(0);\n const [isFront, setIsFront] = useState(true);\n\n const handleClick = () => {\n const index = isFront ? nowIndex + 1 : nowIndex - 1;\n let direction = isFront && index < datas.length - 1 ? \"front\" : \"back\";\n if (index === 0) {\n direction = \"front\";\n }\n setNowIndex(index);\n setIsFront(direction === \"front\");\n };\n\n return (\n
\n
\n \n {datas.map((item) => (\n \n Week{item.week}\n

\n ))}\n
\n
\n
\n
\n {datas.map((item) => (\n \n

/ {item.subject} /

\n
\n {item.hashTags.map((tag, idx) => (\n #{tag}\n ))}\n
\n

各組別投稿時間

\n

UI 組投稿區間:{item.uiPeriod}

\n

前端組投稿區間:{item.fronendPeriod}

\n \n
\n ))}\n
\n \n \n );\n};\n\nexport default Stage;\n","export default __webpack_public_path__ + \"static/media/sponsor_block.378e62d9.png\";","export default __webpack_public_path__ + \"static/media/sponsor_kdan.04e4fe40.png\";","export default __webpack_public_path__ + \"static/media/sponsor_titan.f823f579.png\";","import React, { useState, useEffect, useRef } from \"react\";\n\nimport { BsStars } from \"react-icons/bs\";\nimport img_block from \"image/F2E_web/sponsor_block.png\";\nimport img_kdan from \"image/F2E_web/sponsor_kdan.png\";\nimport img_titan from \"image/F2E_web/sponsor_titan.png\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Sponsor = () => {\n const areaRef = useRef(null);\n const [isShow, setIsShow] = useState(false);\n\n useEffect(() => {\n const offsetTop = areaRef.current?.offsetTop;\n const handleScroll = () => {\n if(window.scrollY >= offsetTop - 200){\n setIsShow(true);\n document.removeEventListener(\"scroll\", handleScroll);\n }\n };\n document.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n document.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n return (\n
\n

\n \n 本次活動贊助單位\n \n

\n
\n
\n \"kdan\n
\n
\n \"titan\n
\n
\n \"block\n
\n
\n
\n );\n};\n\nexport default Sponsor;\n","import React, { useState, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nimport Loading from \"./Loading\";\nimport Header from \"./Header\";\nimport Banner from \"./Banner\";\nimport Questions from \"./Questions\";\nimport Topic from \"./Topic\";\nimport Stage from \"./Stage\";\nimport Sponsor from \"./Sponsor\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Web = () => {\n const [percent, setPercent] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let time = 0;\n function countDown() {\n if (time < 100) {\n time += 2;\n setPercent(time);\n } else {\n clearInterval(counter);\n setTimeout(() => {\n setIsLoading(false);\n }, 500);\n }\n }\n const counter = setInterval(countDown, 50);\n }, []);\n\n return (\n
\n \n The F2E 活動網站設計\n \n \n \n \n {isLoading ? (\n \n ) : (\n <>\n
\n \n \n \n \n \n \n )}\n
\n );\n};\n\nexport default Web;\n","import Web from './Web';\n\nexport default Web;\n","import React, { useRef, useEffect } from \"react\";\nimport { BsPlusLg, BsCheck2Square } from \"react-icons/bs\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst SignArea = ({ visible, onSave, onClose }) => {\n const canvasRef = useRef(null);\n const canvas = canvasRef.current;\n const ctx = canvas?.getContext(\"2d\");\n\n const handleClear = () => {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n };\n const handleSave = () => {\n const newImg = canvas.toDataURL(\"image/png\");\n onSave(newImg);\n onClose();\n };\n\n useEffect(() => {\n if (canvas) {\n canvas.width = 500;\n canvas.height = 250;\n canvas.borderColor = '#2ac489';\n // 設定線條的相關數值\n ctx.lineWidth = 4;\n ctx.lineCap = \"round\";\n\n // 設置狀態來確認滑鼠 / 手指是否按下或在畫布範圍中\n let isPainting = false;\n\n // 開始繪圖時,將狀態開啟\n function startPosition(e) {\n e.preventDefault();\n isPainting = true;\n }\n\n // 結束繪圖時,將狀態關閉,並產生新路徑\n function finishedPosition() {\n isPainting = false;\n ctx.beginPath();\n }\n\n // 取得滑鼠 / 手指在畫布上的位置\n function getPaintPosition(e) {\n const canvasSize = canvas.getBoundingClientRect();\n\n if (e.type === \"mousemove\") {\n return {\n x: e.clientX - canvasSize.left,\n y: e.clientY - canvasSize.top,\n };\n } else {\n return {\n x: e.touches[0].clientX - canvasSize.left,\n y: e.touches[0].clientY - canvasSize.top,\n };\n }\n }\n\n // 繪圖過程\n function draw(e) {\n // 滑鼠移動過程中,若非繪圖狀態,則跳出\n if (!isPainting) return;\n\n // 取得滑鼠 / 手指在畫布上的 x, y 軸位置位置\n const paintPosition = getPaintPosition(e);\n\n // 移動滑鼠位置並產生圖案\n ctx.lineTo(paintPosition.x, paintPosition.y);\n ctx.stroke();\n }\n\n // event listener 電腦板\n canvas.addEventListener(\"mousedown\", startPosition);\n canvas.addEventListener(\"mouseup\", finishedPosition);\n canvas.addEventListener(\"mouseleave\", finishedPosition);\n canvas.addEventListener(\"mousemove\", draw);\n\n // event listener 手機板\n canvas.addEventListener(\"touchstart\", startPosition);\n canvas.addEventListener(\"touchend\", finishedPosition);\n canvas.addEventListener(\"touchcancel\", finishedPosition);\n canvas.addEventListener(\"touchmove\", draw);\n\n return () => {\n canvas.removeEventListener(\"mousedown\", startPosition);\n canvas.removeEventListener(\"mouseup\", finishedPosition);\n canvas.removeEventListener(\"mouseleave\", finishedPosition);\n canvas.removeEventListener(\"mousemove\", draw);\n canvas.removeEventListener(\"touchstart\", startPosition);\n canvas.removeEventListener(\"touchend\", finishedPosition);\n canvas.removeEventListener(\"touchcancel\", finishedPosition);\n canvas.removeEventListener(\"touchmove\", draw);\n };\n }\n }, [canvas]);\n\n return (\n
\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n );\n};\n\nexport default SignArea;\n","import React from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Spinner = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default Spinner;\n","import React from \"react\";\nimport { BsPen, BsUpload, BsDownload, BsPencilSquare } from \"react-icons/bs\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Tutorial = ({ onClose }) => {\n return (\n
\n

Welcome DottedSign

\n

\n Sign easily    \n \n

\n
\n
\n
\n \n
\n upload file\n
\n
\n
\n \n
\n sign\n
\n
\n
\n \n
\n download file\n
\n
\n \n {Array.from({ length: 3 }, (x, i) => i).map((el) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n );\n};\n\nexport default Tutorial;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { fabric } from \"fabric\";\nimport { jsPDF } from \"jspdf\";\nimport { BsUpload, BsDownload, BsPencilSquare } from \"react-icons/bs\";\nimport { Helmet } from \"react-helmet\";\n\nimport SignArea from \"./SignArea\";\nimport Spinner from \"./Spinner\";\nimport Tutorial from \"./Tutorial\";\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst pdfjs = require(\"pdfjs-dist\");\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;\nconst Base64Prefix = \"data:application/pdf;base64,\";\n\nconst Sign = () => {\n const canvasRef = useRef(null);\n const fabricRef = useRef(null);\n const [isOpenSignArea, setIsOpenSignArea] = useState(false);\n const [hasUploadPdf, setHasUploadPdf] = useState(false);\n const [hasSign, setHasSign] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isInitial, setIsInitial] = useState(true);\n\n // 使用原生 FileReader 轉檔\n const readBlob = (blob) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result));\n reader.addEventListener(\"error\", reject);\n reader.readAsDataURL(blob);\n });\n };\n\n const printPDF = async (pdfData) => {\n // 將檔案處理成 base64\n pdfData = await readBlob(pdfData);\n\n // 將 base64 中的前綴刪去,並進行解碼\n const data = atob(pdfData.substring(Base64Prefix.length));\n\n // 利用解碼的檔案,載入 PDF 檔及第一頁\n const pdfDoc = await pdfjs.getDocument({ data }).promise;\n const pdfPage = await pdfDoc.getPage(1);\n\n // 設定尺寸及產生 canvas\n const viewport = pdfPage.getViewport({ scale: window.devicePixelRatio });\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n\n // 設定 PDF 所要顯示的寬高及渲染\n canvas.height = viewport.height;\n canvas.width = viewport.width;\n const renderContext = {\n canvasContext: context,\n viewport,\n };\n const renderTask = pdfPage.render(renderContext);\n\n // 回傳做好的 PDF canvas\n return renderTask.promise.then(() => canvas);\n };\n\n const pdfToImage = (pdfData) => {\n // 設定 PDF 轉為圖片時的比例\n const scale = 1 / window.devicePixelRatio;\n\n // 回傳圖片\n return new fabric.Image(pdfData, {\n id: \"renderPDF\",\n scaleX: scale,\n scaleY: scale,\n });\n };\n\n const handleFileChange = async (e) => {\n setIsLoading(true);\n const pdfData = await printPDF(e.target.files[0]);\n const pdfImage = await pdfToImage(pdfData);\n\n // 透過比例設定 canvas 尺寸\n fabricRef.current.setWidth(pdfImage.width / window.devicePixelRatio);\n fabricRef.current.setHeight(pdfImage.height / window.devicePixelRatio);\n\n // 將 PDF 畫面設定為背景\n fabricRef.current.setBackgroundImage(\n pdfImage,\n fabricRef.current.renderAll.bind(fabricRef.current)\n );\n\n setHasUploadPdf(true);\n setIsLoading(false);\n };\n\n const handleSaveSign = (img) => {\n fabric.Image.fromURL(img, function (image) {\n // 設定簽名出現的位置及大小,後續可調整\n image.top = 400;\n image.scaleX = 0.5;\n image.scaleY = 0.5;\n fabricRef.current.add(image);\n });\n setHasSign(true);\n };\n\n const handleOpen = () => {\n setIsOpenSignArea(true);\n };\n const handleClose = () => {\n setIsOpenSignArea(false);\n };\n const handleSave = () => {\n const image = fabricRef.current.toDataURL(\"image/png\");\n const pdf = new jsPDF();\n\n // 設定背景在 PDF 中的位置及大小\n const width = pdf.internal.pageSize.width;\n const height =\n (pdf.internal.pageSize.width * fabricRef.current.height) /\n fabricRef.current.width;\n pdf.addImage(image, \"png\", 0, 0, width, height);\n\n // 將檔案取名並下載\n pdf.save(\"download.pdf\");\n };\n\n const handleCloseTutorial = () => {\n setIsInitial(false);\n };\n\n useEffect(() => {\n const initFabric = () => {\n fabricRef.current = new fabric.Canvas(canvasRef.current);\n };\n\n const disposeFabric = () => {\n fabricRef.current.dispose();\n };\n\n initFabric();\n\n return () => {\n disposeFabric();\n };\n }, []);\n\n return (\n <>\n
\n \n Dotted Sign\n \n \n \n \n
\n \n \n \n \n   下載檔案\n \n
\n {isLoading && (\n
\n \n
\n )}\n
\n \n
\n \n
\n {isInitial && }\n \n );\n};\n\nexport default Sign;\n","import Sign from './Sign';\n\nexport default Sign;\n","export default __webpack_public_path__ + \"static/media/logo_txt.7e3c1be6.png\";","export default __webpack_public_path__ + \"static/media/bg_leafTint_3_t.97d5343a.png\";","export default __webpack_public_path__ + \"static/media/bg_leafTint_4_rb.04dc731a.png\";","export default __webpack_public_path__ + \"static/media/bg_leafTint_2_lb.877b3ae4.png\";","export default __webpack_public_path__ + \"static/media/bg_leafTint_1_lt.161e29d1.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAAAmCAYAAAAlUK76AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQdSURBVHgB7Zv/VdswEMe/6ev/hQmqbNBsYCYoTECYADoBMEHpBAkTNJ0AdwLoBKgTNJ1AvavPRAjFUiL/BH/eu2ccn21VJ53uTi4wMjLSHhPUjDFG0eEOaaxJbiaTyS1G2oOM98ekk2r8V807NMMDBgQNknOS7yQL8Ri95z2a4ZokQw8gQ8zpoKyf2AWvnes31nXWPcJbhTpkadKoxVXyc5znfoxo5wF6TlOuEjSq53QYQnCxds/tGdlXGjMcI8Y7I9HoL+wmtXX+DQOgqTXuCTLekg7sjjI6fiKx3dBn+a0zqH2aDlNpn5bz3rOz4STqWiAdnokKHRuuhAyWY0DsO+MypMMuqvdrCSPBypOncGclXefBx6JIVnT9IfCsY3keC+s+tDLT6eWPJp07Ux15thJVWjqlHHuuZ84zMuv3e+fafEs7lKctNgsjOaTTL4++5+0bnNQVLfZlxmWWRKUC1KGXKEp7QVdvihl5j2pPNefnmcgCwF6Go2l9hXqqIysME0VyFaNoNrVb34DQeD54WTcqfkhJB06QGOZLQKAxPMrOzVFUWQ4nG5aOrms0bd0zJTmkv6fYeLEMRbRdyd6Gk8V0hvS85wzD5Jr64IgH37aE3bwst7GXmrn3cF9aOS8TdNdJeZy8/IIayBFiGVnZi38ZPVU9I6f7ubZ5ieGQy3IRwp45muSkqirDs1XWw3MEeGG42BsDcOPYGAoRqQN3Ar2XR+NXPB+hfeVHpJ4doeaRIf8V9jGcMEc6O23S0j+KA5WVhNosBv0lGJiVKYNFVCTOM5Lu1QgMYJ/hNIoZk1oh/4A9kIAlx/Bx+2+XKJx1VZXCi+BEfHBdedpvvF2UfbLjjsPfkMK2qLKuclQdud5QSfVYlXgNJ4toHWH6EgOpRzaARoNszeMkWJilNEDcwzVG4KuRVhDUrUzAucrN2T2K2ceGZNenLQlC97Pb7XIn3HVZwfWjJtxlYoZ4VEghqnLCiSEJJ48zKdNMxaA68v45upt5dhG4zc8SNJ4vE1nMTZJHq5Beo58u2EilwZ29jUKd4CayrQVLMkDs951GVv5Tix9hTPW+XB275KH3KxmhvmvnnjbNt+hW6pgt+3ER7Tt27uO9u4MK/UtPm737canfnHQdMSoUe1j26D6Q390O0mg5secAz6mC/N+Xk9rsSqokfC0jOcXGneYIuNZUw/1CP74ZYSNlAZ0vHX0IxNtf99a5QrEttCCj+fR5tyWYA6aucUv0H56NJ5LetI58f3KGOO90S/oXEXrJ2zq5iSiINkjZKRmK3Ec5136SLCMiSW397dNdIy2f5e2aHEXl/9SjwtdurU1Y+30aTcDBgfH/75zGg5MhwsGJBDulKHSFGO9xNFx71JLHiR/n7yi4QvJWa5PDp3MXMDLSV/4BrfaJH0rEXO0AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/sprint.5ca98628.png\";","export default __webpack_public_path__ + \"static/media/planning_team.6ee0452c.png\";","export default __webpack_public_path__ + \"static/media/sprintPlan.76690e2e.png\";","export default __webpack_public_path__ + \"static/media/clock.f03bac9a.png\";","export default __webpack_public_path__ + \"static/media/book.1ee4fff5.png\";","export default __webpack_public_path__ + \"static/media/sprint_daily.f9a72b3d.png\";","export default __webpack_public_path__ + \"static/media/sprint_review.ca8e225a.png\";","export default __webpack_public_path__ + \"static/media/sprint_retro.02bba857.png\";","export default __webpack_public_path__ + \"static/media/Role_po.4e0c66cc.png\";","export default __webpack_public_path__ + \"static/media/Role_mm.4a956aca.png\";","export default __webpack_public_path__ + \"static/media/Role_ee.dcf05141.png\";","export default __webpack_public_path__ + \"static/media/Role_gg.ec89e4be.png\";","import React from \"react\";\nimport PropTyps from \"prop-types\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst DEFAULT = \"default\";\nconst OUTLINE = \"outline\";\nexport const BUTTON_TYPES = {\n DEFAULT,\n OUTLINE\n}\n\nconst Button = ({ type, text, onClick, disabled }) => {\n return (\n \n {text}\n \n );\n};\n\nButton.defaultProps = {\n type: DEFAULT,\n disabled: false,\n onClick: () => {},\n};\nButton.propType = {\n type: PropTyps.oneOf([DEFAULT, OUTLINE]),\n text: PropTyps.string.isRequired,\n disabled: PropTyps.bool,\n onClick: PropTyps.func,\n};\n\nexport default Button;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { img_role_po, img_role_mm, img_role_ee, img_role_gg } from \"../Assets\";\n\nconst PO = \"PO\"; // product owner\nconst MM = \"SM\"; // scrum master\"\nconst EE = \"EE\";\nconst GG = \"GG\";\nexport const ROLE_NAMES = {\n PO,\n MM,\n EE,\n GG,\n};\n\nconst UP = \"up\";\nconst DOWN = \"down\";\nexport const ROLE_DIRECTIONS = {\n UP,\n DOWN,\n};\n\nconst Role = ({ name, direction }) => {\n const getImgSrc = () => {\n let src = \"\";\n switch (name) {\n case MM:\n src = img_role_mm;\n break;\n case EE:\n src = img_role_ee;\n break;\n case GG:\n src = img_role_gg;\n break;\n case PO:\n default:\n src = img_role_po;\n break;\n }\n return src;\n };\n\n return (\n \n );\n};\n\nRole.defaultProps = {\n direction: DOWN,\n};\nRole.propTypes = {\n name: PropTypes.oneOf([PO, MM, EE, GG]).isRequired,\n direction: PropTypes.oneOf([UP, DOWN]),\n};\n\nexport default Role;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ROLE_NAMES } from \"./Role\";\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst GREEN = \"green\";\nconst PURPLE = \"purple\";\nconst RED = \"red\";\nconst YELLOW = \"yellow\";\nconst THEMES = {\n [ROLE_NAMES.PO]: GREEN,\n [ROLE_NAMES.MM]: PURPLE,\n [ROLE_NAMES.GG]: RED,\n [ROLE_NAMES.EE]: YELLOW,\n};\n\nconst Dialog = ({ speaker, children, isShowTriangle }) => (\n
\n
{speaker}
\n {children}\n {isShowTriangle &&
}\n
\n);\n\nDialog.defaultProps = {\n children: \"\",\n isShowTriangle: false\n};\nDialog.propTypes = {\n speaker: PropTypes.string.isRequired,\n children: PropTypes.any,\n isShowTriangle: PropTypes.bool\n};\n\nexport default Dialog;\n","import React, { useState, useContext } from \"react\";\n\nimport { Context, STEPS_KEY } from \"../Scrum2\";\nimport {\n img_logo,\n img_leaf_top,\n img_leaf_right,\n img_leaf_bottom,\n img_leaf_left,\n} from \"../Assets\";\nimport Button from \"../Components/Button\";\nimport Dialog from \"../Components/Dialog\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Entry = () => {\n const context = useContext(Context);\n const [isDefaultScene, setIsDefaultScene] = useState(true);\n\n const changeScene = () => {\n setIsDefaultScene(false);\n };\n const goNextStep = () => {\n context.goStep(STEPS_KEY.PRODUCT_BACKLOG);\n };\n\n return (\n
\n \n \n \n \n {isDefaultScene ? (\n <>\n
\n
\n \"logo\"\n
\n

深入敏捷の村一探究竟

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n ) : (\n <>\n
\n \n

\n 呦呼,歡迎進入 「SCRUM 新手村」\n ,在正式加入專案開發之前 ,需要請你先了解 Scrum\n 的流程與精神! 請接受挑戰任務,成功通過 Scrum\n 新手村的挑戰任務吧~\n

\n

\n 請接受挑戰任務,成功通過 Scrum 新手村的挑戰任務吧~\n

\n \n }\n />\n
\n \n )}\n
\n );\n};\nexport default Entry;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst GREEN = \"green\";\nconst YELLOW = \"yellow\";\nconst PURPLE = \"purple\";\nconst RED = \"red\";\nexport const LIST_THEME = {\n GREEN,\n YELLOW,\n PURPLE,\n RED\n};\nconst SOLID = \"solid\";\nconst DASHED = \"dashed\";\nexport const LIST_ITEM_TYPE = {\n SOLID,\n DASHED,\n};\n\nconst Item = ({ children, theme = GREEN, type = SOLID }) => {\n return
{children}
;\n};\n\nconst List = ({ title, subtitle, children, theme }) => (\n
\n
\n

{title}

\n

{subtitle}

\n
\n
{children}
\n
\n);\n\nList.defaultProps = {\n subtitle: \"\",\n children: null,\n theme: GREEN,\n};\nList.propTypes = {\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string,\n children: PropTypes.any,\n theme: PropTypes.oneOf([GREEN, YELLOW, PURPLE, RED]),\n};\n\nList.Item = Item;\n\nexport default List;\n","import React, { useState, useContext } from \"react\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport { nanoid } from \"nanoid\";\n\nimport { img_jira } from \"../Assets\";\nimport Button, { BUTTON_TYPES } from \"../Components/Button\";\nimport Dialog from \"../Components/Dialog\";\nimport Role, { ROLE_NAMES } from \"../Components/Role\";\nimport List, { LIST_ITEM_TYPE } from \"../Components/List\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst SCENES = {\n INTRO: \"intro\",\n READY: \"ready\",\n DEMO: \"demo\",\n PRACTICAL: \"practical\",\n FINISHED: \"finished\",\n};\nconst PARAGRAPH = {\n [SCENES.INTRO]: (\n

\n \\ 碰 / 我是短衝小精靈,開發 A 組的 PO 。\n PO 也就是產品負責人(Product Owner)\n ,產品負責人會負責評估產品待辦清單的價值與重要性,依序排列要執行的優先順序\n , 對齊產品目標 。 最後排出產品待辦清單 (Product Backlog) 唷 !\n

\n ),\n [SCENES.READY]: (\n

\n 剛好我最近手邊有一個 「 人才招募系統 」 的案子 , 我才剛列出了{\" \"}\n 「 產品需求清單 」 。 既然你都來了 , 來試試看調整產品優先度\n , 排出產品待辦清單吧 !\n

\n ),\n [SCENES.DEMO]: (\n

\n 在這階段我們要把需求放進產品待辦清單 , 並調整其優先順序 。對了 !\n 我們公司也推薦使用\n \"jira\"\n 來做任務的管理呢 !\n

\n ),\n [SCENES.PRACTICAL]: (\n <>\n

換你來試試看吧 !

\n

提示 : 請把需求拖移至產品待辦清單 , 並調整其優先順序 。

\n \n ),\n [SCENES.FINISHED]:

哇喔完成惹 , 尼太棒ㄌ! 我們繼續吧 !

,\n};\n\nconst ProductBacklog = () => {\n const context = useContext(Context);\n const [nowScene, setNowScene] = useState(SCENES.INTRO);\n const [isDemoActive, setIsDemoActive] = useState(false);\n const [listItems, setListItems] = useState({\n left: [\n {\n title: \"應徵者的線上履歷編輯器\",\n id: nanoid(),\n },\n {\n title: \"後台職缺管理功能(資訊上架、下架、顯示應徵者資料)\",\n id: nanoid(),\n },\n ],\n center: [],\n right: [\n {\n title: \"會員系統(登入、註冊、權限管理)\",\n id: nanoid(),\n },\n {\n title: \"前台職缺列表、應徵\",\n id: nanoid(),\n },\n ],\n });\n\n const handleClickContinue = () => {\n if (nowScene === SCENES.INTRO) {\n setNowScene(SCENES.READY);\n }\n if (nowScene === SCENES.DEMO) {\n if (!isDemoActive) {\n window.scrollTo({\n top: 500,\n behavior: \"smooth\",\n });\n setIsDemoActive(true);\n } else {\n window.scrollTo({ top: 0 });\n setNowScene(SCENES.PRACTICAL);\n }\n }\n if (nowScene === SCENES.FINISHED) {\n context.goStep(STEPS_KEY.PLANNING);\n }\n };\n const handleClickReady = () => {\n setNowScene(SCENES.DEMO);\n };\n const handleClickFinished = () => {\n window.scrollTo({ top: 0 });\n setNowScene(SCENES.FINISHED);\n };\n const handleDragEnd = (event) => {\n const { source, destination } = event;\n\n if (!destination) {\n return;\n }\n\n let draggedItems = { ...listItems };\n const [dragTarget] = draggedItems[source.droppableId].splice(\n source.index,\n 1\n );\n draggedItems[destination.droppableId].splice(\n destination.index,\n 0,\n dragTarget\n );\n\n setListItems(draggedItems);\n };\n\n const renderContent = () => {\n switch (nowScene) {\n case SCENES.INTRO:\n return (\n
\n
\n );\n case SCENES.READY:\n return (\n
\n
\n );\n case SCENES.DEMO:\n return (\n
\n
\n
\n 應徵者的線上履歷編輯器\n
\n
\n \n 後台職缺管理功能(資訊上架、下架、顯示應徵者資料)\n \n
\n
\n \n \n \n \n \n \n
\n
\n 會員系統(登入、註冊、權限管理)\n
\n
\n 前台職缺列表、應徵\n
\n
\n
\n );\n case SCENES.PRACTICAL:\n return (\n <>\n
\n \n \n {(provided) => (\n \n {listItems.left.map((item, idx) => (\n
\n \n {(provided, snapshot) => (\n \n {item.title}\n
\n )}\n \n
\n ))}\n
\n )}\n \n \n \n {(provided) => (\n \n {listItems.center.map((item, idx) => (\n
\n \n {(provided, snapshot) => (\n \n {item.title}\n
\n )}\n \n
\n ))}\n
\n )}\n \n \n \n {(provided) => (\n \n {listItems.right.map((item, idx) => (\n
\n \n {(provided, snapshot) => (\n \n {item.title}\n
\n )}\n \n
\n ))}\n
\n )}\n \n \n
\n
\n \n
\n \n );\n case SCENES.FINISHED:\n return (\n
\n
\n );\n default:\n return null;\n }\n };\n\n return (\n
\n
\n
\n \n
\n
\n \n
\n
\n
{renderContent()}
\n
\n );\n};\nexport default ProductBacklog;\n","import React, { useState, useContext, useRef } from \"react\";\n\nimport {\n img_jira,\n img_sprint,\n img_planning_team,\n img_sprint_plan,\n img_clock,\n img_book,\n} from \"../Assets\";\nimport Dialog from \"../Components/Dialog\";\nimport Role, { ROLE_NAMES } from \"../Components/Role\";\nimport Button from \"../Components/Button\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst STORY_POINTS = [1, 2, 3, 5, 8, 13, 21];\nconst LARGEST_POINT = 13;\nconst OPENING = \"opening\";\nconst INTRO_SM = \"introScrumMaster\";\nconst INTRO_RD = \"introDeveloper\";\nconst STORY_POINT = \"storyPoint\";\nconst FIBONACCI = \"Fibonacci series\";\nconst ENDING = \"ending\";\nconst ENDING2 = \"ending2\";\n\nconst SCENES = {\n [OPENING]: {\n speaker: ROLE_NAMES.PO,\n header: {\n roles: [ROLE_NAMES.PO],\n paragraph: (\n

\n 產品待辦清單好了之後 , 我們來召集 ScrumMaster 和開發團隊共同召開\n 短衝規劃會議(Sprint Planning)\n 。短衝即是一個迭代,具有固定時間限制,我們會在這個會議中,決定要完成哪些工作事項來達到商業需求,列出短衝待辦清單(Sprint\n Backlog,並由開發團隊在接下來的產品開發週期裡執行。\n

\n ),\n },\n body: {\n render: (\n
\n
\n \"sprint\"\n
\n
\n ),\n },\n footer: {\n roles: [ROLE_NAMES.MM],\n paragraph: null,\n },\n },\n [INTRO_SM]: {\n speaker: ROLE_NAMES.MM,\n header: {\n roles: [ROLE_NAMES.PO],\n paragraph: null,\n },\n body: {\n render: (\n
\n
\n \"team\"\n
\n
\n ),\n },\n footer: {\n roles: [ROLE_NAMES.MM],\n paragraph: (\n

\n 哦哦 , 你是新來的前端吧 ! 我是這次的 ScrumMaster MM ,\n 我的工作主要是促成開發團隊成員協作 、 引導團隊進行自省會議 ,\n 提升團隊成員對 Scrum 瞭解 。\n

\n ),\n },\n },\n [INTRO_RD]: {\n speaker: ROLE_NAMES.MM,\n header: {\n roles: [ROLE_NAMES.EE, ROLE_NAMES.GG],\n paragraph: null,\n },\n body: {\n render: (\n
\n
\n \"sprint\n
\n
\n ),\n },\n footer: {\n roles: [ROLE_NAMES.MM],\n paragraph: (\n

\n 這兩位是 EE 和 GG , 是我們開發團隊的成員唷~ 我們團隊\n 一次 Sprint 週期是兩週的時間 , 依照我的觀察 ,\n 目前團隊可以負擔的點數 (Story Point) 大約是 20 點\n 左右。\n

\n ),\n },\n },\n [STORY_POINT]: {\n speaker: ROLE_NAMES.EE,\n header: {\n roles: [ROLE_NAMES.EE, ROLE_NAMES.GG],\n paragraph: (\n

\n 欸新來的 , 你應該不知道點數是什麼意思吧ㄏㄏ , 我來跟你介紹一下吧~{\" \"}\n Story Point 目的是為了\n 衡量速度 , 是用大概花費的時間預估出的相對點數哦 。\n

\n ),\n },\n body: {\n render: (\n
\n
\n \"clock\"\n
\n {Array.from({ length: 7 }, (x, i) => i).map((item) => (\n
\n \"book\"\n
\n ))}\n
\n ),\n },\n footer: null,\n },\n [FIBONACCI]: {\n speaker: ROLE_NAMES.EE,\n header: {\n roles: [ROLE_NAMES.EE, ROLE_NAMES.GG],\n paragraph: (\n

\n 以 「 費氏數列 」 的 1 、2 、3 、5 、8 、13 、21{\" \"}\n 來估算各項 Story 的分數 。 Story Point 越小 , 表示這個 Story\n 花費時間越少 ; 越大 , 花費時間則越多 。 如果出現了一個 21 分 ,\n 可能表示這個 Story 太龐大 , 需要再拆分細項執行唷 !\n

\n ),\n },\n body: {\n render: (\n
\n {STORY_POINTS.map((item) => (\n LARGEST_POINT && { className: cx(\"error\") })}\n >\n {item}\n
\n ))}\n
\n ),\n },\n footer: null,\n },\n [ENDING]: {\n speaker: ROLE_NAMES.GG,\n header: {\n roles: [ROLE_NAMES.GG, ROLE_NAMES.EE],\n paragraph: (\n

\n 沒錯,如 EE 說的,我這邊已經把剛剛討論好的點數標上去囉~\n 你來練習把任務排到短衝待辦清單吧 !\n

\n ),\n },\n body: {\n render:
,\n },\n footer: null,\n },\n [ENDING2]: {\n speaker: ROLE_NAMES.EE,\n header: {\n roles: [ROLE_NAMES.EE, ROLE_NAMES.GG],\n paragraph: (\n

\n By the way , 我們平常管理任務是使用\n \"jira\"\n 這套軟體 , 你有時間記得先去註冊和熟悉唷 !\n

\n ),\n },\n body: {\n render: (\n
\n
\n ),\n },\n footer: null,\n },\n};\nconst SCENES_ORDER = [\n OPENING,\n INTRO_SM,\n INTRO_RD,\n STORY_POINT,\n FIBONACCI,\n ENDING,\n ENDING2,\n];\nconst defaultScene = SCENES_ORDER[0];\n\nconst Planning = () => {\n const footerRef = useRef(null);\n const context = useContext(Context);\n const [nowScene, setNowScene] = useState(defaultScene);\n\n const { header, body, footer } = SCENES[nowScene];\n const headerReverse = nowScene === OPENING || nowScene === INTRO_SM;\n\n const handleChangeScene = () => {\n if (nowScene === SCENES_ORDER[SCENES_ORDER.length - 1]) {\n context.goStep(STEPS_KEY.SPRINT_TASK);\n return;\n }\n\n if ([INTRO_RD, STORY_POINT, FIBONACCI, ENDING].includes(nowScene)) {\n window.scrollTo({ top: 0 });\n }\n if ([OPENING].includes(nowScene)) {\n window.scrollTo({ top: footerRef.current.offsetTop });\n }\n\n const index = SCENES_ORDER.findIndex((scene) => scene === nowScene);\n setNowScene(SCENES_ORDER[index + 1]);\n };\n\n return (\n
\n {header && (\n
\n
\n {header.paragraph && (\n \n )}\n
\n {header.roles.map((role) => (\n
\n \n
\n ))}\n
\n )}\n
{body.render}
\n {footer && (\n
\n {footer.roles.map((role) => (\n
\n \n
\n ))}\n
\n {footer.paragraph && (\n \n )}\n
\n
\n )}\n
\n );\n};\nexport default Planning;\n","import React, { useState, useContext } from \"react\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport { nanoid } from \"nanoid\";\n\nimport Dialog from \"../Components/Dialog\";\nimport Role, { ROLE_NAMES } from \"../Components/Role\";\nimport Button, { BUTTON_TYPES } from \"../Components/Button\";\nimport List, { LIST_THEME } from \"../Components/List\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst MAX_POINTS = 20;\nconst PRODUCT_BACKLOG = \"productBacklog\";\nconst SPRINT_BACKLOG = \"sprintBacklog\";\nconst LIST_ITEMS = [\n {\n id: nanoid(),\n title: \"後台職缺管理功能(資訊上架、下架、顯示應徵者資料)\",\n point: 8,\n },\n {\n id: nanoid(),\n title: \"應徵者的線上履歷編輯器\",\n point: 5,\n },\n {\n id: nanoid(),\n title: \"會員系統(登入、註冊、權限管理)\",\n point: 13,\n },\n {\n id: nanoid(),\n title: \"前台職缺列表、應徵\",\n point: 8,\n },\n];\n\nconst DRAG = \"drag\";\nconst COMPLETE = \"complete\";\nconst PARAGRAPH = {\n [DRAG]: (\n

\n 換你來試試看吧 ! 把 「 產品待辦清單 」 的項目拖進\n 「 開發A組的短衝待辦清單 」 裡吧 ! 提示:置入兩項以上的\n Story , 點數總和不能超過團隊負擔上限 20 點唷!\n

\n ),\n [COMPLETE]:

噢嗚嗚 , 太厲害ㄌ ! 又完成了一關 ! 還有下一關等著你 !

,\n};\n\nconst SprintTask = () => {\n const context = useContext(Context);\n\n const [nowScene, setNowScene] = useState(DRAG);\n const [listItems, setListItems] = useState({\n [PRODUCT_BACKLOG]: {\n list: [...LIST_ITEMS],\n },\n [SPRINT_BACKLOG]: { list: [] },\n });\n\n const handleDragEnd = (event) => {\n const { source, destination } = event;\n\n if (!destination) {\n return;\n }\n\n let draggedItems = { ...listItems };\n const [dragTarget] = draggedItems[source.droppableId].list.splice(\n source.index,\n 1\n );\n draggedItems[destination.droppableId].list.splice(\n destination.index,\n 0,\n dragTarget\n );\n\n setListItems(draggedItems);\n };\n\n const handleClickComplete = () => {\n window.scrollTo({ top: 0 });\n setNowScene(COMPLETE);\n };\n const goNextStep = () => {\n if (nowScene === COMPLETE) {\n window.scrollTo({ top: 0 });\n context.goStep(STEPS_KEY.SPRINT_INTRO);\n }\n };\n\n const totalPoint = listItems[SPRINT_BACKLOG].list.reduce(\n (acc, current) => acc + current.point,\n 0\n );\n\n return (\n
\n
\n
\n \n
\n \n
\n
\n \n \n \n {(provided) => (\n \n {listItems[PRODUCT_BACKLOG].list.map((item, idx) => (\n \n {(provided, snapshot) => (\n \n \n
\n {item.point}\n

{item.title}

\n
\n
\n
\n )}\n \n ))}\n
\n )}\n \n \n \n \n {(provided) => (\n \n {listItems[SPRINT_BACKLOG].list.map((item, idx) => (\n \n {(provided, snapshot) => (\n \n \n
\n {item.point}\n

{item.title}

\n
\n
\n
\n )}\n \n ))}\n
\n )}\n \n \n \n
\n
\n
\n {nowScene === DRAG && (\n
\n MAX_POINTS ||\n listItems[SPRINT_BACKLOG].list.length < 2\n }\n onClick={handleClickComplete}\n />\n
\n )}\n
\n );\n};\nexport default SprintTask;\n","import React, { useEffect, useState, useContext, useRef } from \"react\";\n\nimport { img_daily, img_review, img_retro } from \"../Assets\";\nimport Dialog from \"../Components/Dialog\";\nimport Role, { ROLE_NAMES } from \"../Components/Role\";\nimport List, { LIST_ITEM_TYPE, LIST_THEME } from \"../Components/List\";\nimport Button, { BUTTON_TYPES } from \"../Components/Button\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst OPENING = \"opening\";\nconst INTRO = \"intro\";\nconst PROCESS = \"process\";\nconst END = \"end\";\nconst PARAGRAPH = {\n [OPENING]: (\n

\n 等等等等等 , 你都還不知道什麼是 Sprint 吧 ! 讓我先為你介紹一下~\n
\n 仔細聽好唷 , 等等會考考你 !\n

\n ),\n [INTRO]: (\n

\n Sprint 是一個短衝 , 開發團隊會在這期間執行開發 。 在這段期間內 ,\n 開發團隊舉辦每日站立會議 (Daily Scrum) ,\n 追蹤成員間的工作狀況 , 在 Sprint 的結束也會包含\n 短衝檢視會議 (Sprint Review) 以及\n 短衝自省會議 (Sprint Retrospective) 。\n

\n ),\n [PROCESS]: (\n

\n 換你來試試看吧 ! 在這經典的 Surum 流程圖中 ,\n 這些流程分別代表哪一個會議呢 ?
\n (點擊畫面任意處繼續)\n

\n ),\n [END]:

哼哼沒想到你這麼快就學會惹 , 快結束了加油加油 !

,\n};\nconst DAILY = \"daily\";\nconst REVIEW = \"review\";\nconst RETRO = \"retro\";\nconst INTRO_STEPS = {\n [DAILY]: {\n order: 1,\n imgSrc: img_daily,\n title: \"每日站立會議\",\n subtitle: \"Daily Scrum\",\n className: \"daily\",\n content: (\n
    \n 每天都要進行的會議 , 以15分鐘為限制\n
  • 昨天為團隊的短衝目標 (Sprint Goal)做了那些進度
  • \n
  • 今天我會如何準備來幫助團隊達到短衝目標
  • \n
  • 過程中有遇到什麼問題、難題
  • \n 透過團隊分享 , 追蹤大家的工作狀況。\n
\n ),\n },\n [REVIEW]: {\n order: 2,\n imgSrc: img_review,\n title: \"短衝檢視會議\",\n subtitle: \"Sprint Review\",\n className: \"review\",\n content: (\n
    用來檢視該次短衝增量的成果 , 以蒐集相關的回饋數據或意見 。
\n ),\n },\n [RETRO]: {\n order: 3,\n imgSrc: img_retro,\n title: \"短衝自省會議\",\n subtitle: \"Sprint Retrospective\",\n className: \"retrospective\",\n content: (\n
    \n 團隊在自省會議裡 , 會共同回顧該短衝歷程發生的事情\n
  • 好的地方
  • \n
  • 可以改進的地方
  • \n
  • 如何維持我們已有的成功經驗
  • \n 優化工作流程、讓團隊有變得更好的機會。\n
\n ),\n },\n};\nconst LIST_ITEMS = [\n {\n title: \"產品待辦清單\",\n subtitle: \"Product Backlog\",\n },\n {\n title: \"短衝規劃會議\",\n subtitle: \"Sprint Planing\",\n },\n {\n title: \"短衝待辦清單\",\n subtitle: \"Sprint Backlog\",\n },\n];\n\nconst SprintIntro = () => {\n const upperRef = useRef(null);\n const context = useContext(Context);\n const [nowScene, setNowScene] = useState(OPENING);\n const [introStep, setIntroStep] = useState(0);\n const [processStep, setProcessStep] = useState(0);\n\n const handleChangeScene = () => {\n switch (nowScene) {\n case OPENING:\n setNowScene(INTRO);\n break;\n case INTRO:\n if (introStep >= Object.keys(INTRO_STEPS).length) {\n setNowScene(PROCESS);\n } else {\n if (introStep === 0) {\n window.scrollTo({ top: upperRef.current.offsetHeight });\n }\n setIntroStep(introStep + 1);\n }\n break;\n case PROCESS:\n if (processStep >= 2) {\n setNowScene(END);\n return;\n }\n window.scrollTo({ top: upperRef.current.offsetHeight });\n setProcessStep(processStep + 1);\n break;\n case END:\n context.goStep(STEPS_KEY.RETRO);\n break;\n default:\n break;\n }\n };\n\n const renderContent = () => {\n switch (nowScene) {\n case INTRO:\n return (\n
\n {Object.keys(INTRO_STEPS).map((key) => (\n = INTRO_STEPS[key].order && {\n className: cx(\"show\"),\n })}\n >\n \n
\n

{INTRO_STEPS[key].title}

\n {INTRO_STEPS[key].subtitle}\n
\n {INTRO_STEPS[key].content}\n
\n ))}\n
\n );\n case PROCESS:\n return (\n
\n
\n {LIST_ITEMS.map((item) => (\n = 1 && \"jumping\"\n )}\n >\n

{item.title}

\n {item.subtitle}\n
\n ))}\n
\n = 1 && \"jumping\"\n )}\n >\n

短衝

\n sprint\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n {Object.keys(INTRO_STEPS).map((key) => (\n = 2 && \"position_ab\"\n )}\n >\n

{INTRO_STEPS[key].title}

\n {INTRO_STEPS[key].subtitle}\n
\n ))}\n
\n
\n );\n case END:\n return (\n
\n
\n );\n default:\n case OPENING:\n return null;\n }\n };\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [nowScene]);\n\n return (\n
\n
\n
\n \n
\n \n
\n
{renderContent()}
\n
\n );\n};\nexport default SprintIntro;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { BiCheck } from \"react-icons/bi\";\n\nimport Dialog from \"../Components/Dialog\";\nimport Role, { ROLE_NAMES, ROLE_DIRECTIONS } from \"../Components/Role\";\nimport List, { LIST_THEME } from \"../Components/List\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst OPENING = \"opening\";\nconst EXAMPLE = \"example\";\nconst END = \"end\";\nconst PARAGRAPH = {\n [OPENING]: (\n

\n 嗚啊啊新來的 , 你真的很幸運 , 今天剛好是開發 B 組的 Retro ,\n 你也來見識一下 , 看看 Retro 都該做些什麼吧~~{\" \"}\n

\n ),\n [EXAMPLE]: (\n

\n 我們會在會議裡請團隊成員提出哪些是做得好的地方 、 哪些可以繼續改善的地方\n ? 並記錄再 Confluence 中 。 Retro 重點在於「正面表述」,\n 你也思考看看 , 哪一些是適合 Retro 的回饋呢 ?\n

\n ),\n [END]: (\n

\n 太酷ㄌ吧 , 根本天才 , 畢業之後不要忘記我唷!\n
\n (點擊畫面任意處繼續)\n

\n ),\n};\n\nconst Retro = () => {\n const context = useContext(Context);\n const [nowScene, setNowScene] = useState(OPENING);\n const [exampleStep, setExampleStep] = useState(0);\n\n const handleChangeScene = () => {\n switch (nowScene) {\n case OPENING:\n setNowScene(EXAMPLE);\n break;\n case EXAMPLE:\n if (exampleStep >= 3) {\n setNowScene(END);\n return;\n }\n window.scrollTo({ top: 400 });\n setExampleStep(exampleStep + 1);\n break;\n case END:\n context.goStep(STEPS_KEY.COMPLETE);\n break;\n default:\n break;\n }\n };\n\n const renderContent = () => {\n switch (nowScene) {\n case EXAMPLE:\n return (\n
\n
\n

Q1.做得好的地方?

\n
\n
\n = 1 && ROLE_NAMES.MM)}\n >\n \n
\n \n 這次我幫了很多人救火耶~\n \n
\n
\n = 1 && ROLE_NAMES.PO)}\n >\n \n
\n \n 大家在開發上都會互相 cover , 讓任務都有準在時間內完成 。\n \n
= 2 && \"show\")}>\n \n
\n
\n
\n
\n
\n

Q2.有哪些可以做得更好?

\n
\n
\n = 1 && ROLE_NAMES.EE)}\n >\n \n
\n \n 可以記錄這次的開發時間 , 讓預估團隊點數可以更精準 。\n \n
= 3 && \"show\")}>\n \n
\n
\n
\n = 1 && ROLE_NAMES.GG)}\n >\n \n
\n \n 開發時間預估不準確 , 請後端下次改進 , 避免 delay 到我 。\n \n
\n
\n
\n
\n );\n case OPENING:\n case END:\n default:\n return null;\n }\n };\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [nowScene]);\n\n return (\n
\n
\n
\n \n
\n \n
\n
{renderContent()}
\n
\n );\n};\nexport default Retro;\n","import React, { useContext } from \"react\";\n\nimport {img_logo} from \"../Assets\";\nimport { Context, STEPS_KEY } from \"../Scrum2\";\nimport Role, { ROLE_NAMES, ROLE_DIRECTIONS } from \"../Components/Role\";\n\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Complete = () => {\n const context = useContext(Context);\n\n const handleReStart = () => {\n context.goStep(STEPS_KEY.ENTRY);\n };\n\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \"logo\"\n

恭喜你通過

\n

《 敏捷任務 - 最初の試煉 》

\n 再玩一次\n
\n
\n

窩的冰淇淋ㄋ?

\n \n
\n
\n

嗚嗚我會想尼QQ

\n \n
\n
\n

不愧似窩ㄉ學生

\n \n
\n
\n

哇喔太厲害ㄌㄅ

\n \n
\n
\n
\n );\n};\nexport default Complete;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { Context, STEPS_KEY } from \"../Scrum2\";\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Progress = ({ nowStep }) => {\n const context = useContext(Context);\n const [percent, setPercent] = useState(0);\n\n const handleClickStep = (key) => {\n context.goStep(STEPS_KEY[key]);\n };\n\n useEffect(() => {\n setPercent(\n (Object.keys(STEPS_KEY).findIndex((key) => STEPS_KEY[key] === nowStep) /\n 6) *\n 100\n );\n }, [nowStep]);\n\n return (\n
\n
\n {Object.keys(STEPS_KEY).map((key, idx) => (\n idx + 1 && \"goaled\",\n idx + 1 === Object.keys(STEPS_KEY).length && \"lastest\"\n )}\n onClick={() => {\n handleClickStep(key);\n }}\n >\n {STEPS_KEY[key]}\n
\n ))}\n
\n \n
\n );\n};\n\nProgress.propTypes = {\nnowStep: PropTypes.string.isRequired\n};\n\nexport default Progress;\n","import React from \"react\";\n\nimport {img_planning_team} from \"../Assets\";\nimport classes from \"../styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst NotAvailable = () => (\n
\n \"\"\n

\n 唉呀!此版本僅能使用電腦操作…\n
\n ,請使用電腦開啟頁面。\n

\n
\n);\n\nexport default NotAvailable;\n","import React, { useState, useEffect } from \"react\";\nimport qs from \"qs\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet\";\n\nimport Entry from \"./Scenes/Entry\";\nimport ProductBacklog from \"./Scenes/ProductBacklog\";\nimport Planning from \"./Scenes/Planning\";\nimport SprintTask from \"./Scenes/SprintTask\";\nimport SprintIntro from \"./Scenes/SprintIntro\";\nimport Retro from \"./Scenes/Retro\";\nimport Complete from \"./Scenes/Complete\";\nimport Progress from \"./Components/Progress\";\nimport NotAvailable from \"./Scenes/NotAvailable\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nfunction isMobile() {\n try {\n document.createEvent(\"TouchEvent\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nconst ENTRY = \"Precursor\";\nconst PRODUCT_BACKLOG = \"Product Backlog\";\nconst PLANNING = \"Planning\";\nconst SPRINT_TASK = \"Sprint Task \";\nconst SPRINT_INTRO = \"Sprint Intro\";\nconst RETRO = \"Retro\";\nconst COMPLETE = \"Complete\";\n\nexport const STEPS_KEY = {\n ENTRY,\n PRODUCT_BACKLOG,\n PLANNING,\n SPRINT_TASK,\n SPRINT_INTRO,\n RETRO,\n COMPLETE,\n};\n\nconst SCENE = {\n [STEPS_KEY.ENTRY]: ,\n [STEPS_KEY.PRODUCT_BACKLOG]: ,\n [STEPS_KEY.PLANNING]: ,\n [STEPS_KEY.SPRINT_TASK]: ,\n [STEPS_KEY.SPRINT_INTRO]: ,\n [STEPS_KEY.RETRO]: ,\n [STEPS_KEY.COMPLETE]: ,\n};\n\nexport const Context = React.createContext();\n\nconst Scrum = () => {\n const location = useLocation();\n const history = useHistory();\n const querys = qs.parse(location.search, { ignoreQueryPrefix: true });\n const { step } = querys;\n const [nowStep, setNowStep] = useState(STEPS_KEY.ENTRY);\n\n const handleChangeStep = (step) => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify({ ...querys, step }),\n });\n };\n const renderComponent = () => {\n return SCENE[nowStep];\n };\n\n useEffect(() => {\n if (!step) {\n handleChangeStep(ENTRY);\n } else {\n setNowStep(step);\n }\n }, [step]);\n\n return (\n
\n \n Scrum 新手村\n \n \n \n \n \n
\n {isMobile() ? (\n \n ) : (\n <>\n \n {renderComponent()}\n \n )}\n
\n \n
\n );\n};\nexport default Scrum;\n","import Scrum from './Scrum2';\n\nexport default Scrum;\n","import React, { useState, useEffect } from \"react\";\nimport qs from \"qs\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { AiOutlineMenu } from \"react-icons/ai\";\n\nimport GoHome from \"Component/GoHome\";\nimport Web from \"./Web2\";\nimport Sign from \"./Sign\";\nimport Scrum from \"./Scrum\";\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nexport const WEB = \"web\";\nexport const SIGN = \"sign\";\nexport const SCRUM = \"scrum\";\n\nconst TABS = [\n {\n key: WEB,\n text: \"The F2E 活動網站設計\",\n },\n {\n key: SIGN,\n text: \"今晚,我想來點點簽\",\n },\n {\n key: SCRUM,\n text: \"Scrum 新手村\",\n },\n];\n\nconst Page = () => {\n const location = useLocation();\n const history = useHistory();\n const querys = qs.parse(location.search, { ignoreQueryPrefix: true });\n const { tab } = querys;\n const [nowTab, setNowTab] = useState(\"\");\n\n const handleClickTab = (tab) => {\n if (tab === nowTab) return;\n\n history.push({\n pathname: location.pathname,\n search: qs.stringify({ tab }),\n });\n };\n\n const renderTabContent = () => {\n switch (nowTab) {\n case SIGN:\n return ;\n case SCRUM:\n return ;\n case WEB:\n default:\n return ;\n }\n };\n\n useEffect(() => {\n if (!tab) {\n handleClickTab(SCRUM);\n } else {\n setNowTab(tab);\n }\n }, [tab]);\n\n return (\n
\n
\n
\n \n
\n

The F2E 4th 互動式網頁設計

\n
    \n {TABS.map((tab) => (\n {\n handleClickTab(tab.key);\n }}\n >\n {tab.text}\n \n ))}\n
\n
\n
{renderTabContent()}
\n \n
\n );\n};\n\nexport default Page;\n","export default __webpack_public_path__ + \"static/media/card1.222ccabe.jpg\";","export default __webpack_public_path__ + \"static/media/card2.c05332c2.jpg\";","export default __webpack_public_path__ + \"static/media/card3.d416472a.jpg\";","export default __webpack_public_path__ + \"static/media/card4.5704db6b.jpg\";","export default __webpack_public_path__ + \"static/media/card5.af4b2fa5.jpg\";","export default __webpack_public_path__ + \"static/media/card6.e8bd3dc6.jpg\";","export default __webpack_public_path__ + \"static/media/card_bg.10049e8a.jpg\";","import React, { useState, useEffect } from \"react\";\n\nimport CARD1 from \"../../../image/games/card1.jpg\";\nimport CARD2 from \"../../../image/games/card2.jpg\";\nimport CARD3 from \"../../../image/games/card3.jpg\";\nimport CARD4 from \"../../../image/games/card4.jpg\";\nimport CARD5 from \"../../../image/games/card5.jpg\";\nimport CARD6 from \"../../../image/games/card6.jpg\";\nimport CARD_BG from \"../../../image/games/card_bg.jpg\";\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst CARD_IMAGES = [\n {\n name: \"toothy\",\n imgUrl: CARD1,\n },\n {\n name: \"scream\",\n imgUrl: CARD2,\n },\n {\n name: \"RollEyes\",\n imgUrl: CARD3,\n },\n {\n name: \"potatoGreen\",\n imgUrl: CARD4,\n },\n {\n name: \"potatoYellow\",\n imgUrl: CARD5,\n },\n {\n name: \"egg\",\n imgUrl: CARD6,\n },\n];\n\nconst CardMemory = () => {\n const [cards, setCards] = useState([]);\n const [firstChoice, setfirstChoice] = useState(null);\n const [secondChoice, setSecondChoice] = useState(null);\n const [disabled, setDisabled] = useState(false);\n\n const handleClick = (card) => {\n if (disabled) return;\n if (firstChoice && firstChoice.id === card.id) return;\n if (card.matched) return;\n\n firstChoice ? setSecondChoice(card) : setfirstChoice(card);\n };\n\n const clearChoice = () => {\n setfirstChoice(null);\n setSecondChoice(null);\n setDisabled(false);\n };\n\n const handleRestart = () => {\n const shuffledCards = [...CARD_IMAGES, ...CARD_IMAGES]\n .sort(() => Math.random() - 0.5)\n .map((card) => ({\n ...card,\n id: `card_${Math.floor(Math.random() * 1000)}`,\n matched: false,\n }));\n setCards(shuffledCards);\n clearChoice();\n };\n\n useEffect(() => {\n handleRestart();\n }, []);\n\n useEffect(() => {\n const handleMatch = () => {\n const matchedArray = cards.map((card) => ({\n ...card,\n matched: card.matched || card.name === firstChoice?.name,\n }));\n setCards(matchedArray);\n };\n if (firstChoice && secondChoice) {\n setDisabled(true);\n if (firstChoice?.name === secondChoice?.name) {\n handleMatch();\n }\n window.setTimeout(() => {\n clearChoice();\n }, 700);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [firstChoice, secondChoice]);\n\n return (\n
\n
\n \n
\n {cards.map((card) => {\n const { id, imgUrl, matched } = card;\n const beChoiced = matched || firstChoice?.id === id || secondChoice?.id === id;\n return (\n {\n handleClick(card);\n }}\n >\n
\n \"card\"\n \"card\"\n
\n
\n );\n })}\n
\n
\n
\n );\n};\n\nexport default CardMemory;\n","import React, { useState, useEffect } from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst COLUM = 20;\nconst STEP = 10;\nconst INITIAL_SPEED = 200;\nconst INITIAL_SNAKE = [\n { x: 3, y: 5 },\n { x: 3, y: 4 },\n { x: 3, y: 3 },\n];\nconst RIGHT = \"ArrowRight\";\nconst LEFT = \"ArrowLeft\";\nconst UP = \"ArrowUp\";\nconst DOWN = \"ArrowDown\";\n\nconst generateFruit = () => ({\n x: Math.floor(Math.random() * 20) + 1,\n y: Math.floor(Math.random() * 20) + 1,\n});\n\nconst Snake = () => {\n const [snake, setSnake] = useState(INITIAL_SNAKE);\n const [fruit, setFruit] = useState(generateFruit());\n const [direction, setDirection] = useState(RIGHT);\n const [speed, setSpeed] = useState(INITIAL_SPEED);\n const [stop, setStop] = useState(false);\n\n const handleRestart = () => {\n setSnake(INITIAL_SNAKE);\n setFruit(generateFruit());\n setDirection(RIGHT);\n setSpeed(INITIAL_SPEED);\n setStop(false);\n };\n\n useEffect(() => {\n const timer = setInterval(() => {\n if(stop) return;\n let head = { ...snake[0] };\n if (direction === RIGHT) {\n head.y += 1;\n }\n if (direction === LEFT) {\n head.y -= 1;\n }\n if (direction === UP) {\n head.x -= 1;\n }\n if (direction === DOWN) {\n head.x += 1;\n }\n\n if (\n head.x > COLUM ||\n head.x < 1 ||\n head.y > COLUM ||\n head.y < 1 ||\n snake.some((item) => item.x === head.x && item.y === head.y)\n ) {\n setStop(true);\n return;\n }\n const snakeCopy = [head, ...snake];\n if (head.x === fruit.x && head.y === fruit.y) {\n let newFruit = generateFruit();\n // eslint-disable-next-line no-loop-func\n while (snake.some((el) => el.x === newFruit.x && el.y === newFruit.y)) {\n newFruit = generateFruit();\n }\n setFruit(newFruit);\n if (snake.length > 5) {\n setSpeed((prevSpeed) =>\n prevSpeed <= STEP ? STEP : prevSpeed - STEP\n );\n }\n } else {\n snakeCopy.pop();\n }\n setSnake(snakeCopy);\n }, speed);\n\n return () => {\n clearInterval(timer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [snake, direction, fruit, speed]);\n\n useEffect(() => {\n const handleChangeDirection = ({ key }) => {\n if (\n (key === LEFT && direction === RIGHT) ||\n (key === RIGHT && direction === LEFT) ||\n (key === UP && direction === DOWN) ||\n (key === DOWN && direction === UP) ||\n stop\n )\n return;\n setDirection(key);\n };\n window.addEventListener(\"keydown\", handleChangeDirection);\n\n return () => {\n window.removeEventListener(\"keydown\", handleChangeDirection);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [direction]);\n\n return (\n
\n
\n {Array.from({ length: COLUM }, (_, i) => i + 1).map((colX) => (\n
\n {Array.from({ length: COLUM }, (_, i) => i + 1).map((colY) => {\n let type;\n if (snake.some((el) => el.x === colX && el.y === colY)) {\n type = \"snake\";\n } else if (colX === fruit.x && colY === fruit.y) {\n type = \"fruit\";\n }\n return
;\n })}\n
\n ))}\n
\n {stop && (\n
\n

BOOM!

\n \n
\n )}\n
\n );\n};\n\nexport default Snake;\n","import React from \"react\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst Minesweeper = () => {\n return (\n
\n

coming soon

\n
\n );\n};\n\nexport default Minesweeper;\n","import React, { useState, useEffect } from \"react\";\nimport qs from \"qs\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { SiRobotframework } from \"react-icons/si\";\n\nimport GoHome from \"Component/GoHome\";\nimport CardMemory from \"./CardMemory\";\nimport Snake from \"./Snake\";\nimport Minesweeper from \"./Minesweeper\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst CARD_MEMORY = \"cardMemory\";\nconst SNAKE = \"snake\";\nconst MINESWEEPER = \"minesweeper\";\n\nconst TABS = [\n {\n key: CARD_MEMORY,\n title: \"翻牌記憶遊戲\",\n },\n {\n key: SNAKE,\n title: \"貪吃蛇遊戲\",\n },\n {\n key: MINESWEEPER,\n title: \"踩地雷遊戲\",\n },\n];\n\nconst Games = () => {\n const location = useLocation();\n const history = useHistory();\n const querys = qs.parse(location.search, { ignoreQueryPrefix: true });\n const { tab } = querys;\n const [nowTab, setNowTab] = useState(CARD_MEMORY);\n const handleClickTab = (tab) => {\n if (tab === nowTab) return;\n\n history.push({\n pathname: location.pathname,\n search: qs.stringify({ tab }),\n });\n };\n const renderTabContent = () => {\n switch (nowTab) {\n case CARD_MEMORY:\n return ;\n case SNAKE:\n return ;\n case MINESWEEPER:\n return ;\n default:\n return null;\n }\n };\n\n useEffect(() => {\n if (tab) {\n setNowTab(tab);\n }\n }, [tab]);\n\n return (\n
\n
    \n {TABS.map(({ key, title }) => (\n {\n handleClickTab(key);\n }}\n >\n {nowTab === key && (\n \n \n \n )}\n\n {title}\n \n ))}\n
\n
{renderTabContent()}
\n \n
\n );\n};\n\nexport default Games;\n","export default __webpack_public_path__ + \"static/media/avatar.59e2f438.jpg\";","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { AiFillPhone, AiTwotoneMail, AiFillEnvironment, AiOutlineGlobal } from \"react-icons/ai\";\nimport GoHome from \"Component/GoHome\";\nimport avatar from \"image/avatar.jpg\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nfunction CV() {\n return (\n
\n
\n
\n

蘇怡姍 (Nicole Su)

\n

前端工程師

\n
\n
\n \"avatar\"\n
\n
\n
\n
\n

\n \n 0987-064-169\n

\n

\n \n nju6g0@gmail.com\n

\n

\n \n https://master.d91po6eifpl24.amplifyapp.com/home\n

\n

\n \n New Taipei City, Taiwan\n

\n
\n
\n

SKILLS

\n
    \n
  • \n 工具軟體\n
    \n git, Visual Studio code\n
  • \n
  • \n 網頁相關\n
      \n
    • html, css, scss
    • \n
    • bootstrap, Ant design
    • \n
    • JavaScript
    • \n
    • React JS
    • \n
    • Next.js
    • \n
    • GraphQL
    • \n
    \n
  • \n
\n
\n
\n

訓練及證照

\n
    \n
  • 六角學院 2024 Vue前端新手營挑戰者證書
  • \n
  • 財團法人資訊工業策進會辦理之「前端工程師就業養成班」(受訓期間:2018年12月27日~2019年6月5日)
  • \n
  • 日本語能力試驗N3合格(測驗日期2018年12月2日)
  • \n
  • 財團法人中華民國對外貿易發展協會國際企業人材培訓中心第28期國際企業在職班(210小時)(受訓期間:2017年1月4日~2017年7月1日)
  • \n
\n
\n
\n
\n
    \n
  • 4 years + Frontend Developer
  • \n
  • 熟悉 React.js 相關技術及應用
  • \n
  • 與後端工程師討論 API 規格,構想錯誤情況處理
  • \n
  • 與pm評估需求可行性
  • \n
  • 獨立開發與團隊合作能力
  • \n
\n
\n

\n 工作經歷\n \n

\n
\n

前端工程師 • Bonio 幫你優

\n

十月 2021 - 6月 2024

\n
    \n 負責社群共學平台前端相關的開發及維護:\n
  • 以 React + styled-component 進行網頁前端功能開發及維護。
  • \n
  • 以 React Native 進行 APP 功能開發及維護 。
  • \n
  • 使用 Next.js + Ant Design 進行網頁後台開發及維護。
  • \n
  • 與團隊共同評估需求可行性。
  • \n
  • 與後端夥伴合作,制定、串接 API(GraphQL)。
  • \n
\n
\n
\n

前端工程師 • 和泰聯網股份有限公司

\n

三月 2021 - 七月 2021

\n

以React規劃及開發企業簽單後台管理系統,並與後端工程師溝通合作串接API。

\n
\n
\n

前端工程師 • 緯創軟體股份有限公司

\n

三月 2020 - 三月 2021

\n

\n 參與電競社群平台專案,使用 React 進行網頁維護及需求開發,與 UI/UX 設計師及後端工程師溝通合作,套用版面與實作並串接後端 API。\n

\n
\n
\n

前端工程師 • 精誠資訊股份有限公司

\n

七月 2019 - 三月 2020

\n

以 angular 撰寫銀行端末系統前端頁面(系統翻新)。

\n
\n
\n
\n

\n 學歷\n \n

\n
\n

國立臺北大學

\n

企業管理學系碩士 2009 - 2011

\n
\n
\n
\n \n
\n );\n}\n\nexport default CV;\n","import Home from \"Pages/Home\";\nimport Excel from \"Pages/Excel\";\nimport DrinkOrder from \"Pages/DrinkOrder\";\nimport KittyGallery from \"Pages/KittyGallery\";\nimport GarellyUpload from \"Pages/KittyGallery/Upload\";\nimport GarellyFavorite from \"Pages/KittyGallery/Favorite\";\nimport GarellyList from \"Pages/KittyGallery/List\";\nimport Sample from \"Pages/emptyPage\";\nimport Animation from \"Pages/Animation\";\nimport TheF2E from \"Pages/TheF2E\";\nimport Games from \"Pages/Games\";\nimport CurriculumVitae from \"Pages/CurriculumVitae\";\n\nexport const routes = [\n {\n key: \"home\",\n path: \"/home\",\n exact: false,\n component: Home,\n },\n {\n key: \"drinkorder\",\n path: \"/drinkorder\",\n exact: false,\n component: DrinkOrder,\n },\n {\n key: \"excel\",\n path: \"/excel\",\n exact: false,\n component: Excel,\n },\n {\n key: \"kittyGallery\",\n path: \"/kittyGallery\",\n exact: false,\n component: KittyGallery,\n },\n {\n key: \"thef2e\",\n path: \"/thef2e\",\n exact: false,\n component: TheF2E,\n },\n {\n key: \"animation\",\n path: \"/animation\",\n exact: false,\n component: Animation,\n },\n {\n key: \"games\",\n path: \"/games\",\n exact: false,\n component: Games,\n },\n {\n key: \"cv\",\n path: \"/cv\",\n exact: false,\n component: CurriculumVitae,\n },\n];\n\nexport const galleryRoutes = [\n {\n key: \"galleryList\",\n path: \"/kittyGallery/galleryList\",\n exact: false,\n component: GarellyList,\n },\n {\n key: \"galleryFavorite\",\n path: \"/kittyGallery/galleryFavorite\",\n exact: false,\n component: GarellyFavorite,\n },\n {\n key: \"galleryUpload\",\n path: \"/kittyGallery/galleryUpload\",\n exact: false,\n component: GarellyUpload,\n },\n];\n","import React from 'react';\n\nimport { withPopWindowConsumer } from 'Context/PopWindow';\n\nimport classes from './styles.module.scss';\nimport classNames from 'classnames/bind';\nconst cx = classNames.bind(classes);\n\nconst PopWidnow = ({ popWindowData }) => {\n const { isOpenPopWindow, closePopWindowFunc, popContent } = popWindowData;\n\n if (!isOpenPopWindow) return null;\n return (\n
\n
\n
\n
\n \n \n
\n
\n
{popContent}
\n
\n
\n );\n};\n\nexport default withPopWindowConsumer(PopWidnow);\n","import React from \"react\";\nimport qs from \"qs\";\nimport { useLocation } from \"react-router-dom\";\nimport { GiCherish } from \"react-icons/gi\";\n\nimport { WEB as QUERY_TAB, SCRUM as QUERY_SCRUM } from \"Pages/TheF2E\";\n\nimport classes from \"./styles.module.scss\";\nimport classNames from \"classnames/bind\";\nconst cx = classNames.bind(classes);\n\nconst DESIGNER = {\n [QUERY_TAB]: {\n name: \"irena\",\n link: \"https://2022.thef2e.com/users/12061549261454740005\",\n },\n [QUERY_SCRUM]: {\n name: \"EG\",\n link: \"https://2022.thef2e.com/users/12061549261454740203\",\n },\n};\n\nconst Footer = () => {\n const location = useLocation();\n const querys = qs.parse(location.search, { ignoreQueryPrefix: true });\n const path = location.pathname.replace(/^\\//, \"\");\n\n const hasDesigner = path === \"thef2e\" && [QUERY_SCRUM, QUERY_TAB].some((tab) => tab === querys.tab);\n const queryTab = querys.tab;\n\n return (\n
\n \n {new Date().getFullYear()} YiShan, Su / \n {hasDesigner && (\n <>\n \n UI Design - {DESIGNER[queryTab].name}\n \n  /\n \n )}{\" \"}\n Thank you for coming.\n
\n );\n};\n\nexport default Footer;\n","import React, { Fragment } from 'react';\nimport { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';\nimport { Helmet } from \"react-helmet\";\n\nimport { routes } from 'Config/routes';\nimport { withPopWindowProvider } from 'Context/PopWindow';\nimport { withAuthProvider } from 'Context/Auth';\nimport PopWidnow from 'Component/PopWindow';\nimport Footer from 'Component/Footer';\n\nfunction App() {\n return (\n \n {/*
header
*/}\n \n \n \n \n \n \n \n
\n \n \n {routes.map((route) => (\n }\n />\n ))}\n } />\n \n
\n \n
\n \n
\n );\n}\n\nexport default withAuthProvider(withPopWindowProvider(App));\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","export default __webpack_public_path__ + \"static/media/Cubic_11_1.013_R.a58a517e.ttf\";","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nimport 'fonts/cubic/Cubic_11_1.013_R.ttf';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}