1.0.2 • Published 11 months ago

vue-hangul-typing v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Hangul Typing Component

Codecov

https://github.com/user-attachments/assets/31338d1b-fcae-4be1-996a-9043d6d2a3f4

한글 자음 모음 결합에 타이핑 효과를 제공하는 Vue.js 컴포넌트로, 커스터마이징 가능한 타이핑 속도, 사람처럼 보이는 타이핑 간격, 텍스트 추가, 애니메이션 반복, 사용자 정의 스타일 및 클래스를 지원합니다.

특징

  • 커스터마이징 가능한 타이핑 속도 및 간격
  • 사람처럼 보이는 타이핑 효과
  • 애니메이션 반복
  • 사용자 정의 스타일 및 클래스 적용
  • 백스페이스 및 줄바꿈("\b", "\n") 지원
  • 타이핑 종료 후 커서 유지 옵션

설치

컴포넌트를 설치하려면 npm을 사용할 수 있습니다.

npm i vue-hangul-typing

Props

PropTypeDefaultDescription
textStringnull표시할 텍스트입니다. 제공되지 않으면 지정된 선택기의 텍스트를 사용합니다.
intervalTypeNumber120각 문자를 타이핑하는 간격입니다.
humanizeNumber⎪Functionnull간격을 랜덤화하여 사람처럼 보이도록 합니다. Number가 제공되면 0부터 해당 숫자 사이의 랜덤 값을 간격에 추가합니다. Function이 제공되면 기본 간격을 인수로 받고 새로운 간격을 반환해야 합니다.
selectorStringnull텍스트 내용을 사용할 요소를 선택하는 CSS 선택기입니다.
customClassString""타이핑 요소에 적용할 사용자 정의 클래스입니다.
customStyleObject{}타이핑 요소에 적용할 사용자 정의 스타일입니다.
showCursorBooleanfalse타이핑 동안 커서를 표시할지 여부를 설정합니다.
cursorAfterTypingBooleanfalse타이핑 종료 후 커서를 유지할지 여부를 설정합니다.
repeatBooleanfalse타이핑 애니메이션을 반복할지 여부를 설정합니다.

Events

이 컴포넌트는 타이핑 상태와 관련된 몇 가지 이벤트를 제공합니다. 이 이벤트들은 컴포넌트 외부에서 타이핑 과정에 반응하기 위해 사용할 수 있습니다.

EventsDescription
typing-start타이핑이 시작될 때 발생합니다.
typing-end타이핑이 완료될 때 발생합니다.

이벤트는 다음과 같이 사용할 수 있습니다.

<template>
  <div class="example-container">
    <h2>Typing Effect with Time Tracking</h2>
    <div class="typing-box">
      <HangulTyping
        text="이 예제는 타이핑 소요 시간을 계산합니다."
        :showCursor="true"
        @typing-end="handleTypingEnd"
        @typing-start="handleTypingStart"
      />
    </div>
    <p class="computed-time" v-if="typingCompleted">
      타이핑 완료: {{ typingTime }}초 소요되었습니다!
    </p>
  </div>
</template>

<script setup lang="ts">
import { ref } from "vue";
import HangulTyping from 'vue-hangul-typing';

const typingCompleted = ref(false);
const typingTime = ref(0);
let startTime = 0;

const handleTypingStart = () => {
  console.log("타이핑 시작됨"); // 디버깅을 위한 로그 출력
  startTime = Date.now();
  typingCompleted.value = false;
};

const handleTypingEnd = () => {
  console.log("타이핑 종료됨"); // 디버깅을 위한 로그 출력
  if (startTime === 0) {
    console.error("타이핑이 시작되지 않았습니다.");
    return;
  }

  const endTime = Date.now();
  typingTime.value = parseFloat(((endTime - startTime) / 1000).toFixed(2));
  typingCompleted.value = true;
  startTime = 0; // reset
};
</script>

Usage

프로젝트에서 컴포넌트를 import하여 사용합니다.

기본 사용법

<template>
  <div class="example-container">
    <h2>Basic Typing Effect</h2>
    <div class="typing-box">
      <HangulTyping
        text="안녕하세요.\n기본 예제입니다."
      />
    </div>
  </div>
</template>

타이핑 효과 중간에 일시정지 및 재개

<template>
  <div class="example-container">
    <h2>Typing Effect with Pause and Resume</h2>
    <div class="typing-box">
      <HangulTyping
        ref="HangulTyping"
        text="타이핑 효과를 일시정지하고 다시 시작합니다."
        :intervalType="50"
        :humanize="20"
        :showCursor="true"
      />
    </div>
    <div class="button-group">
      <button @click="pauseTyping">Pause</button>
      <button @click="resumeTyping">Resume</button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from "vue";
import HangulTyping from 'vue-hangul-typing';

const pauseTyping = () => {
  HangulTyping.value.pauseTyping();
};

const resumeTyping = () => {
  HangulTyping.value.resumeTyping();
};

</script>

컴포넌트 외부의 특정 요소에서 텍스트를 선택하여 타이핑 효과를 적용

<template>
  <div class="example-container">
    <h2>Typing Effect with Selector</h2>
    <div class="source-text" id="source-text">
      이 텍스트는 외부 요소에서 가져와 타이핑 됩니다.
    </div>
    <div class="typing-box">
      <HangulTyping
        selector="#source-text"
        :intervalType="100"
        :showCursor="true"
        :cursorAfterTyping="true"
      />
    </div>
  </div>
</template>

Contributing

이 프로젝트에 기여하고 싶다면, GitHub 저장소에서 issue나 pull request를 제출해주세요.

License

This project is licensed under the MIT License.

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago