@cfx-dev/ui-components 2.1.15 → 2.1.16

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.
@@ -1,15 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
  import { ButtonProps } from '../Button/Button';
3
3
  import { FixedOn } from '../Title/Title';
4
+ import { UseClipboardProps } from '../../utils/hooks';
4
5
 
5
- export declare const CLIPBOARD_TITLE_APPEARANCE = 1000;
6
- export interface ClipboardButtonOnlyProps {
7
- hoverTitle?: string;
8
- copiedTitle: string;
9
- textToCopy: string;
10
- titleAppearanceTimeout?: number;
11
- }
12
- export type ClipboardButtonProps = ButtonProps & ClipboardButtonOnlyProps & {
6
+ export type ClipboardButtonProps = ButtonProps & UseClipboardProps & {
13
7
  fixedOn?: FixedOn;
14
8
  };
15
9
  declare const _default: React.NamedExoticComponent<ClipboardButtonProps>;
@@ -1,50 +1,43 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import t from "react";
3
- import { Button as R } from "../Button/Button.js";
4
- import { Title as x } from "../Title/Title.js";
5
- import { clsx as A } from "../../utils/clsx.js";
6
- import { noop as E } from "../../utils/functional.js";
7
- import '../../assets/ClipboardButton.css';const h = "_root_185u8_1", P = "_copied_185u8_1", s = {
8
- root: h,
9
- copied: P
10
- }, k = 1e3;
11
- function w(p) {
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import c from "react";
3
+ import { Button as C } from "../Button/Button.js";
4
+ import { Title as f } from "../Title/Title.js";
5
+ import { clsx as u } from "../../utils/clsx.js";
6
+ import { noop as _ } from "../../utils/functional.js";
7
+ import "../../utils/hooks/useGlobalKeyboardEvent.js";
8
+ import "../../utils/hooks/useKeyboardClose.js";
9
+ import "../../index-2hJuj4UN.js";
10
+ import { useClipboardComponent as k } from "../../utils/hooks/useClipboardComponent.js";
11
+ import '../../assets/ClipboardButton.css';const b = "_root_185u8_1", h = "_copied_185u8_1", e = {
12
+ root: b,
13
+ copied: h
14
+ };
15
+ function x(o) {
12
16
  const {
13
- hoverTitle: a,
14
- copiedTitle: f,
15
- textToCopy: r,
16
- titleAppearanceTimeout: n = k,
17
- fixedOn: m,
18
- onClick: i = E,
19
- ...d
20
- } = p, [c, l] = t.useState(!1), o = t.useRef(null), e = t.useRef(null), C = t.useCallback((b) => {
21
- if (i(b), e.current === null)
22
- throw new Error("Clipboard API is not supported in this browser");
23
- e.current.writeText(r), o.current !== null && clearTimeout(o.current), o.current = setTimeout(() => {
24
- o.current = null, l(!1);
25
- }, n), l(!0);
26
- }, [i, r, n]);
27
- t.useEffect(() => ("clipboard" in navigator && (e.current = navigator.clipboard), () => {
28
- e.current = null;
29
- }), []), t.useEffect(
30
- () => () => {
31
- o.current !== null && clearTimeout(o.current);
32
- },
33
- []
34
- );
35
- const T = c ? f : a, _ = A(s.root, { [s.copied]: c });
36
- return /* @__PURE__ */ u(
37
- x,
17
+ hoverTitle: T,
18
+ copiedTitle: B,
19
+ textToCopy: j,
20
+ fixedOn: n,
21
+ onClick: t = _,
22
+ ...l
23
+ } = o, {
24
+ copied: p,
25
+ handleClick: i,
26
+ title: m
27
+ } = k(o), d = c.useCallback((a) => {
28
+ t(a), i();
29
+ }, [i, t]), s = u(e.root, { [e.copied]: p });
30
+ return /* @__PURE__ */ r(
31
+ f,
38
32
  {
39
- title: T,
40
- fixedOn: m,
41
- rootClassName: _,
42
- children: /* @__PURE__ */ u(R, { ...d, onClick: C })
33
+ title: m,
34
+ fixedOn: n,
35
+ rootClassName: s,
36
+ children: /* @__PURE__ */ r(C, { ...l, onClick: d })
43
37
  }
44
38
  );
45
39
  }
46
- const O = t.memo(w);
40
+ const z = c.memo(x);
47
41
  export {
48
- k as CLIPBOARD_TITLE_APPEARANCE,
49
- O as default
42
+ z as default
50
43
  };
@@ -1,2 +1,2 @@
1
- export { default as ClipboardButton, CLIPBOARD_TITLE_APPEARANCE } from './ClipboardButton';
1
+ export { default as ClipboardButton } from './ClipboardButton';
2
2
  export type { ClipboardButtonProps } from './ClipboardButton';
@@ -1,5 +1,4 @@
1
- import { CLIPBOARD_TITLE_APPEARANCE as A, default as a } from "./ClipboardButton.js";
1
+ import { default as a } from "./ClipboardButton.js";
2
2
  export {
3
- A as CLIPBOARD_TITLE_APPEARANCE,
4
3
  a as ClipboardButton
5
4
  };
package/dist/main.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { mergeRefs } from './utils/mergeRefs';
2
2
  export { clsx } from './utils/clsx';
3
3
  export { getValue } from './utils/getValue';
4
- export { useInstance, useDynamicRef, useGlobalKeyboardEvent, useKeyboardClose, useWindowResize, useOutlet, usePopoverController, } from './utils/hooks';
4
+ export { useInstance, useDynamicRef, useGlobalKeyboardEvent, useKeyboardClose, useWindowResize, useOutlet, usePopoverController, useClipboardComponent, CLIPBOARD_TITLE_APPEARANCE, } from './utils/hooks';
5
5
  export { noop, returnTrue, returnFalse, identity, invoke, } from './utils/functional';
6
6
  export { isExternalUrl, matchLinks, matchLinkNodes, defaultLinkReplacerx, defaultLinkReplacer, linkifyx, linkify, Linkify, } from './utils/links';
7
7
  export { clamp01, clamp, } from './utils/math';
@@ -10,12 +10,12 @@ export { debounce, throttle, } from './utils/execution';
10
10
  export { getColor } from './utils/color';
11
11
  export type { ValueOrGetter } from './utils/getValue';
12
12
  export type { ILinkSubstitute, ILinkMatch, LinkifyProps, } from './utils/links';
13
- export type { OutletPosition } from './utils/hooks';
13
+ export type { OutletPosition, UseClipboardProps, } from './utils/hooks';
14
14
  export type { SetTimeoutReturn } from './utils/execution';
15
15
  export type { GetColorProps } from './utils/color';
16
16
  export { IconButton } from './components/IconButton';
17
17
  export { Accordion, AccordionTrigger, AccordionHeader, AccordionItem, AccordionContent, } from './components/Accordion';
18
- export { ClipboardButton, CLIPBOARD_TITLE_APPEARANCE } from './components/ClipboardButton';
18
+ export { ClipboardButton } from './components/ClipboardButton';
19
19
  export { Checkbox } from './components/Checkbox';
20
20
  export { Button } from './components/Button/Button';
21
21
  export { LinkButton } from './components/Button/LinkButton';
package/dist/main.js CHANGED
@@ -3,182 +3,184 @@ import { clsx as f } from "./utils/clsx.js";
3
3
  import { getValue as m } from "./utils/getValue.js";
4
4
  import { usePopoverController as l } from "./utils/hooks/usePopoverController.js";
5
5
  import { useInstance as i } from "./utils/hooks/useInstance.js";
6
- import { useDynamicRef as s } from "./utils/hooks/useDynamicRef.js";
6
+ import { useDynamicRef as u } from "./utils/hooks/useDynamicRef.js";
7
7
  import { useGlobalKeyboardEvent as d } from "./utils/hooks/useGlobalKeyboardEvent.js";
8
8
  import { useKeyboardClose as T } from "./utils/hooks/useKeyboardClose.js";
9
9
  import { useWindowResize as B } from "./utils/hooks/useWindowResize.js";
10
- import { useOutlet as y } from "./utils/hooks/useOutlet.js";
11
- import { identity as S, invoke as C, noop as A, returnFalse as b, returnTrue as k } from "./utils/functional.js";
12
- import { Linkify as P, defaultLinkReplacer as E, defaultLinkReplacerx as D, isExternalUrl as _, linkify as h, linkifyx as v, matchLinkNodes as F, matchLinks as U } from "./utils/links.js";
13
- import { clamp as K, clamp01 as N } from "./utils/math.js";
14
- import { isFalseString as w, isTrueString as G, normalizeSlashes as Y, replaceRange as H, splitByIndices as M, unicodeCharAt as W } from "./utils/string.js";
15
- import { debounce as q, throttle as J } from "./utils/execution.js";
16
- import { getColor as X } from "./utils/color.js";
17
- import { default as $ } from "./components/IconButton/IconButton.js";
18
- import { Accordion as ro, AccordionContent as eo, AccordionHeader as to, AccordionItem as po, AccordionTrigger as fo } from "./components/Accordion/Accordion.js";
19
- import { CLIPBOARD_TITLE_APPEARANCE as mo, default as ao } from "./components/ClipboardButton/ClipboardButton.js";
20
- import { default as no } from "./components/Checkbox/Checkbox.js";
10
+ import { useOutlet as C } from "./utils/hooks/useOutlet.js";
11
+ import { CLIPBOARD_TITLE_APPEARANCE as R, useClipboardComponent as S } from "./utils/hooks/useClipboardComponent.js";
12
+ import { identity as A, invoke as k, noop as O, returnFalse as P, returnTrue as E } from "./utils/functional.js";
13
+ import { Linkify as _, defaultLinkReplacer as h, defaultLinkReplacerx as v, isExternalUrl as F, linkify as U, linkifyx as z, matchLinkNodes as K, matchLinks as N } from "./utils/links.js";
14
+ import { clamp as w, clamp01 as G } from "./utils/math.js";
15
+ import { isFalseString as H, isTrueString as M, normalizeSlashes as W, replaceRange as j, splitByIndices as q, unicodeCharAt as J } from "./utils/string.js";
16
+ import { debounce as X, throttle as Z } from "./utils/execution.js";
17
+ import { getColor as oo } from "./utils/color.js";
18
+ import { default as eo } from "./components/IconButton/IconButton.js";
19
+ import { Accordion as po, AccordionContent as fo, AccordionHeader as xo, AccordionItem as mo, AccordionTrigger as ao } from "./components/Accordion/Accordion.js";
20
+ import { default as no } from "./components/ClipboardButton/ClipboardButton.js";
21
+ import { default as so } from "./components/Checkbox/Checkbox.js";
21
22
  import { Button as co } from "./components/Button/Button.js";
22
- import { LinkButton as uo } from "./components/Button/LinkButton.js";
23
- import { ButtonBar as To } from "./components/Button/ButtonBar.js";
24
- import { Avatar as Bo } from "./components/Avatar/Avatar.js";
25
- import { BACKDROP_OUTLET_ID as yo, BackdropPortal as Ro } from "./components/BackdropPortal/BackdropPortal.js";
26
- import { Badge as Co } from "./components/Badge/Badge.js";
27
- import { ControlBox as bo } from "./components/ControlBox/ControlBox.js";
28
- import { CountryFlag as Oo } from "./components/CountryFlag/CountryFlag.js";
29
- import { Decorate as Eo } from "./components/Decorate/Decorate.js";
30
- import { Dot as _o } from "./components/Dot/Dot.js";
31
- import { FLYOUT_OUTLET_ID as vo, Flyout as Fo } from "./components/Flyout/Flyout.js";
32
- import { Logos as zo } from "./components/Logos/index.js";
33
- import { I as No } from "./cfxIcons-BlbKR-zU.js";
34
- import { I as wo } from "./cfxIconsBig-CNY8zL27.js";
35
- import { Icon as Yo } from "./components/Icon/Icon.js";
36
- import { IconBig as Mo } from "./components/IconBig/IconBig.js";
37
- import { Indicator as jo } from "./components/Indicator/Indicator.js";
38
- import { default as Jo } from "./components/InfoPanel/InfoPanel.js";
39
- import { default as Xo } from "./components/Input/Input.js";
40
- import { default as $o } from "./components/Input/RichInput.js";
41
- import { Interactive as rr } from "./components/Interactive/Interactive.js";
42
- import { Island as tr } from "./components/Island/Island.js";
43
- import { Box as fr } from "./components/Layout/Box/Box.js";
44
- import { Center as mr } from "./components/Layout/Center/Center.js";
45
- import { Flex as lr } from "./components/Layout/Flex/Flex.js";
46
- import { FlexRestricter as ir } from "./components/Layout/Flex/FlexRestricter.js";
47
- import { Pad as sr } from "./components/Layout/Pad/Pad.js";
48
- import { Page as dr } from "./components/Layout/Page/Page.js";
49
- import { R as Tr } from "./Rail-nVRissv6.js";
50
- import { Scrollable as Br } from "./components/Layout/Scrollable/Scrollable.js";
51
- import { VirtualScrollable as yr } from "./components/Layout/Scrollable/VirtualScrollable.js";
52
- import { Loaf as Sr } from "./components/Loaf/Loaf.js";
53
- import { Modal as Ar } from "./components/Modal/Modal.js";
54
- import { NavList as kr } from "./components/NavList/NavList.js";
55
- import { OVERLAY_OUTLET_ID as Pr, Overlay as Er } from "./components/Overlay/Overlay.js";
56
- import { Popover as _r } from "./components/Popover/Popover.js";
57
- import { PremiumBadge as vr } from "./components/PremiumBadge/PremiumBadge.js";
58
- import { Prose as Ur } from "./components/Prose/Prose.js";
59
- import { Radio as Kr } from "./components/Radio/Radio.js";
60
- import { Select as Vr } from "./components/Select/Select.js";
61
- import { Separator as Gr } from "./components/Separator/Separator.js";
62
- import { Shroud as Hr } from "./components/Shroud/Shroud.js";
63
- import { Spacer as Wr } from "./components/Spacer/Spacer.js";
64
- import { Style as qr, useContextualStyle as Jr } from "./components/Style/Style.js";
65
- import { default as Xr } from "./components/Switch/Switch.js";
66
- import { ToggleGroup as $r } from "./components/ToggleGroup/ToggleGroup.js";
67
- import { Tabular as re } from "./components/Tabular/Tabular.js";
68
- import { Table as te, TableIconButton as pe } from "./components/Table/Table.js";
69
- import { Text as xe, TextBlock as me, getTextOpacity as ae } from "./components/Text/Text.js";
70
- import { Textarea as ne } from "./components/Textarea/Textarea.js";
71
- import { TITLE_OUTLET_ID as ce, Title as se } from "./components/Title/Title.js";
72
- import { default as de } from "./components/InputDropzone/InputDropzone.js";
23
+ import { LinkButton as To } from "./components/Button/LinkButton.js";
24
+ import { ButtonBar as Bo } from "./components/Button/ButtonBar.js";
25
+ import { Avatar as Co } from "./components/Avatar/Avatar.js";
26
+ import { BACKDROP_OUTLET_ID as Ro, BackdropPortal as So } from "./components/BackdropPortal/BackdropPortal.js";
27
+ import { Badge as Ao } from "./components/Badge/Badge.js";
28
+ import { ControlBox as Oo } from "./components/ControlBox/ControlBox.js";
29
+ import { CountryFlag as Eo } from "./components/CountryFlag/CountryFlag.js";
30
+ import { Decorate as _o } from "./components/Decorate/Decorate.js";
31
+ import { Dot as vo } from "./components/Dot/Dot.js";
32
+ import { FLYOUT_OUTLET_ID as Uo, Flyout as zo } from "./components/Flyout/Flyout.js";
33
+ import { Logos as No } from "./components/Logos/index.js";
34
+ import { I as wo } from "./cfxIcons-BlbKR-zU.js";
35
+ import { I as Yo } from "./cfxIconsBig-CNY8zL27.js";
36
+ import { Icon as Mo } from "./components/Icon/Icon.js";
37
+ import { IconBig as jo } from "./components/IconBig/IconBig.js";
38
+ import { Indicator as Jo } from "./components/Indicator/Indicator.js";
39
+ import { default as Xo } from "./components/InfoPanel/InfoPanel.js";
40
+ import { default as $o } from "./components/Input/Input.js";
41
+ import { default as rr } from "./components/Input/RichInput.js";
42
+ import { Interactive as tr } from "./components/Interactive/Interactive.js";
43
+ import { Island as fr } from "./components/Island/Island.js";
44
+ import { Box as mr } from "./components/Layout/Box/Box.js";
45
+ import { Center as lr } from "./components/Layout/Center/Center.js";
46
+ import { Flex as ir } from "./components/Layout/Flex/Flex.js";
47
+ import { FlexRestricter as ur } from "./components/Layout/Flex/FlexRestricter.js";
48
+ import { Pad as dr } from "./components/Layout/Pad/Pad.js";
49
+ import { Page as Tr } from "./components/Layout/Page/Page.js";
50
+ import { R as Br } from "./Rail-nVRissv6.js";
51
+ import { Scrollable as Cr } from "./components/Layout/Scrollable/Scrollable.js";
52
+ import { VirtualScrollable as Rr } from "./components/Layout/Scrollable/VirtualScrollable.js";
53
+ import { Loaf as br } from "./components/Loaf/Loaf.js";
54
+ import { Modal as kr } from "./components/Modal/Modal.js";
55
+ import { NavList as Pr } from "./components/NavList/NavList.js";
56
+ import { OVERLAY_OUTLET_ID as Dr, Overlay as _r } from "./components/Overlay/Overlay.js";
57
+ import { Popover as vr } from "./components/Popover/Popover.js";
58
+ import { PremiumBadge as Ur } from "./components/PremiumBadge/PremiumBadge.js";
59
+ import { Prose as Kr } from "./components/Prose/Prose.js";
60
+ import { Radio as Vr } from "./components/Radio/Radio.js";
61
+ import { Select as Gr } from "./components/Select/Select.js";
62
+ import { Separator as Hr } from "./components/Separator/Separator.js";
63
+ import { Shroud as Wr } from "./components/Shroud/Shroud.js";
64
+ import { Spacer as qr } from "./components/Spacer/Spacer.js";
65
+ import { Style as Qr, useContextualStyle as Xr } from "./components/Style/Style.js";
66
+ import { default as $r } from "./components/Switch/Switch.js";
67
+ import { ToggleGroup as re } from "./components/ToggleGroup/ToggleGroup.js";
68
+ import { Tabular as te } from "./components/Tabular/Tabular.js";
69
+ import { Table as fe, TableIconButton as xe } from "./components/Table/Table.js";
70
+ import { Text as ae, TextBlock as le, getTextOpacity as ne } from "./components/Text/Text.js";
71
+ import { Textarea as se } from "./components/Textarea/Textarea.js";
72
+ import { TITLE_OUTLET_ID as ce, Title as de } from "./components/Title/Title.js";
73
+ import { default as Te } from "./components/InputDropzone/InputDropzone.js";
73
74
  import "./components/InputDropzone/ItemPreview.js";
74
- import { OnScreenSensor as Te } from "./components/OnScreenSensor.js";
75
- import { ui as Be } from "./components/ui.js";
76
- import { Symbols as ye } from "./components/Symbols.js";
75
+ import { OnScreenSensor as Be } from "./components/OnScreenSensor.js";
76
+ import { ui as Ce } from "./components/ui.js";
77
+ import { Symbols as Re } from "./components/Symbols.js";
77
78
  export {
78
- ro as Accordion,
79
- eo as AccordionContent,
80
- to as AccordionHeader,
81
- po as AccordionItem,
82
- fo as AccordionTrigger,
83
- Bo as Avatar,
84
- yo as BACKDROP_OUTLET_ID,
85
- Ro as BackdropPortal,
86
- Co as Badge,
87
- fr as Box,
79
+ po as Accordion,
80
+ fo as AccordionContent,
81
+ xo as AccordionHeader,
82
+ mo as AccordionItem,
83
+ ao as AccordionTrigger,
84
+ Co as Avatar,
85
+ Ro as BACKDROP_OUTLET_ID,
86
+ So as BackdropPortal,
87
+ Ao as Badge,
88
+ mr as Box,
88
89
  co as Button,
89
- To as ButtonBar,
90
- mo as CLIPBOARD_TITLE_APPEARANCE,
91
- mr as Center,
92
- no as Checkbox,
93
- ao as ClipboardButton,
94
- bo as ControlBox,
95
- Oo as CountryFlag,
96
- Eo as Decorate,
97
- _o as Dot,
98
- vo as FLYOUT_OUTLET_ID,
99
- lr as Flex,
100
- ir as FlexRestricter,
101
- Fo as Flyout,
102
- Yo as Icon,
103
- Mo as IconBig,
104
- $ as IconButton,
105
- No as Icons,
106
- wo as IconsBig,
107
- jo as Indicator,
108
- Jo as InfoPanel,
109
- Xo as Input,
110
- de as InputDropzone,
111
- rr as Interactive,
112
- tr as Island,
113
- uo as LinkButton,
114
- P as Linkify,
115
- Sr as Loaf,
116
- zo as Logos,
117
- Ar as Modal,
118
- kr as NavList,
119
- Pr as OVERLAY_OUTLET_ID,
120
- Te as OnScreenSensor,
121
- Er as Overlay,
122
- sr as Pad,
123
- dr as Page,
124
- _r as Popover,
125
- vr as PremiumBadge,
126
- Ur as Prose,
127
- Kr as Radio,
128
- Tr as Rail,
129
- $o as RichInput,
130
- Br as Scrollable,
131
- Vr as Select,
132
- Gr as Separator,
133
- Hr as Shroud,
134
- Wr as Spacer,
135
- qr as Style,
136
- Xr as Switch,
137
- ye as Symbols,
90
+ Bo as ButtonBar,
91
+ R as CLIPBOARD_TITLE_APPEARANCE,
92
+ lr as Center,
93
+ so as Checkbox,
94
+ no as ClipboardButton,
95
+ Oo as ControlBox,
96
+ Eo as CountryFlag,
97
+ _o as Decorate,
98
+ vo as Dot,
99
+ Uo as FLYOUT_OUTLET_ID,
100
+ ir as Flex,
101
+ ur as FlexRestricter,
102
+ zo as Flyout,
103
+ Mo as Icon,
104
+ jo as IconBig,
105
+ eo as IconButton,
106
+ wo as Icons,
107
+ Yo as IconsBig,
108
+ Jo as Indicator,
109
+ Xo as InfoPanel,
110
+ $o as Input,
111
+ Te as InputDropzone,
112
+ tr as Interactive,
113
+ fr as Island,
114
+ To as LinkButton,
115
+ _ as Linkify,
116
+ br as Loaf,
117
+ No as Logos,
118
+ kr as Modal,
119
+ Pr as NavList,
120
+ Dr as OVERLAY_OUTLET_ID,
121
+ Be as OnScreenSensor,
122
+ _r as Overlay,
123
+ dr as Pad,
124
+ Tr as Page,
125
+ vr as Popover,
126
+ Ur as PremiumBadge,
127
+ Kr as Prose,
128
+ Vr as Radio,
129
+ Br as Rail,
130
+ rr as RichInput,
131
+ Cr as Scrollable,
132
+ Gr as Select,
133
+ Hr as Separator,
134
+ Wr as Shroud,
135
+ qr as Spacer,
136
+ Qr as Style,
137
+ $r as Switch,
138
+ Re as Symbols,
138
139
  ce as TITLE_OUTLET_ID,
139
- te as Table,
140
- pe as TableIconButton,
141
- re as Tabular,
142
- xe as Text,
143
- me as TextBlock,
144
- ne as Textarea,
145
- se as Title,
146
- $r as ToggleGroup,
147
- yr as VirtualScrollable,
148
- K as clamp,
149
- N as clamp01,
140
+ fe as Table,
141
+ xe as TableIconButton,
142
+ te as Tabular,
143
+ ae as Text,
144
+ le as TextBlock,
145
+ se as Textarea,
146
+ de as Title,
147
+ re as ToggleGroup,
148
+ Rr as VirtualScrollable,
149
+ w as clamp,
150
+ G as clamp01,
150
151
  f as clsx,
151
- q as debounce,
152
- E as defaultLinkReplacer,
153
- D as defaultLinkReplacerx,
154
- X as getColor,
155
- ae as getTextOpacity,
152
+ X as debounce,
153
+ h as defaultLinkReplacer,
154
+ v as defaultLinkReplacerx,
155
+ oo as getColor,
156
+ ne as getTextOpacity,
156
157
  m as getValue,
157
- S as identity,
158
- C as invoke,
159
- _ as isExternalUrl,
160
- w as isFalseString,
161
- G as isTrueString,
162
- h as linkify,
163
- v as linkifyx,
164
- F as matchLinkNodes,
165
- U as matchLinks,
158
+ A as identity,
159
+ k as invoke,
160
+ F as isExternalUrl,
161
+ H as isFalseString,
162
+ M as isTrueString,
163
+ U as linkify,
164
+ z as linkifyx,
165
+ K as matchLinkNodes,
166
+ N as matchLinks,
166
167
  t as mergeRefs,
167
- A as noop,
168
- Y as normalizeSlashes,
169
- H as replaceRange,
170
- b as returnFalse,
171
- k as returnTrue,
172
- M as splitByIndices,
173
- J as throttle,
174
- Be as ui,
175
- W as unicodeCharAt,
176
- Jr as useContextualStyle,
177
- s as useDynamicRef,
168
+ O as noop,
169
+ W as normalizeSlashes,
170
+ j as replaceRange,
171
+ P as returnFalse,
172
+ E as returnTrue,
173
+ q as splitByIndices,
174
+ Z as throttle,
175
+ Ce as ui,
176
+ J as unicodeCharAt,
177
+ S as useClipboardComponent,
178
+ Xr as useContextualStyle,
179
+ u as useDynamicRef,
178
180
  d as useGlobalKeyboardEvent,
179
181
  i as useInstance,
180
182
  T as useKeyboardClose,
181
- y as useOutlet,
183
+ C as useOutlet,
182
184
  l as usePopoverController,
183
185
  B as useWindowResize
184
186
  };
@@ -5,4 +5,6 @@ export { useGlobalKeyboardEvent } from './useGlobalKeyboardEvent';
5
5
  export { useKeyboardClose } from './useKeyboardClose';
6
6
  export { useWindowResize } from './useWindowResize';
7
7
  export { useOutlet } from './useOutlet';
8
+ export { useClipboardComponent, CLIPBOARD_TITLE_APPEARANCE } from './useClipboardComponent';
8
9
  export type { OutletPosition } from './useOutlet';
10
+ export type { UseClipboardProps } from './useClipboardComponent';
@@ -1,16 +1,19 @@
1
1
  import { usePopoverController as r } from "./usePopoverController.js";
2
- import { useInstance as s } from "./useInstance.js";
2
+ import { useInstance as p } from "./useInstance.js";
3
3
  import { useDynamicRef as m } from "./useDynamicRef.js";
4
4
  import { useGlobalKeyboardEvent as u } from "./useGlobalKeyboardEvent.js";
5
- import { useKeyboardClose as l } from "./useKeyboardClose.js";
5
+ import { useKeyboardClose as x } from "./useKeyboardClose.js";
6
6
  import { useWindowResize as a } from "./useWindowResize.js";
7
- import { useOutlet as d } from "./useOutlet.js";
7
+ import { useOutlet as b } from "./useOutlet.js";
8
+ import { CLIPBOARD_TITLE_APPEARANCE as i, useClipboardComponent as A } from "./useClipboardComponent.js";
8
9
  export {
10
+ i as CLIPBOARD_TITLE_APPEARANCE,
11
+ A as useClipboardComponent,
9
12
  m as useDynamicRef,
10
13
  u as useGlobalKeyboardEvent,
11
- s as useInstance,
12
- l as useKeyboardClose,
13
- d as useOutlet,
14
+ p as useInstance,
15
+ x as useKeyboardClose,
16
+ b as useOutlet,
14
17
  r as usePopoverController,
15
18
  a as useWindowResize
16
19
  };
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface UseClipboardProps {
4
+ hoverTitle?: string;
5
+ copiedTitle: string;
6
+ textToCopy: string;
7
+ titleAppearanceTimeout?: number;
8
+ }
9
+ export declare const CLIPBOARD_TITLE_APPEARANCE = 1000;
10
+ export declare function useClipboardComponent(props: UseClipboardProps): {
11
+ handleClick: () => void;
12
+ title: string | undefined;
13
+ copied: boolean;
14
+ clipboardRef: React.MutableRefObject<Clipboard | null>;
15
+ };
@@ -0,0 +1,33 @@
1
+ import t from "react";
2
+ const f = 1e3;
3
+ function T(i) {
4
+ const {
5
+ hoverTitle: c,
6
+ copiedTitle: s,
7
+ textToCopy: n,
8
+ titleAppearanceTimeout: o = f
9
+ } = i, [u, l] = t.useState(!1), e = t.useRef(null), r = t.useRef(null), a = t.useCallback(() => {
10
+ if (r.current === null)
11
+ throw new Error("Clipboard API is not supported in this browser");
12
+ r.current.writeText(n), e.current !== null && clearTimeout(e.current), e.current = setTimeout(() => {
13
+ e.current = null, l(!1);
14
+ }, o), l(!0);
15
+ }, [n, o]);
16
+ return t.useEffect(() => ("clipboard" in navigator && (r.current = navigator.clipboard), () => {
17
+ r.current = null;
18
+ }), []), t.useEffect(
19
+ () => () => {
20
+ e.current !== null && clearTimeout(e.current);
21
+ },
22
+ []
23
+ ), {
24
+ handleClick: a,
25
+ title: u ? s : c,
26
+ copied: u,
27
+ clipboardRef: r
28
+ };
29
+ }
30
+ export {
31
+ f as CLIPBOARD_TITLE_APPEARANCE,
32
+ T as useClipboardComponent
33
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cfx-dev/ui-components",
3
3
  "private": false,
4
- "version": "2.1.15",
4
+ "version": "2.1.16",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "main": "dist/main.js",