File "svgs-inline.js"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/svg-support/js/svgs-inline.js
File size: 5.59 KB
MIME-type: text/plain
Charset: utf-8
jQuery(document).ready(function ($) {
let bodhisvgsReplacements = 0;
// Function to replace the img tag with the SVG
function bodhisvgsReplace(img) {
var imgID = img.attr('id');
var imgClass = img.attr('class');
var imgURL = img.attr('src');
// Set svg size to the original img size
// var imgWidth = $img.attr('width');
// var imgHeight = $img.attr('height');
// Ensure the URL ends with .svg before proceeding
if (!imgURL.endsWith('svg')) {
console.log('Not an SVG:', imgURL);
return;
}
// Use jQuery's get method to fetch the SVG
$.get(imgURL, function(data) {
// Get the SVG tag, ignore the rest
var $svg = $(data).find('svg');
var svgID = $svg.attr('id');
// Add replaced image's ID to the new SVG if necessary
if (typeof imgID === 'undefined') {
if (typeof svgID === 'undefined') {
imgID = 'svg-replaced-' + bodhisvgsReplacements;
$svg = $svg.attr('id', imgID);
} else {
imgID = svgID;
}
} else {
$svg = $svg.attr('id', imgID);
}
// Add replaced image's classes to the new SVG
if (typeof imgClass !== 'undefined') {
$svg = $svg.attr('class', imgClass + ' replaced-svg svg-replaced-' + bodhisvgsReplacements);
}
// Remove any invalid XML tags as per http://validator.w3.org
$svg = $svg.removeAttr('xmlns:a');
// If sanitization is enabled, sanitize the SVG code
if (frontSanitizationEnabled === 'on' && $svg[0]['outerHTML'] != "") {
console.log('Sanitizing SVG:', imgURL);
$svg = DOMPurify.sanitize($svg[0]['outerHTML']);
}
// Replace image with new SVG
img.replaceWith($svg);
// Trigger custom event after SVG is loaded
$(document).trigger('svg.loaded', [imgID]);
// Increment the replacements counter
bodhisvgsReplacements++;
}, 'xml').fail(function() {
console.error('Failed to load SVG:', imgURL);
});
}
// Wrap in IIFE so that it can be called again later as bodhisvgsInlineSupport();
(bodhisvgsInlineSupport = function () {
console.log('Running bodhisvgsInlineSupport');
// If force inline SVG option is active then add class
if (ForceInlineSVGActive === 'true') {
// Find all SVG inside img and add class if it hasn't got it
jQuery('img').each(function () {
// Check if the SRC attribute is present at all
if (typeof jQuery(this).attr('src') !== typeof undefined && jQuery(this).attr('src') !== false) {
// Pick only those with the extension we want
if (jQuery(this).attr('src').match(/\.(svg)/)) {
// Add our class name
if (!jQuery(this).hasClass(cssTarget.ForceInlineSVG)) {
jQuery(this).addClass(cssTarget.ForceInlineSVG);
}
}
}
});
}
// Polyfill to support all older browsers
// delete when not needed in the future
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (searchString, position) {
var subjectString = this.toString();
if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
position = subjectString.length;
}
position -= searchString.length;
var lastIndex = subjectString.lastIndexOf(searchString, position);
return lastIndex !== -1 && lastIndex === position;
};
} // end polyfill
// Another snippet to support IE11
String.prototype.endsWith = function (pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
// End snippet to support IE11
// Check to see if user set alternate class
var target;
if (ForceInlineSVGActive === 'true') {
target = cssTarget.Bodhi !== 'img.' ? cssTarget.Bodhi : 'img.style-svg';
} else {
target = cssTarget !== 'img.' ? cssTarget.Bodhi : 'img.style-svg';
}
console.log('Initial target:', target);
// Ensure target is a string before applying replace method
if (typeof target === 'string') {
target = target.replace("img", "");
console.log('Modified target:', target);
} else {
console.error('Target is not a string:', target);
return;
}
// Replace images with SVGs based on the target class
$(target).each(function (index) {
// If image then send for replacement
if (typeof $(this).attr('src') !== typeof undefined && $(this).attr('src') !== false) {
bodhisvgsReplace($(this));
} else {
// Look for SVG children and send for replacement
$(this).find("img").each(function (i) {
if (typeof $(this).attr('src') !== typeof undefined && $(this).attr('src') !== false) {
bodhisvgsReplace($(this));
}
});
}
});
})(); // Execute immediately
});