@yamada-ui/utils 2.0.0-dev-20240531201720 → 2.0.0-dev-20250626073729
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -13
- package/dist/cjs/_virtual/rolldown_runtime.cjs +30 -0
- package/dist/cjs/array.cjs +14 -0
- package/dist/cjs/array.cjs.map +1 -0
- package/dist/cjs/assertion.cjs +73 -0
- package/dist/cjs/assertion.cjs.map +1 -0
- package/dist/cjs/calc.cjs +39 -0
- package/dist/cjs/calc.cjs.map +1 -0
- package/dist/cjs/color.cjs +247 -0
- package/dist/cjs/color.cjs.map +1 -0
- package/dist/cjs/dom.cjs +378 -0
- package/dist/cjs/dom.cjs.map +1 -0
- package/dist/cjs/event.cjs +92 -0
- package/dist/cjs/event.cjs.map +1 -0
- package/dist/cjs/function.cjs +27 -0
- package/dist/cjs/function.cjs.map +1 -0
- package/dist/cjs/i18n.cjs +46 -0
- package/dist/cjs/i18n.cjs.map +1 -0
- package/dist/cjs/index.cjs +148 -0
- package/dist/cjs/index.types.cjs +0 -0
- package/dist/cjs/module.cjs +9 -0
- package/dist/cjs/module.cjs.map +1 -0
- package/dist/cjs/number.cjs +46 -0
- package/dist/cjs/number.cjs.map +1 -0
- package/dist/cjs/object.cjs +120 -0
- package/dist/cjs/object.cjs.map +1 -0
- package/dist/cjs/string.cjs +95 -0
- package/dist/cjs/string.cjs.map +1 -0
- package/dist/esm/array.js +13 -0
- package/dist/esm/array.js.map +1 -0
- package/dist/esm/assertion.js +56 -0
- package/dist/esm/assertion.js.map +1 -0
- package/dist/esm/calc.js +38 -0
- package/dist/esm/calc.js.map +1 -0
- package/dist/esm/color.js +232 -0
- package/dist/esm/color.js.map +1 -0
- package/dist/esm/dom.js +325 -0
- package/dist/esm/dom.js.map +1 -0
- package/dist/esm/event.js +83 -0
- package/dist/esm/event.js.map +1 -0
- package/dist/esm/function.js +24 -0
- package/dist/esm/function.js.map +1 -0
- package/dist/esm/i18n.js +45 -0
- package/dist/esm/i18n.js.map +1 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.types.js +0 -0
- package/dist/esm/module.js +8 -0
- package/dist/esm/module.js.map +1 -0
- package/dist/esm/number.js +39 -0
- package/dist/esm/number.js.map +1 -0
- package/dist/esm/object.js +108 -0
- package/dist/esm/object.js.map +1 -0
- package/dist/esm/string.js +86 -0
- package/dist/esm/string.js.map +1 -0
- package/dist/types/array.d.ts +6 -0
- package/dist/types/assertion.d.ts +23 -0
- package/dist/types/calc.d.ts +25 -0
- package/dist/types/color.d.ts +20 -0
- package/dist/types/dom.d.ts +61 -0
- package/dist/types/event.d.ts +21 -0
- package/dist/types/function.d.ts +8 -0
- package/dist/types/i18n.d.ts +5 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.types.d.ts +15 -0
- package/dist/types/module.d.ts +5 -0
- package/dist/types/number.d.ts +11 -0
- package/dist/types/object.d.ts +36 -0
- package/dist/types/string.d.ts +16 -0
- package/package.json +26 -27
- package/dist/array.d.mts +0 -3
- package/dist/array.d.ts +0 -3
- package/dist/array.js +0 -31
- package/dist/array.js.map +0 -1
- package/dist/array.mjs +0 -7
- package/dist/array.mjs.map +0 -1
- package/dist/assertion.d.mts +0 -17
- package/dist/assertion.d.ts +0 -17
- package/dist/assertion.js +0 -67
- package/dist/assertion.js.map +0 -1
- package/dist/assertion.mjs +0 -31
- package/dist/assertion.mjs.map +0 -1
- package/dist/calc.d.mts +0 -18
- package/dist/calc.d.ts +0 -18
- package/dist/calc.js +0 -57
- package/dist/calc.js.map +0 -1
- package/dist/calc.mjs +0 -7
- package/dist/calc.mjs.map +0 -1
- package/dist/chunk-5OUUTZYQ.mjs +0 -7
- package/dist/chunk-5OUUTZYQ.mjs.map +0 -1
- package/dist/chunk-A74F6ICI.mjs +0 -52
- package/dist/chunk-A74F6ICI.mjs.map +0 -1
- package/dist/chunk-L56KWSQO.mjs +0 -33
- package/dist/chunk-L56KWSQO.mjs.map +0 -1
- package/dist/chunk-L76GM3GN.mjs +0 -50
- package/dist/chunk-L76GM3GN.mjs.map +0 -1
- package/dist/chunk-P52P4NMT.mjs +0 -41
- package/dist/chunk-P52P4NMT.mjs.map +0 -1
- package/dist/chunk-P5JCSYB3.mjs +0 -31
- package/dist/chunk-P5JCSYB3.mjs.map +0 -1
- package/dist/chunk-PZXEZGEL.mjs +0 -811
- package/dist/chunk-PZXEZGEL.mjs.map +0 -1
- package/dist/chunk-RSDBT4DI.mjs +0 -1
- package/dist/chunk-RSDBT4DI.mjs.map +0 -1
- package/dist/chunk-WV6P7ZCI.mjs +0 -7
- package/dist/chunk-WV6P7ZCI.mjs.map +0 -1
- package/dist/color.d.mts +0 -33
- package/dist/color.d.ts +0 -33
- package/dist/color.js +0 -374
- package/dist/color.js.map +0 -1
- package/dist/color.mjs +0 -61
- package/dist/color.mjs.map +0 -1
- package/dist/dom.d.mts +0 -34
- package/dist/dom.d.ts +0 -34
- package/dist/dom.js +0 -196
- package/dist/dom.js.map +0 -1
- package/dist/dom.mjs +0 -65
- package/dist/dom.mjs.map +0 -1
- package/dist/event.d.mts +0 -30
- package/dist/event.d.ts +0 -30
- package/dist/event.js +0 -84
- package/dist/event.js.map +0 -1
- package/dist/event.mjs +0 -23
- package/dist/event.mjs.map +0 -1
- package/dist/function.d.mts +0 -6
- package/dist/function.d.ts +0 -6
- package/dist/function.js +0 -51
- package/dist/function.js.map +0 -1
- package/dist/function.mjs +0 -21
- package/dist/function.mjs.map +0 -1
- package/dist/index.d.mts +0 -14
- package/dist/index.d.ts +0 -14
- package/dist/index.js +0 -1162
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -270
- package/dist/index.mjs.map +0 -1
- package/dist/index.types.d.mts +0 -12
- package/dist/index.types.d.ts +0 -12
- package/dist/index.types.js +0 -19
- package/dist/index.types.js.map +0 -1
- package/dist/index.types.mjs +0 -2
- package/dist/index.types.mjs.map +0 -1
- package/dist/module.d.mts +0 -3
- package/dist/module.d.ts +0 -3
- package/dist/module.js +0 -31
- package/dist/module.js.map +0 -1
- package/dist/module.mjs +0 -7
- package/dist/module.mjs.map +0 -1
- package/dist/number.d.mts +0 -9
- package/dist/number.d.ts +0 -9
- package/dist/number.js +0 -71
- package/dist/number.js.map +0 -1
- package/dist/number.mjs +0 -19
- package/dist/number.mjs.map +0 -1
- package/dist/object.d.mts +0 -18
- package/dist/object.d.ts +0 -18
- package/dist/object.js +0 -220
- package/dist/object.js.map +0 -1
- package/dist/object.mjs +0 -41
- package/dist/object.mjs.map +0 -1
- package/dist/react.d.mts +0 -105
- package/dist/react.d.ts +0 -105
- package/dist/react.js +0 -258
- package/dist/react.js.map +0 -1
- package/dist/react.mjs +0 -55
- package/dist/react.mjs.map +0 -1
- package/dist/string.d.mts +0 -8
- package/dist/string.d.ts +0 -8
- package/dist/string.js +0 -77
- package/dist/string.js.map +0 -1
- package/dist/string.mjs +0 -13
- package/dist/string.mjs.map +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { isFunction } from "./assertion.js";
|
|
2
|
+
import { noop } from "./function.js";
|
|
3
|
+
import { getDocument, getNextTabbableElement, getTabbableElementEdges } from "./dom.js";
|
|
4
|
+
|
|
5
|
+
//#region src/event.ts
|
|
6
|
+
function isMouseEvent(ev) {
|
|
7
|
+
const win = getEventWindow(ev);
|
|
8
|
+
if (typeof win.PointerEvent !== "undefined" && ev instanceof win.PointerEvent) return !!(ev.pointerType === "mouse");
|
|
9
|
+
return ev instanceof win.MouseEvent;
|
|
10
|
+
}
|
|
11
|
+
function isTouchEvent(ev) {
|
|
12
|
+
return !!ev.touches;
|
|
13
|
+
}
|
|
14
|
+
function isMultiTouchEvent(ev) {
|
|
15
|
+
return isTouchEvent(ev) && ev.touches.length > 1;
|
|
16
|
+
}
|
|
17
|
+
function getEventWindow(ev) {
|
|
18
|
+
return ev.view ?? window;
|
|
19
|
+
}
|
|
20
|
+
function pointFromTouch(e, type = "page") {
|
|
21
|
+
const point = e.touches[0] || e.changedTouches[0];
|
|
22
|
+
return {
|
|
23
|
+
x: point?.[`${type}X`] ?? 0,
|
|
24
|
+
y: point?.[`${type}Y`] ?? 0
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function pointFromMouse(point, type = "page") {
|
|
28
|
+
return {
|
|
29
|
+
x: point[`${type}X`],
|
|
30
|
+
y: point[`${type}Y`]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function getEventPoint(ev, type = "page") {
|
|
34
|
+
return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type);
|
|
35
|
+
}
|
|
36
|
+
function addDomEvent(target, type, cb, options) {
|
|
37
|
+
target.addEventListener(type, cb, options);
|
|
38
|
+
return () => {
|
|
39
|
+
target.removeEventListener(type, cb, options);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function focusTrap(el, onFocus) {
|
|
43
|
+
if (!el) return noop;
|
|
44
|
+
const doc = getDocument(el);
|
|
45
|
+
function onKeyDown(ev) {
|
|
46
|
+
if (ev.key !== "Tab") return;
|
|
47
|
+
let elToFocus = null;
|
|
48
|
+
const [firstTabbable, lastTabbable] = getTabbableElementEdges(el, true);
|
|
49
|
+
if (ev.shiftKey) {
|
|
50
|
+
if (doc.activeElement === firstTabbable) elToFocus = lastTabbable;
|
|
51
|
+
} else if (doc.activeElement === lastTabbable) elToFocus = firstTabbable;
|
|
52
|
+
if (!elToFocus) return;
|
|
53
|
+
ev.preventDefault();
|
|
54
|
+
if (isFunction(onFocus)) onFocus(elToFocus);
|
|
55
|
+
else elToFocus.focus();
|
|
56
|
+
}
|
|
57
|
+
return addDomEvent(el, "keydown", onKeyDown, true);
|
|
58
|
+
}
|
|
59
|
+
function focusTransfer(el, target, onFocus) {
|
|
60
|
+
const doc = getDocument(el);
|
|
61
|
+
const body = doc.body;
|
|
62
|
+
function onKeyDown(ev) {
|
|
63
|
+
if (ev.key !== "Tab") return;
|
|
64
|
+
let elToFocus = null;
|
|
65
|
+
const [firstTabbable, lastTabbable] = getTabbableElementEdges(el, true);
|
|
66
|
+
const nextTabbable = getNextTabbableElement(body, target);
|
|
67
|
+
const noTabbableEls = !firstTabbable && !lastTabbable;
|
|
68
|
+
if (ev.shiftKey) {
|
|
69
|
+
if (nextTabbable === doc.activeElement) elToFocus = lastTabbable;
|
|
70
|
+
else if (doc.activeElement === firstTabbable || noTabbableEls) elToFocus = target;
|
|
71
|
+
} else if (doc.activeElement === target) elToFocus = firstTabbable;
|
|
72
|
+
else if (doc.activeElement === lastTabbable || noTabbableEls) elToFocus = nextTabbable;
|
|
73
|
+
if (!elToFocus) return;
|
|
74
|
+
ev.preventDefault();
|
|
75
|
+
if (isFunction(onFocus)) onFocus(elToFocus);
|
|
76
|
+
else elToFocus.focus();
|
|
77
|
+
}
|
|
78
|
+
return addDomEvent(doc, "keydown", onKeyDown, true);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { addDomEvent, focusTransfer, focusTrap, getEventPoint, getEventWindow, isMouseEvent, isMultiTouchEvent, isTouchEvent, pointFromMouse, pointFromTouch };
|
|
83
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.js","names":["ev: any","ev: AnyPointerEvent","ev: Event","e: TouchEvent","type: \"client\" | \"page\"","point: MouseEvent | PointerEvent","target: EventTarget","type: Y","cb: (ev: EventMap[Y]) => void","options?: AddEventListenerOptions | boolean","el: HTMLElement | null","onFocus?: (elToFocus: HTMLElement) => void","ev: KeyboardEvent","elToFocus: HTMLElement | null | undefined","target?: HTMLElement | null"],"sources":["../../src/event.ts"],"sourcesContent":["import { isFunction } from \"./assertion\"\nimport {\n getDocument,\n getNextTabbableElement,\n getTabbableElementEdges,\n} from \"./dom\"\nimport { noop } from \"./function\"\n\nexport type AnyPointerEvent = MouseEvent | PointerEvent | TouchEvent\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport function isMouseEvent(ev: any): ev is MouseEvent {\n const win = getEventWindow(ev)\n\n if (typeof win.PointerEvent !== \"undefined\" && ev instanceof win.PointerEvent)\n return !!(ev.pointerType === \"mouse\")\n\n return ev instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(ev: AnyPointerEvent): ev is TouchEvent {\n return !!(ev as TouchEvent).touches\n}\n\nexport function isMultiTouchEvent(ev: AnyPointerEvent): boolean {\n return isTouchEvent(ev) && ev.touches.length > 1\n}\n\nexport function getEventWindow(ev: Event): typeof globalThis {\n return ((ev as UIEvent).view ?? window) as unknown as typeof globalThis\n}\n\nexport function pointFromTouch(\n e: TouchEvent,\n type: \"client\" | \"page\" = process.env.NODE_ENV === \"test\" ? \"client\" : \"page\",\n): Point {\n const point = e.touches[0] || e.changedTouches[0]\n\n return { x: point?.[`${type}X`] ?? 0, y: point?.[`${type}Y`] ?? 0 }\n}\n\nexport function pointFromMouse(\n point: MouseEvent | PointerEvent,\n type: \"client\" | \"page\" = \"page\",\n): Point {\n return {\n x: point[`${type}X`],\n y: point[`${type}Y`],\n }\n}\n\nexport function getEventPoint(\n ev: AnyPointerEvent,\n type: \"client\" | \"page\" = process.env.NODE_ENV === \"test\" ? \"client\" : \"page\",\n): Point {\n return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type)\n}\n\nexport interface EventMap\n extends DocumentEventMap,\n GlobalEventHandlersEventMap,\n WindowEventMap,\n FontFaceSetEventMap {}\n\nexport type EventType = keyof EventMap\n\nexport function addDomEvent<Y extends EventType>(\n target: EventTarget,\n type: Y,\n cb: (ev: EventMap[Y]) => void,\n options?: AddEventListenerOptions | boolean,\n) {\n target.addEventListener(\n type,\n cb as EventListenerOrEventListenerObject,\n options,\n )\n\n return () => {\n target.removeEventListener(\n type,\n cb as EventListenerOrEventListenerObject,\n options,\n )\n }\n}\n\nexport function focusTrap(\n el: HTMLElement | null,\n onFocus?: (elToFocus: HTMLElement) => void,\n) {\n if (!el) return noop\n\n const doc = getDocument(el)\n\n function onKeyDown(ev: KeyboardEvent) {\n if (ev.key !== \"Tab\") return\n\n let elToFocus: HTMLElement | null | undefined = null\n\n const [firstTabbable, lastTabbable] = getTabbableElementEdges(el, true)\n\n if (ev.shiftKey) {\n if (doc.activeElement === firstTabbable) elToFocus = lastTabbable\n } else {\n if (doc.activeElement === lastTabbable) elToFocus = firstTabbable\n }\n\n if (!elToFocus) return\n\n ev.preventDefault()\n\n if (isFunction(onFocus)) {\n onFocus(elToFocus)\n } else {\n elToFocus.focus()\n }\n }\n\n return addDomEvent(el, \"keydown\", onKeyDown, true)\n}\n\nexport function focusTransfer(\n el: HTMLElement | null,\n target?: HTMLElement | null,\n onFocus?: (elToFocus: HTMLElement) => void,\n) {\n const doc = getDocument(el)\n const body = doc.body\n\n function onKeyDown(ev: KeyboardEvent) {\n if (ev.key !== \"Tab\") return\n\n let elToFocus: HTMLElement | null | undefined = null\n\n const [firstTabbable, lastTabbable] = getTabbableElementEdges(el, true)\n const nextTabbable = getNextTabbableElement(body, target)\n const noTabbableEls = !firstTabbable && !lastTabbable\n\n if (ev.shiftKey) {\n if (nextTabbable === doc.activeElement) {\n elToFocus = lastTabbable\n } else if (doc.activeElement === firstTabbable || noTabbableEls) {\n elToFocus = target\n }\n } else {\n if (doc.activeElement === target) {\n elToFocus = firstTabbable\n } else if (doc.activeElement === lastTabbable || noTabbableEls) {\n elToFocus = nextTabbable\n }\n }\n\n if (!elToFocus) return\n\n ev.preventDefault()\n\n if (isFunction(onFocus)) {\n onFocus(elToFocus)\n } else {\n elToFocus.focus()\n }\n }\n\n return addDomEvent(doc, \"keydown\", onKeyDown, true)\n}\n"],"mappings":";;;;;AAeA,SAAgB,aAAaA,IAA2B;CACtD,MAAM,MAAM,eAAe,GAAG;AAE9B,YAAW,IAAI,iBAAiB,eAAe,cAAc,IAAI,aAC/D,WAAU,GAAG,gBAAgB;AAE/B,QAAO,cAAc,IAAI;AAC1B;AAED,SAAgB,aAAaC,IAAuC;AAClE,UAAU,GAAkB;AAC7B;AAED,SAAgB,kBAAkBA,IAA8B;AAC9D,QAAO,aAAa,GAAG,IAAI,GAAG,QAAQ,SAAS;AAChD;AAED,SAAgB,eAAeC,IAA8B;AAC3D,QAAS,GAAe,QAAQ;AACjC;AAED,SAAgB,eACdC,GACAC,OAAuE,QAChE;CACP,MAAM,QAAQ,EAAE,QAAQ,MAAM,EAAE,eAAe;AAE/C,QAAO;EAAE,GAAG,WAAW,KAAK,OAAO;EAAG,GAAG,WAAW,KAAK,OAAO;CAAG;AACpE;AAED,SAAgB,eACdC,OACAD,OAA0B,QACnB;AACP,QAAO;EACL,GAAG,SAAS,KAAK;EACjB,GAAG,SAAS,KAAK;CAClB;AACF;AAED,SAAgB,cACdH,IACAG,OAAuE,QAChE;AACP,QAAO,aAAa,GAAG,GAAG,eAAe,IAAI,KAAK,GAAG,eAAe,IAAI,KAAK;AAC9E;AAUD,SAAgB,YACdE,QACAC,MACAC,IACAC,SACA;AACA,QAAO,iBACL,MACA,IACA,QACD;AAED,QAAO,MAAM;AACX,SAAO,oBACL,MACA,IACA,QACD;CACF;AACF;AAED,SAAgB,UACdC,IACAC,SACA;AACA,MAAK,GAAI,QAAO;CAEhB,MAAM,MAAM,YAAY,GAAG;CAE3B,SAAS,UAAUC,IAAmB;AACpC,MAAI,GAAG,QAAQ,MAAO;EAEtB,IAAIC,YAA4C;EAEhD,MAAM,CAAC,eAAe,aAAa,GAAG,wBAAwB,IAAI,KAAK;AAEvE,MAAI,GAAG,UACL;OAAI,IAAI,kBAAkB,cAAe,aAAY;EAAY,WAE7D,IAAI,kBAAkB,aAAc,aAAY;AAGtD,OAAK,UAAW;AAEhB,KAAG,gBAAgB;AAEnB,MAAI,WAAW,QAAQ,CACrB,SAAQ,UAAU;MAElB,WAAU,OAAO;CAEpB;AAED,QAAO,YAAY,IAAI,WAAW,WAAW,KAAK;AACnD;AAED,SAAgB,cACdH,IACAI,QACAH,SACA;CACA,MAAM,MAAM,YAAY,GAAG;CAC3B,MAAM,OAAO,IAAI;CAEjB,SAAS,UAAUC,IAAmB;AACpC,MAAI,GAAG,QAAQ,MAAO;EAEtB,IAAIC,YAA4C;EAEhD,MAAM,CAAC,eAAe,aAAa,GAAG,wBAAwB,IAAI,KAAK;EACvE,MAAM,eAAe,uBAAuB,MAAM,OAAO;EACzD,MAAM,iBAAiB,kBAAkB;AAEzC,MAAI,GAAG,UACL;OAAI,iBAAiB,IAAI,cACvB,aAAY;YACH,IAAI,kBAAkB,iBAAiB,cAChD,aAAY;EACb,WAEG,IAAI,kBAAkB,OACxB,aAAY;WACH,IAAI,kBAAkB,gBAAgB,cAC/C,aAAY;AAIhB,OAAK,UAAW;AAEhB,KAAG,gBAAgB;AAEnB,MAAI,WAAW,QAAQ,CACrB,SAAQ,UAAU;MAElB,WAAU,OAAO;CAEpB;AAED,QAAO,YAAY,KAAK,WAAW,WAAW,KAAK;AACpD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isFunction } from "./assertion.js";
|
|
2
|
+
|
|
3
|
+
//#region src/function.ts
|
|
4
|
+
const noop = () => {};
|
|
5
|
+
function runIfFn(valOrFunc, ...args) {
|
|
6
|
+
return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc;
|
|
7
|
+
}
|
|
8
|
+
function handlerAll(...funcs) {
|
|
9
|
+
return function(event, ...args) {
|
|
10
|
+
funcs.some((func) => {
|
|
11
|
+
func?.(event, ...args);
|
|
12
|
+
return event?.defaultPrevented;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function fnAll(...funcs) {
|
|
17
|
+
return function(...args) {
|
|
18
|
+
return funcs.forEach((func) => func?.(...args));
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { fnAll, handlerAll, noop, runIfFn };
|
|
24
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","names":["valOrFunc: ((...funcArgs: U) => T) | T","event: T extends (event: infer R, ...args: any[]) => any ? R : never"],"sources":["../../src/function.ts"],"sourcesContent":["import { isFunction } from \"./assertion\"\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {}\n\nexport function runIfFn<T, U extends any[]>(\n valOrFunc: ((...funcArgs: U) => T) | T,\n ...args: U\n): T {\n return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc\n}\n\nexport function handlerAll<T extends (event: any, ...args: any[]) => void>(\n ...funcs: (null | T | undefined)[]\n) {\n return function (\n event: T extends (event: infer R, ...args: any[]) => any ? R : never,\n ...args: T extends (event: any, ...args: infer R) => any ? R : never\n ) {\n funcs.some((func) => {\n func?.(event, ...args)\n\n return event?.defaultPrevented\n })\n }\n}\n\nexport function fnAll<T extends (...args: any[]) => any>(\n ...funcs: (null | T | undefined)[]\n) {\n return function (...args: T extends (...args: infer R) => any ? R : never) {\n return funcs.forEach((func) => func?.(...args))\n }\n}\n"],"mappings":";;;AAGA,MAAa,OAAO,MAAM,CAAE;AAE5B,SAAgB,QACdA,WACA,GAAG,MACA;AACH,QAAO,WAAW,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG;AACrD;AAED,SAAgB,WACd,GAAG,OACH;AACA,QAAO,SACLC,OACA,GAAG,MACH;AACA,QAAM,KAAK,CAAC,SAAS;AACnB,UAAO,OAAO,GAAG,KAAK;AAEtB,UAAO,OAAO;EACf,EAAC;CACH;AACF;AAED,SAAgB,MACd,GAAG,OACH;AACA,QAAO,SAAU,GAAG,MAAuD;AACzE,SAAO,MAAM,QAAQ,CAAC,SAAS,OAAO,GAAG,KAAK,CAAC;CAChD;AACF"}
|
package/dist/esm/i18n.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/i18n.ts
|
|
2
|
+
const RTL_SCRIPTS = new Set([
|
|
3
|
+
"Adlm",
|
|
4
|
+
"Arab",
|
|
5
|
+
"Hebr",
|
|
6
|
+
"Mand",
|
|
7
|
+
"Mend",
|
|
8
|
+
"Nkoo",
|
|
9
|
+
"Rohg",
|
|
10
|
+
"Samr",
|
|
11
|
+
"Syrc",
|
|
12
|
+
"Thaa",
|
|
13
|
+
"Yezi"
|
|
14
|
+
]);
|
|
15
|
+
const RTL_LANGS = new Set([
|
|
16
|
+
"ae",
|
|
17
|
+
"ar",
|
|
18
|
+
"arc",
|
|
19
|
+
"bcc",
|
|
20
|
+
"bqi",
|
|
21
|
+
"ckb",
|
|
22
|
+
"dv",
|
|
23
|
+
"fa",
|
|
24
|
+
"glk",
|
|
25
|
+
"he",
|
|
26
|
+
"ku",
|
|
27
|
+
"mzn",
|
|
28
|
+
"nqo",
|
|
29
|
+
"pnb",
|
|
30
|
+
"ps",
|
|
31
|
+
"sd",
|
|
32
|
+
"ug",
|
|
33
|
+
"ur",
|
|
34
|
+
"yi"
|
|
35
|
+
]);
|
|
36
|
+
function isRtl(_locale) {
|
|
37
|
+
const locale = new Intl.Locale(_locale).maximize();
|
|
38
|
+
if ("textInfo" in locale) return locale.textInfo.direction === "rtl";
|
|
39
|
+
if (locale.script) return RTL_SCRIPTS.has(locale.script);
|
|
40
|
+
else return RTL_LANGS.has(_locale.split("-")[0]);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { isRtl };
|
|
45
|
+
//# sourceMappingURL=i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","names":["_locale: string"],"sources":["../../src/i18n.ts"],"sourcesContent":["const RTL_SCRIPTS = new Set([\n \"Adlm\",\n \"Arab\",\n \"Hebr\",\n \"Mand\",\n \"Mend\",\n \"Nkoo\",\n \"Rohg\",\n \"Samr\",\n \"Syrc\",\n \"Thaa\",\n \"Yezi\",\n])\n\nconst RTL_LANGS = new Set([\n \"ae\",\n \"ar\",\n \"arc\",\n \"bcc\",\n \"bqi\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"glk\",\n \"he\",\n \"ku\",\n \"mzn\",\n \"nqo\",\n \"pnb\",\n \"ps\",\n \"sd\",\n \"ug\",\n \"ur\",\n \"yi\",\n])\n\nexport function isRtl(_locale: string) {\n const locale = new Intl.Locale(_locale).maximize()\n\n if (\"textInfo\" in locale) return (locale.textInfo as any).direction === \"rtl\"\n\n if (locale.script) {\n return RTL_SCRIPTS.has(locale.script)\n } else {\n return RTL_LANGS.has(_locale.split(\"-\")[0]!)\n }\n}\n"],"mappings":";AAAA,MAAM,cAAc,IAAI,IAAI;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAED,MAAM,YAAY,IAAI,IAAI;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAED,SAAgB,MAAMA,SAAiB;CACrC,MAAM,SAAS,IAAI,KAAK,OAAO,SAAS,UAAU;AAElD,KAAI,cAAc,OAAQ,QAAQ,OAAO,SAAiB,cAAc;AAExE,KAAI,OAAO,OACT,QAAO,YAAY,IAAI,OAAO,OAAO;KAErC,QAAO,UAAU,IAAI,QAAQ,MAAM,IAAI,CAAC,GAAI;AAE/C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { cast, is, isArray, isBoolean, isBooleanish, isEmpty, isEmptyObject, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isString, isUndefined, isUnit } from "./assertion.js";
|
|
2
|
+
import { filterEmpty, toArray } from "./array.js";
|
|
3
|
+
import { calc } from "./calc.js";
|
|
4
|
+
import { COLOR_SCHEMES, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, alphaToHex, calcFormat, convertColor, getAlpha, hslaTo, hsvTo, parseToHsla, parseToHsv, parseToRgba, rgbaTo, sameColor } from "./color.js";
|
|
5
|
+
import { fnAll, handlerAll, noop, runIfFn } from "./function.js";
|
|
6
|
+
import { ariaAttr, contains, createdDom, dataAttr, getActiveElement, getDocument, getDocumentElement, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getNextTabbableElement, getNodeName, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, isActiveElement, isAndroid, isApple, isChrome, isDisabledElement, isDocument, isEditableElement, isFirefox, isFocusableElement, isFrame, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isNode, isSafari, isShadowRoot, isTabbableElement, isTouchDevice, isVisibleElement, isVisualViewport, isWebKit, isWindow, platform, scrollLock, setAttribute, setStyle, userAgent, uuid, vendor } from "./dom.js";
|
|
7
|
+
import { addDomEvent, focusTransfer, focusTrap, getEventPoint, getEventWindow, isMouseEvent, isMultiTouchEvent, isTouchEvent, pointFromMouse, pointFromTouch } from "./event.js";
|
|
8
|
+
import { isRtl } from "./i18n.js";
|
|
9
|
+
import { interopDefault } from "./module.js";
|
|
10
|
+
import { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent } from "./number.js";
|
|
11
|
+
import { filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey } from "./object.js";
|
|
12
|
+
import { antonym, bem, cx, escape, isSize, toCamelCase, toKebabCase, toPascalCase, toTitleCase, transformSize } from "./string.js";
|
|
13
|
+
|
|
14
|
+
export { COLOR_SCHEMES, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, addDomEvent, alphaToHex, antonym, ariaAttr, bem, calc, calcFormat, cast, clampNumber, contains, convertColor, countDecimal, createdDom, cx, dataAttr, escape, filterEmpty, filterObject, filterUndefined, flattenObject, fnAll, focusTransfer, focusTrap, getActiveElement, getAlpha, getDocument, getDocumentElement, getEventPoint, getEventWindow, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getMemoizedObject, getNextTabbableElement, getNodeName, getObject, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, handlerAll, hslaTo, hsvTo, interopDefault, is, isActiveElement, isAndroid, isApple, isArray, isBoolean, isBooleanish, isChrome, isDisabledElement, isDocument, isEditableElement, isEmpty, isEmptyObject, isFirefox, isFocusableElement, isFrame, isFunction, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isMouseEvent, isMultiTouchEvent, isNode, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isRtl, isSafari, isShadowRoot, isSize, isString, isTabbableElement, isTouchDevice, isTouchEvent, isUndefined, isUnit, isVisibleElement, isVisualViewport, isWebKit, isWindow, memoizeObject, merge, noop, objectKeys, omitObject, parseToHsla, parseToHsv, parseToRgba, percentToValue, pickObject, platform, pointFromMouse, pointFromTouch, replaceObject, rgbaTo, roundNumberToStep, runIfFn, sameColor, scrollLock, setAttribute, setStyle, splitObject, toArray, toCamelCase, toKebabCase, toNumber, toPascalCase, toPrecision, toTitleCase, transformSize, userAgent, uuid, valueToPercent, vendor, wrapWithKey };
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","names":["module: T"],"sources":["../../src/module.ts"],"sourcesContent":["export function interopDefault<T>(module: T): T {\n return (module as { default: T }).default || module\n}\n"],"mappings":";AAAA,SAAgB,eAAkBA,QAAc;AAC9C,QAAQ,OAA0B,WAAW;AAC9C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/number.ts
|
|
2
|
+
function toNumber(n) {
|
|
3
|
+
const num = parseFloat(n);
|
|
4
|
+
return typeof num !== "number" || Number.isNaN(num) ? 0 : num;
|
|
5
|
+
}
|
|
6
|
+
function toPrecision(n, precision) {
|
|
7
|
+
n = toNumber(n);
|
|
8
|
+
const scale = 10 ** (precision ?? 10);
|
|
9
|
+
n = Math.round(n * scale) / scale;
|
|
10
|
+
return precision ? n.toFixed(precision) : n.toString();
|
|
11
|
+
}
|
|
12
|
+
function countDecimal(n) {
|
|
13
|
+
if (!Number.isFinite(n)) return 0;
|
|
14
|
+
let e = 1;
|
|
15
|
+
let p = 0;
|
|
16
|
+
while (Math.round(n * e) / e !== n) {
|
|
17
|
+
e *= 10;
|
|
18
|
+
p += 1;
|
|
19
|
+
}
|
|
20
|
+
return p;
|
|
21
|
+
}
|
|
22
|
+
function roundNumberToStep(n, from, step) {
|
|
23
|
+
const nextValue = Math.round((n - from) / step) * step + from;
|
|
24
|
+
const precision = countDecimal(step);
|
|
25
|
+
return toPrecision(nextValue, precision);
|
|
26
|
+
}
|
|
27
|
+
function valueToPercent(n, min, max) {
|
|
28
|
+
return (n - min) * 100 / (max - min);
|
|
29
|
+
}
|
|
30
|
+
function percentToValue(n, min, max) {
|
|
31
|
+
return (max - min) * n + min;
|
|
32
|
+
}
|
|
33
|
+
function clampNumber(n, min, max) {
|
|
34
|
+
return Math.min(Math.max(n, min), max);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
export { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent };
|
|
39
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","names":["n: any","n: number","precision?: number","from: number","step: number","min: number","max: number"],"sources":["../../src/number.ts"],"sourcesContent":["export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n"],"mappings":";AAAA,SAAgB,SAASA,GAAgB;CACvC,MAAM,MAAM,WAAW,EAAE;AAEzB,eAAc,QAAQ,YAAY,OAAO,MAAM,IAAI,GAAG,IAAI;AAC3D;AAED,SAAgB,YAAYC,GAAWC,WAA4B;AACjE,KAAI,SAAS,EAAE;CAEf,MAAM,QAAQ,OAAO,aAAa;AAElC,KAAI,KAAK,MAAM,IAAI,MAAM,GAAG;AAE5B,QAAO,YAAY,EAAE,QAAQ,UAAU,GAAG,EAAE,UAAU;AACvD;AAED,SAAgB,aAAaD,GAAmB;AAC9C,MAAK,OAAO,SAAS,EAAE,CAAE,QAAO;CAEhC,IAAI,IAAI;CACR,IAAI,IAAI;AAER,QAAO,KAAK,MAAM,IAAI,EAAE,GAAG,MAAM,GAAG;AAClC,OAAK;AACL,OAAK;CACN;AAED,QAAO;AACR;AAED,SAAgB,kBAAkBA,GAAWE,MAAcC,MAAc;CACvE,MAAM,YAAY,KAAK,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO;CAEzD,MAAM,YAAY,aAAa,KAAK;AAEpC,QAAO,YAAY,WAAW,UAAU;AACzC;AAED,SAAgB,eAAeH,GAAWI,KAAaC,KAAqB;AAC1E,SAAS,IAAI,OAAO,OAAQ,MAAM;AACnC;AAED,SAAgB,eAAeL,GAAWI,KAAaC,KAAa;AAClE,SAAQ,MAAM,OAAO,IAAI;AAC1B;AAED,SAAgB,YAAYL,GAAWI,KAAaC,KAAqB;AACvE,QAAO,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,EAAE,IAAI;AACvC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { isArray, isFunction, isObject, isString, isUndefined } from "./assertion.js";
|
|
2
|
+
|
|
3
|
+
//#region src/object.ts
|
|
4
|
+
function omitObject(obj, keys) {
|
|
5
|
+
if (!keys.length) return obj;
|
|
6
|
+
const result = {};
|
|
7
|
+
Object.keys(obj).forEach((key) => {
|
|
8
|
+
if (keys.includes(key)) return;
|
|
9
|
+
result[key] = obj[key];
|
|
10
|
+
});
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
function pickObject(obj, keys) {
|
|
14
|
+
if (!keys.length) return {};
|
|
15
|
+
const result = {};
|
|
16
|
+
keys.forEach((key) => {
|
|
17
|
+
if (key in obj) result[key] = obj[key];
|
|
18
|
+
});
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function splitObject(obj, funcOrKeys) {
|
|
22
|
+
const picked = {};
|
|
23
|
+
const omitted = {};
|
|
24
|
+
for (const [key, value] of Object.entries(obj)) if (isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key)) picked[key] = value;
|
|
25
|
+
else omitted[key] = value;
|
|
26
|
+
return [picked, omitted];
|
|
27
|
+
}
|
|
28
|
+
function filterObject(obj, func) {
|
|
29
|
+
const result = {};
|
|
30
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
31
|
+
const shouldPass = func(key, value, obj);
|
|
32
|
+
if (shouldPass) result[key] = value;
|
|
33
|
+
});
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
function filterUndefined(obj) {
|
|
37
|
+
return filterObject(obj, (_, val) => val !== null && val !== void 0);
|
|
38
|
+
}
|
|
39
|
+
function merge(target, source, options = {
|
|
40
|
+
mergeArray: false,
|
|
41
|
+
shouldProcess: () => true
|
|
42
|
+
}) {
|
|
43
|
+
let result = Object.assign({}, target);
|
|
44
|
+
if (isObject(source) && options.shouldProcess?.(source)) if (isObject(target)) for (const [sourceKey, sourceValue] of Object.entries(source)) {
|
|
45
|
+
const targetValue = target[sourceKey];
|
|
46
|
+
if (options.shouldProcess(sourceValue)) if (options.mergeArray && isArray(sourceValue) && isArray(targetValue)) result[sourceKey] = targetValue.concat(...sourceValue);
|
|
47
|
+
else if (!isFunction(sourceValue) && isObject(sourceValue) && target.hasOwnProperty(sourceKey)) result[sourceKey] = merge(targetValue, sourceValue, options);
|
|
48
|
+
else Object.assign(result, { [sourceKey]: sourceValue });
|
|
49
|
+
else Object.assign(result, { [sourceKey]: sourceValue });
|
|
50
|
+
}
|
|
51
|
+
else result = source;
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function flattenObject(obj, { maxDepth = Infinity, separator = ".", shouldProcess = () => true } = {}) {
|
|
55
|
+
if (!isObject(obj) && !isArray(obj)) return obj;
|
|
56
|
+
return Object.entries(obj).reduce((result, [key, value]) => {
|
|
57
|
+
if (isObject(value) && shouldProcess(value) && maxDepth > 1) Object.entries(flattenObject(value, {
|
|
58
|
+
maxDepth: maxDepth - 1,
|
|
59
|
+
separator,
|
|
60
|
+
shouldProcess
|
|
61
|
+
})).forEach(([childKey, childValue]) => {
|
|
62
|
+
result[`${key}${separator}${childKey}`] = childValue;
|
|
63
|
+
});
|
|
64
|
+
else result[key] = value;
|
|
65
|
+
return result;
|
|
66
|
+
}, {});
|
|
67
|
+
}
|
|
68
|
+
function objectKeys(obj) {
|
|
69
|
+
return Object.keys(obj);
|
|
70
|
+
}
|
|
71
|
+
function replaceObject(objOrArray, callBack) {
|
|
72
|
+
if (isArray(objOrArray)) return objOrArray.map(callBack);
|
|
73
|
+
else if (isObject(objOrArray)) return Object.entries(objOrArray).reduce((obj, [key, value]) => {
|
|
74
|
+
obj[key] = callBack(value);
|
|
75
|
+
return obj;
|
|
76
|
+
}, {});
|
|
77
|
+
else return callBack(objOrArray);
|
|
78
|
+
}
|
|
79
|
+
function getObject(obj, path, fallback) {
|
|
80
|
+
const keys = isString(path) ? path.split(/\[(.*?)\]|\./).filter(Boolean) : [path];
|
|
81
|
+
for (const key of keys) {
|
|
82
|
+
if (!obj) break;
|
|
83
|
+
obj = obj[key];
|
|
84
|
+
}
|
|
85
|
+
return obj === void 0 ? fallback : obj;
|
|
86
|
+
}
|
|
87
|
+
function memoizeObject(func) {
|
|
88
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
|
89
|
+
function memoizedFunc(obj, path, fallback) {
|
|
90
|
+
if (isUndefined(obj)) return func(obj, path, fallback);
|
|
91
|
+
if (!cache.has(obj)) cache.set(obj, /* @__PURE__ */ new Map());
|
|
92
|
+
const map = cache.get(obj);
|
|
93
|
+
if (map.has(path)) return map.get(path);
|
|
94
|
+
const value = func(obj, path, fallback);
|
|
95
|
+
map.set(path, value);
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
return memoizedFunc;
|
|
99
|
+
}
|
|
100
|
+
const getMemoizedObject = memoizeObject(getObject);
|
|
101
|
+
function wrapWithKey(obj, key) {
|
|
102
|
+
if (key) return { [key]: obj };
|
|
103
|
+
else return obj;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
export { filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey };
|
|
108
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","names":["obj: Y","keys: M[] | readonly M[]","result: Dict","funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[]","picked: Dict","omitted: Dict","func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean","target: any","source: any","options: mergeOptions","targetValue: any","obj: any","objOrArray: Y","callBack: (value: any) => any","obj: Dict | undefined","path: number | string","fallback?: any","func: typeof getObject","obj: Dict","obj: T","key?: string"],"sources":["../../src/object.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nexport function omitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): Omit<Y, M> {\n if (!keys.length) return obj\n\n const result: Dict = {}\n\n Object.keys(obj).forEach((key) => {\n if (keys.includes(key as M)) return\n\n result[key] = obj[key]\n })\n\n return result as Omit<Y, M>\n}\n\nexport function pickObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): { [D in M]: Y[D] } {\n if (!keys.length) return {} as { [D in M]: Y[D] }\n\n const result = {} as { [D in M]: Y[D] }\n\n keys.forEach((key) => {\n if (key in obj) result[key] = obj[key]\n })\n\n return result\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: M[] | readonly M[],\n): [{ [D in M]: Y[D] }, Omit<Y, M>]\n\nexport function splitObject<Y extends Dict, M extends Dict>(\n obj: Dict,\n funcOrKeys?: (key: string) => boolean,\n): [Y, M]\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (\n isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key as M)\n ) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [D in M]: Y[D] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport interface mergeOptions {\n debug?: boolean\n mergeArray?: boolean\n shouldProcess?: (value: any) => boolean\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n options: mergeOptions = { mergeArray: false, shouldProcess: () => true },\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source) && options.shouldProcess?.(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (options.shouldProcess(sourceValue)) {\n if (\n options.mergeArray &&\n isArray(sourceValue) &&\n isArray(targetValue)\n ) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, options)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n separator?: string\n shouldProcess?: (value: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n {\n maxDepth = Infinity,\n separator = \".\",\n shouldProcess = () => true,\n }: FlattenObjectOptions = {},\n): Y {\n if (!isObject(obj) && !isArray(obj)) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (isObject(value) && shouldProcess(value) && maxDepth > 1) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {}) as Y\n}\n\nexport function objectKeys<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce<Dict>((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {}) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict | undefined,\n path: number | string,\n fallback?: any,\n) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (const key of keys) {\n if (!obj) break\n\n obj = obj[key]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: number | string,\n fallback?: any,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function wrapWithKey<T>(obj: T, key?: string) {\n if (key) {\n return { [key]: obj }\n } else {\n return obj\n }\n}\n"],"mappings":";;;AASA,SAAgB,WACdA,KACAC,MACY;AACZ,MAAK,KAAK,OAAQ,QAAO;CAEzB,MAAMC,SAAe,CAAE;AAEvB,QAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAChC,MAAI,KAAK,SAAS,IAAS,CAAE;AAE7B,SAAO,OAAO,IAAI;CACnB,EAAC;AAEF,QAAO;AACR;AAED,SAAgB,WACdF,KACAC,MACoB;AACpB,MAAK,KAAK,OAAQ,QAAO,CAAE;CAE3B,MAAM,SAAS,CAAE;AAEjB,MAAK,QAAQ,CAAC,QAAQ;AACpB,MAAI,OAAO,IAAK,QAAO,OAAO,IAAI;CACnC,EAAC;AAEF,QAAO;AACR;AAYD,SAAgB,YACdD,KACAG,YACA;CACA,MAAMC,SAAe,CAAE;CACvB,MAAMC,UAAgB,CAAE;AAExB,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,IAAI,CAC5C,KACE,WAAW,WAAW,GAAG,WAAW,IAAI,GAAG,YAAY,SAAS,IAAS,CAEzE,QAAO,OAAO;KAEd,SAAQ,OAAO;AAInB,QAAO,CAAC,QAAQ,OAAQ;AACzB;AAED,SAAgB,aACdL,KACAM,MACG;CACH,MAAMJ,SAAe,CAAE;AAEvB,QAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,KAAK;EAC5C,MAAM,aAAa,KAAK,KAAK,OAAO,IAAI;AAExC,MAAI,WAAY,QAAO,OAAO;CAC/B,EAAC;AAEF,QAAO;AACR;AAED,SAAgB,gBAAgCF,KAAW;AACzD,QAAO,aAAa,KAAK,CAAC,GAAG,QAAQ,QAAQ,QAAQ,eAAkB;AACxE;AAQD,SAAgB,MACdO,QACAC,QACAC,UAAwB;CAAE,YAAY;CAAO,eAAe,MAAM;AAAM,GACrE;CACH,IAAI,SAAS,OAAO,OAAO,CAAE,GAAE,OAAO;AAEtC,KAAI,SAAS,OAAO,IAAI,QAAQ,gBAAgB,OAAO,CACrD,KAAI,SAAS,OAAO,CAClB,MAAK,MAAM,CAAC,WAAW,YAAY,IAAI,OAAO,QAAQ,OAAO,EAAE;EAC7D,MAAMC,cAAmB,OAAO;AAEhC,MAAI,QAAQ,cAAc,YAAY,CACpC,KACE,QAAQ,cACR,QAAQ,YAAY,IACpB,QAAQ,YAAY,CAEpB,QAAO,aAAa,YAAY,OAAO,GAAG,YAAY;YAErD,WAAW,YAAY,IACxB,SAAS,YAAY,IACrB,OAAO,eAAe,UAAU,CAEhC,QAAO,aAAa,MAAM,aAAa,aAAa,QAAQ;MAE5D,QAAO,OAAO,QAAQ,GAAG,YAAY,YAAa,EAAC;MAGrD,QAAO,OAAO,QAAQ,GAAG,YAAY,YAAa,EAAC;CAEtD;KAED,UAAS;AAIb,QAAO;AACR;AAQD,SAAgB,cACdC,KACA,EACE,WAAW,UACX,YAAY,KACZ,gBAAgB,MAAM,MACD,GAAG,CAAE,GACzB;AACH,MAAK,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAE,QAAO;AAE5C,QAAO,OAAO,QAAQ,IAAI,CAAC,OAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,KAAK;AAC/D,MAAI,SAAS,MAAM,IAAI,cAAc,MAAM,IAAI,WAAW,EACxD,QAAO,QACL,cAAc,OAAO;GACnB,UAAU,WAAW;GACrB;GACA;EACD,EAAC,CACH,CAAC,QAAQ,CAAC,CAAC,UAAU,WAAW,KAAK;AACpC,aAAU,MAAM,YAAY,cAAc;EAC3C,EAAC;MAEF,QAAO,OAAO;AAGhB,SAAO;CACR,GAAE,CAAE,EAAC;AACP;AAED,SAAgB,WAA6BX,KAAqB;AAChE,QAAO,OAAO,KAAK,IAAI;AACxB;AAED,SAAgB,cACdY,YACAC,UACG;AACH,KAAI,QAAQ,WAAW,CACrB,QAAO,WAAW,IAAI,SAAS;UACtB,SAAS,WAAW,CAC7B,QAAO,OAAO,QAAQ,WAAW,CAAC,OAAa,CAAC,KAAK,CAAC,KAAK,MAAM,KAAK;AACpE,MAAI,OAAO,SAAS,MAAM;AAE1B,SAAO;CACR,GAAE,CAAE,EAAC;KAEN,QAAO,SAAS,WAAW;AAE9B;AAED,SAAgB,UACdC,KACAC,MACAC,UACA;CACA,MAAM,OAAO,SAAS,KAAK,GACvB,KAAK,MAAM,eAAe,CAAC,OAAO,QAAQ,GAC1C,CAAC,IAAK;AAEV,MAAK,MAAM,OAAO,MAAM;AACtB,OAAK,IAAK;AAEV,QAAM,IAAI;CACX;AAED,QAAO,iBAAoB,WAAW;AACvC;AAED,SAAgB,cAAcC,MAAwB;CACpD,MAAM,wBAAQ,IAAI;CAElB,SAAS,aACPC,KACAH,MACAC,UACG;AACH,MAAI,YAAY,IAAI,CAAE,QAAO,KAAK,KAAK,MAAM,SAAS;AAEtD,OAAK,MAAM,IAAI,IAAI,CAAE,OAAM,IAAI,qBAAK,IAAI,MAAM;EAE9C,MAAM,MAAM,MAAM,IAAI,IAAI;AAE1B,MAAI,IAAI,IAAI,KAAK,CAAE,QAAO,IAAI,IAAI,KAAK;EAEvC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAEvC,MAAI,IAAI,MAAM,MAAM;AAEpB,SAAO;CACR;AAED,QAAO;AACR;AAED,MAAa,oBAAoB,cAAc,UAAU;AAEzD,SAAgB,YAAeG,KAAQC,KAAc;AACnD,KAAI,IACF,QAAO,GAAG,MAAM,IAAK;KAErB,QAAO;AAEV"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { isString, isUndefined } from "./assertion.js";
|
|
2
|
+
|
|
3
|
+
//#region src/string.ts
|
|
4
|
+
function cx(...classNames) {
|
|
5
|
+
return classNames.filter((className) => !isUndefined(className)).map((className) => className.trim()).join(" ");
|
|
6
|
+
}
|
|
7
|
+
function escape(value, replaceValue = "") {
|
|
8
|
+
return value.replace(/\s+/g, replaceValue);
|
|
9
|
+
}
|
|
10
|
+
function antonym(value) {
|
|
11
|
+
switch (value) {
|
|
12
|
+
case "top": return "bottom";
|
|
13
|
+
case "bottom": return "top";
|
|
14
|
+
case "left": return "right";
|
|
15
|
+
case "right": return "left";
|
|
16
|
+
case "start": return "end";
|
|
17
|
+
case "end": return "start";
|
|
18
|
+
case "x": return "y";
|
|
19
|
+
case "y": return "x";
|
|
20
|
+
case "enter": return "exit";
|
|
21
|
+
case "exit": return "enter";
|
|
22
|
+
case "vertical": return "horizontal";
|
|
23
|
+
case "horizontal": return "vertical";
|
|
24
|
+
case "up": return "down";
|
|
25
|
+
case "down": return "up";
|
|
26
|
+
case "block": return "inline";
|
|
27
|
+
case "inline": return "block";
|
|
28
|
+
default: return value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const sizeMap = [
|
|
32
|
+
"9xs",
|
|
33
|
+
"8xs",
|
|
34
|
+
"7xs",
|
|
35
|
+
"6xs",
|
|
36
|
+
"5xs",
|
|
37
|
+
"4xs",
|
|
38
|
+
"3xs",
|
|
39
|
+
"2xs",
|
|
40
|
+
"xs",
|
|
41
|
+
"sm",
|
|
42
|
+
"md",
|
|
43
|
+
"lg",
|
|
44
|
+
"xl",
|
|
45
|
+
"2xl",
|
|
46
|
+
"3xl",
|
|
47
|
+
"4xl",
|
|
48
|
+
"5xl",
|
|
49
|
+
"6xl",
|
|
50
|
+
"7xl",
|
|
51
|
+
"8xl",
|
|
52
|
+
"9xl"
|
|
53
|
+
];
|
|
54
|
+
function isSize(value) {
|
|
55
|
+
return isString(value) && sizeMap.includes(value);
|
|
56
|
+
}
|
|
57
|
+
function transformSize(token, value, omitTokens = null) {
|
|
58
|
+
if (!token) return void 0;
|
|
59
|
+
let resolvedSizeMap = sizeMap;
|
|
60
|
+
if (omitTokens) resolvedSizeMap = sizeMap.filter((size$1) => !omitTokens.includes(size$1));
|
|
61
|
+
const index = resolvedSizeMap.indexOf(token);
|
|
62
|
+
const size = resolvedSizeMap[index + value];
|
|
63
|
+
return size ?? token;
|
|
64
|
+
}
|
|
65
|
+
function toCamelCase(value) {
|
|
66
|
+
return value.replace(/[_-](.)/g, (_, val) => val.toUpperCase()).replace(/^(.)/, (_, val) => val.toLowerCase());
|
|
67
|
+
}
|
|
68
|
+
function toPascalCase(value) {
|
|
69
|
+
return value.replace(/[_-](.)/g, (_, val) => val.toUpperCase()).replace(/^(.)/, (_, val) => val.toUpperCase());
|
|
70
|
+
}
|
|
71
|
+
function toKebabCase(value) {
|
|
72
|
+
return value.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, "");
|
|
73
|
+
}
|
|
74
|
+
function toTitleCase(value) {
|
|
75
|
+
return value.replace(/([A-Z])/g, " $1").replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`).replace(/^./, (str) => str.toUpperCase()).trim();
|
|
76
|
+
}
|
|
77
|
+
function bem(block, element, modifier) {
|
|
78
|
+
let className = block;
|
|
79
|
+
if (element) className += `__${element}`;
|
|
80
|
+
if (modifier) className += `--${modifier}`;
|
|
81
|
+
return className;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//#endregion
|
|
85
|
+
export { antonym, bem, cx, escape, isSize, toCamelCase, toKebabCase, toPascalCase, toTitleCase, transformSize };
|
|
86
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","names":["value: string","sizeMap: AnyString[]","value: any","token: string | undefined","value: number","omitTokens: null | string[]","size","value: AnyString","block: string","element?: string","modifier?: string"],"sources":["../../src/string.ts"],"sourcesContent":["import type { AnyString } from \"./index.types\"\nimport { isString, isUndefined } from \"./assertion\"\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames\n .filter((className) => !isUndefined(className))\n .map((className) => className.trim())\n .join(\" \")\n}\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nconst sizeMap: AnyString[] = [\n \"9xs\",\n \"8xs\",\n \"7xs\",\n \"6xs\",\n \"5xs\",\n \"4xs\",\n \"3xs\",\n \"2xs\",\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n \"5xl\",\n \"6xl\",\n \"7xl\",\n \"8xl\",\n \"9xl\",\n]\n\nexport function isSize(value: any): boolean {\n return isString(value) && sizeMap.includes(value)\n}\n\nexport function transformSize<Y = string>(\n token: string | undefined,\n value: number,\n omitTokens: null | string[] = null,\n): undefined | Y {\n if (!token) return undefined\n\n let resolvedSizeMap = sizeMap\n\n if (omitTokens)\n resolvedSizeMap = sizeMap.filter((size) => !omitTokens.includes(size))\n\n const index = resolvedSizeMap.indexOf(token)\n const size = resolvedSizeMap[index + value]\n\n return (size ?? token) as Y\n}\n\nexport function toCamelCase(value: AnyString): string {\n return value\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toLowerCase())\n}\n\nexport function toPascalCase(value: AnyString): string {\n return value\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: AnyString): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: AnyString): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n\nexport function bem(block: string, element?: string, modifier?: string) {\n let className = block\n\n if (element) className += `__${element}`\n if (modifier) className += `--${modifier}`\n\n return className\n}\n"],"mappings":";;;AAGA,SAAgB,GAAG,GAAG,YAAoC;AACxD,QAAO,WACJ,OAAO,CAAC,eAAe,YAAY,UAAU,CAAC,CAC9C,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC,CACpC,KAAK,IAAI;AACb;AAED,SAAgB,OAAOA,OAAe,eAAe,IAAY;AAC/D,QAAO,MAAM,QAAQ,QAAQ,aAAa;AAC3C;AAED,SAAgB,QAAQA,OAAuB;AAC7C,SAAQ,OAAR;EACE,KAAK,MACH,QAAO;EAET,KAAK,SACH,QAAO;EAET,KAAK,OACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,MACH,QAAO;EAET,KAAK,IACH,QAAO;EAET,KAAK,IACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,OACH,QAAO;EAET,KAAK,WACH,QAAO;EAET,KAAK,aACH,QAAO;EAET,KAAK,KACH,QAAO;EAET,KAAK,OACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,SACH,QAAO;EAET,QACE,QAAO;CACV;AACF;AAED,MAAMC,UAAuB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAED,SAAgB,OAAOC,OAAqB;AAC1C,QAAO,SAAS,MAAM,IAAI,QAAQ,SAAS,MAAM;AAClD;AAED,SAAgB,cACdC,OACAC,OACAC,aAA8B,MACf;AACf,MAAK,MAAO;CAEZ,IAAI,kBAAkB;AAEtB,KAAI,WACF,mBAAkB,QAAQ,OAAO,CAACC,YAAU,WAAW,SAASA,OAAK,CAAC;CAExE,MAAM,QAAQ,gBAAgB,QAAQ,MAAM;CAC5C,MAAM,OAAO,gBAAgB,QAAQ;AAErC,QAAQ,QAAQ;AACjB;AAED,SAAgB,YAAYC,OAA0B;AACpD,QAAO,MACJ,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,aAAa,CAAC,CAClD,QAAQ,QAAQ,CAAC,GAAG,QAAQ,IAAI,aAAa,CAAC;AAClD;AAED,SAAgB,aAAaA,OAA0B;AACrD,QAAO,MACJ,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,aAAa,CAAC,CAClD,QAAQ,QAAQ,CAAC,GAAG,QAAQ,IAAI,aAAa,CAAC;AAClD;AAED,SAAgB,YAAYA,OAA0B;AACpD,QAAO,MACJ,QAAQ,gCAAgC,QAAQ,CAChD,aAAa,CACb,QAAQ,MAAM,GAAG;AACrB;AAED,SAAgB,YAAYA,OAA0B;AACpD,QAAO,MACJ,QAAQ,YAAY,MAAM,CAC1B,QAAQ,YAAY,CAAC,GAAG,SAAS,GAAG,IAAI,aAAa,GAAG,CACxD,QAAQ,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,CACzC,MAAM;AACV;AAED,SAAgB,IAAIC,OAAeC,SAAkBC,UAAmB;CACtE,IAAI,YAAY;AAEhB,KAAI,QAAS,eAAc,IAAI;AAC/B,KAAI,SAAU,eAAc,IAAI;AAEhC,QAAO;AACR"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/array.d.ts
|
|
2
|
+
declare function filterEmpty<Y>(array: Y[]): Exclude<Y, null | undefined>[];
|
|
3
|
+
declare function toArray<Y>(mixedArray: Y): Y extends any[] ? Exclude<Y[number], null | undefined>[] : Exclude<Y, null | undefined>[];
|
|
4
|
+
//#endregion
|
|
5
|
+
export { filterEmpty, toArray };
|
|
6
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Dict } from "./index.types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/assertion.d.ts
|
|
4
|
+
declare function is(x: any, y: any): boolean;
|
|
5
|
+
declare function isNumber(value: any): value is number;
|
|
6
|
+
declare function isNotNumber(value: any): boolean;
|
|
7
|
+
declare function isNumeric(value: any): boolean;
|
|
8
|
+
declare function isString(value: any): value is string;
|
|
9
|
+
declare function isBooleanish(value: any): value is boolean;
|
|
10
|
+
declare function isBoolean(value: any): value is boolean;
|
|
11
|
+
declare function isUndefined(value: any): value is undefined;
|
|
12
|
+
declare function isNull(value: any): value is null;
|
|
13
|
+
declare function isRegExp(value: any): value is RegExp;
|
|
14
|
+
declare function isObject<T extends Dict>(value: any): value is T;
|
|
15
|
+
declare function isArray<T extends any[]>(value: any): value is T;
|
|
16
|
+
declare function isEmpty(value: any): boolean;
|
|
17
|
+
declare function isEmptyObject(value: any): boolean;
|
|
18
|
+
declare function isFunction<T extends Function = Function>(value: any): value is T;
|
|
19
|
+
declare function isUnit(value: any): boolean;
|
|
20
|
+
declare function cast<T>(value: any): T;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { cast, is, isArray, isBoolean, isBooleanish, isEmpty, isEmptyObject, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isString, isUndefined, isUnit };
|
|
23
|
+
//# sourceMappingURL=assertion.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/calc.d.ts
|
|
2
|
+
type Operand = number | string;
|
|
3
|
+
declare function add(...args: Operand[]): string;
|
|
4
|
+
declare function subtract(...args: Operand[]): string;
|
|
5
|
+
declare function multiply(...args: Operand[]): string;
|
|
6
|
+
declare function divide(...args: Operand[]): string;
|
|
7
|
+
declare function negate(value: Operand): string;
|
|
8
|
+
interface Calc {
|
|
9
|
+
add: (...args: Operand[]) => Calc;
|
|
10
|
+
divide: (...args: Operand[]) => Calc;
|
|
11
|
+
multiply: (...args: Operand[]) => Calc;
|
|
12
|
+
negate: () => Calc;
|
|
13
|
+
subtract: (...args: Operand[]) => Calc;
|
|
14
|
+
toString: () => string;
|
|
15
|
+
}
|
|
16
|
+
declare const calc: ((x: Operand) => Calc) & {
|
|
17
|
+
add: typeof add;
|
|
18
|
+
divide: typeof divide;
|
|
19
|
+
multiply: typeof multiply;
|
|
20
|
+
negate: typeof negate;
|
|
21
|
+
subtract: typeof subtract;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Operand, calc };
|
|
25
|
+
//# sourceMappingURL=calc.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/color.d.ts
|
|
2
|
+
type ColorFormat = "hex" | "hexa" | "hsl" | "hsla" | "rgb" | "rgba";
|
|
3
|
+
declare const SEMANTIC_COLOR_SCHEMES: readonly ["mono", "primary", "secondary", "info", "success", "warning", "danger", "error", "link"];
|
|
4
|
+
declare const DEFAULT_COLOR_SCHEMES: readonly ["gray", "red", "rose", "pink", "flashy", "orange", "amber", "yellow", "lime", "green", "emerald", "teal", "cyan", "sky", "blue", "indigo", "violet", "purple", "fuchsia"];
|
|
5
|
+
declare const COLOR_SCHEMES: ("mono" | "primary" | "secondary" | "info" | "success" | "warning" | "danger" | "error" | "link" | "gray" | "red" | "rose" | "pink" | "flashy" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia")[];
|
|
6
|
+
declare const TONES: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
7
|
+
declare function convertColor(color: string, fallback?: string): (format: ColorFormat) => string | undefined;
|
|
8
|
+
declare function calcFormat(color: string): ColorFormat;
|
|
9
|
+
declare function getAlpha(color: string): number;
|
|
10
|
+
declare function alphaToHex(a: number): string;
|
|
11
|
+
declare function parseToRgba(color: string, fallback?: string): [number, number, number, number] | undefined;
|
|
12
|
+
declare function parseToHsla(color: string, fallback?: string): [number, number, number, number] | undefined;
|
|
13
|
+
declare function parseToHsv(color: string, fallback?: string): [number, number, number, number];
|
|
14
|
+
declare function rgbaTo([r, g, b, a]: [number, number, number, number], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
15
|
+
declare function hslaTo([h, s, l, a]: [number, number, number, number], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
16
|
+
declare function hsvTo([h, s, v, a]: [number, number, number, number?], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
17
|
+
declare function sameColor(color: string | undefined, comparison: string | undefined): boolean;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { COLOR_SCHEMES, ColorFormat, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, alphaToHex, calcFormat, convertColor, getAlpha, hslaTo, hsvTo, parseToHsla, parseToHsv, parseToRgba, rgbaTo, sameColor };
|
|
20
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region src/dom.d.ts
|
|
2
|
+
declare function createdDom(): boolean;
|
|
3
|
+
declare function getPlatform(): string;
|
|
4
|
+
declare function getUserAgent(): string;
|
|
5
|
+
declare function vendor(v: RegExp): boolean;
|
|
6
|
+
declare function platform(v: RegExp): boolean;
|
|
7
|
+
declare function userAgent(v: RegExp): boolean;
|
|
8
|
+
declare function isMac(): boolean;
|
|
9
|
+
declare function isIPhone(): boolean;
|
|
10
|
+
declare function isIPad(): boolean;
|
|
11
|
+
declare function isIos(): boolean;
|
|
12
|
+
declare function isAndroid(): boolean;
|
|
13
|
+
declare function isApple(): boolean;
|
|
14
|
+
declare function isSafari(): boolean;
|
|
15
|
+
declare function isFirefox(): boolean;
|
|
16
|
+
declare function isChrome(): boolean;
|
|
17
|
+
declare function isWebKit(): boolean;
|
|
18
|
+
declare function isHTMLElement(el: any): el is HTMLElement;
|
|
19
|
+
declare function isWindow(el: any): el is Window;
|
|
20
|
+
declare function isDocument(el: any): el is Document;
|
|
21
|
+
declare function isVisualViewport(el: any): el is VisualViewport;
|
|
22
|
+
declare function isNode(el: any): el is Node;
|
|
23
|
+
declare function isShadowRoot(el: any): el is ShadowRoot;
|
|
24
|
+
declare function isFrame(el: any): el is HTMLIFrameElement;
|
|
25
|
+
declare function isActiveElement(el: HTMLElement, rootNode: Document | ShadowRoot): boolean;
|
|
26
|
+
declare function isHiddenElement(el: HTMLElement): boolean;
|
|
27
|
+
declare function isDisabledElement(el: HTMLElement): boolean;
|
|
28
|
+
declare function isVisibleElement(el?: Node): boolean;
|
|
29
|
+
declare function isTouchDevice(): boolean;
|
|
30
|
+
declare function getWindow(el: Document | Node | null | ShadowRoot | undefined): typeof globalThis & Window;
|
|
31
|
+
declare function getDocument(el: Document | Element | Node | null | undefined | Window): Document;
|
|
32
|
+
declare function getDocumentElement(el: Document | Element | Node | null | undefined | Window): HTMLElement;
|
|
33
|
+
declare function getNodeName(node: Node | Window): string;
|
|
34
|
+
declare function getActiveElement(rootNode: Document | ShadowRoot): HTMLElement | null;
|
|
35
|
+
declare function getTabbableElements(el: HTMLElement | null, includeEl?: boolean): HTMLElement[];
|
|
36
|
+
declare function getFirstTabbableElement(el: HTMLElement | null, includeEl?: boolean): HTMLElement | null;
|
|
37
|
+
declare function getNextTabbableElement(el: HTMLElement | null, current?: HTMLElement | null): HTMLElement | null;
|
|
38
|
+
declare function getLastTabbableElement(el: HTMLElement | null, includeEl?: boolean): HTMLElement | null;
|
|
39
|
+
declare function getTabbableElementEdges(el: HTMLElement | null, includeEl?: boolean): [HTMLElement | null, HTMLElement | null];
|
|
40
|
+
declare function getParentNode(node: Node): Node;
|
|
41
|
+
declare function isInputElement(el: any): el is HTMLInputElement;
|
|
42
|
+
declare function isEditableElement(el: EventTarget | HTMLElement | null): boolean;
|
|
43
|
+
declare function isFocusableElement(el: HTMLElement | null): el is HTMLElement;
|
|
44
|
+
declare function isTabbableElement(el: HTMLElement | null): el is HTMLElement;
|
|
45
|
+
declare function contains(parent?: EventTarget | HTMLElement | null, child?: EventTarget | HTMLElement | null): boolean;
|
|
46
|
+
declare function getPx(value: number | string | undefined): number;
|
|
47
|
+
declare function getTabIndex(node: HTMLElement | SVGElement): number;
|
|
48
|
+
declare function dataAttr(condition: any): string | undefined;
|
|
49
|
+
type Booleanish = "false" | "true" | boolean;
|
|
50
|
+
declare function ariaAttr(condition: any): Booleanish | undefined;
|
|
51
|
+
declare function uuid(): string;
|
|
52
|
+
declare function getFocusableElements(el: null | Pick<HTMLElement, "querySelectorAll">, includeEl?: boolean): HTMLElement[];
|
|
53
|
+
declare function getFirstFocusableElement(el: HTMLElement | null, includeEl?: boolean): HTMLElement | null;
|
|
54
|
+
declare function setAttribute(el: Element, attr: string, v: string): () => void;
|
|
55
|
+
declare function setStyle(el: HTMLElement | null | undefined, style: Partial<CSSStyleDeclaration | {
|
|
56
|
+
[key: `--${string}`]: number | string;
|
|
57
|
+
}>): () => void;
|
|
58
|
+
declare function scrollLock(el: Document | Element | Node | null | undefined | Window): (() => void) | undefined;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { ariaAttr, contains, createdDom, dataAttr, getActiveElement, getDocument, getDocumentElement, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getNextTabbableElement, getNodeName, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, isActiveElement, isAndroid, isApple, isChrome, isDisabledElement, isDocument, isEditableElement, isFirefox, isFocusableElement, isFrame, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isNode, isSafari, isShadowRoot, isTabbableElement, isTouchDevice, isVisibleElement, isVisualViewport, isWebKit, isWindow, platform, scrollLock, setAttribute, setStyle, userAgent, uuid, vendor };
|
|
61
|
+
//# sourceMappingURL=dom.d.ts.map
|