@ehfuse/react-vfx 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +27 -0
  2. package/dist/VfxTyping.d.ts +34 -0
  3. package/dist/VfxTyping.d.ts.map +1 -0
  4. package/dist/index.d.ts +2 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.esm.js +103 -99
  7. package/dist/index.esm.js.map +4 -4
  8. package/dist/index.js +124 -120
  9. package/dist/index.js.map +4 -4
  10. package/dist/types.d.ts +19 -0
  11. package/dist/types.d.ts.map +1 -1
  12. package/package.json +1 -4
  13. package/dist/VfxDiv.backup.d.ts +0 -28
  14. package/dist/VfxDiv.backup.d.ts.map +0 -1
  15. package/dist/VfxText.backup.d.ts +0 -28
  16. package/dist/VfxText.backup.d.ts.map +0 -1
  17. package/dist/border-effects/dash-flow.d.ts +0 -11
  18. package/dist/border-effects/dash-flow.d.ts.map +0 -1
  19. package/dist/border-effects/dash-rotate.d.ts +0 -12
  20. package/dist/border-effects/dash-rotate.d.ts.map +0 -1
  21. package/dist/border-effects/index.d.ts +0 -16
  22. package/dist/border-effects/index.d.ts.map +0 -1
  23. package/dist/border-effects/pulse.d.ts +0 -11
  24. package/dist/border-effects/pulse.d.ts.map +0 -1
  25. package/dist/border-effects/sparkle.d.ts +0 -12
  26. package/dist/border-effects/sparkle.d.ts.map +0 -1
  27. package/dist/border-effects/special.d.ts +0 -8
  28. package/dist/border-effects/special.d.ts.map +0 -1
  29. package/dist/border-effects/types.d.ts +0 -25
  30. package/dist/border-effects/types.d.ts.map +0 -1
  31. package/dist/particles/balloons.d.ts +0 -6
  32. package/dist/particles/balloons.d.ts.map +0 -1
  33. package/dist/particles/bubbles.d.ts +0 -7
  34. package/dist/particles/bubbles.d.ts.map +0 -1
  35. package/dist/particles/coins.d.ts +0 -6
  36. package/dist/particles/coins.d.ts.map +0 -1
  37. package/dist/particles/confetti.d.ts +0 -6
  38. package/dist/particles/confetti.d.ts.map +0 -1
  39. package/dist/particles/dust.d.ts +0 -6
  40. package/dist/particles/dust.d.ts.map +0 -1
  41. package/dist/particles/electric.d.ts +0 -6
  42. package/dist/particles/electric.d.ts.map +0 -1
  43. package/dist/particles/explosion.d.ts +0 -6
  44. package/dist/particles/explosion.d.ts.map +0 -1
  45. package/dist/particles/firefly.d.ts +0 -6
  46. package/dist/particles/firefly.d.ts.map +0 -1
  47. package/dist/particles/fireworks.d.ts +0 -6
  48. package/dist/particles/fireworks.d.ts.map +0 -1
  49. package/dist/particles/fog.d.ts +0 -6
  50. package/dist/particles/fog.d.ts.map +0 -1
  51. package/dist/particles/hearts.d.ts +0 -9
  52. package/dist/particles/hearts.d.ts.map +0 -1
  53. package/dist/particles/index.d.ts +0 -30
  54. package/dist/particles/index.d.ts.map +0 -1
  55. package/dist/particles/leaves.d.ts +0 -6
  56. package/dist/particles/leaves.d.ts.map +0 -1
  57. package/dist/particles/lightning.d.ts +0 -6
  58. package/dist/particles/lightning.d.ts.map +0 -1
  59. package/dist/particles/magic.d.ts +0 -6
  60. package/dist/particles/magic.d.ts.map +0 -1
  61. package/dist/particles/matrix.d.ts +0 -6
  62. package/dist/particles/matrix.d.ts.map +0 -1
  63. package/dist/particles/portal.d.ts +0 -6
  64. package/dist/particles/portal.d.ts.map +0 -1
  65. package/dist/particles/rain.d.ts +0 -6
  66. package/dist/particles/rain.d.ts.map +0 -1
  67. package/dist/particles/sakura.d.ts +0 -6
  68. package/dist/particles/sakura.d.ts.map +0 -1
  69. package/dist/particles/smoke.d.ts +0 -6
  70. package/dist/particles/smoke.d.ts.map +0 -1
  71. package/dist/particles/snow.d.ts +0 -6
  72. package/dist/particles/snow.d.ts.map +0 -1
  73. package/dist/particles/sparkle.d.ts +0 -6
  74. package/dist/particles/sparkle.d.ts.map +0 -1
  75. package/dist/particles/stars.d.ts +0 -7
  76. package/dist/particles/stars.d.ts.map +0 -1
  77. package/dist/particles/types.d.ts +0 -40
  78. package/dist/particles/types.d.ts.map +0 -1
  79. package/dist/slide-effects/drift.d.ts +0 -12
  80. package/dist/slide-effects/drift.d.ts.map +0 -1
  81. package/dist/slide-effects/fade.d.ts +0 -10
  82. package/dist/slide-effects/fade.d.ts.map +0 -1
  83. package/dist/slide-effects/flip.d.ts +0 -8
  84. package/dist/slide-effects/flip.d.ts.map +0 -1
  85. package/dist/slide-effects/index.d.ts +0 -28
  86. package/dist/slide-effects/index.d.ts.map +0 -1
  87. package/dist/slide-effects/rotate.d.ts +0 -9
  88. package/dist/slide-effects/rotate.d.ts.map +0 -1
  89. package/dist/slide-effects/slide.d.ts +0 -9
  90. package/dist/slide-effects/slide.d.ts.map +0 -1
  91. package/dist/slide-effects/special.d.ts +0 -10
  92. package/dist/slide-effects/special.d.ts.map +0 -1
  93. package/dist/slide-effects/types.d.ts +0 -25
  94. package/dist/slide-effects/types.d.ts.map +0 -1
  95. package/dist/slide-effects/zoom.d.ts +0 -11
  96. package/dist/slide-effects/zoom.d.ts.map +0 -1
  97. package/dist/text-effects/blink.d.ts +0 -6
  98. package/dist/text-effects/blink.d.ts.map +0 -1
  99. package/dist/text-effects/blur.d.ts +0 -6
  100. package/dist/text-effects/blur.d.ts.map +0 -1
  101. package/dist/text-effects/bounce.d.ts +0 -6
  102. package/dist/text-effects/bounce.d.ts.map +0 -1
  103. package/dist/text-effects/fade.d.ts +0 -6
  104. package/dist/text-effects/fade.d.ts.map +0 -1
  105. package/dist/text-effects/flowing.d.ts +0 -6
  106. package/dist/text-effects/flowing.d.ts.map +0 -1
  107. package/dist/text-effects/fly-in.d.ts +0 -6
  108. package/dist/text-effects/fly-in.d.ts.map +0 -1
  109. package/dist/text-effects/glitch.d.ts +0 -6
  110. package/dist/text-effects/glitch.d.ts.map +0 -1
  111. package/dist/text-effects/index.d.ts +0 -28
  112. package/dist/text-effects/index.d.ts.map +0 -1
  113. package/dist/text-effects/jitter.d.ts +0 -6
  114. package/dist/text-effects/jitter.d.ts.map +0 -1
  115. package/dist/text-effects/neon.d.ts +0 -6
  116. package/dist/text-effects/neon.d.ts.map +0 -1
  117. package/dist/text-effects/pulse.d.ts +0 -11
  118. package/dist/text-effects/pulse.d.ts.map +0 -1
  119. package/dist/text-effects/rainbow.d.ts +0 -6
  120. package/dist/text-effects/rainbow.d.ts.map +0 -1
  121. package/dist/text-effects/shake.d.ts +0 -6
  122. package/dist/text-effects/shake.d.ts.map +0 -1
  123. package/dist/text-effects/spin.d.ts +0 -8
  124. package/dist/text-effects/spin.d.ts.map +0 -1
  125. package/dist/text-effects/swing.d.ts +0 -7
  126. package/dist/text-effects/swing.d.ts.map +0 -1
  127. package/dist/text-effects/types.d.ts +0 -22
  128. package/dist/text-effects/types.d.ts.map +0 -1
  129. package/dist/text-effects/wave.d.ts +0 -6
  130. package/dist/text-effects/wave.d.ts.map +0 -1
  131. package/dist/text-effects/zoom.d.ts +0 -6
  132. package/dist/text-effects/zoom.d.ts.map +0 -1
