Apply cssobj local class names into mithril.
cssobj already have API for using with mithril as below:
var result = cssobj(obj)
... ...
view: function(){
return m( result.mapSel('li.item'), {class: result.mapClass('active news')} )
}
But if you don't like the long result.mapSel
, result.mapClass
function, you can try this lib to simplify.
This lib is just syntax sugar for the above code.
To do this, we have to replace the m
function with new m
, see below.
NPM
npm install cssobj-mithril
BOWER
bower install cssobj-mithril
Used with cssobj as below:
// init mithril
var mithril = require('mithril')
// get a factory function from old mithril
var M = require('cssobj-mithril')(mithril)
// get cssobj result
var result = require('cssobj')(obj)
// **** replace m!! ****
var m = M(result)
// consume `m` as original way, don't change anything!
// except `selector` and `class` will accept `:global` and `!`
var component = {
view: function(){
return m('li.item', {class:'news !active'}, 'hello')
// rendered DOM result:
// <li class="_4vsdei1_item _4vsdei1_news active">hello</li>
}
}
Use m
in all cases as usual, with the benefit fo local class names.
Please see test/ folder for more info.
Which mithril m function to inject, can be omitted if m
already in global space.
mFactory.m
can be used as original mithril m
function.
mFactory
can be used to produce different m
with each bound to an cssobj result instance.
cssobj() result Object instance, with local=true
, or local=false
.
mithril m pre processor Function(m
), will lookup the cssobj result object for local class names.
m
: [Function] The signature is same as mm.result
: [Object] Just a shortcut reference toresult
param passed in.mc.result === result
m.old
: [Function] The oldmithril m
reference
The below 2 codes are equivalent:
const M = require('mithril')
const m = require('cssobj-mithril')( M )( result )
...
view: function(){
return m('li.item', {class:'active news'})
}
// m.old === M
view: function(){
return m.old( result.mapSel('li.item'), {class: result.mapClass('active news')} )
}
See, it's simplify the usage for cssobj with mithril.