UNPKG

25.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"d3plus-common.js","sources":["../src/accessor.js","../src/isObject.js","../src/assign.js","../src/attrize.js","../src/uuid.js","../src/RESET.js","../src/BaseClass.js","../src/closest.js","../src/configPrep.js","../src/constant.js","../src/elem.js","../src/merge.js","../src/prefix.js","../src/stylize.js"],"sourcesContent":["/**\n @function accessor\n @desc Wraps an object key in a simple accessor function.\n @param {String} key The key to be returned from each Object passed to the function.\n @param {*} [def] A default value to be returned if the key is not present.\n @example <caption>this</caption>\naccessor(\"id\");\n @example <caption>returns this</caption>\nfunction(d) {\n return d[\"id\"];\n}\n*/\nexport default function(key, def) {\n if (def === void 0) return d => d[key];\n return d => d[key] === void 0 ? def : d[key];\n}\n","/**\n @function isObject\n @desc Detects if a variable is a javascript Object.\n @param {*} item\n*/\nexport default function(item) {\n return item && typeof item === \"object\" && !Array.isArray(item) && item !== void 0 ? true : false;\n}\n","import {default as isObject} from \"./isObject\";\n\n/**\n @function assign\n @desc A deeply recursive version of `Object.assign`.\n @param {...Object} objects\n @example <caption>this</caption>\nassign({id: \"foo\", deep: {group: \"A\"}}, {id: \"bar\", deep: {value: 20}}));\n @example <caption>returns this</caption>\n{id: \"bar\", deep: {group: \"A\", value: 20}}\n*/\nfunction assign(...objects) {\n\n const target = objects[0];\n for (let i = 1; i < objects.length; i++) {\n\n const source = objects[i];\n\n Object.keys(source).forEach(prop => {\n\n const value = source[prop];\n\n if (isObject(value)) {\n\n if (target.hasOwnProperty(prop) && isObject(target[prop])) target[prop] = assign({}, target[prop], value);\n else target[prop] = value;\n\n }\n else if (Array.isArray(value)) {\n\n if (target.hasOwnProperty(prop) && Array.isArray(target[prop])) {\n\n const targetArray = target[prop];\n\n value.forEach((sourceItem, itemIndex) => {\n\n if (itemIndex < targetArray.length) {\n const targetItem = targetArray[itemIndex];\n\n if (Object.is(targetItem, sourceItem)) return;\n\n if (isObject(targetItem) && isObject(sourceItem) || Array.isArray(targetItem) && Array.isArray(sourceItem)) {\n targetArray[itemIndex] = assign({}, targetItem, sourceItem);\n }\n else targetArray[itemIndex] = sourceItem;\n\n }\n else targetArray.push(sourceItem);\n\n });\n }\n else target[prop] = value;\n\n }\n else target[prop] = value;\n\n });\n }\n\n return target;\n\n}\n\nexport default assign;\n","/**\n @function attrize\n @desc Applies each key/value in an object as an attr.\n @param {D3selection} elem The D3 element to apply the styles to.\n @param {Object} attrs An object of key/value attr pairs.\n*/\nexport default function(e, a = {}) {\n for (const k in a) if ({}.hasOwnProperty.call(a, k)) e.attr(k, a[k]);\n}\n","/**\n @function s\n @desc Returns 4 random characters, used for constructing unique identifiers.\n @private\n*/\nfunction s() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n\n/**\n @function uuid\n @summary Returns a unique identifier.\n*/\nexport default function() {\n return `${s()}${s()}-${s()}-${s()}-${s()}-${s()}${s()}${s()}`;\n}\n","/**\n @constant RESET\n @desc String constant used to reset an individual config property.\n*/\nexport default \"D3PLUS-COMMON-RESET\";\n","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)) {\n if (obj[nestedKey] === RESET) {\n obj[nestedKey] = defaults[nestedKey];\n }\n else if (isObject(obj[nestedKey])) {\n nestedReset(obj[nestedKey], defaults[nestedKey]);\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","/**\n @function closest\n @desc Finds the closest numeric value in an array.\n @param {Number} n The number value to use when searching the array.\n @param {Array} arr The array of values to test against.\n*/\nexport default function(n, arr = []) {\n if (!arr || !(arr instanceof Array) || !arr.length) return undefined;\n return arr.reduce((prev, curr) => Math.abs(curr - n) < Math.abs(prev - n) ? curr : prev);\n}\n","/**\n @function configPrep\n @desc Preps a config object for d3plus data, and optionally bubbles up a specific nested type. When using this function, you must bind a d3plus class' `this` context.\n @param {Object} [config = this._shapeConfig] The configuration object to parse.\n @param {String} [type = \"shape\"] The event classifier to user for \"on\" events. For example, the default event type of \"shape\" will apply all events in the \"on\" config object with that key, like \"click.shape\" and \"mouseleave.shape\", in addition to any gloval events like \"click\" and \"mouseleave\".\n @param {String} [nest] An optional nested key to bubble up to the parent config level.\n*/\nexport default function configPrep(config = this._shapeConfig, type = \"shape\", nest = false) {\n\n const newConfig = {duration: this._duration, on: {}};\n\n const wrapFunction = func => (d, i, s) => {\n while (d.__d3plus__) {\n i = d.i;\n d = d.data || d.feature;\n }\n return func(d, i, s);\n };\n\n const parseEvents = (newObj, on) => {\n\n for (const event in on) {\n\n if ({}.hasOwnProperty.call(on, event) && !event.includes(\".\") || event.includes(`.${type}`)) {\n\n newObj.on[event] = wrapFunction(on[event]);\n\n }\n\n }\n\n };\n\n const keyEval = (newObj, obj) => {\n\n for (const key in obj) {\n\n if ({}.hasOwnProperty.call(obj, key)) {\n\n if (key === \"on\") parseEvents(newObj, obj[key]);\n else if (typeof obj[key] === \"function\") {\n newObj[key] = wrapFunction(obj[key]);\n }\n else if (typeof obj[key] === \"object\" && !(obj instanceof Array)) {\n newObj[key] = {on: {}};\n keyEval(newObj[key], obj[key]);\n }\n else newObj[key] = obj[key];\n\n }\n\n }\n\n };\n\n keyEval(newConfig, config);\n if (this._on) parseEvents(newConfig, this._on);\n if (nest && config[nest]) {\n keyEval(newConfig, config[nest]);\n if (config[nest].on) parseEvents(newConfig, config[nest].on);\n }\n\n return newConfig;\n\n}\n","/**\n @function constant\n @desc Wraps non-function variables in a simple return function.\n @param {Array|Number|Object|String} value The value to be returned from the function.\n @example <caption>this</caption>\nconstant(42);\n @example <caption>returns this</caption>\nfunction() {\n return 42;\n}\n*/\nexport default function(value) {\n return function constant() {\n return value;\n };\n}\n","import {select} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\n\nimport {default as attrize} from \"./attrize\";\n\n/**\n @function elem\n @desc Manages the enter/update/exit pattern for a single DOM element.\n @param {String} selector A D3 selector, which must include the tagname and a class and/or ID.\n @param {Object} params Additional parameters.\n @param {Boolean} [params.condition = true] Whether or not the element should be rendered (or removed).\n @param {Object} [params.enter = {}] A collection of key/value pairs that map to attributes to be given on enter.\n @param {Object} [params.exit = {}] A collection of key/value pairs that map to attributes to be given on exit.\n @param {D3Selection} [params.parent = d3.select(\"body\")] The parent element for this new element to be appended to.\n @param {D3Transition} [params.transition = d3.transition().duration(0)] The transition to use when animated the different life cycle stages.\n @param {Object} [params.update = {}] A collection of key/value pairs that map to attributes to be given on update.\n*/\nexport default function(selector, p) {\n\n // overrides default params\n p = Object.assign({}, {\n condition: true,\n enter: {},\n exit: {},\n parent: select(\"body\"),\n transition: transition().duration(0),\n update: {}\n }, p);\n\n const className = (/\\.([^#]+)/g).exec(selector),\n id = (/#([^\\.]+)/g).exec(selector),\n tag = (/^([^.^#]+)/g).exec(selector)[1];\n\n const elem = p.parent.selectAll(selector.includes(\":\") ? selector.split(\":\")[1] : selector)\n .data(p.condition ? [null] : []);\n\n const enter = elem.enter().append(tag).call(attrize, p.enter);\n\n if (id) enter.attr(\"id\", id[1]);\n if (className) enter.attr(\"class\", className[1]);\n\n elem.exit().transition(p.transition).call(attrize, p.exit).remove();\n\n const update = enter.merge(elem);\n update.transition(p.transition).call(attrize, p.update);\n\n return update;\n\n}\n","import {merge, sum} from \"d3-array\";\nimport {keys} from \"d3-collection\";\n\n/**\n @function merge\n @desc Combines an Array of Objects together and returns a new Object.\n @param {Array} objects The Array of objects to be merged together.\n @param {Object} aggs An object containing specific aggregation methods (functions) for each key type. By default, numbers are summed and strings are returned as an array of unique values.\n @example <caption>this</caption>\nmerge([\n {id: \"foo\", group: \"A\", value: 10, links: [1, 2]},\n {id: \"bar\", group: \"A\", value: 20, links: [1, 3]}\n]);\n @example <caption>returns this</caption>\n{id: [\"bar\", \"foo\"], group: \"A\", value: 30, links: [1, 2, 3]}\n*/\nfunction objectMerge(objects, aggs = {}) {\n\n const availableKeys = new Set(merge(objects.map(o => keys(o)))),\n newObject = {};\n\n availableKeys.forEach(k => {\n const values = objects.map(o => o[k]);\n let value;\n if (aggs[k]) value = aggs[k](values);\n else {\n const types = values.map(v => v || v === false ? v.constructor : v).filter(v => v !== void 0);\n if (!types.length) value = undefined;\n else if (types.indexOf(Array) >= 0) {\n value = merge(values.map(v => v instanceof Array ? v : [v]));\n value = Array.from(new Set(value));\n if (value.length === 1) value = value[0];\n }\n else if (types.indexOf(String) >= 0) {\n value = Array.from(new Set(values));\n if (value.length === 1) value = value[0];\n }\n else if (types.indexOf(Number) >= 0) value = sum(values);\n else if (types.indexOf(Object) >= 0) value = objectMerge(values.filter(v => v));\n else {\n value = Array.from(new Set(values.filter(v => v !== void 0)));\n if (value.length === 1) value = value[0];\n }\n }\n newObject[k] = value;\n });\n\n return newObject;\n\n}\n\nexport default objectMerge;\n","/**\n @function prefix\n @desc Returns the appropriate CSS vendor prefix, given the current browser.\n*/\nexport default function() {\n if (\"-webkit-transform\" in document.body.style) return \"-webkit-\";\n else if (\"-moz-transform\" in document.body.style) return \"-moz-\";\n else if (\"-ms-transform\" in document.body.style) return \"-ms-\";\n else if (\"-o-transform\" in document.body.style) return \"-o-\";\n else return \"\";\n}\n","/**\n @function stylize\n @desc Applies each key/value in an object as a style.\n @param {D3selection} elem The D3 element to apply the styles to.\n @param {Object} styles An object of key/value style pairs.\n*/\nexport default function(e, s = {}) {\n for (const k in s) if ({}.hasOwnProperty.call(s, k)) e.style(k, s[k]);\n}\n"],"names":["const","let","i","this","k","v","config","select","transition","merge","keys","sum"],"mappings":"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"}
\No newline at end of file