# Generated by detroit
# See https://github.com/bourbonut/detroit/tree/main/api_maker

from functools import partial
from operator import is_not

class forceX:
    def __init__(self, content="forceX"):
        self.content = content

    def __repr__(self):
        return self.content

    def __str__(self):
        return self.content

    def __call__(self, *args):
        arguments = ", ".join(map(repr, args))
        return f"{self}({arguments})"

    def strength(self, strength=None):
        """
        Source · If strength is specified, sets the strength accessor to the specified number
        or function, re-evaluates the strength accessor for each node, and returns this force.
        The strength determines how much to increment the node’s x-velocity: (x - node.x) ×
        strength. For example, a value of 0.1 indicates that the node should move a tenth of
        the way from its current x-position to the target x-position with each application.
        Higher values moves nodes more quickly to the target position, often at the expense of
        other forces or constraints. A value outside the range [0,1] is not recommended.
        If strength is not specified, returns the current strength accessor, which defaults to:
        .. code:: javascript

            function strength() {
              return 0.1;
            }

        The strength accessor is invoked for each node in the simulation, being passed the node
        and its zero-based index. The resulting number is then stored internally, such that the
        strength of each node is only recomputed when the force is initialized or when this
        method is called with a new strength, and not on every application of the force.

        See more informations `here <https://d3js.org/d3-force/position#x_strength>`_.
        """
        arguments = ", ".join(map(repr, filter(partial(is_not, None), (strength,))))
        return forceX(content=f"{self.content}.strength({arguments})")


    def x(self, x=None):
        """
        Source · If x is specified, sets the x-coordinate accessor to the specified number or
        function, re-evaluates the x-accessor for each node, and returns this force. If x is
        not specified, returns the current x-accessor, which defaults to:
        .. code:: javascript

            function x() {
              return 0;
            }

        The x-accessor is invoked for each node in the simulation, being passed the node and
        its zero-based index. The resulting number is then stored internally, such that the
        target x-coordinate of each node is only recomputed when the force is initialized or
        when this method is called with a new x, and not on every application of the force.

        See more informations `here <https://d3js.org/d3-force/position#x_x>`_.
        """
        arguments = ", ".join(map(repr, filter(partial(is_not, None), (x,))))
        return forceX(content=f"{self.content}.x({arguments})")

