baseframe-js
Version:
A suite of useful Javascript plugins and functions to help with Front-end Development on websites
68 lines (67 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _cashDom = _interopRequireDefault(require("cash-dom"));
var _helpers = require("../util/helpers");
var _Store = _interopRequireDefault(require("./Store"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var checkIfParamsExist = function checkIfParamsExist(setParams, params) {
var notify = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
for (var k in params) {
if (!{}.hasOwnProperty.call(setParams, k)) {
notify && console.log(k, 'is not a property that can be used');
delete params[k];
}
}
return params;
};
var extendPlugin = function extendPlugin(Plugin, notify, Lib) {
var DataName = Plugin.pluginName;
var pluginName = (0, _helpers.lowercaseFirstLetter)(DataName);
Plugin.Constructor = Plugin;
Lib.fn.extend(_defineProperty({}, pluginName, function (params) {
var s = this;
return s.each(function (index) {
var instance = (0, _Store["default"])(this, DataName);
if (!instance) {
var plugin = new Plugin(this, params, index);
(0, _Store["default"])(this, DataName, plugin);
} else {
var canUpdate = instance.handleUpdate && typeof instance.handleUpdate === 'function';
if (typeof params === 'string') {
if (params === 'remove') {
Plugin.remove(this);
}
if (params === 'update' && canUpdate) {
instance.handleUpdate();
}
return;
}
checkIfParamsExist(instance.params, params, notify);
Lib.extend(instance.params, params);
if (canUpdate) {
instance.handleUpdate();
}
notify && console.log("Params updated", instance.params);
}
});
}));
};
var libraryExtend = function libraryExtend(Plugins) {
var notify = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var Lib = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _cashDom["default"];
if (Plugins instanceof Array) {
for (var i = 0, l = Plugins.length; i < l; i++) {
extendPlugin(Plugins[i], notify, Lib);
}
} else {
extendPlugin(Plugins, notify, Lib);
}
};
var _default = exports["default"] = libraryExtend;