@machinerd/js-module 0.3.0 → 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.
Files changed (39) hide show
  1. package/README.md +147 -21
  2. package/dist/hooks/index.cjs +1 -1
  3. package/dist/hooks/index.d.cts +3 -18
  4. package/dist/hooks/index.d.mts +3 -18
  5. package/dist/hooks/index.mjs +1 -1
  6. package/dist/hooks-B6OJ8mCP.cjs +1 -0
  7. package/dist/hooks-Dr3L4nS9.mjs +1 -0
  8. package/dist/index-CWgr7lXX.d.cts +661 -0
  9. package/dist/index-CfKO4Lbp.d.mts +661 -0
  10. package/dist/index-DiZ4xS_f.d.mts +37 -0
  11. package/dist/index-OjfbEYpE.d.cts +37 -0
  12. package/dist/index.d.cts +1 -36
  13. package/dist/index.d.mts +1 -36
  14. package/dist/skeleton-BNKvM7GW.mjs +1 -0
  15. package/dist/skeleton-D80eauT0.cjs +1 -0
  16. package/dist/styles/index.css +357 -185
  17. package/dist/ui/index.cjs +1 -1
  18. package/dist/ui/index.d.cts +40 -272
  19. package/dist/ui/index.d.mts +47 -279
  20. package/dist/ui/index.mjs +1 -1
  21. package/dist/ui-client/index.cjs +1 -0
  22. package/dist/ui-client/index.d.cts +158 -0
  23. package/dist/ui-client/index.d.mts +158 -0
  24. package/dist/ui-client/index.mjs +1 -0
  25. package/dist/util/index.cjs +1 -1
  26. package/dist/util/index.d.cts +31 -22
  27. package/dist/util/index.d.mts +30 -22
  28. package/dist/util/index.mjs +1 -1
  29. package/dist/util-BMnQ9hLK.cjs +1 -0
  30. package/dist/util-BNSPNLzy.mjs +1 -0
  31. package/package.json +17 -13
  32. package/dist/hooks-C9M3V-Pb.mjs +0 -1
  33. package/dist/hooks-DPYIex_y.cjs +0 -1
  34. package/dist/ui/client-only/index.cjs +0 -1
  35. package/dist/ui/client-only/index.d.cts +0 -136
  36. package/dist/ui/client-only/index.d.mts +0 -136
  37. package/dist/ui/client-only/index.mjs +0 -1
  38. package/dist/util-BrmjOcya.mjs +0 -1
  39. 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};
@@ -1 +1 @@
1
- const e=require(`../util-CDkao6z3.cjs`);exports.appendSearchPath=e.P,exports.calcPageCount=e.d,exports.clearQueryByKey=e.F,exports.clearSearchPath=e.I,exports.cn=e.f,exports.comparePriorityAsc=e.p,exports.composeKey=e.m,exports.deleteAllSearchHistory=e.L,exports.deleteSearchHistory=e.R,exports.displayDatetime=e.o,exports.existLeastOne=e.h,exports.formatBytes=e.s,exports.formatI18nNumber=e.g,exports.genNanoID=e.t,exports.generatePage=e.n,exports.generatePageGroup=e.r,exports.getCookie=e.z,exports.getFileExtension=e.c,exports.getFilename=e.l,exports.getFirstLocationAddress=e._,exports.getFullAddress=e.v,exports.getI18nKey=e.y,exports.getI18nValue=e.b,exports.getI18nValues=e.x,exports.getModelName=e.S,exports.getSearchHistory=e.B,exports.insertSearchHistory=e.V,exports.isSearchPage=e.H,exports.link=e.C,exports.loadExLib=e.w,exports.parsePath=e.u,exports.parseQuery=e.T,exports.printNanoID=e.i,exports.productSlugify=e.E,exports.randomNum=e.a,exports.recomposeI18nNumber=e.D,exports.selectItemByWeight=e.O,exports.setCookies=e.U,exports.shuffle=e.k,exports.sleep=e.A,exports.slugify=e.j,exports.withoutProperties=e.M,exports.withoutProperty=e.N;
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;
@@ -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) => 1 | 0 | -1;
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: keyof T) => Omit<T, keyof T>;
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/date.d.ts
100
- declare const displayDatetime: (date: string, format?: string, locale?: string) => string;
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 };
@@ -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) => 1 | 0 | -1;
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: keyof T) => Omit<T, keyof T>;
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/date.d.ts
102
- declare const displayDatetime: (date: string, format?: string, locale?: string) => string;
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 };
@@ -1 +1 @@
1
- import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,S as m,T as h,U as g,V as _,_ as v,a as y,b,c as x,d as S,f as C,g as w,h as T,i as E,j as D,k as O,l as k,m as A,n as j,o as M,p as N,r as P,s as F,t as I,u as L,v as R,w as z,x as B,y as V,z as H}from"../util-BrmjOcya.mjs";export{f as appendSearchPath,S as calcPageCount,a as clearQueryByKey,s as clearSearchPath,C as cn,N as comparePriorityAsc,A as composeKey,c as deleteAllSearchHistory,p as deleteSearchHistory,M as displayDatetime,T as existLeastOne,F as formatBytes,w as formatI18nNumber,I as genNanoID,j as generatePage,P as generatePageGroup,H as getCookie,x as getFileExtension,k as getFilename,v as getFirstLocationAddress,R as getFullAddress,V as getI18nKey,b as getI18nValue,B as getI18nValues,m as getModelName,t as getSearchHistory,_ as insertSearchHistory,o as isSearchPage,n as link,z as loadExLib,L as parsePath,h as parseQuery,E as printNanoID,i as productSlugify,y as randomNum,r as recomposeI18nNumber,d as selectItemByWeight,g as setCookies,O as shuffle,e as sleep,D as slugify,l as withoutProperties,u as withoutProperty};
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.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/client": {
24
- "import": "./dist/ui/client-only/index.mjs",
25
- "require": "./dist/ui/client-only/index.cjs"
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
+ }
@@ -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};
@@ -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;