package/README.md CHANGED
@@ -12,6 +12,33 @@ MUI 없이 React에서 사용할 수 있는 시각 효과 라이브러리입니
12
12
  <VfxText title="Hello" effect="typing" isActive={true} />
13
13
  ```
14
14
 
15
+ ### VfxTyping (1.1.0)
16
+
17
+ 문장 안에 끼워 쓰는 타이핑. 한 번 치고 멈추고(반복은 `loop`), 안 나온 글자 자리를 미리 잡아 아래 내용이 들썩이지 않습니다.
18
+
19
+ ```tsx
20
+ import { VfxTyping, typingDuration } from "@ehfuse/react-vfx";
21
+
22
+ const opts = { speed: 45, maxDuration: 1400 };
23
+ <p aria-label={`${line1} ${line2}`}>
24
+ <VfxTyping text={line1} delay={300} caret="wait" ariaHidden {...opts} />
25
+ <VfxTyping text={line2} delay={300 + typingDuration(line1, opts) + 250} ariaHidden {...opts} />
26
+ </p>
27
+ ```
28
+
29
+ | prop | 기본 | 설명 |
30
+ | --- | --- | --- |
31
+ | `delay` | 0 | 시작 전 기다림(ms) |
32
+ | `speed` | 45 | 한 글자 간격(ms) |
33
+ | `maxDuration` | - | 한 줄을 이 시간(ms) 안에 끝내게(긴 글은 더 빨리) |
34
+ | `loop` | false | `true` 면 2초 쉬고 다시, 숫자면 그만큼 쉬고 |
35
+ | `caret` | `"typing"` | `"typing"` 치는 동안 · `"wait"` 시작 전부터 · `"always"` · `"none"` |
36
+ | `reserveSpace` | true | 안 나온 글자를 투명하게 미리 그린다 |
37
+ | `as` | `"span"` | `"span"` · `"div"` |
38
+ | `respectReducedMotion` | true | 움직임 줄이기면 처음부터 다 보인다 |
39
+
40
+ 커서 · 남은 글자 모양은 `.vfx-typing-caret` · `.vfx-typing-rest` 로 바꿉니다(패키지 스타일은 `:where()` 라 쓰는 쪽 CSS 가 이깁니다).
41
+
15
42
  ### VfxDiv
16
43
 
17
44
  컨테이너에 테두리 효과를 적용합니다.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * VfxTyping.tsx
3
+ * IMPORTANT NOTICE (중요 공지):
4
+ * This code is the intellectual property of 김영진 (Kim Young Jin).
5
+ * All rights reserved. Unauthorized copying, modification, distribution,
6
+ * or use of this code is strictly prohibited without prior written
7
+ * permission from the copyright holder.
8
+ * 이 코드는 김영진의 지적재산권입니다.
9
+ * 모든 권리가 보호됩니다. 저작권자의 사전 서면 허가 없이
10
+ * 무단 복사, 수정, 배포 또는 사용을 엄격히 금지합니다.
11
+ * For licensing inquiries, please contact (라이선스 문의):
12
+ * Email: ehfuse@gmail.com
13
+ */
14
+ import React from "react";
15
+ import type { VfxTypingProps } from "./types";
16
+ /**
17
+ * 글을 다 치는 데 걸리는 시간(ms, 지연 제외) — 다음 줄의 delay 를 정할 때 쓴다(같은 speed · maxDuration 을 준다).
18
+ * 글자 수는 화면에 보이는 글자 기준(이모지 · 결합 문자도 한 글자).
19
+ */
20
+ export declare const typingDuration: (text: string, options?: {
21
+ speed?: number;
22
+ maxDuration?: number;
23
+ }) => number;
24
+ /**
25
+ * 타이핑 효과(1.1.0) — 문장 안에 끼워 쓰는 한 줄 타이핑.
26
+ *
27
+ * - delay 뒤 한 글자씩. loop 를 주지 않으면 한 번 치고 멈춘다(VfxText effect="typing" 은 늘 반복한다).
28
+ * - reserveSpace(기본 켬): 아직 안 나온 글자를 투명하게 미리 그려 자리를 잡는다 — 치는 동안 줄 높이 · 아래 내용이 들썩이지 않는다.
29
+ * - caret: "typing"(치는 동안만, 기본) · "wait"(시작 전부터 치는 동안) · "always"(다 친 뒤에도) · "none".
30
+ * - 기기의 움직임 줄이기가 켜져 있으면 처음부터 다 보인다(respectReducedMotion, 기본 켬).
31
+ * - 글이 바뀌면 처음부터 다시 친다.
32
+ */
33
+ export declare const VfxTyping: React.FC<VfxTypingProps>;
34
+ //# sourceMappingURL=VfxTyping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VfxTyping.d.ts","sourceRoot":"","sources":["../src/VfxTyping.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA8B9C;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,UAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,KAAG,MAGrG,CAAC;AAKF;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqE9C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export { VfxText, addTextEffectStyles } from "./VfxText";
2
+ export { VfxTyping, typingDuration } from "./VfxTyping";
2
3
  export { VfxDiv, addBorderEffectStyles } from "./VfxDiv";
3
4
  export { VfxParticle } from "./VfxParticle";
4
5
  export { default as VfxSlide } from "./VfxSlide";
5
6
  export { default as VfxSlideItem } from "./VfxSlideItem";
6
7
  export { useTextEffect } from "./hooks/useTextEffect";
7
- export type { TextEffectType, BorderEffectType, VfxTextProps, VfxDivProps, ParticleEffectType, ParticleOptions, VfxParticleProps, SlideEffectType, DriftEffectType, VfxSlideItemProps, VfxSlideProps, } from "./types";
8
+ export type { TextEffectType, BorderEffectType, VfxTextProps, VfxTypingProps, VfxTypingCaret, VfxDivProps, ParticleEffectType, ParticleOptions, VfxParticleProps, SlideEffectType, DriftEffectType, VfxSlideItemProps, VfxSlideProps, } from "./types";
8
9
  export { slideEffectRegistry, driftEffectRegistry } from "./effects/slides";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}