@danielkalen/simplybind
Version:
Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.
35 lines (23 loc) • 965 B
text/coffeescript
isIterable = subject isnt window and checkIf.isIterable(subject) and not subject.nodeType
sampleItem = if isIterable then subject[0] else subject
if not sampleItem
throwError('emptyList') if isIterable and checkIf.isElCollection(subject)
else if = checkIf.isDom(sampleItem)
if is 'checked'
isDomRadio = sampleItem and checkIf.isDomRadio(sampleItem)
isDomCheckbox = not isDomRadio and sampleItem and checkIf.isDomCheckbox(sampleItem)
else if is 'value'
= checkIf.isDomInput(sampleItem)
if isIterable and not targetIncludes(, 'multi')
if subject.length is 1
subject = subject[0]
else
if (isDomRadio or isDomCheckbox) and not checkIf.domElsAreSame(subject)
return throwWarning('mixedElList',3)
else
if isDomRadio or isDomCheckbox
= true
subject = [].slice.call(subject)
else
subject = subject[0]
throwWarning('onlyOneDOMElement',3)