dynamic
Version:
Declarative DOM behaviour
63 lines (57 loc) • 2.16 kB
JavaScript
/*
* Dynamic - Declarative DOM behaviour
* Copyright (c) Dan Phillimore (asmblah)
* https://github.com/asmblah/dynamic
*
* Released under the MIT license
* https://github.com/asmblah/dynamic/raw/master/MIT-LICENSE.txt
*/
;
var expressionEvaluator = require('expression-eval'),
Dynamic = require('./src/Dynamic'),
DataAttributeOptionReader = require('./src/OptionSet/DataAttributeOptionReader'),
ObjectOptionReader = require('./src/OptionSet/ObjectOptionReader'),
OptionReader = require('./src/OptionSet/OptionReader'),
OptionSet = require('./src/OptionSet/OptionSet'),
OptionSetFactory = require('./src/OptionSet/OptionSetFactory'),
SelectorEngine = require('./src/SelectorEngine'),
ToggleBehaviour = require('./src/Behaviour/ToggleBehaviour');
module.exports = {
create: function ($, $root) {
var $context = $root || $('html'),
expressionContext = {$: $},
dataAttributeOptionReader = new OptionReader(
new DataAttributeOptionReader(),
expressionContext,
expressionEvaluator
),
objectOptionReader = new OptionReader(
new ObjectOptionReader(),
expressionContext,
expressionEvaluator
),
selectorEngine = new SelectorEngine($context),
dataAttributeOptionSetFactory = new OptionSetFactory(
$,
OptionSet,
dataAttributeOptionReader,
selectorEngine
),
objectOptionSetFactory = new OptionSetFactory(
$,
OptionSet,
objectOptionReader,
selectorEngine
),
dynamic = new Dynamic(
dataAttributeOptionSetFactory,
objectOptionSetFactory,
$,
$context
),
toggleBehaviour = new ToggleBehaviour();
// Add the default 'toggle' behaviour
dynamic.addBehaviour('toggle', $.proxy(toggleBehaviour.handle, toggleBehaviour));
return dynamic;
}
};