forked from M-Labs/web2019
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import React from 'react';
|
|
|
|
import {useShopStore} from "./shop_store";
|
|
import {ProcessOptions, ProcessOptionsToData} from "./options/Options";
|
|
|
|
export function CrateOptions({crate_index}) {
|
|
const crate_id = useShopStore((state) => state.crates[crate_index].id);
|
|
const optionsLogic = useShopStore((state) => state.crate_options);
|
|
const updateOptions = useShopStore((state) => state.updateCrateOptions);
|
|
const options_data = useShopStore((state) => state.crates[crate_index].options_data || {});
|
|
|
|
const options = ProcessOptions({
|
|
options: optionsLogic,
|
|
data: options_data,
|
|
id: "crate_options" + crate_id,
|
|
target: {
|
|
construct: ((outvar, value) => {
|
|
// #!options_log
|
|
console.log("construct", outvar, value, options_data);
|
|
|
|
options_data[outvar] = value;
|
|
}),
|
|
update: ((outvar, value) => {
|
|
// #!options_log
|
|
console.log("update", outvar, value, options_data);
|
|
|
|
if (outvar in options_data) options_data[outvar] = value;
|
|
|
|
updateOptions(crate_id, {[outvar]: value});
|
|
})
|
|
}
|
|
});
|
|
|
|
return (
|
|
<div className="crate-bar">
|
|
{options}
|
|
</div>
|
|
)
|
|
} |