UNPKG

@atlassian/aui

Version:

Atlassian User Interface Framework

123 lines (103 loc) 3.91 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['module', 'exports', './jquery', './internal/deprecation', './internal/log', './internal/globalize'], factory); } else if (typeof exports !== "undefined") { factory(module, exports, require('./jquery'), require('./internal/deprecation'), require('./internal/log'), require('./internal/globalize')); } else { var mod = { exports: {} }; factory(mod, mod.exports, global.jquery, global.deprecation, global.log, global.globalize); global.binder = mod.exports; } })(this, function (module, exports, _jquery, _deprecation, _log, _globalize) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery2 = _interopRequireDefault(_jquery); var deprecate = _interopRequireWildcard(_deprecation); var logger = _interopRequireWildcard(_log); var _globalize2 = _interopRequireDefault(_globalize); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Support for markup based binder components. Binder components must be objects with the following "interface": * * <pre> * { * selector: "input.foo", * run: function(element) { * //do stuff on given element * } * } * </pre> */ var Binder = function () { 'use strict'; var binders = {}; return { /** * Runs all the binder components for the given scope, or the document body if none specified. * * @method runBinders * @param scope {Element} element scope to run the binders in */ runBinders: function runBinders(scope) { if (_jquery2.default.isEmptyObject(binders)) { logger.log('No binders to run'); return; } scope = scope || document.body; (0, _jquery2.default)('*:not(link, script)', scope).each(function (i, element) { var $element = (0, _jquery2.default)(element); _jquery2.default.each(binders, function (id, binder) { if (!$element.data(id) && $element.is(binder.selector)) { logger.log('Running binder component: ' + id + ' on element ' + element); $element.data(id, true); // so we don't bind to the same element again later binder.run(element); } }); }); }, /** * Register a binder component with the given id. * @method register */ register: function register(id, binder) { binders[id] = binder; }, /** * Unregister a binder component for the given id. * @method unregister */ unregister: function unregister(id) { binders[id] = null; } }; }(); Binder = deprecate.construct(Binder, 'Binder', { sinceVersion: '5.8.0' }); (0, _globalize2.default)('Binder', Binder); exports.default = Binder; module.exports = exports['default']; }); //# sourceMappingURL=binder.js.map