UNPKG

39.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/findLocale.js","../src/uuid.js","../src/RESET.js","../src/locales/es-ES.js","../src/locales/index.js","../src/BaseClass.js","../src/closest.js","../src/configPrep.js","../src/constant.js","../src/elem.js","../src/unique.js","../src/merge.js","../src/parseSides.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 &&\n typeof item === \"object\" &&\n (typeof window === \"undefined\" || item !== window && item !== window.document && !(item instanceof Element)) &&\n !Array.isArray(item)\n ? true : false;\n}\n","import {default as isObject} from \"./isObject\";\n\n/**\n @function validObject\n @desc Determines if the object passed is the document or window.\n @param {Object} obj\n @private\n*/\nfunction validObject(obj) {\n if (typeof window === \"undefined\") return true;\n else return obj !== window && obj !== document;\n}\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) && validObject(value)) {\n if (target.hasOwnProperty(prop) && isObject(target[prop])) target[prop] = assign({}, target[prop], value);\n else target[prop] = assign({}, value);\n }\n else if (Array.isArray(value)) target[prop] = value.slice();\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","import lcid from \"windows-locale\";\nimport iso from \"iso639-codes\";\n\nconst locales = [];\nconst isoKeys = Object.keys(iso);\n\nObject.keys(lcid).map(id => {\n const locale = lcid[id];\n const isoLanguage = isoKeys.find(name => name.toLowerCase() === locale.language.toLowerCase());\n if (locale.location && isoLanguage) {\n locales.push({\n [\"name\"]: locale.language,\n [\"location\"]: locale.location,\n [\"tag\"]: locale.tag,\n [\"lcid\"]: locale.id,\n [\"iso639-2\"]: iso[isoLanguage][\"iso639-2\"],\n [\"iso639-1\"]: iso[isoLanguage][\"iso639-1\"]\n });\n }\n});\n\nconst defaultLocales = {\n ar: \"ar-SA\",\n ca: \"ca-ES\",\n da: \"da-DK\",\n en: \"en-US\",\n ko: \"ko-KR\",\n pa: \"pa-IN\",\n pt: \"pt-BR\",\n sv: \"sv-SE\"\n};\n\n/**\n * Converts a 2-digit language into a full language-LOCATION locale.\n * @param {String} locale\n */\nexport default function(locale) {\n if (typeof locale !== \"string\" || locale.length === 5) return locale;\n if (defaultLocales[locale]) return defaultLocales[locale];\n const list = locales.filter(d => d[\"iso639-1\"] === locale);\n if (!list.length) return locale;\n else if (list.length === 1) return list[0].tag;\n else if (list.find(d => d.tag === `${locale}-${locale.toUpperCase()}`)) return `${locale}-${locale.toUpperCase()}`;\n else return list[0].tag;\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","export default {\n \"and\": \"y\",\n \"Back\": \"Atrás\",\n \"Click to Expand\": \"Clic para Ampliar\",\n \"Click to Hide\": \"Clic para Ocultar\",\n \"Click to Highlight\": \"Clic para Resaltar\",\n \"Click to Reset\": \"Clic para Restablecer\",\n \"Download\": \"Descargar\",\n \"Loading Visualization\": \"Cargando Visualización\",\n \"No Data Available\": \"Datos No Disponibles\",\n \"Powered by D3plus\": \"Funciona con D3plus\",\n \"Share\": \"Porcentaje\",\n \"Shift+Click to Hide\": \"Mayús+Clic para Ocultar\",\n \"Total\": \"Total\",\n \"Values\": \"Valores\"\n};\n","import esES from \"./es-ES\";\n\nexport default {\n \"es-ES\": esES\n};\n","import assign from \"./assign\";\nimport findLocale from \"./findLocale\";\nimport isObject from \"./isObject\";\nimport uuid from \"./uuid\";\nimport RESET from \"./RESET\";\n\nimport dictionaries from \"./locales/index\";\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 if (defaultValue) obj[nestedKey] = defaultValue;\n else delete obj[nestedKey];\n }\n else if (isObject(obj[nestedKey])) {\n nestedReset(obj[nestedKey], defaultValue);\n }\n }\n }\n }\n}\n\n/**\n * @desc finds all prototype methods of a class and it's parent classes\n * @param {*} obj\n * @private\n */\nfunction getAllMethods(obj) {\n let props = [];\n do {\n props = props.concat(Object.getOwnPropertyNames(obj));\n obj = Object.getPrototypeOf(obj);\n } while (obj && obj !== Object.prototype);\n return props.filter(e => e.indexOf(\"_\") !== 0 && ![\"config\", \"constructor\", \"render\"].includes(e));\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._locale = \"en-US\";\n this._on = {};\n this._translate = (d, locale = this._locale) => {\n const dictionary = dictionaries[locale];\n return dictionary && dictionary[d] ? dictionary[d] : d;\n };\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\n if (!this._configDefault) {\n const config = {};\n getAllMethods(this.__proto__).forEach(k => {\n const v = this[k]();\n config[k] = isObject(v) ? assign({}, v) : v;\n });\n this._configDefault = config;\n }\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\n const config = {};\n getAllMethods(this.__proto__).forEach(k => {\n config[k] = this[k]();\n });\n return config;\n\n }\n }\n\n /**\n @memberof BaseClass\n @desc Sets the locale used for all text and number formatting. This method supports the locales defined in [d3plus-format](https://github.com/d3plus/d3plus-format/blob/master/src/locale.js). The locale can be defined as a complex Object (like in d3plus-format), a locale code (like \"en-US\"), or a 2-digit language code (like \"en\"). If a 2-digit code is provided, the \"findLocale\" function is used to identify the most approximate locale from d3plus-format.\n @param {Object|String} [*value* = \"en-US\"]\n @chainable\n @example\n {\n separator: \"\",\n suffixes: [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"B\", \"t\", \"q\", \"Q\", \"Z\", \"Y\"],\n grouping: [3],\n delimiters: {\n thousands: \",\",\n decimal: \".\"\n },\n currency: [\"$\", \"\"]\n }\n */\n locale(_) {\n return arguments.length ? (this._locale = findLocale(_), this) : this._locale;\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 @memberof BaseClass\n @desc Defines how informational text strings should be displayed. By default, this function will try to find the string in question (which is the first argument provided to this function) inside of an internally managed translation Object. If you'd like to override to use custom text, simply pass this method your own custom formatting function.\n @param {Function} [*value*]\n @chainable\n @example <caption>For example, if we wanted to only change the string \"Back\" and allow all other string to return in English:</caption>\n.translate(function(d) {\n return d === \"Back\" ? \"Get outta here\" : d;\n})\n */\n translate(_) {\n return arguments.length ? (this._translate = _, this) : this._translate;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for each shape and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = assign(this._shapeConfig, _), this) : this._shapeConfig;\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 let parent;\n while (d.__d3plus__) {\n if (parent) d.__d3plusParent__ = parent;\n parent = d;\n i = d.i;\n d = d.data || d.feature;\n }\n return func.bind(this)(d, i, s || parent);\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 newObj.on[event] = wrapFunction(on[event]);\n }\n\n }\n\n };\n\n const arrayEval = arr => arr.map(d => {\n if (d instanceof Array) return arrayEval(d);\n else if (typeof d === \"object\") return keyEval({}, d);\n else if (typeof d === \"function\") return wrapFunction(d);\n else return d;\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 (obj[key] instanceof Array) {\n newObj[key] = arrayEval(obj[key]);\n }\n else if (typeof obj[key] === \"object\") {\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","/**\n @function unique\n @desc ES5 implementation to reduce an Array of values to unique instances.\n @param {Array} objects The Array of objects to be filtered.\n @example <caption>this</caption>\nunique([\"apple\", \"banana\", \"apple\"]);\n @example <caption>returns this</caption>\n[\"apple\", \"banana\"]\n*/\nexport default function(arr) {\n return arr.filter((k, i, a) => a.indexOf(k) === i);\n}\n","import {merge, sum} from \"d3-array\";\nimport {keys} from \"d3-collection\";\nimport unique from \"./unique\";\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 = unique(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 = unique(value);\n if (value.length === 1) value = value[0];\n }\n else if (types.indexOf(String) >= 0) {\n value = unique(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) {\n value = unique(values.filter(v => v));\n if (value.length === 1) value = value[0];\n else value = objectMerge(value);\n\n }\n else {\n value = unique(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 parseSides\n @desc Converts a string of directional CSS shorthand values into an object with the values expanded.\n @param {String|Number} sides The CSS shorthand string to expand.\n */\nexport default function(sides) {\n let values;\n if (typeof sides === \"number\") values = [sides];\n else values = sides.split(/\\s+/);\n\n if (values.length === 1) values = [values[0], values[0], values[0], values[0]];\n else if (values.length === 2) values = values.concat(values);\n else if (values.length === 3) values.push(values[1]);\n\n return [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ].reduce((acc, direction, i) => {\n const value = parseFloat(values[i]);\n acc[direction] = value || 0;\n return acc;\n }, {});\n}\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":["key","def","d","item","window","document","Element","Array","isArray","validObject","obj","assign","target","i","source","Object","keys","forEach","prop","value","isObject","hasOwnProperty","slice","length","e","a","k","call","attr","locales","isoKeys","iso","lcid","map","id","locale","isoLanguage","find","name","toLowerCase","language","location","push","tag","defaultLocales","ar","ca","da","en","ko","pa","pt","sv","list","filter","toUpperCase","s","Math","floor","random","toString","substring","esES","nestedReset","defaults","nestedKey","startsWith","defaultValue","undefined","RESET","getAllMethods","props","concat","getOwnPropertyNames","getPrototypeOf","prototype","indexOf","includes","BaseClass","_locale","_on","_translate","dictionary","dictionaries","_uuid","uuid","_","_configDefault","config","__proto__","v","arguments","findLocale","f","_shapeConfig","n","arr","reduce","prev","curr","abs","configPrep","type","nest","newConfig","duration","_duration","on","wrapFunction","func","parent","__d3plus__","__d3plusParent__","data","feature","bind","parseEvents","newObj","event","arrayEval","keyEval","constant","selector","p","condition","enter","exit","select","transition","update","className","exec","elem","selectAll","split","append","attrize","remove","merge","objectMerge","objects","aggs","availableKeys","unique","o","newObject","values","types","constructor","String","Number","sum","sides","acc","direction","parseFloat","body","style"],"mappings":"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"}
\No newline at end of file