zds-pickers 4.0.21 → 4.0.24
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/dist/index.cjs.js +12 -12
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1676 -1688
- package/dist/index.es.js.map +1 -1
- package/dist/midi/export.js +17 -35
- package/dist/pickers/ChannelMappingPicker.js +5 -4
- package/dist/pickers/ChannelPicker.js +12 -6
- package/dist/pickers/ResponseCurve.js +8 -8
- package/dist/pickers/ResponseCurvePicker.js +4 -1
- package/dist/pickers/Select.js +8 -3
- package/dist/types/midi/export.d.ts +13 -11
- package/dist/types/pickers/ChannelPicker.d.ts +2 -2
- package/dist/types/pickers/KnobPicker.d.ts +1 -1
- package/dist/types/pickers/PolarityPicker.d.ts +2 -2
- package/dist/types/pickers/ResponseCurvePicker.d.ts +1 -1
- package/dist/types/pickers/Select.d.ts +4 -2
- package/lib/midi/export.ts +22 -44
- package/lib/pickers/ChannelMappingPicker.tsx +16 -6
- package/lib/pickers/ChannelPicker.tsx +17 -15
- package/lib/pickers/PolarityPicker.tsx +2 -2
- package/lib/pickers/ResponseCurve.tsx +8 -8
- package/lib/pickers/ResponseCurvePicker.tsx +8 -8
- package/lib/pickers/Select.tsx +11 -4
- package/package.json +18 -18
- package/stories/picker.stories.tsx +104 -2
package/lib/pickers/Select.tsx
CHANGED
|
@@ -19,6 +19,8 @@ import ReactSelect, {
|
|
|
19
19
|
} from 'react-select'
|
|
20
20
|
import { omit } from '../utils'
|
|
21
21
|
|
|
22
|
+
const noSelection = 255
|
|
23
|
+
|
|
22
24
|
const { IndicatorsContainer, Placeholder, ValueContainer } = originalComponents
|
|
23
25
|
|
|
24
26
|
type PassedSelectProps = {
|
|
@@ -32,6 +34,11 @@ type Option<T> = {
|
|
|
32
34
|
value: T
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
const noSelectionOption: Option<number> = {
|
|
38
|
+
label: '--',
|
|
39
|
+
value: noSelection,
|
|
40
|
+
}
|
|
41
|
+
|
|
35
42
|
interface CustomIndicatorsContainerProps<T>
|
|
36
43
|
extends Omit<IndicatorsContainerProps<Option<T>, false>, 'selectProps'> {
|
|
37
44
|
children: React.ReactNode
|
|
@@ -107,7 +114,7 @@ type SelectProps<T> = SelectComponentsConfig<
|
|
|
107
114
|
menuPosition?: 'fixed' | 'absolute'
|
|
108
115
|
menuShouldScrollIntoView?: boolean
|
|
109
116
|
onChange: (value: Option<T>['value']) => void
|
|
110
|
-
options: Option<T>[] | {
|
|
117
|
+
options: Option<T>[] | { options: Option<T>[] }[]
|
|
111
118
|
preserveMenuWidth?: boolean
|
|
112
119
|
selectProps?: PassedSelectProps
|
|
113
120
|
shrinkLabel?: boolean
|
|
@@ -143,8 +150,8 @@ const Select = forwardRef(
|
|
|
143
150
|
)
|
|
144
151
|
|
|
145
152
|
const flatOptionsList = options.reduce<Option<T>[]>((acc, entry) => {
|
|
146
|
-
if ('
|
|
147
|
-
return acc.concat(entry.
|
|
153
|
+
if ('options' in entry) {
|
|
154
|
+
return acc.concat(entry.options)
|
|
148
155
|
}
|
|
149
156
|
return acc.concat(entry)
|
|
150
157
|
}, [])
|
|
@@ -256,6 +263,6 @@ const Select = forwardRef(
|
|
|
256
263
|
},
|
|
257
264
|
) => JSX.Element
|
|
258
265
|
|
|
259
|
-
export { Select }
|
|
266
|
+
export { noSelection, noSelectionOption, Select }
|
|
260
267
|
|
|
261
268
|
export type { Option, SelectProps }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zds-pickers",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.24",
|
|
4
4
|
"main": "./dist/index.cjs.js",
|
|
5
5
|
"module": "./dist/index.es.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -40,38 +40,38 @@
|
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@biomejs/biome": "1.9.4",
|
|
43
|
-
"@storybook/addon-actions": "8.
|
|
44
|
-
"@storybook/addon-docs": "8.
|
|
45
|
-
"@storybook/addon-essentials": "8.
|
|
46
|
-
"@storybook/addon-links": "8.
|
|
47
|
-
"@storybook/builder-vite": "8.
|
|
48
|
-
"@storybook/react-vite": "8.
|
|
49
|
-
"@storybook/react": "8.
|
|
43
|
+
"@storybook/addon-actions": "8.6.3",
|
|
44
|
+
"@storybook/addon-docs": "8.6.3",
|
|
45
|
+
"@storybook/addon-essentials": "8.6.3",
|
|
46
|
+
"@storybook/addon-links": "8.6.3",
|
|
47
|
+
"@storybook/builder-vite": "8.6.3",
|
|
48
|
+
"@storybook/react-vite": "8.6.3",
|
|
49
|
+
"@storybook/react": "8.6.3",
|
|
50
50
|
"@types/d3-drag": "3.0.7",
|
|
51
|
-
"@types/d3-scale": "4.0.
|
|
51
|
+
"@types/d3-scale": "4.0.9",
|
|
52
52
|
"@types/d3-selection": "3.0.11",
|
|
53
53
|
"@types/react-dom": "18.3.5",
|
|
54
54
|
"@types/react": "18.3.18",
|
|
55
|
-
"@vitejs/plugin-react-swc": "3.
|
|
55
|
+
"@vitejs/plugin-react-swc": "3.8.0",
|
|
56
56
|
"classnames": "2.5.1",
|
|
57
|
-
"globals": "15.
|
|
57
|
+
"globals": "15.15.0",
|
|
58
58
|
"immer": "10.1.1",
|
|
59
59
|
"nodemon": "3.1.9",
|
|
60
60
|
"prop-types": "15.8.1",
|
|
61
|
-
"react-dom": "18.
|
|
62
|
-
"react": "18.
|
|
61
|
+
"react-dom": "18.3.1",
|
|
62
|
+
"react": "18.3.1",
|
|
63
63
|
"rc-slider": "11.1.8",
|
|
64
|
-
"storybook": "8.
|
|
65
|
-
"typescript": "5.
|
|
66
|
-
"vite": "6.0
|
|
64
|
+
"storybook": "8.6.3",
|
|
65
|
+
"typescript": "5.8.2",
|
|
66
|
+
"vite": "6.2.0",
|
|
67
67
|
"zds-mappings": "1.4.9"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"caniuse-lite": "1.0.
|
|
70
|
+
"caniuse-lite": "1.0.30001701",
|
|
71
71
|
"d3-drag": "3.0.0",
|
|
72
72
|
"d3-scale": "4.0.2",
|
|
73
73
|
"d3-selection": "3.0.0",
|
|
74
|
-
"react-select": "5.
|
|
74
|
+
"react-select": "5.10.1",
|
|
75
75
|
"react-svgmt": "2.0.2",
|
|
76
76
|
"soundfont-player": "0.12.0",
|
|
77
77
|
"tonal": "6.4.0",
|
|
@@ -17,6 +17,11 @@ import { PianoPicker } from '../lib/pickers/PianoPicker'
|
|
|
17
17
|
import { PolarityPicker } from '../lib/pickers/PolarityPicker'
|
|
18
18
|
import { ResponseCurve } from '../lib/pickers/ResponseCurve'
|
|
19
19
|
import { ResponseCurvePicker } from '../lib/pickers/ResponseCurvePicker'
|
|
20
|
+
import {
|
|
21
|
+
type Option,
|
|
22
|
+
noSelection,
|
|
23
|
+
noSelectionOption,
|
|
24
|
+
} from '../lib/pickers/Select'
|
|
20
25
|
import { StatusPicker } from '../lib/pickers/StatusPicker'
|
|
21
26
|
import { ValuePicker } from '../lib/pickers/ValuePicker'
|
|
22
27
|
|
|
@@ -36,6 +41,16 @@ const CCPickerStory: StoryObj<typeof CCPicker> = {
|
|
|
36
41
|
},
|
|
37
42
|
}
|
|
38
43
|
|
|
44
|
+
const CCPickerUndefinedStory: StoryObj<typeof CCPicker> = {
|
|
45
|
+
render: args => <CCPicker {...args} />,
|
|
46
|
+
args: {
|
|
47
|
+
disabled: false,
|
|
48
|
+
label: 'CC #',
|
|
49
|
+
shrinkLabel: false,
|
|
50
|
+
value: noSelection,
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
|
|
39
54
|
const ChannelPickerStory: StoryObj<typeof ChannelPicker> = {
|
|
40
55
|
render: args => <ChannelPicker {...args} />,
|
|
41
56
|
args: {
|
|
@@ -52,7 +67,7 @@ const ChannelPickerUndefinedStory: StoryObj<typeof ChannelPicker> = {
|
|
|
52
67
|
disabled: false,
|
|
53
68
|
label: 'Channel',
|
|
54
69
|
shrinkLabel: false,
|
|
55
|
-
value:
|
|
70
|
+
value: noSelection,
|
|
56
71
|
},
|
|
57
72
|
}
|
|
58
73
|
|
|
@@ -84,6 +99,39 @@ const ChannelMappingPickerStory: StoryObj<typeof ChannelMappingPicker> = {
|
|
|
84
99
|
},
|
|
85
100
|
}
|
|
86
101
|
|
|
102
|
+
const ChannelMappingPickerUndefinedStory: StoryObj<
|
|
103
|
+
typeof ChannelMappingPicker
|
|
104
|
+
> = {
|
|
105
|
+
render: args => <ChannelMappingPicker {...args} />,
|
|
106
|
+
args: {
|
|
107
|
+
channels: [
|
|
108
|
+
...[
|
|
109
|
+
'',
|
|
110
|
+
'No Mapping',
|
|
111
|
+
'',
|
|
112
|
+
'Alesis DM Pro',
|
|
113
|
+
'',
|
|
114
|
+
'',
|
|
115
|
+
'',
|
|
116
|
+
'BFD3',
|
|
117
|
+
'',
|
|
118
|
+
'',
|
|
119
|
+
'Roland TD-20',
|
|
120
|
+
'Roland TD-30 Perc 1 (Latin)',
|
|
121
|
+
'',
|
|
122
|
+
'',
|
|
123
|
+
'',
|
|
124
|
+
'',
|
|
125
|
+
].map((label, value): Option<number> => ({ label, value })),
|
|
126
|
+
noSelectionOption,
|
|
127
|
+
],
|
|
128
|
+
disabled: false,
|
|
129
|
+
label: 'Channel',
|
|
130
|
+
shrinkLabel: false,
|
|
131
|
+
value: noSelection,
|
|
132
|
+
},
|
|
133
|
+
}
|
|
134
|
+
|
|
87
135
|
const KnobStory: StoryObj<typeof Knob> = {
|
|
88
136
|
render: args => <Knob {...args} />,
|
|
89
137
|
args: {
|
|
@@ -226,6 +274,18 @@ const PolarityPickerStory: StoryObj<typeof PolarityPicker> = {
|
|
|
226
274
|
},
|
|
227
275
|
}
|
|
228
276
|
|
|
277
|
+
const PolarityPickerUndefinedStory: StoryObj<typeof PolarityPicker> = {
|
|
278
|
+
render: args => <PolarityPicker {...args} />,
|
|
279
|
+
args: {
|
|
280
|
+
disabled: false,
|
|
281
|
+
label: 'Polarity',
|
|
282
|
+
labelOff: 'Normally Off',
|
|
283
|
+
labelOn: 'Normally On',
|
|
284
|
+
shrinkLabel: false,
|
|
285
|
+
value: noSelection,
|
|
286
|
+
},
|
|
287
|
+
}
|
|
288
|
+
|
|
229
289
|
const ResponseCurveStory: StoryObj<typeof ResponseCurve> = {
|
|
230
290
|
render: args => <ResponseCurve {...args} />,
|
|
231
291
|
args: {
|
|
@@ -246,6 +306,18 @@ const ResponseCurvePickerStory: StoryObj<typeof ResponseCurvePicker> = {
|
|
|
246
306
|
},
|
|
247
307
|
}
|
|
248
308
|
|
|
309
|
+
const ResponseCurvePickerUndefinedStory: StoryObj<typeof ResponseCurvePicker> =
|
|
310
|
+
{
|
|
311
|
+
render: args => <ResponseCurvePicker {...args} />,
|
|
312
|
+
args: {
|
|
313
|
+
disabled: false,
|
|
314
|
+
inverted: false,
|
|
315
|
+
label: 'Response',
|
|
316
|
+
shrinkLabel: false,
|
|
317
|
+
value: noSelection,
|
|
318
|
+
},
|
|
319
|
+
}
|
|
320
|
+
|
|
249
321
|
const StatusPickerStory: StoryObj<typeof StatusPicker> = {
|
|
250
322
|
render: args => <StatusPicker {...args} />,
|
|
251
323
|
args: {
|
|
@@ -257,6 +329,17 @@ const StatusPickerStory: StoryObj<typeof StatusPicker> = {
|
|
|
257
329
|
},
|
|
258
330
|
}
|
|
259
331
|
|
|
332
|
+
const StatusPickerUndefinedStory: StoryObj<typeof StatusPicker> = {
|
|
333
|
+
render: args => <StatusPicker {...args} />,
|
|
334
|
+
args: {
|
|
335
|
+
disabled: false,
|
|
336
|
+
label: 'Status Msg',
|
|
337
|
+
shrinkLabel: false,
|
|
338
|
+
statuses: statusOptions,
|
|
339
|
+
value: noSelection,
|
|
340
|
+
},
|
|
341
|
+
}
|
|
342
|
+
|
|
260
343
|
const ValuePickerStory: StoryObj<typeof ValuePicker> = {
|
|
261
344
|
render: args => <ValuePicker {...args} />,
|
|
262
345
|
args: {
|
|
@@ -269,11 +352,26 @@ const ValuePickerStory: StoryObj<typeof ValuePicker> = {
|
|
|
269
352
|
},
|
|
270
353
|
}
|
|
271
354
|
|
|
355
|
+
const ValuePickerUndefinedStory: StoryObj<typeof ValuePicker> = {
|
|
356
|
+
render: args => <ValuePicker {...args} />,
|
|
357
|
+
args: {
|
|
358
|
+
disabled: false,
|
|
359
|
+
highToLow: false,
|
|
360
|
+
label: 'Value',
|
|
361
|
+
max: 127,
|
|
362
|
+
min: 0,
|
|
363
|
+
shrinkLabel: false,
|
|
364
|
+
value: noSelection,
|
|
365
|
+
},
|
|
366
|
+
}
|
|
367
|
+
|
|
272
368
|
export {
|
|
273
369
|
ChannelPickerStory as ChannelPicker,
|
|
274
370
|
ChannelPickerUndefinedStory as ChannelPickerNoValue,
|
|
275
371
|
ChannelMappingPickerStory as ChannelMappingPicker,
|
|
276
|
-
|
|
372
|
+
ChannelMappingPickerUndefinedStory as ChannelMappingPickerNoValue,
|
|
373
|
+
CCPickerStory as ChangeController,
|
|
374
|
+
CCPickerUndefinedStory as ChangeControllerNoValue,
|
|
277
375
|
KnobStory as Knob,
|
|
278
376
|
KnobPickerStory as KnobPicker,
|
|
279
377
|
LatchPickerStory as LatchPicker,
|
|
@@ -285,10 +383,14 @@ export {
|
|
|
285
383
|
OctavePlayerStory as OctavePlayer,
|
|
286
384
|
PianoPickerStory as PianoPicker,
|
|
287
385
|
PolarityPickerStory as PolarityPicker,
|
|
386
|
+
PolarityPickerUndefinedStory as PolarityPickerNoValue,
|
|
288
387
|
ResponseCurveStory as ResponseCurve,
|
|
289
388
|
ResponseCurvePickerStory as ResponseCurvePicker,
|
|
389
|
+
ResponseCurvePickerUndefinedStory as ResponseCurvePickerNoValue,
|
|
290
390
|
StatusPickerStory as StatusPicker,
|
|
391
|
+
StatusPickerUndefinedStory as StatusPickerNoValue,
|
|
291
392
|
ValuePickerStory as ValuePicker,
|
|
393
|
+
ValuePickerUndefinedStory as ValuePickerNoValue,
|
|
292
394
|
}
|
|
293
395
|
|
|
294
396
|
export default meta
|