37 lines
1 KiB
JavaScript
37 lines
1 KiB
JavaScript
'use strict';
|
|
|
|
var _ = require('../lib/helper');
|
|
var cls = require('../lib/class');
|
|
var instances = require('./instances');
|
|
var updateGeometry = require('./update-geometry');
|
|
|
|
// Handlers
|
|
var handlers = {
|
|
'click-rail': require('./handler/click-rail'),
|
|
'drag-scrollbar': require('./handler/drag-scrollbar'),
|
|
'keyboard': require('./handler/keyboard'),
|
|
'wheel': require('./handler/mouse-wheel'),
|
|
'touch': require('./handler/touch'),
|
|
'selection': require('./handler/selection')
|
|
};
|
|
var nativeScrollHandler = require('./handler/native-scroll');
|
|
|
|
module.exports = function (element, userSettings) {
|
|
userSettings = typeof userSettings === 'object' ? userSettings : {};
|
|
|
|
cls.add(element, 'ps-container');
|
|
|
|
// Create a plugin instance.
|
|
var i = instances.add(element);
|
|
|
|
i.settings = _.extend(i.settings, userSettings);
|
|
cls.add(element, 'ps-theme-' + i.settings.theme);
|
|
|
|
i.settings.handlers.forEach(function (handlerName) {
|
|
handlers[handlerName](element);
|
|
});
|
|
|
|
nativeScrollHandler(element);
|
|
|
|
updateGeometry(element);
|
|
};
|