@scbt-ecom/ui 0.24.0 → 0.24.1

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/dist/hooks.js CHANGED
@@ -1,115 +1,49 @@
1
- import { u as U } from "./useDevice-L83kSsN7.js";
2
- import * as v from "react";
3
- import { useState as d, useEffect as h } from "react";
4
- import { g as l, s as f, a as y, u as E, b as V } from "./useDebounce-DSBzpBLy.js";
5
- import { d as F, c as W, e as R, f as q } from "./useDebounce-DSBzpBLy.js";
6
- const C = (r = !1) => {
7
- const [t, s] = v.useState(r);
8
- return [t, (c) => s((a) => c ?? !a)];
9
- }, m = (r, t, s) => {
10
- if (r && "reportValidity" in r) {
11
- const e = l(s, t);
12
- r.setCustomValidity(e && e.message || ""), r.reportValidity();
13
- }
14
- }, p = (r, t) => {
15
- for (const s in t.fields) {
16
- const e = t.fields[s];
17
- e && e.ref && "reportValidity" in e.ref ? m(e.ref, s, r) : e.refs && e.refs.forEach((c) => m(c, s, r));
18
- }
19
- }, O = (r, t) => {
20
- t.shouldUseNativeValidation && p(r, t);
21
- const s = {};
22
- for (const e in r) {
23
- const c = l(t.fields, e), a = Object.assign(r[e] || {}, { ref: c && c.ref });
24
- if (P(t.names || Object.keys(r), e)) {
25
- const o = Object.assign({}, l(s, e));
26
- f(o, "root", a), f(s, e, o);
27
- } else f(s, e, a);
28
- }
29
- return s;
30
- }, P = (r, t) => r.some((s) => s.startsWith(t + "."));
31
- var j = function(r, t) {
32
- for (var s = {}; r.length; ) {
33
- var e = r[0], c = e.code, a = e.message, o = e.path.join(".");
34
- if (!s[o]) if ("unionErrors" in e) {
35
- var n = e.unionErrors[0].errors[0];
36
- s[o] = { message: n.message, type: n.code };
37
- } else s[o] = { message: a, type: c };
38
- if ("unionErrors" in e && e.unionErrors.forEach(function(b) {
39
- return b.errors.forEach(function(g) {
40
- return r.push(g);
41
- });
42
- }), t) {
43
- var i = s[o].types, u = i && i[e.code];
44
- s[o] = y(o, t, s, c, u ? [].concat(u, e.message) : e.message);
45
- }
46
- r.shift();
47
- }
48
- return s;
49
- }, w = function(r, t, s) {
50
- return s === void 0 && (s = {}), function(e, c, a) {
51
- try {
52
- return Promise.resolve(function(o, n) {
53
- try {
54
- var i = Promise.resolve(r[s.mode === "sync" ? "parse" : "parseAsync"](e, t)).then(function(u) {
55
- return a.shouldUseNativeValidation && p({}, a), { errors: {}, values: s.raw ? e : u };
56
- });
57
- } catch (u) {
58
- return n(u);
59
- }
60
- return i && i.then ? i.then(void 0, n) : i;
61
- }(0, function(o) {
62
- if (function(n) {
63
- return Array.isArray(n == null ? void 0 : n.errors);
64
- }(o)) return { values: {}, errors: O(j(o.errors, !a.shouldUseNativeValidation && a.criteriaMode === "all"), a) };
65
- throw o;
66
- }));
67
- } catch (o) {
68
- return Promise.reject(o);
69
- }
70
- };
71
- };
72
- const k = ({ schema: r, ...t }) => E({
73
- ...t,
74
- resolver: w(r)
75
- }), A = (r, t, s = !1) => {
76
- const [e, c] = d(s);
77
- return h(() => {
78
- const a = new IntersectionObserver((n) => {
79
- const i = n.filter((u) => u.isIntersecting).map((u) => u.target.id);
80
- c(i.some((u) => r.includes(u)));
81
- }, t), o = /* @__PURE__ */ new Map();
82
- return r.forEach((n) => {
83
- const i = document.getElementById(n);
84
- o.set(n, i), i && a.observe(i);
1
+ import { u as O } from "./useDevice-L83kSsN7.js";
2
+ import * as l from "react";
3
+ import { useState as i, useEffect as b } from "react";
4
+ import { u as f } from "./useDebounce-DyvGYvL9.js";
5
+ import { d as V, a as w, b as C, c as D, e as k } from "./useDebounce-DyvGYvL9.js";
6
+ const d = (s = !1) => {
7
+ const [t, o] = l.useState(s);
8
+ return [t, (u) => o((r) => u ?? !r)];
9
+ }, I = (s, t, o = !1) => {
10
+ const [n, u] = i(o);
11
+ return b(() => {
12
+ const r = new IntersectionObserver((e) => {
13
+ const c = e.filter((a) => a.isIntersecting).map((a) => a.target.id);
14
+ u(c.some((a) => s.includes(a)));
15
+ }, t), m = /* @__PURE__ */ new Map();
16
+ return s.forEach((e) => {
17
+ const c = document.getElementById(e);
18
+ m.set(e, c), c && r.observe(c);
85
19
  }), () => {
86
- a.disconnect();
20
+ r.disconnect();
87
21
  };
88
- }, [r, t]), e;
89
- }, I = (r) => {
22
+ }, [s, t]), n;
23
+ }, p = (s) => {
90
24
  var t;
91
- return (t = Object.values(r)) == null ? void 0 : t.reduce((s, e) => s + (e == null ? void 0 : e.progress), 0);
92
- }, D = ({
93
- control: r,
25
+ return (t = Object.values(s)) == null ? void 0 : t.reduce((o, n) => o + (n == null ? void 0 : n.progress), 0);
26
+ }, S = ({
27
+ control: s,
94
28
  schema: t,
95
- fields: s
29
+ fields: o
96
30
  }) => {
97
- const [e, c] = d(s), a = V({ control: r });
98
- return h(() => {
99
- c(
100
- (o) => o == null ? void 0 : o.map((n) => t.shape[n.name].safeParse(a[n.name]).success && a[n.name] && a[n.name] !== "" ? { ...n, progress: n.maxPercent } : { ...n, progress: 0 })
31
+ const [n, u] = i(o), r = f({ control: s });
32
+ return b(() => {
33
+ u(
34
+ (m) => m == null ? void 0 : m.map((e) => t.shape[e.name].safeParse(r[e.name]).success && r[e.name] && r[e.name] !== "" ? { ...e, progress: e.maxPercent } : { ...e, progress: 0 })
101
35
  );
102
- }, [a]), I(e);
36
+ }, [r]), p(n);
103
37
  };
104
38
  export {
105
- F as debounce,
106
- C as useBoolean,
107
- W as useClickOutside,
108
- k as useControlledForm,
109
- R as useDebounceCallback,
110
- q as useDebounceValue,
111
- U as useDevice,
112
- D as useFieldsProgress,
113
- A as useObserveElements
39
+ V as debounce,
40
+ d as useBoolean,
41
+ w as useClickOutside,
42
+ C as useControlledForm,
43
+ D as useDebounceCallback,
44
+ k as useDebounceValue,
45
+ O as useDevice,
46
+ S as useFieldsProgress,
47
+ I as useObserveElements
114
48
  };
115
49
  //# sourceMappingURL=hooks.js.map
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../lib/shared/hooks/useBoolean.ts","../node_modules/@hookform/resolvers/dist/resolvers.mjs","../node_modules/@hookform/resolvers/zod/dist/zod.mjs","../lib/shared/hooks/useControlledForm.ts","../lib/shared/hooks/useObserveElements.ts","../lib/shared/hooks/useFieldsProgress.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\ntype UseBooleanReturn = [value: boolean, action: (val?: boolean) => void]\n\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = React.useState(initialValue)\n const action = (val?: boolean) => setValue((prevValue) => val ?? !prevValue)\n\n return [value, action]\n}\n","import{get as t,set as e}from\"react-hook-form\";const s=(e,s,o)=>{if(e&&\"reportValidity\"in e){const r=t(o,s);e.setCustomValidity(r&&r.message||\"\"),e.reportValidity()}},o=(t,e)=>{for(const o in e.fields){const r=e.fields[o];r&&r.ref&&\"reportValidity\"in r.ref?s(r.ref,o,t):r.refs&&r.refs.forEach(e=>s(e,o,t))}},r=(s,r)=>{r.shouldUseNativeValidation&&o(s,r);const f={};for(const o in s){const n=t(r.fields,o),a=Object.assign(s[o]||{},{ref:n&&n.ref});if(i(r.names||Object.keys(s),o)){const s=Object.assign({},t(f,o));e(s,\"root\",a),e(f,o,s)}else e(f,o,a)}return f},i=(t,e)=>t.some(t=>t.startsWith(e+\".\"));export{r as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";var n=function(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n},t=function(o,t,s){return void 0===s&&(s={}),function(i,a,u){try{return Promise.resolve(function(e,n){try{var a=Promise.resolve(o[\"sync\"===s.mode?\"parse\":\"parseAsync\"](i,t)).then(function(e){return u.shouldUseNativeValidation&&r({},u),{errors:{},values:s.raw?i:e}})}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){if(function(r){return Array.isArray(null==r?void 0:r.errors)}(r))return{values:{},errors:e(n(r.errors,!u.shouldUseNativeValidation&&\"all\"===u.criteriaMode),u)};throw r}))}catch(r){return Promise.reject(r)}}};export{t as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n","'use client'\n\nimport { useForm, type UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { type TypeOf, type ZodTypeAny } from 'zod'\n\ninterface UseControlledForm<T extends ZodTypeAny> extends UseFormProps<TypeOf<T>> {\n schema: T\n}\n\nexport const useControlledForm = <T extends ZodTypeAny>({ schema, ...formConfig }: UseControlledForm<T>) => {\n return useForm({\n ...formConfig,\n resolver: zodResolver(schema)\n })\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\nexport const useObserveElements = (ids: string[], options?: IntersectionObserverInit, initialState = false): boolean => {\n const [isVisible, setIsVisible] = useState(initialState)\n\n useEffect(() => {\n const observer = new IntersectionObserver((entries) => {\n const visibleIds = entries.filter((entry) => entry.isIntersecting).map((entry) => entry.target.id)\n setIsVisible(visibleIds.some((id) => ids.includes(id)))\n }, options)\n\n const elementsMap = new Map<string, HTMLElement | null>()\n\n ids.forEach((id) => {\n const element = document.getElementById(id)\n elementsMap.set(id, element)\n if (element) {\n observer.observe(element)\n }\n })\n\n return () => {\n observer.disconnect()\n }\n }, [ids, options])\n\n return isVisible\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\nimport { type Control, type FieldValues, type Path, useWatch } from 'react-hook-form'\nimport { type ZodObject, type ZodRawShape } from 'zod'\n\nexport interface ISubscribedField<T extends FieldValues> {\n name: Path<T>\n progress: number\n maxPercent: number\n}\n\ntype TUseFieldsProgress<T extends FieldValues, S extends ZodRawShape> = {\n control: Control<T>\n schema: ZodObject<S>\n fields: ISubscribedField<T>[]\n}\n\nconst formatProgress = <T extends FieldValues>(subscribeFields: ISubscribedField<T>[]) => {\n return Object.values(subscribeFields)?.reduce((acc, value) => {\n return acc + value?.progress\n }, 0)\n}\n\nexport const useFieldsProgress = <T extends FieldValues, S extends ZodRawShape>({\n control,\n schema,\n fields\n}: TUseFieldsProgress<T, S>): number => {\n const [subscribeFields, setSubscribeFields] = useState<ISubscribedField<T>[]>(fields)\n const watchedFields = useWatch({ control })\n\n useEffect(() => {\n setSubscribeFields((prevFields) =>\n prevFields?.map((field) => {\n const fieldSchema = schema.shape[field.name]\n const result = fieldSchema.safeParse(watchedFields[field.name])\n if (result.success && watchedFields[field.name] && watchedFields[field.name] !== '') {\n return { ...field, progress: field.maxPercent }\n } else {\n return { ...field, progress: 0 }\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [watchedFields])\n\n return formatProgress(subscribeFields)\n}\n"],"names":["useBoolean","initialValue","value","setValue","React","val","prevValue","s","e","o","r","t","f","n","i","a","u","c","useControlledForm","schema","formConfig","useForm","zodResolver","useObserveElements","ids","options","initialState","isVisible","setIsVisible","useState","useEffect","observer","entries","visibleIds","entry","id","elementsMap","element","formatProgress","subscribeFields","_a","acc","useFieldsProgress","control","fields","setSubscribeFields","watchedFields","useWatch","prevFields","field"],"mappings":"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","x_google_ignoreList":[1,2]}
1
+ {"version":3,"file":"hooks.js","sources":["../lib/shared/hooks/useBoolean.ts","../lib/shared/hooks/useObserveElements.ts","../lib/shared/hooks/useFieldsProgress.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\ntype UseBooleanReturn = [value: boolean, action: (val?: boolean) => void]\n\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = React.useState(initialValue)\n const action = (val?: boolean) => setValue((prevValue) => val ?? !prevValue)\n\n return [value, action]\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\nexport const useObserveElements = (ids: string[], options?: IntersectionObserverInit, initialState = false): boolean => {\n const [isVisible, setIsVisible] = useState(initialState)\n\n useEffect(() => {\n const observer = new IntersectionObserver((entries) => {\n const visibleIds = entries.filter((entry) => entry.isIntersecting).map((entry) => entry.target.id)\n setIsVisible(visibleIds.some((id) => ids.includes(id)))\n }, options)\n\n const elementsMap = new Map<string, HTMLElement | null>()\n\n ids.forEach((id) => {\n const element = document.getElementById(id)\n elementsMap.set(id, element)\n if (element) {\n observer.observe(element)\n }\n })\n\n return () => {\n observer.disconnect()\n }\n }, [ids, options])\n\n return isVisible\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\nimport { type Control, type FieldValues, type Path, useWatch } from 'react-hook-form'\nimport { type ZodObject, type ZodRawShape } from 'zod'\n\nexport interface ISubscribedField<T extends FieldValues> {\n name: Path<T>\n progress: number\n maxPercent: number\n}\n\ntype TUseFieldsProgress<T extends FieldValues, S extends ZodRawShape> = {\n control: Control<T>\n schema: ZodObject<S>\n fields: ISubscribedField<T>[]\n}\n\nconst formatProgress = <T extends FieldValues>(subscribeFields: ISubscribedField<T>[]) => {\n return Object.values(subscribeFields)?.reduce((acc, value) => {\n return acc + value?.progress\n }, 0)\n}\n\nexport const useFieldsProgress = <T extends FieldValues, S extends ZodRawShape>({\n control,\n schema,\n fields\n}: TUseFieldsProgress<T, S>): number => {\n const [subscribeFields, setSubscribeFields] = useState<ISubscribedField<T>[]>(fields)\n const watchedFields = useWatch({ control })\n\n useEffect(() => {\n setSubscribeFields((prevFields) =>\n prevFields?.map((field) => {\n const fieldSchema = schema.shape[field.name]\n const result = fieldSchema.safeParse(watchedFields[field.name])\n if (result.success && watchedFields[field.name] && watchedFields[field.name] !== '') {\n return { ...field, progress: field.maxPercent }\n } else {\n return { ...field, progress: 0 }\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [watchedFields])\n\n return formatProgress(subscribeFields)\n}\n"],"names":["useBoolean","initialValue","value","setValue","React","val","prevValue","useObserveElements","ids","options","initialState","isVisible","setIsVisible","useState","useEffect","observer","entries","visibleIds","entry","id","elementsMap","element","formatProgress","subscribeFields","_a","acc","useFieldsProgress","control","schema","fields","setSubscribeFields","watchedFields","useWatch","prevFields","field"],"mappings":";;;;;AAMa,MAAAA,IAAa,CAACC,IAAe,OAA4B;AACpE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAM,SAASH,CAAY;AAG9C,SAAA,CAACC,GAFO,CAACG,MAAkBF,EAAS,CAACG,MAAcD,KAAO,CAACC,CAAS,CAEtD;AACvB,GCPaC,IAAqB,CAACC,GAAeC,GAAoCC,IAAe,OAAmB;AACtH,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAASH,CAAY;AAEvD,SAAAI,EAAU,MAAM;AACd,UAAMC,IAAW,IAAI,qBAAqB,CAACC,MAAY;AACrD,YAAMC,IAAaD,EAAQ,OAAO,CAACE,MAAUA,EAAM,cAAc,EAAE,IAAI,CAACA,MAAUA,EAAM,OAAO,EAAE;AACpF,MAAAN,EAAAK,EAAW,KAAK,CAACE,MAAOX,EAAI,SAASW,CAAE,CAAC,CAAC;AAAA,OACrDV,CAAO,GAEJW,wBAAkB,IAAgC;AAEpD,WAAAZ,EAAA,QAAQ,CAACW,MAAO;AACZ,YAAAE,IAAU,SAAS,eAAeF,CAAE;AAC9B,MAAAC,EAAA,IAAID,GAAIE,CAAO,GACvBA,KACFN,EAAS,QAAQM,CAAO;AAAA,IAC1B,CACD,GAEM,MAAM;AACX,MAAAN,EAAS,WAAW;AAAA,IACtB;AAAA,EAAA,GACC,CAACP,GAAKC,CAAO,CAAC,GAEVE;AACT,GCXMW,IAAiB,CAAwBC,MAA2C;;AACxF,UAAOC,IAAA,OAAO,OAAOD,CAAe,MAA7B,gBAAAC,EAAgC,OAAO,CAACC,GAAKvB,MAC3CuB,KAAMvB,KAAA,gBAAAA,EAAO,WACnB;AACL,GAEawB,IAAoB,CAA+C;AAAA,EAC9E,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AACF,MAAwC;AACtC,QAAM,CAACN,GAAiBO,CAAkB,IAAIjB,EAAgCgB,CAAM,GAC9EE,IAAgBC,EAAS,EAAE,SAAAL,GAAS;AAE1C,SAAAb,EAAU,MAAM;AACd,IAAAgB;AAAA,MAAmB,CAACG,MAClBA,KAAA,gBAAAA,EAAY,IAAI,CAACC,MACKN,EAAO,MAAMM,EAAM,IAAI,EAChB,UAAUH,EAAcG,EAAM,IAAI,CAAC,EACnD,WAAWH,EAAcG,EAAM,IAAI,KAAKH,EAAcG,EAAM,IAAI,MAAM,KACxE,EAAE,GAAGA,GAAO,UAAUA,EAAM,WAAW,IAEvC,EAAE,GAAGA,GAAO,UAAU,EAAE;AAAA,IAGrC;AAAA,EAAA,GAEC,CAACH,CAAa,CAAC,GAEXT,EAAeC,CAAe;AACvC;"}