Skip to content
This repository has been archived by the owner on Jul 30, 2022. It is now read-only.

manvalls/u-proto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

proto Build Status Coverage Status

apply

var Setter = require('y-setter'),
    apply = require('u-proto/apply'),
    Detacher = require('detacher'),

    setter = new Setter(),
    getter = setter.getter,
    c = new Detacher(),

    check = document.createElement('input'),
    info = document.createElement('span'),
    button = document.createElement('input');

check[apply]({
  type: 'checkbox',
  checked: setter
});

info[apply]({
  textContent: getter.to(v => v ? 'Checked' : 'Not checked'),
  style: {
    color: 'blue'
  }
},c);

button[apply]({
  type: 'button',
  value: 'Unbind',
  onclick: () => c.detach()
});

document.body.appendChild(check);
document.body.appendChild(info);
document.body.appendChild(document.createElement('br'));
document.body.appendChild(button);

The apply method copies properties from one object to another recursively, applying prefixes if necessary when dealing with CSSStyleDeclarations. When using y-setter's Getters, a connection will be established. When using Setters, if the object has an addEventListener method it will be used to update the value of the Setter accordingly.

Hybrids can be used to maintain a double binding. Connections can be terminated by passing a Detacher as the second argument, to which the connections will be added. Values are updated on common events such as click and input. You may dispatch any of these events manually if you want to force the update process.

define

var define = require('u-proto/define');

function Foo(){}
Foo.prototype[define]({

  get value(){ return 'bar'; },
  set value(v){ throw new Error() },

  doNothing: function(){
    <!-- :D
  }

},{configurable: true});

Copies properties descriptors from an object to another, making them non-enumerable, non-writable and non-configurable by default. The second argument may be used to override those defaults.

prefix

var prefix = require('u-proto/prefix');

navigator[prefix]('getUserMedia',[
  {audio: true},function(){},function(){}
]);

Automatically guesses the correct prefix for a given property of a given object. The first argument is the name of the property and the second the list of arguments with which it will be called. If the second argument is not present, the value of the property will be returned instead.

About

Useful prototype extensions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published