Nothing Particularly Magnificent


    1.7.1 • Public • Published

    Electrum Field

    NPM version Build Status Build status

    The electrum-field module handles state associated with form fields and is used by electrum.

    Manipulating field states

    A field can have multiple states associated with it:

    • A state describing whether the field is enabled or read-only.
    • A state describing the position of the cursor or the selection.
    • etc.

    Each state is represented as a simple object.


    The fingerprint of a state is built by concatenating the sorted names of the state's properties (property id is not included in the computation of the fingerprint).

    import {FieldStates} from 'electrum-field';
    const state = {
      id: '1234',
      begin: 12,
      end: 23
    expect (FieldStates.fingerprint (state)).to.equal ('begin,end');


    The states are managed by class FieldStates, which maintains a read-only array of simple state objects. An instance of FieldStates is immutable.

    To create a FieldStates instance, use one of the static methods:

    • FieldStates.create () → creates an empty states collection.
    • FieldStates.from (s1, s2, ...) → create a states collection based on the provided states s1, s2, etc.

    To manipulate a FieldStates instance:

    • add (state) → adds or updates the state based; matching with any existing states is based on the fingerprint.
    • remove (state) → removes the state.
    • find (state) → returns the immutable state (if it is found) or undefined otherwise.
    • get () → returns an immutable array of immutable states, as they are stored in the FieldStates instance.

    Methods remove() and find() accept either a simple object (the values of the fields are not used in the comparison) or a fingerprint to specify the state.

    Methods add() and remove() return a new instance of FieldStates if the state changes; otherwise, they just return the same instance.

    Note: states are considered to be equal if they respond true to shallow equality. Since states should be simple objects where all properties are just value types, a shallow comparison is enough.



    npm i electrum-field

    DownloadsWeekly Downloads






    Last publish


    • yvessaz
    • samlebarbare
    • catia
    • nocturnight
    • schroeterm
    • pierre.arnaud