Path : /var/www/html/moneyexchange/public/assets/libs/jquery-asGradient/src/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/moneyexchange/public/assets/libs/jquery-asGradient/src/gradientString.js |
import $ from "jquery"; import * as util from "./util"; import keywordAngleMap from "./keywordAngleMap"; const angleKeywordMap = util.flip(keywordAngleMap); const RegExpStrings = (() => { const color = /(?:rgba|rgb|hsla|hsl)\s*\([\s\d\.,%]+\)|#[a-z0-9]{3,6}|[a-z]+/i; const position = /\d{1,3}%/i; const angle = /(?:to ){0,1}(?:(?:top|left|right|bottom)\s*){1,2}|\d+deg/i; const stop = new RegExp( `(${color.source})\\s*(${position.source}){0,1}`, "i" ); const stops = new RegExp(stop.source, "gi"); const parameters = new RegExp( `(?:(${angle.source})){0,1}\\s*,{0,1}\\s*(.*?)\\s*`, "i" ); const full = new RegExp( `^(-webkit-|-moz-|-ms-|-o-){0,1}(linear|radial|repeating-linear)-gradient\\s*\\(\\s*(${parameters.source})\\s*\\)$`, "i" ); return { FULL: full, ANGLE: angle, COLOR: color, POSITION: position, STOP: stop, STOPS: stops, PARAMETERS: new RegExp(`^${parameters.source}$`, "i"), }; })(); export default { matchString: function (string) { const matched = this.parseString(string); if ( matched && matched.value && matched.value.stops && matched.value.stops.length > 1 ) { return true; } return false; }, parseString: function (string) { string = $.trim(string); let matched; if ((matched = RegExpStrings.FULL.exec(string)) !== null) { let value = this.parseParameters(matched[3]); return { prefix: typeof matched[1] === "undefined" ? null : matched[1], type: matched[2], value: value, }; } else { return false; } }, parseParameters: function (string) { let matched; if ((matched = RegExpStrings.PARAMETERS.exec(string)) !== null) { let stops = this.parseStops(matched[2]); return { angle: typeof matched[1] === "undefined" ? 0 : matched[1], stops: stops, }; } else { return false; } }, parseStops: function (string) { let matched; const result = []; if ((matched = string.match(RegExpStrings.STOPS)) !== null) { $.each(matched, (i, item) => { const stop = this.parseStop(item); if (stop) { result.push(stop); } }); return result; } else { return false; } }, formatStops: function (stops, cleanPosition) { let stop; const output = []; let positions = []; const colors = []; let position; for (let i = 0; i < stops.length; i++) { stop = stops[i]; if (typeof stop.position === "undefined" || stop.position === null) { if (i === 0) { position = 0; } else if (i === stops.length - 1) { position = 1; } else { position = undefined; } } else { position = stop.position; } positions.push(position); colors.push(stop.color.toString()); } positions = ((data) => { let start = null; let average; for (let i = 0; i < data.length; i++) { if (isNaN(data[i])) { if (start === null) { start = i; continue; } } else if (start) { average = (data[i] - data[start - 1]) / (i - start + 1); for (let j = start; j < i; j++) { data[j] = data[start - 1] + (j - start + 1) * average; } start = null; } } return data; })(positions); for (let x = 0; x < stops.length; x++) { if ( cleanPosition && ((x === 0 && positions[x] === 0) || (x === stops.length - 1 && positions[x] === 1)) ) { position = ""; } else { position = ` ${this.formatPosition(positions[x])}`; } output.push(colors[x] + position); } return output.join(", "); }, parseStop: function (string) { let matched; if ((matched = RegExpStrings.STOP.exec(string)) !== null) { let position = this.parsePosition(matched[2]); return { color: matched[1], position: position, }; } else { return false; } }, parsePosition: function (string) { if (typeof string === "string" && string.substr(-1) === "%") { string = parseFloat(string.slice(0, -1) / 100); } if (typeof string !== "undefined" && string !== null) { return parseFloat(string, 10); } else { return null; } }, formatPosition: function (value) { return `${parseInt(value * 100, 10)}%`; }, parseAngle: function (string, notStandard) { if (typeof string === "string" && string.includes("deg")) { string = string.replace("deg", ""); } if (!isNaN(string)) { if (notStandard) { string = this.fixOldAngle(string); } } if (typeof string === "string") { const directions = string.split(" "); const filtered = []; for (const i in directions) { if (util.isDirection(directions[i])) { filtered.push(directions[i].toLowerCase()); } } let keyword = filtered.join(" "); if (!string.includes("to ")) { keyword = util.reverseDirection(keyword); } keyword = `to ${keyword}`; if (keywordAngleMap.hasOwnProperty(keyword)) { string = keywordAngleMap[keyword]; } } let value = parseFloat(string, 10); if (value > 360) { value %= 360; } else if (value < 0) { value %= -360; if (value !== 0) { value += 360; } } return value; }, fixOldAngle: function (value) { value = parseFloat(value); value = Math.abs(450 - value) % 360; value = parseFloat(value.toFixed(3)); return value; }, formatAngle: function (value, notStandard, useKeyword) { value = parseInt(value, 10); if (useKeyword && angleKeywordMap.hasOwnProperty(value)) { value = angleKeywordMap[value]; if (notStandard) { value = util.reverseDirection(value.substr(3)); } } else { if (notStandard) { value = this.fixOldAngle(value); } value = `${value}deg`; } return value; }, };