import { __ } from "@wordpress/i18n"; import { Button, PanelBody, SelectControl, __experimentalInputControl as InputControl } from "@wordpress/components"; import "./editor.scss"; import { Popup, SpColorPicker } from "../../components"; import { useEffect, useState } from "@wordpress/element"; import { useDispatch, useSelect } from "@wordpress/data"; import { generateShadowRootCSS } from "../default-settings"; import { PlusIcon } from "../../icons/arrowIcons"; // import { PlusIcon } from "../../icons/icons"; const ShadowSettings = () => { const shadow = useSelect((select) => select("smartpost/global-settings").getCategory("shadow")); const { updateSetting } = useDispatch("smartpost/global-settings"); const [shadowList, setShadowList] = useState(shadow.shadowList); const addCustomShadow = () => { const customSizeId = shadowList?.length - 6 + 1; const randomKey = () => Math.random().toString(36).slice(2, 5); const newShadow = [ ...shadowList, ...[ { ...shadowList[0], custom: true, slug: `custom-shadow-${customSizeId}-${randomKey()}`, title: "New Shadow " + customSizeId, }, ], ]; setShadowList(newShadow); updateSetting("shadow", "shadowList", newShadow); }; const changeValue = (newValue, slug, key) => { const newData = shadowList.map((item) => (item.slug === slug ? { ...item, [key]: newValue } : item)); setShadowList(newData); updateSetting("shadow", "shadowList", newData); }; const deleteShadow = (slug) => { const newData = shadowList.filter((shadow) => shadow.slug !== slug); const confirmed = window.confirm("Are you sure you want to delete box shadow?"); if (confirmed) { setShadowList(newData); updateSetting("shadow", "shadowList", newData); } }; const shadowCss = (item) => { return `${"inset" === item["type"] ? "inset" : ""} ${item["x-offset"]}px ${item["y-offset"]}px ${ item["blur"] }px ${item["speared"]}px ${item["color"]}`; }; useEffect(() => { const shadowRootCSS = generateShadowRootCSS(shadowList); updateSetting("shadow", "shadowRootCSS", shadowRootCSS); }, [shadowList]); return (
    {shadowList?.map((item) => (
  • {item.custom ? ( <> Name changeValue(e.target.value, item.slug, "title") } /> ) : ( item.title )}

    {item.custom && ( )}
    changeValue(newValue, item.slug, "type")} />
    {["x-offset", "y-offset", "blur", "speared"].map((field, i) => ( changeValue(newValue, item.slug, field)} value={item[field]} /> ))}
    changeValue(newColor, item.slug, "color")} defaultColor="#333333" />
  • ))}
Custom addCustomShadow()}>
); }; export default ShadowSettings;