UNPKG

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
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*/]; } }); }); }