@machinerd/js-module 0.3.1 → 0.4.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.
- package/README.md +147 -21
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +3 -18
- package/dist/hooks/index.d.mts +3 -18
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks-B6OJ8mCP.cjs +1 -0
- package/dist/hooks-Dr3L4nS9.mjs +1 -0
- package/dist/index-CWgr7lXX.d.cts +661 -0
- package/dist/index-CfKO4Lbp.d.mts +661 -0
- package/dist/index-DiZ4xS_f.d.mts +37 -0
- package/dist/index-OjfbEYpE.d.cts +37 -0
- package/dist/index.d.cts +1 -36
- package/dist/index.d.mts +1 -36
- package/dist/skeleton-BNKvM7GW.mjs +1 -0
- package/dist/skeleton-D80eauT0.cjs +1 -0
- package/dist/styles/index.css +331 -189
- package/dist/ui/index.cjs +1 -1
- package/dist/ui/index.d.cts +40 -272
- package/dist/ui/index.d.mts +47 -279
- package/dist/ui/index.mjs +1 -1
- package/dist/ui-client/index.cjs +1 -0
- package/dist/ui-client/index.d.cts +158 -0
- package/dist/ui-client/index.d.mts +158 -0
- package/dist/ui-client/index.mjs +1 -0
- package/dist/util/index.cjs +1 -1
- package/dist/util/index.d.cts +31 -22
- package/dist/util/index.d.mts +30 -22
- package/dist/util/index.mjs +1 -1
- package/dist/util-BMnQ9hLK.cjs +1 -0
- package/dist/util-BNSPNLzy.mjs +1 -0
- package/package.json +17 -13
- package/dist/hooks-C9M3V-Pb.mjs +0 -1
- package/dist/hooks-DPYIex_y.cjs +0 -1
- package/dist/ui/client-only/index.cjs +0 -1
- package/dist/ui/client-only/index.d.cts +0 -136
- package/dist/ui/client-only/index.d.mts +0 -136
- package/dist/ui/client-only/index.mjs +0 -1
- package/dist/util-BrmjOcya.mjs +0 -1
- package/dist/util-CDkao6z3.cjs +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { a as UseSubsetImageProps, n as BaseProps, o as UseSubsetImagePropsWithoutApiClient } from "../index-CfKO4Lbp.mjs";
|
|
2
|
+
import { t as ApiClient } from "../index-DiZ4xS_f.mjs";
|
|
3
|
+
import * as react1 from "react";
|
|
4
|
+
import React$1, { ComponentProps, HTMLAttributes, ReactNode } from "react";
|
|
5
|
+
import * as react_jsx_runtime3 from "react/jsx-runtime";
|
|
6
|
+
import { VariantProps } from "class-variance-authority";
|
|
7
|
+
import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
|
|
8
|
+
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
9
|
+
|
|
10
|
+
//#region src/ui-client/carousel/carousel-context.d.ts
|
|
11
|
+
type CarouselApi = UseEmblaCarouselType[1];
|
|
12
|
+
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
13
|
+
type CarouselOptions = UseCarouselParameters[0];
|
|
14
|
+
type CarouselPlugin = UseCarouselParameters[1];
|
|
15
|
+
interface CarouselProps {
|
|
16
|
+
options?: CarouselOptions;
|
|
17
|
+
plugins?: CarouselPlugin;
|
|
18
|
+
orientation?: 'horizontal' | 'vertical';
|
|
19
|
+
setApi?: (api: CarouselApi) => void;
|
|
20
|
+
}
|
|
21
|
+
type CarouselContextProps = {
|
|
22
|
+
carouselRef: ReturnType<typeof useEmblaCarousel>[0];
|
|
23
|
+
api: ReturnType<typeof useEmblaCarousel>[1];
|
|
24
|
+
scrollPrev: () => void;
|
|
25
|
+
scrollNext: () => void;
|
|
26
|
+
canScrollPrev: boolean;
|
|
27
|
+
canScrollNext: boolean;
|
|
28
|
+
} & CarouselProps;
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/ui-client/carousel/carousel.d.ts
|
|
31
|
+
interface CarouselProps$1 extends ComponentProps<'div'>, CarouselProps {
|
|
32
|
+
orientation?: 'horizontal' | 'vertical';
|
|
33
|
+
options?: CarouselProps['options'];
|
|
34
|
+
setApi?: CarouselProps['setApi'];
|
|
35
|
+
plugins?: CarouselProps['plugins'];
|
|
36
|
+
}
|
|
37
|
+
declare function Carousel({
|
|
38
|
+
orientation,
|
|
39
|
+
options,
|
|
40
|
+
setApi,
|
|
41
|
+
plugins,
|
|
42
|
+
className,
|
|
43
|
+
children,
|
|
44
|
+
...props
|
|
45
|
+
}: CarouselProps$1): react_jsx_runtime3.JSX.Element;
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/ui-client/carousel/carousel-wrapper.d.ts
|
|
48
|
+
declare function CarouselWrapper({
|
|
49
|
+
className,
|
|
50
|
+
...props
|
|
51
|
+
}: React$1.ComponentProps<'div'>): react_jsx_runtime3.JSX.Element;
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/ui-client/carousel/carousel-item.d.ts
|
|
54
|
+
declare function CarouselItem({
|
|
55
|
+
className,
|
|
56
|
+
...props
|
|
57
|
+
}: React$1.ComponentProps<'div'>): react_jsx_runtime3.JSX.Element;
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/ui-client/carousel/carousel-previous.d.ts
|
|
60
|
+
declare function CarouselPrevious({
|
|
61
|
+
children,
|
|
62
|
+
className,
|
|
63
|
+
...props
|
|
64
|
+
}: React$1.ComponentProps<'button'>): react_jsx_runtime3.JSX.Element;
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/ui-client/carousel/carousel-next.d.ts
|
|
67
|
+
declare function CarouselNext({
|
|
68
|
+
children,
|
|
69
|
+
className,
|
|
70
|
+
...props
|
|
71
|
+
}: React$1.ComponentProps<'button'>): react_jsx_runtime3.JSX.Element;
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src/ui-client/dialog/dialog.d.ts
|
|
74
|
+
declare const classes: (props?: ({
|
|
75
|
+
padding?: "none" | "sm" | "md" | "lg" | null | undefined;
|
|
76
|
+
maxWidth?: "sm" | "md" | "lg" | "xl" | "2xl" | "full" | null | undefined;
|
|
77
|
+
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
78
|
+
interface DialogProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof classes> {
|
|
79
|
+
closeOnBackdropClick?: boolean;
|
|
80
|
+
isOpen: boolean;
|
|
81
|
+
zIndex?: number;
|
|
82
|
+
onClose: () => void;
|
|
83
|
+
children: ReactNode;
|
|
84
|
+
}
|
|
85
|
+
declare function Dialog({
|
|
86
|
+
closeOnBackdropClick,
|
|
87
|
+
isOpen,
|
|
88
|
+
zIndex,
|
|
89
|
+
padding,
|
|
90
|
+
maxWidth,
|
|
91
|
+
className,
|
|
92
|
+
onClose,
|
|
93
|
+
children,
|
|
94
|
+
...rest
|
|
95
|
+
}: DialogProps): react_jsx_runtime3.JSX.Element | null;
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/ui-client/image/image.d.ts
|
|
98
|
+
type ImageSubsetProps = {
|
|
99
|
+
layout?: 'intrinsic' | 'stretch';
|
|
100
|
+
skeleton?: boolean;
|
|
101
|
+
emptyNode?: React.ReactNode;
|
|
102
|
+
emptyNodeClassName?: string;
|
|
103
|
+
skeletonClassName?: string;
|
|
104
|
+
};
|
|
105
|
+
type ImageProps = UseSubsetImageProps & ImageSubsetProps;
|
|
106
|
+
type ImagePropsWithoutApiClient = UseSubsetImagePropsWithoutApiClient & ImageSubsetProps;
|
|
107
|
+
declare const BaseImage: react1.ForwardRefExoticComponent<(Omit<Omit<BaseProps, "apiClient"> & {
|
|
108
|
+
fill: true;
|
|
109
|
+
sizes: string;
|
|
110
|
+
width?: never;
|
|
111
|
+
height?: never;
|
|
112
|
+
} & {
|
|
113
|
+
apiClient: ApiClient;
|
|
114
|
+
}, "ref"> | Omit<Omit<BaseProps, "apiClient"> & {
|
|
115
|
+
fill?: false;
|
|
116
|
+
sizes?: never;
|
|
117
|
+
width: number;
|
|
118
|
+
height: number;
|
|
119
|
+
} & {
|
|
120
|
+
apiClient: ApiClient;
|
|
121
|
+
}, "ref">) & react1.RefAttributes<HTMLImageElement>>;
|
|
122
|
+
declare const Image: react1.ForwardRefExoticComponent<(Omit<Omit<BaseProps, "apiClient"> & {
|
|
123
|
+
fill: true;
|
|
124
|
+
sizes: string;
|
|
125
|
+
width?: never;
|
|
126
|
+
height?: never;
|
|
127
|
+
} & {
|
|
128
|
+
apiClient: ApiClient;
|
|
129
|
+
} & ImageSubsetProps, "ref"> | Omit<Omit<BaseProps, "apiClient"> & {
|
|
130
|
+
fill?: false;
|
|
131
|
+
sizes?: never;
|
|
132
|
+
width: number;
|
|
133
|
+
height: number;
|
|
134
|
+
} & {
|
|
135
|
+
apiClient: ApiClient;
|
|
136
|
+
} & ImageSubsetProps, "ref">) & react1.RefAttributes<HTMLImageElement>>;
|
|
137
|
+
interface EmptyNodeProps {
|
|
138
|
+
children: React.ReactNode;
|
|
139
|
+
className?: string;
|
|
140
|
+
}
|
|
141
|
+
declare const EmptyNode: ({
|
|
142
|
+
children,
|
|
143
|
+
className
|
|
144
|
+
}: EmptyNodeProps) => react_jsx_runtime3.JSX.Element;
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/ui-client/tooltip/tooltip-container.d.ts
|
|
147
|
+
type SubPlacement = 'start' | 'end';
|
|
148
|
+
type MainPlacement = 'top' | 'bottom';
|
|
149
|
+
type TooltipPlacement = MainPlacement | `${MainPlacement}-${SubPlacement}`;
|
|
150
|
+
interface TooltipContainerProps extends HTMLAttributes<HTMLDivElement> {
|
|
151
|
+
children: React.ReactNode;
|
|
152
|
+
content: string;
|
|
153
|
+
placement?: TooltipPlacement;
|
|
154
|
+
defaultOpen?: boolean;
|
|
155
|
+
}
|
|
156
|
+
declare const TooltipContainer: react1.ForwardRefExoticComponent<TooltipContainerProps & react1.RefAttributes<HTMLDivElement>>;
|
|
157
|
+
//#endregion
|
|
158
|
+
export { BaseImage, Carousel, type CarouselApi, type CarouselContextProps, CarouselItem, CarouselNext, type CarouselOptions, type CarouselPlugin, CarouselPrevious, type CarouselProps, CarouselWrapper, Dialog, type DialogProps, EmptyNode, type EmptyNodeProps, Image, type ImageProps, type ImagePropsWithoutApiClient, type ImageSubsetProps, TooltipContainer as Tooltip, type TooltipContainerProps as TooltipProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{y as e}from"../util-BNSPNLzy.mjs";import{t}from"../skeleton-BNKvM7GW.mjs";import{c as n,o as r,r as i}from"../hooks-Dr3L4nS9.mjs";import{debounce as a}from"lodash-es";import o from"clsx";import s,{forwardRef as c,useCallback as l,useEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import{cva as _}from"class-variance-authority";import v from"embla-carousel-react";import{createPortal as y}from"react-dom";const b=s.createContext(null);function x(){let e=s.useContext(b);if(!e)throw Error(`useCarousel must be used within a <Carousel />`);return e}function S({orientation:t=`horizontal`,options:n,setApi:r,plugins:i,className:a,children:o,...s}){let[c,d]=v({...n,axis:t===`horizontal`?`x`:`y`},i),[f,m]=p(!1),[g,_]=p(!1),y=l(e=>{e&&(m(e.canScrollPrev()),_(e.canScrollNext()))},[]),x=l(()=>{d?.scrollPrev()},[d]),S=l(()=>{d?.scrollNext()},[d]),C=l(e=>{t===`horizontal`?e.key===`ArrowLeft`?(e.preventDefault(),x()):e.key===`ArrowRight`&&(e.preventDefault(),S()):e.key===`ArrowUp`?(e.preventDefault(),x()):e.key===`ArrowDown`&&(e.preventDefault(),S())},[x,S,t]);return u(()=>{!d||!r||r(d)},[d,r]),u(()=>{if(d)return y(d),d.on(`reInit`,y),d.on(`select`,y),()=>{d?.off(`select`,y)}},[d,y]),h(b.Provider,{value:{carouselRef:c,api:d,options:n,orientation:t||(n?.axis===`y`?`vertical`:`horizontal`),scrollPrev:x,scrollNext:S,canScrollPrev:f,canScrollNext:g},children:h(`div`,{"data-komc":!0,role:`region`,"aria-label":`carousel`,"aria-roledescription":`carousel`,tabIndex:0,onKeyDownCapture:C,className:e(`komc:relative`,a),...s,children:o})})}function C({className:t,...n}){let{carouselRef:r,orientation:i}=x();return h(`div`,{ref:r,"data-komc":!0,className:`komc:h-full komc:overflow-hidden`,children:h(`div`,{className:e(`komc:flex komc:h-full`,i===`horizontal`?`komc:-ml-4`:`komc:-mt-4 komc:flex-col`,t),...n})})}function w({className:t,...n}){let{orientation:r}=x();return h(`div`,{"data-komc":!0,className:e(`komc:min-w-0 komc:shrink-0 komc:grow-0 komc:basis-full`,r===`horizontal`?`komc:pl-4`:`komc:pt-4`,t),...n})}function T({children:e,className:t,...n}){let{scrollPrev:r,canScrollPrev:i}=x();return h(`button`,{type:`button`,"data-komc":!0,disabled:!i,"aria-label":`previous slide`,className:o(`komc:w-full`,t),onClick:r,...n,children:e})}function E({children:e,className:t,...n}){let{scrollNext:r,canScrollNext:i}=x();return h(`button`,{type:`button`,"data-komc":!0,disabled:!i,"aria-label":`next slide`,className:o(`komc:w-full`,t),onClick:r,...n,children:e})}const D=_(`komc:relative komc:z-10 komc:w-full komc:transition-all komc:duration-300 komc:ease-in-out`,{variants:{padding:{sm:`komc:p-2`,md:`komc:p-4`,lg:`komc:p-6`,none:`komc:p-0`},maxWidth:{sm:`komc:max-w-sm`,md:`komc:max-w-md`,lg:`komc:max-w-lg`,xl:`komc:max-w-xl`,"2xl":`komc:max-w-2xl`,full:`komc:max-w-full`}},defaultVariants:{padding:`sm`,maxWidth:`md`}});function O({closeOnBackdropClick:e=!0,isOpen:t,zIndex:r=1e4,padding:i,maxWidth:a,className:o,onClose:s,children:c,...d}){let f=n(t,300),[m,_]=p(!1);u(()=>{if(t&&f){let e=setTimeout(()=>_(!0),10);return()=>clearTimeout(e)}else t||_(!1)},[t,f]);let v=l(e=>{e.key===`Escape`&&s()},[s]),y=l(()=>{e&&s()},[e,s]);return u(()=>(t?(document.addEventListener(`keydown`,v),document.body.style.overflow=`hidden`):document.body.style.overflow=`unset`,()=>{document.removeEventListener(`keydown`,v),document.body.style.overflow=`unset`}),[t,v]),f?g(`div`,{"data-komc":!0,className:`komc:flex komc:justify-center komc:items-center komc:fixed komc:inset-0`,style:{zIndex:r},children:[h(`button`,{type:`button`,"data-state":m?`open`:`closed`,className:`komc:w-full komc:h-full komc:bg-black/50 komc:absolute komc:inset-0 komc:cursor-default komc:transition-opacity komc:duration-300 komc:ease-in-out komc:data-[state=closed]:opacity-0 komc:data-[state=open]:opacity-100`,onClick:y,"aria-label":`close dialog`}),h(`div`,{"data-state":m?`open`:`closed`,className:`${D({padding:i,maxWidth:a,className:o})} komc:data-[state=closed]:opacity-0 komc:data-[state=open]:opacity-100 komc:data-[state=closed]:scale-95 komc:data-[state=open]:scale-100`,role:`dialog`,"aria-modal":`true`,...d,children:c})]}):null}const k=_(``,{variants:{fill:{true:`komc:w-full komc:h-full komc:absolute komc:inset-0`,false:``}},defaultVariants:{fill:!1}}),A=c(({...e},t)=>{let{ref:n,imageProps:r}=i({ref:t,...e});return h(`img`,{ref:n,...r})}),j=c(({skeleton:e=!0,layout:n=`stretch`,fallbackSrc:r,className:a,emptyNode:s,emptyNodeClassName:c,skeletonClassName:l,...u},d)=>{let{ref:f,isLoad:p,isError:_,imageProps:v}=i({ref:d,fallbackSrc:r,forceLoad:!e,...u}),y=!u.fill&&n===`intrinsic`?{width:`${u.width}px`,height:`${u.height}px`}:void 0,b=o(`komc:flex komc:justify-center komc:items-center komc:relative komc:min-h-0`,!u.fill&&n===`stretch`&&`komc:w-full komc:h-full`);return!r&&_&&s?u.fill?h(M,{className:c,children:s}):h(`div`,{"data-komc":!0,style:y,className:b,children:h(M,{className:c,children:s})}):u.fill?g(m,{children:[h(`img`,{ref:f,...v,className:o(`komc:w-full komc:h-full komc:absolute komc:inset-0`,e&&!p?`komc:invisible`:`komc:visible`,a)}),h(`div`,{"data-komc":!0,className:o(`komc:w-full komc:h-full komc:absolute komc:inset-0`,e&&!p?`komc:block`:`komc:hidden`),children:h(t,{size:`full`,className:l})})]}):g(`div`,{"data-komc":!0,style:y,className:b,children:[h(`img`,{ref:f,...v,className:o(k({fill:u.fill,className:a}),e&&!p?`komc:invisible`:`komc:visible`)}),h(`div`,{className:o(`komc:w-full komc:h-full komc:absolute komc:inset-0`,e&&!p?`komc:block`:`komc:hidden`),children:h(t,{size:`full`,className:l})})]})}),M=({children:e,className:t})=>h(`div`,{"data-komc":!0,role:`alert`,className:o(`komc:flex komc:justify-center komc:items-center komc:w-full komc:h-full komc:bg-gray-100 komc:absolute komc:inset-0 komc:p-1`,t),children:e});var N=j;function P({children:e,setOpen:t}){return h(`div`,{"data-komc":!0,className:o(`komc:inline-flex komc:shrink-0 komc:justify-center`,`komc:items-center komc:outline-none`),onMouseLeave:()=>t(!1),onMouseOver:()=>t(!0),onFocus:()=>t(!0),onBlur:()=>t(!1),onClick:()=>t(!0),children:e})}const F=_(e(`komc:absolute komc:z-99 komc:w-max komc:max-w-70 komc:p-2 komc:rounded-md`,`komc:break-all komc:transition-opacity komc:duration-300 komc:bg-white`,`komc:drop-shadow-[0px_0.5px_3px_rgba(0,0,0,0.2)] komc:text-xs`),{variants:{portal:{true:``,false:``},placement:{top:``,bottom:``,"top-start":``,"top-end":``,"bottom-start":``,"bottom-end":``}},compoundVariants:[{portal:!0,placement:`top`,className:`komc:-translate-y-2`},{portal:!0,placement:`bottom`,className:`komc:translate-y-2`},{portal:!0,placement:`top-start`,className:`komc:-translate-y-2`},{portal:!0,placement:`top-end`,className:`komc:-translate-y-2`},{portal:!0,placement:`bottom-start`,className:`komc:translate-y-2`},{portal:!0,placement:`bottom-end`,className:`komc:translate-y-2`},{portal:!1,placement:`top`,className:`komc:bottom-full komc:left-1/2 komc:-translate-x-1/2`},{portal:!1,placement:`bottom`,className:`komc:top-full komc:left-1/2 komc:-translate-x-1/2`},{portal:!1,placement:`top-start`,className:`komc:bottom-full komc:left-0`},{portal:!1,placement:`top-end`,className:`komc:bottom-full komc:right-0`},{portal:!1,placement:`bottom-start`,className:`komc:top-full komc:left-0`},{portal:!1,placement:`bottom-end`,className:`komc:top-full komc:right-0`}],defaultVariants:{placement:`top`,portal:!1}});var I=c(({portal:e,children:t,className:n,placement:r,...i},a)=>h(`div`,{ref:a,"data-komc":!0,role:`tooltip`,className:F({portal:e,placement:r,className:n}),...i,children:t}));const L=_(e(`komc:absolute komc:w-2 komc:h-2 komc:bg-inherit`,`komc:transition-opacity komc:duration-300`),{variants:{placement:{top:e(`komc:top-full komc:-mt-1 komc:left-1/2`),bottom:e(`komc:bottom-full komc:-mb-1 komc:left-1/2`),"top-start":e(`komc:top-full komc:-mt-1 komc:left-5`),"top-end":e(`komc:top-full komc:-mt-1 komc:right-5`),"bottom-start":e(`komc:bottom-full komc:-mb-1 komc:left-5`),"bottom-end":e(`komc:bottom-full komc:-mb-1 komc:right-5`)}},defaultVariants:{placement:`top`}});var R=({placement:e,className:t,offset:n,style:r,...i})=>{let a=d(()=>{switch(e){case`top`:case`top-start`:case`top-end`:return`rotate(45deg)`;case`bottom`:case`bottom-start`:case`bottom-end`:return`rotate(225deg)`;default:return`rotate(45deg)`}},[e]);return h(`div`,{className:L({placement:e,className:t}),style:{transform:`translate(${n?.x}px, ${n?.y}px) ${a}`},...i})};const z=(e,t)=>{let[,n]=e.split(`-`);return n?`${t}-${n}`:t};function B({placement:e,className:t,content:n,open:r,hiddenRef:i,containerRef:s}){let[c,d]=p(!1),m=f(null),[_,v]=p(e),[b,x]=p({top:0,left:0}),[S,C]=p({x:0,y:0}),w=l(a(()=>{let e=s?.current,t=i.current;if(!e||!t)return;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),a=window.scrollY||document.documentElement.scrollTop,o=window.scrollX||document.documentElement.scrollLeft,[c,l]=_.split(`-`),u=a+n.top,d=o+n.left+n.width/2-r.width/2;switch(c){case`top`:u-=r.height;break;case`bottom`:u+=n.height;break}switch(l){case`start`:d+=r.width/2-24;break;case`end`:d-=r.width/2-24;break}let f=d,p=window.innerWidth;f+r.width>p-4&&(f=p-r.width-4),f<4&&(f=4),x({top:u,left:f}),C({x:d-f,y:0})},50),[_]),T=l(a(()=>{if(!i.current)return;let{top:t,height:n}=i.current.getBoundingClientRect();v(r=>{let i=e;return t+n>=window.innerHeight?i=z(r,`top`):t<0&&(i=z(r,`bottom`)),i})},50),[e]);return u(()=>(d(!0),T(),window.addEventListener(`scroll`,w,{passive:!0}),window.addEventListener(`resize`,w),window.addEventListener(`scroll`,T,{passive:!0}),window.addEventListener(`resize`,T),()=>{window.removeEventListener(`scroll`,w),window.removeEventListener(`resize`,w),window.removeEventListener(`scroll`,T),window.removeEventListener(`resize`,T)}),[w,T]),u(()=>{c&&w()},[c,w]),c?y(g(I,{ref:m,portal:!0,"data-komc":!0,placement:_,className:o(t,r?`komc:visible komc:opacity-100`:`komc:opacity-0 komc:invisible`),style:{...b},children:[h(`span`,{children:n}),h(R,{placement:_,offset:S})]}),document.body):null}var V=c(({children:e,content:t,defaultOpen:n=!1,className:i,placement:a=`top`},s)=>{let[c,l]=p(n),u=f(null),d=f(null);return r({ref:u,setOpen:l}),g(`div`,{ref:u,"data-komc":!0,className:`komc:flex komc:shrink-0 komc:relative komc:overflow-hidden komc:w-fit komc:h-fit`,children:[h(P,{setOpen:l,children:e}),h(B,{placement:a,className:i,open:c,content:t,hiddenRef:d,containerRef:u}),h(I,{ref:d,role:`presentation`,"aria-hidden":`true`,placement:a,className:o(`komc:opacity-0 komc:invisible`,i),children:h(`span`,{children:t})})]})});export{A as BaseImage,S as Carousel,w as CarouselItem,E as CarouselNext,T as CarouselPrevious,C as CarouselWrapper,O as Dialog,M as EmptyNode,N as Image,V as Tooltip};
|
package/dist/util/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../util-
|
|
1
|
+
const e=require(`../util-BMnQ9hLK.cjs`);exports.appendSearchPath=e.z,exports.calcPageCount=e.v,exports.clearQueryByKey=e.B,exports.clearSearchPath=e.V,exports.cn=e.y,exports.comparePriorityAsc=e.b,exports.composeKey=e.x,exports.deleteAllSearchHistory=e.H,exports.deleteSearchHistory=e.U,exports.displayDatetime=e._,exports.existLeastOne=e.S,exports.formatBytes=e.d,exports.formatCompactNumber=e.o,exports.formatExceedNumber=e.s,exports.formatI18nNumber=e.c,exports.formatKoNumber=e.l,exports.genNanoID=e.t,exports.generatePage=e.n,exports.generatePageGroup=e.r,exports.getCookie=e.W,exports.getFileExtension=e.f,exports.getFilename=e.p,exports.getFirstLocationAddress=e.C,exports.getFullAddress=e.w,exports.getI18nKey=e.T,exports.getI18nValue=e.E,exports.getI18nValues=e.D,exports.getModelName=e.O,exports.getSearchHistory=e.G,exports.getYoutubeVideoId=e.K,exports.insertSearchHistory=e.q,exports.isExternalSrc=e.m,exports.isSearchPage=e.J,exports.isSrcSetCompatible=e.h,exports.link=e.k,exports.loadExLib=e.A,exports.parsePath=e.g,exports.parseQuery=e.j,exports.printNanoID=e.i,exports.productSlugify=e.M,exports.randomNum=e.a,exports.recomposeI18nNumber=e.u,exports.selectItemByWeight=e.N,exports.setCookies=e.Y,exports.shuffle=e.P,exports.sleep=e.F,exports.slugify=e.I,exports.withoutProperties=e.L,exports.withoutProperty=e.R;
|
package/dist/util/index.d.cts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { PhoneNumberFormat } from "google-libphonenumber";
|
|
2
|
+
|
|
1
3
|
//#region src/util/browser.d.ts
|
|
2
4
|
declare const getCookie: (key: string) => string | undefined;
|
|
3
5
|
declare const setCookies: (key: string, value: string, options?: Cookies.CookieAttributes) => string | undefined;
|
|
@@ -11,29 +13,13 @@ declare const clearSearchPath: (pathname: string) => string;
|
|
|
11
13
|
declare const clearQueryByKey: (query: Record<string, any>, key: string) => {
|
|
12
14
|
[k: string]: string;
|
|
13
15
|
};
|
|
16
|
+
declare const getYoutubeVideoId: (youtubeURL?: string | null) => string;
|
|
14
17
|
//#endregion
|
|
15
18
|
//#region src/util/common.d.ts
|
|
16
19
|
declare const link: (param: Record<string, string>, deleteKeys?: string[]) => string;
|
|
17
20
|
declare const calcPageCount: (total: number, perPage: number) => number;
|
|
18
21
|
declare const shuffle: <T>(arr: T[]) => T[];
|
|
19
22
|
declare const loadExLib: (callback: () => void) => void;
|
|
20
|
-
declare const recomposeI18nNumber: (locale: string, number?: string | null, i18nNumber?: string | null) => string;
|
|
21
|
-
interface Country {
|
|
22
|
-
alpha2Code: string;
|
|
23
|
-
callingCode: string;
|
|
24
|
-
}
|
|
25
|
-
interface I18nNumberProps<C extends Country = Country> {
|
|
26
|
-
phone?: string | null;
|
|
27
|
-
country?: C | null;
|
|
28
|
-
format?: number;
|
|
29
|
-
locale?: string | null;
|
|
30
|
-
}
|
|
31
|
-
declare const formatI18nNumber: ({
|
|
32
|
-
phone,
|
|
33
|
-
country,
|
|
34
|
-
format,
|
|
35
|
-
locale
|
|
36
|
-
}: I18nNumberProps) => string;
|
|
37
23
|
declare const slugify: (base: string | number, ...args: Array<string | undefined>) => string;
|
|
38
24
|
interface Product<I extends I18n = I18n> {
|
|
39
25
|
id: number;
|
|
@@ -62,9 +48,9 @@ declare const getI18nValue: <T extends {
|
|
|
62
48
|
}>(locale?: string, values?: T[], key?: keyof T) => string;
|
|
63
49
|
declare const comparePriorityAsc: <T extends {
|
|
64
50
|
priority: number;
|
|
65
|
-
}>(a: T, b: T) =>
|
|
51
|
+
}>(a: T, b: T) => 0 | 1 | -1;
|
|
66
52
|
declare const parseQuery: <T, F = T>(q: string | string[] | undefined | null, conv: (v: string) => T, fallback: F) => T | F;
|
|
67
|
-
declare const withoutProperty: <T>(obj: T, property:
|
|
53
|
+
declare const withoutProperty: <T, K extends keyof T>(obj: T, property: K) => Omit<T, K>;
|
|
68
54
|
declare const withoutProperties: <T extends Record<string, unknown>>(obj: T, properties: Array<keyof T>) => T;
|
|
69
55
|
declare const existLeastOne: <T>(a: T[], b: T[]) => boolean;
|
|
70
56
|
declare const getI18nKey: (key: string) => string | undefined;
|
|
@@ -84,6 +70,9 @@ declare const selectItemByWeight: <T extends {
|
|
|
84
70
|
declare const sleep: (ms: number) => Promise<unknown>;
|
|
85
71
|
declare const cn: (...classes: Array<string | false | null | undefined>) => string;
|
|
86
72
|
//#endregion
|
|
73
|
+
//#region src/util/date.d.ts
|
|
74
|
+
declare const displayDatetime: (date: string, format?: string, locale?: string) => string;
|
|
75
|
+
//#endregion
|
|
87
76
|
//#region src/util/file.d.ts
|
|
88
77
|
declare function formatBytes(bytes: number, decimals?: number): string;
|
|
89
78
|
declare const getFilename: (s: string) => string;
|
|
@@ -95,9 +84,29 @@ interface PathInfo {
|
|
|
95
84
|
filenameWithoutExtension: string;
|
|
96
85
|
}
|
|
97
86
|
declare const parsePath: (filepath: string, folder?: string) => PathInfo;
|
|
87
|
+
declare const isExternalSrc: (src: string) => boolean;
|
|
88
|
+
declare const isSrcSetCompatible: (src: string) => boolean;
|
|
98
89
|
//#endregion
|
|
99
|
-
//#region src/util/
|
|
100
|
-
declare const
|
|
90
|
+
//#region src/util/format.d.ts
|
|
91
|
+
declare const formatCompactNumber: (number: number, locale?: string, options?: Intl.NumberFormatOptions) => string;
|
|
92
|
+
declare const formatExceedNumber: (number: number, threshold: number, suffix?: string) => string;
|
|
93
|
+
declare const formatKoNumber: (number?: number | string | null) => string;
|
|
94
|
+
declare const recomposeI18nNumber: (locale: string, number?: string | null, i18nNumber?: string | null) => string;
|
|
95
|
+
type PhoneFormatType = 'international' | 'national' | 'rfc3966';
|
|
96
|
+
interface I18nNumberProps {
|
|
97
|
+
phone?: string | null;
|
|
98
|
+
alpha2Code?: string;
|
|
99
|
+
callingCode?: string;
|
|
100
|
+
format?: PhoneNumberFormat;
|
|
101
|
+
locale?: string;
|
|
102
|
+
}
|
|
103
|
+
declare const formatI18nNumber: ({
|
|
104
|
+
phone,
|
|
105
|
+
alpha2Code,
|
|
106
|
+
callingCode,
|
|
107
|
+
format,
|
|
108
|
+
locale
|
|
109
|
+
}: I18nNumberProps) => string;
|
|
101
110
|
//#endregion
|
|
102
111
|
//#region src/util/generator.d.ts
|
|
103
112
|
declare const randomNum: (min: number, max: number, count?: number) => number[];
|
|
@@ -116,4 +125,4 @@ declare const generatePageGroup: (count: number, page: number, pagePerView: numb
|
|
|
116
125
|
items: number[];
|
|
117
126
|
};
|
|
118
127
|
//#endregion
|
|
119
|
-
export { I18nNumberProps, appendSearchPath, calcPageCount, clearQueryByKey, clearSearchPath, cn, comparePriorityAsc, composeKey, deleteAllSearchHistory, deleteSearchHistory, displayDatetime, existLeastOne, formatBytes, formatI18nNumber, genNanoID, generatePage, generatePageGroup, getCookie, getFileExtension, getFilename, getFirstLocationAddress, getFullAddress, getI18nKey, getI18nValue, getI18nValues, getModelName, getSearchHistory, insertSearchHistory, isSearchPage, link, loadExLib, parsePath, parseQuery, printNanoID, productSlugify, randomNum, recomposeI18nNumber, selectItemByWeight, setCookies, shuffle, sleep, slugify, withoutProperties, withoutProperty };
|
|
128
|
+
export { I18nNumberProps, PhoneFormatType, appendSearchPath, calcPageCount, clearQueryByKey, clearSearchPath, cn, comparePriorityAsc, composeKey, deleteAllSearchHistory, deleteSearchHistory, displayDatetime, existLeastOne, formatBytes, formatCompactNumber, formatExceedNumber, formatI18nNumber, formatKoNumber, genNanoID, generatePage, generatePageGroup, getCookie, getFileExtension, getFilename, getFirstLocationAddress, getFullAddress, getI18nKey, getI18nValue, getI18nValues, getModelName, getSearchHistory, getYoutubeVideoId, insertSearchHistory, isExternalSrc, isSearchPage, isSrcSetCompatible, link, loadExLib, parsePath, parseQuery, printNanoID, productSlugify, randomNum, recomposeI18nNumber, selectItemByWeight, setCookies, shuffle, sleep, slugify, withoutProperties, withoutProperty };
|
package/dist/util/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "dayjs/locale/ko.js";
|
|
2
|
+
import { PhoneNumberFormat } from "google-libphonenumber";
|
|
2
3
|
|
|
3
4
|
//#region src/util/browser.d.ts
|
|
4
5
|
declare const getCookie: (key: string) => string | undefined;
|
|
@@ -13,29 +14,13 @@ declare const clearSearchPath: (pathname: string) => string;
|
|
|
13
14
|
declare const clearQueryByKey: (query: Record<string, any>, key: string) => {
|
|
14
15
|
[k: string]: string;
|
|
15
16
|
};
|
|
17
|
+
declare const getYoutubeVideoId: (youtubeURL?: string | null) => string;
|
|
16
18
|
//#endregion
|
|
17
19
|
//#region src/util/common.d.ts
|
|
18
20
|
declare const link: (param: Record<string, string>, deleteKeys?: string[]) => string;
|
|
19
21
|
declare const calcPageCount: (total: number, perPage: number) => number;
|
|
20
22
|
declare const shuffle: <T>(arr: T[]) => T[];
|
|
21
23
|
declare const loadExLib: (callback: () => void) => void;
|
|
22
|
-
declare const recomposeI18nNumber: (locale: string, number?: string | null, i18nNumber?: string | null) => string;
|
|
23
|
-
interface Country {
|
|
24
|
-
alpha2Code: string;
|
|
25
|
-
callingCode: string;
|
|
26
|
-
}
|
|
27
|
-
interface I18nNumberProps<C extends Country = Country> {
|
|
28
|
-
phone?: string | null;
|
|
29
|
-
country?: C | null;
|
|
30
|
-
format?: number;
|
|
31
|
-
locale?: string | null;
|
|
32
|
-
}
|
|
33
|
-
declare const formatI18nNumber: ({
|
|
34
|
-
phone,
|
|
35
|
-
country,
|
|
36
|
-
format,
|
|
37
|
-
locale
|
|
38
|
-
}: I18nNumberProps) => string;
|
|
39
24
|
declare const slugify: (base: string | number, ...args: Array<string | undefined>) => string;
|
|
40
25
|
interface Product<I extends I18n = I18n> {
|
|
41
26
|
id: number;
|
|
@@ -64,9 +49,9 @@ declare const getI18nValue: <T extends {
|
|
|
64
49
|
}>(locale?: string, values?: T[], key?: keyof T) => string;
|
|
65
50
|
declare const comparePriorityAsc: <T extends {
|
|
66
51
|
priority: number;
|
|
67
|
-
}>(a: T, b: T) =>
|
|
52
|
+
}>(a: T, b: T) => 0 | 1 | -1;
|
|
68
53
|
declare const parseQuery: <T, F = T>(q: string | string[] | undefined | null, conv: (v: string) => T, fallback: F) => T | F;
|
|
69
|
-
declare const withoutProperty: <T>(obj: T, property:
|
|
54
|
+
declare const withoutProperty: <T, K extends keyof T>(obj: T, property: K) => Omit<T, K>;
|
|
70
55
|
declare const withoutProperties: <T extends Record<string, unknown>>(obj: T, properties: Array<keyof T>) => T;
|
|
71
56
|
declare const existLeastOne: <T>(a: T[], b: T[]) => boolean;
|
|
72
57
|
declare const getI18nKey: (key: string) => string | undefined;
|
|
@@ -86,6 +71,9 @@ declare const selectItemByWeight: <T extends {
|
|
|
86
71
|
declare const sleep: (ms: number) => Promise<unknown>;
|
|
87
72
|
declare const cn: (...classes: Array<string | false | null | undefined>) => string;
|
|
88
73
|
//#endregion
|
|
74
|
+
//#region src/util/date.d.ts
|
|
75
|
+
declare const displayDatetime: (date: string, format?: string, locale?: string) => string;
|
|
76
|
+
//#endregion
|
|
89
77
|
//#region src/util/file.d.ts
|
|
90
78
|
declare function formatBytes(bytes: number, decimals?: number): string;
|
|
91
79
|
declare const getFilename: (s: string) => string;
|
|
@@ -97,9 +85,29 @@ interface PathInfo {
|
|
|
97
85
|
filenameWithoutExtension: string;
|
|
98
86
|
}
|
|
99
87
|
declare const parsePath: (filepath: string, folder?: string) => PathInfo;
|
|
88
|
+
declare const isExternalSrc: (src: string) => boolean;
|
|
89
|
+
declare const isSrcSetCompatible: (src: string) => boolean;
|
|
100
90
|
//#endregion
|
|
101
|
-
//#region src/util/
|
|
102
|
-
declare const
|
|
91
|
+
//#region src/util/format.d.ts
|
|
92
|
+
declare const formatCompactNumber: (number: number, locale?: string, options?: Intl.NumberFormatOptions) => string;
|
|
93
|
+
declare const formatExceedNumber: (number: number, threshold: number, suffix?: string) => string;
|
|
94
|
+
declare const formatKoNumber: (number?: number | string | null) => string;
|
|
95
|
+
declare const recomposeI18nNumber: (locale: string, number?: string | null, i18nNumber?: string | null) => string;
|
|
96
|
+
type PhoneFormatType = 'international' | 'national' | 'rfc3966';
|
|
97
|
+
interface I18nNumberProps {
|
|
98
|
+
phone?: string | null;
|
|
99
|
+
alpha2Code?: string;
|
|
100
|
+
callingCode?: string;
|
|
101
|
+
format?: PhoneNumberFormat;
|
|
102
|
+
locale?: string;
|
|
103
|
+
}
|
|
104
|
+
declare const formatI18nNumber: ({
|
|
105
|
+
phone,
|
|
106
|
+
alpha2Code,
|
|
107
|
+
callingCode,
|
|
108
|
+
format,
|
|
109
|
+
locale
|
|
110
|
+
}: I18nNumberProps) => string;
|
|
103
111
|
//#endregion
|
|
104
112
|
//#region src/util/generator.d.ts
|
|
105
113
|
declare const randomNum: (min: number, max: number, count?: number) => number[];
|
|
@@ -118,4 +126,4 @@ declare const generatePageGroup: (count: number, page: number, pagePerView: numb
|
|
|
118
126
|
items: number[];
|
|
119
127
|
};
|
|
120
128
|
//#endregion
|
|
121
|
-
export { I18nNumberProps, appendSearchPath, calcPageCount, clearQueryByKey, clearSearchPath, cn, comparePriorityAsc, composeKey, deleteAllSearchHistory, deleteSearchHistory, displayDatetime, existLeastOne, formatBytes, formatI18nNumber, genNanoID, generatePage, generatePageGroup, getCookie, getFileExtension, getFilename, getFirstLocationAddress, getFullAddress, getI18nKey, getI18nValue, getI18nValues, getModelName, getSearchHistory, insertSearchHistory, isSearchPage, link, loadExLib, parsePath, parseQuery, printNanoID, productSlugify, randomNum, recomposeI18nNumber, selectItemByWeight, setCookies, shuffle, sleep, slugify, withoutProperties, withoutProperty };
|
|
129
|
+
export { I18nNumberProps, PhoneFormatType, appendSearchPath, calcPageCount, clearQueryByKey, clearSearchPath, cn, comparePriorityAsc, composeKey, deleteAllSearchHistory, deleteSearchHistory, displayDatetime, existLeastOne, formatBytes, formatCompactNumber, formatExceedNumber, formatI18nNumber, formatKoNumber, genNanoID, generatePage, generatePageGroup, getCookie, getFileExtension, getFilename, getFirstLocationAddress, getFullAddress, getI18nKey, getI18nValue, getI18nValues, getModelName, getSearchHistory, getYoutubeVideoId, insertSearchHistory, isExternalSrc, isSearchPage, isSrcSetCompatible, link, loadExLib, parsePath, parseQuery, printNanoID, productSlugify, randomNum, recomposeI18nNumber, selectItemByWeight, setCookies, shuffle, sleep, slugify, withoutProperties, withoutProperty };
|
package/dist/util/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,P as h,R as g,S as _,T as v,U as y,V as b,W as x,Y as S,_ as C,a as w,b as T,c as E,d as D,f as O,g as k,h as A,i as j,j as M,k as N,l as P,m as F,n as I,o as L,p as R,q as z,r as B,s as V,t as H,u as U,v as W,w as G,x as K,y as q,z as J}from"../util-BNSPNLzy.mjs";export{J as appendSearchPath,W as calcPageCount,t as clearQueryByKey,b as clearSearchPath,q as cn,T as comparePriorityAsc,K as composeKey,s as deleteAllSearchHistory,y as deleteSearchHistory,C as displayDatetime,_ as existLeastOne,D as formatBytes,L as formatCompactNumber,V as formatExceedNumber,E as formatI18nNumber,P as formatKoNumber,H as genNanoID,I as generatePage,B as generatePageGroup,x as getCookie,O as getFileExtension,R as getFilename,n as getFirstLocationAddress,G as getFullAddress,v as getI18nKey,i as getI18nValue,r as getI18nValues,m as getModelName,o as getSearchHistory,u as getYoutubeVideoId,z as insertSearchHistory,F as isExternalSrc,l as isSearchPage,A as isSrcSetCompatible,N as link,e as loadExLib,k as parsePath,M as parseQuery,j as printNanoID,f as productSlugify,w as randomNum,U as recomposeI18nNumber,p as selectItemByWeight,S as setCookies,h as shuffle,a as sleep,c as slugify,d as withoutProperties,g as withoutProperty};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`js-cookie`);t=e.t(t);let n=require(`query-string`);n=e.t(n);let r=require(`lodash-es`),i=require(`slug`);i=e.t(i);let a=require(`dayjs`);a=e.t(a),require(`dayjs/locale/ko.js`);let o=require(`dayjs/plugin/relativeTime.js`);o=e.t(o);let s=require(`google-libphonenumber`),c=require(`nanoid`);const l=e=>t.default.get(e),u=(e,n,r)=>t.default.set(e,n,r),d=()=>typeof window>`u`?[]:JSON.parse(localStorage.getItem(`search-history`)||`[]`),f=e=>{let t=(0,r.uniq)([e,...d()]).slice(0,10);return localStorage.setItem(`search-history`,JSON.stringify(t)),t},p=e=>{let t=d();return t.splice(e,1),localStorage.setItem(`search-history`,JSON.stringify(t)),t},m=()=>{localStorage.setItem(`search-history`,JSON.stringify([]))},h=e=>e.endsWith(`/search`),g=e=>h(e)?e:`${e}/search`.replace(`//`,`/`),_=e=>e.replace(`/search`,``).replace(`//`,`/`),ee=(e,t)=>{let n=new URLSearchParams(e);return n.delete(t),Object.fromEntries(n)},te=e=>{if(!e)return``;try{let t=new URL(e);if(t.hostname===`youtu.be`)return t.pathname.slice(1).split(`?`)[0];let n=t.searchParams.get(`v`);if(n)return n;let r=t.pathname.match(/\/(?:embed|shorts|v)\/([^/?]+)/);if(r)return r[1]}catch{let t=e.match(/(?:v=|youtu\.be\/|embed\/|shorts\/)([^&?/\s]{11})/);if(t)return t[1]}return``};i.default.extend({'"':`-`,"”":`-`,"“":`-`,"•":`----`}),i.default.setLocale(`en`);const v=(e,t=[])=>{if(typeof window>`u`)return``;let{hash:r,search:i}=window.location,a=n.default.parse(i);Object.keys(e).forEach(t=>{e[t]?a[t]=e[t]:delete a[t]});let o={...a};return Object.keys(a).forEach(e=>{t.includes(e)&&delete o[e]}),`?${n.default.stringify(o,{encode:!0})}${r}`},y=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},b=e=>{let t=[...e];for(let e=t.length-1;e>0;e--){let n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t},x=e=>{let t=document.getElementById(`naverMapLib`);if(!t){let t=document.createElement(`script`);t.src=`https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=ecs1pyoo9b`,t.id=`naverMapLib`,document.body.appendChild(t),t.onload=()=>{e&&e()}}t&&e&&e()},S=(e,...t)=>{let n=`${e}`;return t.forEach(e=>{e&&(n=`${n}-${(0,i.default)(e)}`)}),n},C=e=>{let t=[];e.i18n?.forEach(e=>{e.locale===`en`&&e.name&&t.push(e.name)});let n=e.series?.i18n.find(e=>e.locale===`en`);return n?.name&&t.push(n.name.toLowerCase()),e.stockNo&&t.push(e.stockNo[0]),S(e.id,...t)},w=e=>{let t=e;return t.length>0?t[0].trim():``},T=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(D);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}for(let e of r){let t=e[n];if(!(Array.isArray(t)&&t.length===0)&&t)return t}return``},E=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(D);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}let i=``;for(let e of r){let t=e[n];if(t){i=String(t);break}}return i},D=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,O=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},k=(e,t)=>{let{[t]:n,...r}=e;return r},A=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),j=(e,t)=>(0,r.intersection)(e,t).length>0,M=e=>e.split(`:`).pop()?.split(`.`).pop(),N=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),P=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?F(e,n.i18n):`-`},F=(e=`en`,t)=>{if(t.length===0)return``;let n=T(e,t,`address1`)?.replace(`대한민국`,``)||``,r=t.find(t=>t.locale===e)?.address2,i=[n];return e===`ko`?i.push(r):i.unshift(r),i.filter(Boolean).join(`, `).trim()},I=e=>{let t=0;for(let n of e)t+=n.weight;let n=Math.random()*t,r=0;for(let t of e)if(r+=t.weight,n<r)return t;return e[e.length-1]},ne=e=>new Promise(t=>setTimeout(t,e)),L=(...e)=>e.filter(Boolean).join(` `);a.default.extend(o.default);const R=(e,t=`YYYY-MM-DD`,n=`en`)=>{let r=(0,a.default)(e).locale(n);return(0,a.default)().diff(r,`hour`)<12?r.fromNow():r.format(t)};function z(e,t=0){if(e==0)return`0 Bytes`;let n=1024,r=t,i=[`Bytes`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=Math.floor(Math.log(e)/Math.log(n));return parseFloat((e/n**+a).toFixed(r))+` `+i[a]}const B=e=>e.split(`.`).slice(0,-1).join(`.`),V=e=>e.split(`.`).pop(),H=(e,t)=>{let n={directory:``,filename:``,extension:``,filenameWithoutExtension:``},r=e.lastIndexOf(`/`),i=r>=0?e.substring(r+1):e,a=i.lastIndexOf(`.`),o=a>0?i.substring(a+1):``,s=a>0?i.substring(0,a):i;if(n.filename=i,n.extension=o,n.filenameWithoutExtension=s,e.startsWith(`http`)){let r=t?`/${t}/`:`/`,i=e.indexOf(r);if(i!==-1){let t=e.substring(i+r.length),a=t.lastIndexOf(`/`);return n.directory=a===-1?``:t.substring(0,a),n}}return n.directory=r===-1?``:e.substring(0,r),n},U=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),W=[`svg`,`gif`],G=e=>{if(!e||e.startsWith(`blob:`)||e.startsWith(`data:`))return!1;let t=e.lastIndexOf(`/`),n=t>=0?e.substring(t+1):e,r=n.lastIndexOf(`.`),i=r>0?n.substring(r+1):``;return!W.includes(i?.toLowerCase()??``)},K=s.PhoneNumberUtil.getInstance(),q=(e,t=`en-US`,n)=>new Intl.NumberFormat(t,{notation:`compact`,maximumFractionDigits:1,...n}).format(e),J=(e,t,n=`+`)=>e>t?`${t}${n}`:String(e),Y=e=>e?.toLocaleString(`ko-KR`)||`0`,X=(e,t,n)=>t?e===`ko`&&n&&n!==`82`||e!==`ko`&&n?`+${n}-${t.replace(/^0/,``)}`:t:`-`,Z=({phone:e,alpha2Code:t,callingCode:n,format:r=s.PhoneNumberFormat.RFC3966,locale:i=`en`})=>{if(!e?.trim())return``;try{let n=K.parse(e,t);return K.format(n,r)}catch{return X(i,e,n)}},re=(e,t)=>{let n=[];for(let r=e;r<t;r++)n.push(r);return n},ie=(e,t,n=1)=>{let r=[],i=re(e,t);for(;r.length<n;){let t=Math.ceil(e),n=Math.floor(i.length),a=Math.floor(Math.random()*(n-t))+t,o=i.splice(a,1);r.push(o[0])}return[...r]},Q=()=>(0,c.customAlphabet)(`0123456789abcdefghijklmnopqrstuvwxyz`,5)(),ae=e=>{for(let t=0;t<e;t++)console.log(Q())},$=(e,t,n)=>{let r=Math.floor((t-1)/n),i=r*n+1;return{current:r,start:i,end:Math.min(i+n-1,e)}},oe=(e,t,n)=>{let{start:r,end:i}=$(e,t,n),a=r-1<1?1:r-1,o=i+1>e?e:i+1,s=Array.from({length:i-r+1},(e,t)=>r+t);return{prev:a,next:o,isPrev:a!==1,isNext:i<e,items:s}};Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`G`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`H`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`W`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`Y`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return g}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"js-cookie";import t from"query-string";import{intersection as n,uniq as r}from"lodash-es";import i from"slug";import a from"dayjs";import"dayjs/locale/ko.js";import o from"dayjs/plugin/relativeTime.js";import{PhoneNumberFormat as s,PhoneNumberUtil as c}from"google-libphonenumber";import{customAlphabet as l}from"nanoid";const u=t=>e.get(t),d=(t,n,r)=>e.set(t,n,r),f=()=>typeof window>`u`?[]:JSON.parse(localStorage.getItem(`search-history`)||`[]`),p=e=>{let t=r([e,...f()]).slice(0,10);return localStorage.setItem(`search-history`,JSON.stringify(t)),t},m=e=>{let t=f();return t.splice(e,1),localStorage.setItem(`search-history`,JSON.stringify(t)),t},h=()=>{localStorage.setItem(`search-history`,JSON.stringify([]))},g=e=>e.endsWith(`/search`),_=e=>g(e)?e:`${e}/search`.replace(`//`,`/`),ee=e=>e.replace(`/search`,``).replace(`//`,`/`),te=(e,t)=>{let n=new URLSearchParams(e);return n.delete(t),Object.fromEntries(n)},v=e=>{if(!e)return``;try{let t=new URL(e);if(t.hostname===`youtu.be`)return t.pathname.slice(1).split(`?`)[0];let n=t.searchParams.get(`v`);if(n)return n;let r=t.pathname.match(/\/(?:embed|shorts|v)\/([^/?]+)/);if(r)return r[1]}catch{let t=e.match(/(?:v=|youtu\.be\/|embed\/|shorts\/)([^&?/\s]{11})/);if(t)return t[1]}return``};i.extend({'"':`-`,"”":`-`,"“":`-`,"•":`----`}),i.setLocale(`en`);const y=(e,n=[])=>{if(typeof window>`u`)return``;let{hash:r,search:i}=window.location,a=t.parse(i);Object.keys(e).forEach(t=>{e[t]?a[t]=e[t]:delete a[t]});let o={...a};return Object.keys(a).forEach(e=>{n.includes(e)&&delete o[e]}),`?${t.stringify(o,{encode:!0})}${r}`},b=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},x=e=>{let t=[...e];for(let e=t.length-1;e>0;e--){let n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t},S=e=>{let t=document.getElementById(`naverMapLib`);if(!t){let t=document.createElement(`script`);t.src=`https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=ecs1pyoo9b`,t.id=`naverMapLib`,document.body.appendChild(t),t.onload=()=>{e&&e()}}t&&e&&e()},C=(e,...t)=>{let n=`${e}`;return t.forEach(e=>{e&&(n=`${n}-${i(e)}`)}),n},w=e=>{let t=[];e.i18n?.forEach(e=>{e.locale===`en`&&e.name&&t.push(e.name)});let n=e.series?.i18n.find(e=>e.locale===`en`);return n?.name&&t.push(n.name.toLowerCase()),e.stockNo&&t.push(e.stockNo[0]),C(e.id,...t)},T=e=>{let t=e;return t.length>0?t[0].trim():``},E=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(O);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}for(let e of r){let t=e[n];if(!(Array.isArray(t)&&t.length===0)&&t)return t}return``},D=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(O);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}let i=``;for(let e of r){let t=e[n];if(t){i=String(t);break}}return i},O=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,k=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},A=(e,t)=>{let{[t]:n,...r}=e;return r},j=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),M=(e,t)=>n(e,t).length>0,N=e=>e.split(`:`).pop()?.split(`.`).pop(),P=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),F=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?I(e,n.i18n):`-`},I=(e=`en`,t)=>{if(t.length===0)return``;let n=E(e,t,`address1`)?.replace(`대한민국`,``)||``,r=t.find(t=>t.locale===e)?.address2,i=[n];return e===`ko`?i.push(r):i.unshift(r),i.filter(Boolean).join(`, `).trim()},ne=e=>{let t=0;for(let n of e)t+=n.weight;let n=Math.random()*t,r=0;for(let t of e)if(r+=t.weight,n<r)return t;return e[e.length-1]},L=e=>new Promise(t=>setTimeout(t,e)),R=(...e)=>e.filter(Boolean).join(` `);a.extend(o);const z=(e,t=`YYYY-MM-DD`,n=`en`)=>{let r=a(e).locale(n);return a().diff(r,`hour`)<12?r.fromNow():r.format(t)};function B(e,t=0){if(e==0)return`0 Bytes`;let n=1024,r=t,i=[`Bytes`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=Math.floor(Math.log(e)/Math.log(n));return parseFloat((e/n**+a).toFixed(r))+` `+i[a]}const V=e=>e.split(`.`).slice(0,-1).join(`.`),H=e=>e.split(`.`).pop(),U=(e,t)=>{let n={directory:``,filename:``,extension:``,filenameWithoutExtension:``},r=e.lastIndexOf(`/`),i=r>=0?e.substring(r+1):e,a=i.lastIndexOf(`.`),o=a>0?i.substring(a+1):``,s=a>0?i.substring(0,a):i;if(n.filename=i,n.extension=o,n.filenameWithoutExtension=s,e.startsWith(`http`)){let r=t?`/${t}/`:`/`,i=e.indexOf(r);if(i!==-1){let t=e.substring(i+r.length),a=t.lastIndexOf(`/`);return n.directory=a===-1?``:t.substring(0,a),n}}return n.directory=r===-1?``:e.substring(0,r),n},W=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),G=[`svg`,`gif`],K=e=>{if(!e||e.startsWith(`blob:`)||e.startsWith(`data:`))return!1;let t=e.lastIndexOf(`/`),n=t>=0?e.substring(t+1):e,r=n.lastIndexOf(`.`),i=r>0?n.substring(r+1):``;return!G.includes(i?.toLowerCase()??``)},q=c.getInstance(),J=(e,t=`en-US`,n)=>new Intl.NumberFormat(t,{notation:`compact`,maximumFractionDigits:1,...n}).format(e),Y=(e,t,n=`+`)=>e>t?`${t}${n}`:String(e),X=e=>e?.toLocaleString(`ko-KR`)||`0`,Z=(e,t,n)=>t?e===`ko`&&n&&n!==`82`||e!==`ko`&&n?`+${n}-${t.replace(/^0/,``)}`:t:`-`,re=({phone:e,alpha2Code:t,callingCode:n,format:r=s.RFC3966,locale:i=`en`})=>{if(!e?.trim())return``;try{let n=q.parse(e,t);return q.format(n,r)}catch{return Z(i,e,n)}},ie=(e,t)=>{let n=[];for(let r=e;r<t;r++)n.push(r);return n},ae=(e,t,n=1)=>{let r=[],i=ie(e,t);for(;r.length<n;){let t=Math.ceil(e),n=Math.floor(i.length),a=Math.floor(Math.random()*(n-t))+t,o=i.splice(a,1);r.push(o[0])}return[...r]},Q=()=>l(`0123456789abcdefghijklmnopqrstuvwxyz`,5)(),oe=e=>{for(let t=0;t<e;t++)console.log(Q())},$=(e,t,n)=>{let r=Math.floor((t-1)/n),i=r*n+1;return{current:r,start:i,end:Math.min(i+n-1,e)}},se=(e,t,n)=>{let{start:r,end:i}=$(e,t,n),a=r-1<1?1:r-1,o=i+1>e?e:i+1,s=Array.from({length:i-r+1},(e,t)=>r+t);return{prev:a,next:o,isPrev:a!==1,isNext:i<e,items:s}};export{S as A,te as B,F as C,E as D,D as E,L as F,f as G,h as H,C as I,g as J,v as K,j as L,w as M,ne as N,T as O,x as P,A as R,M as S,N as T,m as U,ee as V,u as W,d as Y,z as _,ae as a,O as b,re as c,B as d,H as f,U as g,K as h,oe as i,k as j,y as k,X as l,W as m,$ as n,J as o,V as p,p as q,se as r,Y as s,Q as t,Z as u,b as v,I as w,P as x,R as y,_ as z};
|
package/package.json
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@machinerd/js-module",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
|
+
"build": "tsdown && pnpm build:css",
|
|
13
|
+
"build:pack": "pnpm build && pnpm pack",
|
|
14
|
+
"build:tsc": "pnpm tsc",
|
|
15
|
+
"build:css": "pnpm dlx @tailwindcss/cli -i src/styles/index.css -o dist/styles/index.css",
|
|
16
|
+
"storybook": "storybook dev -p 6006",
|
|
17
|
+
"build-storybook": "storybook build",
|
|
18
|
+
"prepublishOnly": "pnpm build"
|
|
19
|
+
},
|
|
10
20
|
"exports": {
|
|
11
21
|
".": {
|
|
12
22
|
"import": "./dist/index.mjs",
|
|
@@ -20,9 +30,9 @@
|
|
|
20
30
|
"import": "./dist/ui/index.mjs",
|
|
21
31
|
"require": "./dist/ui/index.cjs"
|
|
22
32
|
},
|
|
23
|
-
"./ui
|
|
24
|
-
"import": "./dist/ui
|
|
25
|
-
"require": "./dist/ui
|
|
33
|
+
"./ui-client": {
|
|
34
|
+
"import": "./dist/ui-client/index.mjs",
|
|
35
|
+
"require": "./dist/ui-client/index.cjs"
|
|
26
36
|
},
|
|
27
37
|
"./hooks": {
|
|
28
38
|
"import": "./dist/hooks/index.mjs",
|
|
@@ -33,7 +43,9 @@
|
|
|
33
43
|
"keywords": [],
|
|
34
44
|
"author": "KOMACHINE",
|
|
35
45
|
"license": "MIT",
|
|
46
|
+
"packageManager": "pnpm@10.25.0",
|
|
36
47
|
"devDependencies": {
|
|
48
|
+
"@storybook/addon-docs": "^10.3.5",
|
|
37
49
|
"@storybook/react-vite": "^10.2.3",
|
|
38
50
|
"@tailwindcss/postcss": "^4.1.18",
|
|
39
51
|
"@typed/node": "^6.7.0",
|
|
@@ -69,13 +81,5 @@
|
|
|
69
81
|
"peerDependencies": {
|
|
70
82
|
"react": "^18.3.1 || ^19.0.0",
|
|
71
83
|
"react-dom": "^18.3.1 || ^19.0.0"
|
|
72
|
-
},
|
|
73
|
-
"scripts": {
|
|
74
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
75
|
-
"build": "tsdown && pnpm build:css",
|
|
76
|
-
"build:tsc": "pnpm tsc",
|
|
77
|
-
"build:css": "pnpm dlx @tailwindcss/cli -i src/styles/index.css -o dist/styles/index.css",
|
|
78
|
-
"storybook": "storybook dev -p 6006",
|
|
79
|
-
"build-storybook": "storybook build"
|
|
80
84
|
}
|
|
81
|
-
}
|
|
85
|
+
}
|
package/dist/hooks-C9M3V-Pb.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{throttle as e}from"lodash-es";import{useCallback as t,useEffect as n,useState as r}from"react";function i(t=1280){let[i,a]=r(t);return n(()=>{let t=e(()=>{let e=window.innerWidth;a(e)},200);return window.addEventListener(`resize`,t),t(),()=>window.removeEventListener(`resize`,t)},[]),{windowSize:i}}function a({ref:e,setOpen:r}){let i=t(t=>{e.current?.contains(t.target)||r(!1)},[e,r]);n(()=>(document.addEventListener(`mousedown`,i),document.addEventListener(`touchstart`,i),()=>{document.removeEventListener(`mousedown`,i),document.removeEventListener(`touchstart`,i)}),[i])}export{i as n,a as t};
|
package/dist/hooks-DPYIex_y.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lodash-es`),n=require(`react`);function r(e=1280){let[r,i]=(0,n.useState)(e);return(0,n.useEffect)(()=>{let e=(0,t.throttle)(()=>{let e=window.innerWidth;i(e)},200);return window.addEventListener(`resize`,e),e(),()=>window.removeEventListener(`resize`,e)},[]),{windowSize:r}}function i({ref:e,setOpen:t}){let r=(0,n.useCallback)(n=>{e.current?.contains(n.target)||t(!1)},[e,t]);(0,n.useEffect)(()=>(document.addEventListener(`mousedown`,r),document.addEventListener(`touchstart`,r),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`touchstart`,r)}),[r])}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`../../chunk-Bmb41Sf3.cjs`),t=require(`../../util-CDkao6z3.cjs`),n=require(`../../hooks-DPYIex_y.cjs`);let r=require(`lodash-es`),i=require(`clsx`);i=e.t(i);let a=require(`react`);a=e.t(a);let o=require(`react/jsx-runtime`),s=require(`class-variance-authority`),c=require(`embla-carousel-react`);c=e.t(c);let l=require(`react-dom`);const u=a.default.createContext(null);function d(){let e=a.default.useContext(u);if(!e)throw Error(`useCarousel must be used within a <Carousel />`);return e}function f({orientation:e=`horizontal`,options:n,setApi:r,plugins:i,className:s,children:l,...d}){let[f,p]=(0,c.default)({...n,axis:e===`horizontal`?`x`:`y`},i),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),v=(0,a.useCallback)(e=>{e&&(h(e.canScrollPrev()),_(e.canScrollNext()))},[]),y=(0,a.useCallback)(()=>{p?.scrollPrev()},[p]),b=(0,a.useCallback)(()=>{p?.scrollNext()},[p]),x=(0,a.useCallback)(e=>{e.key===`ArrowLeft`?(e.preventDefault(),y()):e.key===`ArrowRight`&&(e.preventDefault(),b())},[y,b]);return(0,a.useEffect)(()=>{!p||!r||r(p)},[p,r]),(0,a.useEffect)(()=>{if(p)return v(p),p.on(`reInit`,v),p.on(`select`,v),()=>{p?.off(`select`,v)}},[p,v]),(0,o.jsx)(u.Provider,{value:{carouselRef:f,api:p,options:n,orientation:e||(n?.axis===`y`?`vertical`:`horizontal`),scrollPrev:y,scrollNext:b,canScrollPrev:m,canScrollNext:g},children:(0,o.jsx)(`div`,{"data-komc":!0,onKeyDownCapture:x,className:t.f(`komc:relative`,s),...d,children:l})})}function p({className:e,...n}){let{carouselRef:r,orientation:i}=d();return(0,o.jsx)(`div`,{ref:r,"data-komc":!0,className:`komc:h-full komc:overflow-hidden`,children:(0,o.jsx)(`div`,{className:t.f(`komc:flex komc:h-full`,i===`horizontal`?`komc:-ml-4`:`komc:-mt-4 komc:flex-col`,e),...n})})}function m({className:e,...n}){let{orientation:r}=d();return(0,o.jsx)(`div`,{"data-komc":!0,className:t.f(`komc:min-w-0 komc:shrink-0 komc:grow-0 komc:basis-full`,r===`horizontal`?`komc:pl-4`:`komc:pt-4`,e),...n})}function h({children:e,className:t,...n}){let{scrollPrev:r,canScrollPrev:a}=d();return(0,o.jsx)(`button`,{type:`button`,"data-komc":!0,disabled:!a,className:(0,i.default)(`komc:w-full`,t),onClick:r,...n,children:e})}function g({children:e,className:t,...n}){let{scrollNext:r,canScrollNext:a}=d();return(0,o.jsx)(`button`,{type:`button`,"data-komc":!0,disabled:!a,className:(0,i.default)(`komc:w-full`,t),onClick:r,...n,children:e})}function _({children:e,setOpen:t}){return(0,o.jsx)(`div`,{"data-komc":!0,className:(0,i.default)(`komc:inline-flex komc:shrink-0 komc:justify-center`,`komc:items-center komc:outline-none`),onMouseLeave:()=>t(!1),onMouseOver:()=>t(!0),onFocus:()=>t(!0),onBlur:()=>t(!1),onClick:()=>t(!0),children:e})}const v=(0,s.cva)(t.f(`komc:absolute komc:z-99 komc:w-max komc:max-w-70 komc:p-2 komc:rounded-md`,`komc:break-all komc:transition-opacity komc:duration-300 komc:bg-white`,`komc:drop-shadow-[0px_0.5px_3px_rgba(0,0,0,0.2)] komc:text-xs`),{variants:{portal:{true:``,false:``},placement:{top:``,bottom:``,left:``,right:``,"top-start":``,"top-end":``,"bottom-start":``,"bottom-end":``,"left-start":``,"left-end":``,"right-start":``,"right-end":``}},compoundVariants:[{portal:!0,placement:`top`,className:`komc:-translate-y-2`},{portal:!0,placement:`bottom`,className:`komc:translate-y-2`},{portal:!0,placement:`left`,className:`komc:-translate-x-2`},{portal:!0,placement:`right`,className:`komc:translate-x-2`},{portal:!0,placement:`top-start`,className:`komc:-translate-y-2`},{portal:!0,placement:`top-end`,className:`komc:-translate-y-2`},{portal:!0,placement:`bottom-start`,className:`komc:translate-y-2`},{portal:!0,placement:`bottom-end`,className:`komc:translate-y-2`},{portal:!0,placement:`left-start`,className:`komc:-translate-x-2`},{portal:!0,placement:`left-end`,className:`komc:-translate-x-2`},{portal:!0,placement:`right-start`,className:`komc:translate-x-2`},{portal:!0,placement:`right-end`,className:`komc:translate-x-2`},{portal:!1,placement:`top`,className:`komc:bottom-full komc:left-1/2 komc:-translate-x-1/2`},{portal:!1,placement:`bottom`,className:`komc:top-full komc:left-1/2 komc:-translate-x-1/2`},{portal:!1,placement:`left`,className:`komc:right-full komc:top-1/2 komc:-translate-y-1/2`},{portal:!1,placement:`right`,className:`komc:left-full komc:top-1/2 komc:-translate-y-1/2`},{portal:!1,placement:`top-start`,className:`komc:bottom-full komc:left-0`},{portal:!1,placement:`top-end`,className:`komc:bottom-full komc:right-0`},{portal:!1,placement:`bottom-start`,className:`komc:top-full komc:left-0`},{portal:!1,placement:`bottom-end`,className:`komc:top-full komc:right-0`},{portal:!1,placement:`left-start`,className:`komc:right-full komc:top-0`},{portal:!1,placement:`left-end`,className:`komc:right-full komc:bottom-0`},{portal:!1,placement:`right-start`,className:`komc:left-full komc:top-0`},{portal:!1,placement:`right-end`,className:`komc:left-full komc:bottom-0`}],defaultVariants:{placement:`top`,portal:!1}}),y=(0,a.forwardRef)(({portal:e,children:t,className:n,placement:r,...i},a)=>(0,o.jsx)(`div`,{ref:a,"data-komc":!0,role:`tooltip`,className:v({portal:e,placement:r,className:n}),...i,children:t}));var b=y;const x=(0,s.cva)(t.f(`komc:absolute komc:w-2 komc:h-2 komc:bg-inherit`,`komc:transition-opacity komc:duration-300`),{variants:{placement:{top:t.f(`komc:top-full komc:-mt-1 komc:left-1/2`),bottom:t.f(`komc:bottom-full komc:-mb-1 komc:left-1/2`),left:t.f(`komc:left-full komc:-ml-1 komc:top-1/2`),right:t.f(`komc:right-full komc:-mr-1 komc:top-1/2`),"top-start":t.f(`komc:top-full komc:-mt-1 komc:left-5`),"top-end":t.f(`komc:top-full komc:-mt-1 komc:right-5`),"bottom-start":t.f(`komc:bottom-full komc:-mb-1 komc:left-5`),"bottom-end":t.f(`komc:bottom-full komc:-mb-1 komc:right-5`),"left-start":t.f(`komc:left-full komc:-ml-1 komc:top-3`),"left-end":t.f(`komc:left-full komc:-ml-1 komc:bottom-3`),"right-start":t.f(`komc:right-full komc:-mr-1 komc:top-3`),"right-end":t.f(`komc:right-full komc:-mr-1 komc:bottom-3`)}},defaultVariants:{placement:`top`}}),S=({placement:e,className:t,offset:n,style:r,...i})=>{let s=(0,a.useMemo)(()=>{switch(e){case`top`:return`rotate(45deg)`;case`bottom`:return`rotate(225deg)`;case`left`:return`rotate(-45deg)`;case`right`:return`rotate(135deg)`;case`top-start`:return`rotate(45deg)`;case`top-end`:return`rotate(45deg)`;case`bottom-start`:return`rotate(225deg)`;case`bottom-end`:return`rotate(225deg)`;case`left-start`:return`rotate(-45deg)`;case`left-end`:return`rotate(-45deg)`;case`right-start`:return`rotate(135deg)`;case`right-end`:return`rotate(135deg)`;default:return`rotate(45deg)`}},[e]);return(0,o.jsx)(`div`,{className:x({placement:e,className:t}),style:{transform:`translate(${n?.x}px, ${n?.y}px) ${s}`},...i})};var C=S;const w=24,T=(e,t)=>{let[,n]=e.split(`-`);return n?`${t}-${n}`:t};function E({placement:e,className:t,content:n,open:s,hiddenRef:c,containerRef:u}){let[d,f]=(0,a.useState)(!1),p=(0,a.useRef)(null),[m,h]=(0,a.useState)(e),[g,_]=(0,a.useState)({top:0,left:0}),[v,y]=(0,a.useState)({x:0,y:0}),x=(0,a.useCallback)((0,r.debounce)(()=>{let e=u?.current,t=c.current;if(!e||!t)return;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,[o,s]=m.split(`-`),l=i+n.top,d=a+n.left+n.width/2-r.width/2;switch(o){case`top`:l-=r.height;break;case`bottom`:l+=n.height;break;case`left`:l+=n.height/2-r.height/2,d-=r.width/2+n.width/2;break;case`right`:l+=n.height/2-r.height/2,d+=r.width/2+n.width/2;break}if([`top`,`bottom`].includes(o))switch(s){case`start`:d+=r.width/2-24;break;case`end`:d-=r.width/2-24;break}if([`left`,`right`].includes(o))switch(s){case`start`:l+=r.height/2+n.height/2-24;break;case`end`:l-=r.height/2+n.height/2-24;break}let f=d,p=window.innerWidth;f+r.width>p-4&&(f=p-r.width-4),f<4&&(f=4),_({top:l,left:f}),y({x:d-f,y:0})},50),[m]),S=(0,a.useCallback)((0,r.debounce)(()=>{if(!c.current)return;let{top:t,height:n}=c.current.getBoundingClientRect();h(r=>{let i=e;return t+n>=window.innerHeight?i=T(r,`top`):t<0&&(i=T(r,`bottom`)),i})},50),[e]);return(0,a.useEffect)(()=>(f(!0),S(),window.addEventListener(`scroll`,x,{passive:!0}),window.addEventListener(`resize`,x),window.addEventListener(`scroll`,S,{passive:!0}),window.addEventListener(`resize`,S),()=>{window.removeEventListener(`scroll`,x),window.removeEventListener(`resize`,x),window.removeEventListener(`scroll`,S),window.removeEventListener(`resize`,S)}),[x,S]),(0,a.useEffect)(()=>{d&&x()},[d,x]),d?(0,l.createPortal)((0,o.jsxs)(b,{ref:p,portal:!0,"data-komc":!0,placement:m,className:(0,i.default)(t,s?`komc:visible komc:opacity-100`:`komc:opacity-0 komc:invisible`),style:{...g},children:[(0,o.jsx)(`span`,{children:n}),(0,o.jsx)(C,{placement:m,offset:v})]}),document.body):null}const D=(0,a.forwardRef)(({children:e,content:t,defaultOpen:r=!1,className:s,placement:c=`top`},l)=>{let[u,d]=(0,a.useState)(r),f=(0,a.useRef)(null),p=(0,a.useRef)(null);return n.t({ref:f,setOpen:d}),(0,o.jsxs)(`div`,{ref:f,"data-komc":!0,className:`komc:flex komc:shrink-0 komc:relative komc:overflow-hidden komc:w-fit komc:h-fit`,children:[(0,o.jsx)(_,{setOpen:d,children:e}),(0,o.jsx)(E,{placement:c,className:s,open:u,content:t,hiddenRef:p,containerRef:f}),(0,o.jsx)(b,{ref:p,role:`presentation`,placement:c,className:(0,i.default)(`komc:opacity-0 komc:invisible`,s),children:(0,o.jsx)(`span`,{children:t})})]})});var O=D;exports.Carousel=f,exports.CarouselItem=m,exports.CarouselNext=g,exports.CarouselPrevious=h,exports.CarouselWrapper=p,exports.Tooltip=O;
|