mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 18:44:16 +00:00
127 lines
3.5 KiB
JavaScript
127 lines
3.5 KiB
JavaScript
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 <div
|
|
style={{
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
gap: "10px",
|
|
width: "100%",
|
|
}}
|
|
>
|
|
<h3>New preset</h3>
|
|
|
|
<Input
|
|
placeholder="New preset name"
|
|
value={presetKey}
|
|
onChange={(e) => {
|
|
setPresetKey(e.target.value.trim())
|
|
}}
|
|
/>
|
|
|
|
<Button
|
|
type="primary"
|
|
disabled={!presetKey || presetKey.length === 0}
|
|
onClick={() => {
|
|
createPreset(presetKey)
|
|
|
|
props.close()
|
|
}}
|
|
>
|
|
Create
|
|
</Button>
|
|
</div>
|
|
})
|
|
}
|
|
|
|
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: <span><Icons.MdAdd /> Create new</span>,
|
|
},
|
|
...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 <>
|
|
<div
|
|
style={{
|
|
display: "inline-flex",
|
|
alignItems: "center",
|
|
gap: "5px",
|
|
}}
|
|
>
|
|
<Icons.MdList
|
|
style={{
|
|
margin: "0"
|
|
}}
|
|
/>
|
|
<Select
|
|
style={{
|
|
width: "50%"
|
|
}}
|
|
value={selectedPreset}
|
|
options={options}
|
|
onChange={(key) => {
|
|
if (key === "new") {
|
|
handleCreateNewPreset()
|
|
} else {
|
|
setSelectedPreset(key)
|
|
}
|
|
}}
|
|
/>
|
|
<Button
|
|
onClick={handleDeletePreset}
|
|
icon={<Icons.MdDelete />}
|
|
disabled={selectedPreset === "default"}
|
|
/>
|
|
</div>
|
|
|
|
<Sliders
|
|
{...props}
|
|
/>
|
|
</>
|
|
} |