From fec281dece9263dd446e7dd460f4f4af471af8b4 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Fri, 13 Oct 2023 17:59:30 +0000 Subject: [PATCH] support sliders with profiles --- .../components/slidersWithPresets/index.jsx | 127 +++++++++++++ .../app/constants/settings/player/index.jsx | 62 +++---- .../player/items/player.compressor/index.jsx | 8 + .../settings/player/items/player.eq/index.jsx | 8 + packages/app/src/cores/player/presets.js | 117 ++++++++++++ .../player/processors/compressorNode/index.js | 120 ++++++++++--- .../cores/player/processors/eqNode/index.js | 169 +++++++++++------- 7 files changed, 483 insertions(+), 128 deletions(-) create mode 100644 packages/app/constants/settings/components/slidersWithPresets/index.jsx create mode 100644 packages/app/constants/settings/player/items/player.compressor/index.jsx create mode 100644 packages/app/constants/settings/player/items/player.eq/index.jsx create mode 100644 packages/app/src/cores/player/presets.js diff --git a/packages/app/constants/settings/components/slidersWithPresets/index.jsx b/packages/app/constants/settings/components/slidersWithPresets/index.jsx new file mode 100644 index 00000000..634f290f --- /dev/null +++ b/packages/app/constants/settings/components/slidersWithPresets/index.jsx @@ -0,0 +1,127 @@ +import React from "react" +import { Select, Input, Button, Modal } from "antd" +import { Icons } from "components/Icons" + +import Sliders from "../sliderValues" + +export default (props) => { + const [selectedPreset, setSelectedPreset] = React.useState(props.controller.presets.currentPresetKey) + const [presets, setPresets] = React.useState(props.controller.presets.presets ?? {}) + + const createPreset = (key) => { + setPresets(props.controller.createPreset(key)) + setSelectedPreset(key) + } + + const handleCreateNewPreset = () => { + app.layout.modal.open("create_preset", (props) => { + const [presetKey, setPresetKey] = React.useState("") + + return
+

New preset

+ + { + setPresetKey(e.target.value.trim()) + }} + /> + + +
+ }) + } + + const handleDeletePreset = () => { + Modal.confirm({ + title: "Delete preset", + content: "Are you sure you want to delete this preset?", + onOk: () => { + props.controller.deletePreset(selectedPreset) + setPresets(props.controller.presets.presets ?? {}) + setSelectedPreset(props.controller.presets.currentPresetKey) + } + }) + } + + const options = [ + { + value: "new", + label: Create new, + }, + ...Object.keys(presets).map((key) => { + return { + value: key, + label: key, + } + }) + ] + + React.useEffect(() => { + const presets = props.controller.presets.presets ?? {} + const preset = presets[selectedPreset] + + if (props.controller.presets.currentPresetKey !== selectedPreset) { + props.controller.changePreset(selectedPreset) + } + + props.ctx.updateCurrentValue(preset) + }, [selectedPreset]) + + return <> +
+ +