123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- (function (global, factory) {
- if (typeof define === "function" && define.amd) {
- define("/Plugin", ["exports", "jquery"], factory);
- } else if (typeof exports !== "undefined") {
- factory(exports, require("jquery"));
- } else {
- var mod = {
- exports: {}
- };
- factory(mod.exports, global.jQuery);
- global.Plugin = mod.exports;
- }
- })(this, function (_exports, _jquery) {
- "use strict";
- Object.defineProperty(_exports, "__esModule", {
- value: true
- });
- _exports.getPluginAPI = getPluginAPI;
- _exports.getPlugin = getPlugin;
- _exports.getDefaults = getDefaults;
- _exports.pluginFactory = pluginFactory;
- _exports.default = _exports.Plugin = void 0;
- _jquery = babelHelpers.interopRequireDefault(_jquery);
- var plugins = {};
- var apis = {};
- var Plugin =
- /*#__PURE__*/
- function () {
- function Plugin($el) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- babelHelpers.classCallCheck(this, Plugin);
- this.name = this.getName();
- this.$el = $el;
- this.options = options;
- this.isRendered = false;
- }
- babelHelpers.createClass(Plugin, [{
- key: "getName",
- value: function getName() {
- return 'plugin';
- }
- }, {
- key: "render",
- value: function render() {
- if (_jquery.default.fn[this.name]) {
- this.$el[this.name](this.options);
- } else {
- return false;
- }
- }
- }, {
- key: "initialize",
- value: function initialize() {
- if (this.isRendered) {
- return false;
- }
- this.render();
- this.isRendered = true;
- }
- }], [{
- key: "getDefaults",
- value: function getDefaults() {
- return {};
- }
- }, {
- key: "register",
- value: function register(name, obj) {
- if (typeof obj === 'undefined') {
- return;
- }
- plugins[name] = obj;
- if (typeof obj.api !== 'undefined') {
- Plugin.registerApi(name, obj);
- }
- }
- }, {
- key: "registerApi",
- value: function registerApi(name, obj) {
- var api = obj.api();
- if (typeof api === 'string') {
- var _api = obj.api().split('|');
- var event = "".concat(_api[0], ".plugin.").concat(name);
- var func = _api[1] || 'render';
- var callback = function callback(e) {
- var $el = (0, _jquery.default)(this);
- var plugin = $el.data('pluginInstance');
- if (!plugin) {
- plugin = new obj($el, _jquery.default.extend(true, {}, getDefaults(name), $el.data()));
- plugin.initialize();
- $el.data('pluginInstance', plugin);
- }
- plugin[func](e);
- };
- apis[name] = function (selector, context) {
- if (context) {
- (0, _jquery.default)(context).off(event);
- (0, _jquery.default)(context).on(event, selector, callback);
- } else {
- (0, _jquery.default)(selector).on(event, callback);
- }
- };
- } else if (typeof api === 'function') {
- apis[name] = api;
- }
- }
- }]);
- return Plugin;
- }();
- _exports.Plugin = Plugin;
- function getPluginAPI(name) {
- if (typeof name === 'undefined') {
- return apis;
- }
- return apis[name];
- }
- function getPlugin(name) {
- if (typeof plugins[name] !== 'undefined') {
- return plugins[name];
- }
- console.warn("Plugin:".concat(name, " has no warpped class."));
- return false;
- }
- function getDefaults(name) {
- var PluginClass = getPlugin(name);
- if (PluginClass) {
- return PluginClass.getDefaults();
- }
- return {};
- }
- function pluginFactory(name, $el) {
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
- var PluginClass = getPlugin(name);
- if (PluginClass && typeof PluginClass.api === 'undefined') {
- return new PluginClass($el, _jquery.default.extend(true, {}, getDefaults(name), options));
- } else if (_jquery.default.fn[name]) {
- var plugin = new Plugin($el, options);
- plugin.getName = function () {
- return name;
- };
- plugin.name = name;
- return plugin;
- } else if (typeof PluginClass.api !== 'undefined') {
- // console.log('Plugin:' + name + ' use api render.');
- return false;
- }
- console.warn("Plugin:".concat(name, " script is not loaded."));
- return false;
- }
- var _default = Plugin;
- _exports.default = _default;
- });
|