electrum-field v1.7.1
Electrum Field
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.
Fingerprint
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');
FieldStates
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 statess1
,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) orundefined
otherwise.get ()
→ returns an immutable array of immutable states, as they are stored in theFieldStates
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.
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago