UNPKG

d3-templating

Version:
55 lines (37 loc) 1.77 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {})); }(this, (function (exports) { 'use strict'; // d3-template plugin for d3js v4.x if (typeof(DOMParser) === 'undefined') { // if DOMParser is not defined then assign jsdom DOMParser(); (function(global) { var jsdom = require('jsdom'), dom = new jsdom.JSDOM(''); global.DOMParser = dom.window.DOMParser; })(global); } function template(render) { return function(s) { var parser = new DOMParser(); parser.async = false; s.each(function(d) { var rendered = render(d); var mime = (rendered.match(/xmlns="http:\/\/www\.w3\.org\/\d+\/svg"/gi)) ? 'text/xml' : 'text/html'; var parsedContent = parser .parseFromString(rendered, mime) // deserialize rendered content .documentElement; parsedContent = (mime === 'text/xml') ? parsedContent.firstChild : parsedContent; // import rendered nodes on actual node while (parsedContent) { this.appendChild( this.ownerDocument.importNode(parsedContent, true) ); parsedContent = parsedContent.nextSibling; } }); }; } exports.template = template; Object.defineProperty(exports, '__esModule', { value: true }); })));