UNPKG

4.23 kBSource Map (JSON)View Raw
1{"version":3,"file":"configPrep.js","sources":["../../src/configPrep.js"],"sourcesContent":["/**\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 const eventName = event.replace(\"click\", \"click touchstart\");\n newObj.on[eventName] = wrapFunction(on[event]);\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"],"names":["const"],"mappings":"AAAA;;;;;;;AAOA,eAAe,SAAS,UAAU,CAAC,MAA0B,EAAE,IAAc,EAAE,IAAY,EAAE;iCAApD,GAAG,IAAI,CAAC;6BAAkB,GAAG;6BAAa,GAAG;AAAQ;;EAE5FA,GAAK,CAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;;EAErDA,GAAK,CAAC,YAAY,aAAG,KAAI,CAAC,kBAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,AAAG;IACxC,OAAO,CAAC,CAAC,UAAU,EAAE;MACnB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACR,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACtB,CAAC;;EAEFA,GAAK,CAAC,WAAW,YAAG,CAAC,MAAM,EAAE,EAAE,EAAE,AAAG;;IAElC,KAAKA,GAAK,CAAC,KAAK,IAAI,EAAE,EAAE;;MAEtB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAI,IAAI,CAAE,CAAC,EAAE;QAC3FA,GAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;OAChD;;KAEF;;GAEF,CAAC;;EAEFA,GAAK,CAAC,OAAO,YAAG,CAAC,MAAM,EAAE,GAAG,EAAE,AAAG;;IAE/B,KAAKA,GAAK,CAAC,GAAG,IAAI,GAAG,EAAE;;MAErB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;;QAEpC,IAAI,GAAG,KAAK,IAAI,IAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAC;aAC3C,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;UACvC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACtC;aACI,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;UAChE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;UACvB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAChC;eACI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAC;;OAE7B;;KAEF;;GAEF,CAAC;;EAEF,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,IAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAC;EAC/C,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;IACxB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAC;GAC9D;;EAED,OAAO,SAAS,CAAC;;CAElB;"}
\No newline at end of file