UNPKG

6.66 kBSource Map (JSON)View Raw
1{"version":3,"file":"BaseClass.js","sources":["../../src/BaseClass.js"],"sourcesContent":["import assign from \"./assign\";\nimport isObject from \"./isObject\";\nimport uuid from \"./uuid\";\nimport RESET from \"./RESET\";\n\n/**\n @desc Recursive function that resets nested Object configs.\n @param {Object} obj\n @param {Object} defaults\n @private\n*/\nfunction nestedReset(obj, defaults) {\n if (isObject(obj)) {\n for (const nestedKey in obj) {\n if ({}.hasOwnProperty.call(obj, nestedKey) && !nestedKey.startsWith(\"_\")) {\n const defaultValue = defaults && isObject(defaults) ? defaults[nestedKey] : undefined;\n if (obj[nestedKey] === RESET) {\n obj[nestedKey] = defaultValue;\n }\n else if (isObject(obj[nestedKey])) {\n nestedReset(obj[nestedKey], defaultValue);\n }\n }\n }\n }\n}\n\n/**\n @class BaseClass\n @summary An abstract class that contains some global methods and functionality.\n*/\nexport default class BaseClass {\n\n /**\n @memberof BaseClass\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n this._on = {};\n this._uuid = uuid();\n }\n\n /**\n @memberof BaseClass\n @desc If *value* is specified, sets the methods that correspond to the key/value pairs and returns this class. If *value* is not specified, returns the current configuration.\n @param {Object} [*value*]\n @chainable\n */\n config(_) {\n if (!this._configDefault) {\n const config = {};\n for (const k in this.__proto__) {\n if (k.indexOf(\"_\") !== 0 && ![\"config\", \"constructor\", \"render\"].includes(k)) {\n const v = this[k]();\n config[k] = isObject(v) ? assign({}, v) : v;\n }\n }\n this._configDefault = config;\n }\n if (arguments.length) {\n for (const k in _) {\n if ({}.hasOwnProperty.call(_, k) && k in this) {\n const v = _[k];\n if (v === RESET) {\n if (k === \"on\") this._on = this._configDefault[k];\n else this[k](this._configDefault[k]);\n }\n else {\n nestedReset(v, this._configDefault[k]);\n this[k](v);\n }\n }\n }\n return this;\n }\n else {\n const config = {};\n for (const k in this.__proto__) if (k.indexOf(\"_\") !== 0 && ![\"config\", \"constructor\", \"render\"].includes(k)) config[k] = this[k]();\n return config;\n }\n }\n\n /**\n @memberof BaseClass\n @desc Adds or removes a *listener* to each object for the specified event *typenames*. If a *listener* is not specified, returns the currently assigned listener for the specified event *typename*. Mirrors the core [d3-selection](https://github.com/d3/d3-selection#selection_on) behavior.\n @param {String} [*typenames*]\n @param {Function} [*listener*]\n @chainable\n @example <caption>By default, listeners apply globally to all objects, however, passing a namespace with the class name gives control over specific elements:</caption>\nnew Plot\n .on(\"click.Shape\", function(d) {\n console.log(\"data for shape clicked:\", d);\n })\n .on(\"click.Legend\", function(d) {\n console.log(\"data for legend clicked:\", d);\n })\n */\n on(_, f) {\n return arguments.length === 2 ? (this._on[_] = f, this) : arguments.length ? typeof _ === \"string\" ? this._on[_] : (this._on = Object.assign({}, this._on, _), this) : this._on;\n }\n\n}\n"],"names":["const","config","k","v","this"],"mappings":"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"}
\No newline at end of file