var colorPicker = new iro.ColorPicker(".ms-colorpicker", {
width: 180,
color: "rgb(252, 252, 252)",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var values = document.getElementById("values");
var hexInput = document.getElementById("hexInput");
var swatch = document.getElementById("colorSwatch");
var solidPaths = document.querySelectorAll('#solid');
var filledPaths = document.querySelectorAll('#filled');
colorPicker.on(["color:init", "color:change"], function(color) {
values.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInput.value = color.hexString;
swatch.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
// Update the cached paths
solidPaths.forEach(path => {
path.setAttribute('stroke', selectedColor);
});
filledPaths.forEach(path => {
path.setAttribute('fill', selectedColor);
});
});
hexInput.addEventListener('change', function() {
colorPicker.color.hexString = this.value;
swatch.style.backgroundColor = this.value;
});
//---------------- PATTERN ------------------------------------------
var colorPickerPat = new iro.ColorPicker(".ms-colorpicker-pat", {
width: 180,
color: "#8f66ff",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var valuesPat = document.getElementById("valuesPat");
var hexInputPat = document.getElementById("hexInputPat");
var swatchPat = document.getElementById("colorSwatchPat");
// https://iro.js.org/guide.html#color-picker-events
colorPickerPat.on(["color:init", "color:change"], function(color) {
const svgsc = document.querySelectorAll('#my-svg');
valuesPat.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputPat.value = color.hexString;
swatchPat.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
svgsc.forEach(svg => {
const paths = svg.querySelectorAll('#p1');
paths.forEach(rect => {
rect.setAttribute('fill', selectedColor);
});
});
});
var colorPickerPatTwo = new iro.ColorPicker(".ms-colorpicker-pattwo", {
width: 180,
color: "#c8a1fd",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var valuesPatTwo = document.getElementById("valuesPatTwo");
var hexInputPatTwo = document.getElementById("hexInputPatTwo");
var swatchPatTwo = document.getElementById("colorSwatchPatTwo");
// https://iro.js.org/guide.html#color-picker-events
colorPickerPatTwo.on(["color:init", "color:change"], function(color) {
const svgsc = document.querySelectorAll('#my-svg');
valuesPatTwo.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputPatTwo.value = color.hexString;
swatchPatTwo.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
svgsc.forEach(svg => {
const paths = svg.querySelectorAll('#p2');
paths.forEach(path => {
path.setAttribute('stroke', selectedColor);
});
const pathsf = svg.querySelectorAll('#p2f');
pathsf.forEach(path => {
path.setAttribute('fill', selectedColor);
});
});
});
hexInputPatTwo.addEventListener('change', function() {
colorPickerPatTwo.color.hexString = this.value;
swatchPatTwo.style.backgroundColor = this.value;
});
var colorPickerPatThree = new iro.ColorPicker(".ms-colorpicker-patthree", {
width: 180,
color: "#6941c6",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var valuesPatThree = document.getElementById("valuesPatThree");
var hexInputPatThree = document.getElementById("hexInputPatThree");
var swatchPatThree = document.getElementById("colorSwatchPatThree");
// https://iro.js.org/guide.html#color-picker-events
colorPickerPatThree.on(["color:init", "color:change"], function(color) {
const svgsc = document.querySelectorAll('#my-svg');
valuesPatThree.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputPatThree.value = color.hexString;
swatchPatThree.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
svgsc.forEach(svg => {
const paths = svg.querySelectorAll('#p3');
paths.forEach(path => {
path.setAttribute('stroke', selectedColor);
});
const pathsf = svg.querySelectorAll('#p3f');
pathsf.forEach(path => {
path.setAttribute('fill', selectedColor);
});
});
});
hexInputPatThree.addEventListener('change', function() {
colorPickerPatThree.color.hexString = this.value;
swatchPatThree.style.backgroundColor = this.value;
});
var colorPickerPatFour = new iro.ColorPicker(".ms-colorpicker-patfour", {
width: 180,
color: "#844fee",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var valuesPatFour = document.getElementById("valuesPatFour");
var hexInputPatFour = document.getElementById("hexInputPatFour");
var swatchPatFour = document.getElementById("colorSwatchPatFour");
// https://iro.js.org/guide.html#color-picker-events
colorPickerPatFour.on(["color:init", "color:change"], function(color) {
const svgsc = document.querySelectorAll('#my-svg');
valuesPatFour.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputPatFour.value = color.hexString;
swatchPatFour.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
svgsc.forEach(svg => {
const paths = svg.querySelectorAll('#p4');
paths.forEach(path => {
path.setAttribute('stroke', selectedColor);
});
const pathsf = svg.querySelectorAll('#p4f');
pathsf.forEach(path => {
path.setAttribute('fill', selectedColor);
});
});
});
hexInputPatFour.addEventListener('change', function() {
colorPickerPatFour.color.hexString = this.value;
swatchPatFour.style.backgroundColor = this.value;
});
var colorPickerTest = new iro.ColorPicker(".ms-colorpicker-test", {
width: 180,
color: "rgb(0, 0, 0)",
borderWidth: 1,
borderColor: "#1b1b1b",
});
var valuesTest = document.getElementById("valuesTest");
var hexInputTest = document.getElementById("hexInputTest");
var swatchTest = document.getElementById("colorSwatchTest");
colorPickerTest.on(["color:init", "color:change"], function(color) {
valuesTest.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputTest.value = color.hexString;
swatchTest.style.backgroundColor = color.hexString;
let selectedColor = color.hexString;
const rectElements = document.querySelectorAll('#backgr');
if (!document.getElementById('trans').checked) {
function changeRectColor() {
rectElements.forEach(rect => {
rect.setAttribute('fill', selectedColor);
});
}
changeRectColor();
}
});
hexInputTest.addEventListener('change', function() {
colorPickerTest.color.hexString = this.value;
swatchTest.style.backgroundColor = this.value;
});
function updateSelectors() {
const svgsc = document.querySelectorAll('#my-svg');
svgsc.forEach(svg => {
const paths = svg.querySelectorAll('#solid');
paths.forEach(path => {
path.setAttribute('stroke', colorPicker.color.hexString);
});
const pathsp = svg.querySelectorAll('#filled');
pathsp.forEach(path => {
path.setAttribute('fill', colorPicker.color.hexString);
});
});
const paths1 = document.querySelectorAll('#p1');
paths1.forEach(rect => {
rect.setAttribute('fill', colorPickerPat.color.hexString);
});
const paths2 = document.querySelectorAll('#p2');
paths2.forEach(path => {
path.setAttribute('stroke', colorPickerPatTwo.color.hexString);
});
const paths2f = document.querySelectorAll('#p2f');
paths2f.forEach(path => {
path.setAttribute('fill', colorPickerPatTwo.color.hexString);
});
const paths3 = document.querySelectorAll('#p3');
paths3.forEach(path => {
path.setAttribute('stroke', colorPickerPatThree.color.hexString);
});
const paths3f = document.querySelectorAll('#p3f');
paths3f.forEach(path => {
path.setAttribute('fill', colorPickerPatThree.color.hexString);
});
const paths4 = document.querySelectorAll('#p4');
paths4.forEach(path => {
path.setAttribute('stroke', colorPickerPatFour.color.hexString);
});
const paths4f = document.querySelectorAll('#p4f');
paths4f.forEach(path => {
path.setAttribute('fill', colorPickerPatFour.color.hexString);
});
}
//Pattern
const sliderPattern = document.getElementById('pattern-size');
function changePattern() {
const pathsp = document.querySelectorAll('pattern');
var transformString = 'scale(' + sliderPattern.value + ')';
pathsp.forEach(pattern => {
pattern.setAttribute('patternTransform', transformString);
});
}
changePattern();
sliderPattern.addEventListener('input', changePattern);
const path = document.querySelectorAll('#group');
const sliderSize = document.getElementById('slider-size');
function scalePath() {
const path = document.querySelectorAll('#group');
path.forEach(path => {
const scale = sliderSize.value;
const bbox = path.getBBox();
const centerX = bbox.x + bbox.width / 2;
const centerY = bbox.y + bbox.height / 2;
const tx = -centerX * (scale - 1);
const ty = -centerY * (scale - 1);
const transform = `translate(${tx},${ty}) scale(${scale})`;
path.setAttribute('transform', transform);
});
}
sliderSize.addEventListener('input', scalePath);
scalePath();
const colorPicker1 = new iro.ColorPicker(".ms-colorpicker-second", {
width: 180,
color: "rgb(143, 102, 255)",
borderWidth: 1,
borderColor: "#1b1b1b",
});
const valuesSecond = document.getElementById("valuesSecond");
const hexInputSecond = document.getElementById("hexInputSecond");
const swatchSecond = document.getElementById("colorSwatchSecond");
colorPicker1.on(["color:init", "color:change"], function(color) {
valuesSecond.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputSecond.value = color.hexString;
swatchSecond.style.backgroundColor = color.hexString;
});
hexInputSecond.addEventListener('input', function() {
colorPicker1.color.hexString = this.value;
swatchSecond.style.backgroundColor = this.value;
});
const colorPicker2 = new iro.ColorPicker(".ms-colorpicker-third", {
width: 180,
color: "rgb(61, 18, 255)",
borderWidth: 1,
borderColor: "#1b1b1b",
});
const valuesThird = document.getElementById("valuesThird");
const hexInputThird = document.getElementById("hexInputThird");
const swatchThird = document.getElementById("colorSwatchThird");
colorPicker2.on(["color:init", "color:change"], function(color) {
valuesThird.innerHTML = [
"hex: " + color.hexString,
"rgb: " + color.rgbString,
"hsl: " + color.hslString,
].join("
");
hexInputThird.value = color.hexString;
swatchThird.style.backgroundColor = color.hexString;
});
hexInputThird.addEventListener('input', function() {
colorPicker2.color.hexString = this.value;
swatchThird.style.backgroundColor = this.value;
});
function applyBackground() {
const svgs = document.querySelectorAll('#my-svg');
svgs.forEach(svg => {
const defs = svg.querySelector('defs') || svg.insertBefore(document.createElement('defs'), svg.firstChild);
const gradient = defs.querySelector('linearGradient') || defs.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient'));
const stop1 = gradient.querySelector('.stop1') || gradient.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'stop'));
const stop2 = gradient.querySelector('.stop2') || gradient.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'stop'));
gradient.setAttribute('id', 'gradient1');
stop1.setAttribute('class', 'stop1');
stop1.setAttribute('offset', '0%');
stop2.setAttribute('class', 'stop2');
stop2.setAttribute('offset', '100%');
const colorStart = colorPicker1.color.hexString;
const colorEnd = colorPicker2.color.hexString;
stop1.setAttribute('stop-color', colorStart);
stop2.setAttribute('stop-color', colorEnd);
if (!document.getElementById('trans').checked) {
if (!document.getElementById('checkbox').checked) {
const rectss = svg.querySelectorAll('#backgr');
rectss.forEach(rect => {
rect.setAttribute('fill', 'url(#gradient1)');
});
} else {
const rectss = svg.querySelectorAll('#backgr');
rectss.forEach(rect => {
rect.setAttribute('fill', colorPickerTest.color.hexString);
});
}
}
if (document.getElementById('checkbox').checked) {
const paths = svg.querySelectorAll('#filled');
const pathsx = svg.querySelectorAll('#solid');
paths.forEach(path => {
path.setAttribute('fill', 'url(#gradient1)');
});
pathsx.forEach(path => {
path.setAttribute('stroke', 'url(#gradient1)');
});
} else {
const paths = svg.querySelectorAll('#filled');
const pathsx = svg.querySelectorAll('#solid');
paths.forEach(path => {
path.setAttribute('fill', colorPicker.color.hexString);
});
pathsx.forEach(path => {
path.setAttribute('stroke', colorPicker.color.hexString);
});
}
});
}
colorPicker1.on(['color:init', 'color:change'], applyBackground);
colorPicker2.on(['color:init', 'color:change'], applyBackground);
applyBackground();
function makeTrans() {
if (document.getElementById('trans').checked) {
const rectElements = document.querySelectorAll('#backgr');
rectElements.forEach(rect => {
rect.setAttribute('fill', 'none');
});
}
}
const checkbox = document.getElementById('checkbox');
const trans = document.getElementById('trans');
checkbox.addEventListener('change', applyBackground);
trans.addEventListener('change', makeTrans);
trans.addEventListener('change', applyBackground);
function patternBack() {
const patternChecked = document.getElementById('patternbox').checked;
const svgs = document.querySelectorAll('#my-svg');
svgs.forEach(svg => {
const patternElements = svg.querySelectorAll('pattern');
if (patternElements.length > 0) {
if (patternChecked) {
const paths = svg.querySelectorAll('#filled');
paths.forEach(path => {
path.setAttribute('fill', 'url(#a)');
});
const pathss = svg.querySelectorAll('#solid');
pathss.forEach(path => {
path.setAttribute('stroke', 'url(#a)');
});
const rectElements = svg.querySelectorAll('#backgr');
rectElements.forEach(rect => {
rect.setAttribute('fill', colorPickerTest.color.hexString);
});
} else {
const rectElements = svg.querySelectorAll('#backgr');
rectElements.forEach(rect => {
rect.setAttribute('fill', 'url(#a)');
});
const paths = svg.querySelectorAll('#filled');
paths.forEach(path => {
path.setAttribute('fill', colorPicker.color.hexString);
});
const pathss = svg.querySelectorAll('#solid');
pathss.forEach(path => {
path.setAttribute('stroke', colorPicker.color.hexString);
});
}
}
});
}
const checkboxPattern = document.getElementById('patternbox');
checkboxPattern.addEventListener('change', patternBack);
function initializeAfterDelay(delay, times) {
if (times <= 0) {
return;
}
setTimeout(function() {
// Update the cached paths every 2 seconds
solidPaths = document.querySelectorAll('#solid');
filledPaths = document.querySelectorAll('#filled');
pathsStroke = document.querySelectorAll('#solid');
pathElements = document.querySelectorAll('#group');
initializeAfterDelay(delay, times - 1);
}, delay);
}
initializeAfterDelay(2000, 4);