@tanem/svg-injector 11.0.0 → 11.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/cache.d.ts +1 -1
- package/dist/inject-element.d.ts +1 -1
- package/dist/load-svg-cached.d.ts +1 -1
- package/dist/load-svg-uncached.d.ts +1 -1
- package/dist/request-queue.d.ts +1 -1
- package/dist/svg-injector.cjs.development.js +107 -36
- package/dist/svg-injector.cjs.development.js.map +1 -1
- package/dist/svg-injector.cjs.production.js +1 -1
- package/dist/svg-injector.cjs.production.js.map +1 -1
- package/dist/svg-injector.d.ts +1 -1
- package/dist/svg-injector.esm.js +107 -36
- package/dist/svg-injector.esm.js.map +1 -1
- package/dist/svg-injector.umd.development.js +336 -175
- package/dist/svg-injector.umd.development.js.map +1 -1
- package/dist/svg-injector.umd.production.js +1 -1
- package/dist/svg-injector.umd.production.js.map +1 -1
- package/package.json +25 -26
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
19
19
|
PERFORMANCE OF THIS SOFTWARE.
|
|
20
20
|
***************************************************************************** */
|
|
21
|
-
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
21
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
function __spreadArray(to, from, pack) {
|
|
@@ -42,151 +42,241 @@
|
|
|
42
42
|
return sourceSvg.cloneNode(true);
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
+
var contentType = {};
|
|
46
|
+
|
|
45
47
|
/*!
|
|
46
48
|
* content-type
|
|
47
49
|
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
48
50
|
* MIT Licensed
|
|
49
51
|
*/
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
53
|
+
var hasRequiredContentType;
|
|
54
|
+
|
|
55
|
+
function requireContentType () {
|
|
56
|
+
if (hasRequiredContentType) return contentType;
|
|
57
|
+
hasRequiredContentType = 1;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1
|
|
61
|
+
*
|
|
62
|
+
* parameter = token "=" ( token / quoted-string )
|
|
63
|
+
* token = 1*tchar
|
|
64
|
+
* tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
|
|
65
|
+
* / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
|
|
66
|
+
* / DIGIT / ALPHA
|
|
67
|
+
* ; any VCHAR, except delimiters
|
|
68
|
+
* quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
|
|
69
|
+
* qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text
|
|
70
|
+
* obs-text = %x80-FF
|
|
71
|
+
* quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
|
|
72
|
+
*/
|
|
73
|
+
var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g; // eslint-disable-line no-control-regex
|
|
74
|
+
var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/; // eslint-disable-line no-control-regex
|
|
75
|
+
var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* RegExp to match quoted-pair in RFC 7230 sec 3.2.6
|
|
79
|
+
*
|
|
80
|
+
* quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
|
|
81
|
+
* obs-text = %x80-FF
|
|
82
|
+
*/
|
|
83
|
+
var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; // eslint-disable-line no-control-regex
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6
|
|
87
|
+
*/
|
|
88
|
+
var QUOTE_REGEXP = /([\\"])/g;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* RegExp to match type in RFC 7231 sec 3.1.1.1
|
|
92
|
+
*
|
|
93
|
+
* media-type = type "/" subtype
|
|
94
|
+
* type = token
|
|
95
|
+
* subtype = token
|
|
96
|
+
*/
|
|
97
|
+
var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Module exports.
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
contentType.format = format;
|
|
105
|
+
contentType.parse = parse;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Format object to media type.
|
|
109
|
+
*
|
|
110
|
+
* @param {object} obj
|
|
111
|
+
* @return {string}
|
|
112
|
+
* @public
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
function format (obj) {
|
|
116
|
+
if (!obj || typeof obj !== 'object') {
|
|
117
|
+
throw new TypeError('argument obj is required')
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var parameters = obj.parameters;
|
|
121
|
+
var type = obj.type;
|
|
122
|
+
|
|
123
|
+
if (!type || !TYPE_REGEXP.test(type)) {
|
|
124
|
+
throw new TypeError('invalid type')
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
var string = type;
|
|
128
|
+
|
|
129
|
+
// append parameters
|
|
130
|
+
if (parameters && typeof parameters === 'object') {
|
|
131
|
+
var param;
|
|
132
|
+
var params = Object.keys(parameters).sort();
|
|
133
|
+
|
|
134
|
+
for (var i = 0; i < params.length; i++) {
|
|
135
|
+
param = params[i];
|
|
136
|
+
|
|
137
|
+
if (!TOKEN_REGEXP.test(param)) {
|
|
138
|
+
throw new TypeError('invalid parameter name')
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
string += '; ' + param + '=' + qstring(parameters[param]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return string
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Parse media type to object.
|
|
150
|
+
*
|
|
151
|
+
* @param {string|object} string
|
|
152
|
+
* @return {Object}
|
|
153
|
+
* @public
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
function parse (string) {
|
|
157
|
+
if (!string) {
|
|
158
|
+
throw new TypeError('argument string is required')
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// support req/res-like objects as argument
|
|
162
|
+
var header = typeof string === 'object'
|
|
163
|
+
? getcontenttype(string)
|
|
164
|
+
: string;
|
|
165
|
+
|
|
166
|
+
if (typeof header !== 'string') {
|
|
167
|
+
throw new TypeError('argument string is required to be a string')
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
var index = header.indexOf(';');
|
|
171
|
+
var type = index !== -1
|
|
172
|
+
? header.slice(0, index).trim()
|
|
173
|
+
: header.trim();
|
|
174
|
+
|
|
175
|
+
if (!TYPE_REGEXP.test(type)) {
|
|
176
|
+
throw new TypeError('invalid media type')
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
var obj = new ContentType(type.toLowerCase());
|
|
180
|
+
|
|
181
|
+
// parse parameters
|
|
182
|
+
if (index !== -1) {
|
|
183
|
+
var key;
|
|
184
|
+
var match;
|
|
185
|
+
var value;
|
|
186
|
+
|
|
187
|
+
PARAM_REGEXP.lastIndex = index;
|
|
188
|
+
|
|
189
|
+
while ((match = PARAM_REGEXP.exec(header))) {
|
|
190
|
+
if (match.index !== index) {
|
|
191
|
+
throw new TypeError('invalid parameter format')
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
index += match[0].length;
|
|
195
|
+
key = match[1].toLowerCase();
|
|
196
|
+
value = match[2];
|
|
197
|
+
|
|
198
|
+
if (value.charCodeAt(0) === 0x22 /* " */) {
|
|
199
|
+
// remove quotes
|
|
200
|
+
value = value.slice(1, -1);
|
|
201
|
+
|
|
202
|
+
// remove escapes
|
|
203
|
+
if (value.indexOf('\\') !== -1) {
|
|
204
|
+
value = value.replace(QESC_REGEXP, '$1');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
obj.parameters[key] = value;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (index !== header.length) {
|
|
212
|
+
throw new TypeError('invalid parameter format')
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return obj
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Get content-type from req/res objects.
|
|
221
|
+
*
|
|
222
|
+
* @param {object}
|
|
223
|
+
* @return {Object}
|
|
224
|
+
* @private
|
|
225
|
+
*/
|
|
226
|
+
|
|
227
|
+
function getcontenttype (obj) {
|
|
228
|
+
var header;
|
|
229
|
+
|
|
230
|
+
if (typeof obj.getHeader === 'function') {
|
|
231
|
+
// res-like
|
|
232
|
+
header = obj.getHeader('content-type');
|
|
233
|
+
} else if (typeof obj.headers === 'object') {
|
|
234
|
+
// req-like
|
|
235
|
+
header = obj.headers && obj.headers['content-type'];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (typeof header !== 'string') {
|
|
239
|
+
throw new TypeError('content-type header is missing from object')
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return header
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Quote a string if necessary.
|
|
247
|
+
*
|
|
248
|
+
* @param {string} val
|
|
249
|
+
* @return {string}
|
|
250
|
+
* @private
|
|
251
|
+
*/
|
|
252
|
+
|
|
253
|
+
function qstring (val) {
|
|
254
|
+
var str = String(val);
|
|
255
|
+
|
|
256
|
+
// no need to quote tokens
|
|
257
|
+
if (TOKEN_REGEXP.test(str)) {
|
|
258
|
+
return str
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (str.length > 0 && !TEXT_REGEXP.test(str)) {
|
|
262
|
+
throw new TypeError('invalid parameter value')
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"'
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Class to represent a content type.
|
|
270
|
+
* @private
|
|
271
|
+
*/
|
|
272
|
+
function ContentType (type) {
|
|
273
|
+
this.parameters = Object.create(null);
|
|
274
|
+
this.type = type;
|
|
275
|
+
}
|
|
276
|
+
return contentType;
|
|
180
277
|
}
|
|
181
278
|
|
|
182
|
-
|
|
183
|
-
* Class to represent a content type.
|
|
184
|
-
* @private
|
|
185
|
-
*/
|
|
186
|
-
function ContentType (type) {
|
|
187
|
-
this.parameters = Object.create(null);
|
|
188
|
-
this.type = type;
|
|
189
|
-
}
|
|
279
|
+
var contentTypeExports = requireContentType();
|
|
190
280
|
|
|
191
281
|
var isLocal = function () {
|
|
192
282
|
return window.location.protocol === 'file:';
|
|
@@ -201,7 +291,7 @@
|
|
|
201
291
|
if (!contentType) {
|
|
202
292
|
throw new Error('Content type not found');
|
|
203
293
|
}
|
|
204
|
-
var type =
|
|
294
|
+
var type = contentTypeExports.parse(contentType).type;
|
|
205
295
|
if (!(type === 'image/svg+xml' || type === 'text/plain')) {
|
|
206
296
|
throw new Error("Invalid content type: ".concat(type));
|
|
207
297
|
}
|
|
@@ -235,28 +325,36 @@
|
|
|
235
325
|
|
|
236
326
|
var requestQueue = {};
|
|
237
327
|
var queueRequest = function (url, callback) {
|
|
238
|
-
|
|
328
|
+
var _a;
|
|
329
|
+
(_a = requestQueue[url]) !== null && _a !== void 0 ? _a : requestQueue[url] = [];
|
|
239
330
|
requestQueue[url].push(callback);
|
|
240
331
|
};
|
|
241
332
|
var processRequestQueue = function (url) {
|
|
333
|
+
var callbacks = requestQueue[url];
|
|
334
|
+
if (!callbacks) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
242
337
|
var _loop_1 = function (i, len) {
|
|
243
338
|
setTimeout(function () {
|
|
244
339
|
if (Array.isArray(requestQueue[url])) {
|
|
245
340
|
var cacheValue = cache.get(url);
|
|
246
|
-
var callback =
|
|
341
|
+
var callback = callbacks[i];
|
|
342
|
+
if (!callback) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
247
345
|
if (cacheValue instanceof SVGSVGElement) {
|
|
248
346
|
callback(null, cloneSvg(cacheValue));
|
|
249
347
|
}
|
|
250
348
|
if (cacheValue instanceof Error) {
|
|
251
349
|
callback(cacheValue);
|
|
252
350
|
}
|
|
253
|
-
if (i ===
|
|
351
|
+
if (i === callbacks.length - 1) {
|
|
254
352
|
delete requestQueue[url];
|
|
255
353
|
}
|
|
256
354
|
}
|
|
257
355
|
}, 0);
|
|
258
356
|
};
|
|
259
|
-
for (var i = 0, len =
|
|
357
|
+
for (var i = 0, len = callbacks.length; i < len; i++) {
|
|
260
358
|
_loop_1(i);
|
|
261
359
|
}
|
|
262
360
|
};
|
|
@@ -307,7 +405,8 @@
|
|
|
307
405
|
var svgNamespace = 'http://www.w3.org/2000/svg';
|
|
308
406
|
var xlinkNamespace = 'http://www.w3.org/1999/xlink';
|
|
309
407
|
var injectElement = function (el, evalScripts, renumerateIRIElements, cacheRequests, httpRequestWithCredentials, beforeEach, callback) {
|
|
310
|
-
var
|
|
408
|
+
var _a;
|
|
409
|
+
var elUrl = (_a = el.getAttribute('data-src')) !== null && _a !== void 0 ? _a : el.getAttribute('src');
|
|
311
410
|
if (!elUrl) {
|
|
312
411
|
callback(new Error('Invalid data-src or src attribute'));
|
|
313
412
|
return;
|
|
@@ -321,6 +420,7 @@
|
|
|
321
420
|
el.setAttribute('src', '');
|
|
322
421
|
var loadSvg = cacheRequests ? loadSvgCached : loadSvgUncached;
|
|
323
422
|
loadSvg(elUrl, httpRequestWithCredentials, function (error, svg) {
|
|
423
|
+
var _a, _b;
|
|
324
424
|
if (!svg) {
|
|
325
425
|
injectedElements.splice(injectedElements.indexOf(el), 1);
|
|
326
426
|
el = null;
|
|
@@ -343,7 +443,7 @@
|
|
|
343
443
|
if (elHeight) {
|
|
344
444
|
svg.setAttribute('height', elHeight);
|
|
345
445
|
}
|
|
346
|
-
var mergedClasses = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], (svg.getAttribute('class')
|
|
446
|
+
var mergedClasses = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], ((_a = svg.getAttribute('class')) !== null && _a !== void 0 ? _a : '').split(' '), true), ['injected-svg'], false), ((_b = el.getAttribute('class')) !== null && _b !== void 0 ? _b : '').split(' '), true))).join(' ').trim();
|
|
347
447
|
svg.setAttribute('class', mergedClasses);
|
|
348
448
|
var elStyle = el.getAttribute('style');
|
|
349
449
|
if (elStyle) {
|
|
@@ -371,46 +471,102 @@
|
|
|
371
471
|
pattern: ['fill', 'stroke'],
|
|
372
472
|
radialGradient: ['fill', 'stroke']
|
|
373
473
|
};
|
|
474
|
+
var replaceIriReferences_1 = function (value, iriIdMap) {
|
|
475
|
+
return value.replace(/url\((['"]?)\s*#([^\s'"\)]+)\s*\1\)/g, function (match, _quote, iriId) {
|
|
476
|
+
var newId = iriIdMap[iriId];
|
|
477
|
+
return newId ? "url(#".concat(newId, ")") : match;
|
|
478
|
+
});
|
|
479
|
+
};
|
|
480
|
+
var replaceHrefReference = function (value, iriIdMap) {
|
|
481
|
+
if (!value.startsWith('#')) {
|
|
482
|
+
return value;
|
|
483
|
+
}
|
|
484
|
+
var iriId = value.slice(1);
|
|
485
|
+
var newId = iriIdMap[iriId];
|
|
486
|
+
return newId ? '#' + newId : value;
|
|
487
|
+
};
|
|
374
488
|
var element_1;
|
|
375
489
|
var elements_1;
|
|
376
490
|
var properties_1;
|
|
377
491
|
var currentId_1;
|
|
378
492
|
var newId_1;
|
|
493
|
+
var renumeratedElements_1 = [];
|
|
494
|
+
var iriIdMap_1 = {};
|
|
379
495
|
Object.keys(iriElementsAndProperties_1).forEach(function (key) {
|
|
380
496
|
element_1 = key;
|
|
381
|
-
properties_1 = iriElementsAndProperties_1[key];
|
|
382
497
|
elements_1 = svg.querySelectorAll(element_1 + '[id]');
|
|
383
|
-
var
|
|
384
|
-
|
|
498
|
+
for (var a = 0, elementsLen = elements_1.length; a < elementsLen; a++) {
|
|
499
|
+
var currentElement = elements_1[a];
|
|
500
|
+
currentId_1 = currentElement.id;
|
|
385
501
|
newId_1 = currentId_1 + '-' + uniqueId();
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
if (attrValue && !attrValue.match(new RegExp('url\\("?#' + currentId_1 + '"?\\)'))) {
|
|
392
|
-
continue;
|
|
393
|
-
}
|
|
394
|
-
referencingElements[b].setAttribute(property, 'url(#' + newId_1 + ')');
|
|
395
|
-
}
|
|
502
|
+
iriIdMap_1[currentId_1] = newId_1;
|
|
503
|
+
renumeratedElements_1.push({
|
|
504
|
+
element: currentElement,
|
|
505
|
+
currentId: currentId_1,
|
|
506
|
+
newId: newId_1
|
|
396
507
|
});
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
Object.keys(iriElementsAndProperties_1).forEach(function (key) {
|
|
511
|
+
properties_1 = iriElementsAndProperties_1[key];
|
|
512
|
+
var referencingElements;
|
|
513
|
+
Array.prototype.forEach.call(properties_1, function (property) {
|
|
514
|
+
referencingElements = svg.querySelectorAll('[' + property + ']');
|
|
515
|
+
for (var b = 0, referencingElementLen = referencingElements.length; b < referencingElementLen; b++) {
|
|
516
|
+
var referencingElement = referencingElements[b];
|
|
517
|
+
var attrValue = referencingElement.getAttribute(property);
|
|
518
|
+
if (attrValue) {
|
|
519
|
+
var nextValue = replaceIriReferences_1(attrValue, iriIdMap_1);
|
|
520
|
+
if (nextValue !== attrValue) {
|
|
521
|
+
referencingElement.setAttribute(property, nextValue);
|
|
522
|
+
}
|
|
403
523
|
}
|
|
404
524
|
}
|
|
405
|
-
|
|
406
|
-
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
var allLinks = svg.querySelectorAll('*');
|
|
528
|
+
for (var c = 0, allLinksLen = allLinks.length; c < allLinksLen; c++) {
|
|
529
|
+
var link = allLinks[c];
|
|
530
|
+
var href = link.getAttribute('href');
|
|
531
|
+
if (href) {
|
|
532
|
+
var nextHref = replaceHrefReference(href, iriIdMap_1);
|
|
533
|
+
if (nextHref !== href) {
|
|
534
|
+
link.setAttribute('href', nextHref);
|
|
407
535
|
}
|
|
408
|
-
elements_1[a].id = newId_1;
|
|
409
|
-
};
|
|
410
|
-
for (var a = 0, elementsLen = elements_1.length; a < elementsLen; a++) {
|
|
411
|
-
_loop_1(a);
|
|
412
536
|
}
|
|
413
|
-
|
|
537
|
+
var xlinkHref = link.getAttributeNS(xlinkNamespace, 'href');
|
|
538
|
+
if (xlinkHref) {
|
|
539
|
+
var nextXlinkHref = replaceHrefReference(xlinkHref, iriIdMap_1);
|
|
540
|
+
if (nextXlinkHref !== xlinkHref) {
|
|
541
|
+
link.setAttributeNS(xlinkNamespace, 'href', nextXlinkHref);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
var styleElements = svg.querySelectorAll('[style]');
|
|
546
|
+
for (var d = 0, styleElementsLen = styleElements.length; d < styleElementsLen; d++) {
|
|
547
|
+
var styleElement = styleElements[d];
|
|
548
|
+
var styleValue = styleElement.getAttribute('style');
|
|
549
|
+
if (styleValue) {
|
|
550
|
+
var nextStyleValue = replaceIriReferences_1(styleValue, iriIdMap_1);
|
|
551
|
+
if (nextStyleValue !== styleValue) {
|
|
552
|
+
styleElement.setAttribute('style', nextStyleValue);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
var styleTagElements = svg.querySelectorAll('style');
|
|
557
|
+
for (var e = 0, styleTagElementsLen = styleTagElements.length; e < styleTagElementsLen; e++) {
|
|
558
|
+
var styleTagElement = styleTagElements[e];
|
|
559
|
+
var textContent = styleTagElement.textContent;
|
|
560
|
+
if (textContent) {
|
|
561
|
+
var nextTextContent = replaceIriReferences_1(textContent, iriIdMap_1);
|
|
562
|
+
if (nextTextContent !== textContent) {
|
|
563
|
+
styleTagElement.textContent = nextTextContent;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
for (var f = 0, renumeratedElementsLen = renumeratedElements_1.length; f < renumeratedElementsLen; f++) {
|
|
568
|
+
renumeratedElements_1[f].element.id = renumeratedElements_1[f].newId;
|
|
569
|
+
}
|
|
414
570
|
}
|
|
415
571
|
svg.removeAttribute('xmlns:a');
|
|
416
572
|
var scripts = svg.querySelectorAll('script');
|
|
@@ -418,13 +574,14 @@
|
|
|
418
574
|
var script;
|
|
419
575
|
var scriptType;
|
|
420
576
|
for (var i = 0, scriptsLen = scripts.length; i < scriptsLen; i++) {
|
|
421
|
-
|
|
577
|
+
var scriptElement = scripts[i];
|
|
578
|
+
scriptType = scriptElement.getAttribute('type');
|
|
422
579
|
if (!scriptType || scriptType === 'application/ecmascript' || scriptType === 'application/javascript' || scriptType === 'text/javascript') {
|
|
423
|
-
script =
|
|
580
|
+
script = scriptElement.innerText || scriptElement.textContent;
|
|
424
581
|
if (script) {
|
|
425
582
|
scriptsToEval.push(script);
|
|
426
583
|
}
|
|
427
|
-
svg.removeChild(
|
|
584
|
+
svg.removeChild(scriptElement);
|
|
428
585
|
}
|
|
429
586
|
}
|
|
430
587
|
if (scriptsToEval.length > 0 && (evalScripts === 'always' || evalScripts === 'once' && !ranScripts[elUrl])) {
|
|
@@ -478,7 +635,11 @@
|
|
|
478
635
|
if (elements && 'length' in elements) {
|
|
479
636
|
var elementsLoaded_1 = 0;
|
|
480
637
|
for (var i = 0, j = elements.length; i < j; i++) {
|
|
481
|
-
|
|
638
|
+
var element = elements[i];
|
|
639
|
+
if (!element) {
|
|
640
|
+
continue;
|
|
641
|
+
}
|
|
642
|
+
injectElement(element, evalScripts, renumerateIRIElements, cacheRequests, httpRequestWithCredentials, beforeEach, function (error, svg) {
|
|
482
643
|
afterEach(error, svg);
|
|
483
644
|
if (elements && 'length' in elements && elements.length === ++elementsLoaded_1) {
|
|
484
645
|
afterAll(elementsLoaded_1);
|