@web3r/flowerkit
v1.1.1
Published
A collection of more than 70 often used utility JS/TS functions that simplify frontend development.
Maintainers
Readme
FlowerKit 🌸 JS and TS utils frontend library
More than 70 commonly used utility functions for JavaScript and TypeScript that simplify frontend development.
Usage 🛠️
// tree-shakable ESM import
import { isNode, /* ... */ } from "@web3r/flowerkit/dom";
import { onSwipe, /* ... */ } from "@web3r/flowerkit/evt";
// ESM import of whole utils packs
import { domKit, evtKit, /* ... */ } from "@web3r/flowerkit";
// CJS import
const domKit = require("@web3r/flowerkit/dom");Features ✨
- Tree shaking: includes only the necessary code in your bundle;
- Friendly names: functions that return objects begin with the "get" prefix, and functions that return boolean values begin with "is";
- JSDoc: each utility includes a detailed description and usage examples, available in your IDE;
- Lightweight: the entire library is no more than 30 KB;
- Error catching: throws immediate errors when invalid arguments are passed;
- SSR friendly: fallbacks for DOM
windowanddocumentobjects; - TypeScript friendly: types included for all functions;
- ESM and CJS: supports both types of modules;
Structure ☰
@web3r/flowerkit/arr— for arrays and array-like objects;@web3r/flowerkit/css— for CSS from JS;@web3r/flowerkit/dom— for DOM and Nodes;@web3r/flowerkit/evt— for events;@web3r/flowerkit/fn— for functions;@web3r/flowerkit/json— for JSON;@web3r/flowerkit/net— for network features;@web3r/flowerkit/obj— for objects;@web3r/flowerkit/str— for strings;@web3r/flowerkit/user— for common client-side browser features;@web3r/flowerkit/date— for Date constructor features;
Examples 💡
Capitalize the first letter of a string
import { getStringWithCapitalizedFirstLetter } from "@web3r/flowerkit/str";
const str = "hello world";
const upperStr = getStringWithCapitalizedFirstLetter(str);
console.log(upperStr); // => "Hello world"Curry a function
import { getCurryFn } from "@web3r/flowerkit/fn";
function getSum(a, b) {
return a + b;
}
const getCurriedSum = getCurryFn(getSum);
curriedSum(1)(2); // 3Debounce a function
import { getDebouncedFn } from "@web3r/flowerkit/fn";
const fn = getDebouncedFn(alert, 1000);
fn(1); // calls immediately
fn(2); // ignored
setTimeout(() => fn(3), 100); // ignored
setTimeout(() => fn(4), 1100); // calls
setTimeout(() => fn(5), 1500); // ignoredThrottle a function
import { getThrottledFn } from "@web3r/flowerkit/fn";
const fn = getThrottledFn(alert, 5000); // this function should only be able to execute once every 5 sec.
fn(1); // calls immediately
fn(2); // ignored
setTimeout(() => fn(3), 5000); // callsGet the number of keys in an object
import { getObjLength } from "@web3r/flowerkit/obj";
const obj = {
key1: "value1",
key2: "value2"
};
const objLength = getObjLength(obj);
console.log(objLength); // => 2Deep clone an object
import { getCopyOfObj } from "@web3r/flowerkit/obj";
const originalObject = {
value: 1,
}
const copy = getCopyOfObj(originalObject);
copy.value = 2;
console.log(originalObject.value === copy.value) // falseMerge two objects
import { getMergedObj } from "@web3r/flowerkit/obj";
const targetObj = {
first: [ "foo" ],
}
const sourceObj = {
first: [ "moo" ],
boo: 12
}
getMergedObj(targetObj, sourceObj) // => { first: [ "foo", "moo" ], boo: 12 }Generates a random ID
import { getId } from "@web3r/flowerkit/str";
const uniqueId = getId(100);
console.log(uniqueId.length); // 100Checks if an object is iterable
import { isIterable } from "@web3r/flowerkit/arr";
const myDivs = document.querySelectAll("div");
const isCanBeIterated = isIterable(myDivs);
console.log(isCanBeIterated); // => trueSet a CSS3 variable from JavaScript
import { setCSSVar } from "@web3r/flowerkit/css";
const block = document.getElementById("myBlock");
setCSSVar(block, "myVar", 10);
// <div id="myBlock" style="--myVar: 10"></div>Detect an "invalid date" instance
import { isValidDate } from "@web3r/flowerkit/date";
const wrongDate = new Date("invalid_date");
console.log(isValidDate(wrongDate)); // => false
const validDate = new Date(0);
console.log(isValidDate(validDate)); // => trueAPI 🚀
The library helps you solve many other problems. See API docs & examples.
