@minikeys/react 0.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.
- package/README.md +25 -0
- package/dist/index.cjs +1603 -0
- package/dist/index.d.cts +78 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.js +1513 -0
- package/package.json +55 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,1603 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function _array_like_to_array(arr, len) {
|
|
3
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
4
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
|
+
return arr2;
|
|
6
|
+
}
|
|
7
|
+
function _array_with_holes(arr) {
|
|
8
|
+
if (Array.isArray(arr)) return arr;
|
|
9
|
+
}
|
|
10
|
+
function _array_without_holes(arr) {
|
|
11
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
12
|
+
}
|
|
13
|
+
function _define_property(obj, key, value) {
|
|
14
|
+
if (key in obj) {
|
|
15
|
+
Object.defineProperty(obj, key, {
|
|
16
|
+
value: value,
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
writable: true
|
|
20
|
+
});
|
|
21
|
+
} else {
|
|
22
|
+
obj[key] = value;
|
|
23
|
+
}
|
|
24
|
+
return obj;
|
|
25
|
+
}
|
|
26
|
+
function _iterable_to_array(iter) {
|
|
27
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
28
|
+
}
|
|
29
|
+
function _iterable_to_array_limit(arr, i) {
|
|
30
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
31
|
+
if (_i == null) return;
|
|
32
|
+
var _arr = [];
|
|
33
|
+
var _n = true;
|
|
34
|
+
var _d = false;
|
|
35
|
+
var _s, _e;
|
|
36
|
+
try {
|
|
37
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
38
|
+
_arr.push(_s.value);
|
|
39
|
+
if (i && _arr.length === i) break;
|
|
40
|
+
}
|
|
41
|
+
} catch (err) {
|
|
42
|
+
_d = true;
|
|
43
|
+
_e = err;
|
|
44
|
+
} finally{
|
|
45
|
+
try {
|
|
46
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
47
|
+
} finally{
|
|
48
|
+
if (_d) throw _e;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return _arr;
|
|
52
|
+
}
|
|
53
|
+
function _non_iterable_rest() {
|
|
54
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
55
|
+
}
|
|
56
|
+
function _non_iterable_spread() {
|
|
57
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
58
|
+
}
|
|
59
|
+
function _object_spread(target) {
|
|
60
|
+
for(var i = 1; i < arguments.length; i++){
|
|
61
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
62
|
+
var ownKeys = Object.keys(source);
|
|
63
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
64
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
65
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
ownKeys.forEach(function(key) {
|
|
69
|
+
_define_property(target, key, source[key]);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return target;
|
|
73
|
+
}
|
|
74
|
+
function ownKeys(object, enumerableOnly) {
|
|
75
|
+
var keys = Object.keys(object);
|
|
76
|
+
if (Object.getOwnPropertySymbols) {
|
|
77
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
78
|
+
if (enumerableOnly) {
|
|
79
|
+
symbols = symbols.filter(function(sym) {
|
|
80
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
keys.push.apply(keys, symbols);
|
|
84
|
+
}
|
|
85
|
+
return keys;
|
|
86
|
+
}
|
|
87
|
+
function _object_spread_props(target, source) {
|
|
88
|
+
source = source != null ? source : {};
|
|
89
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
90
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
91
|
+
} else {
|
|
92
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
93
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return target;
|
|
97
|
+
}
|
|
98
|
+
function _object_without_properties(source, excluded) {
|
|
99
|
+
if (source == null) return {};
|
|
100
|
+
var target = _object_without_properties_loose(source, excluded);
|
|
101
|
+
var key, i;
|
|
102
|
+
if (Object.getOwnPropertySymbols) {
|
|
103
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
104
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
105
|
+
key = sourceSymbolKeys[i];
|
|
106
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
107
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
108
|
+
target[key] = source[key];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return target;
|
|
112
|
+
}
|
|
113
|
+
function _object_without_properties_loose(source, excluded) {
|
|
114
|
+
if (source == null) return {};
|
|
115
|
+
var target = {};
|
|
116
|
+
var sourceKeys = Object.keys(source);
|
|
117
|
+
var key, i;
|
|
118
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
119
|
+
key = sourceKeys[i];
|
|
120
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
121
|
+
target[key] = source[key];
|
|
122
|
+
}
|
|
123
|
+
return target;
|
|
124
|
+
}
|
|
125
|
+
function _sliced_to_array(arr, i) {
|
|
126
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
127
|
+
}
|
|
128
|
+
function _tagged_template_literal(strings, raw) {
|
|
129
|
+
if (!raw) {
|
|
130
|
+
raw = strings.slice(0);
|
|
131
|
+
}
|
|
132
|
+
return Object.freeze(Object.defineProperties(strings, {
|
|
133
|
+
raw: {
|
|
134
|
+
value: Object.freeze(raw)
|
|
135
|
+
}
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
function _to_consumable_array(arr) {
|
|
139
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
140
|
+
}
|
|
141
|
+
function _type_of(obj) {
|
|
142
|
+
"@swc/helpers - typeof";
|
|
143
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
144
|
+
}
|
|
145
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
146
|
+
if (!o) return;
|
|
147
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
148
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
149
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
150
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
151
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
152
|
+
}
|
|
153
|
+
function _templateObject() {
|
|
154
|
+
var data = _tagged_template_literal([
|
|
155
|
+
"\n background-color: #8eff00;\n box-shadow: 0px 0px calc(var(--height) * 0.08) calc(var(--height) * 0.04)\n rgba(0, 255, 0, 0.9);\n transform: translateY(calc(var(--height) * 0.03));\n "
|
|
156
|
+
]);
|
|
157
|
+
_templateObject = function _templateObject() {
|
|
158
|
+
return data;
|
|
159
|
+
};
|
|
160
|
+
return data;
|
|
161
|
+
}
|
|
162
|
+
function _templateObject1() {
|
|
163
|
+
var data = _tagged_template_literal([
|
|
164
|
+
"\n position: absolute;\n right: calc(var(--height) * 0.23);\n top: calc(var(--height) * 0.23);\n width: calc(round(var(--height) * 0.06, 1px));\n height: calc(round(var(--height) * 0.06, 1px));\n border-radius: 50%;\n background-color: #ccc;\n transition: all 0.3s ease;\n\n ",
|
|
165
|
+
"\n"
|
|
166
|
+
]);
|
|
167
|
+
_templateObject1 = function _templateObject() {
|
|
168
|
+
return data;
|
|
169
|
+
};
|
|
170
|
+
return data;
|
|
171
|
+
}
|
|
172
|
+
function _templateObject2() {
|
|
173
|
+
var data = _tagged_template_literal([
|
|
174
|
+
"\n transform: translateY(calc(var(--height) * 0.03));\n "
|
|
175
|
+
]);
|
|
176
|
+
_templateObject2 = function _templateObject() {
|
|
177
|
+
return data;
|
|
178
|
+
};
|
|
179
|
+
return data;
|
|
180
|
+
}
|
|
181
|
+
function _templateObject3() {
|
|
182
|
+
var data = _tagged_template_literal([
|
|
183
|
+
"\n width: calc(round(var(--height) * 0.06, 1px));\n height: calc(round(var(--height) * 0.06, 1px));\n border-radius: calc(round(var(--height) * 0.03, 1px));\n position: absolute;\n right: calc(var(--height) * 0.23);\n top: calc(var(--height) * 0.23);\n transition: all 0.3s ease;\n\n ",
|
|
184
|
+
"\n"
|
|
185
|
+
]);
|
|
186
|
+
_templateObject3 = function _templateObject() {
|
|
187
|
+
return data;
|
|
188
|
+
};
|
|
189
|
+
return data;
|
|
190
|
+
}
|
|
191
|
+
function _templateObject4() {
|
|
192
|
+
var data = _tagged_template_literal([
|
|
193
|
+
"\n opacity: 1;\n transform: translateY(0);\n "
|
|
194
|
+
]);
|
|
195
|
+
_templateObject4 = function _templateObject() {
|
|
196
|
+
return data;
|
|
197
|
+
};
|
|
198
|
+
return data;
|
|
199
|
+
}
|
|
200
|
+
function _templateObject5() {
|
|
201
|
+
var data = _tagged_template_literal([
|
|
202
|
+
"\n --width: ",
|
|
203
|
+
"px;\n --height: ",
|
|
204
|
+
"px;\n width: var(--width);\n height: var(--height);\n /* opacity: ",
|
|
205
|
+
"; */\n display: ",
|
|
206
|
+
";\n padding: calc(var(--height) * 0.05);\n\n transition: transform 0.3s ease, opacity 0.3s ease;\n opacity: 0;\n transform: translateY(calc(var(--height) * -0.1));\n ",
|
|
207
|
+
"\n"
|
|
208
|
+
]);
|
|
209
|
+
_templateObject5 = function _templateObject() {
|
|
210
|
+
return data;
|
|
211
|
+
};
|
|
212
|
+
return data;
|
|
213
|
+
}
|
|
214
|
+
function _templateObject6() {
|
|
215
|
+
var data = _tagged_template_literal([
|
|
216
|
+
"\n opacity: 0.2;\n background-color: #eee;\n border: 1px solid #ccc;\n"
|
|
217
|
+
]);
|
|
218
|
+
_templateObject6 = function _templateObject() {
|
|
219
|
+
return data;
|
|
220
|
+
};
|
|
221
|
+
return data;
|
|
222
|
+
}
|
|
223
|
+
function _templateObject7() {
|
|
224
|
+
var data = _tagged_template_literal([
|
|
225
|
+
"\n opacity: 0.2;\n background-color: #eee;\n border: 1px solid #ccc;\n"
|
|
226
|
+
]);
|
|
227
|
+
_templateObject7 = function _templateObject() {
|
|
228
|
+
return data;
|
|
229
|
+
};
|
|
230
|
+
return data;
|
|
231
|
+
}
|
|
232
|
+
function _templateObject8() {
|
|
233
|
+
var data = _tagged_template_literal([
|
|
234
|
+
"\n transform: translateY(calc(var(--height) * 0.03));\n box-shadow: 0 calc(var(--height) * 0.01) calc(var(--height) * 0.03)\n calc(var(--height) * 0.01) rgba(0, 0, 0, 0),\n rgba(255, 255, 255, 0.2) 0px calc(var(--height) * 0.03)\n calc(var(--height) * 0.04) 0px inset;\n"
|
|
235
|
+
]);
|
|
236
|
+
_templateObject8 = function _templateObject() {
|
|
237
|
+
return data;
|
|
238
|
+
};
|
|
239
|
+
return data;
|
|
240
|
+
}
|
|
241
|
+
function _templateObject9() {
|
|
242
|
+
var data = _tagged_template_literal([
|
|
243
|
+
"\n background-color: #222;\n color: #fff;\n\n &:hover {\n background-color: #111;\n }\n\n &:active {\n ",
|
|
244
|
+
"\n background-color: #000;\n }\n"
|
|
245
|
+
]);
|
|
246
|
+
_templateObject9 = function _templateObject() {
|
|
247
|
+
return data;
|
|
248
|
+
};
|
|
249
|
+
return data;
|
|
250
|
+
}
|
|
251
|
+
function _templateObject10() {
|
|
252
|
+
var data = _tagged_template_literal([
|
|
253
|
+
"\n background-color: #fff;\n color: #444;\n border: 1px solid #ddd;\n\n &:hover {\n background-color: #f8f8f8;\n }\n\n &:active {\n ",
|
|
254
|
+
"\n background-color: #efefef;\n }\n"
|
|
255
|
+
]);
|
|
256
|
+
_templateObject10 = function _templateObject() {
|
|
257
|
+
return data;
|
|
258
|
+
};
|
|
259
|
+
return data;
|
|
260
|
+
}
|
|
261
|
+
function _templateObject11() {
|
|
262
|
+
var data = _tagged_template_literal([
|
|
263
|
+
"\n ",
|
|
264
|
+
"\n background-color: #efefef;\n"
|
|
265
|
+
]);
|
|
266
|
+
_templateObject11 = function _templateObject() {
|
|
267
|
+
return data;
|
|
268
|
+
};
|
|
269
|
+
return data;
|
|
270
|
+
}
|
|
271
|
+
function _templateObject12() {
|
|
272
|
+
var data = _tagged_template_literal([
|
|
273
|
+
"\n ",
|
|
274
|
+
"\n background-color: #000;\n"
|
|
275
|
+
]);
|
|
276
|
+
_templateObject12 = function _templateObject() {
|
|
277
|
+
return data;
|
|
278
|
+
};
|
|
279
|
+
return data;
|
|
280
|
+
}
|
|
281
|
+
function _templateObject13() {
|
|
282
|
+
var data = _tagged_template_literal([
|
|
283
|
+
"\n ",
|
|
284
|
+
"\n filter: brightness(0.9);\n"
|
|
285
|
+
]);
|
|
286
|
+
_templateObject13 = function _templateObject() {
|
|
287
|
+
return data;
|
|
288
|
+
};
|
|
289
|
+
return data;
|
|
290
|
+
}
|
|
291
|
+
function _templateObject14() {
|
|
292
|
+
var data = _tagged_template_literal([
|
|
293
|
+
"\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: calc(var(--height) * 0.2);\n"
|
|
294
|
+
]);
|
|
295
|
+
_templateObject14 = function _templateObject() {
|
|
296
|
+
return data;
|
|
297
|
+
};
|
|
298
|
+
return data;
|
|
299
|
+
}
|
|
300
|
+
function _templateObject15() {
|
|
301
|
+
var data = _tagged_template_literal([
|
|
302
|
+
"\n background-color: ",
|
|
303
|
+
";\n color: ",
|
|
304
|
+
";\n ",
|
|
305
|
+
"\n\n &:hover {\n filter: brightness(0.9);\n }\n\n &:active {\n ",
|
|
306
|
+
"\n }\n "
|
|
307
|
+
]);
|
|
308
|
+
_templateObject15 = function _templateObject() {
|
|
309
|
+
return data;
|
|
310
|
+
};
|
|
311
|
+
return data;
|
|
312
|
+
}
|
|
313
|
+
function _templateObject16() {
|
|
314
|
+
var data = _tagged_template_literal([
|
|
315
|
+
"\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border-radius: calc(var(--height) * 0.06);\n font-family: sans-serif;\n padding: calc(var(--height) * 0.08);\n font-size: calc(var(--height) * 0.15);\n cursor: pointer;\n user-select: none;\n box-shadow: 0 calc(var(--height) * 0.01) calc(var(--height) * 0.03)\n calc(var(--height) * 0.01) rgba(0, 0, 0, 0.1),\n rgba(255, 255, 255, 0.1) 0px calc(var(--height) * 0.03)\n calc(var(--height) * 0.04) 0px inset;\n transition: all 0.3s ease;\n\n ",
|
|
316
|
+
"\n\n ",
|
|
317
|
+
"\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n ",
|
|
318
|
+
"\n"
|
|
319
|
+
]);
|
|
320
|
+
_templateObject16 = function _templateObject() {
|
|
321
|
+
return data;
|
|
322
|
+
};
|
|
323
|
+
return data;
|
|
324
|
+
}
|
|
325
|
+
function _templateObject17() {
|
|
326
|
+
var data = _tagged_template_literal([
|
|
327
|
+
"\n text-align: center;\n "
|
|
328
|
+
]);
|
|
329
|
+
_templateObject17 = function _templateObject() {
|
|
330
|
+
return data;
|
|
331
|
+
};
|
|
332
|
+
return data;
|
|
333
|
+
}
|
|
334
|
+
function _templateObject18() {
|
|
335
|
+
var data = _tagged_template_literal([
|
|
336
|
+
"\n font-size: calc(var(--height) * 0.15);\n opacity: 0.8;\n\n ",
|
|
337
|
+
";\n"
|
|
338
|
+
]);
|
|
339
|
+
_templateObject18 = function _templateObject() {
|
|
340
|
+
return data;
|
|
341
|
+
};
|
|
342
|
+
return data;
|
|
343
|
+
}
|
|
344
|
+
function _templateObject19() {
|
|
345
|
+
var data = _tagged_template_literal([
|
|
346
|
+
"\n width: ",
|
|
347
|
+
"px;\n box-sizing: border-box;\n\n * {\n box-sizing: border-box;\n }\n"
|
|
348
|
+
]);
|
|
349
|
+
_templateObject19 = function _templateObject() {
|
|
350
|
+
return data;
|
|
351
|
+
};
|
|
352
|
+
return data;
|
|
353
|
+
}
|
|
354
|
+
function _templateObject20() {
|
|
355
|
+
var data = _tagged_template_literal([
|
|
356
|
+
"\n display: ",
|
|
357
|
+
";\n margin-left: ",
|
|
358
|
+
"px;\n"
|
|
359
|
+
]);
|
|
360
|
+
_templateObject20 = function _templateObject() {
|
|
361
|
+
return data;
|
|
362
|
+
};
|
|
363
|
+
return data;
|
|
364
|
+
}
|
|
365
|
+
function _templateObject21() {
|
|
366
|
+
var data = _tagged_template_literal([
|
|
367
|
+
"\n cursor: pointer;\n\n &:hover {\n fill: ",
|
|
368
|
+
";\n }\n\n &:active {\n fill: ",
|
|
369
|
+
";\n }\n"
|
|
370
|
+
]);
|
|
371
|
+
_templateObject21 = function _templateObject() {
|
|
372
|
+
return data;
|
|
373
|
+
};
|
|
374
|
+
return data;
|
|
375
|
+
}
|
|
376
|
+
function _templateObject22() {
|
|
377
|
+
var data = _tagged_template_literal([
|
|
378
|
+
"\n font-family: sans-serif;\n pointer-events: none;\n user-select: none;\n"
|
|
379
|
+
]);
|
|
380
|
+
_templateObject22 = function _templateObject() {
|
|
381
|
+
return data;
|
|
382
|
+
};
|
|
383
|
+
return data;
|
|
384
|
+
}
|
|
385
|
+
function _templateObject23() {
|
|
386
|
+
var data = _tagged_template_literal([
|
|
387
|
+
"\n user-select: none;\n"
|
|
388
|
+
]);
|
|
389
|
+
_templateObject23 = function _templateObject() {
|
|
390
|
+
return data;
|
|
391
|
+
};
|
|
392
|
+
return data;
|
|
393
|
+
}
|
|
394
|
+
var __create = Object.create;
|
|
395
|
+
var __defProp = Object.defineProperty;
|
|
396
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
397
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
398
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
399
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
400
|
+
var __export = function(target, all) {
|
|
401
|
+
for(var name in all)__defProp(target, name, {
|
|
402
|
+
get: all[name],
|
|
403
|
+
enumerable: true
|
|
404
|
+
});
|
|
405
|
+
};
|
|
406
|
+
var __copyProps = function(to, from, except, desc) {
|
|
407
|
+
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
408
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
409
|
+
try {
|
|
410
|
+
var _loop = function() {
|
|
411
|
+
var key = _step.value;
|
|
412
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
413
|
+
get: function() {
|
|
414
|
+
return from[key];
|
|
415
|
+
},
|
|
416
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
417
|
+
});
|
|
418
|
+
};
|
|
419
|
+
for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
420
|
+
} catch (err) {
|
|
421
|
+
_didIteratorError = true;
|
|
422
|
+
_iteratorError = err;
|
|
423
|
+
} finally{
|
|
424
|
+
try {
|
|
425
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
426
|
+
_iterator.return();
|
|
427
|
+
}
|
|
428
|
+
} finally{
|
|
429
|
+
if (_didIteratorError) {
|
|
430
|
+
throw _iteratorError;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return to;
|
|
436
|
+
};
|
|
437
|
+
var __toESM = function(mod, isNodeMode, target) {
|
|
438
|
+
return target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(// If the importer is in node compatibility mode or this is not an ESM
|
|
439
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
440
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
441
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
442
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
443
|
+
value: mod,
|
|
444
|
+
enumerable: true
|
|
445
|
+
}) : target, mod);
|
|
446
|
+
};
|
|
447
|
+
var __toCommonJS = function(mod) {
|
|
448
|
+
return __copyProps(__defProp({}, "__esModule", {
|
|
449
|
+
value: true
|
|
450
|
+
}), mod);
|
|
451
|
+
};
|
|
452
|
+
// src/index.ts
|
|
453
|
+
var index_exports = {};
|
|
454
|
+
__export(index_exports, {
|
|
455
|
+
Keyboard: function() {
|
|
456
|
+
return Keyboard;
|
|
457
|
+
},
|
|
458
|
+
Piano: function() {
|
|
459
|
+
return Piano;
|
|
460
|
+
},
|
|
461
|
+
useKeyboardControl: function() {
|
|
462
|
+
return useKeyboardControl;
|
|
463
|
+
},
|
|
464
|
+
useMiniKeys: function() {
|
|
465
|
+
return useMiniKeys;
|
|
466
|
+
},
|
|
467
|
+
useMiniKeysKeyboard: function() {
|
|
468
|
+
return useMiniKeysKeyboard;
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
module.exports = __toCommonJS(index_exports);
|
|
472
|
+
// src/hooks/useKeyboardControl.ts
|
|
473
|
+
var import_minikeys = require("minikeys");
|
|
474
|
+
var import_react = require("react");
|
|
475
|
+
var useKeyboardControl = function(keyMap, playNoteFromMidi, modifierKeys) {
|
|
476
|
+
var _ref = _sliced_to_array((0, import_react.useState)([]), 2), activeKeys = _ref[0], setActiveKeys = _ref[1];
|
|
477
|
+
(0, import_react.useEffect)(function() {
|
|
478
|
+
var handleKeyDown = function(event) {
|
|
479
|
+
var _keyMap_get;
|
|
480
|
+
var modifierKey = modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.find(function(modifierKey2) {
|
|
481
|
+
return modifierKey2.keyCode === event.code;
|
|
482
|
+
});
|
|
483
|
+
if (!modifierKey && activeKeys.some(function(key) {
|
|
484
|
+
return key.keyCode === event.code;
|
|
485
|
+
})) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (modifierKey && !(keyMap === null || keyMap === void 0 ? void 0 : keyMap.get(event.code))) {
|
|
489
|
+
modifierKey === null || modifierKey === void 0 ? void 0 : modifierKey.action();
|
|
490
|
+
}
|
|
491
|
+
var note = keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(event.code)) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.midiNote;
|
|
492
|
+
if (note && playNoteFromMidi) {
|
|
493
|
+
playNoteFromMidi(note);
|
|
494
|
+
}
|
|
495
|
+
setActiveKeys(function(prev) {
|
|
496
|
+
return _to_consumable_array(prev).concat([
|
|
497
|
+
{
|
|
498
|
+
keyCode: event.code,
|
|
499
|
+
note: note ? import_minikeys.midiToNote[note] : void 0
|
|
500
|
+
}
|
|
501
|
+
]);
|
|
502
|
+
});
|
|
503
|
+
};
|
|
504
|
+
var handleKeyUp = function(event) {
|
|
505
|
+
setActiveKeys(function(prev) {
|
|
506
|
+
return prev.filter(function(key) {
|
|
507
|
+
return key.keyCode !== event.code;
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
var modifierKey = modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.find(function(modifierKey2) {
|
|
511
|
+
return modifierKey2.keyCode === event.code;
|
|
512
|
+
});
|
|
513
|
+
if (modifierKey && !(keyMap === null || keyMap === void 0 ? void 0 : keyMap.get(event.code))) {
|
|
514
|
+
(modifierKey === null || modifierKey === void 0 ? void 0 : modifierKey.actionOnRelease) && (modifierKey === null || modifierKey === void 0 ? void 0 : modifierKey.actionOnRelease());
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
window.addEventListener("keydown", handleKeyDown, true);
|
|
518
|
+
window.addEventListener("keyup", handleKeyUp, true);
|
|
519
|
+
return function() {
|
|
520
|
+
window.removeEventListener("keydown", handleKeyDown, true);
|
|
521
|
+
window.removeEventListener("keyup", handleKeyUp, true);
|
|
522
|
+
};
|
|
523
|
+
}, [
|
|
524
|
+
keyMap,
|
|
525
|
+
playNoteFromMidi,
|
|
526
|
+
modifierKeys
|
|
527
|
+
]);
|
|
528
|
+
return {
|
|
529
|
+
activeKeys: activeKeys
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
// src/hooks/useMiniKeys.ts
|
|
533
|
+
var import_minikeys2 = require("minikeys");
|
|
534
|
+
var import_react2 = require("react");
|
|
535
|
+
var useMiniKeys = function(samples) {
|
|
536
|
+
var minikeysRef = (0, import_react2.useRef)(null);
|
|
537
|
+
var _ref = _sliced_to_array((0, import_react2.useState)(0), 2), progress = _ref[0], setProgress = _ref[1];
|
|
538
|
+
var _ref1 = _sliced_to_array((0, import_react2.useState)(true), 2), isLoading = _ref1[0], setIsLoading = _ref1[1];
|
|
539
|
+
var _ref2 = _sliced_to_array((0, import_react2.useState)(false), 2), isSuccess = _ref2[0], setIsSuccess = _ref2[1];
|
|
540
|
+
var _ref3 = _sliced_to_array((0, import_react2.useState)(false), 2), isError = _ref3[0], setIsError = _ref3[1];
|
|
541
|
+
var _ref4 = _sliced_to_array((0, import_react2.useState)(false), 2), sustain = _ref4[0], setSustain = _ref4[1];
|
|
542
|
+
(0, import_react2.useEffect)(function() {
|
|
543
|
+
if (!minikeysRef.current) {
|
|
544
|
+
minikeysRef.current = new import_minikeys2.MiniKeys();
|
|
545
|
+
}
|
|
546
|
+
return function() {
|
|
547
|
+
minikeysRef.current = null;
|
|
548
|
+
};
|
|
549
|
+
}, []);
|
|
550
|
+
var setMiniKeysSustain = function(sustain2) {
|
|
551
|
+
if (minikeysRef.current) {
|
|
552
|
+
minikeysRef.current.setSustain(sustain2);
|
|
553
|
+
setSustain(sustain2);
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
(0, import_react2.useEffect)(function() {
|
|
557
|
+
if (minikeysRef.current) {
|
|
558
|
+
setIsLoading(true);
|
|
559
|
+
minikeysRef.current.loadNotes(samples, setProgress).then(function() {
|
|
560
|
+
setIsLoading(false);
|
|
561
|
+
setIsSuccess(true);
|
|
562
|
+
}).catch(function() {
|
|
563
|
+
setIsLoading(false);
|
|
564
|
+
setIsError(true);
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
}, [
|
|
568
|
+
samples
|
|
569
|
+
]);
|
|
570
|
+
return {
|
|
571
|
+
playNoteFromName: minikeysRef.current ? minikeysRef.current.playNoteFromName : void 0,
|
|
572
|
+
playNoteFromMidi: minikeysRef.current ? minikeysRef.current.playNoteFromMidi : void 0,
|
|
573
|
+
setSustain: setMiniKeysSustain,
|
|
574
|
+
sustain: sustain,
|
|
575
|
+
isLoading: isLoading,
|
|
576
|
+
isSuccess: isSuccess,
|
|
577
|
+
isError: isError,
|
|
578
|
+
progress: progress
|
|
579
|
+
};
|
|
580
|
+
};
|
|
581
|
+
// src/hooks/useMiniKeysKeyboard.ts
|
|
582
|
+
var import_minikeys3 = require("minikeys");
|
|
583
|
+
var import_react3 = require("react");
|
|
584
|
+
var useMiniKeysKeyboard = function(mode) {
|
|
585
|
+
var _miniKeysKeyboardRef_current;
|
|
586
|
+
var miniKeysKeyboardRef = (0, import_react3.useRef)(null);
|
|
587
|
+
var _ref = _sliced_to_array((0, import_react3.useState)(), 2), keyMap = _ref[0], setKeyMap = _ref[1];
|
|
588
|
+
var noteRange = (_miniKeysKeyboardRef_current = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current === void 0 ? void 0 : _miniKeysKeyboardRef_current.getNoteRange();
|
|
589
|
+
(0, import_react3.useEffect)(function() {
|
|
590
|
+
if (!miniKeysKeyboardRef.current) {
|
|
591
|
+
miniKeysKeyboardRef.current = new import_minikeys3.MiniKeysKeyboard(mode);
|
|
592
|
+
setKeyMap(miniKeysKeyboardRef.current.getNoteMap());
|
|
593
|
+
}
|
|
594
|
+
return function() {
|
|
595
|
+
miniKeysKeyboardRef.current = null;
|
|
596
|
+
setKeyMap(void 0);
|
|
597
|
+
};
|
|
598
|
+
}, [
|
|
599
|
+
mode
|
|
600
|
+
]);
|
|
601
|
+
var transposeDown = function() {
|
|
602
|
+
var _miniKeysKeyboardRef_current, _miniKeysKeyboardRef_current1;
|
|
603
|
+
(_miniKeysKeyboardRef_current = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current === void 0 ? void 0 : _miniKeysKeyboardRef_current.shiftLeft();
|
|
604
|
+
setKeyMap((_miniKeysKeyboardRef_current1 = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current1 === void 0 ? void 0 : _miniKeysKeyboardRef_current1.getNoteMap());
|
|
605
|
+
};
|
|
606
|
+
var transposeUp = function() {
|
|
607
|
+
var _miniKeysKeyboardRef_current, _miniKeysKeyboardRef_current1;
|
|
608
|
+
(_miniKeysKeyboardRef_current = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current === void 0 ? void 0 : _miniKeysKeyboardRef_current.shiftRight();
|
|
609
|
+
setKeyMap((_miniKeysKeyboardRef_current1 = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current1 === void 0 ? void 0 : _miniKeysKeyboardRef_current1.getNoteMap());
|
|
610
|
+
};
|
|
611
|
+
var octaveDown = function() {
|
|
612
|
+
var _miniKeysKeyboardRef_current, _miniKeysKeyboardRef_current1;
|
|
613
|
+
(_miniKeysKeyboardRef_current = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current === void 0 ? void 0 : _miniKeysKeyboardRef_current.shiftLeftOctave();
|
|
614
|
+
setKeyMap((_miniKeysKeyboardRef_current1 = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current1 === void 0 ? void 0 : _miniKeysKeyboardRef_current1.getNoteMap());
|
|
615
|
+
};
|
|
616
|
+
var octaveUp = function() {
|
|
617
|
+
var _miniKeysKeyboardRef_current, _miniKeysKeyboardRef_current1;
|
|
618
|
+
(_miniKeysKeyboardRef_current = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current === void 0 ? void 0 : _miniKeysKeyboardRef_current.shiftRightOctave();
|
|
619
|
+
setKeyMap((_miniKeysKeyboardRef_current1 = miniKeysKeyboardRef.current) === null || _miniKeysKeyboardRef_current1 === void 0 ? void 0 : _miniKeysKeyboardRef_current1.getNoteMap());
|
|
620
|
+
};
|
|
621
|
+
return {
|
|
622
|
+
keyMap: keyMap,
|
|
623
|
+
noteRange: noteRange,
|
|
624
|
+
transposeDown: transposeDown,
|
|
625
|
+
transposeUp: transposeUp,
|
|
626
|
+
octaveDown: octaveDown,
|
|
627
|
+
octaveUp: octaveUp
|
|
628
|
+
};
|
|
629
|
+
};
|
|
630
|
+
// src/Keyboard/Keyboard.tsx
|
|
631
|
+
var import_react5 = require("react");
|
|
632
|
+
var import_styled_components3 = __toESM(require("styled-components"), 1);
|
|
633
|
+
// src/Keyboard/Key.tsx
|
|
634
|
+
var import_react4 = require("react");
|
|
635
|
+
var import_styled_components2 = __toESM(require("styled-components"), 1);
|
|
636
|
+
// src/Keyboard/Indicator.tsx
|
|
637
|
+
var import_styled_components = __toESM(require("styled-components"), 1);
|
|
638
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
639
|
+
var Indicator = function(param) {
|
|
640
|
+
var state = param.state;
|
|
641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ColourIndicator, {
|
|
642
|
+
$state: state
|
|
643
|
+
});
|
|
644
|
+
};
|
|
645
|
+
var ColourIndicator = import_styled_components.default.div(_templateObject1(), function(param) {
|
|
646
|
+
var $state = param.$state;
|
|
647
|
+
return $state === "active" && import_styled_components.css(_templateObject());
|
|
648
|
+
});
|
|
649
|
+
var Container = import_styled_components.default.div(_templateObject3(), function(param) {
|
|
650
|
+
var $active = param.$active;
|
|
651
|
+
return $active && import_styled_components.css(_templateObject2());
|
|
652
|
+
});
|
|
653
|
+
// src/Keyboard/Key.tsx
|
|
654
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
655
|
+
var Key = function(param) {
|
|
656
|
+
var label = param.label, size = param.size, hidden = param.hidden, hiddenOpacity = param.hiddenOpacity, baseWidth = param.baseWidth, active = param.active, keyType = param.keyType, modifier = param.modifier, delayDisplay = param.delayDisplay, indicator = param.indicator, onClick = param.onClick;
|
|
657
|
+
var _ref = _sliced_to_array((0, import_react4.useState)(delayDisplay !== void 0 && delayDisplay !== null), 2), hide = _ref[0], setHide = _ref[1];
|
|
658
|
+
if (active) {
|
|
659
|
+
console.log(active);
|
|
660
|
+
}
|
|
661
|
+
(0, import_react4.useEffect)(function() {
|
|
662
|
+
if (hide) {
|
|
663
|
+
setTimeout(function() {
|
|
664
|
+
setHide(false);
|
|
665
|
+
}, (delayDisplay !== null && delayDisplay !== void 0 ? delayDisplay : 0) * 10);
|
|
666
|
+
}
|
|
667
|
+
}, []);
|
|
668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Container2, {
|
|
669
|
+
$hidden: hidden,
|
|
670
|
+
$hiddenOpacity: hiddenOpacity,
|
|
671
|
+
$width: baseWidth * (size !== null && size !== void 0 ? size : 1),
|
|
672
|
+
$height: baseWidth,
|
|
673
|
+
$hide: hide,
|
|
674
|
+
children: [
|
|
675
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Keycap, {
|
|
676
|
+
$size: size,
|
|
677
|
+
$active: active || false,
|
|
678
|
+
$keyType: modifier ? "modifier" : keyType,
|
|
679
|
+
onMouseDown: modifier ? modifier.action : onClick,
|
|
680
|
+
$bgColour: modifier === null || modifier === void 0 ? void 0 : modifier.bgColour,
|
|
681
|
+
$colour: modifier === null || modifier === void 0 ? void 0 : modifier.colour,
|
|
682
|
+
children: [
|
|
683
|
+
label,
|
|
684
|
+
modifier && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Label, {
|
|
685
|
+
$size: size,
|
|
686
|
+
children: modifier.label
|
|
687
|
+
})
|
|
688
|
+
]
|
|
689
|
+
}),
|
|
690
|
+
indicator && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Indicator, {
|
|
691
|
+
state: indicator
|
|
692
|
+
})
|
|
693
|
+
]
|
|
694
|
+
});
|
|
695
|
+
};
|
|
696
|
+
var Container2 = import_styled_components2.default.div(_templateObject5(), function(props) {
|
|
697
|
+
return props.$width;
|
|
698
|
+
}, function(props) {
|
|
699
|
+
return props.$height;
|
|
700
|
+
}, function(props) {
|
|
701
|
+
return props.$hiddenOpacity ? 0 : 1;
|
|
702
|
+
}, function(props) {
|
|
703
|
+
return props.$hidden ? "none" : "block";
|
|
704
|
+
}, function(param) {
|
|
705
|
+
var $hide = param.$hide, $hiddenOpacity = param.$hiddenOpacity;
|
|
706
|
+
return !$hide && !$hiddenOpacity && import_styled_components2.css(_templateObject4());
|
|
707
|
+
});
|
|
708
|
+
var disabledKeycap = import_styled_components2.css(_templateObject6());
|
|
709
|
+
var unplayableKeycap = import_styled_components2.css(_templateObject7());
|
|
710
|
+
var activeKeycap = import_styled_components2.css(_templateObject8());
|
|
711
|
+
var blackKeycap = import_styled_components2.css(_templateObject9(), activeKeycap);
|
|
712
|
+
var whiteKeycap = import_styled_components2.css(_templateObject10(), activeKeycap);
|
|
713
|
+
var activeKeycapWhite = import_styled_components2.css(_templateObject11(), activeKeycap);
|
|
714
|
+
var activeKeycapBlack = import_styled_components2.css(_templateObject12(), activeKeycap);
|
|
715
|
+
var activeKeycapModifier = import_styled_components2.css(_templateObject13(), activeKeycap);
|
|
716
|
+
var playableKeycap = import_styled_components2.css(_templateObject14());
|
|
717
|
+
var Keycap = import_styled_components2.default.div(_templateObject16(), function(param) {
|
|
718
|
+
var $keyType = param.$keyType, $bgColour = param.$bgColour, $colour = param.$colour;
|
|
719
|
+
if ($keyType === void 0) {
|
|
720
|
+
return unplayableKeycap;
|
|
721
|
+
} else if ($keyType === "disabled") {
|
|
722
|
+
return disabledKeycap;
|
|
723
|
+
} else if ($keyType === "black") {
|
|
724
|
+
return blackKeycap;
|
|
725
|
+
} else if ($keyType === "white") {
|
|
726
|
+
return whiteKeycap;
|
|
727
|
+
} else if ($keyType === "modifier") {
|
|
728
|
+
return import_styled_components2.css(_templateObject15(), $bgColour || "#eee", $colour, !$bgColour && "border: 1px solid #ddd;", activeKeycapModifier);
|
|
729
|
+
}
|
|
730
|
+
}, function(param) {
|
|
731
|
+
var $active = param.$active, $keyType = param.$keyType;
|
|
732
|
+
if ($keyType !== "disabled" && $keyType !== "unplayable" && $active) {
|
|
733
|
+
if ($keyType === "white") return activeKeycapWhite;
|
|
734
|
+
if ($keyType === "black") return activeKeycapBlack;
|
|
735
|
+
if ($keyType === "modifier") return activeKeycapModifier;
|
|
736
|
+
}
|
|
737
|
+
}, function(param) {
|
|
738
|
+
var $size = param.$size, $keyType = param.$keyType;
|
|
739
|
+
if (!$size && $keyType !== "modifier") {
|
|
740
|
+
return playableKeycap;
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
var Label = import_styled_components2.default.span(_templateObject18(), function(param) {
|
|
744
|
+
var $size = param.$size;
|
|
745
|
+
return !$size && import_styled_components2.css(_templateObject17());
|
|
746
|
+
});
|
|
747
|
+
// src/Keyboard/utils.ts
|
|
748
|
+
var keyCodeToLabel = /* @__PURE__ */ new Map([
|
|
749
|
+
[
|
|
750
|
+
"Digit1",
|
|
751
|
+
"1"
|
|
752
|
+
],
|
|
753
|
+
[
|
|
754
|
+
"Digit2",
|
|
755
|
+
"2"
|
|
756
|
+
],
|
|
757
|
+
[
|
|
758
|
+
"Digit3",
|
|
759
|
+
"3"
|
|
760
|
+
],
|
|
761
|
+
[
|
|
762
|
+
"Digit4",
|
|
763
|
+
"4"
|
|
764
|
+
],
|
|
765
|
+
[
|
|
766
|
+
"Digit5",
|
|
767
|
+
"5"
|
|
768
|
+
],
|
|
769
|
+
[
|
|
770
|
+
"Digit6",
|
|
771
|
+
"6"
|
|
772
|
+
],
|
|
773
|
+
[
|
|
774
|
+
"Digit7",
|
|
775
|
+
"7"
|
|
776
|
+
],
|
|
777
|
+
[
|
|
778
|
+
"Digit8",
|
|
779
|
+
"8"
|
|
780
|
+
],
|
|
781
|
+
[
|
|
782
|
+
"Digit9",
|
|
783
|
+
"9"
|
|
784
|
+
],
|
|
785
|
+
[
|
|
786
|
+
"Digit0",
|
|
787
|
+
"0"
|
|
788
|
+
],
|
|
789
|
+
[
|
|
790
|
+
"Minus",
|
|
791
|
+
"-"
|
|
792
|
+
],
|
|
793
|
+
[
|
|
794
|
+
"Equal",
|
|
795
|
+
"="
|
|
796
|
+
],
|
|
797
|
+
[
|
|
798
|
+
"KeyQ",
|
|
799
|
+
"q"
|
|
800
|
+
],
|
|
801
|
+
[
|
|
802
|
+
"KeyW",
|
|
803
|
+
"w"
|
|
804
|
+
],
|
|
805
|
+
[
|
|
806
|
+
"KeyE",
|
|
807
|
+
"e"
|
|
808
|
+
],
|
|
809
|
+
[
|
|
810
|
+
"KeyR",
|
|
811
|
+
"r"
|
|
812
|
+
],
|
|
813
|
+
[
|
|
814
|
+
"KeyT",
|
|
815
|
+
"t"
|
|
816
|
+
],
|
|
817
|
+
[
|
|
818
|
+
"KeyY",
|
|
819
|
+
"y"
|
|
820
|
+
],
|
|
821
|
+
[
|
|
822
|
+
"KeyU",
|
|
823
|
+
"u"
|
|
824
|
+
],
|
|
825
|
+
[
|
|
826
|
+
"KeyI",
|
|
827
|
+
"i"
|
|
828
|
+
],
|
|
829
|
+
[
|
|
830
|
+
"KeyO",
|
|
831
|
+
"o"
|
|
832
|
+
],
|
|
833
|
+
[
|
|
834
|
+
"KeyP",
|
|
835
|
+
"p"
|
|
836
|
+
],
|
|
837
|
+
[
|
|
838
|
+
"BracketLeft",
|
|
839
|
+
"["
|
|
840
|
+
],
|
|
841
|
+
[
|
|
842
|
+
"BracketRight",
|
|
843
|
+
"]"
|
|
844
|
+
],
|
|
845
|
+
[
|
|
846
|
+
"KeyA",
|
|
847
|
+
"a"
|
|
848
|
+
],
|
|
849
|
+
[
|
|
850
|
+
"KeyS",
|
|
851
|
+
"s"
|
|
852
|
+
],
|
|
853
|
+
[
|
|
854
|
+
"KeyD",
|
|
855
|
+
"d"
|
|
856
|
+
],
|
|
857
|
+
[
|
|
858
|
+
"KeyF",
|
|
859
|
+
"f"
|
|
860
|
+
],
|
|
861
|
+
[
|
|
862
|
+
"KeyG",
|
|
863
|
+
"g"
|
|
864
|
+
],
|
|
865
|
+
[
|
|
866
|
+
"KeyH",
|
|
867
|
+
"h"
|
|
868
|
+
],
|
|
869
|
+
[
|
|
870
|
+
"KeyJ",
|
|
871
|
+
"j"
|
|
872
|
+
],
|
|
873
|
+
[
|
|
874
|
+
"KeyK",
|
|
875
|
+
"k"
|
|
876
|
+
],
|
|
877
|
+
[
|
|
878
|
+
"KeyL",
|
|
879
|
+
"l"
|
|
880
|
+
],
|
|
881
|
+
[
|
|
882
|
+
"Semicolon",
|
|
883
|
+
";"
|
|
884
|
+
],
|
|
885
|
+
[
|
|
886
|
+
"Quote",
|
|
887
|
+
"'"
|
|
888
|
+
],
|
|
889
|
+
[
|
|
890
|
+
"KeyZ",
|
|
891
|
+
"z"
|
|
892
|
+
],
|
|
893
|
+
[
|
|
894
|
+
"KeyX",
|
|
895
|
+
"x"
|
|
896
|
+
],
|
|
897
|
+
[
|
|
898
|
+
"KeyC",
|
|
899
|
+
"c"
|
|
900
|
+
],
|
|
901
|
+
[
|
|
902
|
+
"KeyV",
|
|
903
|
+
"v"
|
|
904
|
+
],
|
|
905
|
+
[
|
|
906
|
+
"KeyB",
|
|
907
|
+
"b"
|
|
908
|
+
],
|
|
909
|
+
[
|
|
910
|
+
"KeyN",
|
|
911
|
+
"n"
|
|
912
|
+
],
|
|
913
|
+
[
|
|
914
|
+
"KeyM",
|
|
915
|
+
"m"
|
|
916
|
+
],
|
|
917
|
+
[
|
|
918
|
+
"Comma",
|
|
919
|
+
","
|
|
920
|
+
],
|
|
921
|
+
[
|
|
922
|
+
"Period",
|
|
923
|
+
"."
|
|
924
|
+
],
|
|
925
|
+
[
|
|
926
|
+
"Slash",
|
|
927
|
+
"/"
|
|
928
|
+
]
|
|
929
|
+
]);
|
|
930
|
+
var keyboardRows = [
|
|
931
|
+
[
|
|
932
|
+
"Digit1",
|
|
933
|
+
"Digit2",
|
|
934
|
+
"Digit3",
|
|
935
|
+
"Digit4",
|
|
936
|
+
"Digit5",
|
|
937
|
+
"Digit6",
|
|
938
|
+
"Digit7",
|
|
939
|
+
"Digit8",
|
|
940
|
+
"Digit9",
|
|
941
|
+
"Digit0",
|
|
942
|
+
"Minus",
|
|
943
|
+
"Equal"
|
|
944
|
+
],
|
|
945
|
+
[
|
|
946
|
+
"KeyQ",
|
|
947
|
+
"KeyW",
|
|
948
|
+
"KeyE",
|
|
949
|
+
"KeyR",
|
|
950
|
+
"KeyT",
|
|
951
|
+
"KeyY",
|
|
952
|
+
"KeyU",
|
|
953
|
+
"KeyI",
|
|
954
|
+
"KeyO",
|
|
955
|
+
"KeyP",
|
|
956
|
+
"BracketLeft",
|
|
957
|
+
"BracketRight"
|
|
958
|
+
],
|
|
959
|
+
[
|
|
960
|
+
"KeyA",
|
|
961
|
+
"KeyS",
|
|
962
|
+
"KeyD",
|
|
963
|
+
"KeyF",
|
|
964
|
+
"KeyG",
|
|
965
|
+
"KeyH",
|
|
966
|
+
"KeyJ",
|
|
967
|
+
"KeyK",
|
|
968
|
+
"KeyL",
|
|
969
|
+
"Semicolon",
|
|
970
|
+
"Quote"
|
|
971
|
+
],
|
|
972
|
+
[
|
|
973
|
+
"KeyZ",
|
|
974
|
+
"KeyX",
|
|
975
|
+
"KeyC",
|
|
976
|
+
"KeyV",
|
|
977
|
+
"KeyB",
|
|
978
|
+
"KeyN",
|
|
979
|
+
"KeyM",
|
|
980
|
+
"Comma",
|
|
981
|
+
"Period",
|
|
982
|
+
"Slash"
|
|
983
|
+
]
|
|
984
|
+
];
|
|
985
|
+
var optionalModifier = function(keyCodes, modifierKeys) {
|
|
986
|
+
return modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.find(function(modifierKey) {
|
|
987
|
+
return keyCodes.includes(modifierKey.keyCode);
|
|
988
|
+
});
|
|
989
|
+
};
|
|
990
|
+
var getDisplayMap = function(showFullKeyboard, dualMode, modifierKeys) {
|
|
991
|
+
var displayMap = /* @__PURE__ */ new Map();
|
|
992
|
+
displayMap.set("Escape", showFullKeyboard || !!optionalModifier([
|
|
993
|
+
"Escape",
|
|
994
|
+
"IntlBackslash"
|
|
995
|
+
], modifierKeys) ? displayMap.size : null);
|
|
996
|
+
if (showFullKeyboard || dualMode) {
|
|
997
|
+
keyboardRows[0].forEach(function(key) {
|
|
998
|
+
return displayMap.set(key, displayMap.size);
|
|
999
|
+
});
|
|
1000
|
+
} else {
|
|
1001
|
+
keyboardRows[0].forEach(function(key) {
|
|
1002
|
+
displayMap.set(key, !!optionalModifier([
|
|
1003
|
+
key
|
|
1004
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
1007
|
+
displayMap.set("Backspace", showFullKeyboard || !!optionalModifier([
|
|
1008
|
+
"Backspace"
|
|
1009
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1010
|
+
displayMap.set("Tab", showFullKeyboard || !!optionalModifier([
|
|
1011
|
+
"Tab",
|
|
1012
|
+
"Backquote"
|
|
1013
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1014
|
+
keyboardRows[1].forEach(function(key) {
|
|
1015
|
+
return displayMap.set(key, displayMap.size);
|
|
1016
|
+
});
|
|
1017
|
+
displayMap.set("Backquote", showFullKeyboard || !!optionalModifier([
|
|
1018
|
+
"Backquote"
|
|
1019
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1020
|
+
displayMap.set("CapsLock", showFullKeyboard || !!optionalModifier([
|
|
1021
|
+
"CapsLock"
|
|
1022
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1023
|
+
keyboardRows[2].forEach(function(key) {
|
|
1024
|
+
return displayMap.set(key, displayMap.size);
|
|
1025
|
+
});
|
|
1026
|
+
displayMap.set("Enter", showFullKeyboard || !!optionalModifier([
|
|
1027
|
+
"Enter"
|
|
1028
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1029
|
+
displayMap.set("ShiftLeft", showFullKeyboard || !!optionalModifier([
|
|
1030
|
+
"ShiftLeft"
|
|
1031
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1032
|
+
if (showFullKeyboard || dualMode) {
|
|
1033
|
+
keyboardRows[3].forEach(function(key) {
|
|
1034
|
+
return displayMap.set(key, displayMap.size);
|
|
1035
|
+
});
|
|
1036
|
+
} else {
|
|
1037
|
+
keyboardRows[3].forEach(function(key) {
|
|
1038
|
+
displayMap.set(key, !!optionalModifier([
|
|
1039
|
+
key
|
|
1040
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1041
|
+
});
|
|
1042
|
+
}
|
|
1043
|
+
displayMap.set("ShiftRight", showFullKeyboard || !!optionalModifier([
|
|
1044
|
+
"ShiftRight"
|
|
1045
|
+
], modifierKeys) ? displayMap.size : null);
|
|
1046
|
+
return displayMap;
|
|
1047
|
+
};
|
|
1048
|
+
// src/Keyboard/Keyboard.tsx
|
|
1049
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1050
|
+
var activeKeysIncludes = function(activeKeys, key) {
|
|
1051
|
+
return activeKeys.map(function(activeKey) {
|
|
1052
|
+
return activeKey.keyCode;
|
|
1053
|
+
}).includes(key);
|
|
1054
|
+
};
|
|
1055
|
+
var Keyboard = function(param) {
|
|
1056
|
+
var _param_width = param.width, width = _param_width === void 0 ? 1200 : _param_width, _param_dualMode = param.dualMode, dualMode = _param_dualMode === void 0 ? false : _param_dualMode, _param_showFullKeyboard = param.showFullKeyboard, showFullKeyboard = _param_showFullKeyboard === void 0 ? false : _param_showFullKeyboard, modifierKeys = param.modifierKeys, activeKeys = param.activeKeys, keyMap = param.keyMap, _param_animate = param.animate, animate = _param_animate === void 0 ? false : _param_animate, onKeyClick = param.onKeyClick;
|
|
1057
|
+
var nonPlayableModifierKey = modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.some(function(modifierKey) {
|
|
1058
|
+
return !Array.from(keyCodeToLabel.keys()).includes(modifierKey.keyCode);
|
|
1059
|
+
});
|
|
1060
|
+
var baseWidth = width / (showFullKeyboard || nonPlayableModifierKey ? 15 : 12.5);
|
|
1061
|
+
var calculateRowShift = function(shift) {
|
|
1062
|
+
if (showFullKeyboard) {
|
|
1063
|
+
return 0;
|
|
1064
|
+
} else {
|
|
1065
|
+
if (dualMode || nonPlayableModifierKey) {
|
|
1066
|
+
return baseWidth * shift;
|
|
1067
|
+
} else {
|
|
1068
|
+
return baseWidth * shift - baseWidth * 0.5;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
};
|
|
1072
|
+
var handleClick = function(midiNote) {
|
|
1073
|
+
if (onKeyClick && midiNote !== null && midiNote !== void 0) {
|
|
1074
|
+
onKeyClick(midiNote);
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
1077
|
+
var displayMap = (0, import_react5.useMemo)(function() {
|
|
1078
|
+
return getDisplayMap(showFullKeyboard, dualMode, modifierKeys);
|
|
1079
|
+
}, [
|
|
1080
|
+
showFullKeyboard,
|
|
1081
|
+
dualMode,
|
|
1082
|
+
modifierKeys
|
|
1083
|
+
]);
|
|
1084
|
+
console.log(activeKeys, keyboardRows[0][1], activeKeysIncludes(activeKeys, keyboardRows[0][1]));
|
|
1085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Container3, {
|
|
1086
|
+
$width: width,
|
|
1087
|
+
children: [
|
|
1088
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Row, {
|
|
1089
|
+
$shift: nonPlayableModifierKey ? (modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.some(function(modifierKey) {
|
|
1090
|
+
return [
|
|
1091
|
+
"Escape",
|
|
1092
|
+
"IntlBackslash"
|
|
1093
|
+
].includes(modifierKey.keyCode);
|
|
1094
|
+
})) ? 0 : calculateRowShift(1) : calculateRowShift(0),
|
|
1095
|
+
$show: displayMap.get("Escape") !== null || displayMap.get("Backspace") !== null || keyboardRows[0].some(function(key) {
|
|
1096
|
+
return displayMap.get(key) !== null;
|
|
1097
|
+
}),
|
|
1098
|
+
children: [
|
|
1099
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1100
|
+
delayDisplay: animate ? displayMap.get("Escape") : null,
|
|
1101
|
+
baseWidth: baseWidth,
|
|
1102
|
+
size: 1,
|
|
1103
|
+
hidden: displayMap.get("Escape") === null,
|
|
1104
|
+
label: "esc",
|
|
1105
|
+
active: activeKeysIncludes(activeKeys, "Escape") || activeKeysIncludes(activeKeys, "IntlBackslash"),
|
|
1106
|
+
modifier: optionalModifier([
|
|
1107
|
+
"Escape",
|
|
1108
|
+
"IntlBackslash"
|
|
1109
|
+
], modifierKeys)
|
|
1110
|
+
}),
|
|
1111
|
+
Array.from({
|
|
1112
|
+
length: 12
|
|
1113
|
+
}).map(function(_, i) {
|
|
1114
|
+
var _keyMap_get;
|
|
1115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1116
|
+
delayDisplay: animate ? displayMap.get(keyboardRows[0][i]) : null,
|
|
1117
|
+
baseWidth: baseWidth,
|
|
1118
|
+
label: keyCodeToLabel.get(keyboardRows[0][i]),
|
|
1119
|
+
keyType: keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[0][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.type,
|
|
1120
|
+
active: activeKeysIncludes(activeKeys, keyboardRows[0][i]),
|
|
1121
|
+
onClick: function() {
|
|
1122
|
+
var _keyMap_get;
|
|
1123
|
+
return handleClick(keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[0][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.midiNote);
|
|
1124
|
+
},
|
|
1125
|
+
hiddenOpacity: !displayMap.get(keyboardRows[0][i]),
|
|
1126
|
+
modifier: dualMode ? void 0 : optionalModifier([
|
|
1127
|
+
keyboardRows[0][i]
|
|
1128
|
+
], modifierKeys)
|
|
1129
|
+
}, i);
|
|
1130
|
+
}),
|
|
1131
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1132
|
+
delayDisplay: animate ? displayMap.get("Backspace") : null,
|
|
1133
|
+
baseWidth: baseWidth,
|
|
1134
|
+
size: 2,
|
|
1135
|
+
hidden: !displayMap.get("Backspace"),
|
|
1136
|
+
label: "backspace",
|
|
1137
|
+
active: activeKeysIncludes(activeKeys, "Backspace"),
|
|
1138
|
+
modifier: optionalModifier([
|
|
1139
|
+
"Backspace"
|
|
1140
|
+
], modifierKeys)
|
|
1141
|
+
})
|
|
1142
|
+
]
|
|
1143
|
+
}),
|
|
1144
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Row, {
|
|
1145
|
+
$shift: nonPlayableModifierKey ? (modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.some(function(modifierKey) {
|
|
1146
|
+
return [
|
|
1147
|
+
"Tab"
|
|
1148
|
+
].includes(modifierKey.keyCode);
|
|
1149
|
+
})) ? 0 : calculateRowShift(1.5) : calculateRowShift(0.5),
|
|
1150
|
+
$show: true,
|
|
1151
|
+
children: [
|
|
1152
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1153
|
+
delayDisplay: animate ? displayMap.get("Tab") : null,
|
|
1154
|
+
baseWidth: baseWidth,
|
|
1155
|
+
size: 1.5,
|
|
1156
|
+
hidden: !displayMap.get("Tab"),
|
|
1157
|
+
label: "tab",
|
|
1158
|
+
active: activeKeysIncludes(activeKeys, "Tab"),
|
|
1159
|
+
modifier: optionalModifier([
|
|
1160
|
+
"Tab"
|
|
1161
|
+
], modifierKeys)
|
|
1162
|
+
}),
|
|
1163
|
+
Array.from({
|
|
1164
|
+
length: 12
|
|
1165
|
+
}).map(function(_, i) {
|
|
1166
|
+
var _keyMap_get;
|
|
1167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1168
|
+
delayDisplay: animate ? displayMap.get(keyboardRows[1][i]) : null,
|
|
1169
|
+
baseWidth: baseWidth,
|
|
1170
|
+
label: keyCodeToLabel.get(keyboardRows[1][i]),
|
|
1171
|
+
keyType: keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[1][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.type,
|
|
1172
|
+
active: activeKeysIncludes(activeKeys, keyboardRows[1][i]),
|
|
1173
|
+
onClick: function() {
|
|
1174
|
+
var _keyMap_get;
|
|
1175
|
+
return handleClick(keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[1][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.midiNote);
|
|
1176
|
+
}
|
|
1177
|
+
}, i);
|
|
1178
|
+
}),
|
|
1179
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1180
|
+
delayDisplay: animate ? displayMap.get("Backquote") : null,
|
|
1181
|
+
baseWidth: baseWidth,
|
|
1182
|
+
size: 1.5,
|
|
1183
|
+
hidden: !displayMap.get("Backquote"),
|
|
1184
|
+
label: "\\",
|
|
1185
|
+
active: activeKeysIncludes(activeKeys, "Backquote"),
|
|
1186
|
+
modifier: optionalModifier([
|
|
1187
|
+
"Backquote"
|
|
1188
|
+
], modifierKeys)
|
|
1189
|
+
})
|
|
1190
|
+
]
|
|
1191
|
+
}),
|
|
1192
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Row, {
|
|
1193
|
+
$shift: nonPlayableModifierKey ? (modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.some(function(modifierKey) {
|
|
1194
|
+
return [
|
|
1195
|
+
"CapsLock"
|
|
1196
|
+
].includes(modifierKey.keyCode);
|
|
1197
|
+
})) ? 0 : calculateRowShift(1.75) : calculateRowShift(0.75),
|
|
1198
|
+
$show: true,
|
|
1199
|
+
children: [
|
|
1200
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1201
|
+
delayDisplay: animate ? displayMap.get("CapsLock") : null,
|
|
1202
|
+
baseWidth: baseWidth,
|
|
1203
|
+
size: 1.75,
|
|
1204
|
+
hidden: !displayMap.get("CapsLock"),
|
|
1205
|
+
label: "caps lock",
|
|
1206
|
+
active: activeKeysIncludes(activeKeys, "CapsLock"),
|
|
1207
|
+
modifier: optionalModifier([
|
|
1208
|
+
"CapsLock"
|
|
1209
|
+
], modifierKeys),
|
|
1210
|
+
indicator: optionalModifier([
|
|
1211
|
+
"CapsLock"
|
|
1212
|
+
], modifierKeys) && (activeKeysIncludes(activeKeys, "CapsLock") ? "active" : "inactive")
|
|
1213
|
+
}),
|
|
1214
|
+
Array.from({
|
|
1215
|
+
length: 11
|
|
1216
|
+
}).map(function(_, i) {
|
|
1217
|
+
var _keyMap_get;
|
|
1218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1219
|
+
delayDisplay: animate ? displayMap.get(keyboardRows[2][i]) : null,
|
|
1220
|
+
baseWidth: baseWidth,
|
|
1221
|
+
label: keyCodeToLabel.get(keyboardRows[2][i]),
|
|
1222
|
+
keyType: keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[2][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.type,
|
|
1223
|
+
active: activeKeysIncludes(activeKeys, keyboardRows[2][i]),
|
|
1224
|
+
onClick: function() {
|
|
1225
|
+
var _keyMap_get;
|
|
1226
|
+
return handleClick(keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[2][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.midiNote);
|
|
1227
|
+
}
|
|
1228
|
+
}, i);
|
|
1229
|
+
}),
|
|
1230
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1231
|
+
delayDisplay: animate ? displayMap.get("Enter") : null,
|
|
1232
|
+
baseWidth: baseWidth,
|
|
1233
|
+
size: 2.25,
|
|
1234
|
+
hidden: !displayMap.get("Enter"),
|
|
1235
|
+
label: "enter",
|
|
1236
|
+
active: activeKeysIncludes(activeKeys, "Enter"),
|
|
1237
|
+
modifier: optionalModifier([
|
|
1238
|
+
"Enter"
|
|
1239
|
+
], modifierKeys)
|
|
1240
|
+
})
|
|
1241
|
+
]
|
|
1242
|
+
}),
|
|
1243
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Row, {
|
|
1244
|
+
$shift: nonPlayableModifierKey ? (modifierKeys === null || modifierKeys === void 0 ? void 0 : modifierKeys.some(function(modifierKey) {
|
|
1245
|
+
return modifierKey.keyCode === "ShiftLeft";
|
|
1246
|
+
})) ? 0 : calculateRowShift(2.25) : calculateRowShift(1.25),
|
|
1247
|
+
$show: displayMap.get("ShiftLeft") !== null || displayMap.get("ShiftRight") !== null || keyboardRows[3].some(function(key) {
|
|
1248
|
+
return displayMap.get(key) !== null;
|
|
1249
|
+
}),
|
|
1250
|
+
children: [
|
|
1251
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1252
|
+
delayDisplay: animate ? displayMap.get("ShiftLeft") : null,
|
|
1253
|
+
baseWidth: baseWidth,
|
|
1254
|
+
size: 2.25,
|
|
1255
|
+
hidden: !displayMap.get("ShiftLeft"),
|
|
1256
|
+
label: "shift",
|
|
1257
|
+
active: activeKeysIncludes(activeKeys, "ShiftLeft"),
|
|
1258
|
+
modifier: optionalModifier([
|
|
1259
|
+
"ShiftLeft"
|
|
1260
|
+
], modifierKeys)
|
|
1261
|
+
}),
|
|
1262
|
+
Array.from({
|
|
1263
|
+
length: 10
|
|
1264
|
+
}).map(function(_, i) {
|
|
1265
|
+
var _keyMap_get;
|
|
1266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1267
|
+
delayDisplay: animate ? displayMap.get(keyboardRows[3][i]) : null,
|
|
1268
|
+
baseWidth: baseWidth,
|
|
1269
|
+
label: keyCodeToLabel.get(keyboardRows[3][i]),
|
|
1270
|
+
keyType: keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[3][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.type,
|
|
1271
|
+
active: activeKeysIncludes(activeKeys, keyboardRows[3][i]),
|
|
1272
|
+
onClick: function() {
|
|
1273
|
+
var _keyMap_get;
|
|
1274
|
+
return handleClick(keyMap === null || keyMap === void 0 ? void 0 : (_keyMap_get = keyMap.get(keyboardRows[3][i])) === null || _keyMap_get === void 0 ? void 0 : _keyMap_get.midiNote);
|
|
1275
|
+
},
|
|
1276
|
+
hiddenOpacity: !displayMap.get(keyboardRows[3][i]),
|
|
1277
|
+
modifier: dualMode ? void 0 : optionalModifier([
|
|
1278
|
+
keyboardRows[3][i]
|
|
1279
|
+
], modifierKeys)
|
|
1280
|
+
}, i);
|
|
1281
|
+
}),
|
|
1282
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Key, {
|
|
1283
|
+
delayDisplay: animate ? displayMap.get("ShiftRight") : null,
|
|
1284
|
+
baseWidth: baseWidth,
|
|
1285
|
+
size: 2.75,
|
|
1286
|
+
hidden: !displayMap.get("ShiftRight"),
|
|
1287
|
+
label: "shift",
|
|
1288
|
+
active: activeKeysIncludes(activeKeys, "ShiftRight"),
|
|
1289
|
+
modifier: optionalModifier([
|
|
1290
|
+
"ShiftRight"
|
|
1291
|
+
], modifierKeys)
|
|
1292
|
+
})
|
|
1293
|
+
]
|
|
1294
|
+
})
|
|
1295
|
+
]
|
|
1296
|
+
});
|
|
1297
|
+
};
|
|
1298
|
+
var Container3 = import_styled_components3.default.div(_templateObject19(), function(props) {
|
|
1299
|
+
return props.$width;
|
|
1300
|
+
});
|
|
1301
|
+
var Row = import_styled_components3.default.div(_templateObject20(), function(props) {
|
|
1302
|
+
return props.$show ? "flex" : "none";
|
|
1303
|
+
}, function(props) {
|
|
1304
|
+
return props.$shift;
|
|
1305
|
+
});
|
|
1306
|
+
// src/Piano/Piano.tsx
|
|
1307
|
+
var import_minikeys6 = require("minikeys");
|
|
1308
|
+
var import_styled_components6 = __toESM(require("styled-components"), 1);
|
|
1309
|
+
// src/Piano/BlackNotes.tsx
|
|
1310
|
+
var import_minikeys4 = require("minikeys");
|
|
1311
|
+
// src/Piano/PianoKey.tsx
|
|
1312
|
+
var import_styled_components4 = __toESM(require("styled-components"), 1);
|
|
1313
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1314
|
+
var PianoKeyRect = function(param) {
|
|
1315
|
+
var width = param.width, height = param.height, offset = param.offset, fill = param.fill, strokeWidth = param.strokeWidth, strokeColour = param.strokeColour, noBorder = param.noBorder, type = param.type;
|
|
1316
|
+
var curve = height * 0.025;
|
|
1317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Path, {
|
|
1318
|
+
$type: type,
|
|
1319
|
+
d: "\n M".concat(width + (noBorder ? offset - strokeWidth : offset), " ").concat(type === "white" ? noBorder ? 0 : strokeWidth / 2 : 0, ",\n L").concat(width + (noBorder ? offset - strokeWidth : offset), " ").concat(height - curve - strokeWidth / 2, ",\n q0,").concat(curve, " -").concat(curve, ",").concat(curve, ",\n L").concat(offset + curve + strokeWidth / 2, " ").concat(height - strokeWidth / 2, ",\n q-").concat(curve, ",0 -").concat(curve, ",-").concat(curve, ",\n L").concat(offset + strokeWidth / 2, " ").concat(type === "white" ? noBorder ? 0 : strokeWidth / 2 : 0, ",\n Z\n "),
|
|
1320
|
+
fill: fill !== null && fill !== void 0 ? fill : type === "white" ? "white" : "#222",
|
|
1321
|
+
stroke: noBorder ? "none" : type === "white" ? strokeColour !== null && strokeColour !== void 0 ? strokeColour : "black" : "none",
|
|
1322
|
+
strokeWidth: strokeWidth
|
|
1323
|
+
});
|
|
1324
|
+
};
|
|
1325
|
+
var Path = import_styled_components4.default.path(_templateObject21(), function(param) {
|
|
1326
|
+
var $type = param.$type;
|
|
1327
|
+
return $type === "white" ? "#ddd" : "black";
|
|
1328
|
+
}, function(param) {
|
|
1329
|
+
var $type = param.$type;
|
|
1330
|
+
return $type === "white" ? "#ccc" : "#444";
|
|
1331
|
+
});
|
|
1332
|
+
// src/Piano/commonStyles.tsx
|
|
1333
|
+
var import_styled_components5 = __toESM(require("styled-components"), 1);
|
|
1334
|
+
var NoteLabel = import_styled_components5.default.text(_templateObject22());
|
|
1335
|
+
// src/Piano/BlackNotes.tsx
|
|
1336
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1337
|
+
var BlackNotes = function(param) {
|
|
1338
|
+
var numKeys = param.numKeys, width = param.width, height = param.height, strokeWidth = param.strokeWidth, baseNoteOffset = param.baseNoteOffset, showLabels = param.showLabels, highlights = param.highlights, noBorder = param.noBorder, handleClick = param.handleClick;
|
|
1339
|
+
var keyWidth = (width - strokeWidth / 2) / numKeys + strokeWidth / 2 * ((numKeys - 1) / numKeys);
|
|
1340
|
+
var getFill = function(i) {
|
|
1341
|
+
var note = import_minikeys4.keyboardBlackNotes[baseNoteOffset + i];
|
|
1342
|
+
if (note !== null) {
|
|
1343
|
+
var _highlights_activeNotes;
|
|
1344
|
+
if (highlights === null || highlights === void 0 ? void 0 : (_highlights_activeNotes = highlights.activeNotes) === null || _highlights_activeNotes === void 0 ? void 0 : _highlights_activeNotes.includes(note)) {
|
|
1345
|
+
return "#444";
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
return "#222";
|
|
1349
|
+
};
|
|
1350
|
+
var nudgeDirection = function(i) {
|
|
1351
|
+
if (i > 0 && i < import_minikeys4.keyboardBlackNotes.length) {
|
|
1352
|
+
if (import_minikeys4.keyboardBlackNotes[i - 1] === null) {
|
|
1353
|
+
return -1;
|
|
1354
|
+
} else if (import_minikeys4.keyboardBlackNotes[i + 1] === null) {
|
|
1355
|
+
return 1;
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
return 0;
|
|
1359
|
+
};
|
|
1360
|
+
var handleNoteClick = function(i) {
|
|
1361
|
+
if (!handleClick) {
|
|
1362
|
+
return;
|
|
1363
|
+
}
|
|
1364
|
+
var namedNote = import_minikeys4.keyboardBlackNotes[baseNoteOffset + i];
|
|
1365
|
+
if (namedNote === null) {
|
|
1366
|
+
return;
|
|
1367
|
+
}
|
|
1368
|
+
var midiNote = import_minikeys4.noteToMidi[namedNote];
|
|
1369
|
+
handleClick(midiNote);
|
|
1370
|
+
};
|
|
1371
|
+
return Array.from({
|
|
1372
|
+
length: numKeys + 1
|
|
1373
|
+
}).map(function(_, i) {
|
|
1374
|
+
return import_minikeys4.keyboardBlackNotes[baseNoteOffset + i] && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("g", {
|
|
1375
|
+
onMouseDown: function() {
|
|
1376
|
+
return handleNoteClick(i);
|
|
1377
|
+
},
|
|
1378
|
+
children: [
|
|
1379
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PianoKeyRect, {
|
|
1380
|
+
width: keyWidth * 0.65,
|
|
1381
|
+
height: height * 0.65,
|
|
1382
|
+
offset: i * keyWidth - i * (strokeWidth / 2) - (keyWidth * 0.65 - strokeWidth) / 2 + nudgeDirection(baseNoteOffset + i) * keyWidth * 0.1,
|
|
1383
|
+
strokeWidth: 1.5,
|
|
1384
|
+
fill: getFill(i),
|
|
1385
|
+
type: "black",
|
|
1386
|
+
noBorder: noBorder
|
|
1387
|
+
}),
|
|
1388
|
+
showLabels && i * keyWidth - i * strokeWidth / 2 > 5 && i * keyWidth - i * strokeWidth / 2 < width - 5 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(NoteLabel, {
|
|
1389
|
+
x: i * keyWidth - i * strokeWidth / 2 + strokeWidth / 2 + nudgeDirection(baseNoteOffset + i) * keyWidth * 0.1,
|
|
1390
|
+
y: height * 0.65 - height * 0.03,
|
|
1391
|
+
textAnchor: "middle",
|
|
1392
|
+
fontSize: height * 0.04,
|
|
1393
|
+
fill: "white",
|
|
1394
|
+
opacity: 0.8,
|
|
1395
|
+
children: import_minikeys4.keyboardBlackNotes[baseNoteOffset + i]
|
|
1396
|
+
})
|
|
1397
|
+
]
|
|
1398
|
+
}, "piano-key-black-".concat(i));
|
|
1399
|
+
});
|
|
1400
|
+
};
|
|
1401
|
+
// src/Piano/WhiteNotes.tsx
|
|
1402
|
+
var import_minikeys5 = require("minikeys");
|
|
1403
|
+
// src/Piano/utils.ts
|
|
1404
|
+
var keyboardWhiteNotes = [
|
|
1405
|
+
"A0",
|
|
1406
|
+
"B0",
|
|
1407
|
+
"C1",
|
|
1408
|
+
"D1",
|
|
1409
|
+
"E1",
|
|
1410
|
+
"F1",
|
|
1411
|
+
"G1",
|
|
1412
|
+
"A1",
|
|
1413
|
+
"B1",
|
|
1414
|
+
"C2",
|
|
1415
|
+
"D2",
|
|
1416
|
+
"E2",
|
|
1417
|
+
"F2",
|
|
1418
|
+
"G2",
|
|
1419
|
+
"A2",
|
|
1420
|
+
"B2",
|
|
1421
|
+
"C3",
|
|
1422
|
+
"D3",
|
|
1423
|
+
"E3",
|
|
1424
|
+
"F3",
|
|
1425
|
+
"G3",
|
|
1426
|
+
"A3",
|
|
1427
|
+
"B3",
|
|
1428
|
+
"C4",
|
|
1429
|
+
"D4",
|
|
1430
|
+
"E4",
|
|
1431
|
+
"F4",
|
|
1432
|
+
"G4",
|
|
1433
|
+
"A4",
|
|
1434
|
+
"B4",
|
|
1435
|
+
"C5",
|
|
1436
|
+
"D5",
|
|
1437
|
+
"E5",
|
|
1438
|
+
"F5",
|
|
1439
|
+
"G5",
|
|
1440
|
+
"A5",
|
|
1441
|
+
"B5",
|
|
1442
|
+
"C6",
|
|
1443
|
+
"D6",
|
|
1444
|
+
"E6",
|
|
1445
|
+
"F6",
|
|
1446
|
+
"G6",
|
|
1447
|
+
"A6",
|
|
1448
|
+
"B6",
|
|
1449
|
+
"C7",
|
|
1450
|
+
"D7",
|
|
1451
|
+
"E7",
|
|
1452
|
+
"F7",
|
|
1453
|
+
"G7",
|
|
1454
|
+
"A7",
|
|
1455
|
+
"B7",
|
|
1456
|
+
"C8"
|
|
1457
|
+
];
|
|
1458
|
+
var nextWhiteNoteIndex = function(note) {
|
|
1459
|
+
var whiteNote = note.replace("#", "");
|
|
1460
|
+
if (keyboardWhiteNotes.includes(whiteNote)) {
|
|
1461
|
+
if (note.includes("#")) {
|
|
1462
|
+
return keyboardWhiteNotes.indexOf(whiteNote) + 1;
|
|
1463
|
+
} else {
|
|
1464
|
+
return keyboardWhiteNotes.indexOf(whiteNote);
|
|
1465
|
+
}
|
|
1466
|
+
} else {
|
|
1467
|
+
throw new Error("Lower range note ".concat(note, " invalid"));
|
|
1468
|
+
}
|
|
1469
|
+
};
|
|
1470
|
+
var prevWhiteNoteIndex = function(note) {
|
|
1471
|
+
var whiteNote = note.replace("#", "");
|
|
1472
|
+
if (keyboardWhiteNotes.includes(whiteNote)) {
|
|
1473
|
+
return keyboardWhiteNotes.indexOf(whiteNote);
|
|
1474
|
+
} else {
|
|
1475
|
+
throw new Error("Lower range note ".concat(note, " invalid"));
|
|
1476
|
+
}
|
|
1477
|
+
};
|
|
1478
|
+
// src/Piano/WhiteNotes.tsx
|
|
1479
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1480
|
+
var WhiteNotes = function(param) {
|
|
1481
|
+
var numKeys = param.numKeys, width = param.width, height = param.height, strokeWidth = param.strokeWidth, strokeColour = param.strokeColour, baseNoteOffset = param.baseNoteOffset, showLabels = param.showLabels, highlights = param.highlights, noBorder = param.noBorder, handleClick = param.handleClick;
|
|
1482
|
+
var keyWidth = (width - strokeWidth / 2) / numKeys + strokeWidth / 2 * ((numKeys - 1) / numKeys);
|
|
1483
|
+
var getFill = function(i) {
|
|
1484
|
+
var _highlights_activeNotes;
|
|
1485
|
+
if (highlights === null || highlights === void 0 ? void 0 : (_highlights_activeNotes = highlights.activeNotes) === null || _highlights_activeNotes === void 0 ? void 0 : _highlights_activeNotes.includes(import_minikeys5.keyboardWhiteNotes[baseNoteOffset + i])) {
|
|
1486
|
+
return "#ccc";
|
|
1487
|
+
} else if ((highlights === null || highlights === void 0 ? void 0 : highlights.rangeStart) || (highlights === null || highlights === void 0 ? void 0 : highlights.rangeEnd)) {
|
|
1488
|
+
var _highlights_rangeStart, _highlights_rangeEnd;
|
|
1489
|
+
if (import_minikeys5.keyboardWhiteNotes.slice(nextWhiteNoteIndex((_highlights_rangeStart = highlights === null || highlights === void 0 ? void 0 : highlights.rangeStart) !== null && _highlights_rangeStart !== void 0 ? _highlights_rangeStart : "A0"), prevWhiteNoteIndex((_highlights_rangeEnd = highlights === null || highlights === void 0 ? void 0 : highlights.rangeEnd) !== null && _highlights_rangeEnd !== void 0 ? _highlights_rangeEnd : "C8") + 1).includes(import_minikeys5.keyboardWhiteNotes[baseNoteOffset + i])) {
|
|
1490
|
+
var _highlights_rangeColor;
|
|
1491
|
+
return (_highlights_rangeColor = highlights === null || highlights === void 0 ? void 0 : highlights.rangeColor) !== null && _highlights_rangeColor !== void 0 ? _highlights_rangeColor : "#eee";
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
return "white";
|
|
1495
|
+
};
|
|
1496
|
+
var handleNoteClick = function(i) {
|
|
1497
|
+
if (!handleClick) {
|
|
1498
|
+
return;
|
|
1499
|
+
}
|
|
1500
|
+
var namedNote = import_minikeys5.keyboardWhiteNotes[baseNoteOffset + i];
|
|
1501
|
+
var midiNote = import_minikeys5.noteToMidi[namedNote];
|
|
1502
|
+
handleClick(midiNote);
|
|
1503
|
+
};
|
|
1504
|
+
return Array.from({
|
|
1505
|
+
length: numKeys
|
|
1506
|
+
}).map(function(_, i) {
|
|
1507
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("g", {
|
|
1508
|
+
onMouseDown: function() {
|
|
1509
|
+
return handleNoteClick(i);
|
|
1510
|
+
},
|
|
1511
|
+
children: [
|
|
1512
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PianoKeyRect, {
|
|
1513
|
+
width: keyWidth,
|
|
1514
|
+
height: height,
|
|
1515
|
+
offset: i * keyWidth - i * strokeWidth / 2,
|
|
1516
|
+
strokeWidth: strokeWidth,
|
|
1517
|
+
strokeColour: strokeColour,
|
|
1518
|
+
type: "white",
|
|
1519
|
+
fill: getFill(i),
|
|
1520
|
+
noBorder: noBorder
|
|
1521
|
+
}),
|
|
1522
|
+
showLabels && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(NoteLabel, {
|
|
1523
|
+
x: i * keyWidth - i * strokeWidth / 2 + keyWidth / 2,
|
|
1524
|
+
y: height - height * 0.03,
|
|
1525
|
+
textAnchor: "middle",
|
|
1526
|
+
fontSize: height * 0.04,
|
|
1527
|
+
fill: "black",
|
|
1528
|
+
opacity: 0.6,
|
|
1529
|
+
children: import_minikeys5.keyboardWhiteNotes[baseNoteOffset + i]
|
|
1530
|
+
})
|
|
1531
|
+
]
|
|
1532
|
+
}, "piano-key-white-".concat(i));
|
|
1533
|
+
});
|
|
1534
|
+
};
|
|
1535
|
+
// src/Piano/Piano.tsx
|
|
1536
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1537
|
+
var Piano = function(_param) {
|
|
1538
|
+
var width = _param.width, _param_numKeys = _param.numKeys, numKeys = _param_numKeys === void 0 ? 15 : _param_numKeys, height = _param.height, _param_strokeWidth = _param.strokeWidth, strokeWidth = _param_strokeWidth === void 0 ? 1.5 : _param_strokeWidth, strokeColour = _param.strokeColour, _param_baseNote = _param.baseNote, baseNote = _param_baseNote === void 0 ? "C4" : _param_baseNote, _param_showLabels = _param.showLabels, showLabels = _param_showLabels === void 0 ? false : _param_showLabels, _param_noBorder = _param.noBorder, noBorder = _param_noBorder === void 0 ? false : _param_noBorder, highlights = _param.highlights, onClick = _param.onClick, props = _object_without_properties(_param, [
|
|
1539
|
+
"width",
|
|
1540
|
+
"numKeys",
|
|
1541
|
+
"height",
|
|
1542
|
+
"strokeWidth",
|
|
1543
|
+
"strokeColour",
|
|
1544
|
+
"baseNote",
|
|
1545
|
+
"showLabels",
|
|
1546
|
+
"noBorder",
|
|
1547
|
+
"highlights",
|
|
1548
|
+
"onClick"
|
|
1549
|
+
]);
|
|
1550
|
+
var keyHeight = height !== null && height !== void 0 ? height : Math.min(width / numKeys * 5, width / 4);
|
|
1551
|
+
var maxNumKeys = Math.min(numKeys, 52);
|
|
1552
|
+
var baseNoteOffset = Math.min(import_minikeys6.keyboardWhiteNotes.indexOf(baseNote), 52 - numKeys);
|
|
1553
|
+
var handleClick = function(midiNote) {
|
|
1554
|
+
if (onClick && midiNote !== null && midiNote !== void 0) {
|
|
1555
|
+
onClick(midiNote);
|
|
1556
|
+
}
|
|
1557
|
+
};
|
|
1558
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Svg, _object_spread_props(_object_spread({
|
|
1559
|
+
viewBox: "0 0 ".concat(width, " ").concat(keyHeight),
|
|
1560
|
+
width: width,
|
|
1561
|
+
height: keyHeight,
|
|
1562
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
1563
|
+
}, props), {
|
|
1564
|
+
children: [
|
|
1565
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", {
|
|
1566
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(WhiteNotes, {
|
|
1567
|
+
numKeys: maxNumKeys,
|
|
1568
|
+
width: width,
|
|
1569
|
+
height: keyHeight,
|
|
1570
|
+
strokeWidth: strokeWidth,
|
|
1571
|
+
strokeColour: strokeColour,
|
|
1572
|
+
baseNoteOffset: baseNoteOffset,
|
|
1573
|
+
showLabels: showLabels,
|
|
1574
|
+
highlights: highlights,
|
|
1575
|
+
handleClick: handleClick,
|
|
1576
|
+
noBorder: noBorder
|
|
1577
|
+
})
|
|
1578
|
+
}),
|
|
1579
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", {
|
|
1580
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(BlackNotes, {
|
|
1581
|
+
numKeys: maxNumKeys,
|
|
1582
|
+
width: width,
|
|
1583
|
+
height: keyHeight,
|
|
1584
|
+
strokeWidth: strokeWidth,
|
|
1585
|
+
baseNoteOffset: baseNoteOffset,
|
|
1586
|
+
showLabels: showLabels,
|
|
1587
|
+
highlights: highlights,
|
|
1588
|
+
handleClick: handleClick,
|
|
1589
|
+
noBorder: noBorder
|
|
1590
|
+
})
|
|
1591
|
+
})
|
|
1592
|
+
]
|
|
1593
|
+
}));
|
|
1594
|
+
};
|
|
1595
|
+
var Svg = import_styled_components6.default.svg(_templateObject23());
|
|
1596
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1597
|
+
0 && (module.exports = {
|
|
1598
|
+
Keyboard: Keyboard,
|
|
1599
|
+
Piano: Piano,
|
|
1600
|
+
useKeyboardControl: useKeyboardControl,
|
|
1601
|
+
useMiniKeys: useMiniKeys,
|
|
1602
|
+
useMiniKeysKeyboard: useMiniKeysKeyboard
|
|
1603
|
+
});
|