@staticcanvas/typeflow 0.34.0 → 0.34.1

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 (160) hide show
  1. package/README.md +110 -516
  2. package/dist/typeflow-0.34.1.tar.gz +0 -0
  3. package/dist/typeflow-0.34.1.zip +0 -0
  4. package/dist/{typeflow/dist/typeflow.cjs → typeflow.cjs} +1 -1
  5. package/dist/{typeflow/dist/typeflow.esm.js → typeflow.esm.js} +1 -1
  6. package/dist/{typeflow/dist/typeflow.js → typeflow.js} +1 -1
  7. package/dist/{typeflow/dist/typeflow.mjs → typeflow.mjs} +1 -1
  8. package/jsr.jsonc +1 -1
  9. package/package.json +2 -56
  10. package/branding/dist/ico/typeflow-logo-16x16.ico +0 -0
  11. package/branding/dist/ico/typeflow-logo-256x256.ico +0 -0
  12. package/branding/dist/ico/typeflow-logo-32x32.ico +0 -0
  13. package/branding/dist/ico/typeflow-logo-48x48.ico +0 -0
  14. package/branding/dist/png/typeflow-logo-1024x1024.png +0 -0
  15. package/branding/dist/png/typeflow-logo-128x128.png +0 -0
  16. package/branding/dist/png/typeflow-logo-16x16.png +0 -0
  17. package/branding/dist/png/typeflow-logo-256x256.png +0 -0
  18. package/branding/dist/png/typeflow-logo-512x512.png +0 -0
  19. package/branding/dist/png/typeflow-logo-64x64.png +0 -0
  20. package/branding/dist/webp/typeflow-logo-1024x1024.webp +0 -0
  21. package/branding/dist/webp/typeflow-logo-128x128.webp +0 -0
  22. package/branding/dist/webp/typeflow-logo-16x16.webp +0 -0
  23. package/branding/dist/webp/typeflow-logo-256x256.webp +0 -0
  24. package/branding/dist/webp/typeflow-logo-32x32.webp +0 -0
  25. package/branding/dist/webp/typeflow-logo-48x48.webp +0 -0
  26. package/branding/dist/webp/typeflow-logo-512x512.webp +0 -0
  27. package/branding/dist/webp/typeflow-logo-64x64.webp +0 -0
  28. package/dist/typeflow/LICENSE +0 -21
  29. package/dist/typeflow/README.md +0 -231
  30. package/dist/typeflow/branding/dist/ico/typeflow-logo-16x16.ico +0 -0
  31. package/dist/typeflow/branding/dist/ico/typeflow-logo-256x256.ico +0 -0
  32. package/dist/typeflow/branding/dist/ico/typeflow-logo-32x32.ico +0 -0
  33. package/dist/typeflow/branding/dist/ico/typeflow-logo-48x48.ico +0 -0
  34. package/dist/typeflow/branding/dist/png/typeflow-logo-1024x1024.png +0 -0
  35. package/dist/typeflow/branding/dist/png/typeflow-logo-128x128.png +0 -0
  36. package/dist/typeflow/branding/dist/png/typeflow-logo-16x16.png +0 -0
  37. package/dist/typeflow/branding/dist/png/typeflow-logo-256x256.png +0 -0
  38. package/dist/typeflow/branding/dist/png/typeflow-logo-512x512.png +0 -0
  39. package/dist/typeflow/branding/dist/png/typeflow-logo-64x64.png +0 -0
  40. package/dist/typeflow/branding/dist/webp/typeflow-logo-1024x1024.webp +0 -0
  41. package/dist/typeflow/branding/dist/webp/typeflow-logo-128x128.webp +0 -0
  42. package/dist/typeflow/branding/dist/webp/typeflow-logo-16x16.webp +0 -0
  43. package/dist/typeflow/branding/dist/webp/typeflow-logo-256x256.webp +0 -0
  44. package/dist/typeflow/branding/dist/webp/typeflow-logo-32x32.webp +0 -0
  45. package/dist/typeflow/branding/dist/webp/typeflow-logo-48x48.webp +0 -0
  46. package/dist/typeflow/branding/dist/webp/typeflow-logo-512x512.webp +0 -0
  47. package/dist/typeflow/branding/dist/webp/typeflow-logo-64x64.webp +0 -0
  48. package/dist/typeflow/branding/gen-logo.ps1 +0 -14
  49. package/dist/typeflow/branding/typeflow-logo.svg +0 -162
  50. package/dist/typeflow/jsr.jsonc +0 -27
  51. package/dist/typeflow/package.json +0 -79
  52. package/dist/typeflow/src/typeflow-audio-presets.js +0 -137
  53. package/dist/typeflow/src/typeflow-caret.d.ts +0 -65
  54. package/dist/typeflow/src/typeflow-caret.js +0 -303
  55. package/dist/typeflow/src/typeflow-debug.d.ts +0 -34
  56. package/dist/typeflow/src/typeflow-debug.js +0 -223
  57. package/dist/typeflow/src/typeflow-extchars.d.ts +0 -28
  58. package/dist/typeflow/src/typeflow-extchars.js +0 -132
  59. package/dist/typeflow/src/typeflow-keystroke.d.ts +0 -28
  60. package/dist/typeflow/src/typeflow-keystroke.js +0 -220
  61. package/dist/typeflow/src/typeflow-metrics.d.ts +0 -38
  62. package/dist/typeflow/src/typeflow-metrics.js +0 -556
  63. package/dist/typeflow/src/typeflow-parallel.d.ts +0 -36
  64. package/dist/typeflow/src/typeflow-parallel.js +0 -157
  65. package/dist/typeflow/src/typeflow-webaudio.d.ts +0 -83
  66. package/dist/typeflow/src/typeflow-webaudio.js +0 -517
  67. package/dist/typeflow/src/typeflow.d.ts +0 -328
  68. package/dist/typeflow/src/typeflow.js +0 -2119
  69. /package/dist/{typeflow/dist/typeflow-caret.cjs → typeflow-caret.cjs} +0 -0
  70. /package/dist/{typeflow/dist/typeflow-caret.cjs.map → typeflow-caret.cjs.map} +0 -0
  71. /package/dist/{typeflow/dist/typeflow-caret.esm.js → typeflow-caret.esm.js} +0 -0
  72. /package/dist/{typeflow/dist/typeflow-caret.esm.js.map → typeflow-caret.esm.js.map} +0 -0
  73. /package/dist/{typeflow/dist/typeflow-caret.esm.min.js → typeflow-caret.esm.min.js} +0 -0
  74. /package/dist/{typeflow/dist/typeflow-caret.esm.min.js.map → typeflow-caret.esm.min.js.map} +0 -0
  75. /package/dist/{typeflow/dist/typeflow-caret.js → typeflow-caret.js} +0 -0
  76. /package/dist/{typeflow/dist/typeflow-caret.js.map → typeflow-caret.js.map} +0 -0
  77. /package/dist/{typeflow/dist/typeflow-caret.min.js → typeflow-caret.min.js} +0 -0
  78. /package/dist/{typeflow/dist/typeflow-caret.min.js.map → typeflow-caret.min.js.map} +0 -0
  79. /package/dist/{typeflow/dist/typeflow-caret.mjs → typeflow-caret.mjs} +0 -0
  80. /package/dist/{typeflow/dist/typeflow-caret.mjs.map → typeflow-caret.mjs.map} +0 -0
  81. /package/dist/{typeflow/dist/typeflow-debug.cjs → typeflow-debug.cjs} +0 -0
  82. /package/dist/{typeflow/dist/typeflow-debug.cjs.map → typeflow-debug.cjs.map} +0 -0
  83. /package/dist/{typeflow/dist/typeflow-debug.esm.js → typeflow-debug.esm.js} +0 -0
  84. /package/dist/{typeflow/dist/typeflow-debug.esm.js.map → typeflow-debug.esm.js.map} +0 -0
  85. /package/dist/{typeflow/dist/typeflow-debug.esm.min.js → typeflow-debug.esm.min.js} +0 -0
  86. /package/dist/{typeflow/dist/typeflow-debug.esm.min.js.map → typeflow-debug.esm.min.js.map} +0 -0
  87. /package/dist/{typeflow/dist/typeflow-debug.js → typeflow-debug.js} +0 -0
  88. /package/dist/{typeflow/dist/typeflow-debug.js.map → typeflow-debug.js.map} +0 -0
  89. /package/dist/{typeflow/dist/typeflow-debug.min.js → typeflow-debug.min.js} +0 -0
  90. /package/dist/{typeflow/dist/typeflow-debug.min.js.map → typeflow-debug.min.js.map} +0 -0
  91. /package/dist/{typeflow/dist/typeflow-debug.mjs → typeflow-debug.mjs} +0 -0
  92. /package/dist/{typeflow/dist/typeflow-debug.mjs.map → typeflow-debug.mjs.map} +0 -0
  93. /package/dist/{typeflow/dist/typeflow-extchars.cjs → typeflow-extchars.cjs} +0 -0
  94. /package/dist/{typeflow/dist/typeflow-extchars.cjs.map → typeflow-extchars.cjs.map} +0 -0
  95. /package/dist/{typeflow/dist/typeflow-extchars.esm.js → typeflow-extchars.esm.js} +0 -0
  96. /package/dist/{typeflow/dist/typeflow-extchars.esm.js.map → typeflow-extchars.esm.js.map} +0 -0
  97. /package/dist/{typeflow/dist/typeflow-extchars.esm.min.js → typeflow-extchars.esm.min.js} +0 -0
  98. /package/dist/{typeflow/dist/typeflow-extchars.esm.min.js.map → typeflow-extchars.esm.min.js.map} +0 -0
  99. /package/dist/{typeflow/dist/typeflow-extchars.js → typeflow-extchars.js} +0 -0
  100. /package/dist/{typeflow/dist/typeflow-extchars.js.map → typeflow-extchars.js.map} +0 -0
  101. /package/dist/{typeflow/dist/typeflow-extchars.min.js → typeflow-extchars.min.js} +0 -0
  102. /package/dist/{typeflow/dist/typeflow-extchars.min.js.map → typeflow-extchars.min.js.map} +0 -0
  103. /package/dist/{typeflow/dist/typeflow-extchars.mjs → typeflow-extchars.mjs} +0 -0
  104. /package/dist/{typeflow/dist/typeflow-extchars.mjs.map → typeflow-extchars.mjs.map} +0 -0
  105. /package/dist/{typeflow/dist/typeflow-keystroke.cjs → typeflow-keystroke.cjs} +0 -0
  106. /package/dist/{typeflow/dist/typeflow-keystroke.cjs.map → typeflow-keystroke.cjs.map} +0 -0
  107. /package/dist/{typeflow/dist/typeflow-keystroke.esm.js → typeflow-keystroke.esm.js} +0 -0
  108. /package/dist/{typeflow/dist/typeflow-keystroke.esm.js.map → typeflow-keystroke.esm.js.map} +0 -0
  109. /package/dist/{typeflow/dist/typeflow-keystroke.esm.min.js → typeflow-keystroke.esm.min.js} +0 -0
  110. /package/dist/{typeflow/dist/typeflow-keystroke.esm.min.js.map → typeflow-keystroke.esm.min.js.map} +0 -0
  111. /package/dist/{typeflow/dist/typeflow-keystroke.js → typeflow-keystroke.js} +0 -0
  112. /package/dist/{typeflow/dist/typeflow-keystroke.js.map → typeflow-keystroke.js.map} +0 -0
  113. /package/dist/{typeflow/dist/typeflow-keystroke.min.js → typeflow-keystroke.min.js} +0 -0
  114. /package/dist/{typeflow/dist/typeflow-keystroke.min.js.map → typeflow-keystroke.min.js.map} +0 -0
  115. /package/dist/{typeflow/dist/typeflow-keystroke.mjs → typeflow-keystroke.mjs} +0 -0
  116. /package/dist/{typeflow/dist/typeflow-keystroke.mjs.map → typeflow-keystroke.mjs.map} +0 -0
  117. /package/dist/{typeflow/dist/typeflow-metrics.cjs → typeflow-metrics.cjs} +0 -0
  118. /package/dist/{typeflow/dist/typeflow-metrics.cjs.map → typeflow-metrics.cjs.map} +0 -0
  119. /package/dist/{typeflow/dist/typeflow-metrics.esm.js → typeflow-metrics.esm.js} +0 -0
  120. /package/dist/{typeflow/dist/typeflow-metrics.esm.js.map → typeflow-metrics.esm.js.map} +0 -0
  121. /package/dist/{typeflow/dist/typeflow-metrics.esm.min.js → typeflow-metrics.esm.min.js} +0 -0
  122. /package/dist/{typeflow/dist/typeflow-metrics.esm.min.js.map → typeflow-metrics.esm.min.js.map} +0 -0
  123. /package/dist/{typeflow/dist/typeflow-metrics.js → typeflow-metrics.js} +0 -0
  124. /package/dist/{typeflow/dist/typeflow-metrics.js.map → typeflow-metrics.js.map} +0 -0
  125. /package/dist/{typeflow/dist/typeflow-metrics.min.js → typeflow-metrics.min.js} +0 -0
  126. /package/dist/{typeflow/dist/typeflow-metrics.min.js.map → typeflow-metrics.min.js.map} +0 -0
  127. /package/dist/{typeflow/dist/typeflow-metrics.mjs → typeflow-metrics.mjs} +0 -0
  128. /package/dist/{typeflow/dist/typeflow-metrics.mjs.map → typeflow-metrics.mjs.map} +0 -0
  129. /package/dist/{typeflow/dist/typeflow-parallel.cjs → typeflow-parallel.cjs} +0 -0
  130. /package/dist/{typeflow/dist/typeflow-parallel.cjs.map → typeflow-parallel.cjs.map} +0 -0
  131. /package/dist/{typeflow/dist/typeflow-parallel.esm.js → typeflow-parallel.esm.js} +0 -0
  132. /package/dist/{typeflow/dist/typeflow-parallel.esm.js.map → typeflow-parallel.esm.js.map} +0 -0
  133. /package/dist/{typeflow/dist/typeflow-parallel.esm.min.js → typeflow-parallel.esm.min.js} +0 -0
  134. /package/dist/{typeflow/dist/typeflow-parallel.esm.min.js.map → typeflow-parallel.esm.min.js.map} +0 -0
  135. /package/dist/{typeflow/dist/typeflow-parallel.js → typeflow-parallel.js} +0 -0
  136. /package/dist/{typeflow/dist/typeflow-parallel.js.map → typeflow-parallel.js.map} +0 -0
  137. /package/dist/{typeflow/dist/typeflow-parallel.min.js → typeflow-parallel.min.js} +0 -0
  138. /package/dist/{typeflow/dist/typeflow-parallel.min.js.map → typeflow-parallel.min.js.map} +0 -0
  139. /package/dist/{typeflow/dist/typeflow-parallel.mjs → typeflow-parallel.mjs} +0 -0
  140. /package/dist/{typeflow/dist/typeflow-parallel.mjs.map → typeflow-parallel.mjs.map} +0 -0
  141. /package/dist/{typeflow/dist/typeflow-webaudio.cjs → typeflow-webaudio.cjs} +0 -0
  142. /package/dist/{typeflow/dist/typeflow-webaudio.cjs.map → typeflow-webaudio.cjs.map} +0 -0
  143. /package/dist/{typeflow/dist/typeflow-webaudio.esm.js → typeflow-webaudio.esm.js} +0 -0
  144. /package/dist/{typeflow/dist/typeflow-webaudio.esm.js.map → typeflow-webaudio.esm.js.map} +0 -0
  145. /package/dist/{typeflow/dist/typeflow-webaudio.esm.min.js → typeflow-webaudio.esm.min.js} +0 -0
  146. /package/dist/{typeflow/dist/typeflow-webaudio.esm.min.js.map → typeflow-webaudio.esm.min.js.map} +0 -0
  147. /package/dist/{typeflow/dist/typeflow-webaudio.js → typeflow-webaudio.js} +0 -0
  148. /package/dist/{typeflow/dist/typeflow-webaudio.js.map → typeflow-webaudio.js.map} +0 -0
  149. /package/dist/{typeflow/dist/typeflow-webaudio.min.js → typeflow-webaudio.min.js} +0 -0
  150. /package/dist/{typeflow/dist/typeflow-webaudio.min.js.map → typeflow-webaudio.min.js.map} +0 -0
  151. /package/dist/{typeflow/dist/typeflow-webaudio.mjs → typeflow-webaudio.mjs} +0 -0
  152. /package/dist/{typeflow/dist/typeflow-webaudio.mjs.map → typeflow-webaudio.mjs.map} +0 -0
  153. /package/dist/{typeflow/dist/typeflow.cjs.map → typeflow.cjs.map} +0 -0
  154. /package/dist/{typeflow/dist/typeflow.esm.js.map → typeflow.esm.js.map} +0 -0
  155. /package/dist/{typeflow/dist/typeflow.esm.min.js → typeflow.esm.min.js} +0 -0
  156. /package/dist/{typeflow/dist/typeflow.esm.min.js.map → typeflow.esm.min.js.map} +0 -0
  157. /package/dist/{typeflow/dist/typeflow.js.map → typeflow.js.map} +0 -0
  158. /package/dist/{typeflow/dist/typeflow.min.js → typeflow.min.js} +0 -0
  159. /package/dist/{typeflow/dist/typeflow.min.js.map → typeflow.min.js.map} +0 -0
  160. /package/dist/{typeflow/dist/typeflow.mjs.map → typeflow.mjs.map} +0 -0
