HEX
Server: Apache
System: Linux www 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64
User: root (0)
PHP: 8.2.1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals
Upload Files
File: /mnt/drbd/www/edenhouse/wp-content/plugins/essential-blocks/blocks/button/src/components/edit.js
/**
 * WordPress dependencies
 */
import { __ } from "@wordpress/i18n";
import { useEffect } from "@wordpress/element";
import { select } from "@wordpress/data";
import { Dashicon } from "@wordpress/components";
import {
    useBlockProps,
    RichText,
    URLInput,
    BlockControls,
    BlockAlignmentToolbar,
} from "@wordpress/block-editor";

/**
 * Internal dependencies
 */

import classnames from "classnames";

import Inspector from "./inspector";

const {
    duplicateBlockIdFix,
    DynamicInputValueHandler,
    EBDisplayIcon,
    BlockProps
} = window.EBControls;
import Style from "./style";

const edit = (props) => {
    const { attributes, setAttributes, isSelected, clientId, className, name } = props;
    const {
        blockMeta,
        blockId,
        resOption,
        addIcon,
        icon,
        iconPosition,
        buttonText,
        buttonURL,
        buttonAlign,
        hoverEffect,
        classHook,
        type,
    } = attributes;

    // you must declare this variable
    const enhancedProps = {
        ...props,
        blockPrefix: 'eb-button',
        style: <Style {...props} />
    };

    const setButtonAlign = (newAlign) => {
        switch (newAlign) {
            case "left":
                setAttributes({ buttonAlign: "flex-start" });
                break;

            case "center":
                setAttributes({ buttonAlign: "center" });
                break;

            case "right":
                setAttributes({ buttonAlign: "flex-end" });
                break;
        }
    };

    return (
        <>
            {isSelected && <Inspector {...props} />}
            <BlockControls>
                <BlockAlignmentToolbar
                    value={buttonAlign}
                    onChange={(newAlign) => setButtonAlign(newAlign)}
                    controls={["left", "center", "right"]}
                />
            </BlockControls>
            <BlockProps.Edit {...enhancedProps}>
                <div className={`eb-parent-wrapper eb-parent-${blockId} ${classHook}`}>

                    <div className={`eb-button-wrapper eb-button-alignment ${blockId}`}>
                        <div className={`eb-button eb-button-${type}`}>
                            <a
                                className={`eb-button-anchor${hoverEffect ? ` ${hoverEffect}` : ""
                                    }`}
                            >
                                {addIcon && iconPosition === "left" ? (
                                    <EBDisplayIcon
                                        icon={icon}
                                        className={`eb-button-icon eb-button-icon-left hvr-icon`}
                                    />
                                ) : (
                                    ""
                                )}
                                <DynamicInputValueHandler
                                    placeholder={__("Add Text..", "essential-blocks")}
                                    className="eb-button-text"
                                    value={buttonText}
                                    onChange={(newText) => setAttributes({ buttonText: newText })}
                                    allowedFormats={[
                                        "core/bold",
                                        "core/italic",
                                        "core/strikethrough",
                                    ]}
                                />
                                {addIcon && iconPosition === "right" ? (
                                    <EBDisplayIcon
                                        icon={icon}
                                        className={`eb-button-icon eb-button-icon-left hvr-icon`}
                                    />
                                ) : (
                                    ""
                                )}
                            </a>
                        </div>
                        {isSelected && (
                            <div className="eb-button-link">
                                <Dashicon icon="admin-links" />
                                <URLInput
                                    value={buttonURL}
                                    onChange={(newURL) => setAttributes({ buttonURL: newURL })}
                                />
                            </div>
                        )}
                    </div>
                </div>
            </BlockProps.Edit>
        </>
    );
};

export default edit;