react-js-plugins
Version:
A powerful and efficient React utility library designed to enhance application performance by streamlining and simplifying the management of complex asynchronous operations.
587 lines (586 loc) • 22.9 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
import { _isEmptyArray } from "./chunk65431";
export var _isValidEmail = function (email) {
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
};
export var _isValidPhoneNumber = function (phoneNumber) {
var phoneRegex = /^\+?[0-9]{10,15}$/;
return phoneRegex.test(phoneNumber);
};
export var _isValidURL = function (url) {
var urlRegex = /^(https?:\/\/)?([a-zA-Z0-9.-]+)(:[0-9]{1,5})?(\/.*)?$/;
return urlRegex.test(url);
};
export var _isValidDate = function (date) {
var dateRegex = /^\d{4}-\d{2}-\d{2}$/;
return dateRegex.test(date);
};
export var _isValidTime = function (time) {
var timeRegex = /^([01]\d|2[0-3]):([0-5]\d)$/;
return timeRegex.test(time);
};
export var _isValidDateTime = function (dateTime) {
var dateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/;
return dateTimeRegex.test(dateTime);
};
export var _isValidDateRange = function (startDate, endDate) {
return new Date(startDate) <= new Date(endDate);
};
export var _isValidPassword = function (password) {
var passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
return passwordRegex.test(password);
};
export var _isValidUsername = function (username) {
var usernameRegex = /^[a-zA-Z0-9._-]{3,}$/;
return usernameRegex.test(username);
};
export var _isValidCreditCard = function (creditCard) {
var creditCardRegex = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9]{2})[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|7(?:0[0-9]|[1-9][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/;
return creditCardRegex.test(creditCard);
};
export var _isValidHexColor = function (color) {
var hexColorRegex = /^#([0-9A-F]{3}|[0-9A-F]{6})$/i;
return hexColorRegex.test(color);
};
export var _isValidIP = function (ip) {
var ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return ipRegex.test(ip);
};
export var _isValidMacAddress = function (mac) {
var macRegex = /^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/i;
return macRegex.test(mac);
};
export var _isValidUUID = function (uuid) {
var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return uuidRegex.test(uuid);
};
export var _isValidBase64 = function (str) {
var base64Regex = /^(?:[A-Z0-9+\/]{4})*=[=]?$/i;
return base64Regex.test(str);
};
export var _isValidJSON = function (str) {
try {
JSON.parse(str);
return true;
}
catch (_a) {
return false;
}
};
export var _isValidFunction = function (fn) {
return typeof fn === 'function';
};
export var _isValidString = function (str) {
return typeof str === 'string' && str.trim() !== '';
};
export var _isValidNumber = function (num) {
return typeof num === 'number' && !isNaN(num);
};
export var _isValidBoolean = function (bool) {
return typeof bool === 'boolean';
};
export var _isValidDateObject = function (date) {
return date instanceof Date && !isNaN(date.getTime());
};
export var _isValidBlob = function (blob) {
return blob instanceof Blob;
};
export var _isValidFile = function (file) {
return file instanceof File;
};
export var _isValidRegExp = function (regex) {
return regex instanceof RegExp;
};
export var _isValidPromise = function (promise) {
return promise instanceof Promise;
};
export var _isValidDateString = function (dateString) {
return !isNaN(Date.parse(dateString));
};
export var _isValidHTMLElement = function (element) {
return element instanceof HTMLElement;
};
export var _isValidEvent = function (event) {
return event instanceof Event;
};
export var _isValidNode = function (node) {
return node instanceof Node;
};
export var _isValidNodeList = function (nodeList) {
return nodeList instanceof NodeList;
};
export var _isValidHTMLCollection = function (htmlCollection) {
return htmlCollection instanceof HTMLCollection;
};
export var _isValidFormData = function (formData) {
return formData instanceof FormData;
};
export var _isValidURLSearchParams = function (params) {
return params instanceof URLSearchParams;
};
export var _allowDecimalKeys = function (event) {
// List of allowed non-character keys
var allowedKeys = ['Backspace', 'Tab', 'ArrowLeft', 'ArrowRight', 'Delete', 'Home', 'End'];
// Allow copy, paste, and other ctrl/cmd shortcuts
if (event.ctrlKey || event.metaKey)
return;
// Allow the navigation keys and similar controls
if (allowedKeys.includes(event.key))
return;
// Allow digits (0-9)
if (/^\d$/.test(event.key))
return;
// Allow a decimal point only if there isn't one already in the input value
if (event.key === '.') {
if (event.target.value.includes('.')) {
event.preventDefault();
}
return;
}
// For any other key, prevent the default behavior
event.preventDefault();
};
export var _allowAlphaKeys = function (event) {
// List of allowed non-character keys
var allowedKeys = ['Backspace', 'Tab', 'ArrowLeft', 'ArrowRight', 'Delete', 'Home', 'End'];
// Allow copy, paste, and other ctrl/cmd shortcuts
if (event.ctrlKey || event.metaKey)
return;
// Allow the defined navigation and control keys
if (allowedKeys.includes(event.key))
return;
// Allow alphabetical characters (both uppercase and lowercase)
if (/^[a-zA-Z]$/.test(event.key))
return;
// For any other key, prevent its default behavior
event.preventDefault();
};
export var _handlePasteDecimalKeys = function (a) {
var b = a.clipboardData.getData("text");
if (!/^-?\d+(\.\d+)?$/.test(b)) {
a.preventDefault();
}
};
export var _handlePasteAlphabetKeys = function (event) {
var pastedText = event.clipboardData.getData("text");
if (!/^[A-Za-z]+$/.test(pastedText)) {
event.preventDefault();
}
};
export var _allowAlphaNumericKeys = function (event) {
var allowedKeys = ['Backspace', 'Tab', 'ArrowLeft', 'ArrowRight', 'Delete', 'Home', 'End'];
// Allow copy, paste, etc. via Ctrl/Cmd shortcuts.
if (event.ctrlKey || event.metaKey)
return;
// Allow navigation and control keys.
if (allowedKeys.includes(event.key))
return;
// Allow alphanumeric characters (letters and digits).
if (/^[A-Za-z0-9]$/.test(event.key))
return;
// Prevent any other key input.
event.preventDefault();
};
export var _domSelector = function (selector, all) {
if (all === void 0) { all = false; }
if (typeof selector !== 'string' || !selector.trim()) {
return all ? [] : null;
}
var result = all ? document === null || document === void 0 ? void 0 : document.querySelectorAll(selector) : document === null || document === void 0 ? void 0 : document.querySelector(selector);
return result || (all ? [] : null);
};
export var _hideElement = function (selector) {
var el = _domSelector(selector);
if (el instanceof HTMLElement) {
el.style.display = 'none';
}
else {
console.warn("hideElement: Element not found for selector \"".concat(selector, "\""));
}
};
export var _showElement = function (selector, displayType) {
if (displayType === void 0) { displayType = 'block'; }
var el = _domSelector(selector);
if (el instanceof HTMLElement) {
el.style.display = displayType;
}
else {
console.warn("showElement: Element not found for selector \"".concat(selector, "\""));
}
};
export var _removeElement = function (selector) {
var element = document.querySelector(selector);
if (element) {
element.remove();
}
};
export var _removeNode = function (selector) {
document.querySelectorAll(selector).forEach(function (el) { return el.remove(); });
};
export var _removeSafeElement = function (selector) {
var el = _domSelector(selector);
if (el instanceof HTMLElement && el.parentNode) {
el.parentNode.removeChild(el);
}
else {
console.warn("removeElement: Element not found or has no parent for selector \"".concat(selector, "\""));
}
};
export var _clearNode = function (baseSelector, targets) {
var baseElement = document.querySelector(baseSelector);
if (!baseElement)
return;
targets.forEach(function (_a) {
var type = _a.type, steps = _a.steps;
var element = baseElement;
for (var i = 0; i < steps; i++) {
if (!element)
break;
switch (type) {
case 'previous':
element = element.previousSibling;
break;
case 'next':
element = element.nextSibling;
break;
case 'nextElement':
element = element instanceof Element ? element.nextElementSibling : null;
break;
}
}
if (element && 'style' in element) {
element.style.display = 'none';
}
});
};
export var _isElementPresent = function (selector) {
return !!document.querySelector(selector);
};
export var _getParent = function (selector) {
var element = document.querySelector(selector);
return element ? element.parentElement : null;
};
export var _getChildElements = function (selector) {
var element = document.querySelector(selector);
return element ? Array.from(element.children) : [];
};
export var _replaceContent = function (selector, newContent) {
var element = document.querySelector(selector);
if (element) {
element.innerHTML = newContent;
}
};
export var _cloneElement = function (selector) {
var element = document.querySelector(selector);
return element ? element.cloneNode(true) : null;
};
export var _scrollToElement = function (selector, behavior) {
if (behavior === void 0) { behavior = 'smooth'; }
var element = document.querySelector(selector);
if (element) {
element.scrollIntoView({ behavior: behavior });
}
};
export var _isElementInViewport = function (selector) {
var element = document.querySelector(selector);
if (!element)
return false;
var rect = element.getBoundingClientRect();
return (rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= window.innerHeight &&
rect.right <= window.innerWidth);
};
export var _setElementDisabled = function (selector, isDisabled) {
var element = document.querySelector(selector);
if (element) {
element.disabled = isDisabled;
}
};
export var _addEventListenerToElement = function (selector, event, callback) {
var element = document.querySelector(selector);
if (element) {
element.addEventListener(event, callback);
}
};
export var _removeEventListenerFromElement = function (selector, event, callback) {
var element = document.querySelector(selector);
if (element) {
element.removeEventListener(event, callback);
}
};
export var _getElementAttribute = function (selector, attribute) {
var element = document.querySelector(selector);
return element ? element.getAttribute(attribute) : null;
};
export var _setElementAttribute = function (selector, attribute, value) {
var element = document.querySelector(selector);
if (element) {
element.setAttribute(attribute, value);
}
};
export var _removeElementAttribute = function (selector, attribute) {
var element = document.querySelector(selector);
if (element) {
element.removeAttribute(attribute);
}
};
export var _removeAllChildren = function (selector) {
var element = document.querySelector(selector);
if (element) {
while (element.firstChild) {
element.removeChild(element.firstChild);
}
}
};
export var _getElementsByClass = function (className) {
return Array.from(document.getElementsByClassName(className));
};
export var _getElementsByTag = function (tagName) {
return Array.from(document.getElementsByTagName(tagName));
};
export var _setMultipleStyles = function (selector, styles) {
var element = document.querySelector(selector);
if (element) {
Object.assign(element.style, styles);
}
};
export var _insertHTML = function (selector, position, html) {
var element = document.querySelector(selector);
if (element) {
element.insertAdjacentHTML(position, html);
}
};
export var _isDocumentLoaded = function () {
return document.readyState === 'complete';
};
export var _runOnIframeLoad = function (iframeSelector, callback) {
var iframe = document.querySelector(iframeSelector);
if (iframe) {
iframe.addEventListener('load', callback);
}
};
export var _reloadAfterLoad = function (delay) {
if (delay === void 0) { delay = 3000; }
window.addEventListener('load', function () {
setTimeout(function () { return window.location.reload(); }, delay);
});
};
export var _sanitizeArray = function (arr) {
if (!_isEmptyArray(arr)) {
console.warn('Expected an array but received:', arr);
return [];
}
try {
return arr.filter(Boolean);
}
catch (error) {
console.error('Error while filtering falsy values:', error);
return [];
}
};
export var _throwError = function (message, context) {
var error = new Error(message);
if (context) {
console.error('Error:', {
message: message,
context: context,
stack: error.stack
});
}
else {
console.error('Error:', message);
}
throw error;
};
export var _log = function (title, message, type) {
if (type === void 0) { type = 'info'; }
var styles = {
log: 'color: #4A90E2; font-weight: 700;',
info: 'color: #47B04B; font-weight: 700;',
warn: 'color: #FFA500; font-weight: 700;',
error: 'color: #FF0000; font-weight: 700;'
};
var consoleMethod = console[type] || console.info;
if (message !== undefined) {
consoleMethod("%c".concat(title), styles[type], message);
}
else {
consoleMethod("%c".concat(title), styles[type]);
}
};
export var _filterByMatchedKey = function (list1, list2, key) {
if (!Array.isArray(list1))
return [];
if (!Array.isArray(list2))
return list1;
var matchingKeys = new Set(list2.map(function (item) { return key in item ? item[key] : undefined; }));
return list1.filter(function (item) {
return key in item && matchingKeys.has(item[key]);
});
};
export var _filterByMatchingKey = function (list1, list2, key) {
if (!Array.isArray(list1) || !Array.isArray(list2)) {
console.warn('One or both inputs are not arrays.');
return [];
}
var areValidObjects = function (arr) { return arr.every(function (item) { return item && typeof item === 'object'; }); };
if (!areValidObjects(list1) || !areValidObjects(list2)) {
console.warn('One or both arrays contain invalid items (not objects).');
return [];
}
var o = list1.filter(function (listItem) {
return list2.some(function (docItem) { return (docItem === null || docItem === void 0 ? void 0 : docItem[key]) === (listItem === null || listItem === void 0 ? void 0 : listItem[key]); });
});
return o;
};
export var _filterArrayByKeyValue = function (array, key, value) {
if (value === void 0) { value = true; }
if (!Array.isArray(array))
return [];
return array.filter(function (item) {
return item &&
typeof item === 'object' &&
key in item &&
item[key] === value;
});
};
export var _snipDecimals = function (num, digits) {
var parsedNum = typeof num === 'string' ? parseFloat(num) : num;
if (typeof parsedNum !== 'number' || isNaN(parsedNum))
return num;
var safeDigits = Math.max(0, Math.floor(digits));
var _a = parsedNum.toString().split('.'), intPart = _a[0], _b = _a[1], decPart = _b === void 0 ? '' : _b;
if (safeDigits === 0)
return intPart;
return decPart.length > 0
? "".concat(intPart, ".").concat(decPart.slice(0, safeDigits))
: intPart;
};
export function _copyText(text) {
return __awaiter(this, void 0, void 0, function () {
var textarea, successful, error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!text) {
console.warn('No text provided for clipboard copy');
return [2 /*return*/, false];
}
_a.label = 1;
case 1:
_a.trys.push([1, 4, , 5]);
if (!(navigator.clipboard && navigator.clipboard.writeText)) return [3 /*break*/, 3];
return [4 /*yield*/, navigator.clipboard.writeText(text)];
case 2:
_a.sent();
return [2 /*return*/, true];
case 3:
textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
try {
successful = document.execCommand('copy');
if (!successful) {
throw new Error('execCommand copy failed');
}
return [2 /*return*/, true];
}
finally {
document.body.removeChild(textarea);
}
return [3 /*break*/, 5];
case 4:
error_1 = _a.sent();
console.error('Copy failed:', error_1);
return [2 /*return*/, false];
case 5: return [2 /*return*/];
}
});
});
}
export function _pasteText() {
return __awaiter(this, void 0, void 0, function () {
var text, textarea, successful, error_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 3, , 4]);
if (!(navigator.clipboard && navigator.clipboard.readText)) return [3 /*break*/, 2];
return [4 /*yield*/, navigator.clipboard.readText()];
case 1:
text = _a.sent();
return [2 /*return*/, text];
case 2:
textarea = document.createElement('textarea');
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.focus();
try {
successful = document.execCommand('paste');
if (!successful) {
throw new Error('execCommand paste failed');
}
return [2 /*return*/, textarea.value];
}
finally {
document.body.removeChild(textarea);
}
return [3 /*break*/, 4];
case 3:
error_2 = _a.sent();
console.error('Paste failed:', error_2);
if (error_2 instanceof DOMException) {
if (error_2.name === 'NotAllowedError') {
console.warn('Clipboard access not allowed - check permissions');
}
else if (error_2.name === 'SecurityError') {
console.warn('Clipboard access blocked by browser security settings');
}
}
return [2 /*return*/, null];
case 4: return [2 /*return*/];
}
});
});
}