**مهارتهای لازم:**
- آشنایی با `hook`
--------------------------------------------------
ظاهر کلی برنامه بدین صورت است:
![ظاهر برنامه](https://quera.ir/qbox/view/oIep7LbarM/ezgif.com-video-to-gif.gif)
# پروژه اولیه
پروژه اولیه را از
[اینجا](https://quera.ir/qbox/download/AaetNQP3op/timer-hook.zip)
دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است.
```
timer-hook
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── Timer.js
│ ├── index.css
│ ├── index.js
│ └── use-timer.js
├── package-lock.json
└── package.json
```
<details class="brown">
<summary>
راهاندازی پروژه
</summary>
**برای اجرای پروژه، باید `NodeJS` و `npm` را از قبل نصب کرده باشید.**
- ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
- در پوشهی `timer-hook` ، دستور `npm install` را برای نصب نیازمندیها اجرا کنید.
- در همین پوشه، دستور `npm start` را برای راهاندازی پروژه اجرا کنید.
- پس از انجام موفق این مراحل، با مراجعه به آدرس `http://localhost:3000/`
میتوانید نتیجه را ببینید.
</details>
# جزئیات
در این سوال شما باید یک `hook` بسازید که یک تایمر را کنترل کند. این هوک باید قابلیتهای شروع، ادامه و ریست
داشته باشد.
هوک ساخته شده باید چهار خروجی داشته باشد:
```js
const {seconds, resume, stop, reset} = useTimer()
```
- `seconds`: ثانیه که الان در آن هستیم، از صفر شروع میشود و هر ثانیه یک واحد افزایش مییابد.
- `stop`: تابعی که باعث میشود تایمر متوقف شود.
- `resume`: تابعی که باعث میشود تایمر ادامه پیدا کند.
- `reset`: تابعی که تایمر را به حالت اولیه یعنی شروع از صفر میبرد.
# نکات
- شما تنها مجاز به اعمال تغییرات در فایل `use-timer.js` هستید.
- تعدادی تست نمونه در پروژه اولیه وجود دارد که با استفاده از آنها میتوانید کد خود را تست کنید.
- پس از اعمال تغییرات، پروژه را _ZIP_ کرده و ارسال کنید.دقت کنید که پوشهی `node_modules` در فایل ارسالی نباشد.