@machinerd/js-module 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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-BDwkyixK.mjs +1 -0
- package/dist/hooks-D1JcFVTH.cjs +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-B1Jzl0cz.cjs +1 -0
- package/dist/skeleton-NTpsm0XR.mjs +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 +43 -275
- 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 +32 -22
- package/dist/util/index.d.mts +31 -22
- package/dist/util/index.mjs +1 -1
- package/dist/util-1BLWEgZB.cjs +1 -0
- package/dist/util-Dtb82Us1.mjs +1 -0
- package/package.json +6 -4
- 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 react3 from "react";
|
|
4
|
+
import React$1, { ComponentProps, HTMLAttributes, ReactNode } from "react";
|
|
5
|
+
import * as react_jsx_runtime0 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_runtime0.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_runtime0.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_runtime0.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_runtime0.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_runtime0.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_runtime0.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: react3.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">) & react3.RefAttributes<HTMLImageElement>>;
|
|
122
|
+
declare const Image: react3.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">) & react3.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_runtime0.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: react3.ForwardRefExoticComponent<TooltipContainerProps & react3.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-Dtb82Us1.mjs";import{t}from"../skeleton-NTpsm0XR.mjs";import{c as n,o as r,r as i}from"../hooks-BDwkyixK.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-1BLWEgZB.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 lib 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,30 @@ 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 PhoneNumberFormat: typeof lib.PhoneNumberFormat;
|
|
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?: keyof typeof PhoneNumberFormat;
|
|
102
|
+
locale?: string;
|
|
103
|
+
}
|
|
104
|
+
declare const formatI18nNumber: ({
|
|
105
|
+
phone,
|
|
106
|
+
alpha2Code,
|
|
107
|
+
callingCode,
|
|
108
|
+
format,
|
|
109
|
+
locale
|
|
110
|
+
}: I18nNumberProps) => string;
|
|
101
111
|
//#endregion
|
|
102
112
|
//#region src/util/generator.d.ts
|
|
103
113
|
declare const randomNum: (min: number, max: number, count?: number) => number[];
|
|
@@ -116,4 +126,4 @@ declare const generatePageGroup: (count: number, page: number, pagePerView: numb
|
|
|
116
126
|
items: number[];
|
|
117
127
|
};
|
|
118
128
|
//#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 };
|
|
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.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "dayjs/locale/ko.js";
|
|
2
|
+
import lib 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,30 @@ 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 PhoneNumberFormat: typeof lib.PhoneNumberFormat;
|
|
93
|
+
declare const formatCompactNumber: (number: number, locale?: string, options?: Intl.NumberFormatOptions) => string;
|
|
94
|
+
declare const formatExceedNumber: (number: number, threshold: number, suffix?: string) => string;
|
|
95
|
+
declare const formatKoNumber: (number?: number | string | null) => string;
|
|
96
|
+
declare const recomposeI18nNumber: (locale: string, number?: string | null, i18nNumber?: string | null) => string;
|
|
97
|
+
type PhoneFormatType = 'international' | 'national' | 'rfc3966';
|
|
98
|
+
interface I18nNumberProps {
|
|
99
|
+
phone?: string | null;
|
|
100
|
+
alpha2Code?: string;
|
|
101
|
+
callingCode?: string;
|
|
102
|
+
format?: keyof typeof PhoneNumberFormat;
|
|
103
|
+
locale?: string;
|
|
104
|
+
}
|
|
105
|
+
declare const formatI18nNumber: ({
|
|
106
|
+
phone,
|
|
107
|
+
alpha2Code,
|
|
108
|
+
callingCode,
|
|
109
|
+
format,
|
|
110
|
+
locale
|
|
111
|
+
}: I18nNumberProps) => string;
|
|
103
112
|
//#endregion
|
|
104
113
|
//#region src/util/generator.d.ts
|
|
105
114
|
declare const randomNum: (min: number, max: number, count?: number) => number[];
|
|
@@ -118,4 +127,4 @@ declare const generatePageGroup: (count: number, page: number, pagePerView: numb
|
|
|
118
127
|
items: number[];
|
|
119
128
|
};
|
|
120
129
|
//#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 };
|
|
130
|
+
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-Dtb82Us1.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`);s=e.t(s);let 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`),ee=e=>h(e)?e:`${e}/search`.replace(`//`,`/`),te=e=>e.replace(`/search`,``).replace(`//`,`/`),ne=(e,t)=>{let n=new URLSearchParams(e);return n.delete(t),Object.fromEntries(n)},g=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 _=(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}`},v=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},y=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},b=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()},x=(e,...t)=>{let n=`${e}`;return t.forEach(e=>{e&&(n=`${n}-${(0,i.default)(e)}`)}),n},S=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]),x(e.id,...t)},C=e=>{let t=e;return t.length>0?t[0].trim():``},w=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(E);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``},T=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(E);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},E=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,D=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},O=(e,t)=>{let{[t]:n,...r}=e;return r},k=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),A=(e,t)=>(0,r.intersection)(e,t).length>0,j=e=>e.split(`:`).pop()?.split(`.`).pop(),M=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),N=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?P(e,n.i18n):`-`},P=(e=`en`,t)=>{if(t.length===0)return``;let n=w(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()},F=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]},re=e=>new Promise(t=>setTimeout(t,e)),I=(...e)=>e.filter(Boolean).join(` `);a.default.extend(o.default);const L=(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 R(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 z=e=>e.split(`.`).slice(0,-1).join(`.`),B=e=>e.split(`.`).pop(),V=(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},H=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),U=[`svg`,`gif`],W=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!U.includes(i?.toLowerCase()??``)},{PhoneNumberUtil:G,PhoneNumberFormat:K}=s.default,q=G.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:`-`,ie=({phone:e,alpha2Code:t,callingCode:n,format:r=`RFC3966`,locale:i=`en`})=>{if(!e?.trim())return``;try{let n=q.parse(e,t);return q.format(n,K[r])}catch{return Z(i,e,n)}},ae=(e,t)=>{let n=[];for(let r=e;r<t;r++)n.push(r);return n},oe=(e,t,n=1)=>{let r=[],i=ae(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)(),se=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)}},ce=(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 b}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return re}}),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 x}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return te}}),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 L}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return ee}});
|
|
@@ -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 s from"google-libphonenumber";import{customAlphabet as c}from"nanoid";const l=t=>e.get(t),u=(t,n,r)=>e.set(t,n,r),d=()=>typeof window>`u`?[]:JSON.parse(localStorage.getItem(`search-history`)||`[]`),f=e=>{let t=r([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`),ee=e=>h(e)?e:`${e}/search`.replace(`//`,`/`),te=e=>e.replace(`/search`,``).replace(`//`,`/`),ne=(e,t)=>{let n=new URLSearchParams(e);return n.delete(t),Object.fromEntries(n)},g=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 _=(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}`},v=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},y=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},b=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()},x=(e,...t)=>{let n=`${e}`;return t.forEach(e=>{e&&(n=`${n}-${i(e)}`)}),n},S=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]),x(e.id,...t)},C=e=>{let t=e;return t.length>0?t[0].trim():``},w=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(E);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``},T=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(E);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},E=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,D=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},O=(e,t)=>{let{[t]:n,...r}=e;return r},k=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),A=(e,t)=>n(e,t).length>0,j=e=>e.split(`:`).pop()?.split(`.`).pop(),M=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),N=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?P(e,n.i18n):`-`},P=(e=`en`,t)=>{if(t.length===0)return``;let n=w(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()},F=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]},re=e=>new Promise(t=>setTimeout(t,e)),I=(...e)=>e.filter(Boolean).join(` `);a.extend(o);const L=(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 R(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 z=e=>e.split(`.`).slice(0,-1).join(`.`),B=e=>e.split(`.`).pop(),V=(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},H=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),U=[`svg`,`gif`],W=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!U.includes(i?.toLowerCase()??``)},{PhoneNumberUtil:G,PhoneNumberFormat:K}=s,q=G.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:`-`,ie=({phone:e,alpha2Code:t,callingCode:n,format:r=`RFC3966`,locale:i=`en`})=>{if(!e?.trim())return``;try{let n=q.parse(e,t);return q.format(n,K[r])}catch{return Z(i,e,n)}},ae=(e,t)=>{let n=[];for(let r=e;r<t;r++)n.push(r);return n},oe=(e,t,n=1)=>{let r=[],i=ae(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=()=>c(`0123456789abcdefghijklmnopqrstuvwxyz`,5)(),se=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)}},ce=(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{b as A,ne as B,N as C,w as D,T as E,re as F,d as G,m as H,x as I,h as J,g as K,k as L,S as M,F as N,C as O,y as P,O as R,A as S,j as T,p as U,te as V,l as W,u as Y,L as _,oe as a,E as b,ie as c,R as d,B as f,V as g,W as h,se as i,D as j,_ as k,X as l,H as m,$ as n,J as o,z as p,f as q,ce as r,Y as s,Q as t,Z as u,v,P as w,M as x,I as y,ee as z};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@machinerd/js-module",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"import": "./dist/ui/index.mjs",
|
|
21
21
|
"require": "./dist/ui/index.cjs"
|
|
22
22
|
},
|
|
23
|
-
"./ui
|
|
24
|
-
"import": "./dist/ui
|
|
25
|
-
"require": "./dist/ui
|
|
23
|
+
"./ui-client": {
|
|
24
|
+
"import": "./dist/ui-client/index.mjs",
|
|
25
|
+
"require": "./dist/ui-client/index.cjs"
|
|
26
26
|
},
|
|
27
27
|
"./hooks": {
|
|
28
28
|
"import": "./dist/hooks/index.mjs",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"author": "KOMACHINE",
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"devDependencies": {
|
|
37
|
+
"@storybook/addon-docs": "^10.3.5",
|
|
37
38
|
"@storybook/react-vite": "^10.2.3",
|
|
38
39
|
"@tailwindcss/postcss": "^4.1.18",
|
|
39
40
|
"@typed/node": "^6.7.0",
|
|
@@ -73,6 +74,7 @@
|
|
|
73
74
|
"scripts": {
|
|
74
75
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
75
76
|
"build": "tsdown && pnpm build:css",
|
|
77
|
+
"build:pack": "pnpm build && pnpm pack",
|
|
76
78
|
"build:tsc": "pnpm tsc",
|
|
77
79
|
"build:css": "pnpm dlx @tailwindcss/cli -i src/styles/index.css -o dist/styles/index.css",
|
|
78
80
|
"storybook": "storybook dev -p 6006",
|
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;
|