npm package: @motif/utils
Description: Motif JavaScript Utility Library
Author: ProgDesigner
Latest version: 0.4.9

<a name="utils"></a>

# utils : <code>object</code>
<p>유틸 함수를 통합 관리하기 위한 모듈</p>

**Kind**: global namespace  

* [utils](#utils) : <code>object</code>
    * [.scroll](#utils.scroll)
        * [.to(options)](#utils.scroll.to)
        * [.top()](#utils.scroll.top)
    * [.compareVersions(firstVersion, secondVersion)](#utils.compareVersions) ⇒ <code>number</code>
    * [.dateAdd(date, duration)](#utils.dateAdd) ⇒ <code>Date</code>
    * [.dateDiff(leftDate, rightDate, unit)](#utils.dateDiff) ⇒ <code>Date</code>
    * [.dateFormat(date, format)](#utils.dateFormat) ⇒ <code>string</code>
    * [.dateISO(value)](#utils.dateISO) ⇒ <code>Date</code>
    * [.dateSubtract(date, duration)](#utils.dateSubtract) ⇒ <code>Date</code>
    * [.decodeSpecialChars(string)](#utils.decodeSpecialChars) ⇒ <code>string</code>
    * [.getBool(value, defaultValue)](#utils.getBool) ⇒ <code>boolean</code>
    * [.getJSON(data, defaultValue)](#utils.getJSON) ⇒ <code>string</code>
    * [.is(type, [value], [passLike])](#utils.is) ⇒ <code>boolean</code>
    * [.numberFormat(value)](#utils.numberFormat) ⇒ <code>string</code>
    * [.paging(options)](#utils.paging) ⇒ [<code>Paging</code>](#Paging)
    * [.parseJSON(jsonValue, defaultValue)](#utils.parseJSON) ⇒ <code>Object</code>
    * [.passwordStrength(value)](#utils.passwordStrength) ⇒ <code>number</code>
    * [.queryString(value)](#utils.queryString) ⇒ <code>string</code>
    * [.split(string, delimiter, options)](#utils.split) ⇒ <code>string</code>
    * [.stripSlashes(string)](#utils.stripSlashes) ⇒ <code>string</code>
    * [.timestamp()](#utils.timestamp) ⇒ <code>Date</code>
    * [.truncate(string, maxLength, options)](#utils.truncate) ⇒ <code>string</code>
    * [.uuid()](#utils.uuid) ⇒ <code>string</code>
    * [.queue(options)](#utils.queue) ⇒ [<code>Queue</code>](#Queue)
    * [.timeout(component, key, callback, milliseconds)](#utils.timeout) ⇒ [<code>Timeout</code>](#Timeout)
        * [.getTimeout(component)](#utils.timeout.getTimeout) ⇒ [<code>Timeout</code>](#Timeout)
        * [.call(component, key, callback, milliseconds, [options])](#utils.timeout.call) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
        * [.once(component, key, callback, milliseconds, [options])](#utils.timeout.once) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
        * [.interval(component, key, callback, milliseconds, [options])](#utils.timeout.interval) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
        * [.has(component, key)](#utils.timeout.has) ⇒ <code>boolean</code>
        * [.clear(component, [keys])](#utils.timeout.clear) ⇒ <code>boolean</code>
        * [.sleep(milliseconds)](#utils.timeout.sleep)
    * [.ui(ref)](#utils.ui) ⇒ [<code>UIView</code>](#UIView)
        * [.getElement(ref)](#utils.ui.getElement) ⇒ <code>Element</code>
        * [.getRect(ref)](#utils.ui.getRect) ⇒ [<code>UIRect</code>](#UIRect)
        * [.getRectEdge(ref)](#utils.ui.getRectEdge) ⇒ [<code>UIRectEdge</code>](#UIRectEdge)

<a name="utils.scroll"></a>

## utils.scroll
<p>Scroll 객체 모듈</p>

**Kind**: static property of [<code>utils</code>](#utils)  

* [.scroll](#utils.scroll)
    * [.to(options)](#utils.scroll.to)
    * [.top()](#utils.scroll.top)

<a name="utils.scroll.to"></a>

### utils.scroll.to(options)
<p>특정 스크롤 위치로 이동</p>

**Kind**: static method of [<code>scroll</code>](#utils.scroll)  

| Param | Type |
| --- | --- |
| options | [<code>ScrollToOptions</code>](#ScrollToOptions) | 

<a name="utils.scroll.top"></a>

### utils.scroll.top()
<p>최상단으로 스크롤</p>

**Kind**: static method of [<code>scroll</code>](#utils.scroll)  
<a name="utils.compareVersions"></a>

## utils.compareVersions(firstVersion, secondVersion) ⇒ <code>number</code>
<p>두 버전을 비교하여 결과를 반환합니다.</p>
<p>-1: 원래 버전이 비교할 버전보다 낮습니다.</p>
<p>0: 원래 버전과 비교할 버전이 같습니다.</p>
<p>1: 원래 버전보다 비교할 버전이 높습니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| firstVersion | <code>string</code> | <p>원래 버전</p> |
| secondVersion | <code>string</code> | <p>비교할 버전</p> |

<a name="utils.dateAdd"></a>

## utils.dateAdd(date, duration) ⇒ <code>Date</code>
<p>duration 값 만큼 날짜를 뒤로 미룹니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| date | <code>Date</code> \| <code>number</code> | <p>원래 날짜</p> |
| duration | <code>utils.Duration</code> | <p>증가시킬 시간</p> |

<a name="utils.dateDiff"></a>

## utils.dateDiff(leftDate, rightDate, unit) ⇒ <code>Date</code>
<p>두 날짜를 비교하여 차이를 반환합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| leftDate | <code>Date</code> \| <code>number</code> \| <code>string</code> | <p>원래 날짜</p> |
| rightDate | <code>Date</code> \| <code>number</code> \| <code>string</code> | <p>비교할 날짜</p> |
| unit | <code>utils.DateUnit</code> | <p>비교 단위</p> |

<a name="utils.dateFormat"></a>

## utils.dateFormat(date, format) ⇒ <code>string</code>
<p>주어진 형식에 따라 날짜를 문저열로 반환합니다. 결과는 지역마다 다를 수 있습니다.</p>
<p>허용되는 형식:</p>
<table>
<thead>
<tr>
<th>Unit</th>
<th>Pattern</th>
<th>Result examples</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Era</td>
<td>G..GGG</td>
<td>AD, BC</td>
<td></td>
</tr>
<tr>
<td></td>
<td>GGGG</td>
<td>Anno Domini, Before Christ</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>GGGGG</td>
<td>A, B</td>
<td></td>
</tr>
<tr>
<td>Calendar year</td>
<td>y</td>
<td>44, 1, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>yo</td>
<td>44th, 1st, 0th, 17th</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>yy</td>
<td>44, 01, 00, 17</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>yyy</td>
<td>044, 001, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>yyyy</td>
<td>0044, 0001, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>yyyyy</td>
<td>...</td>
<td>3,5</td>
</tr>
<tr>
<td>Local week-numbering year</td>
<td>Y</td>
<td>44, 1, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>Yo</td>
<td>44th, 1st, 1900th, 2017th</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>YY</td>
<td>44, 01, 00, 17</td>
<td>5,8</td>
</tr>
<tr>
<td></td>
<td>YYY</td>
<td>044, 001, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>YYYY</td>
<td>0044, 0001, 1900, 2017</td>
<td>5,8</td>
</tr>
<tr>
<td></td>
<td>YYYYY</td>
<td>...</td>
<td>3,5</td>
</tr>
<tr>
<td>ISO week-numbering year</td>
<td>R</td>
<td>-43, 0, 1, 1900, 2017</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>RR</td>
<td>-43, 00, 01, 1900, 2017</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>RRR</td>
<td>-043, 000, 001, 1900, 2017</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>RRRR</td>
<td>-0043, 0000, 0001, 1900, 2017</td>
<td>5,7</td>
</tr>
<tr>
<td></td>
<td>RRRRR</td>
<td>...</td>
<td>3,5,7</td>
</tr>
<tr>
<td>Extended year</td>
<td>u</td>
<td>-43, 0, 1, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>uu</td>
<td>-43, 01, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>uuu</td>
<td>-043, 001, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>uuuu</td>
<td>-0043, 0001, 1900, 2017</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>uuuuu</td>
<td>...</td>
<td>3,5</td>
</tr>
<tr>
<td>Quarter (formatting)</td>
<td>Q</td>
<td>1, 2, 3, 4</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Qo</td>
<td>1st, 2nd, 3rd, 4th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>QQ</td>
<td>01, 02, 03, 04</td>
<td></td>
</tr>
<tr>
<td></td>
<td>QQQ</td>
<td>Q1, Q2, Q3, Q4</td>
<td></td>
</tr>
<tr>
<td></td>
<td>QQQQ</td>
<td>1st quarter, 2nd quarter, ...</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>QQQQQ</td>
<td>1, 2, 3, 4</td>
<td>4</td>
</tr>
<tr>
<td>Quarter (stand-alone)</td>
<td>q</td>
<td>1, 2, 3, 4</td>
<td></td>
</tr>
<tr>
<td></td>
<td>qo</td>
<td>1st, 2nd, 3rd, 4th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>qq</td>
<td>01, 02, 03, 04</td>
<td></td>
</tr>
<tr>
<td></td>
<td>qqq</td>
<td>Q1, Q2, Q3, Q4</td>
<td></td>
</tr>
<tr>
<td></td>
<td>qqqq</td>
<td>1st quarter, 2nd quarter, ...</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>qqqqq</td>
<td>1, 2, 3, 4</td>
<td>4</td>
</tr>
<tr>
<td>Month (formatting)</td>
<td>M</td>
<td>1, 2, ..., 12</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Mo</td>
<td>1st, 2nd, ..., 12th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>MM</td>
<td>01, 02, ..., 12</td>
<td></td>
</tr>
<tr>
<td></td>
<td>MMM</td>
<td>Jan, Feb, ..., Dec</td>
<td></td>
</tr>
<tr>
<td></td>
<td>MMMM</td>
<td>January, February, ..., December</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>MMMMM</td>
<td>J, F, ..., D</td>
<td></td>
</tr>
<tr>
<td>Month (stand-alone)</td>
<td>L</td>
<td>1, 2, ..., 12</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Lo</td>
<td>1st, 2nd, ..., 12th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>LL</td>
<td>01, 02, ..., 12</td>
<td></td>
</tr>
<tr>
<td></td>
<td>LLL</td>
<td>Jan, Feb, ..., Dec</td>
<td></td>
</tr>
<tr>
<td></td>
<td>LLLL</td>
<td>January, February, ..., December</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>LLLLL</td>
<td>J, F, ..., D</td>
<td></td>
</tr>
<tr>
<td>Local week of year</td>
<td>w</td>
<td>1, 2, ..., 53</td>
<td></td>
</tr>
<tr>
<td></td>
<td>wo</td>
<td>1st, 2nd, ..., 53th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>ww</td>
<td>01, 02, ..., 53</td>
<td></td>
</tr>
<tr>
<td>ISO week of year</td>
<td>I</td>
<td>1, 2, ..., 53</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>Io</td>
<td>1st, 2nd, ..., 53th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>II</td>
<td>01, 02, ..., 53</td>
<td>7</td>
</tr>
<tr>
<td>Day of month</td>
<td>d</td>
<td>1, 2, ..., 31</td>
<td></td>
</tr>
<tr>
<td></td>
<td>do</td>
<td>1st, 2nd, ..., 31st</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>dd</td>
<td>01, 02, ..., 31</td>
<td></td>
</tr>
<tr>
<td>Day of year</td>
<td>D</td>
<td>1, 2, ..., 365, 366</td>
<td>9</td>
</tr>
<tr>
<td></td>
<td>Do</td>
<td>1st, 2nd, ..., 365th, 366th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>DD</td>
<td>01, 02, ..., 365, 366</td>
<td>9</td>
</tr>
<tr>
<td></td>
<td>DDD</td>
<td>001, 002, ..., 365, 366</td>
<td></td>
</tr>
<tr>
<td></td>
<td>DDDD</td>
<td>...</td>
<td>3</td>
</tr>
<tr>
<td>Day of week (formatting)</td>
<td>E..EEE</td>
<td>Mon, Tue, Wed, ..., Sun</td>
<td></td>
</tr>
<tr>
<td></td>
<td>EEEE</td>
<td>Monday, Tuesday, ..., Sunday</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>EEEEE</td>
<td>M, T, W, T, F, S, S</td>
<td></td>
</tr>
<tr>
<td></td>
<td>EEEEEE</td>
<td>Mo, Tu, We, Th, Fr, Su, Sa</td>
<td></td>
</tr>
<tr>
<td>ISO day of week (formatting)</td>
<td>i</td>
<td>1, 2, 3, ..., 7</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>io</td>
<td>1st, 2nd, ..., 7th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>ii</td>
<td>01, 02, ..., 07</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>iii</td>
<td>Mon, Tue, Wed, ..., Sun</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>iiii</td>
<td>Monday, Tuesday, ..., Sunday</td>
<td>2,7</td>
</tr>
<tr>
<td></td>
<td>iiiii</td>
<td>M, T, W, T, F, S, S</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>iiiiii</td>
<td>Mo, Tu, We, Th, Fr, Su, Sa</td>
<td>7</td>
</tr>
<tr>
<td>Local day of week (formatting)</td>
<td>e</td>
<td>2, 3, 4, ..., 1</td>
<td></td>
</tr>
<tr>
<td></td>
<td>eo</td>
<td>2nd, 3rd, ..., 1st</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>ee</td>
<td>02, 03, ..., 01</td>
<td></td>
</tr>
<tr>
<td></td>
<td>eee</td>
<td>Mon, Tue, Wed, ..., Sun</td>
<td></td>
</tr>
<tr>
<td></td>
<td>eeee</td>
<td>Monday, Tuesday, ..., Sunday</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>eeeee</td>
<td>M, T, W, T, F, S, S</td>
<td></td>
</tr>
<tr>
<td></td>
<td>eeeeee</td>
<td>Mo, Tu, We, Th, Fr, Su, Sa</td>
<td></td>
</tr>
<tr>
<td>Local day of week (stand-alone)</td>
<td>c</td>
<td>2, 3, 4, ..., 1</td>
<td></td>
</tr>
<tr>
<td></td>
<td>co</td>
<td>2nd, 3rd, ..., 1st</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>cc</td>
<td>02, 03, ..., 01</td>
<td></td>
</tr>
<tr>
<td></td>
<td>ccc</td>
<td>Mon, Tue, Wed, ..., Sun</td>
<td></td>
</tr>
<tr>
<td></td>
<td>cccc</td>
<td>Monday, Tuesday, ..., Sunday</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>ccccc</td>
<td>M, T, W, T, F, S, S</td>
<td></td>
</tr>
<tr>
<td></td>
<td>cccccc</td>
<td>Mo, Tu, We, Th, Fr, Su, Sa</td>
<td></td>
</tr>
<tr>
<td>AM, PM</td>
<td>a..aaa</td>
<td>AM, PM</td>
<td></td>
</tr>
<tr>
<td></td>
<td>aaaa</td>
<td>a.m., p.m.</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>aaaaa</td>
<td>a, p</td>
<td></td>
</tr>
<tr>
<td>AM, PM, noon, midnight</td>
<td>b..bbb</td>
<td>AM, PM, noon, midnight</td>
<td></td>
</tr>
<tr>
<td></td>
<td>bbbb</td>
<td>a.m., p.m., noon, midnight</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>bbbbb</td>
<td>a, p, n, mi</td>
<td></td>
</tr>
<tr>
<td>Flexible day period</td>
<td>B..BBB</td>
<td>at night, in the morning, ...</td>
<td></td>
</tr>
<tr>
<td></td>
<td>BBBB</td>
<td>at night, in the morning, ...</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>BBBBB</td>
<td>at night, in the morning, ...</td>
<td></td>
</tr>
<tr>
<td>Hour [1-12]</td>
<td>h</td>
<td>1, 2, ..., 11, 12</td>
<td></td>
</tr>
<tr>
<td></td>
<td>ho</td>
<td>1st, 2nd, ..., 11th, 12th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>hh</td>
<td>01, 02, ..., 11, 12</td>
<td></td>
</tr>
<tr>
<td>Hour [0-23]</td>
<td>H</td>
<td>0, 1, 2, ..., 23</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Ho</td>
<td>0th, 1st, 2nd, ..., 23rd</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>HH</td>
<td>00, 01, 02, ..., 23</td>
<td></td>
</tr>
<tr>
<td>Hour [0-11]</td>
<td>K</td>
<td>1, 2, ..., 11, 0</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Ko</td>
<td>1st, 2nd, ..., 11th, 0th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>KK</td>
<td>01, 02, ..., 11, 00</td>
<td></td>
</tr>
<tr>
<td>Hour [1-24]</td>
<td>k</td>
<td>24, 1, 2, ..., 23</td>
<td></td>
</tr>
<tr>
<td></td>
<td>ko</td>
<td>24th, 1st, 2nd, ..., 23rd</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>kk</td>
<td>24, 01, 02, ..., 23</td>
<td></td>
</tr>
<tr>
<td>Minute</td>
<td>m</td>
<td>0, 1, ..., 59</td>
<td></td>
</tr>
<tr>
<td></td>
<td>mo</td>
<td>0th, 1st, ..., 59th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>mm</td>
<td>00, 01, ..., 59</td>
<td></td>
</tr>
<tr>
<td>Second</td>
<td>s</td>
<td>0, 1, ..., 59</td>
<td></td>
</tr>
<tr>
<td></td>
<td>so</td>
<td>0th, 1st, ..., 59th</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>ss</td>
<td>00, 01, ..., 59</td>
<td></td>
</tr>
<tr>
<td>Fraction of second</td>
<td>S</td>
<td>0, 1, ..., 9</td>
<td></td>
</tr>
<tr>
<td></td>
<td>SS</td>
<td>00, 01, ..., 99</td>
<td></td>
</tr>
<tr>
<td></td>
<td>SSS</td>
<td>000, 0001, ..., 999</td>
<td></td>
</tr>
<tr>
<td></td>
<td>SSSS</td>
<td>...</td>
<td>3</td>
</tr>
<tr>
<td>Timezone (ISO-8601 w/ Z)</td>
<td>X</td>
<td>-08, +0530, Z</td>
<td></td>
</tr>
<tr>
<td></td>
<td>XX</td>
<td>-0800, +0530, Z</td>
<td></td>
</tr>
<tr>
<td></td>
<td>XXX</td>
<td>-08:00, +05:30, Z</td>
<td></td>
</tr>
<tr>
<td></td>
<td>XXXX</td>
<td>-0800, +0530, Z, +123456</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>XXXXX</td>
<td>-08:00, +05:30, Z, +12:34:56</td>
<td></td>
</tr>
<tr>
<td>Timezone (ISO-8601 w/o Z)</td>
<td>x</td>
<td>-08, +0530, +00</td>
<td></td>
</tr>
<tr>
<td></td>
<td>xx</td>
<td>-0800, +0530, +0000</td>
<td></td>
</tr>
<tr>
<td></td>
<td>xxx</td>
<td>-08:00, +05:30, +00:00</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>xxxx</td>
<td>-0800, +0530, +0000, +123456</td>
<td></td>
</tr>
<tr>
<td></td>
<td>xxxxx</td>
<td>-08:00, +05:30, +00:00, +12:34:56</td>
<td></td>
</tr>
<tr>
<td>Timezone (GMT)</td>
<td>O...OOO</td>
<td>GMT-8, GMT+5:30, GMT+0</td>
<td></td>
</tr>
<tr>
<td></td>
<td>OOOO</td>
<td>GMT-08:00, GMT+05:30, GMT+00:00</td>
<td>2</td>
</tr>
<tr>
<td>Timezone (specific non-locat.)</td>
<td>z...zzz</td>
<td>GMT-8, GMT+5:30, GMT+0</td>
<td>6</td>
</tr>
<tr>
<td></td>
<td>zzzz</td>
<td>GMT-08:00, GMT+05:30, GMT+00:00</td>
<td>2,6</td>
</tr>
<tr>
<td>Seconds timestamp</td>
<td>t</td>
<td>512969520</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>tt</td>
<td>...</td>
<td>3,7</td>
</tr>
<tr>
<td>Milliseconds timestamp</td>
<td>T</td>
<td>512969520900</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>TT</td>
<td>...</td>
<td>3,7</td>
</tr>
<tr>
<td>Long localized date</td>
<td>P</td>
<td>04/29/1453</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PP</td>
<td>Apr 29, 1453</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PPP</td>
<td>April 29th, 1453</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PPPP</td>
<td>Friday, April 29th, 1453</td>
<td>2,7</td>
</tr>
<tr>
<td>Long localized time</td>
<td>p</td>
<td>12:00 AM</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>pp</td>
<td>12:00:00 AM</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>ppp</td>
<td>12:00:00 AM GMT+2</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>pppp</td>
<td>12:00:00 AM GMT+02:00</td>
<td>2,7</td>
</tr>
<tr>
<td>Combination of date and time</td>
<td>Pp</td>
<td>04/29/1453, 12:00 AM</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PPpp</td>
<td>Apr 29, 1453, 12:00:00 AM</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PPPppp</td>
<td>April 29th, 1453 at ...</td>
<td>7</td>
</tr>
<tr>
<td></td>
<td>PPPPpppp</td>
<td>Friday, April 29th, 1453 at ...</td>
<td>2,7</td>
</tr>
</tbody>
</table>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| date | <code>Date</code> \| <code>number</code> \| <code>string</code> | <p>원래 날짜</p> |
| format | <code>string</code> | <p>변환할 형식</p> |

**Example**  
```js
// Represent 11 February 2014 in middle-endian format:
var result = utils.dateFormat(new Date(2014, 1, 11), 'MM/dd/yyyy')
//=> '02/11/2014'
```
**Example**  
```js
// Represent 2 July 2014 in Esperanto:
import { eoLocale } from 'date-fns/locale/eo'
var result = utils.dateForma(new Date(2014, 6, 2), "do 'de' MMMM yyyy", {
  locale: eoLocale
})
//=> '2-a de julio 2014'
```
**Example**  
```js
// Escape string by single quote characters:
var result = utils.dateForma(new Date(2014, 6, 2, 15), "h 'o''clock'")
//=> "3 o'clock"
```
<a name="utils.dateISO"></a>

## utils.dateISO(value) ⇒ <code>Date</code>
<p>ISO 시간으로 Date로 변환하여 반환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| value | <code>Date</code> \| <code>Number</code> \| <code>String</code> | <p>시간 데이타</p> |

<a name="utils.dateSubtract"></a>

## utils.dateSubtract(date, duration) ⇒ <code>Date</code>
<p>duration 값 만큼 날짜를 앞으로 당깁니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| date | <code>Date</code> \| <code>number</code> | <p>원래 날짜</p> |
| duration | <code>utils.Duration</code> | <p>감소시킬 시간</p> |

<a name="utils.decodeSpecialChars"></a>

## utils.decodeSpecialChars(string) ⇒ <code>string</code>
<p>encoding 된 특수 문자를 변환하여 반환합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| string | <code>string</code> | <p>변환할 문자</p> |

<a name="utils.getBool"></a>

## utils.getBool(value, defaultValue) ⇒ <code>boolean</code>
<p>임의 값을 boolean 형태로 변환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Default | Description |
| --- | --- | --- | --- |
| value | <code>any</code> |  | <p>임의 값</p> |
| defaultValue | <code>boolean</code> | <code>false</code> | <p>기본값 정의</p> |

<a name="utils.getJSON"></a>

## utils.getJSON(data, defaultValue) ⇒ <code>string</code>
<p>JSON 객체를 JSON String 형태로 변환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Default | Description |
| --- | --- | --- | --- |
| data | <code>Object</code> |  | <p>JSON 객체</p> |
| defaultValue | <code>string</code> | <code>&quot;{}&quot;</code> |  |

<a name="utils.is"></a>

## utils.is(type, [value], [passLike]) ⇒ <code>boolean</code>
<p>특정 타입인지 여부를 체크합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| type | <code>utils.Types</code> | <p>체크할 타입</p> |
| [value] | <code>any</code> | <p>값</p> |
| [passLike] | <code>boolean</code> | <p>유사타입 허용</p> |

<a name="utils.numberFormat"></a>

## utils.numberFormat(value) ⇒ <code>string</code>
<p>숫자를 포멧팅 하여 결과를 반환합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| value | <code>number</code> \| <code>string</code> | <p>값</p> |

<a name="utils.paging"></a>

## utils.paging(options) ⇒ [<code>Paging</code>](#Paging)
<p>Page Data를 Paging 객체로 변환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type |
| --- | --- |
| options | [<code>PagingParameters</code>](#PagingParameters) | 

<a name="utils.parseJSON"></a>

## utils.parseJSON(jsonValue, defaultValue) ⇒ <code>Object</code>
<p>JSON String 값을 JSON 객체로 변환하여 반환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Default |
| --- | --- | --- |
| jsonValue | <code>string</code> |  | 
| defaultValue | <code>Object</code> | <code>{}</code> | 

<a name="utils.passwordStrength"></a>

## utils.passwordStrength(value) ⇒ <code>number</code>
<p>비밀번호 강도를 빠르게 체크합니다.</p>
<p>Integer from 0-4</p>
<p>0 위험함: 위험한 암호. (guesses &lt; 10^3)</p>
<p>1 안전하지 않음: 온라인 공격으로 부터 안전하지 못함. (guesses &lt; 10^6)</p>
<p>2 보통: 무자비한 온라인 공격으로 부터는 안전하지 못함. (guesses &lt; 10^8)</p>
<p>3 중간: 오프라인 슬로우 해시 시나리오부터 중간 수준으로 보호함. (guesses &lt; 10^10)</p>
<p>4 안전함: 오프라인 슬로우 해시 시나리오부터 안전하게 보호함. (guesses &gt;= 10^10)</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| value | <code>number</code> \| <code>string</code> | <p>값</p> |

<a name="utils.queryString"></a>

## utils.queryString(value) ⇒ <code>string</code>
<p>객체를 QueryString 으로 문자열화 합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| value | <code>object</code> | <p>값</p> |

<a name="utils.split"></a>

## utils.split(string, delimiter, options) ⇒ <code>string</code>
<p>delimiter 값으로 분리해서 배열로 변경</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Default | Description |
| --- | --- | --- | --- |
| string | <code>Array.&lt;string&gt;</code> \| <code>string</code> |  | <p>문자열</p> |
| delimiter | <code>string</code> | <code>&quot;,&quot;</code> | <p>구분자</p> |
| options | [<code>SplitOptions</code>](#SplitOptions) |  | <p>추가 옵션</p> |

<a name="utils.stripSlashes"></a>

## utils.stripSlashes(string) ⇒ <code>string</code>
<p>백슬레시가 제거된 문자열을 반환합니다.</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| string | <code>string</code> | <p>문자열</p> |

<a name="utils.timestamp"></a>

## utils.timestamp() ⇒ <code>Date</code>
<p>UTC 시간 값 반환</p>

**Kind**: static method of [<code>utils</code>](#utils)  
<a name="utils.truncate"></a>

## utils.truncate(string, maxLength, options) ⇒ <code>string</code>
<p>32자의 임의 문자조합 값을 반환</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type | Description |
| --- | --- | --- |
| string | <code>string</code> | <p>문자열</p> |
| maxLength | <code>number</code> | <p>최대 길이</p> |
| options | [<code>TruncateOptions</code>](#TruncateOptions) | <p>추가 옵션</p> |

<a name="utils.uuid"></a>

## utils.uuid() ⇒ <code>string</code>
<p>32자의 임의 문자조합 값을 반환</p>

**Kind**: static method of [<code>utils</code>](#utils)  
<a name="utils.queue"></a>

## utils.queue(options) ⇒ [<code>Queue</code>](#Queue)
<p>Queue 모듈</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type |
| --- | --- |
| options | [<code>QueueOptions</code>](#QueueOptions) | 

<a name="utils.timeout"></a>

## utils.timeout(component, key, callback, milliseconds) ⇒ [<code>Timeout</code>](#Timeout)
<p>Timeout 모듈</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 


* [.timeout(component, key, callback, milliseconds)](#utils.timeout) ⇒ [<code>Timeout</code>](#Timeout)
    * [.getTimeout(component)](#utils.timeout.getTimeout) ⇒ [<code>Timeout</code>](#Timeout)
    * [.call(component, key, callback, milliseconds, [options])](#utils.timeout.call) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.once(component, key, callback, milliseconds, [options])](#utils.timeout.once) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.interval(component, key, callback, milliseconds, [options])](#utils.timeout.interval) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.has(component, key)](#utils.timeout.has) ⇒ <code>boolean</code>
    * [.clear(component, [keys])](#utils.timeout.clear) ⇒ <code>boolean</code>
    * [.sleep(milliseconds)](#utils.timeout.sleep)

<a name="utils.timeout.getTimeout"></a>

### utils.timeout.getTimeout(component) ⇒ [<code>Timeout</code>](#Timeout)
<p>해당 Component 에 Timeout 관리 객체 반환</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 

<a name="utils.timeout.call"></a>

### utils.timeout.call(component, key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간 뒤 실행한다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="utils.timeout.once"></a>

### utils.timeout.once(component, key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간 뒤 1회 실행한다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="utils.timeout.interval"></a>

### utils.timeout.interval(component, key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간텀으로 반복 실행한다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="utils.timeout.has"></a>

### utils.timeout.has(component, key) ⇒ <code>boolean</code>
<p>해당 Component의 Timeout 관리 객체에 key 로 선언된 TimeoutInstance 가 있는지 체크한다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| key | <code>string</code> | 

<a name="utils.timeout.clear"></a>

### utils.timeout.clear(component, [keys]) ⇒ <code>boolean</code>
<p>해당 Component의 Timeout 관리 객체에 선언한 keys 만큼 TimeoutInstance 를 제거한다.</p>
<p>만약 keys 값을 던지지 않으면 모든 TimeoutInstances 를 제거한다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| component | <code>any</code> | 
| [keys] | <code>Array.&lt;string&gt;</code> | 

<a name="utils.timeout.sleep"></a>

### utils.timeout.sleep(milliseconds)
<p>특정 시간동안 중지합니다.</p>

**Kind**: static method of [<code>timeout</code>](#utils.timeout)  

| Param | Type |
| --- | --- |
| milliseconds | <code>number</code> | 

<a name="utils.ui"></a>

## utils.ui(ref) ⇒ [<code>UIView</code>](#UIView)
<p>UI 모듈</p>

**Kind**: static method of [<code>utils</code>](#utils)  

| Param | Type |
| --- | --- |
| ref | <code>any</code> | 


* [.ui(ref)](#utils.ui) ⇒ [<code>UIView</code>](#UIView)
    * [.getElement(ref)](#utils.ui.getElement) ⇒ <code>Element</code>
    * [.getRect(ref)](#utils.ui.getRect) ⇒ [<code>UIRect</code>](#UIRect)
    * [.getRectEdge(ref)](#utils.ui.getRectEdge) ⇒ [<code>UIRectEdge</code>](#UIRectEdge)

<a name="utils.ui.getElement"></a>

### utils.ui.getElement(ref) ⇒ <code>Element</code>
<p>Element 객체를 찾아서 반환한다.</p>

**Kind**: static method of [<code>ui</code>](#utils.ui)  

| Param | Type |
| --- | --- |
| ref | <code>any</code> | 

<a name="utils.ui.getRect"></a>

### utils.ui.getRect(ref) ⇒ [<code>UIRect</code>](#UIRect)
<p>Element 객체를 찾아서 UIRect를 반환한다.</p>

**Kind**: static method of [<code>ui</code>](#utils.ui)  

| Param | Type |
| --- | --- |
| ref | <code>any</code> | 

<a name="utils.ui.getRectEdge"></a>

### utils.ui.getRectEdge(ref) ⇒ [<code>UIRectEdge</code>](#UIRectEdge)
<p>Element 객체를 찾아서 UIRectEdge를 반환한다.</p>

**Kind**: static method of [<code>ui</code>](#utils.ui)  

| Param | Type |
| --- | --- |
| ref | <code>any</code> | 

<a name="Duration"></a>

# Duration : <code>enum</code>
<p>시간 계산 단위:</p>
<table>
<thead>
<tr>
<th>Key</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>years</td>
<td>년도</td>
</tr>
<tr>
<td>months</td>
<td>월</td>
</tr>
<tr>
<td>weeks</td>
<td>주</td>
</tr>
<tr>
<td>days</td>
<td>일</td>
</tr>
<tr>
<td>hours</td>
<td>시간</td>
</tr>
<tr>
<td>minutes</td>
<td>분</td>
</tr>
<tr>
<td>seconds</td>
<td>초</td>
</tr>
</tbody>
</table>

**Kind**: global enum  
<a name="DateUnit"></a>

# DateUnit : <code>enum</code>
<p>시간 계산 단위:</p>
<table>
<thead>
<tr>
<th>Unit</th>
<th>Raw</th>
</tr>
</thead>
<tbody>
<tr>
<td>Year</td>
<td>&quot;year&quot;</td>
</tr>
<tr>
<td>Month</td>
<td>&quot;month&quot;</td>
</tr>
<tr>
<td>Week</td>
<td>&quot;week&quot;</td>
</tr>
<tr>
<td>Day</td>
<td>&quot;day&quot;</td>
</tr>
<tr>
<td>Hour</td>
<td>&quot;hour&quot;</td>
</tr>
<tr>
<td>Minute</td>
<td>&quot;minute&quot;</td>
</tr>
<tr>
<td>Second</td>
<td>&quot;second&quot;</td>
</tr>
<tr>
<td>Millisecond</td>
<td>&quot;millisecond&quot;</td>
</tr>
</tbody>
</table>

**Kind**: global enum  
<a name="Types"></a>

# Types : <code>enum</code>
<p>체크가능한 타입:</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Raw</th>
</tr>
</thead>
<tbody>
<tr>
<td>Boolean</td>
<td>&quot;boolean&quot;</td>
</tr>
<tr>
<td>Date</td>
<td>&quot;date&quot;</td>
</tr>
<tr>
<td>Number</td>
<td>&quot;number&quot;</td>
</tr>
<tr>
<td>Array</td>
<td>&quot;array&quot;</td>
</tr>
<tr>
<td>Object</td>
<td>&quot;object&quot;</td>
</tr>
<tr>
<td>String</td>
<td>&quot;string&quot;</td>
</tr>
<tr>
<td>JSON</td>
<td>&quot;json&quot;</td>
</tr>
<tr>
<td>Email</td>
<td>&quot;email&quot;</td>
</tr>
<tr>
<td>Phone</td>
<td>&quot;phone&quot;</td>
</tr>
<tr>
<td>Mobile</td>
<td>&quot;mobile&quot;</td>
</tr>
</tbody>
</table>

**Kind**: global enum  
<a name="TimeoutInstanceType"></a>

# TimeoutInstanceType : <code>enum</code>
<p>타입 범위:</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Raw</th>
</tr>
</thead>
<tbody>
<tr>
<td>Timeout</td>
<td>&quot;timeout&quot;</td>
</tr>
<tr>
<td>Interval</td>
<td>&quot;interval&quot;</td>
</tr>
</tbody>
</table>

**Kind**: global enum  
<a name="Paging"></a>

# Paging : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| page | <code>number</code> | 
| size | <code>number</code> | 

<a name="PagingParameters"></a>

# PagingParameters : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| page | <code>number</code> | <code>1</code> | 
| size | <code>number</code> | <code>20</code> | 

<a name="SplitOptions"></a>

# SplitOptions : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| maxLength | <code>number</code> |  |  |
| clean | <code>boolean</code> | <code>true</code> | <p>배열인 경우 있는 값만 정리</p> |
| defaultValue | <code>Array.&lt;string&gt;</code> | <code>[</code> | <p>예외 케이스가 발생하는 경우 기본 값 출력</p> |

<a name="TruncateOptions"></a>

# TruncateOptions : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| suffix | <code>string</code> | <code>&quot;...&quot;</code> | 

<a name="QueueOptions"></a>

# QueueOptions : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| onTask | <code>function</code> |  | 
| jobs | <code>Array.&lt;any&gt;</code> | <code>[</code> | 
| interval | <code>number</code> | <code>0</code> | 
| autoStart | <code>boolean</code> | <code>false</code> | 

<a name="Queue"></a>

# Queue
<p>queue 에 쌓인 task 수를 반환한다.</p>

**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| length | <code>number</code> | 


* [Queue](#Queue)
    * [.add()](#Queue+add)
    * [.remove(id)](#Queue+remove)
    * [.reverse()](#Queue+reverse)
    * [.start()](#Queue+start)
    * [.stop()](#Queue+stop)

<a name="Queue+add"></a>

## queue.add()
<p>queue 를 추가한다.</p>

**Kind**: instance method of [<code>Queue</code>](#Queue)  
<a name="Queue+remove"></a>

## queue.remove(id)
<p>queue id 로 관리중인 queue 를 제거한다.</p>

**Kind**: instance method of [<code>Queue</code>](#Queue)  

| Param | Type |
| --- | --- |
| id | <code>string</code> | 

<a name="Queue+reverse"></a>

## queue.reverse()
<p>queue 순서를 뒤집는다.</p>

**Kind**: instance method of [<code>Queue</code>](#Queue)  
<a name="Queue+start"></a>

## queue.start()
<p>queue 를 시작한다.</p>

**Kind**: instance method of [<code>Queue</code>](#Queue)  
<a name="Queue+stop"></a>

## queue.stop()
<p>queue 를 중지한다.</p>

**Kind**: instance method of [<code>Queue</code>](#Queue)  
<a name="ScrollToOptions"></a>

# ScrollToOptions : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| context | <code>any</code> |  | 
| type | <code>string</code> | <code>&quot;timeout&quot;</code> | 

<a name="TimeoutOptions"></a>

# TimeoutOptions : <code>Object</code>
**Kind**: global typedef  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| context | <code>Context</code> |  | 
| type | <code>string</code> | <code>&quot;timeout&quot;</code> | 

<a name="TimeoutInstance"></a>

# TimeoutInstance
<p>Timeout Handler 를 실행하는 객체</p>

**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| instance | <code>NodeJS.Timeout</code> | 
| callCount | <code>number</code> | 
| type | <code>string</code> | 


* [TimeoutInstance](#TimeoutInstance)
    * [.getInstance()](#TimeoutInstance+getInstance) ⇒ <code>NodeJS.Timeout</code> \| <code>null</code>
    * [.getType()](#TimeoutInstance+getType) ⇒ [<code>TimeoutInstanceType</code>](#TimeoutInstanceType)
    * [.execute()](#TimeoutInstance+execute)
    * [.call()](#TimeoutInstance+call)
    * [.clear()](#TimeoutInstance+clear)

<a name="TimeoutInstance+getInstance"></a>

## timeoutInstance.getInstance() ⇒ <code>NodeJS.Timeout</code> \| <code>null</code>
<p>NodeJS.Timeout 생성 객체</p>

**Kind**: instance method of [<code>TimeoutInstance</code>](#TimeoutInstance)  
<a name="TimeoutInstance+getType"></a>

## timeoutInstance.getType() ⇒ [<code>TimeoutInstanceType</code>](#TimeoutInstanceType)
<p>type 을 반환한다.</p>

**Kind**: instance method of [<code>TimeoutInstance</code>](#TimeoutInstance)  
<a name="TimeoutInstance+execute"></a>

## timeoutInstance.execute()
<p>handler 를 실행한다.</p>

**Kind**: instance method of [<code>TimeoutInstance</code>](#TimeoutInstance)  
<a name="TimeoutInstance+call"></a>

## timeoutInstance.call()
<p>handler 를 주어진 시간에 따라 실행한다.</p>

**Kind**: instance method of [<code>TimeoutInstance</code>](#TimeoutInstance)  
<a name="TimeoutInstance+clear"></a>

## timeoutInstance.clear()
<p>실행중인 timeout 을 제거한다.</p>

**Kind**: instance method of [<code>TimeoutInstance</code>](#TimeoutInstance)  
<a name="Timeout"></a>

# Timeout
<p>TimeoutInstance 를 key 로 등록하고 관리한다.</p>

**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| keys | <code>Array.&lt;string&gt;</code> | 


* [Timeout](#Timeout)
    * [.getKeys()](#Timeout+getKeys) ⇒ <code>Array.&lt;string&gt;</code>
    * [.getInstances(keys)](#Timeout+getInstances) ⇒ [<code>Array.&lt;TimeoutInstance&gt;</code>](#TimeoutInstance)
    * [.has(key)](#Timeout+has) ⇒ <code>boolean</code>
    * [.get(key)](#Timeout+get) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.set(key, instance)](#Timeout+set)
    * [.expire(key)](#Timeout+expire)
    * [.delete(key)](#Timeout+delete)
    * [.clear([keys])](#Timeout+clear) ⇒ <code>boolean</code>
    * [.call(key, callback, milliseconds, [options])](#Timeout+call) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.once(key, callback, milliseconds, [options])](#Timeout+once) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.interval(key, callback, milliseconds, [options])](#Timeout+interval) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
    * [.sleep(milliseconds)](#Timeout+sleep)

<a name="Timeout+getKeys"></a>

## timeout.getKeys() ⇒ <code>Array.&lt;string&gt;</code>
<p>등록된 keys를 배열로 반환한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  
<a name="Timeout+getInstances"></a>

## timeout.getInstances(keys) ⇒ [<code>Array.&lt;TimeoutInstance&gt;</code>](#TimeoutInstance)
<p>선언한 keys 만큼 TimeoutInstances 를 반환한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| keys | <code>Array.&lt;string&gt;</code> | 

<a name="Timeout+has"></a>

## timeout.has(key) ⇒ <code>boolean</code>
<p>특정 key의 TimeoutInstance 가 존재하는지 확인한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 

<a name="Timeout+get"></a>

## timeout.get(key) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>특정 key의 TimeoutInstance 를 반환한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 

<a name="Timeout+set"></a>

## timeout.set(key, instance)
<p>TimeoutInstance 를 특정 key로 설정한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 
| instance | [<code>TimeoutInstance</code>](#TimeoutInstance) | 

<a name="Timeout+expire"></a>

## timeout.expire(key)
<p>특정 key의 TimeoutInstance 를 만료한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 

<a name="Timeout+delete"></a>

## timeout.delete(key)
<p>특정 key의 TimeoutInstance 를 제거한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 

<a name="Timeout+clear"></a>

## timeout.clear([keys]) ⇒ <code>boolean</code>
<p>선언한 keys 만큼 TimeoutInstance 를 제거한다.</p>
<p>만약 keys 값을 던지지 않으면 모든 TimeoutInstances 를 제거한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| [keys] | <code>Array.&lt;string&gt;</code> | 

<a name="Timeout+call"></a>

## timeout.call(key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간 뒤 실행한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="Timeout+once"></a>

## timeout.once(key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간 뒤 1회 실행한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="Timeout+interval"></a>

## timeout.interval(key, callback, milliseconds, [options]) ⇒ [<code>TimeoutInstance</code>](#TimeoutInstance)
<p>TimeoutInstance 를 생성하고 주어진 시간텀으로 반복 실행한다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| key | <code>string</code> | 
| callback | <code>function</code> | 
| milliseconds | <code>number</code> | 
| [options] | [<code>TimeoutOptions</code>](#TimeoutOptions) | 

<a name="Timeout+sleep"></a>

## timeout.sleep(milliseconds)
<p>특정 시간동안 중지합니다.</p>

**Kind**: instance method of [<code>Timeout</code>](#Timeout)  

| Param | Type |
| --- | --- |
| milliseconds | <code>number</code> | 

<a name="UIRect"></a>

# UIRect : <code>Object</code>
<p>직사각형의 위치와 치수를 포함하는 구조</p>

**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| x | <code>number</code> | 
| y | <code>number</code> | 
| width | <code>number</code> | 
| height | <code>number</code> | 

<a name="UIRectEdge"></a>

# UIRectEdge : <code>Object</code>
<p>직사각형의 가장자리를 설정하는 좌표</p>

**Kind**: global typedef  
**Properties**

| Name | Type |
| --- | --- |
| top | <code>number</code> | 
| right | <code>number</code> | 
| bottom | <code>number</code> | 
| left | <code>number</code> | 

<a name="UIView"></a>

# UIView : <code>Object</code>
<p>모든 Element 에서 좌표와 치수를 추출할 수 있는 객체</p>

**Kind**: global typedef