@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.
- package/README.md +110 -516
- package/dist/typeflow-0.34.1.tar.gz +0 -0
- package/dist/typeflow-0.34.1.zip +0 -0
- package/dist/{typeflow/dist/typeflow.cjs → typeflow.cjs} +1 -1
- package/dist/{typeflow/dist/typeflow.esm.js → typeflow.esm.js} +1 -1
- package/dist/{typeflow/dist/typeflow.js → typeflow.js} +1 -1
- package/dist/{typeflow/dist/typeflow.mjs → typeflow.mjs} +1 -1
- package/jsr.jsonc +1 -1
- package/package.json +2 -56
- package/branding/dist/ico/typeflow-logo-16x16.ico +0 -0
- package/branding/dist/ico/typeflow-logo-256x256.ico +0 -0
- package/branding/dist/ico/typeflow-logo-32x32.ico +0 -0
- package/branding/dist/ico/typeflow-logo-48x48.ico +0 -0
- package/branding/dist/png/typeflow-logo-1024x1024.png +0 -0
- package/branding/dist/png/typeflow-logo-128x128.png +0 -0
- package/branding/dist/png/typeflow-logo-16x16.png +0 -0
- package/branding/dist/png/typeflow-logo-256x256.png +0 -0
- package/branding/dist/png/typeflow-logo-512x512.png +0 -0
- package/branding/dist/png/typeflow-logo-64x64.png +0 -0
- package/branding/dist/webp/typeflow-logo-1024x1024.webp +0 -0
- package/branding/dist/webp/typeflow-logo-128x128.webp +0 -0
- package/branding/dist/webp/typeflow-logo-16x16.webp +0 -0
- package/branding/dist/webp/typeflow-logo-256x256.webp +0 -0
- package/branding/dist/webp/typeflow-logo-32x32.webp +0 -0
- package/branding/dist/webp/typeflow-logo-48x48.webp +0 -0
- package/branding/dist/webp/typeflow-logo-512x512.webp +0 -0
- package/branding/dist/webp/typeflow-logo-64x64.webp +0 -0
- package/dist/typeflow/LICENSE +0 -21
- package/dist/typeflow/README.md +0 -231
- package/dist/typeflow/branding/dist/ico/typeflow-logo-16x16.ico +0 -0
- package/dist/typeflow/branding/dist/ico/typeflow-logo-256x256.ico +0 -0
- package/dist/typeflow/branding/dist/ico/typeflow-logo-32x32.ico +0 -0
- package/dist/typeflow/branding/dist/ico/typeflow-logo-48x48.ico +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-1024x1024.png +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-128x128.png +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-16x16.png +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-256x256.png +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-512x512.png +0 -0
- package/dist/typeflow/branding/dist/png/typeflow-logo-64x64.png +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-1024x1024.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-128x128.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-16x16.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-256x256.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-32x32.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-48x48.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-512x512.webp +0 -0
- package/dist/typeflow/branding/dist/webp/typeflow-logo-64x64.webp +0 -0
- package/dist/typeflow/branding/gen-logo.ps1 +0 -14
- package/dist/typeflow/branding/typeflow-logo.svg +0 -162
- package/dist/typeflow/jsr.jsonc +0 -27
- package/dist/typeflow/package.json +0 -79
- package/dist/typeflow/src/typeflow-audio-presets.js +0 -137
- package/dist/typeflow/src/typeflow-caret.d.ts +0 -65
- package/dist/typeflow/src/typeflow-caret.js +0 -303
- package/dist/typeflow/src/typeflow-debug.d.ts +0 -34
- package/dist/typeflow/src/typeflow-debug.js +0 -223
- package/dist/typeflow/src/typeflow-extchars.d.ts +0 -28
- package/dist/typeflow/src/typeflow-extchars.js +0 -132
- package/dist/typeflow/src/typeflow-keystroke.d.ts +0 -28
- package/dist/typeflow/src/typeflow-keystroke.js +0 -220
- package/dist/typeflow/src/typeflow-metrics.d.ts +0 -38
- package/dist/typeflow/src/typeflow-metrics.js +0 -556
- package/dist/typeflow/src/typeflow-parallel.d.ts +0 -36
- package/dist/typeflow/src/typeflow-parallel.js +0 -157
- package/dist/typeflow/src/typeflow-webaudio.d.ts +0 -83
- package/dist/typeflow/src/typeflow-webaudio.js +0 -517
- package/dist/typeflow/src/typeflow.d.ts +0 -328
- package/dist/typeflow/src/typeflow.js +0 -2119
- /package/dist/{typeflow/dist/typeflow-caret.cjs → typeflow-caret.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.cjs.map → typeflow-caret.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.esm.js → typeflow-caret.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.esm.js.map → typeflow-caret.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.esm.min.js → typeflow-caret.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.esm.min.js.map → typeflow-caret.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.js → typeflow-caret.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.js.map → typeflow-caret.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.min.js → typeflow-caret.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.min.js.map → typeflow-caret.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.mjs → typeflow-caret.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-caret.mjs.map → typeflow-caret.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.cjs → typeflow-debug.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.cjs.map → typeflow-debug.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.esm.js → typeflow-debug.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.esm.js.map → typeflow-debug.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.esm.min.js → typeflow-debug.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.esm.min.js.map → typeflow-debug.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.js → typeflow-debug.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.js.map → typeflow-debug.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.min.js → typeflow-debug.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.min.js.map → typeflow-debug.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.mjs → typeflow-debug.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-debug.mjs.map → typeflow-debug.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.cjs → typeflow-extchars.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.cjs.map → typeflow-extchars.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.esm.js → typeflow-extchars.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.esm.js.map → typeflow-extchars.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.esm.min.js → typeflow-extchars.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.esm.min.js.map → typeflow-extchars.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.js → typeflow-extchars.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.js.map → typeflow-extchars.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.min.js → typeflow-extchars.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.min.js.map → typeflow-extchars.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.mjs → typeflow-extchars.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-extchars.mjs.map → typeflow-extchars.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.cjs → typeflow-keystroke.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.cjs.map → typeflow-keystroke.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.esm.js → typeflow-keystroke.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.esm.js.map → typeflow-keystroke.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.esm.min.js → typeflow-keystroke.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.esm.min.js.map → typeflow-keystroke.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.js → typeflow-keystroke.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.js.map → typeflow-keystroke.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.min.js → typeflow-keystroke.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.min.js.map → typeflow-keystroke.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.mjs → typeflow-keystroke.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-keystroke.mjs.map → typeflow-keystroke.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.cjs → typeflow-metrics.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.cjs.map → typeflow-metrics.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.esm.js → typeflow-metrics.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.esm.js.map → typeflow-metrics.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.esm.min.js → typeflow-metrics.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.esm.min.js.map → typeflow-metrics.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.js → typeflow-metrics.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.js.map → typeflow-metrics.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.min.js → typeflow-metrics.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.min.js.map → typeflow-metrics.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.mjs → typeflow-metrics.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-metrics.mjs.map → typeflow-metrics.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.cjs → typeflow-parallel.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.cjs.map → typeflow-parallel.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.esm.js → typeflow-parallel.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.esm.js.map → typeflow-parallel.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.esm.min.js → typeflow-parallel.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.esm.min.js.map → typeflow-parallel.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.js → typeflow-parallel.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.js.map → typeflow-parallel.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.min.js → typeflow-parallel.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.min.js.map → typeflow-parallel.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.mjs → typeflow-parallel.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-parallel.mjs.map → typeflow-parallel.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.cjs → typeflow-webaudio.cjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.cjs.map → typeflow-webaudio.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.esm.js → typeflow-webaudio.esm.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.esm.js.map → typeflow-webaudio.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.esm.min.js → typeflow-webaudio.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.esm.min.js.map → typeflow-webaudio.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.js → typeflow-webaudio.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.js.map → typeflow-webaudio.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.min.js → typeflow-webaudio.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.min.js.map → typeflow-webaudio.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.mjs → typeflow-webaudio.mjs} +0 -0
- /package/dist/{typeflow/dist/typeflow-webaudio.mjs.map → typeflow-webaudio.mjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow.cjs.map → typeflow.cjs.map} +0 -0
- /package/dist/{typeflow/dist/typeflow.esm.js.map → typeflow.esm.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow.esm.min.js → typeflow.esm.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow.esm.min.js.map → typeflow.esm.min.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow.js.map → typeflow.js.map} +0 -0
- /package/dist/{typeflow/dist/typeflow.min.js → typeflow.min.js} +0 -0
- /package/dist/{typeflow/dist/typeflow.min.js.map → typeflow.min.js.map} +0 -0
- /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>
|
package/dist/typeflow/jsr.jsonc
DELETED
|
@@ -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;
|