@@ -1,162 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
- <!-- Author: Garvey K. Snow / StaticCanvas -->
4
- <!-- License: Creative Commons Attribution (CC BY 4.0) -->
5
-
6
- <svg
7
- width="512"
8
- height="512"
9
- viewBox="0 0 135.46667 135.46667"
10
- version="1.1"
11
- id="svg1"
12
- inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
13
- sodipodi:docname="typeflow-logosvg"
14
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
15
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
16
- xmlns:xlink="http://www.w3.org/1999/xlink"
17
- xmlns="http://www.w3.org/2000/svg"
18
- xmlns:svg="http://www.w3.org/2000/svg">
19
- <sodipodi:namedview
20
- id="namedview1"
21
- pagecolor="#ffffff"
22
- bordercolor="#000000"
23
- borderopacity="0.25"
24
- inkscape:showpageshadow="2"
25
- inkscape:pageopacity="0.0"
26
- inkscape:pagecheckerboard="0"
27
- inkscape:deskcolor="#d1d1d1"
28
- inkscape:document-units="mm"
29
- inkscape:zoom="0.83276505"
30
- inkscape:cx="4.2028661"
31
- inkscape:cy="309.21086"
32
- inkscape:window-width="1440"
33
- inkscape:window-height="899"
34
- inkscape:window-x="0"
35
- inkscape:window-y="0"
36
- inkscape:window-maximized="1"
37
- inkscape:current-layer="layer1" />
38
- <defs
39
- id="defs1">
40
- <linearGradient
41
- id="linearGradient15"
42
- inkscape:collect="always">
43
- <stop
44
- style="stop-color:#ff0c05;stop-opacity:1;"
45
- offset="0"
46
- id="stop15" />
47
- <stop
48
- style="stop-color:#fdbb4f;stop-opacity:1;"
49
- offset="1"
50
- id="stop16" />
51
- </linearGradient>
52
- <inkscape:path-effect
53
- effect="powerclip"
54
- message=""
55
- id="path-effect14"
56
- is_visible="true"
57
- lpeversion="1"
58
- inverse="true"
59
- flatten="false"
60
- hide_clip="false" />
61
- <linearGradient
62
- id="linearGradient9"
63
- inkscape:collect="always">
64
- <stop
65
- style="stop-color:#ff0000;stop-opacity:1;"
66
- offset="0"
67
- id="stop9" />
68
- <stop
69
- style="stop-color:#fdcf58;stop-opacity:1;"
70
- offset="1"
71
- id="stop11" />
72
- </linearGradient>
73
- <inkscape:path-effect
74
- effect="powerclip"
75
- message=""
76
- id="path-effect8"
77
- is_visible="true"
78
- lpeversion="1"
79
- inverse="true"
80
- flatten="false"
81
- hide_clip="false" />
82
- <linearGradient
83
- id="linearGradient1"
84
- inkscape:collect="always">
85
- <stop
86
- style="stop-color:#152331;stop-opacity:1;"
87
- offset="0"
88
- id="stop1" />
89
- <stop
90
- style="stop-color:#252b33;stop-opacity:1;"
91
- offset="0.545663"
92
- id="stop14" />
93
- <stop
94
- style="stop-color:#494949;stop-opacity:1;"
95
- offset="0.97742236"
96
- id="stop3" />
97
- </linearGradient>
98
- <linearGradient
99
- inkscape:collect="always"
100
- xlink:href="#linearGradient1"
101
- id="linearGradient2"
102
- x1="53.244328"
103
- y1="67.510217"
104
- x2="125.41869"
105
- y2="63.438999"
106
- gradientUnits="userSpaceOnUse"
107
- gradientTransform="matrix(1.5316336,0,0,0.9502836,-73.067166,6.6824504)" />
108
- <linearGradient
109
- inkscape:collect="always"
110
- xlink:href="#linearGradient9"
111
- id="linearGradient10"
112
- x1="2.2222646"
113
- y1="67.526265"
114
- x2="133.40492"
115
- y2="67.526265"
116
- gradientUnits="userSpaceOnUse"
117
- gradientTransform="matrix(0.97562941,0,0,0.97562941,0.06430015,2.3289887)" />
118
- <clipPath
119
- clipPathUnits="userSpaceOnUse"
120
- id="clipPath14">
121
- <path
122
- style="font-weight:900;font-size:85.9333px;font-family:Timmana;-inkscape-font-specification:'Timmana Heavy';display:none;fill:#4de276;stroke-width:36.7496;stroke-dasharray:881.991, 881.991"
123
- d="M 62.121174,50.305851 H 51.580021 L 45.507402,93.387077 H 34.50794 L 40.465984,50.305851 H 29.810255 L 30.95603,41.368789 H 63.496105 Z M 86.417507,72.992242 H 73.011914 l -2.864443,20.394835 h -11.11404 l 7.332975,-52.018288 h 27.15492 l -1.260353,8.937062 H 76.22009 l -2.062398,14.207638 h 13.405593 z m 30.664703,-36.32114 q -1.83325,3.437332 -5.156,10.426573 -3.20818,6.874663 -7.44755,15.926305 -4.1248,9.051639 -8.937065,19.59279 -4.697688,10.541151 -9.395373,21.54061 h -9.509953 q 4.812265,-10.999459 9.509953,-21.54061 4.697685,-10.541151 8.822484,-19.59279 4.239376,-9.051642 7.447554,-15.926305 3.32275,-6.989241 5.156,-10.426573 z"
124
- id="path14"
125
- aria-label="TF/" />
126
- <path
127
- id="lpe_path-effect14"
128
- style="font-weight:900;font-size:85.9333px;font-family:Timmana;-inkscape-font-specification:'Timmana Heavy';fill:#4de276;stroke-width:36.7496;stroke-dasharray:881.991, 881.991"
129
- class="powerclip"
130
- d="M -0.99145186,2.2282375 H 134.1298 V 138.60146 H -0.99145186 Z M 62.121174,50.305851 63.496105,41.368789 H 30.95603 l -1.145775,8.937062 H 40.465984 L 34.50794,93.387077 h 10.999462 l 6.072619,-43.081226 z m 24.296333,22.686391 1.145778,-8.478753 H 74.157692 L 76.22009,50.305851 h 16.040883 l 1.260353,-8.937062 h -27.15492 l -7.332975,52.018288 h 11.11404 l 2.864443,-20.394835 z m 30.664703,-36.32114 h -9.50995 q -1.83325,3.437332 -5.156,10.426573 -3.208178,6.874663 -7.447554,15.926305 -4.124799,9.051639 -8.822484,19.59279 -4.697688,10.541151 -9.509953,21.54061 h 9.509953 q 4.697685,-10.999459 9.395373,-21.54061 4.812265,-10.541151 8.937065,-19.59279 4.23937,-9.051642 7.44755,-15.926305 3.32275,-6.989241 5.156,-10.426573 z" />
131
- </clipPath>
132
- <linearGradient
133
- inkscape:collect="always"
134
- xlink:href="#linearGradient15"
135
- id="linearGradient16"
136
- x1="4.3812527"
137
- y1="70.414794"
138
- x2="129.1298"
139
- y2="70.414794"
140
- gradientUnits="userSpaceOnUse" />
141
- </defs>
142
- <g
143
- inkscape:label="Layer 1"
144
- inkscape:groupmode="layer"
145
- id="layer1">
146
- <path
147
- id="rect1-0"
148
- style="display:inline;fill:url(#linearGradient10);fill-opacity:1;stroke:none;stroke-width:7.73234;stroke-dasharray:185.577, 185.577"
149
- d="M 66.225236,2.6986748 C 101.7823,2.2567532 149.52676,4.2503538 130.21805,68.209597 120.37569,100.81197 101.08916,133.42648 66.225236,133.72052 30.77447,134.01952 -6.0050013,103.55547 2.2324068,68.209597 9.8323743,35.59892 31.053259,3.1358101 66.225236,2.6986748 Z"
150
- inkscape:label="background"
151
- sodipodi:nodetypes="sssss" />
152
- <path
153
- id="rect1"
154
- style="fill:url(#linearGradient2);stroke:url(#linearGradient16);stroke-width:3.868;stroke-dasharray:92.8322, 92.8322;stroke-dashoffset:0"
155
- d="m 66.979985,10.952257 c 32.406976,0 60.215815,-11.12007734 60.215815,22.055685 0,33.175759 -11.78736,80.083628 -59.580381,95.488398 C 23.815672,142.61398 -2.6580111,107.12136 8.4836391,70.836305 18.221809,39.121966 34.57301,10.952257 66.979985,10.952257 Z"
156
- clip-path="url(#clipPath14)"
157
- sodipodi:nodetypes="sssss"
158
- inkscape:path-effect="#path-effect14"
159
- inkscape:original-d="m 66.979985,10.952257 c 32.406976,0 60.215815,-11.12007734 60.215815,22.055685 0,33.175759 -11.78736,80.083628 -59.580381,95.488398 C 23.815672,142.61398 -2.6580111,107.12136 8.4836391,70.836305 18.221809,39.121966 34.57301,10.952257 66.979985,10.952257 Z"
160
- transform="matrix(1.0197765,0,0,1.0197765,-0.02319825,-3.6171792)" />
161
- </g>
162
- </svg>
@@ -1,27 +0,0 @@
1
- {
2
- // URL to the schema. This gives you autocompletion and validation in VS Code.
3
- "$schema": "https://jsr.io/schema/config-file.v1.json",
4
- // ---------------------------------------------------------
5
- // PACKAGE IDENTITY
6
- // ---------------------------------------------------------
7
- // The name must be scoped with an '@' (e.g. @username/pkgname)
8
- "name": "@staticcanvas/typeflow",
9
- // Must be a valid SemVer version (e.g. 0.1.0, 1.0.0-rc.1)
10
- "version": "0.34.0",
11
- // ---------------------------------------------------------
12
- // EXPORTS
13
- // ---------------------------------------------------------
14
- // Defines what files users can import.
15
- // "." is the default import
16
- "exports": {
17
- ".": "./src/typeflow.js"
18
- },
19
- // ---------------------------------------------------------
20
- // PUBLISHING CONTROLS
21
- // ---------------------------------------------------------
22
- // Controls which files are uploaded to JSR.
23
- "publish": {
24
- "include": ["src/**", "dist/**", "package.json", "README.md", "LICENSE"],
25
- "exclude": ["src/**/*.test.js"],
26
- },
27
- }
@@ -1,79 +0,0 @@
1
- {
2
- "name": "@staticcanvas/typeflow",
3
- "version": "0.34.0",
4
- "description": "Typeflow library.",
5
- "type": "module",
6
- "main": "./dist/typeflow.cjs",
7
- "module": "./dist/typeflow.mjs",
8
- "browser": "./dist/typeflow.js",
9
- "types": "./src/typeflow.d.ts",
10
- "exports": {
11
- ".": {
12
- "import": "./dist/typeflow.mjs",
13
- "require": "./dist/typeflow.cjs",
14
- "default": "./dist/typeflow.js"
15
- },
16
- "./metrics": {
17
- "import": "./dist/typeflow-metrics.mjs",
18
- "require": "./dist/typeflow-metrics.cjs",
19
- "default": "./dist/typeflow-metrics.js"
20
- },
21
- "./debug": {
22
- "import": "./dist/typeflow-debug.mjs",
23
- "require": "./dist/typeflow-debug.cjs",
24
- "default": "./dist/typeflow-debug.js"
25
- },
26
- "./caret": {
27
- "import": "./dist/typeflow-caret.mjs",
28
- "require": "./dist/typeflow-caret.cjs",
29
- "default": "./dist/typeflow-caret.js"
30
- },
31
- "./webaudio": {
32
- "types": "./src/typeflow-webaudio.d.ts",
33
- "import": "./dist/typeflow-webaudio.mjs",
34
- "require": "./dist/typeflow-webaudio.cjs",
35
- "default": "./dist/typeflow-webaudio.js"
36
- },
37
- "./parallel": {
38
- "types": "./src/typeflow-parallel.d.ts",
39
- "import": "./dist/typeflow-parallel.mjs",
40
- "require": "./dist/typeflow-parallel.cjs",
41
- "default": "./dist/typeflow-parallel.js"
42
- },
43
- "./keystroke": {
44
- "types": "./src/typeflow-keystroke.d.ts",
45
- "import": "./dist/typeflow-keystroke.mjs",
46
- "require": "./dist/typeflow-keystroke.cjs",
47
- "default": "./dist/typeflow-keystroke.js"
48
- },
49
- "./extchars": {
50
- "types": "./src/typeflow-extchars.d.ts",
51
- "import": "./dist/typeflow-extchars.mjs",
52
- "require": "./dist/typeflow-extchars.cjs",
53
- "default": "./dist/typeflow-extchars.js"
54
- },
55
- "./package.json": "./package.json"
56
- },
57
- "keywords": [
58
- "staticcanvas",
59
- "esm"
60
- ],
61
- "author": "Garvey K. Snow",
62
- "license": "MIT",
63
- "peerDependencies": {
64
- "@staticcanvas/logcad": "^0.6.0"
65
- },
66
- "peerDependenciesMeta": {
67
- "@staticcanvas/logcad": {
68
- "optional": true
69
- }
70
- },
71
- "repository": {
72
- "type": "git",
73
- "url": "https://gitlab.com/staticcanvas/typeflow.git"
74
- },
75
- "homepage": "https://staticcanvas.gitlab.io/typeflow",
76
- "bugs": {
77
- "url": "https://gitlab.com/staticcanvas/typeflow/-/issues"
78
- }
79
- }
@@ -1,137 +0,0 @@
1
- export const AUDIO_PRESET_SCHEMA_VERSION = 1;
2
-
3
- const freeze = (value) => {
4
- if (value && typeof value === 'object' && !Object.isFrozen(value)) {
5
- Object.values(value).forEach(freeze);
6
- Object.freeze(value);
7
- }
8
- return value;
9
- };
10
-
11
- const layer = (oscillator, start, end, gain, duration, extras = {}) => ({
12
- oscillator,
13
- frequency: { start, end },
14
- gain: { start: gain, end: 0.001 },
15
- duration,
16
- filter: extras.filter ?? null,
17
- detune: { base: extras.detune ?? 0, variance: extras.variance ?? 0.06 },
18
- });
19
-
20
- const preset = (type, erase) => ({
21
- version: AUDIO_PRESET_SCHEMA_VERSION,
22
- actions: { type, erase: erase ?? type },
23
- });
24
-
25
- export const AUDIO_PRESETS = freeze({
26
- 'mechanical-blue': preset(
27
- [layer('triangle', 3400, 900, 0.18, 0.008), layer('sine', 200, 50, 0.32, 0.035)],
28
- [layer('triangle', 900, 180, 0.12, 0.025)]
29
- ),
30
- 'mechanical-red': preset(
31
- [layer('sine', 220, 70, 0.26, 0.028)],
32
- [layer('sine', 150, 55, 0.12, 0.022)]
33
- ),
34
- 'mechanical-brown': preset(
35
- [layer('triangle', 240, 75, 0.27, 0.032)],
36
- [layer('triangle', 170, 60, 0.13, 0.024)]
37
- ),
38
- 'soft-keyboard': preset(
39
- [
40
- layer('sine', 520, 280, 0.08, 0.018, {
41
- filter: { type: 'lowpass', frequency: 1200, q: 0.7 },
42
- }),
43
- ],
44
- [layer('sine', 320, 180, 0.06, 0.016)]
45
- ),
46
- typewriter: preset(
47
- [layer('square', 320, 90, 0.17, 0.022)],
48
- [layer('square', 180, 70, 0.13, 0.026)]
49
- ),
50
- 'terminal-beep': preset(
51
- [layer('square', 880, 880, 0.08, 0.025)],
52
- [layer('square', 440, 330, 0.06, 0.03)]
53
- ),
54
- synth: preset(
55
- [layer('sawtooth', 950, 180, 0.12, 0.045)],
56
- [layer('sawtooth', 420, 120, 0.09, 0.04)]
57
- ),
58
- correction: preset(
59
- [layer('triangle', 360, 110, 0.1, 0.035)],
60
- [layer('triangle', 260, 80, 0.14, 0.045)]
61
- ),
62
- });
63
-
64
- export const AUDIO_PRESET_ALIASES = freeze({
65
- clicky: 'mechanical-blue',
66
- mechanical: 'mechanical-red',
67
- tactile: 'mechanical-brown',
68
- teletype: 'typewriter',
69
- vintage: 'typewriter',
70
- 'terminal-8bit': 'terminal-beep',
71
- '8bit': 'terminal-beep',
72
- beep: 'terminal-beep',
73
- 'cyber-synth': 'synth',
74
- neon: 'synth',
75
- bubble: 'soft-keyboard',
76
- pop: 'soft-keyboard',
77
- });
78
-
79
- export function validateAudioPreset(config) {
80
- if (
81
- !config ||
82
- config.version !== AUDIO_PRESET_SCHEMA_VERSION ||
83
- !config.actions ||
84
- typeof config.actions !== 'object'
85
- ) {
86
- throw new TypeError(
87
- `TypeFlowWebAudio: preset must use schema version ${AUDIO_PRESET_SCHEMA_VERSION}.`
88
- );
89
- }
90
- const output = { version: AUDIO_PRESET_SCHEMA_VERSION, actions: {} };
91
- for (const action of ['type', 'erase']) {
92
- const layers = config.actions[action];
93
- if (!Array.isArray(layers) || layers.length === 0 || layers.length > 4) {
94
- throw new TypeError(
95
- `TypeFlowWebAudio: actions.${action} must contain 1-4 oscillator layers.`
96
- );
97
- }
98
- output.actions[action] = layers.map((candidate) => {
99
- const oscillator = String(candidate.oscillator ?? 'sine');
100
- if (!['sine', 'square', 'sawtooth', 'triangle'].includes(oscillator))
101
- throw new RangeError('TypeFlowWebAudio: invalid oscillator type.');
102
- const duration = Number(candidate.duration);
103
- const start = Number(candidate.frequency?.start);
104
- const end = Number(candidate.frequency?.end);
105
- const gainStart = Number(candidate.gain?.start);
106
- const gainEnd = Number(candidate.gain?.end);
107
- if (!(duration >= 0.001 && duration <= 2))
108
- throw new RangeError('TypeFlowWebAudio: duration must be 0.001-2 seconds.');
109
- if (!(start >= 20 && start <= 20000 && end >= 20 && end <= 20000))
110
- throw new RangeError('TypeFlowWebAudio: frequency must be 20-20000 Hz.');
111
- if (!(gainStart >= 0 && gainStart <= 1 && gainEnd > 0 && gainEnd <= 1))
112
- throw new RangeError('TypeFlowWebAudio: gain must be within safe bounds.');
113
- const variance = Number(candidate.detune?.variance ?? 0);
114
- if (!(variance >= 0 && variance <= 0.5))
115
- throw new RangeError('TypeFlowWebAudio: detune variance must be 0-0.5.');
116
- const filter =
117
- candidate.filter === null || candidate.filter === undefined
118
- ? null
119
- : {
120
- type: String(candidate.filter.type ?? 'lowpass'),
121
- frequency: Math.max(20, Math.min(20000, Number(candidate.filter.frequency) || 1000)),
122
- q: Math.max(0.0001, Math.min(1000, Number(candidate.filter.q) || 1)),
123
- };
124
- if (filter && !['lowpass', 'highpass', 'bandpass', 'notch'].includes(filter.type))
125
- throw new RangeError('TypeFlowWebAudio: invalid filter type.');
126
- return {
127
- oscillator,
128
- frequency: { start, end },
129
- gain: { start: gainStart, end: gainEnd },
130
- duration,
131
- filter,
132
- detune: { base: Number(candidate.detune?.base) || 0, variance },
133
- };
134
- });
135
- }
136
- return freeze(output);
137
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * TypeFlow Caret - Interactive Cursor Positioning & Mid-String Editing.
3
- */
4
- export interface TypeFlowCaretConfig {
5
- /** Initial text. Defaults to the target's current text content. */
6
- text?: string;
7
- /** Initial caret index in graphemes. Defaults to the end of the text. */
8
- position?: number;
9
- /** Cursor glyph. Empty string hides it. Default: '|' */
10
- cursor?: string;
11
- /** Default: true */
12
- cursorBlink?: boolean;
13
- /** Default ms per character for `insert()`. Default: 40 */
14
- speed?: number;
15
- /** Instantly complete `insert()` instead of animating if the user prefers reduced motion. Default: true */
16
- respectReducedMotion?: boolean;
17
- }
18
-
19
- export interface TypeFlowCaretInsertConfig {
20
- /** Ms per character. Defaults to the speed passed to the constructor. */
21
- speed?: number;
22
- respectReducedMotion?: boolean;
23
- onStart?: () => void;
24
- onComplete?: (text: string) => void;
25
- onInterrupt?: () => void;
26
- }
27
-
28
- export interface TypeFlowCaretResult {
29
- completed: boolean;
30
- text: string;
31
- }
32
-
33
- export interface TypeFlowCaretController {
34
- stop: () => void;
35
- promise: Promise<TypeFlowCaretResult>;
36
- }
37
-
38
- export class TypeFlowCaret {
39
- constructor(target: Element | string, config?: TypeFlowCaretConfig);
40
-
41
- /** Current plain-text content, cursor excluded. */
42
- readonly text: string;
43
- /** Current caret index, in graphemes, from the start of the text. */
44
- readonly position: number;
45
- /** Total number of graphemes in the current text. */
46
- readonly length: number;
47
-
48
- /** Moves the caret to an absolute grapheme index, clamped to bounds. */
49
- jump(position: number): this;
50
- /** Moves the caret by a relative number of graphemes (positive = right, negative = left). */
51
- move(delta: number): this;
52
- /** Deletes one grapheme at the caret: 'backward' (Backspace, default) or 'forward' (Delete). */
53
- deleteChar(direction?: "backward" | "forward"): this;
54
- /** Deletes the whitespace-delimited word adjacent to the caret. */
55
- deleteWord(direction?: "backward" | "forward"): this;
56
- /** Types `text` at the current caret position, shifting following content to the right. */
57
- insert(text: string, config?: TypeFlowCaretInsertConfig): TypeFlowCaretController;
58
- /** Stops an in-flight `insert()`, if any. */
59
- stop(): this;
60
- /** Stops any in-flight `insert()` and clears the blink interval. */
61
- destroy(): this;
62
- }
63
-
64
- /** Factory form of `new TypeFlowCaret(target, config)`. */
65
- export function Caret(target: Element | string, config?: TypeFlowCaretConfig): TypeFlowCaret;