@jenesei-software/jenesei-kit-react 2.2.1 → 2.3.0

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.
@@ -0,0 +1,3 @@
1
+ const U=require("./chunk-Dd8m0Ver.cjs"),v=require("./utils-DCIq-5FL.cjs"),C=require("./functions-CZrZU5U0.cjs"),f=require("./proxy-BDese6Pb.cjs"),O=require("./AnimatePresence-DeKd4Eek.cjs"),L=require("./outside-CXyCk8h1.cjs"),S=require("./hooks-use-deep-compare-memoize.cjs.js"),p=require("./dist-SXTf0-_7.cjs"),b=require("./v4-BDi_Luux.cjs");let x=require("react/jsx-runtime"),t=require("react");var h="fillDarkStable",I=v.CSS_CLASS.context.dialog,q=()=>I.layout,T=e=>({backgroundColor:v.CSS_VARS.palette.fillSecondaryLightStable,zIndex:e.zIndex}),M=e=>({maxWidth:e.propsDialog?.maxWidth||"max-content",maxHeight:e.propsDialog?.maxHeight||"max-content",borderRadius:e.propsDialog?.borderRadius||"12px",background:e.propsDialog?.background?v.CSS_VARS.palette[e.propsDialog.background]:v.CSS_VARS.palette[h],padding:e.propsDialog?.padding||"20px"}),y=p.createContext(null),k=e=>{const[a,l]=(0,t.useState)([]),c=q(),d=(0,t.useCallback)(i=>{l(s=>{const u=s.find(o=>o.id===i);if(u===void 0)return s;const n=u.index;return n===void 0?s:s.filter(o=>o.id!==i).map(o=>{const _=o.index;return _===void 0?o:{...o,index:_>n?_-1:o.index}})})},[]),g=(0,t.useCallback)(i=>{l(s=>s.map(u=>u.id===i.id?{...u,...i}:u))},[]),m=(0,t.useCallback)(i=>{const s=i.id;l(u=>{const n=u.findIndex(_=>_.id===s);let o;if(n!==-1)o=[...u],o[n]={...i,id:s,index:u[n].index};else{o=u.map(E=>{const R=E.index;return R===void 0?E:{...E,index:R+1}});const _={...i,id:s,index:0};o.unshift(_)}return o})},[]),r=(0,t.useMemo)(()=>a.length,[a.length]),D=(0,t.useMemo)(()=>e.zIndex,[e.zIndex]);return(0,t.useEffect)(()=>()=>{l([])},[]),(0,x.jsxs)(y.Provider,{value:{add:m,remove:d,update:g,dialogHistory:a},children:[(0,x.jsx)(O.AnimatePresence,{children:r&&(0,x.jsx)(f.motion.div,{className:c,style:T({zIndex:D}),initial:{opacity:0},exit:{opacity:0},animate:{opacity:1},transition:{type:"spring",duration:.4},children:[...a].reverse().map(i=>(0,x.jsx)(N,{index:i.index,props:i.props,id:i.id,onRemove:i.onRemove},i.id))})}),e.children]})},P=e=>{const[a,l]=(0,t.useState)(!0),c=(0,t.useMemo)(()=>({...M({propsDialog:e.props?.propsDialog})}),[e.props?.propsDialog]),d=(0,t.useMemo)(()=>({position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:e.index===0?"auto":"none"}),[e.index]),g=(0,t.useMemo)(()=>e.props?.propsDialog?.isRemoveOnOutsideClick??!0,[e.props?.propsDialog?.isRemoveOnOutsideClick]),m=(0,t.useCallback)(()=>{e.props?.onRemove?.(),e.onRemove?.()},[e.onRemove,e.props?.onRemove]),r=e.props?.content,D=(0,t.useMemo)(()=>e.id===void 0||r===void 0?null:(0,x.jsx)(r,{remove:m,isAnimating:a,propsCustom:e.props?.propsCustom,id:e.id}),[r,a,e.props?.propsCustom,m,e.id]);return e.index!==void 0&&(0,x.jsx)("div",{style:d,children:(0,x.jsx)(L.Outside,{onOutsideClick:()=>e.index===0&&g&&m?.(),children:(0,x.jsx)(f.motion.dialog,{className:C.setClasses([I.element]),initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},onAnimationComplete:()=>l(!1),transition:{type:"spring",duration:.3,delay:.4},style:c,children:D},e.id)})})},N=(0,t.memo)(P),A=e=>{const a=p.useContextSelector(y,l=>l?e.reduce((c,d)=>(c[d]=l[d],c),{}):null);if(!a)throw new Error("useDialogs must be used within an DialogContext");return a},j=e=>{const{add:a,remove:l,update:c,dialogHistory:d}=A(["add","remove","update","dialogHistory"]),[g,m]=(0,t.useState)(null),r=(0,t.useRef)(null),D=S.useDeepCompareMemoize(e),i=(0,t.useMemo)(()=>g!==null&&d.some(n=>n.id===g),[d,g]),s=(0,t.useCallback)(()=>{const n=r.current;n&&(m(null),r.current=null,l(n))},[l]),u=(0,t.useCallback)(()=>{if(r.current)return;const n=b.v4();m(n),r.current=n,a({id:n,props:D,onRemove:()=>{s(),D?.onRemove?.()}})},[a,D,s]);return(0,t.useEffect)(()=>{const n=r.current;n&&(d.some(o=>o.id===n)||(m(null),r.current=null))},[d]),(0,t.useEffect)(()=>{r.current&&c({id:r.current,props:D})},[D,c]),{add:u,remove:s,id:g,isOpen:i}};Object.defineProperty(exports,"ProviderDialog",{enumerable:!0,get:function(){return k}});Object.defineProperty(exports,"useDialog",{enumerable:!0,get:function(){return j}});Object.defineProperty(exports,"useDialogs",{enumerable:!0,get:function(){return A}});
2
+
3
+ //# sourceMappingURL=context-dialog-DctdSBC8.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-dialog-DctdSBC8.cjs","names":[],"sources":["../src/contexts/context-dialog/context.constants.ts","../src/contexts/context-dialog/context.styles.tsx","../src/contexts/context-dialog/context.tsx","../src/contexts/context-dialog/context.hooks.ts"],"sourcesContent":["import { IThemePalette } from '@local/styles/utils';\n\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT = 0.3;\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT = 0.4;\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS: string = '12px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING: string = '20px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND: IThemePalette = 'fillDarkStable';\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\n\nimport { CSSProperties } from 'react';\n\nimport {\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n} from './context.constants';\nimport { IDialogElementStyle, IDialogLayoutStyle } from './context.types';\n\nexport const DialogClass = CSS_CLASS.context.dialog;\n\nexport const getDialogLayoutClassName = () => DialogClass.layout;\n\nexport const getDialogLayoutStyle = (props: IDialogLayoutStyle): CSSProperties => ({\n backgroundColor: CSS_VARS.palette.fillSecondaryLightStable,\n zIndex: props.zIndex,\n});\n\nexport const getDialogElementStyle = (props: IDialogElementStyle): CSSProperties => ({\n maxWidth: props.propsDialog?.maxWidth || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n maxHeight: props.propsDialog?.maxHeight || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n borderRadius: props.propsDialog?.borderRadius || DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n background: props.propsDialog?.background\n ? CSS_VARS.palette[props.propsDialog.background]\n : CSS_VARS.palette[DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND],\n padding: props.propsDialog?.padding || DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n});\n","import { Outside } from '@local/areas/outside';\nimport { setClasses } from '@local/styles/utils/functions';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { CSSProperties, FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\n\nimport { DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT, DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT } from './context.constants';\nimport { DialogClass, getDialogElementStyle, getDialogLayoutClassName, getDialogLayoutStyle } from './context.styles';\nimport { IDialogContent, IDialogContext, IDialogElement, IDialogProvider } from './context.types';\n\nexport const DialogContext = createContext<IDialogContext | null>(null);\n\nexport const ProviderDialog: FC<IDialogProvider> = (props) => {\n const [dialogHistory, setDialogHistory] = useState<IDialogContent[]>([]);\n const classNameDialogLayout = getDialogLayoutClassName();\n\n const remove: IDialogContext['remove'] = useCallback((id) => {\n setDialogHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (itemToRemove === undefined) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n if (indexToRemove === undefined) return prev;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => {\n const index = item.index;\n if (index === undefined) return item;\n\n return {\n ...item,\n index: index > indexToRemove ? index - 1 : item.index,\n };\n });\n\n return updatedHistory;\n });\n }, []);\n\n const update: IDialogContext['update'] = useCallback((dialog) => {\n setDialogHistory((prev) => {\n return prev.map((item) => {\n if (item.id === dialog.id) {\n return { ...item, ...dialog };\n }\n return item;\n });\n });\n }, []);\n\n const add: IDialogContext['add'] = useCallback((dialog) => {\n const id = dialog.id;\n\n setDialogHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: IDialogContent[];\n\n if (existingIndex !== -1) {\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...dialog, id, index: prev[existingIndex].index };\n } else {\n updatedHistory = prev.map((item) => {\n const index = item.index;\n if (index === undefined) return item;\n\n return {\n ...item,\n index: index + 1,\n };\n });\n const newContent = { ...dialog, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n }, []);\n\n const dialogHistoryLength = useMemo(() => dialogHistory.length, [dialogHistory.length]);\n const zIndex = useMemo(() => props.zIndex, [props.zIndex]);\n\n useEffect(() => {\n return () => {\n setDialogHistory([]);\n };\n }, []);\n return (\n <DialogContext.Provider value={{ add, remove, update, dialogHistory }}>\n <AnimatePresence>\n {dialogHistoryLength && (\n <motion.div\n className={classNameDialogLayout}\n style={getDialogLayoutStyle({ zIndex })}\n initial={{\n opacity: 0,\n }}\n exit={{\n opacity: 0,\n }}\n animate={{\n opacity: 1,\n }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT }}\n >\n {[...dialogHistory].reverse().map((dialog) => {\n return (\n <MemoizedDialogElement\n key={dialog.id}\n index={dialog.index}\n props={dialog.props}\n id={dialog.id}\n onRemove={dialog.onRemove}\n />\n );\n })}\n </motion.div>\n )}\n </AnimatePresence>\n\n {props.children}\n </DialogContext.Provider>\n );\n};\n\nconst DialogElement = (props: IDialogElement<Record<string, unknown>>) => {\n const [isAnimating, setIsAnimating] = useState(true);\n const styleDialogElement = useMemo(() => {\n return {\n ...getDialogElementStyle({\n propsDialog: props.props?.propsDialog,\n }),\n };\n }, [props.props?.propsDialog]);\n const styleDialogLayer = useMemo<CSSProperties>(() => {\n return {\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: props.index === 0 ? 'auto' : 'none',\n };\n }, [props.index]);\n\n const isRemoveOnOutsideClick = useMemo(\n () => props.props?.propsDialog?.isRemoveOnOutsideClick ?? true,\n [props.props?.propsDialog?.isRemoveOnOutsideClick],\n );\n const onRemove = useCallback(() => {\n props.props?.onRemove?.();\n props.onRemove?.();\n }, [props.onRemove, props.props?.onRemove]);\n\n const Content = props.props?.content;\n const children = useMemo(() => {\n if (props.id === undefined || Content === undefined) return null;\n\n return <Content remove={onRemove} isAnimating={isAnimating} propsCustom={props.props?.propsCustom} id={props.id} />;\n }, [Content, isAnimating, props.props?.propsCustom, onRemove, props.id]);\n return (\n props.index !== undefined && (\n <div style={styleDialogLayer}>\n <Outside onOutsideClick={() => props.index === 0 && isRemoveOnOutsideClick && onRemove?.()}>\n <motion.dialog\n key={props.id}\n className={setClasses([DialogClass.element])}\n initial={{\n opacity: 0,\n scale: 0.8,\n }}\n animate={{\n opacity: 1,\n scale: 1,\n }}\n onAnimationComplete={() => setIsAnimating(false)}\n transition={{\n type: 'spring',\n duration: DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n delay: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n }}\n style={styleDialogElement}\n >\n {children}\n </motion.dialog>\n </Outside>\n </div>\n )\n );\n};\nconst MemoizedDialogElement = memo(DialogElement);\n","import { useDeepCompareMemoize } from '@local/hooks/use-deep-compare-memoize';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useContextSelector } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DialogContext } from './context';\nimport { IDialogContext, IDialogItem, IUseDialog, IUseDialogDependencies } from './context.types';\n\nexport const useDialogs = (props: IUseDialogDependencies): IDialogContext => {\n const context = useContextSelector(DialogContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useDialogs must be used within an DialogContext');\n }\n return context;\n};\n\nexport const useDialog = <T extends object = Record<string, unknown>>(props?: IUseDialog<T>): IDialogItem => {\n const { add, remove, update, dialogHistory } = useDialogs(['add', 'remove', 'update', 'dialogHistory']);\n const [id, setId] = useState<string | null>(null);\n const refId = useRef<string | null>(null);\n const propsMemo = useDeepCompareMemoize(props);\n const isOpen = useMemo(() => {\n return id !== null && dialogHistory.some((dialog) => dialog.id === id);\n }, [dialogHistory, id]);\n\n const localRemove = useCallback(() => {\n const dialogId = refId.current;\n\n if (!dialogId) return;\n\n setId(null);\n refId.current = null;\n remove(dialogId);\n }, [remove]);\n\n const localAdd: IDialogItem['add'] = useCallback(() => {\n if (refId.current) return;\n const dialogId = uuidv4();\n setId(dialogId);\n refId.current = dialogId;\n add({\n id: dialogId,\n props: propsMemo as IUseDialog<Record<string, unknown>>,\n onRemove: () => {\n localRemove();\n propsMemo?.onRemove?.();\n },\n });\n }, [add, propsMemo, localRemove]);\n\n useEffect(() => {\n const dialogId = refId.current;\n\n if (!dialogId) return;\n\n if (!dialogHistory.some((dialog) => dialog.id === dialogId)) {\n setId(null);\n refId.current = null;\n }\n }, [dialogHistory]);\n\n useEffect(() => {\n if (refId.current) {\n update({ id: refId.current, props: propsMemo as IUseDialog<Record<string, unknown>> });\n }\n }, [propsMemo, update]);\n\n return { add: localAdd, remove: localRemove, id: id, isOpen: isOpen };\n};\n"],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ import { n as O, r as R } from "./utils-BRgi6734.js";
2
+ import { t as C } from "./functions-DzX-pTN8.js";
3
+ import { t as y } from "./proxy-BFHkqO7P.js";
4
+ import { t as T } from "./AnimatePresence-BWc2vFe-.js";
5
+ import { t as h } from "./outside-DopxX0PZ.js";
6
+ import { useDeepCompareMemoize as S } from "./hooks-use-deep-compare-memoize.es.js";
7
+ import { n as N, t as M } from "./dist-ck-7oUux.js";
8
+ import { t as U } from "./v4-CYaPyb-W.js";
9
+ import { jsx as x, jsxs as b } from "react/jsx-runtime";
10
+ import { memo as H, useCallback as p, useEffect as f, useMemo as v, useRef as P, useState as I } from "react";
11
+ var k = "fillDarkStable", A = O.context.dialog, G = () => A.layout, V = (e) => ({
12
+ backgroundColor: R.palette.fillSecondaryLightStable,
13
+ zIndex: e.zIndex
14
+ }), z = (e) => ({
15
+ maxWidth: e.propsDialog?.maxWidth || "max-content",
16
+ maxHeight: e.propsDialog?.maxHeight || "max-content",
17
+ borderRadius: e.propsDialog?.borderRadius || "12px",
18
+ background: e.propsDialog?.background ? R.palette[e.propsDialog.background] : R.palette[k],
19
+ padding: e.propsDialog?.padding || "20px"
20
+ }), L = M(null), ee = (e) => {
21
+ const [a, d] = I([]), u = G(), l = p((n) => {
22
+ d((r) => {
23
+ const s = r.find((o) => o.id === n);
24
+ if (s === void 0) return r;
25
+ const t = s.index;
26
+ return t === void 0 ? r : r.filter((o) => o.id !== n).map((o) => {
27
+ const g = o.index;
28
+ return g === void 0 ? o : {
29
+ ...o,
30
+ index: g > t ? g - 1 : o.index
31
+ };
32
+ });
33
+ });
34
+ }, []), D = p((n) => {
35
+ d((r) => r.map((s) => s.id === n.id ? {
36
+ ...s,
37
+ ...n
38
+ } : s));
39
+ }, []), c = p((n) => {
40
+ const r = n.id;
41
+ d((s) => {
42
+ const t = s.findIndex((g) => g.id === r);
43
+ let o;
44
+ if (t !== -1)
45
+ o = [...s], o[t] = {
46
+ ...n,
47
+ id: r,
48
+ index: s[t].index
49
+ };
50
+ else {
51
+ o = s.map((E) => {
52
+ const _ = E.index;
53
+ return _ === void 0 ? E : {
54
+ ...E,
55
+ index: _ + 1
56
+ };
57
+ });
58
+ const g = {
59
+ ...n,
60
+ id: r,
61
+ index: 0
62
+ };
63
+ o.unshift(g);
64
+ }
65
+ return o;
66
+ });
67
+ }, []), i = v(() => a.length, [a.length]), m = v(() => e.zIndex, [e.zIndex]);
68
+ return f(() => () => {
69
+ d([]);
70
+ }, []), /* @__PURE__ */ b(L.Provider, {
71
+ value: {
72
+ add: c,
73
+ remove: l,
74
+ update: D,
75
+ dialogHistory: a
76
+ },
77
+ children: [/* @__PURE__ */ x(T, { children: i && /* @__PURE__ */ x(y.div, {
78
+ className: u,
79
+ style: V({ zIndex: m }),
80
+ initial: { opacity: 0 },
81
+ exit: { opacity: 0 },
82
+ animate: { opacity: 1 },
83
+ transition: {
84
+ type: "spring",
85
+ duration: 0.4
86
+ },
87
+ children: [...a].reverse().map((n) => /* @__PURE__ */ x(w, {
88
+ index: n.index,
89
+ props: n.props,
90
+ id: n.id,
91
+ onRemove: n.onRemove
92
+ }, n.id))
93
+ }) }), e.children]
94
+ });
95
+ }, F = (e) => {
96
+ const [a, d] = I(!0), u = v(() => ({ ...z({ propsDialog: e.props?.propsDialog }) }), [e.props?.propsDialog]), l = v(() => ({
97
+ position: "absolute",
98
+ inset: 0,
99
+ display: "flex",
100
+ alignItems: "center",
101
+ justifyContent: "center",
102
+ pointerEvents: e.index === 0 ? "auto" : "none"
103
+ }), [e.index]), D = v(() => e.props?.propsDialog?.isRemoveOnOutsideClick ?? !0, [e.props?.propsDialog?.isRemoveOnOutsideClick]), c = p(() => {
104
+ e.props?.onRemove?.(), e.onRemove?.();
105
+ }, [e.onRemove, e.props?.onRemove]), i = e.props?.content, m = v(() => e.id === void 0 || i === void 0 ? null : /* @__PURE__ */ x(i, {
106
+ remove: c,
107
+ isAnimating: a,
108
+ propsCustom: e.props?.propsCustom,
109
+ id: e.id
110
+ }), [
111
+ i,
112
+ a,
113
+ e.props?.propsCustom,
114
+ c,
115
+ e.id
116
+ ]);
117
+ return e.index !== void 0 && /* @__PURE__ */ x("div", {
118
+ style: l,
119
+ children: /* @__PURE__ */ x(h, {
120
+ onOutsideClick: () => e.index === 0 && D && c?.(),
121
+ children: /* @__PURE__ */ x(y.dialog, {
122
+ className: C([A.element]),
123
+ initial: {
124
+ opacity: 0,
125
+ scale: 0.8
126
+ },
127
+ animate: {
128
+ opacity: 1,
129
+ scale: 1
130
+ },
131
+ onAnimationComplete: () => d(!1),
132
+ transition: {
133
+ type: "spring",
134
+ duration: 0.3,
135
+ delay: 0.4
136
+ },
137
+ style: u,
138
+ children: m
139
+ }, e.id)
140
+ })
141
+ });
142
+ }, w = H(F), j = (e) => {
143
+ const a = N(L, (d) => d ? e.reduce((u, l) => (u[l] = d[l], u), {}) : null);
144
+ if (!a) throw new Error("useDialogs must be used within an DialogContext");
145
+ return a;
146
+ }, te = (e) => {
147
+ const { add: a, remove: d, update: u, dialogHistory: l } = j([
148
+ "add",
149
+ "remove",
150
+ "update",
151
+ "dialogHistory"
152
+ ]), [D, c] = I(null), i = P(null), m = S(e), n = v(() => D !== null && l.some((t) => t.id === D), [l, D]), r = p(() => {
153
+ const t = i.current;
154
+ t && (c(null), i.current = null, d(t));
155
+ }, [d]), s = p(() => {
156
+ if (i.current) return;
157
+ const t = U();
158
+ c(t), i.current = t, a({
159
+ id: t,
160
+ props: m,
161
+ onRemove: () => {
162
+ r(), m?.onRemove?.();
163
+ }
164
+ });
165
+ }, [
166
+ a,
167
+ m,
168
+ r
169
+ ]);
170
+ return f(() => {
171
+ const t = i.current;
172
+ t && (l.some((o) => o.id === t) || (c(null), i.current = null));
173
+ }, [l]), f(() => {
174
+ i.current && u({
175
+ id: i.current,
176
+ props: m
177
+ });
178
+ }, [m, u]), {
179
+ add: s,
180
+ remove: r,
181
+ id: D,
182
+ isOpen: n
183
+ };
184
+ };
185
+ export {
186
+ j as n,
187
+ ee as r,
188
+ te as t
189
+ };
190
+
191
+ //# sourceMappingURL=context-dialog-DzwL2ElF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-dialog-DzwL2ElF.js","names":[],"sources":["../src/contexts/context-dialog/context.constants.ts","../src/contexts/context-dialog/context.styles.tsx","../src/contexts/context-dialog/context.tsx","../src/contexts/context-dialog/context.hooks.ts"],"sourcesContent":["import { IThemePalette } from '@local/styles/utils';\n\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT = 0.3;\nexport const DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT = 0.4;\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH: string = 'max-content';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS: string = '12px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING: string = '20px';\nexport const DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND: IThemePalette = 'fillDarkStable';\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\n\nimport { CSSProperties } from 'react';\n\nimport {\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n} from './context.constants';\nimport { IDialogElementStyle, IDialogLayoutStyle } from './context.types';\n\nexport const DialogClass = CSS_CLASS.context.dialog;\n\nexport const getDialogLayoutClassName = () => DialogClass.layout;\n\nexport const getDialogLayoutStyle = (props: IDialogLayoutStyle): CSSProperties => ({\n backgroundColor: CSS_VARS.palette.fillSecondaryLightStable,\n zIndex: props.zIndex,\n});\n\nexport const getDialogElementStyle = (props: IDialogElementStyle): CSSProperties => ({\n maxWidth: props.propsDialog?.maxWidth || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_WIDTH,\n maxHeight: props.propsDialog?.maxHeight || DEFAULT_PROVIDER_DIALOG_ELEMENT_MAX_HEIGHT,\n borderRadius: props.propsDialog?.borderRadius || DEFAULT_PROVIDER_DIALOG_ELEMENT_BORDER_RADIUS,\n background: props.propsDialog?.background\n ? CSS_VARS.palette[props.propsDialog.background]\n : CSS_VARS.palette[DEFAULT_PROVIDER_DIALOG_ELEMENT_BACKGROUND],\n padding: props.propsDialog?.padding || DEFAULT_PROVIDER_DIALOG_ELEMENT_PADDING,\n});\n","import { Outside } from '@local/areas/outside';\nimport { setClasses } from '@local/styles/utils/functions';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { CSSProperties, FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\n\nimport { DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT, DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT } from './context.constants';\nimport { DialogClass, getDialogElementStyle, getDialogLayoutClassName, getDialogLayoutStyle } from './context.styles';\nimport { IDialogContent, IDialogContext, IDialogElement, IDialogProvider } from './context.types';\n\nexport const DialogContext = createContext<IDialogContext | null>(null);\n\nexport const ProviderDialog: FC<IDialogProvider> = (props) => {\n const [dialogHistory, setDialogHistory] = useState<IDialogContent[]>([]);\n const classNameDialogLayout = getDialogLayoutClassName();\n\n const remove: IDialogContext['remove'] = useCallback((id) => {\n setDialogHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (itemToRemove === undefined) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n if (indexToRemove === undefined) return prev;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => {\n const index = item.index;\n if (index === undefined) return item;\n\n return {\n ...item,\n index: index > indexToRemove ? index - 1 : item.index,\n };\n });\n\n return updatedHistory;\n });\n }, []);\n\n const update: IDialogContext['update'] = useCallback((dialog) => {\n setDialogHistory((prev) => {\n return prev.map((item) => {\n if (item.id === dialog.id) {\n return { ...item, ...dialog };\n }\n return item;\n });\n });\n }, []);\n\n const add: IDialogContext['add'] = useCallback((dialog) => {\n const id = dialog.id;\n\n setDialogHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: IDialogContent[];\n\n if (existingIndex !== -1) {\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...dialog, id, index: prev[existingIndex].index };\n } else {\n updatedHistory = prev.map((item) => {\n const index = item.index;\n if (index === undefined) return item;\n\n return {\n ...item,\n index: index + 1,\n };\n });\n const newContent = { ...dialog, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n }, []);\n\n const dialogHistoryLength = useMemo(() => dialogHistory.length, [dialogHistory.length]);\n const zIndex = useMemo(() => props.zIndex, [props.zIndex]);\n\n useEffect(() => {\n return () => {\n setDialogHistory([]);\n };\n }, []);\n return (\n <DialogContext.Provider value={{ add, remove, update, dialogHistory }}>\n <AnimatePresence>\n {dialogHistoryLength && (\n <motion.div\n className={classNameDialogLayout}\n style={getDialogLayoutStyle({ zIndex })}\n initial={{\n opacity: 0,\n }}\n exit={{\n opacity: 0,\n }}\n animate={{\n opacity: 1,\n }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT }}\n >\n {[...dialogHistory].reverse().map((dialog) => {\n return (\n <MemoizedDialogElement\n key={dialog.id}\n index={dialog.index}\n props={dialog.props}\n id={dialog.id}\n onRemove={dialog.onRemove}\n />\n );\n })}\n </motion.div>\n )}\n </AnimatePresence>\n\n {props.children}\n </DialogContext.Provider>\n );\n};\n\nconst DialogElement = (props: IDialogElement<Record<string, unknown>>) => {\n const [isAnimating, setIsAnimating] = useState(true);\n const styleDialogElement = useMemo(() => {\n return {\n ...getDialogElementStyle({\n propsDialog: props.props?.propsDialog,\n }),\n };\n }, [props.props?.propsDialog]);\n const styleDialogLayer = useMemo<CSSProperties>(() => {\n return {\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: props.index === 0 ? 'auto' : 'none',\n };\n }, [props.index]);\n\n const isRemoveOnOutsideClick = useMemo(\n () => props.props?.propsDialog?.isRemoveOnOutsideClick ?? true,\n [props.props?.propsDialog?.isRemoveOnOutsideClick],\n );\n const onRemove = useCallback(() => {\n props.props?.onRemove?.();\n props.onRemove?.();\n }, [props.onRemove, props.props?.onRemove]);\n\n const Content = props.props?.content;\n const children = useMemo(() => {\n if (props.id === undefined || Content === undefined) return null;\n\n return <Content remove={onRemove} isAnimating={isAnimating} propsCustom={props.props?.propsCustom} id={props.id} />;\n }, [Content, isAnimating, props.props?.propsCustom, onRemove, props.id]);\n return (\n props.index !== undefined && (\n <div style={styleDialogLayer}>\n <Outside onOutsideClick={() => props.index === 0 && isRemoveOnOutsideClick && onRemove?.()}>\n <motion.dialog\n key={props.id}\n className={setClasses([DialogClass.element])}\n initial={{\n opacity: 0,\n scale: 0.8,\n }}\n animate={{\n opacity: 1,\n scale: 1,\n }}\n onAnimationComplete={() => setIsAnimating(false)}\n transition={{\n type: 'spring',\n duration: DEFAULT_PROVIDER_DIALOG_DURATION_ELEMENT,\n delay: DEFAULT_PROVIDER_DIALOG_DURATION_LAYOUT,\n }}\n style={styleDialogElement}\n >\n {children}\n </motion.dialog>\n </Outside>\n </div>\n )\n );\n};\nconst MemoizedDialogElement = memo(DialogElement);\n","import { useDeepCompareMemoize } from '@local/hooks/use-deep-compare-memoize';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useContextSelector } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DialogContext } from './context';\nimport { IDialogContext, IDialogItem, IUseDialog, IUseDialogDependencies } from './context.types';\n\nexport const useDialogs = (props: IUseDialogDependencies): IDialogContext => {\n const context = useContextSelector(DialogContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useDialogs must be used within an DialogContext');\n }\n return context;\n};\n\nexport const useDialog = <T extends object = Record<string, unknown>>(props?: IUseDialog<T>): IDialogItem => {\n const { add, remove, update, dialogHistory } = useDialogs(['add', 'remove', 'update', 'dialogHistory']);\n const [id, setId] = useState<string | null>(null);\n const refId = useRef<string | null>(null);\n const propsMemo = useDeepCompareMemoize(props);\n const isOpen = useMemo(() => {\n return id !== null && dialogHistory.some((dialog) => dialog.id === id);\n }, [dialogHistory, id]);\n\n const localRemove = useCallback(() => {\n const dialogId = refId.current;\n\n if (!dialogId) return;\n\n setId(null);\n refId.current = null;\n remove(dialogId);\n }, [remove]);\n\n const localAdd: IDialogItem['add'] = useCallback(() => {\n if (refId.current) return;\n const dialogId = uuidv4();\n setId(dialogId);\n refId.current = dialogId;\n add({\n id: dialogId,\n props: propsMemo as IUseDialog<Record<string, unknown>>,\n onRemove: () => {\n localRemove();\n propsMemo?.onRemove?.();\n },\n });\n }, [add, propsMemo, localRemove]);\n\n useEffect(() => {\n const dialogId = refId.current;\n\n if (!dialogId) return;\n\n if (!dialogHistory.some((dialog) => dialog.id === dialogId)) {\n setId(null);\n refId.current = null;\n }\n }, [dialogHistory]);\n\n useEffect(() => {\n if (refId.current) {\n update({ id: refId.current, props: propsMemo as IUseDialog<Record<string, unknown>> });\n }\n }, [propsMemo, update]);\n\n return { add: localAdd, remove: localRemove, id: id, isOpen: isOpen };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-dialog-B3khh4eN.cjs");exports.ProviderDialog=e.ProviderDialog;exports.useDialog=e.useDialog;exports.useDialogs=e.useDialogs;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-dialog-DctdSBC8.cjs");exports.ProviderDialog=e.ProviderDialog;exports.useDialog=e.useDialog;exports.useDialogs=e.useDialogs;
@@ -1,4 +1,4 @@
1
- import { n as a, r, t as s } from "./context-dialog-CeqpejDW.js";
1
+ import { n as a, r, t as s } from "./context-dialog-DzwL2ElF.js";
2
2
  export {
3
3
  r as ProviderDialog,
4
4
  s as useDialog,
@@ -13,6 +13,7 @@ export type IDialogItem = {
13
13
  add: () => void;
14
14
  remove: () => void;
15
15
  id: string | null;
16
+ isOpen: boolean;
16
17
  };
17
18
  export type IDialogContent<T extends object = Record<string, unknown>> = {
18
19
  props?: IUseDialog<T>;
@@ -35,9 +36,10 @@ type IDialogDialogProps = {
35
36
  background?: IThemePalette;
36
37
  isRemoveOnOutsideClick?: boolean;
37
38
  };
38
- interface IDialogContentNodeProps<T extends object = Record<string, unknown>> {
39
+ export interface IDialogContentNodeProps<T extends object = Record<string, unknown>> {
39
40
  remove?: () => void;
40
41
  isAnimating?: boolean;
42
+ id: string;
41
43
  propsCustom?: T;
42
44
  }
43
45
  type IDialogContentNode<T extends object> = (props: IDialogContentNodeProps<T>) => ReactNode;
@@ -1,3 +1,3 @@
1
1
  export { ProviderDialog } from './context';
2
2
  export { useDialog, useDialogs } from './context.hooks';
3
- export type { IDialogProvider, IUseDialog } from './context.types';
3
+ export type { IDialogContentNodeProps, IDialogProvider, IUseDialog } from './context.types';
@@ -1 +1 @@
1
- {"version":3,"file":"icon-D2w7GViT.js","names":[],"sources":["../src/cores/consts.ts","../src/components/icon/component.hooks.tsx","../src/components/icon/component.tsx","../src/components/icon/component.consts.tsx","../src/components/icon/component.functions.tsx"],"sourcesContent":["import {\n IDatePickerTranslateInput,\n IDatePickerTranslateMonth,\n IDatePickerTranslateWeek,\n} from '@local/components/date-picker';\n\n\nexport const LOCALE_INPUT: IDatePickerTranslateInput = {\n day: 'ДД',\n month: 'ММ',\n year: 'ГГГГ',\n};\n\nexport const LOCALE_MONTHS: IDatePickerTranslateMonth[] = [\n {\n localeLong: 'Январь',\n localeShort: 'Янв',\n value: 'january',\n },\n {\n localeLong: 'February',\n localeShort: 'Feb',\n value: 'february',\n },\n {\n localeLong: 'March',\n localeShort: 'Mar',\n value: 'march',\n },\n {\n localeLong: 'April',\n localeShort: 'Apr',\n value: 'april',\n },\n {\n localeLong: 'May',\n localeShort: 'May',\n value: 'may',\n },\n {\n localeLong: 'June',\n localeShort: 'Jun',\n value: 'june',\n },\n {\n localeLong: 'July',\n localeShort: 'Jul',\n value: 'july',\n },\n {\n localeLong: 'August',\n localeShort: 'Aug',\n value: 'august',\n },\n {\n localeLong: 'September',\n localeShort: 'Sep',\n value: 'september',\n },\n {\n localeLong: 'October',\n localeShort: 'Oct',\n value: 'october',\n },\n {\n localeLong: 'November',\n localeShort: 'Nov',\n value: 'november',\n },\n {\n localeLong: 'December',\n localeShort: 'Dec',\n value: 'december',\n },\n];\nexport const LOCALE_WEEKS: IDatePickerTranslateWeek[] = [\n {\n localeLong: 'Monday',\n localeShort: 'Пн',\n value: 'mo',\n },\n {\n localeLong: 'Tuesday',\n localeShort: 'Tue',\n value: 'tu',\n },\n {\n localeLong: 'Wednesday',\n localeShort: 'Wed',\n value: 'we',\n },\n {\n localeLong: 'Thursday',\n localeShort: 'Thu',\n value: 'th',\n },\n {\n localeLong: 'Friday',\n localeShort: 'Fri',\n value: 'fr',\n },\n {\n localeLong: 'Saturday',\n localeShort: 'Sat',\n value: 'sa',\n },\n {\n localeLong: 'Sunday',\n localeShort: 'Sun',\n value: 'su',\n },\n];\n\nexport const LIBRARY_VERSION = import.meta.env.VITE_APP_VERSION;\nexport const ICON_VERSION = import.meta.env.VITE_ICON_VERSION;\n\n// export const LIST_TYPOGRAPHY_VARIANTS_DEFAULT: IThemeTypographyHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n","import { logger } from '@local/cores/logger';\n\nimport { useEffect, useState } from 'react';\n\nexport function useInjectSprites(urls: string[]) {\n useEffect(() => {\n const containers: HTMLDivElement[] = [];\n\n urls.forEach(async (url) => {\n try {\n const res = await fetch(url);\n if (!res.ok) {\n logger.error(`Failed to load sprite: ${url}`);\n return;\n }\n const text = await res.text();\n\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n\n document.body.prepend(div);\n containers.push(div);\n } catch (err) {\n logger.error(`Error loading sprite ${url}`, err);\n }\n });\n\n return () => {\n containers.forEach((div) => {\n div.remove();\n });\n };\n }, [urls]);\n}\n\ntype SpriteStatus = {\n promise: Promise<void>;\n loaded: boolean;\n error?: Error;\n};\n\nconst loadedSprites = new Map<string, SpriteStatus>();\n\nexport function useLazyInjectSprite(url: string) {\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n\n // Проверяем актуальный статус прямо здесь\n const status = loadedSprites.get(url);\n if (status?.loaded) {\n setLoaded(true);\n setError(status.error ?? null);\n return;\n }\n\n let promise: Promise<void>;\n\n if (!status) {\n const p = (async () => {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`Failed to load sprite: ${url}`);\n const text = await res.text();\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n document.body.prepend(div);\n })();\n\n loadedSprites.set(url, { promise: p, loaded: false });\n\n p.then(() => {\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true });\n }).catch((err) => {\n const errorObj = err instanceof Error ? err : new Error(String(err));\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true, error: errorObj });\n });\n\n promise = p;\n } else {\n promise = status.promise;\n }\n\n promise\n .then(() => {\n if (!isMounted) return;\n const s = loadedSprites.get(url);\n setLoaded(s?.loaded ?? true);\n setError(s?.error ?? null);\n })\n .catch(() => {}); // Ошибка уже сохранена в статусе\n\n return () => {\n isMounted = false;\n };\n }, [url]);\n\n return { loaded, error };\n}\n","import { Skeleton } from '@local/areas/skeleton';\nimport { ICON_VERSION } from '@local/cores/consts';\nimport { CSS_VARS } from '@local/styles/utils';\nimport { CSS_CLASS, CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { useMemo } from 'react';\n\nimport { useLazyInjectSprite } from './component.hooks';\nimport { IIcon } from './component.types';\n\nexport const Icon = (props: IIcon) => {\n const iconId = useMemo(() => getIconId({ type: props.type, name: props.name }), [props.name, props.type]);\n const spriteUrl = useMemo(() => getSpriteUrl({ type: props.type }), [props.type]);\n const { loaded, error } = useLazyInjectSprite(spriteUrl);\n\n const configSkeleton = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.skeleton, props.className]),\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.skeletonHeightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.skeletonOrder]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size]);\n\n const configIcon = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.root, CSS_CLASS.transition.icon, props.className]),\n\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.color]: props.color ? CSS_VARS.palette[props.color] : 'inherit',\n [CSS_VARS_RAW.component.icon.heightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.turn]: props.turn ? `${props.turn}deg` : '0deg',\n [CSS_VARS_RAW.component.icon.order]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size, props.color, props.turn]);\n\n if (!loaded || error)\n return (\n <Skeleton\n color={props.color ?? undefined}\n className={configSkeleton.className}\n style={configSkeleton.style}\n visible={false}\n />\n );\n\n return (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n xmlns='http://www.w3.org/2000/svg'\n className={configIcon.className}\n style={configIcon.style}\n onClick={props.onClick}\n onKeyDown={(e) => {\n if (props.onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n props.onClick(e as any);\n }\n }}\n tabIndex={props.tabIndex}\n role={props.onClick ? 'button' : undefined}\n >\n <title>{props.name}</title>\n <use href={iconId} />\n </svg>\n );\n};\n\nexport function getIconId(props: { type: string; name: string }) {\n return `#${props.type}-${props.name}`;\n}\n\nexport function getSpriteUrl(props: { type: string }) {\n return `https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${ICON_VERSION}/icons/${props.type}.svg`;\n}\n","const THEME_MAP_ID = [\n 'Close',\n 'Biometry',\n 'Qr',\n 'Search',\n 'Folder',\n 'Wallet',\n 'Graph',\n 'Bookmark',\n 'Browser',\n 'Category',\n 'Home',\n 'Notification',\n 'Chat',\n 'Heart',\n 'Paper',\n 'Plus',\n 'Minus',\n 'PaperPlus',\n 'PaperNegative',\n 'PaperFail',\n 'PaperDownload',\n 'PaperUpload',\n 'Send',\n 'Password',\n 'Swap',\n 'Work',\n 'Arrow1',\n 'Arrow2',\n 'Arrow3',\n 'Arrow4',\n 'ArrowMini1',\n 'ArrowMini2',\n 'Scan',\n 'Activity',\n 'Calendar',\n 'Message',\n 'PlusMini',\n 'ChartMini',\n 'Game',\n 'Bag1',\n 'Bag2',\n 'TicketStar',\n 'MoreCircle',\n 'MoreSquare',\n 'Discount',\n 'Buy',\n 'Web',\n 'InfoMini',\n 'DangerMini',\n 'CloseMini',\n 'TickMini',\n 'Video',\n 'Discovery',\n 'Location',\n 'Document',\n 'Setting',\n 'Time',\n 'VolumeUp',\n 'VolumeDown',\n 'VolumeOff',\n 'Star',\n 'Select',\n 'Ticket',\n 'Camera',\n 'Profile',\n 'AddUser',\n 'TwoUser',\n 'ThreeUser',\n 'Login',\n 'Logout',\n 'Download',\n 'Upload',\n 'Voice1',\n 'Voice2',\n 'Delete',\n 'Edit',\n 'PlayMini',\n 'ShieldDone',\n 'ShieldFail',\n 'Show',\n 'Hide',\n 'Filter1',\n 'Filter2',\n 'Image',\n 'Call',\n 'Calling',\n 'CallMissed',\n 'CallSilent',\n 'Lock',\n 'Unlock',\n 'Resources',\n 'Language',\n] as const;\nconst THEME_MAP_CHECKBOX = [\n 'Radio-true',\n 'Radio-false',\n 'Square-true',\n 'Square-false',\n 'Heart-true',\n 'Heart-false',\n 'Arrow',\n] as const;\nconst THEME_MAP_LOADING = ['Line', 'Blocks', 'Balls'] as const;\nconst THEME_MAP_LOGO = ['Jenesei', 'BustMarket'] as const;\n\nexport const THEME_MAP = {\n id: THEME_MAP_ID,\n checkbox: THEME_MAP_CHECKBOX,\n loading: THEME_MAP_LOADING,\n logo: THEME_MAP_LOGO,\n};\n","import { Icon } from './component';\nimport { IGetIconComponentsProps } from './component.types';\n\nexport function getIconComponents(props: IGetIconComponentsProps) {\n return (props.icons ?? [])\n ?.filter((icon) => !icon.isHidden)\n ?.map((icon, index) => (\n <Icon key={`${icon.type}-${icon.name}-${index}`} size={icon?.size ?? props.size} {...icon} />\n ));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"icon-D2w7GViT.js","names":[],"sources":["../src/cores/consts.ts","../src/components/icon/component.hooks.tsx","../src/components/icon/component.tsx","../src/components/icon/component.consts.tsx","../src/components/icon/component.functions.tsx"],"sourcesContent":["import {\n IDatePickerTranslateInput,\n IDatePickerTranslateMonth,\n IDatePickerTranslateWeek,\n} from '@local/components/date-picker';\n\nexport const LOCALE_INPUT: IDatePickerTranslateInput = {\n day: 'ДД',\n month: 'ММ',\n year: 'ГГГГ',\n};\n\nexport const LOCALE_MONTHS: IDatePickerTranslateMonth[] = [\n {\n localeLong: 'Январь',\n localeShort: 'Янв',\n value: 'january',\n },\n {\n localeLong: 'February',\n localeShort: 'Feb',\n value: 'february',\n },\n {\n localeLong: 'March',\n localeShort: 'Mar',\n value: 'march',\n },\n {\n localeLong: 'April',\n localeShort: 'Apr',\n value: 'april',\n },\n {\n localeLong: 'May',\n localeShort: 'May',\n value: 'may',\n },\n {\n localeLong: 'June',\n localeShort: 'Jun',\n value: 'june',\n },\n {\n localeLong: 'July',\n localeShort: 'Jul',\n value: 'july',\n },\n {\n localeLong: 'August',\n localeShort: 'Aug',\n value: 'august',\n },\n {\n localeLong: 'September',\n localeShort: 'Sep',\n value: 'september',\n },\n {\n localeLong: 'October',\n localeShort: 'Oct',\n value: 'october',\n },\n {\n localeLong: 'November',\n localeShort: 'Nov',\n value: 'november',\n },\n {\n localeLong: 'December',\n localeShort: 'Dec',\n value: 'december',\n },\n];\nexport const LOCALE_WEEKS: IDatePickerTranslateWeek[] = [\n {\n localeLong: 'Monday',\n localeShort: 'Пн',\n value: 'mo',\n },\n {\n localeLong: 'Tuesday',\n localeShort: 'Tue',\n value: 'tu',\n },\n {\n localeLong: 'Wednesday',\n localeShort: 'Wed',\n value: 'we',\n },\n {\n localeLong: 'Thursday',\n localeShort: 'Thu',\n value: 'th',\n },\n {\n localeLong: 'Friday',\n localeShort: 'Fri',\n value: 'fr',\n },\n {\n localeLong: 'Saturday',\n localeShort: 'Sat',\n value: 'sa',\n },\n {\n localeLong: 'Sunday',\n localeShort: 'Sun',\n value: 'su',\n },\n];\n\nexport const LIBRARY_VERSION = import.meta.env.VITE_APP_VERSION;\nexport const ICON_VERSION = import.meta.env.VITE_ICON_VERSION;\n\n// export const LIST_TYPOGRAPHY_VARIANTS_DEFAULT: IThemeTypographyHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n","import { logger } from '@local/cores/logger';\n\nimport { useEffect, useState } from 'react';\n\nexport function useInjectSprites(urls: string[]) {\n useEffect(() => {\n const containers: HTMLDivElement[] = [];\n\n urls.forEach(async (url) => {\n try {\n const res = await fetch(url);\n if (!res.ok) {\n logger.error(`Failed to load sprite: ${url}`);\n return;\n }\n const text = await res.text();\n\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n\n document.body.prepend(div);\n containers.push(div);\n } catch (err) {\n logger.error(`Error loading sprite ${url}`, err);\n }\n });\n\n return () => {\n containers.forEach((div) => {\n div.remove();\n });\n };\n }, [urls]);\n}\n\ntype SpriteStatus = {\n promise: Promise<void>;\n loaded: boolean;\n error?: Error;\n};\n\nconst loadedSprites = new Map<string, SpriteStatus>();\n\nexport function useLazyInjectSprite(url: string) {\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n\n // Проверяем актуальный статус прямо здесь\n const status = loadedSprites.get(url);\n if (status?.loaded) {\n setLoaded(true);\n setError(status.error ?? null);\n return;\n }\n\n let promise: Promise<void>;\n\n if (!status) {\n const p = (async () => {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`Failed to load sprite: ${url}`);\n const text = await res.text();\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n document.body.prepend(div);\n })();\n\n loadedSprites.set(url, { promise: p, loaded: false });\n\n p.then(() => {\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true });\n }).catch((err) => {\n const errorObj = err instanceof Error ? err : new Error(String(err));\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true, error: errorObj });\n });\n\n promise = p;\n } else {\n promise = status.promise;\n }\n\n promise\n .then(() => {\n if (!isMounted) return;\n const s = loadedSprites.get(url);\n setLoaded(s?.loaded ?? true);\n setError(s?.error ?? null);\n })\n .catch(() => {}); // Ошибка уже сохранена в статусе\n\n return () => {\n isMounted = false;\n };\n }, [url]);\n\n return { loaded, error };\n}\n","import { Skeleton } from '@local/areas/skeleton';\nimport { ICON_VERSION } from '@local/cores/consts';\nimport { CSS_VARS } from '@local/styles/utils';\nimport { CSS_CLASS, CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { useMemo } from 'react';\n\nimport { useLazyInjectSprite } from './component.hooks';\nimport { IIcon } from './component.types';\n\nexport const Icon = (props: IIcon) => {\n const iconId = useMemo(() => getIconId({ type: props.type, name: props.name }), [props.name, props.type]);\n const spriteUrl = useMemo(() => getSpriteUrl({ type: props.type }), [props.type]);\n const { loaded, error } = useLazyInjectSprite(spriteUrl);\n\n const configSkeleton = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.skeleton, props.className]),\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.skeletonHeightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.skeletonOrder]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size]);\n\n const configIcon = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.root, CSS_CLASS.transition.icon, props.className]),\n\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.color]: props.color ? CSS_VARS.palette[props.color] : 'inherit',\n [CSS_VARS_RAW.component.icon.heightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.turn]: props.turn ? `${props.turn}deg` : '0deg',\n [CSS_VARS_RAW.component.icon.order]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size, props.color, props.turn]);\n\n if (!loaded || error)\n return (\n <Skeleton\n color={props.color ?? undefined}\n className={configSkeleton.className}\n style={configSkeleton.style}\n visible={false}\n />\n );\n\n return (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n xmlns='http://www.w3.org/2000/svg'\n className={configIcon.className}\n style={configIcon.style}\n onClick={props.onClick}\n onKeyDown={(e) => {\n if (props.onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n props.onClick(e as any);\n }\n }}\n tabIndex={props.tabIndex}\n role={props.onClick ? 'button' : undefined}\n >\n <title>{props.name}</title>\n <use href={iconId} />\n </svg>\n );\n};\n\nexport function getIconId(props: { type: string; name: string }) {\n return `#${props.type}-${props.name}`;\n}\n\nexport function getSpriteUrl(props: { type: string }) {\n return `https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${ICON_VERSION}/icons/${props.type}.svg`;\n}\n","const THEME_MAP_ID = [\n 'Close',\n 'Biometry',\n 'Qr',\n 'Search',\n 'Folder',\n 'Wallet',\n 'Graph',\n 'Bookmark',\n 'Browser',\n 'Category',\n 'Home',\n 'Notification',\n 'Chat',\n 'Heart',\n 'Paper',\n 'Plus',\n 'Minus',\n 'PaperPlus',\n 'PaperNegative',\n 'PaperFail',\n 'PaperDownload',\n 'PaperUpload',\n 'Send',\n 'Password',\n 'Swap',\n 'Work',\n 'Arrow1',\n 'Arrow2',\n 'Arrow3',\n 'Arrow4',\n 'ArrowMini1',\n 'ArrowMini2',\n 'Scan',\n 'Activity',\n 'Calendar',\n 'Message',\n 'PlusMini',\n 'ChartMini',\n 'Game',\n 'Bag1',\n 'Bag2',\n 'TicketStar',\n 'MoreCircle',\n 'MoreSquare',\n 'Discount',\n 'Buy',\n 'Web',\n 'InfoMini',\n 'DangerMini',\n 'CloseMini',\n 'TickMini',\n 'Video',\n 'Discovery',\n 'Location',\n 'Document',\n 'Setting',\n 'Time',\n 'VolumeUp',\n 'VolumeDown',\n 'VolumeOff',\n 'Star',\n 'Select',\n 'Ticket',\n 'Camera',\n 'Profile',\n 'AddUser',\n 'TwoUser',\n 'ThreeUser',\n 'Login',\n 'Logout',\n 'Download',\n 'Upload',\n 'Voice1',\n 'Voice2',\n 'Delete',\n 'Edit',\n 'PlayMini',\n 'ShieldDone',\n 'ShieldFail',\n 'Show',\n 'Hide',\n 'Filter1',\n 'Filter2',\n 'Image',\n 'Call',\n 'Calling',\n 'CallMissed',\n 'CallSilent',\n 'Lock',\n 'Unlock',\n 'Resources',\n 'Language',\n] as const;\nconst THEME_MAP_CHECKBOX = [\n 'Radio-true',\n 'Radio-false',\n 'Square-true',\n 'Square-false',\n 'Heart-true',\n 'Heart-false',\n 'Arrow',\n] as const;\nconst THEME_MAP_LOADING = ['Line', 'Blocks', 'Balls'] as const;\nconst THEME_MAP_LOGO = ['Jenesei', 'BustMarket'] as const;\n\nexport const THEME_MAP = {\n id: THEME_MAP_ID,\n checkbox: THEME_MAP_CHECKBOX,\n loading: THEME_MAP_LOADING,\n logo: THEME_MAP_LOGO,\n};\n","import { Icon } from './component';\nimport { IGetIconComponentsProps } from './component.types';\n\nexport function getIconComponents(props: IGetIconComponentsProps) {\n return (props.icons ?? [])\n ?.filter((icon) => !icon.isHidden)\n ?.map((icon, index) => (\n <Icon key={`${icon.type}-${icon.name}-${index}`} size={icon?.size ?? props.size} {...icon} />\n ));\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon-Ddkbk3-m.cjs","names":[],"sources":["../src/cores/consts.ts","../src/components/icon/component.hooks.tsx","../src/components/icon/component.tsx","../src/components/icon/component.consts.tsx","../src/components/icon/component.functions.tsx"],"sourcesContent":["import {\n IDatePickerTranslateInput,\n IDatePickerTranslateMonth,\n IDatePickerTranslateWeek,\n} from '@local/components/date-picker';\n\n\nexport const LOCALE_INPUT: IDatePickerTranslateInput = {\n day: 'ДД',\n month: 'ММ',\n year: 'ГГГГ',\n};\n\nexport const LOCALE_MONTHS: IDatePickerTranslateMonth[] = [\n {\n localeLong: 'Январь',\n localeShort: 'Янв',\n value: 'january',\n },\n {\n localeLong: 'February',\n localeShort: 'Feb',\n value: 'february',\n },\n {\n localeLong: 'March',\n localeShort: 'Mar',\n value: 'march',\n },\n {\n localeLong: 'April',\n localeShort: 'Apr',\n value: 'april',\n },\n {\n localeLong: 'May',\n localeShort: 'May',\n value: 'may',\n },\n {\n localeLong: 'June',\n localeShort: 'Jun',\n value: 'june',\n },\n {\n localeLong: 'July',\n localeShort: 'Jul',\n value: 'july',\n },\n {\n localeLong: 'August',\n localeShort: 'Aug',\n value: 'august',\n },\n {\n localeLong: 'September',\n localeShort: 'Sep',\n value: 'september',\n },\n {\n localeLong: 'October',\n localeShort: 'Oct',\n value: 'october',\n },\n {\n localeLong: 'November',\n localeShort: 'Nov',\n value: 'november',\n },\n {\n localeLong: 'December',\n localeShort: 'Dec',\n value: 'december',\n },\n];\nexport const LOCALE_WEEKS: IDatePickerTranslateWeek[] = [\n {\n localeLong: 'Monday',\n localeShort: 'Пн',\n value: 'mo',\n },\n {\n localeLong: 'Tuesday',\n localeShort: 'Tue',\n value: 'tu',\n },\n {\n localeLong: 'Wednesday',\n localeShort: 'Wed',\n value: 'we',\n },\n {\n localeLong: 'Thursday',\n localeShort: 'Thu',\n value: 'th',\n },\n {\n localeLong: 'Friday',\n localeShort: 'Fri',\n value: 'fr',\n },\n {\n localeLong: 'Saturday',\n localeShort: 'Sat',\n value: 'sa',\n },\n {\n localeLong: 'Sunday',\n localeShort: 'Sun',\n value: 'su',\n },\n];\n\nexport const LIBRARY_VERSION = import.meta.env.VITE_APP_VERSION;\nexport const ICON_VERSION = import.meta.env.VITE_ICON_VERSION;\n\n// export const LIST_TYPOGRAPHY_VARIANTS_DEFAULT: IThemeTypographyHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n","import { logger } from '@local/cores/logger';\n\nimport { useEffect, useState } from 'react';\n\nexport function useInjectSprites(urls: string[]) {\n useEffect(() => {\n const containers: HTMLDivElement[] = [];\n\n urls.forEach(async (url) => {\n try {\n const res = await fetch(url);\n if (!res.ok) {\n logger.error(`Failed to load sprite: ${url}`);\n return;\n }\n const text = await res.text();\n\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n\n document.body.prepend(div);\n containers.push(div);\n } catch (err) {\n logger.error(`Error loading sprite ${url}`, err);\n }\n });\n\n return () => {\n containers.forEach((div) => {\n div.remove();\n });\n };\n }, [urls]);\n}\n\ntype SpriteStatus = {\n promise: Promise<void>;\n loaded: boolean;\n error?: Error;\n};\n\nconst loadedSprites = new Map<string, SpriteStatus>();\n\nexport function useLazyInjectSprite(url: string) {\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n\n // Проверяем актуальный статус прямо здесь\n const status = loadedSprites.get(url);\n if (status?.loaded) {\n setLoaded(true);\n setError(status.error ?? null);\n return;\n }\n\n let promise: Promise<void>;\n\n if (!status) {\n const p = (async () => {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`Failed to load sprite: ${url}`);\n const text = await res.text();\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n document.body.prepend(div);\n })();\n\n loadedSprites.set(url, { promise: p, loaded: false });\n\n p.then(() => {\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true });\n }).catch((err) => {\n const errorObj = err instanceof Error ? err : new Error(String(err));\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true, error: errorObj });\n });\n\n promise = p;\n } else {\n promise = status.promise;\n }\n\n promise\n .then(() => {\n if (!isMounted) return;\n const s = loadedSprites.get(url);\n setLoaded(s?.loaded ?? true);\n setError(s?.error ?? null);\n })\n .catch(() => {}); // Ошибка уже сохранена в статусе\n\n return () => {\n isMounted = false;\n };\n }, [url]);\n\n return { loaded, error };\n}\n","import { Skeleton } from '@local/areas/skeleton';\nimport { ICON_VERSION } from '@local/cores/consts';\nimport { CSS_VARS } from '@local/styles/utils';\nimport { CSS_CLASS, CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { useMemo } from 'react';\n\nimport { useLazyInjectSprite } from './component.hooks';\nimport { IIcon } from './component.types';\n\nexport const Icon = (props: IIcon) => {\n const iconId = useMemo(() => getIconId({ type: props.type, name: props.name }), [props.name, props.type]);\n const spriteUrl = useMemo(() => getSpriteUrl({ type: props.type }), [props.type]);\n const { loaded, error } = useLazyInjectSprite(spriteUrl);\n\n const configSkeleton = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.skeleton, props.className]),\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.skeletonHeightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.skeletonOrder]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size]);\n\n const configIcon = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.root, CSS_CLASS.transition.icon, props.className]),\n\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.color]: props.color ? CSS_VARS.palette[props.color] : 'inherit',\n [CSS_VARS_RAW.component.icon.heightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.turn]: props.turn ? `${props.turn}deg` : '0deg',\n [CSS_VARS_RAW.component.icon.order]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size, props.color, props.turn]);\n\n if (!loaded || error)\n return (\n <Skeleton\n color={props.color ?? undefined}\n className={configSkeleton.className}\n style={configSkeleton.style}\n visible={false}\n />\n );\n\n return (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n xmlns='http://www.w3.org/2000/svg'\n className={configIcon.className}\n style={configIcon.style}\n onClick={props.onClick}\n onKeyDown={(e) => {\n if (props.onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n props.onClick(e as any);\n }\n }}\n tabIndex={props.tabIndex}\n role={props.onClick ? 'button' : undefined}\n >\n <title>{props.name}</title>\n <use href={iconId} />\n </svg>\n );\n};\n\nexport function getIconId(props: { type: string; name: string }) {\n return `#${props.type}-${props.name}`;\n}\n\nexport function getSpriteUrl(props: { type: string }) {\n return `https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${ICON_VERSION}/icons/${props.type}.svg`;\n}\n","const THEME_MAP_ID = [\n 'Close',\n 'Biometry',\n 'Qr',\n 'Search',\n 'Folder',\n 'Wallet',\n 'Graph',\n 'Bookmark',\n 'Browser',\n 'Category',\n 'Home',\n 'Notification',\n 'Chat',\n 'Heart',\n 'Paper',\n 'Plus',\n 'Minus',\n 'PaperPlus',\n 'PaperNegative',\n 'PaperFail',\n 'PaperDownload',\n 'PaperUpload',\n 'Send',\n 'Password',\n 'Swap',\n 'Work',\n 'Arrow1',\n 'Arrow2',\n 'Arrow3',\n 'Arrow4',\n 'ArrowMini1',\n 'ArrowMini2',\n 'Scan',\n 'Activity',\n 'Calendar',\n 'Message',\n 'PlusMini',\n 'ChartMini',\n 'Game',\n 'Bag1',\n 'Bag2',\n 'TicketStar',\n 'MoreCircle',\n 'MoreSquare',\n 'Discount',\n 'Buy',\n 'Web',\n 'InfoMini',\n 'DangerMini',\n 'CloseMini',\n 'TickMini',\n 'Video',\n 'Discovery',\n 'Location',\n 'Document',\n 'Setting',\n 'Time',\n 'VolumeUp',\n 'VolumeDown',\n 'VolumeOff',\n 'Star',\n 'Select',\n 'Ticket',\n 'Camera',\n 'Profile',\n 'AddUser',\n 'TwoUser',\n 'ThreeUser',\n 'Login',\n 'Logout',\n 'Download',\n 'Upload',\n 'Voice1',\n 'Voice2',\n 'Delete',\n 'Edit',\n 'PlayMini',\n 'ShieldDone',\n 'ShieldFail',\n 'Show',\n 'Hide',\n 'Filter1',\n 'Filter2',\n 'Image',\n 'Call',\n 'Calling',\n 'CallMissed',\n 'CallSilent',\n 'Lock',\n 'Unlock',\n 'Resources',\n 'Language',\n] as const;\nconst THEME_MAP_CHECKBOX = [\n 'Radio-true',\n 'Radio-false',\n 'Square-true',\n 'Square-false',\n 'Heart-true',\n 'Heart-false',\n 'Arrow',\n] as const;\nconst THEME_MAP_LOADING = ['Line', 'Blocks', 'Balls'] as const;\nconst THEME_MAP_LOGO = ['Jenesei', 'BustMarket'] as const;\n\nexport const THEME_MAP = {\n id: THEME_MAP_ID,\n checkbox: THEME_MAP_CHECKBOX,\n loading: THEME_MAP_LOADING,\n logo: THEME_MAP_LOGO,\n};\n","import { Icon } from './component';\nimport { IGetIconComponentsProps } from './component.types';\n\nexport function getIconComponents(props: IGetIconComponentsProps) {\n return (props.icons ?? [])\n ?.filter((icon) => !icon.isHidden)\n ?.map((icon, index) => (\n <Icon key={`${icon.type}-${icon.name}-${index}`} size={icon?.size ?? props.size} {...icon} />\n ));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"icon-Ddkbk3-m.cjs","names":[],"sources":["../src/cores/consts.ts","../src/components/icon/component.hooks.tsx","../src/components/icon/component.tsx","../src/components/icon/component.consts.tsx","../src/components/icon/component.functions.tsx"],"sourcesContent":["import {\n IDatePickerTranslateInput,\n IDatePickerTranslateMonth,\n IDatePickerTranslateWeek,\n} from '@local/components/date-picker';\n\nexport const LOCALE_INPUT: IDatePickerTranslateInput = {\n day: 'ДД',\n month: 'ММ',\n year: 'ГГГГ',\n};\n\nexport const LOCALE_MONTHS: IDatePickerTranslateMonth[] = [\n {\n localeLong: 'Январь',\n localeShort: 'Янв',\n value: 'january',\n },\n {\n localeLong: 'February',\n localeShort: 'Feb',\n value: 'february',\n },\n {\n localeLong: 'March',\n localeShort: 'Mar',\n value: 'march',\n },\n {\n localeLong: 'April',\n localeShort: 'Apr',\n value: 'april',\n },\n {\n localeLong: 'May',\n localeShort: 'May',\n value: 'may',\n },\n {\n localeLong: 'June',\n localeShort: 'Jun',\n value: 'june',\n },\n {\n localeLong: 'July',\n localeShort: 'Jul',\n value: 'july',\n },\n {\n localeLong: 'August',\n localeShort: 'Aug',\n value: 'august',\n },\n {\n localeLong: 'September',\n localeShort: 'Sep',\n value: 'september',\n },\n {\n localeLong: 'October',\n localeShort: 'Oct',\n value: 'october',\n },\n {\n localeLong: 'November',\n localeShort: 'Nov',\n value: 'november',\n },\n {\n localeLong: 'December',\n localeShort: 'Dec',\n value: 'december',\n },\n];\nexport const LOCALE_WEEKS: IDatePickerTranslateWeek[] = [\n {\n localeLong: 'Monday',\n localeShort: 'Пн',\n value: 'mo',\n },\n {\n localeLong: 'Tuesday',\n localeShort: 'Tue',\n value: 'tu',\n },\n {\n localeLong: 'Wednesday',\n localeShort: 'Wed',\n value: 'we',\n },\n {\n localeLong: 'Thursday',\n localeShort: 'Thu',\n value: 'th',\n },\n {\n localeLong: 'Friday',\n localeShort: 'Fri',\n value: 'fr',\n },\n {\n localeLong: 'Saturday',\n localeShort: 'Sat',\n value: 'sa',\n },\n {\n localeLong: 'Sunday',\n localeShort: 'Sun',\n value: 'su',\n },\n];\n\nexport const LIBRARY_VERSION = import.meta.env.VITE_APP_VERSION;\nexport const ICON_VERSION = import.meta.env.VITE_ICON_VERSION;\n\n// export const LIST_TYPOGRAPHY_VARIANTS_DEFAULT: IThemeTypographyHeading[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n","import { logger } from '@local/cores/logger';\n\nimport { useEffect, useState } from 'react';\n\nexport function useInjectSprites(urls: string[]) {\n useEffect(() => {\n const containers: HTMLDivElement[] = [];\n\n urls.forEach(async (url) => {\n try {\n const res = await fetch(url);\n if (!res.ok) {\n logger.error(`Failed to load sprite: ${url}`);\n return;\n }\n const text = await res.text();\n\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n\n document.body.prepend(div);\n containers.push(div);\n } catch (err) {\n logger.error(`Error loading sprite ${url}`, err);\n }\n });\n\n return () => {\n containers.forEach((div) => {\n div.remove();\n });\n };\n }, [urls]);\n}\n\ntype SpriteStatus = {\n promise: Promise<void>;\n loaded: boolean;\n error?: Error;\n};\n\nconst loadedSprites = new Map<string, SpriteStatus>();\n\nexport function useLazyInjectSprite(url: string) {\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n\n // Проверяем актуальный статус прямо здесь\n const status = loadedSprites.get(url);\n if (status?.loaded) {\n setLoaded(true);\n setError(status.error ?? null);\n return;\n }\n\n let promise: Promise<void>;\n\n if (!status) {\n const p = (async () => {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`Failed to load sprite: ${url}`);\n const text = await res.text();\n const div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = text;\n document.body.prepend(div);\n })();\n\n loadedSprites.set(url, { promise: p, loaded: false });\n\n p.then(() => {\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true });\n }).catch((err) => {\n const errorObj = err instanceof Error ? err : new Error(String(err));\n const prev = loadedSprites.get(url);\n loadedSprites.set(url, { ...(prev as any), promise: p, loaded: true, error: errorObj });\n });\n\n promise = p;\n } else {\n promise = status.promise;\n }\n\n promise\n .then(() => {\n if (!isMounted) return;\n const s = loadedSprites.get(url);\n setLoaded(s?.loaded ?? true);\n setError(s?.error ?? null);\n })\n .catch(() => {}); // Ошибка уже сохранена в статусе\n\n return () => {\n isMounted = false;\n };\n }, [url]);\n\n return { loaded, error };\n}\n","import { Skeleton } from '@local/areas/skeleton';\nimport { ICON_VERSION } from '@local/cores/consts';\nimport { CSS_VARS } from '@local/styles/utils';\nimport { CSS_CLASS, CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { useMemo } from 'react';\n\nimport { useLazyInjectSprite } from './component.hooks';\nimport { IIcon } from './component.types';\n\nexport const Icon = (props: IIcon) => {\n const iconId = useMemo(() => getIconId({ type: props.type, name: props.name }), [props.name, props.type]);\n const spriteUrl = useMemo(() => getSpriteUrl({ type: props.type }), [props.type]);\n const { loaded, error } = useLazyInjectSprite(spriteUrl);\n\n const configSkeleton = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.skeleton, props.className]),\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.skeletonHeightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.skeletonOrder]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size]);\n\n const configIcon = useMemo(() => {\n return {\n className: setClasses([CSS_CLASS.component.icon.root, CSS_CLASS.transition.icon, props.className]),\n\n style: setStyles([\n {\n [CSS_VARS_RAW.component.icon.color]: props.color ? CSS_VARS.palette[props.color] : 'inherit',\n [CSS_VARS_RAW.component.icon.heightIcon]:\n props.size !== '100%' ? CSS_VARS.size[props.size].heightIcon : '100%',\n [CSS_VARS_RAW.component.icon.turn]: props.turn ? `${props.turn}deg` : '0deg',\n [CSS_VARS_RAW.component.icon.order]: props.order ? String(props.order) : 'initial',\n },\n props.style,\n ]),\n };\n }, [props.className, props.style, props.order, props.size, props.color, props.turn]);\n\n if (!loaded || error)\n return (\n <Skeleton\n color={props.color ?? undefined}\n className={configSkeleton.className}\n style={configSkeleton.style}\n visible={false}\n />\n );\n\n return (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n xmlns='http://www.w3.org/2000/svg'\n className={configIcon.className}\n style={configIcon.style}\n onClick={props.onClick}\n onKeyDown={(e) => {\n if (props.onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n props.onClick(e as any);\n }\n }}\n tabIndex={props.tabIndex}\n role={props.onClick ? 'button' : undefined}\n >\n <title>{props.name}</title>\n <use href={iconId} />\n </svg>\n );\n};\n\nexport function getIconId(props: { type: string; name: string }) {\n return `#${props.type}-${props.name}`;\n}\n\nexport function getSpriteUrl(props: { type: string }) {\n return `https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${ICON_VERSION}/icons/${props.type}.svg`;\n}\n","const THEME_MAP_ID = [\n 'Close',\n 'Biometry',\n 'Qr',\n 'Search',\n 'Folder',\n 'Wallet',\n 'Graph',\n 'Bookmark',\n 'Browser',\n 'Category',\n 'Home',\n 'Notification',\n 'Chat',\n 'Heart',\n 'Paper',\n 'Plus',\n 'Minus',\n 'PaperPlus',\n 'PaperNegative',\n 'PaperFail',\n 'PaperDownload',\n 'PaperUpload',\n 'Send',\n 'Password',\n 'Swap',\n 'Work',\n 'Arrow1',\n 'Arrow2',\n 'Arrow3',\n 'Arrow4',\n 'ArrowMini1',\n 'ArrowMini2',\n 'Scan',\n 'Activity',\n 'Calendar',\n 'Message',\n 'PlusMini',\n 'ChartMini',\n 'Game',\n 'Bag1',\n 'Bag2',\n 'TicketStar',\n 'MoreCircle',\n 'MoreSquare',\n 'Discount',\n 'Buy',\n 'Web',\n 'InfoMini',\n 'DangerMini',\n 'CloseMini',\n 'TickMini',\n 'Video',\n 'Discovery',\n 'Location',\n 'Document',\n 'Setting',\n 'Time',\n 'VolumeUp',\n 'VolumeDown',\n 'VolumeOff',\n 'Star',\n 'Select',\n 'Ticket',\n 'Camera',\n 'Profile',\n 'AddUser',\n 'TwoUser',\n 'ThreeUser',\n 'Login',\n 'Logout',\n 'Download',\n 'Upload',\n 'Voice1',\n 'Voice2',\n 'Delete',\n 'Edit',\n 'PlayMini',\n 'ShieldDone',\n 'ShieldFail',\n 'Show',\n 'Hide',\n 'Filter1',\n 'Filter2',\n 'Image',\n 'Call',\n 'Calling',\n 'CallMissed',\n 'CallSilent',\n 'Lock',\n 'Unlock',\n 'Resources',\n 'Language',\n] as const;\nconst THEME_MAP_CHECKBOX = [\n 'Radio-true',\n 'Radio-false',\n 'Square-true',\n 'Square-false',\n 'Heart-true',\n 'Heart-false',\n 'Arrow',\n] as const;\nconst THEME_MAP_LOADING = ['Line', 'Blocks', 'Balls'] as const;\nconst THEME_MAP_LOGO = ['Jenesei', 'BustMarket'] as const;\n\nexport const THEME_MAP = {\n id: THEME_MAP_ID,\n checkbox: THEME_MAP_CHECKBOX,\n loading: THEME_MAP_LOADING,\n logo: THEME_MAP_LOGO,\n};\n","import { Icon } from './component';\nimport { IGetIconComponentsProps } from './component.types';\n\nexport function getIconComponents(props: IGetIconComponentsProps) {\n return (props.icons ?? [])\n ?.filter((icon) => !icon.isHidden)\n ?.map((icon, index) => (\n <Icon key={`${icon.type}-${icon.name}-${index}`} size={icon?.size ?? props.size} {...icon} />\n ));\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("./chunk-Dd8m0Ver.cjs"),e=require("./utils-DCIq-5FL.cjs"),r=require("./motion-BWBldnsY.cjs"),n=require("./component-CbJ_P8yq.cjs");require("./component-stack.cjs.js");const v=require("./outside-CXyCk8h1.cjs"),P=require("./skeleton-DmaXsm9C.cjs"),i=require("./icon-Ddkbk3-m.cjs"),s=require("./preview-BLu-NOv2.cjs"),h=require("./hooks-use-merge-refs.cjs.js"),k=require("./hooks-use-typography-styles.cjs.js"),m=require("./button-CHEeSypf.cjs"),M=require("./error-BdFba_yV.cjs"),T=require("./checkbox-Bxt8K0ZY.cjs"),c=require("./popover-DQkn4RWI.cjs"),y=require("./textarea-DInJb6Lz.cjs"),t=require("./typography-BKp4OAQI.cjs"),A=require("./hooks-use-deep-compare-memoize.cjs.js"),C=require("./hooks-use-overflowing.cjs.js"),o=require("./select-CGXyVf57.cjs"),w=require("./date-picker-ATktGA1c.cjs"),f=require("./input-CmdwwrV2.cjs"),x=require("./input-otp-CJfZoWd7.cjs"),D=require("./pagination-VMAFNidU.cjs"),I=require("./separator-BGVU_LQb.cjs"),R=require("./toggle-BEmUm0of.cjs"),_=require("./context-screen-width-Cfe3atNC.cjs"),a=require("./context-app-Dsa1tKlU.cjs"),q=require("./context-browser-theme-xixEbalV.cjs"),p=require("./context-cookie-DFgWWGA9.cjs"),u=require("./context-dialog-B3khh4eN.cjs"),l=require("./context-permission-BP9hPUcR.cjs"),S=require("./context-geolocation-bP0_455H.cjs"),g=require("./context-local-storage-D_x8dwxM.cjs"),d=require("./context-sonner-Dqw0jhwT.cjs"),b=require("./hooks-use-debounced-callback.cjs.js"),E=require("./hooks-use-deep-memo.cjs.js"),L=require("./hooks-use-overflowing-advanced.cjs.js"),O=require("./hooks-use-overflowing-in-container.cjs.js"),B=require("./hooks-use-responsive-layout.cjs.js");exports.Button=m.Button;exports.CSS_CLASS=e.CSS_CLASS;exports.CSS_VARS=e.CSS_VARS;exports.CSS_VARS_RAW=e.CSS_VARS_RAW;exports.Checkbox=T.Checkbox;exports.DatePicker=w.DatePicker;exports.EXTRA_VALUE=e.EXTRA_VALUE;exports.ErrorMessage=M.ErrorMessage;exports.Icon=i.Icon;exports.Input=f.Input;exports.InputOTP=x.InputOTP;exports.MotionBlurIn=r.MotionBlurIn;exports.MotionGradualSpacing=r.MotionGradualSpacing;exports.MotionTypingEffect=r.MotionTypingEffect;exports.MotionWordsPullUp=r.MotionWordsPullUp;exports.Outside=v.Outside;exports.Pagination=D.Pagination;exports.Popover=c.Popover;exports.Preview=s.Preview;exports.ProviderApp=a.ProviderApp;exports.ProviderBrowserTheme=q.ProviderBrowserTheme;exports.ProviderCookie=p.ProviderCookie;exports.ProviderDialog=u.ProviderDialog;exports.ProviderGeolocation=S.ProviderGeolocation;exports.ProviderLocalStorage=g.ProviderLocalStorage;exports.ProviderPermission=l.ProviderPermission;exports.ProviderScreenWidth=_.ProviderScreenWidth;exports.ProviderSonner=d.ProviderSonner;exports.Select=o.Select;exports.SelectMonth=o.SelectMonth;exports.SelectMonths=o.SelectMonths;exports.SelectYear=o.SelectYear;exports.Separator=I.Separator;exports.Skeleton=P.Skeleton;exports.Stack=n.Stack;exports.StackMotion=n.StackMotion;exports.THEME_MAP=i.THEME_MAP;exports.TextArea=y.TextArea;exports.Toggle=R.Toggle;exports.Tooltip=t.Tooltip;exports.Typography=t.Typography;exports.TypographyTooltip=t.TypographyTooltip;exports.getIconComponents=i.getIconComponents;exports.useApp=a.useApp;exports.useCookie=p.useCookie;exports.useDebouncedCallback=b.useDebouncedCallback;exports.useDeepCompareMemoize=A.useDeepCompareMemoize;exports.useDeepMemo=E.useDeepMemo;exports.useDialog=u.useDialog;exports.useDialogs=u.useDialogs;exports.useGeolocation=S.useGeolocation;exports.useIBrowserTheme=q.useIBrowserTheme;exports.useLocalStorage=g.useLocalStorage;exports.useMergeRefs=h.useMergeRefs;exports.useOverflowing=C.useOverflowing;exports.useOverflowingAdvanced=L.useOverflowingAdvanced;exports.useOverflowingInContainer=O.useOverflowingInContainer;exports.usePermission=l.usePermission;exports.usePopover=c.usePopover;exports.useRemovePreviewLoader=s.useRemovePreviewLoader;exports.useResponsiveLayout=B.useResponsiveLayout;exports.useScreenWidth=_.useScreenWidth;exports.useSonner=d.useSonner;exports.useTypographyStyles=k.useTypographyStyles;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("./chunk-Dd8m0Ver.cjs"),e=require("./utils-DCIq-5FL.cjs"),r=require("./motion-BWBldnsY.cjs"),n=require("./component-CbJ_P8yq.cjs");require("./component-stack.cjs.js");const v=require("./outside-CXyCk8h1.cjs"),P=require("./skeleton-DmaXsm9C.cjs"),i=require("./icon-Ddkbk3-m.cjs"),s=require("./preview-BLu-NOv2.cjs"),h=require("./hooks-use-merge-refs.cjs.js"),k=require("./hooks-use-typography-styles.cjs.js"),m=require("./button-CHEeSypf.cjs"),M=require("./error-BdFba_yV.cjs"),T=require("./checkbox-Bxt8K0ZY.cjs"),c=require("./popover-DQkn4RWI.cjs"),y=require("./textarea-DInJb6Lz.cjs"),t=require("./typography-BKp4OAQI.cjs"),A=require("./hooks-use-deep-compare-memoize.cjs.js"),C=require("./hooks-use-overflowing.cjs.js"),o=require("./select-CGXyVf57.cjs"),w=require("./date-picker-ATktGA1c.cjs"),f=require("./input-CmdwwrV2.cjs"),x=require("./input-otp-CJfZoWd7.cjs"),D=require("./pagination-VMAFNidU.cjs"),I=require("./separator-BGVU_LQb.cjs"),R=require("./toggle-BEmUm0of.cjs"),_=require("./context-screen-width-Cfe3atNC.cjs"),a=require("./context-app-Dsa1tKlU.cjs"),q=require("./context-browser-theme-xixEbalV.cjs"),p=require("./context-cookie-DFgWWGA9.cjs"),u=require("./context-dialog-DctdSBC8.cjs"),l=require("./context-permission-BP9hPUcR.cjs"),S=require("./context-geolocation-bP0_455H.cjs"),g=require("./context-local-storage-D_x8dwxM.cjs"),d=require("./context-sonner-Dqw0jhwT.cjs"),b=require("./hooks-use-debounced-callback.cjs.js"),E=require("./hooks-use-deep-memo.cjs.js"),L=require("./hooks-use-overflowing-advanced.cjs.js"),O=require("./hooks-use-overflowing-in-container.cjs.js"),B=require("./hooks-use-responsive-layout.cjs.js");exports.Button=m.Button;exports.CSS_CLASS=e.CSS_CLASS;exports.CSS_VARS=e.CSS_VARS;exports.CSS_VARS_RAW=e.CSS_VARS_RAW;exports.Checkbox=T.Checkbox;exports.DatePicker=w.DatePicker;exports.EXTRA_VALUE=e.EXTRA_VALUE;exports.ErrorMessage=M.ErrorMessage;exports.Icon=i.Icon;exports.Input=f.Input;exports.InputOTP=x.InputOTP;exports.MotionBlurIn=r.MotionBlurIn;exports.MotionGradualSpacing=r.MotionGradualSpacing;exports.MotionTypingEffect=r.MotionTypingEffect;exports.MotionWordsPullUp=r.MotionWordsPullUp;exports.Outside=v.Outside;exports.Pagination=D.Pagination;exports.Popover=c.Popover;exports.Preview=s.Preview;exports.ProviderApp=a.ProviderApp;exports.ProviderBrowserTheme=q.ProviderBrowserTheme;exports.ProviderCookie=p.ProviderCookie;exports.ProviderDialog=u.ProviderDialog;exports.ProviderGeolocation=S.ProviderGeolocation;exports.ProviderLocalStorage=g.ProviderLocalStorage;exports.ProviderPermission=l.ProviderPermission;exports.ProviderScreenWidth=_.ProviderScreenWidth;exports.ProviderSonner=d.ProviderSonner;exports.Select=o.Select;exports.SelectMonth=o.SelectMonth;exports.SelectMonths=o.SelectMonths;exports.SelectYear=o.SelectYear;exports.Separator=I.Separator;exports.Skeleton=P.Skeleton;exports.Stack=n.Stack;exports.StackMotion=n.StackMotion;exports.THEME_MAP=i.THEME_MAP;exports.TextArea=y.TextArea;exports.Toggle=R.Toggle;exports.Tooltip=t.Tooltip;exports.Typography=t.Typography;exports.TypographyTooltip=t.TypographyTooltip;exports.getIconComponents=i.getIconComponents;exports.useApp=a.useApp;exports.useCookie=p.useCookie;exports.useDebouncedCallback=b.useDebouncedCallback;exports.useDeepCompareMemoize=A.useDeepCompareMemoize;exports.useDeepMemo=E.useDeepMemo;exports.useDialog=u.useDialog;exports.useDialogs=u.useDialogs;exports.useGeolocation=S.useGeolocation;exports.useIBrowserTheme=q.useIBrowserTheme;exports.useLocalStorage=g.useLocalStorage;exports.useMergeRefs=h.useMergeRefs;exports.useOverflowing=C.useOverflowing;exports.useOverflowingAdvanced=L.useOverflowingAdvanced;exports.useOverflowingInContainer=O.useOverflowingInContainer;exports.usePermission=l.usePermission;exports.usePopover=c.usePopover;exports.useRemovePreviewLoader=s.useRemovePreviewLoader;exports.useResponsiveLayout=B.useResponsiveLayout;exports.useScreenWidth=_.useScreenWidth;exports.useSonner=d.useSonner;exports.useTypographyStyles=k.useTypographyStyles;
package/build/index.es.js CHANGED
@@ -27,7 +27,7 @@ import { n as So, t as lo } from "./context-screen-width-Cq_B7IVp.js";
27
27
  import { n as Po, t as go } from "./context-app-C9XoarPw.js";
28
28
  import { n as Mo, t as To } from "./context-browser-theme-CRBCZ_y_.js";
29
29
  import { n as Co, t as ho } from "./context-cookie-Daq2MZo3.js";
30
- import { n as ko, r as wo, t as Do } from "./context-dialog-CeqpejDW.js";
30
+ import { n as ko, r as wo, t as Do } from "./context-dialog-DzwL2ElF.js";
31
31
  import { n as Ro, t as Eo } from "./context-permission-Cj70kL4A.js";
32
32
  import { n as _o, t as Oo } from "./context-geolocation-B_KYGlfQ.js";
33
33
  import { n as Wo, t as bo } from "./context-local-storage-DA_whw_k.js";