zds-pickers 4.0.25 → 4.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 +199 -2
- package/dist/index.cjs.js +40 -15
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +3099 -10462
- package/dist/index.es.js.map +1 -1
- package/dist/other/OctavePlayer.js +2 -1
- package/dist/other/SoundFontProvider.js +64 -4
- package/dist/pickers/KeyPicker.js +14 -2
- package/dist/pickers/PianoPicker.js +2 -1
- package/dist/pickers/knobSkin10.js +18 -0
- package/dist/rotaryKnob/knobdefaultskin.js +13 -0
- package/dist/types/other/OctavePlayer.d.ts +3 -2
- package/dist/types/other/SoundFontProvider.d.ts +13 -0
- package/dist/types/pickers/KeyPicker.d.ts +6 -1
- package/dist/types/pickers/PianoPicker.d.ts +2 -1
- package/lib/other/OctavePlayer.tsx +4 -1
- package/lib/other/SoundFontProvider.tsx +85 -6
- package/lib/pickers/KeyPicker.tsx +43 -3
- package/lib/pickers/PianoPicker.tsx +3 -0
- package/lib/pickers/knobSkin10.tsx +18 -0
- package/lib/rotaryKnob/knobdefaultskin.ts +13 -0
- package/lib/temp/acoustic_grand_piano-mp3.js +14 -1
- package/package.json +13 -13
- package/stories/assets/sampleStyles.css +16 -0
- package/stories/picker.stories.tsx +48 -22
- package/vite.config.ts +18 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zds-pickers",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"main": "./dist/index.cjs.js",
|
|
5
5
|
"module": "./dist/index.es.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -28,16 +28,6 @@
|
|
|
28
28
|
"type": "git",
|
|
29
29
|
"url": "git+https://github.com/dkadrios/zds-pickers.git"
|
|
30
30
|
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"dev": "vite",
|
|
33
|
-
"build": "vite build && tsc",
|
|
34
|
-
"build-storybook": "storybook build",
|
|
35
|
-
"lint": "biome check --write",
|
|
36
|
-
"preview": "vite preview",
|
|
37
|
-
"sb": "storybook dev --quiet -p 6006 --no-open",
|
|
38
|
-
"sb:watch": "nodemon --watch .storybook -e ts,tsx,js,jsx --exec 'npm run sb'",
|
|
39
|
-
"prepublishOnly": "npm run build"
|
|
40
|
-
},
|
|
41
31
|
"devDependencies": {
|
|
42
32
|
"@biomejs/biome": "1.9.4",
|
|
43
33
|
"@storybook/addon-actions": "8.6.3",
|
|
@@ -71,8 +61,8 @@
|
|
|
71
61
|
"d3-selection": "3.0.0",
|
|
72
62
|
"react-svgmt": "2.0.2",
|
|
73
63
|
"soundfont-player": "0.12.0",
|
|
74
|
-
"tonal": "6.4.
|
|
75
|
-
"zds-react-piano": "4.0
|
|
64
|
+
"tonal": "6.4.2",
|
|
65
|
+
"zds-react-piano": "4.1.0"
|
|
76
66
|
},
|
|
77
67
|
"peerDependencies": {
|
|
78
68
|
"classnames": ">=2.5.1",
|
|
@@ -80,5 +70,15 @@
|
|
|
80
70
|
"react-dom": ">=18.0.0",
|
|
81
71
|
"react-select": ">=5.10.0",
|
|
82
72
|
"zds-mappings": "1.4.9"
|
|
73
|
+
},
|
|
74
|
+
"scripts": {
|
|
75
|
+
"dev": "vite",
|
|
76
|
+
"build": "vite build && tsc",
|
|
77
|
+
"build-storybook": "storybook build",
|
|
78
|
+
"lint": "biome check --write",
|
|
79
|
+
"preview": "vite preview",
|
|
80
|
+
"sb": "storybook dev --quiet -p 6006 --no-open",
|
|
81
|
+
"sb:watch": "nodemon --watch .storybook -e ts,tsx,js,jsx --exec 'npm run sb'",
|
|
82
|
+
"prepublishOnly": "npm run build"
|
|
83
83
|
}
|
|
84
84
|
}
|
|
@@ -347,3 +347,19 @@ body .response-curve-picker text.button-selected {
|
|
|
347
347
|
color: #f8e8d5;
|
|
348
348
|
}
|
|
349
349
|
|
|
350
|
+
/*
|
|
351
|
+
* Styles of "selected" keys (persistent selection state)
|
|
352
|
+
*/
|
|
353
|
+
.ReactPiano__Key--selected {
|
|
354
|
+
background: #ff6b35;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.ReactPiano__Key--selected.ReactPiano__Key--accidental {
|
|
358
|
+
border: 1px solid #fff;
|
|
359
|
+
border-top: 1px solid #ff6b35;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.ReactPiano__Key--selected.ReactPiano__Key--natural {
|
|
363
|
+
border: 1px solid #ff6b35;
|
|
364
|
+
}
|
|
365
|
+
|
|
@@ -8,6 +8,7 @@ import { OctavePlayer } from '../lib/other/OctavePlayer'
|
|
|
8
8
|
import { CCPicker } from '../lib/pickers/CCPicker'
|
|
9
9
|
import { ChannelMappingPicker } from '../lib/pickers/ChannelMappingPicker'
|
|
10
10
|
import { ChannelPicker } from '../lib/pickers/ChannelPicker'
|
|
11
|
+
import { KeyPicker } from '../lib/pickers/KeyPicker'
|
|
11
12
|
import { Knob } from '../lib/pickers/Knob'
|
|
12
13
|
import { KnobPicker } from '../lib/pickers/KnobPicker'
|
|
13
14
|
import { LatchPicker } from '../lib/pickers/LatchPicker'
|
|
@@ -16,7 +17,6 @@ import { NotePicker } from '../lib/pickers/NotePicker'
|
|
|
16
17
|
import { PianoPicker } from '../lib/pickers/PianoPicker'
|
|
17
18
|
import { PolarityPicker } from '../lib/pickers/PolarityPicker'
|
|
18
19
|
import { ResponseCurve } from '../lib/pickers/ResponseCurve'
|
|
19
|
-
import { KeyPicker } from '../lib/pickers/KeyPicker'
|
|
20
20
|
import { ResponseCurvePicker } from '../lib/pickers/ResponseCurvePicker'
|
|
21
21
|
import {
|
|
22
22
|
type Option,
|
|
@@ -134,18 +134,30 @@ const ChannelMappingPickerUndefinedStory: StoryObj<
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
const KeyPickerStory: StoryObj<typeof KeyPicker> = {
|
|
137
|
-
render: args => <KeyPicker {...args} />,
|
|
137
|
+
render: (args) => <KeyPicker {...args} />,
|
|
138
|
+
args: {
|
|
139
|
+
instrumentName: 'acoustic_grand_piano',
|
|
140
|
+
height: 100,
|
|
141
|
+
width: 200,
|
|
142
|
+
octave: 4,
|
|
143
|
+
value: 65,
|
|
144
|
+
},
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const KeyPickerUndefinedStory: StoryObj<typeof KeyPicker> = {
|
|
148
|
+
render: (args) => <KeyPicker {...args} />,
|
|
138
149
|
args: {
|
|
139
150
|
instrumentName: 'acoustic_grand_piano',
|
|
140
151
|
height: 100,
|
|
141
152
|
width: 200,
|
|
142
153
|
octave: 4,
|
|
154
|
+
value: noSelection,
|
|
143
155
|
},
|
|
144
156
|
}
|
|
145
157
|
|
|
146
158
|
|
|
147
159
|
const KnobStory: StoryObj<typeof Knob> = {
|
|
148
|
-
render: args => <Knob {...args} />,
|
|
160
|
+
render: (args) => <Knob {...args} />,
|
|
149
161
|
args: {
|
|
150
162
|
disabled: false,
|
|
151
163
|
max: 127,
|
|
@@ -156,7 +168,7 @@ const KnobStory: StoryObj<typeof Knob> = {
|
|
|
156
168
|
}
|
|
157
169
|
|
|
158
170
|
const KnobPickerStory: StoryObj<typeof KnobPicker> = {
|
|
159
|
-
render: args => <KnobPicker {...args} />,
|
|
171
|
+
render: (args) => <KnobPicker {...args} />,
|
|
160
172
|
args: {
|
|
161
173
|
disabled: false,
|
|
162
174
|
includePicker: true,
|
|
@@ -171,7 +183,7 @@ const KnobPickerStory: StoryObj<typeof KnobPicker> = {
|
|
|
171
183
|
}
|
|
172
184
|
|
|
173
185
|
const LatchPickerStory: StoryObj<typeof LatchPicker> = {
|
|
174
|
-
render: args => <LatchPicker {...args} />,
|
|
186
|
+
render: (args) => <LatchPicker {...args} />,
|
|
175
187
|
args: {
|
|
176
188
|
disabled: false,
|
|
177
189
|
label: 'Mode',
|
|
@@ -181,7 +193,7 @@ const LatchPickerStory: StoryObj<typeof LatchPicker> = {
|
|
|
181
193
|
}
|
|
182
194
|
|
|
183
195
|
const MappingPickerStory: StoryObj<typeof MappingPicker> = {
|
|
184
|
-
render: args => <MappingPicker {...args} />,
|
|
196
|
+
render: (args) => <MappingPicker {...args} />,
|
|
185
197
|
args: {
|
|
186
198
|
allowClearing: true,
|
|
187
199
|
disabled: false,
|
|
@@ -193,7 +205,7 @@ const MappingPickerStory: StoryObj<typeof MappingPicker> = {
|
|
|
193
205
|
}
|
|
194
206
|
|
|
195
207
|
const NotePickerStory1: StoryObj<typeof NotePicker> = {
|
|
196
|
-
render: args => <NotePicker {...args} />,
|
|
208
|
+
render: (args) => <NotePicker {...args} />,
|
|
197
209
|
args: {
|
|
198
210
|
channel: 0,
|
|
199
211
|
disabled: false,
|
|
@@ -206,7 +218,7 @@ const NotePickerStory1: StoryObj<typeof NotePicker> = {
|
|
|
206
218
|
}
|
|
207
219
|
|
|
208
220
|
const NotePickerStory2: StoryObj<typeof NotePicker> = {
|
|
209
|
-
render: args => <NotePicker {...args} />,
|
|
221
|
+
render: (args) => <NotePicker {...args} />,
|
|
210
222
|
args: {
|
|
211
223
|
channel: 0,
|
|
212
224
|
disabled: false,
|
|
@@ -218,7 +230,7 @@ const NotePickerStory2: StoryObj<typeof NotePicker> = {
|
|
|
218
230
|
}
|
|
219
231
|
|
|
220
232
|
const NotePickerStory3: StoryObj<typeof NotePicker> = {
|
|
221
|
-
render: args => <NotePicker {...args} />,
|
|
233
|
+
render: (args) => <NotePicker {...args} />,
|
|
222
234
|
args: {
|
|
223
235
|
channel: 0,
|
|
224
236
|
disabled: false,
|
|
@@ -230,7 +242,8 @@ const NotePickerStory3: StoryObj<typeof NotePicker> = {
|
|
|
230
242
|
type="button"
|
|
231
243
|
onClick={() => {
|
|
232
244
|
window.alert('click')
|
|
233
|
-
}}
|
|
245
|
+
}}
|
|
246
|
+
>
|
|
234
247
|
?
|
|
235
248
|
</button>
|
|
236
249
|
),
|
|
@@ -240,7 +253,7 @@ const NotePickerStory3: StoryObj<typeof NotePicker> = {
|
|
|
240
253
|
}
|
|
241
254
|
|
|
242
255
|
const NotePickerStory4: StoryObj<typeof NotePicker> = {
|
|
243
|
-
render: args => <NotePicker {...args} />,
|
|
256
|
+
render: (args) => <NotePicker {...args} />,
|
|
244
257
|
args: {
|
|
245
258
|
channel: 0,
|
|
246
259
|
disabled: false,
|
|
@@ -253,7 +266,7 @@ const NotePickerStory4: StoryObj<typeof NotePicker> = {
|
|
|
253
266
|
}
|
|
254
267
|
|
|
255
268
|
const OctavePlayerStory: StoryObj<typeof OctavePlayer> = {
|
|
256
|
-
render: args => <OctavePlayer {...args} />,
|
|
269
|
+
render: (args) => <OctavePlayer {...args} />,
|
|
257
270
|
args: {
|
|
258
271
|
instrumentName: 'acoustic_grand_piano',
|
|
259
272
|
height: 100,
|
|
@@ -263,16 +276,27 @@ const OctavePlayerStory: StoryObj<typeof OctavePlayer> = {
|
|
|
263
276
|
}
|
|
264
277
|
|
|
265
278
|
const PianoPickerStory: StoryObj<typeof PianoPicker> = {
|
|
266
|
-
render: args => <PianoPicker {...args} />,
|
|
279
|
+
render: (args) => <PianoPicker {...args} />,
|
|
280
|
+
args: {
|
|
281
|
+
instrumentName: 'acoustic_grand_piano',
|
|
282
|
+
height: 100,
|
|
283
|
+
width: 1000,
|
|
284
|
+
selectedNotes: [65], // F4 selected
|
|
285
|
+
},
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const PianoPickerNoSelectionStory: StoryObj<typeof PianoPicker> = {
|
|
289
|
+
render: (args) => <PianoPicker {...args} />,
|
|
267
290
|
args: {
|
|
268
291
|
instrumentName: 'acoustic_grand_piano',
|
|
269
292
|
height: 100,
|
|
270
293
|
width: 1000,
|
|
294
|
+
selectedNotes: [], // No selection
|
|
271
295
|
},
|
|
272
296
|
}
|
|
273
297
|
|
|
274
298
|
const PolarityPickerStory: StoryObj<typeof PolarityPicker> = {
|
|
275
|
-
render: args => <PolarityPicker {...args} />,
|
|
299
|
+
render: (args) => <PolarityPicker {...args} />,
|
|
276
300
|
args: {
|
|
277
301
|
disabled: false,
|
|
278
302
|
label: 'Polarity',
|
|
@@ -284,7 +308,7 @@ const PolarityPickerStory: StoryObj<typeof PolarityPicker> = {
|
|
|
284
308
|
}
|
|
285
309
|
|
|
286
310
|
const PolarityPickerUndefinedStory: StoryObj<typeof PolarityPicker> = {
|
|
287
|
-
render: args => <PolarityPicker {...args} />,
|
|
311
|
+
render: (args) => <PolarityPicker {...args} />,
|
|
288
312
|
args: {
|
|
289
313
|
disabled: false,
|
|
290
314
|
label: 'Polarity',
|
|
@@ -296,7 +320,7 @@ const PolarityPickerUndefinedStory: StoryObj<typeof PolarityPicker> = {
|
|
|
296
320
|
}
|
|
297
321
|
|
|
298
322
|
const ResponseCurveStory: StoryObj<typeof ResponseCurve> = {
|
|
299
|
-
render: args => <ResponseCurve {...args} />,
|
|
323
|
+
render: (args) => <ResponseCurve {...args} />,
|
|
300
324
|
args: {
|
|
301
325
|
disabled: false,
|
|
302
326
|
inverted: false,
|
|
@@ -305,7 +329,7 @@ const ResponseCurveStory: StoryObj<typeof ResponseCurve> = {
|
|
|
305
329
|
}
|
|
306
330
|
|
|
307
331
|
const ResponseCurvePickerStory: StoryObj<typeof ResponseCurvePicker> = {
|
|
308
|
-
render: args => <ResponseCurvePicker {...args} />,
|
|
332
|
+
render: (args) => <ResponseCurvePicker {...args} />,
|
|
309
333
|
args: {
|
|
310
334
|
disabled: false,
|
|
311
335
|
inverted: false,
|
|
@@ -317,7 +341,7 @@ const ResponseCurvePickerStory: StoryObj<typeof ResponseCurvePicker> = {
|
|
|
317
341
|
|
|
318
342
|
const ResponseCurvePickerUndefinedStory: StoryObj<typeof ResponseCurvePicker> =
|
|
319
343
|
{
|
|
320
|
-
render: args => <ResponseCurvePicker {...args} />,
|
|
344
|
+
render: (args) => <ResponseCurvePicker {...args} />,
|
|
321
345
|
args: {
|
|
322
346
|
disabled: false,
|
|
323
347
|
inverted: false,
|
|
@@ -328,7 +352,7 @@ const ResponseCurvePickerUndefinedStory: StoryObj<typeof ResponseCurvePicker> =
|
|
|
328
352
|
}
|
|
329
353
|
|
|
330
354
|
const StatusPickerStory: StoryObj<typeof StatusPicker> = {
|
|
331
|
-
render: args => <StatusPicker {...args} />,
|
|
355
|
+
render: (args) => <StatusPicker {...args} />,
|
|
332
356
|
args: {
|
|
333
357
|
disabled: false,
|
|
334
358
|
label: 'Status Msg',
|
|
@@ -339,7 +363,7 @@ const StatusPickerStory: StoryObj<typeof StatusPicker> = {
|
|
|
339
363
|
}
|
|
340
364
|
|
|
341
365
|
const StatusPickerUndefinedStory: StoryObj<typeof StatusPicker> = {
|
|
342
|
-
render: args => <StatusPicker {...args} />,
|
|
366
|
+
render: (args) => <StatusPicker {...args} />,
|
|
343
367
|
args: {
|
|
344
368
|
disabled: false,
|
|
345
369
|
label: 'Status Msg',
|
|
@@ -350,7 +374,7 @@ const StatusPickerUndefinedStory: StoryObj<typeof StatusPicker> = {
|
|
|
350
374
|
}
|
|
351
375
|
|
|
352
376
|
const ValuePickerStory: StoryObj<typeof ValuePicker> = {
|
|
353
|
-
render: args => <ValuePicker {...args} />,
|
|
377
|
+
render: (args) => <ValuePicker {...args} />,
|
|
354
378
|
args: {
|
|
355
379
|
disabled: false,
|
|
356
380
|
highToLow: false,
|
|
@@ -362,7 +386,7 @@ const ValuePickerStory: StoryObj<typeof ValuePicker> = {
|
|
|
362
386
|
}
|
|
363
387
|
|
|
364
388
|
const ValuePickerUndefinedStory: StoryObj<typeof ValuePicker> = {
|
|
365
|
-
render: args => <ValuePicker {...args} />,
|
|
389
|
+
render: (args) => <ValuePicker {...args} />,
|
|
366
390
|
args: {
|
|
367
391
|
disabled: false,
|
|
368
392
|
highToLow: false,
|
|
@@ -382,6 +406,7 @@ export {
|
|
|
382
406
|
CCPickerStory as ChangeController,
|
|
383
407
|
CCPickerUndefinedStory as ChangeControllerNoValue,
|
|
384
408
|
KeyPickerStory as KeyPicker,
|
|
409
|
+
KeyPickerUndefinedStory as KeyPickerNoValue,
|
|
385
410
|
KnobStory as Knob,
|
|
386
411
|
KnobPickerStory as KnobPicker,
|
|
387
412
|
LatchPickerStory as LatchPicker,
|
|
@@ -392,6 +417,7 @@ export {
|
|
|
392
417
|
NotePickerStory4 as NotePickerNoValue,
|
|
393
418
|
OctavePlayerStory as OctavePlayer,
|
|
394
419
|
PianoPickerStory as PianoPicker,
|
|
420
|
+
PianoPickerNoSelectionStory as PianoPickerNoSelection,
|
|
395
421
|
PolarityPickerStory as PolarityPicker,
|
|
396
422
|
PolarityPickerUndefinedStory as PolarityPickerNoValue,
|
|
397
423
|
ResponseCurveStory as ResponseCurve,
|
package/vite.config.ts
CHANGED
|
@@ -14,17 +14,26 @@ export default defineConfig({
|
|
|
14
14
|
outDir: 'dist',
|
|
15
15
|
sourcemap: true,
|
|
16
16
|
rollupOptions: {
|
|
17
|
-
external:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
external: id => {
|
|
18
|
+
return [
|
|
19
|
+
'react',
|
|
20
|
+
'react-dom',
|
|
21
|
+
'react/jsx-runtime',
|
|
22
|
+
'react-select',
|
|
23
|
+
'd3-drag',
|
|
24
|
+
'd3-scale',
|
|
25
|
+
'd3-selection',
|
|
26
|
+
'classnames',
|
|
27
|
+
'zds-mappings',
|
|
28
|
+
].some(pkg => id === pkg || id.startsWith(`${pkg}/`))
|
|
29
|
+
},
|
|
26
30
|
output: {
|
|
27
31
|
exports: 'named',
|
|
32
|
+
globals: {
|
|
33
|
+
react: 'React',
|
|
34
|
+
'react-dom': 'ReactDOM',
|
|
35
|
+
'react-select': 'ReactSelect',
|
|
36
|
+
},
|
|
28
37
|
},
|
|
29
38
|
},
|
|
30
39
|
// minify: true,
|